| 4792 | } |
| 4793 | |
| 4794 | function dilateMask(mask, sw, sh) { |
| 4795 | |
| 4796 | var weights = [1, 1, 1, 1, 1, 1, 1, 1, 1]; |
| 4797 | var side = Math.round(Math.sqrt(weights.length)); |
| 4798 | var halfSide = Math.floor(side / 2); |
| 4799 | |
| 4800 | var maskResult = []; |
| 4801 | for (var y = 0; y < sh; y++) { |
| 4802 | for (var x = 0; x < sw; x++) { |
| 4803 | |
| 4804 | var so = y * sw + x; |
| 4805 | var a = 0; |
| 4806 | for (var cy = 0; cy < side; cy++) { |
| 4807 | for (var cx = 0; cx < side; cx++) { |
| 4808 | var scy = y + cy - halfSide; |
| 4809 | var scx = x + cx - halfSide; |
| 4810 | |
| 4811 | if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) { |
| 4812 | |
| 4813 | var srcOff = scy * sw + scx; |
| 4814 | var wt = weights[cy * side + cx]; |
| 4815 | |
| 4816 | a += mask[srcOff] * wt; |
| 4817 | } |
| 4818 | } |
| 4819 | } |
| 4820 | |
| 4821 | maskResult[so] = (a >= 255 * 4) ? 255 : 0; |
| 4822 | } |
| 4823 | } |
| 4824 | |
| 4825 | return maskResult; |
| 4826 | } |
| 4827 | |
| 4828 | function smoothEdgeMask(mask, sw, sh) { |
| 4829 | |