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,294 @@
1
+ import ColorNames from '../ColorNames'
2
+
3
+ import { RGBtoHSL } from './fromRGB'
4
+ import { HSLtoRGB } from './fromHSL'
5
+ import { round } from './math';
6
+
7
+ const color_regexp = /(#(?:[\da-f]{8})|#(?:[\da-f]{3}){1,2}|rgb\((?:\s*\d{1,3},\s*){2}\d{1,3}\s*\)|rgba\((?:\s*\d{1,3},\s*){3}\d*\.?\d+\s*\)|hsl\(\s*\d{1,3}(?:,\s*\d{1,3}%){2}\s*\)|hsla\(\s*\d{1,3}(?:,\s*\d{1,3}%){2},\s*\d*\.?\d+\s*\)|([\w_\-]+))/gi;
8
+ const color_split = ','
9
+
10
+ export function matches (str) {
11
+ const matches = str.match(color_regexp);
12
+ let result = [];
13
+
14
+ if (!matches) {
15
+ return result;
16
+ }
17
+
18
+ for (var i = 0, len = matches.length; i < len; i++) {
19
+
20
+ if (matches[i].indexOf('#') > -1 || matches[i].indexOf('rgb') > -1 || matches[i].indexOf('hsl') > -1) {
21
+ result.push({ color: matches[i] });
22
+ } else {
23
+ var nameColor = ColorNames.getColorByName(matches[i]);
24
+
25
+ if (nameColor) {
26
+ result.push({ color: matches[i], nameColor: nameColor });
27
+ }
28
+ }
29
+ }
30
+
31
+ var pos = { next: 0 }
32
+ result.forEach(item => {
33
+ const startIndex = str.indexOf(item.color, pos.next);
34
+
35
+ item.startIndex = startIndex;
36
+ item.endIndex = startIndex + item.color.length;
37
+
38
+ pos.next = item.endIndex;
39
+ });
40
+
41
+ return result;
42
+ }
43
+
44
+ export function convertMatches (str) {
45
+ const m = matches(str);
46
+
47
+ m.forEach((it, index) => {
48
+ str = str.replace(it.color, '@' + index)
49
+ })
50
+
51
+ return { str, matches: m }
52
+ }
53
+
54
+
55
+ export function convertMatchesArray (str, splitStr = ',') {
56
+ const ret = convertMatches(str);
57
+ return ret.str.split(splitStr).map((it, index) => {
58
+ it = trim(it);
59
+
60
+ if (ret.matches[index]) {
61
+ it = it.replace('@' + index, ret.matches[index].color)
62
+ }
63
+
64
+ return it
65
+ })
66
+ }
67
+
68
+ export function reverseMatches (str, matches) {
69
+ matches.forEach((it, index) => {
70
+ str = str.replace('@' + index, it.color)
71
+ })
72
+
73
+ return str;
74
+ }
75
+
76
+ export function trim (str) {
77
+ return str.replace(/^\s+|\s+$/g, '');
78
+ }
79
+
80
+ /**
81
+ * @method rgb
82
+ *
83
+ * parse string to rgb color
84
+ *
85
+ * color.parse("#FF0000") === { r : 255, g : 0, b : 0 }
86
+ *
87
+ * color.parse("rgb(255, 0, 0)") == { r : 255, g : 0, b :0 }
88
+ * color.parse(0xff0000) == { r : 255, g : 0, b : 0 }
89
+ * color.parse(0xff000000) == { r : 255, g : 0, b : 0, a: 0 }
90
+ *
91
+ * @param {String} str color string
92
+ * @returns {Object} rgb object
93
+ */
94
+ export function parse(str) {
95
+ if (typeof str == 'string') {
96
+
97
+ if (ColorNames.isColorName(str)) {
98
+ str = ColorNames.getColorByName(str);
99
+ }
100
+
101
+ if (str.indexOf("rgb(") > -1) {
102
+ var arr = str.replace("rgb(", "").replace(")", "").split(",");
103
+
104
+ for (var i = 0, len = arr.length; i < len; i++) {
105
+ arr[i] = parseInt(trim(arr[i]), 10);
106
+ }
107
+
108
+ var obj = { type: 'rgb', r: arr[0], g: arr[1], b: arr[2], a: 1 };
109
+
110
+ obj = Object.assign(obj, RGBtoHSL(obj));
111
+
112
+ return obj;
113
+ } else if (str.indexOf("rgba(") > -1) {
114
+ var arr = str.replace("rgba(", "").replace(")", "").split(",");
115
+
116
+ for (var i = 0, len = arr.length; i < len; i++) {
117
+
118
+ if (len - 1 == i) {
119
+ arr[i] = parseFloat(trim(arr[i]));
120
+ } else {
121
+ arr[i] = parseInt(trim(arr[i]), 10);
122
+ }
123
+ }
124
+
125
+ var obj = { type: 'rgb', r: arr[0], g: arr[1], b: arr[2], a: arr[3] };
126
+
127
+ obj = Object.assign(obj, RGBtoHSL(obj));
128
+
129
+ return obj;
130
+
131
+ } else if (str.indexOf("hsl(") > -1) {
132
+ var arr = str.replace("hsl(", "").replace(")", "").split(",");
133
+
134
+ for (var i = 0, len = arr.length; i < len; i++) {
135
+ arr[i] = parseFloat(trim(arr[i]));
136
+ }
137
+
138
+ var obj = { type: 'hsl', h: arr[0], s: arr[1], l: arr[2], a: 1 };
139
+
140
+ obj = Object.assign(obj, HSLtoRGB(obj));
141
+
142
+ return obj;
143
+ } else if (str.indexOf("hsla(") > -1) {
144
+ var arr = str.replace("hsla(", "").replace(")", "").split(",");
145
+
146
+ for (var i = 0, len = arr.length; i < len; i++) {
147
+
148
+ if (len - 1 == i) {
149
+ arr[i] = parseFloat(trim(arr[i]));
150
+ } else {
151
+ arr[i] = parseInt(trim(arr[i]), 10);
152
+ }
153
+ }
154
+
155
+ var obj = { type: 'hsl', h: arr[0], s: arr[1], l: arr[2], a: arr[3] };
156
+
157
+ obj = Object.assign(obj, HSLtoRGB(obj));
158
+
159
+ return obj;
160
+ } else if (str.indexOf("#") == 0) {
161
+
162
+ str = str.replace("#", "");
163
+
164
+ var arr = [];
165
+ var a = 1;
166
+ if (str.length == 3) {
167
+ for (var i = 0, len = str.length; i < len; i++) {
168
+ var char = str.substr(i, 1);
169
+ arr.push(parseInt(char + char, 16));
170
+ }
171
+ } else if (str.length === 8) {
172
+ for (var i = 0, len = str.length; i < len; i += 2) {
173
+ arr.push(parseInt(str.substr(i, 2), 16));
174
+ }
175
+
176
+ a = arr.pop() / 255
177
+ } else {
178
+ for (var i = 0, len = str.length; i < len; i += 2) {
179
+ arr.push(parseInt(str.substr(i, 2), 16));
180
+ }
181
+ }
182
+
183
+ var obj = { type: 'hex', r: arr[0], g: arr[1], b: arr[2], a };
184
+
185
+ obj = Object.assign(obj, RGBtoHSL(obj));
186
+
187
+ return obj;
188
+ }
189
+ } else if (typeof str == 'number') {
190
+ if (0x000000 <= str && str <= 0xffffff) {
191
+ const r = (str & 0xff0000) >> 16;
192
+ const g = (str & 0x00ff00) >> 8;
193
+ const b = (str & 0x0000ff) >> 0;
194
+
195
+ var obj = { type: 'hex', r, g, b, a: 1 };
196
+ obj = Object.assign(obj, RGBtoHSL(obj));
197
+ return obj;
198
+ } else if (0x00000000 <= str && str <= 0xffffffff) {
199
+ const r = (str & 0xff000000) >> 24;
200
+ const g = (str & 0x00ff0000) >> 16;
201
+ const b = (str & 0x0000ff00) >> 8;
202
+ const a = (str & 0x000000ff) / 255;
203
+
204
+ var obj = { type: 'hex', r, g, b, a };
205
+ obj = Object.assign(obj, RGBtoHSL(obj));
206
+
207
+ return obj;
208
+ }
209
+ }
210
+
211
+ return str;
212
+
213
+ }
214
+
215
+
216
+ export function parseGradient (colors) {
217
+ if (typeof colors == 'string') {
218
+ colors = convertMatchesArray(colors);
219
+ }
220
+
221
+ colors = colors.map(it => {
222
+ if (typeof it == 'string') {
223
+ const ret = convertMatches(it)
224
+ let arr = trim(ret.str).split(' ');
225
+
226
+ if (arr[1]) {
227
+ if (arr[1].includes('%')) {
228
+ arr[1] = parseFloat(arr[1].replace(/%/, ''))/100
229
+ } else {
230
+ arr[1] = parseFloat(arr[1])
231
+ }
232
+
233
+ } else {
234
+ arr[1] = '*'
235
+ }
236
+
237
+ arr[0] = reverseMatches(arr[0], ret.matches)
238
+
239
+ return arr;
240
+ } else if (Array.isArray(it)) {
241
+
242
+ if (!it[1]) {
243
+ it[1] = '*'
244
+ } else if (typeof it[1] == 'string') {
245
+ if (it[1].includes('%')) {
246
+ it[1] = parseFloat(it[1].replace(/%/, ''))/100
247
+ } else {
248
+ it[1] = +it[1]
249
+ }
250
+ }
251
+
252
+ return [...it];
253
+ }
254
+ })
255
+
256
+ const count = colors.filter(it => {
257
+ return it[1] === '*'
258
+ }).length
259
+
260
+ if (count > 0) {
261
+ const sum = colors.filter(it => {
262
+ return it[1] != '*' && it[1] != 1
263
+ }).map(it => it[1]).reduce((total, cur) => {
264
+ return total + cur
265
+ } , 0)
266
+
267
+ const dist = (1 - sum) / count
268
+ colors.forEach((it, index) => {
269
+ if (it[1] == '*' && index > 0) {
270
+ if (colors.length - 1 == index) {
271
+ // it[1] = 1
272
+ } else {
273
+ it[1] = dist
274
+ }
275
+ }
276
+ })
277
+
278
+ }
279
+
280
+ return colors;
281
+ }
282
+
283
+
284
+ export default {
285
+ matches,
286
+ convertMatches,
287
+ convertMatchesArray,
288
+ reverseMatches,
289
+ parse,
290
+ parseGradient,
291
+ trim,
292
+ color_regexp,
293
+ color_split
294
+ }
@@ -0,0 +1,9 @@
1
+ import matrix from './matrix/index'
2
+ import pixel from './pixel/index'
3
+ import multi from './multi/index'
4
+
5
+ export default {
6
+ ...matrix,
7
+ ...pixel,
8
+ ...multi
9
+ }
@@ -0,0 +1,9 @@
1
+ import { convolution } from '../util'
2
+
3
+ export default function () {
4
+ return convolution([
5
+ 1, 1, 1,
6
+ 1, 1, 1,
7
+ 1, 1, 1
8
+ ])
9
+ }
@@ -0,0 +1,17 @@
1
+ import {
2
+ parseParamNumber,
3
+ convolution
4
+ } from '../util'
5
+ /*
6
+ * carve, mold, or stamp a design on (a surface) so that it stands out in relief.
7
+ *
8
+ * @param {Number} amount 0.0 .. 4.0
9
+ */
10
+ export default function emboss (amount = 4) {
11
+ amount = parseParamNumber(amount)
12
+ return convolution([
13
+ amount * (-2.0), -amount, 0.0,
14
+ -amount, 1.0, amount,
15
+ 0.0, amount, amount * 2.0,
16
+ ]);
17
+ }
@@ -0,0 +1,15 @@
1
+ import {
2
+ parseParamNumber,
3
+ convolution,
4
+ weight
5
+ } from '../util'
6
+
7
+ export default function gaussianBlur5x () {
8
+ return convolution([
9
+ 1, 4, 6, 4, 1,
10
+ 4, 16, 24, 16, 4,
11
+ 6, 24, 36, 24, 6,
12
+ 4, 16, 24, 16, 4,
13
+ 1, 4, 6, 4, 1
14
+ ]);
15
+ }
@@ -0,0 +1,19 @@
1
+ import {
2
+ parseParamNumber,
3
+ convolution,
4
+ weight
5
+ } from '../util'
6
+
7
+ /**
8
+ *
9
+ * @param {Number} amount 0..1
10
+ */
11
+ export default function gaussianBlur (amount = 1) {
12
+ const C = parseParamNumber(amount) * (1/16)
13
+
14
+ return convolution(weight([
15
+ 1, 2, 1,
16
+ 2, 4, 2,
17
+ 1, 2, 1
18
+ ], C ));
19
+ }
@@ -0,0 +1,13 @@
1
+ import {
2
+ convolution
3
+ } from '../util'
4
+
5
+ export default function grayscale2 () {
6
+ return convolution([
7
+ 0.3, 0.3, 0.3, 0, 0,
8
+ 0.59, 0.59, 0.59, 0, 0,
9
+ 0.11, 0.11, 0.11, 0, 0,
10
+ 0, 0, 0, 0, 0,
11
+ 0, 0, 0, 0, 0
12
+ ]);
13
+ }
@@ -0,0 +1,55 @@
1
+ import blur from './blur'
2
+ import normal from './normal'
3
+ import emboss from './emboss'
4
+ import gaussianBlur from './gaussian-blur'
5
+ import gaussianBlur5x from './gaussian-blur-5x'
6
+ import grayscale2 from './grayscale2'
7
+ import kirschHorizontal from './kirsch-horizontal'
8
+ import kirschVertical from './kirsch-vertical'
9
+ import laplacian from './laplacian'
10
+ import laplacian5x from './laplacian-5x'
11
+ import motionBlur from './motion-blur'
12
+ import motionBlur2 from './motion-blur-2'
13
+ import motionBlur3 from './motion-blur-3'
14
+ import negative from './negative'
15
+ import sepia2 from './sepia2'
16
+ import sharpen from './sharpen'
17
+ import sobelHorizontal from './sobel-horizontal'
18
+ import sobelVertical from './sobel-vertical'
19
+ import transparency from './transparency'
20
+ import unsharpMasking from './unsharp-masking'
21
+
22
+
23
+ export default {
24
+ blur,
25
+ normal,
26
+ emboss,
27
+ gaussianBlur,
28
+ 'gaussian-blur': gaussianBlur,
29
+ gaussianBlur5x,
30
+ 'gaussian-blur-5x': gaussianBlur5x,
31
+ grayscale2,
32
+ kirschHorizontal,
33
+ 'kirsch-horizontal': kirschHorizontal,
34
+ kirschVertical,
35
+ 'kirsch-vertical': kirschVertical,
36
+ laplacian,
37
+ laplacian5x,
38
+ 'laplacian-5x': laplacian5x,
39
+ motionBlur,
40
+ 'motion-blur': motionBlur,
41
+ motionBlur2,
42
+ 'motion-blur-2': motionBlur2,
43
+ motionBlur3,
44
+ 'motion-blur-3': motionBlur3,
45
+ negative,
46
+ sepia2,
47
+ sharpen,
48
+ sobelHorizontal,
49
+ 'sobel-horizontal': sobelHorizontal,
50
+ sobelVertical,
51
+ 'sobel-vertical': sobelVertical,
52
+ transparency,
53
+ unsharpMasking,
54
+ 'unsharp-masking': unsharpMasking
55
+ }
@@ -0,0 +1,11 @@
1
+ import {
2
+ convolution
3
+ } from '../util'
4
+
5
+ export default function kirschHorizontal () {
6
+ return convolution([
7
+ 5, 5, 5,
8
+ -3, 0, -3,
9
+ -3, -3, -3
10
+ ]);
11
+ }
@@ -0,0 +1,11 @@
1
+ import {
2
+ convolution
3
+ } from '../util'
4
+
5
+ export default function kirschVertical () {
6
+ return convolution([
7
+ 5, -3, -3,
8
+ 5, 0, -3,
9
+ 5, -3, -3
10
+ ]);
11
+ }
@@ -0,0 +1,13 @@
1
+ import {
2
+ convolution
3
+ } from '../util'
4
+
5
+ export default function laplacian5x () {
6
+ return convolution([
7
+ -1, -1, -1, -1, -1,
8
+ -1, -1, -1, -1, -1,
9
+ -1, -1, 24, -1, -1,
10
+ -1, -1, -1, -1, -1,
11
+ -1, -1, -1, -1, -1
12
+ ]);
13
+ }
@@ -0,0 +1,11 @@
1
+ import {
2
+ convolution
3
+ } from '../util'
4
+
5
+ export default function laplacian () {
6
+ return convolution([
7
+ -1, -1, -1,
8
+ -1, 8, -1,
9
+ -1, -1, -1
10
+ ]);
11
+ }
@@ -0,0 +1,17 @@
1
+ import {
2
+ convolution
3
+ } from '../util'
4
+
5
+ export default function motionBlur2 () {
6
+ return convolution([
7
+ 1, 0, 0, 0, 0, 0, 0, 0, 1,
8
+ 0, 1, 0, 0, 0, 0, 0, 1, 0,
9
+ 0, 0, 1, 0, 0, 0, 1, 0, 0,
10
+ 0, 0, 0, 1, 0, 1, 0, 0, 0,
11
+ 0, 0, 0, 0, 1, 0, 0, 0, 0,
12
+ 0, 0, 0, 1, 0, 1, 0, 0, 0,
13
+ 0, 0, 1, 0, 0, 0, 1, 0, 0,
14
+ 0, 1, 0, 0, 0, 0, 0, 1, 0,
15
+ 1, 0, 0, 0, 0, 0, 0, 0, 1,
16
+ ]);
17
+ }
@@ -0,0 +1,17 @@
1
+ import {
2
+ convolution
3
+ } from '../util'
4
+
5
+ export default function motionBlur3 () {
6
+ return convolution([
7
+ 1, 0, 0, 0, 1, 0, 0, 0, 1,
8
+ 0, 1, 0, 0, 1, 0, 0, 1, 0,
9
+ 0, 0, 1, 0, 1, 0, 1, 0, 0,
10
+ 0, 0, 0, 1, 1, 1, 0, 0, 0,
11
+ 1, 1, 1, 1, 1, 1, 1, 1, 1,
12
+ 0, 0, 0, 1, 1, 1, 0, 0, 0,
13
+ 0, 0, 1, 0, 1, 0, 1, 0, 0,
14
+ 0, 1, 0, 0, 1, 0, 0, 1, 0,
15
+ 1, 0, 0, 0, 1, 0, 0, 0, 1,
16
+ ]);
17
+ }
@@ -0,0 +1,17 @@
1
+ import {
2
+ convolution
3
+ } from '../util'
4
+
5
+ export default function motionBlur () {
6
+ return convolution([
7
+ 1, 0, 0, 0, 0, 0, 0, 0, 0,
8
+ 0, 1, 0, 0, 0, 0, 0, 0, 0,
9
+ 0, 0, 1, 0, 0, 0, 0, 0, 0,
10
+ 0, 0, 0, 1, 0, 0, 0, 0, 0,
11
+ 0, 0, 0, 0, 1, 0, 0, 0, 0,
12
+ 0, 0, 0, 0, 0, 1, 0, 0, 0,
13
+ 0, 0, 0, 0, 0, 0, 1, 0, 0,
14
+ 0, 0, 0, 0, 0, 0, 0, 1, 0,
15
+ 0, 0, 0, 0, 0, 0, 0, 0, 1,
16
+ ]);
17
+ }
@@ -0,0 +1,13 @@
1
+ import {
2
+ convolution
3
+ } from '../util'
4
+
5
+ export default function negative () {
6
+ return convolution([
7
+ -1, 0, 0, 0, 0,
8
+ 0, -1, 0, 0, 0,
9
+ 0, 0, -1, 0, 0,
10
+ 0, 0, 0, 1, 0,
11
+ 1, 1, 1, 1, 1
12
+ ]);
13
+ }
@@ -0,0 +1,8 @@
1
+ import { convolution } from '../util'
2
+ export default function () {
3
+ return convolution([
4
+ 0, 0, 0,
5
+ 0, 1, 0,
6
+ 0, 0, 0
7
+ ])
8
+ }
@@ -0,0 +1,13 @@
1
+ import {
2
+ convolution
3
+ } from '../util'
4
+
5
+ export default function sepia2 () {
6
+ return convolution([
7
+ 0.393, 0.349, 0.272, 0, 0,
8
+ 0.769, 0.686, 0.534, 0, 0,
9
+ 0.189, 0.168, 0.131, 0, 0,
10
+ 0, 0, 0, 0, 0,
11
+ 0, 0, 0, 0, 0
12
+ ]);
13
+ }
@@ -0,0 +1,11 @@
1
+ import {
2
+ convolution
3
+ } from '../util'
4
+
5
+ export default function sharpen () {
6
+ return convolution([
7
+ 0, -1, 0,
8
+ -1, 5, -1,
9
+ 0, -1, 0
10
+ ]);
11
+ }
@@ -0,0 +1,11 @@
1
+ import {
2
+ convolution
3
+ } from '../util'
4
+
5
+ export default function sobelHorizontal () {
6
+ return convolution([
7
+ -1, -2, -1,
8
+ 0, 0, 0,
9
+ 1, 2, 1
10
+ ]);
11
+ }
@@ -0,0 +1,11 @@
1
+ import {
2
+ convolution
3
+ } from '../util'
4
+
5
+ export default function sobelVertical () {
6
+ return convolution([
7
+ -1, 0, 1,
8
+ -2, 0, 2,
9
+ -1, 0, 1
10
+ ]);
11
+ }
@@ -0,0 +1,13 @@
1
+ import {
2
+ convolution
3
+ } from '../util'
4
+
5
+ export default function transparency () {
6
+ return convolution([
7
+ 1, 0, 0, 0, 0,
8
+ 0, 1, 0, 0, 0,
9
+ 0, 0, 1, 0, 0,
10
+ 0, 0, 0, 0.3, 0,
11
+ 0, 0, 0, 0, 1,
12
+ ]);
13
+ }
@@ -0,0 +1,14 @@
1
+ import {
2
+ convolution,
3
+ weight
4
+ } from '../util'
5
+
6
+ export default function unsharpMasking () {
7
+ return convolution(weight([
8
+ 1, 4, 6, 4, 1,
9
+ 4, 16, 24, 16, 4,
10
+ 6, 24, -476, 24, 6,
11
+ 4, 16, 24, 16, 4,
12
+ 1, 4, 6, 4, 1
13
+ ], -1 / 256));
14
+ }
@@ -0,0 +1,9 @@
1
+ import kirsch from './kirsch'
2
+ import sobel from './sobel'
3
+ import vintage from './vintage'
4
+
5
+ export default {
6
+ kirsch,
7
+ sobel,
8
+ vintage
9
+ }
@@ -0,0 +1,7 @@
1
+ import {
2
+ multi
3
+ } from '../util'
4
+
5
+ export default function kirsch () {
6
+ return multi('kirsch-horizontal kirsch-vertical');
7
+ }
@@ -0,0 +1,7 @@
1
+ import {
2
+ multi
3
+ } from '../util'
4
+
5
+ export default function sobel () {
6
+ return multi('sobel-horizontal sobel-vertical');
7
+ }
@@ -0,0 +1,7 @@
1
+ import {
2
+ multi
3
+ } from '../util'
4
+
5
+ export default function vintage () {
6
+ return multi(`brightness(0.15) saturation(-0.2) gamma(1.8)`)
7
+ }