ace-colorpicker-rpk 0.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/.babelrc +30 -0
  2. package/.github/ISSUE_TEMPLATE/bug_report.md +35 -0
  3. package/.github/ISSUE_TEMPLATE/feature_request.md +17 -0
  4. package/ChangeLogs.md +22 -0
  5. package/LICENSE +21 -0
  6. package/README.md +117 -0
  7. package/addon/ace-colorpicker.css +1074 -0
  8. package/addon/ace-colorpicker.js +9602 -0
  9. package/addon/sample/colorpicker.html +199 -0
  10. package/config/rollup.config.dev.js +52 -0
  11. package/config/rollup.config.prod.js +53 -0
  12. package/dist/ace-colorpicker.css +1074 -0
  13. package/dist/ace-colorpicker.js +9736 -0
  14. package/dist/ace-colorpicker.min.js +1 -0
  15. package/gl.html +56 -0
  16. package/index.html +172 -0
  17. package/package.json +87 -0
  18. package/resources/image/ace-editor.png +0 -0
  19. package/resources/image/colorpaletts.png +0 -0
  20. package/resources/image/colorpicker.png +0 -0
  21. package/resources/image/grapes.jpg +0 -0
  22. package/resources/image/palette-type.png +0 -0
  23. package/resources/image/scalecolors-title.png +0 -0
  24. package/resources/image/scalecolors.png +0 -0
  25. package/resources/image/screen-shot.png +0 -0
  26. package/resources/image/sketch-type.png +0 -0
  27. package/src/colorpicker/BaseBox.js +94 -0
  28. package/src/colorpicker/BaseColorPicker.js +404 -0
  29. package/src/colorpicker/BaseModule.js +19 -0
  30. package/src/colorpicker/BaseSlider.js +97 -0
  31. package/src/colorpicker/BaseStore.js +71 -0
  32. package/src/colorpicker/UIElement.js +46 -0
  33. package/src/colorpicker/VerticalSlider.js +57 -0
  34. package/src/colorpicker/chromedevtool/ColorControl.js +47 -0
  35. package/src/colorpicker/chromedevtool/index.js +36 -0
  36. package/src/colorpicker/index.js +37 -0
  37. package/src/colorpicker/macos/ColorControl.js +47 -0
  38. package/src/colorpicker/macos/index.js +38 -0
  39. package/src/colorpicker/mini/ColorControl.js +40 -0
  40. package/src/colorpicker/mini/index.js +24 -0
  41. package/src/colorpicker/mini-vertical/ColorControl.js +35 -0
  42. package/src/colorpicker/mini-vertical/index.js +23 -0
  43. package/src/colorpicker/module/ColorManager.js +111 -0
  44. package/src/colorpicker/module/ColorSetsList.js +132 -0
  45. package/src/colorpicker/ring/ColorControl.js +47 -0
  46. package/src/colorpicker/ring/index.js +42 -0
  47. package/src/colorpicker/ui/ColorInformation.js +216 -0
  48. package/src/colorpicker/ui/ColorPalette.js +130 -0
  49. package/src/colorpicker/ui/ColorRing.js +68 -0
  50. package/src/colorpicker/ui/ColorSetsChooser.js +96 -0
  51. package/src/colorpicker/ui/ColorWheel.js +257 -0
  52. package/src/colorpicker/ui/CurrentColorSets.js +81 -0
  53. package/src/colorpicker/ui/CurrentColorSetsContextMenu.js +63 -0
  54. package/src/colorpicker/ui/control/Hue.js +40 -0
  55. package/src/colorpicker/ui/control/Opacity.js +65 -0
  56. package/src/colorpicker/ui/control/Value.js +50 -0
  57. package/src/colorpicker/ui/control/VerticalHue.js +39 -0
  58. package/src/colorpicker/ui/control/VerticalOpacity.js +55 -0
  59. package/src/colorpicker/vscode/ColorControl.js +40 -0
  60. package/src/colorpicker/vscode/index.js +82 -0
  61. package/src/colorpicker/xd/ColorControl.js +36 -0
  62. package/src/colorpicker/xd/index.js +36 -0
  63. package/src/extension/ace/colorview.js +198 -0
  64. package/src/extension/ace/index.js +11 -0
  65. package/src/index.js +12 -0
  66. package/src/scss/colorpicker.scss +65 -0
  67. package/src/scss/colorview.scss +32 -0
  68. package/src/scss/component/button.scss +33 -0
  69. package/src/scss/component/colorchooser.scss +141 -0
  70. package/src/scss/component/colorsets-contextmenu.scss +33 -0
  71. package/src/scss/component/colorsets.scss +89 -0
  72. package/src/scss/component/control.scss +93 -0
  73. package/src/scss/component/gradient-editor.scss +260 -0
  74. package/src/scss/component/gradient-picker.scss +241 -0
  75. package/src/scss/component/information.scss +141 -0
  76. package/src/scss/component/palette.scss +45 -0
  77. package/src/scss/index.scss +5 -0
  78. package/src/scss/mixins.scss +21 -0
  79. package/src/scss/themes/macos.scss +71 -0
  80. package/src/scss/themes/mini-vertical.scss +94 -0
  81. package/src/scss/themes/mini.scss +76 -0
  82. package/src/scss/themes/palette.scss +85 -0
  83. package/src/scss/themes/ring.scss +57 -0
  84. package/src/scss/themes/sketch.scss +172 -0
  85. package/src/scss/themes/vscode.scss +93 -0
  86. package/src/scss/themes/xd.scss +88 -0
  87. package/src/util/Blender.js +29 -0
  88. package/src/util/Canvas.js +128 -0
  89. package/src/util/Color.js +27 -0
  90. package/src/util/ColorNames.js +14 -0
  91. package/src/util/Dom.js +361 -0
  92. package/src/util/Event.js +30 -0
  93. package/src/util/EventMachin.js +349 -0
  94. package/src/util/GL.js +8 -0
  95. package/src/util/HueColor.js +49 -0
  96. package/src/util/ImageFilter.js +9 -0
  97. package/src/util/ImageLoader.js +137 -0
  98. package/src/util/Kmeans.js +237 -0
  99. package/src/util/Matrix.js +196 -0
  100. package/src/util/State.js +42 -0
  101. package/src/util/blend/composite.js +124 -0
  102. package/src/util/blend/non-separable.js +118 -0
  103. package/src/util/blend/separable.js +76 -0
  104. package/src/util/filter/StackBlur.js +517 -0
  105. package/src/util/filter/functions.js +829 -0
  106. package/src/util/filter/image/crop.js +16 -0
  107. package/src/util/filter/image/flipH.js +23 -0
  108. package/src/util/filter/image/flipV.js +25 -0
  109. package/src/util/filter/image/histogram.js +45 -0
  110. package/src/util/filter/image/index.js +18 -0
  111. package/src/util/filter/image/resize.js +18 -0
  112. package/src/util/filter/image/rotate.js +39 -0
  113. package/src/util/filter/image/rotateDegree.js +53 -0
  114. package/src/util/filter/index.js +11 -0
  115. package/src/util/filter/matrix/blur.js +12 -0
  116. package/src/util/filter/matrix/emboss.js +17 -0
  117. package/src/util/filter/matrix/gaussian-blur-5x.js +17 -0
  118. package/src/util/filter/matrix/gaussian-blur.js +16 -0
  119. package/src/util/filter/matrix/grayscale2.js +16 -0
  120. package/src/util/filter/matrix/index.js +58 -0
  121. package/src/util/filter/matrix/kirsch-horizontal.js +13 -0
  122. package/src/util/filter/matrix/kirsch-vertical.js +13 -0
  123. package/src/util/filter/matrix/laplacian-5x.js +16 -0
  124. package/src/util/filter/matrix/laplacian.js +14 -0
  125. package/src/util/filter/matrix/motion-blur-2.js +18 -0
  126. package/src/util/filter/matrix/motion-blur-3.js +19 -0
  127. package/src/util/filter/matrix/motion-blur.js +18 -0
  128. package/src/util/filter/matrix/negative.js +16 -0
  129. package/src/util/filter/matrix/normal.js +11 -0
  130. package/src/util/filter/matrix/sepia2.js +16 -0
  131. package/src/util/filter/matrix/sharpen.js +14 -0
  132. package/src/util/filter/matrix/sobel-horizontal.js +11 -0
  133. package/src/util/filter/matrix/sobel-vertical.js +11 -0
  134. package/src/util/filter/matrix/stack-blur.js +15 -0
  135. package/src/util/filter/matrix/transparency.js +16 -0
  136. package/src/util/filter/matrix/unsharp-masking.js +16 -0
  137. package/src/util/filter/multi/index.js +9 -0
  138. package/src/util/filter/multi/kirsch.js +7 -0
  139. package/src/util/filter/multi/sobel.js +7 -0
  140. package/src/util/filter/multi/vintage.js +7 -0
  141. package/src/util/filter/pixel/bitonal.js +24 -0
  142. package/src/util/filter/pixel/brightness.js +19 -0
  143. package/src/util/filter/pixel/brownie.js +23 -0
  144. package/src/util/filter/pixel/clip.js +21 -0
  145. package/src/util/filter/pixel/contrast.js +18 -0
  146. package/src/util/filter/pixel/gamma.js +13 -0
  147. package/src/util/filter/pixel/gradient.js +52 -0
  148. package/src/util/filter/pixel/grayscale.js +27 -0
  149. package/src/util/filter/pixel/hue.js +28 -0
  150. package/src/util/filter/pixel/index.js +52 -0
  151. package/src/util/filter/pixel/invert.js +16 -0
  152. package/src/util/filter/pixel/kodachrome.js +23 -0
  153. package/src/util/filter/pixel/matrix.js +28 -0
  154. package/src/util/filter/pixel/noise.js +24 -0
  155. package/src/util/filter/pixel/opacity.js +14 -0
  156. package/src/util/filter/pixel/polaroid.js +23 -0
  157. package/src/util/filter/pixel/saturation.js +30 -0
  158. package/src/util/filter/pixel/sepia.js +28 -0
  159. package/src/util/filter/pixel/shade.js +21 -0
  160. package/src/util/filter/pixel/shift.js +23 -0
  161. package/src/util/filter/pixel/solarize.js +23 -0
  162. package/src/util/filter/pixel/technicolor.js +23 -0
  163. package/src/util/filter/pixel/threshold-color.js +35 -0
  164. package/src/util/filter/pixel/threshold.js +7 -0
  165. package/src/util/filter/pixel/tint.js +20 -0
  166. package/src/util/functions/formatter.js +99 -0
  167. package/src/util/functions/fromCMYK.js +17 -0
  168. package/src/util/functions/fromHSL.js +52 -0
  169. package/src/util/functions/fromHSV.js +64 -0
  170. package/src/util/functions/fromLAB.js +99 -0
  171. package/src/util/functions/fromRGB.js +220 -0
  172. package/src/util/functions/fromYCrCb.js +16 -0
  173. package/src/util/functions/func.js +194 -0
  174. package/src/util/functions/image.js +145 -0
  175. package/src/util/functions/math.js +56 -0
  176. package/src/util/functions/mixin.js +164 -0
  177. package/src/util/functions/parser.js +294 -0
  178. package/src/util/gl/filter/index.js +9 -0
  179. package/src/util/gl/filter/matrix/blur.js +9 -0
  180. package/src/util/gl/filter/matrix/emboss.js +17 -0
  181. package/src/util/gl/filter/matrix/gaussian-blur-5x.js +15 -0
  182. package/src/util/gl/filter/matrix/gaussian-blur.js +19 -0
  183. package/src/util/gl/filter/matrix/grayscale2.js +13 -0
  184. package/src/util/gl/filter/matrix/index.js +55 -0
  185. package/src/util/gl/filter/matrix/kirsch-horizontal.js +11 -0
  186. package/src/util/gl/filter/matrix/kirsch-vertical.js +11 -0
  187. package/src/util/gl/filter/matrix/laplacian-5x.js +13 -0
  188. package/src/util/gl/filter/matrix/laplacian.js +11 -0
  189. package/src/util/gl/filter/matrix/motion-blur-2.js +17 -0
  190. package/src/util/gl/filter/matrix/motion-blur-3.js +17 -0
  191. package/src/util/gl/filter/matrix/motion-blur.js +17 -0
  192. package/src/util/gl/filter/matrix/negative.js +13 -0
  193. package/src/util/gl/filter/matrix/normal.js +8 -0
  194. package/src/util/gl/filter/matrix/sepia2.js +13 -0
  195. package/src/util/gl/filter/matrix/sharpen.js +11 -0
  196. package/src/util/gl/filter/matrix/sobel-horizontal.js +11 -0
  197. package/src/util/gl/filter/matrix/sobel-vertical.js +11 -0
  198. package/src/util/gl/filter/matrix/transparency.js +13 -0
  199. package/src/util/gl/filter/matrix/unsharp-masking.js +14 -0
  200. package/src/util/gl/filter/multi/index.js +9 -0
  201. package/src/util/gl/filter/multi/kirsch.js +7 -0
  202. package/src/util/gl/filter/multi/sobel.js +7 -0
  203. package/src/util/gl/filter/multi/vintage.js +7 -0
  204. package/src/util/gl/filter/pixel/bitonal.js +22 -0
  205. package/src/util/gl/filter/pixel/brightness.js +14 -0
  206. package/src/util/gl/filter/pixel/brownie.js +11 -0
  207. package/src/util/gl/filter/pixel/chaos.js +20 -0
  208. package/src/util/gl/filter/pixel/clip.js +20 -0
  209. package/src/util/gl/filter/pixel/contrast.js +16 -0
  210. package/src/util/gl/filter/pixel/gamma.js +16 -0
  211. package/src/util/gl/filter/pixel/gradient.js +59 -0
  212. package/src/util/gl/filter/pixel/grayscale.js +22 -0
  213. package/src/util/gl/filter/pixel/hue.js +19 -0
  214. package/src/util/gl/filter/pixel/index.js +54 -0
  215. package/src/util/gl/filter/pixel/invert.js +18 -0
  216. package/src/util/gl/filter/pixel/kodachrome.js +11 -0
  217. package/src/util/gl/filter/pixel/matrix.js +29 -0
  218. package/src/util/gl/filter/pixel/noise.js +18 -0
  219. package/src/util/gl/filter/pixel/opacity.js +17 -0
  220. package/src/util/gl/filter/pixel/polaroid.js +11 -0
  221. package/src/util/gl/filter/pixel/saturation.js +20 -0
  222. package/src/util/gl/filter/pixel/sepia.js +19 -0
  223. package/src/util/gl/filter/pixel/shade.js +20 -0
  224. package/src/util/gl/filter/pixel/shift.js +11 -0
  225. package/src/util/gl/filter/pixel/solarize.js +21 -0
  226. package/src/util/gl/filter/pixel/technicolor.js +11 -0
  227. package/src/util/gl/filter/pixel/threshold-color.js +15 -0
  228. package/src/util/gl/filter/pixel/threshold.js +7 -0
  229. package/src/util/gl/filter/pixel/tint.js +25 -0
  230. package/src/util/gl/filter/util.js +185 -0
  231. package/src/util/gl/functions.js +158 -0
  232. package/src/util/gl/index.js +543 -0
  233. package/src/util/index.js +17 -0
  234. package/stand.html +975 -0
  235. package/test/util.Blend.spec.js +15 -0
  236. package/test/util.Color.spec.js +200 -0
  237. package/test/util.Filter.spec.js +12 -0
  238. package/test/util.ImageFilter.spec.js +16 -0
