| 4826 | } |
| 4827 | |
| 4828 | function smoothEdgeMask(mask, sw, sh) { |
| 4829 | |
| 4830 | var weights = [1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9]; |
| 4831 | var side = Math.round(Math.sqrt(weights.length)); |
| 4832 | var halfSide = Math.floor(side / 2); |
| 4833 | |
| 4834 | var maskResult = []; |
| 4835 | for (var y = 0; y < sh; y++) { |
| 4836 | for (var x = 0; x < sw; x++) { |
| 4837 | |
| 4838 | var so = y * sw + x; |
| 4839 | var a = 0; |
| 4840 | for (var cy = 0; cy < side; cy++) { |
| 4841 | for (var cx = 0; cx < side; cx++) { |
| 4842 | var scy = y + cy - halfSide; |
| 4843 | var scx = x + cx - halfSide; |
| 4844 | |
| 4845 | if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) { |
| 4846 | |
| 4847 | var srcOff = scy * sw + scx; |
| 4848 | var wt = weights[cy * side + cx]; |
| 4849 | |
| 4850 | a += mask[srcOff] * wt; |
| 4851 | } |
| 4852 | } |
| 4853 | } |
| 4854 | |
| 4855 | maskResult[so] = a; |
| 4856 | } |
| 4857 | } |
| 4858 | |
| 4859 | return maskResult; |
| 4860 | } |
| 4861 | |
| 4862 | /** |
| 4863 | * Mask Filter |