@@ -0,0 +1,185 @@
1
+ export function parseParamNumber (param) {
2
+ if (typeof param === 'string') {
3
+ param = param.replace(/deg/, '')
4
+ param = param.replace(/px/, '')
5
+ }
6
+ return +param
7
+ }
8
+
9
+ export function weight(arr, num = 1) {
10
+ return arr.map(i => {
11
+ return i * num;
12
+ })
13
+ }
14
+
15
+ let SHADER_INDEX = 0
16
+
17
+ function convolutionString (count) {
18
+
19
+ var width = Math.sqrt(count)
20
+ var half = Math.floor(width/2)
21
+
22
+
23
+ return [...Array(count)].map((it, index) => {
24
+ const y = Math.floor(index / width) - half
25
+ const x = index % width - half
26
+
27
+ return `texture(u_image, v_texCoord + onePixel * vec2(${x}, ${y})) * u_kernel${count}[${index}]`
28
+ }).join(' + \n')
29
+ }
30
+
31
+ export function multi (str) {
32
+ return [...arguments];
33
+ }
34
+
35
+ export function convolution(arr) {
36
+
37
+ return {
38
+ type: 'convolution',
39
+ length: arr.length,
40
+ content: arr
41
+ }
42
+ }
43
+
44
+ function makeShader (str , index) {
45
+ return `
46
+ if (u_filterIndex == ${index}.0) {
47
+ ${str}
48
+ }
49
+ `
50
+ }
51
+
52
+ export function shader(str, options) {
53
+ return {
54
+ type: 'shader',
55
+ index: SHADER_INDEX,
56
+ options,
57
+ content: makeShader(str, SHADER_INDEX++)
58
+ }
59
+ }
60
+
61
+
62
+ export function makeVertexShaderSource () {
63
+ return `#version 300 es
64
+
65
+ in vec2 a_position;
66
+ in vec2 a_texCoord;
67
+
68
+ uniform vec2 u_resolution;
69
+ uniform float u_flipY;
70
+
71
+ out vec2 v_texCoord;
72
+
73
+ void main() {
74
+ vec2 zeroToOne = a_position / u_resolution;
75
+
76
+ vec2 zeroToTwo = zeroToOne * 2.0;
77
+
78
+ vec2 clipSpace = zeroToTwo - 1.0;
79
+
80
+ gl_Position = vec4(clipSpace * vec2(1, u_flipY), 0, 1);
81
+
82
+ v_texCoord = a_texCoord;
83
+
84
+ }
85
+ `
86
+ }
87
+
88
+ function makeConvolution(count) {
89
+
90
+ return `
91
+
92
+ if (u_kernelSelect == ${count}.0) {
93
+ vec4 colorSum = ${convolutionString(count)};
94
+
95
+ outColor = vec4((colorSum / u_kernel${count}Weight).rgb, 1);
96
+
97
+ }
98
+ `
99
+ }
100
+
101
+ export function makeFragmentShaderSource (filterShaderList) {
102
+
103
+ const filterContent = filterShaderList.filter(f => f.type == 'shader').map(f => f.content).join('\n\n')
104
+
105
+ const weightTable = {'9': true}
106
+
107
+ filterShaderList.filter(f => f.type == 'convolution').forEach(f => {
108
+ weightTable[f.length] = true
109
+ })
110
+
111
+ const convolutionString = Object.keys(weightTable).map(len => {
112
+ return makeConvolution(+len)
113
+ }).join('\n')
114
+
115
+
116
+ return `#version 300 es
117
+
118
+ precision highp int;
119
+ precision mediump float;
120
+
121
+ uniform sampler2D u_image;
122
+
123
+ // 3 is 3x3 matrix kernel
124
+ uniform float u_kernelSelect;
125
+ uniform float u_filterIndex;
126
+
127
+ uniform float u_kernel9[9];
128
+ uniform float u_kernel9Weight;
129
+ uniform float u_kernel25[25];
130
+ uniform float u_kernel25Weight;
131
+ uniform float u_kernel49[49];
132
+ uniform float u_kernel49Weight;
133
+ uniform float u_kernel81[81];
134
+ uniform float u_kernel81Weight;
135
+
136
+ in vec2 v_texCoord;
137
+
138
+ out vec4 outColor;
139
+
140
+ float random (vec2 st) {
141
+ return fract(sin(dot(st.xy, vec2(12.9898,78.233)))* 43758.5453123);
142
+ }
143
+
144
+ //
145
+ vec3 rgb2hsv(vec3 c)
146
+ {
147
+ vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
148
+ vec4 p = c.g < c.b ? vec4(c.bg, K.wz) : vec4(c.gb, K.xy);
149
+ vec4 q = c.r < p.x ? vec4(p.xyw, c.r) : vec4(c.r, p.yzx);
150
+
151
+ float d = q.x - min(q.w, q.y);
152
+ float e = 1.0e-10;
153
+ return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
154
+ }
155
+
156
+ vec3 hsv2rgb(vec3 c)
157
+ {
158
+ vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
159
+ vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
160
+ return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
161
+ }
162
+
163
+ void main() {
164
+ vec4 pixelColor = texture(u_image, v_texCoord);
165
+ vec2 onePixel = vec2(1) / vec2(textureSize(u_image, 0));
166
+
167
+ ${filterContent}
168
+
169
+ ${convolutionString}
170
+
171
+ }`
172
+ }
173
+
174
+ export function colorToVec4(color) {
175
+ color = [ color.r/255, color.g/255, color.b/255, color.a || 0].map(toFloatString)
176
+ return 'vec4(' + color + ')'
177
+ }
178
+
179
+ export function toFloatString(number) {
180
+ if (number == Math.floor(number)) {
181
+ return number + '.0';
182
+ }
183
+
184
+ return number;
185
+ }
@@ -0,0 +1,158 @@
1
+ import { matches } from '../filter/functions'
2
+ import filters from './filter/index'
3
+ import GL from './index'
4
+
5
+ const functions = {
6
+ filter
7
+ }
8
+ export function makeGroupedFilter(filters = []) {
9
+ var groupedFilter = []
10
+ var group = []
11
+ for (var i = 0, len = filters.length; i < len; i++) {
12
+ var f = filters[i]
13
+
14
+ if (f.userShader) {
15
+ group.push(f)
16
+ } else {
17
+ if (group.length) {
18
+ groupedFilter.push([...group])
19
+ }
20
+ groupedFilter.push(f)
21
+ group = []
22
+ }
23
+ }
24
+
25
+ if (group.length) {
26
+ groupedFilter.push([...group])
27
+ }
28
+
29
+ groupedFilter.forEach((filter, index) => {
30
+ if (Array.isArray(filter)) {
31
+ groupedFilter[index] = (function () {
32
+ const userFunction = makePrebuildUserFilterListForGL(filter)
33
+ // console.log(userFunction)
34
+ return function (bitmap, done) {
35
+ for (var i = 0, len = bitmap.pixels.length; i< len;i += 4) {
36
+ userFunction(bitmap.pixels, i)
37
+ }
38
+
39
+ done(bitmap)
40
+ }
41
+ })()
42
+ }
43
+ })
44
+
45
+ return groupedFilter
46
+ }
47
+
48
+
49
+
50
+ export function multi (...filters) {
51
+ filters = filters.map(filter => {
52
+ return makeFilter(filter);
53
+ }).filter(f => f)
54
+
55
+ filters = makeGroupedFilter(filters)
56
+
57
+ var max = filters.length
58
+
59
+ return function (bitmap, done, opt = {}) {
60
+
61
+ var currentBitmap = bitmap
62
+ var index = 0
63
+
64
+ function runFilter () {
65
+ filters[index].call(null, currentBitmap, function (nextBitmap) {
66
+ currentBitmap = nextBitmap
67
+
68
+ nextFilter()
69
+ }, opt)
70
+ }
71
+
72
+ function nextFilter () {
73
+ index++
74
+
75
+ if (index >= max) {
76
+ done(currentBitmap)
77
+ return;
78
+ }
79
+
80
+ runFilter()
81
+ }
82
+
83
+ runFilter()
84
+ }
85
+ }
86
+
87
+ export function merge (arr) {
88
+ return multi(...arr)
89
+ }
90
+
91
+ export function makeFilterFunction (filterObj) {
92
+ const filterName = filterObj.arr[0]
93
+ var f = filters[filterName]
94
+
95
+ let arr = filterObj.arr
96
+ arr.shift()
97
+
98
+ var result = f.apply(this, arr)
99
+
100
+ return result
101
+ }
102
+
103
+ /**
104
+ * 겹쳐져 있는 Filter 함수를 1차원으로 나열한다.
105
+ * ex) ['sobel'] => ['sobel-horizontal', 'sobel-vertial']
106
+ *
107
+ * @param {String|Array} filterString
108
+ */
109
+ export function flatFilter (filterString) {
110
+
111
+ let filter_list = []
112
+
113
+ if (typeof filterString == 'string') {
114
+ filter_list = matches(filterString)
115
+ } else if (Array.isArray(filterString)) {
116
+ filter_list = filterString;
117
+ }
118
+
119
+ let allFilter = []
120
+
121
+ filter_list.forEach(filterObj => {
122
+ const filterName = filterObj.arr[0]
123
+
124
+ if (filters[filterName]) {
125
+ const f = makeFilterFunction(filterObj);
126
+
127
+ if (f.type == 'convolution' || f.type == 'shader') {
128
+ allFilter.push(f)
129
+ } else {
130
+ f.forEach(subFilter => {
131
+ allFilter = allFilter.concat(flatFilter(subFilter))
132
+ })
133
+ }
134
+ }
135
+ })
136
+
137
+ // console.log(filter_list, allFilter)
138
+
139
+ return allFilter
140
+ }
141
+
142
+ export function filter (img, filterString, callback, opt) {
143
+
144
+ const canvas = new GL.GLCanvas({
145
+ width: opt.width || img.width,
146
+ height: opt.height || img.height,
147
+ img
148
+ });
149
+
150
+ canvas.filter(flatFilter(filterString), function done () {
151
+ if (typeof callback == 'function') {
152
+ callback(canvas)
153
+ }
154
+ })
155
+ }
156
+
157
+
158
+ export default functions