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.
- package/.babelrc +30 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +35 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +17 -0
- package/ChangeLogs.md +22 -0
- package/LICENSE +21 -0
- package/README.md +117 -0
- package/addon/ace-colorpicker.css +1074 -0
- package/addon/ace-colorpicker.js +9602 -0
- package/addon/sample/colorpicker.html +199 -0
- package/config/rollup.config.dev.js +52 -0
- package/config/rollup.config.prod.js +53 -0
- package/dist/ace-colorpicker.css +1074 -0
- package/dist/ace-colorpicker.js +9736 -0
- package/dist/ace-colorpicker.min.js +1 -0
- package/gl.html +56 -0
- package/index.html +172 -0
- package/package.json +87 -0
- package/resources/image/ace-editor.png +0 -0
- package/resources/image/colorpaletts.png +0 -0
- package/resources/image/colorpicker.png +0 -0
- package/resources/image/grapes.jpg +0 -0
- package/resources/image/palette-type.png +0 -0
- package/resources/image/scalecolors-title.png +0 -0
- package/resources/image/scalecolors.png +0 -0
- package/resources/image/screen-shot.png +0 -0
- package/resources/image/sketch-type.png +0 -0
- package/src/colorpicker/BaseBox.js +94 -0
- package/src/colorpicker/BaseColorPicker.js +404 -0
- package/src/colorpicker/BaseModule.js +19 -0
- package/src/colorpicker/BaseSlider.js +97 -0
- package/src/colorpicker/BaseStore.js +71 -0
- package/src/colorpicker/UIElement.js +46 -0
- package/src/colorpicker/VerticalSlider.js +57 -0
- package/src/colorpicker/chromedevtool/ColorControl.js +47 -0
- package/src/colorpicker/chromedevtool/index.js +36 -0
- package/src/colorpicker/index.js +37 -0
- package/src/colorpicker/macos/ColorControl.js +47 -0
- package/src/colorpicker/macos/index.js +38 -0
- package/src/colorpicker/mini/ColorControl.js +40 -0
- package/src/colorpicker/mini/index.js +24 -0
- package/src/colorpicker/mini-vertical/ColorControl.js +35 -0
- package/src/colorpicker/mini-vertical/index.js +23 -0
- package/src/colorpicker/module/ColorManager.js +111 -0
- package/src/colorpicker/module/ColorSetsList.js +132 -0
- package/src/colorpicker/ring/ColorControl.js +47 -0
- package/src/colorpicker/ring/index.js +42 -0
- package/src/colorpicker/ui/ColorInformation.js +216 -0
- package/src/colorpicker/ui/ColorPalette.js +130 -0
- package/src/colorpicker/ui/ColorRing.js +68 -0
- package/src/colorpicker/ui/ColorSetsChooser.js +96 -0
- package/src/colorpicker/ui/ColorWheel.js +257 -0
- package/src/colorpicker/ui/CurrentColorSets.js +81 -0
- package/src/colorpicker/ui/CurrentColorSetsContextMenu.js +63 -0
- package/src/colorpicker/ui/control/Hue.js +40 -0
- package/src/colorpicker/ui/control/Opacity.js +65 -0
- package/src/colorpicker/ui/control/Value.js +50 -0
- package/src/colorpicker/ui/control/VerticalHue.js +39 -0
- package/src/colorpicker/ui/control/VerticalOpacity.js +55 -0
- package/src/colorpicker/vscode/ColorControl.js +40 -0
- package/src/colorpicker/vscode/index.js +82 -0
- package/src/colorpicker/xd/ColorControl.js +36 -0
- package/src/colorpicker/xd/index.js +36 -0
- package/src/extension/ace/colorview.js +198 -0
- package/src/extension/ace/index.js +11 -0
- package/src/index.js +12 -0
- package/src/scss/colorpicker.scss +65 -0
- package/src/scss/colorview.scss +32 -0
- package/src/scss/component/button.scss +33 -0
- package/src/scss/component/colorchooser.scss +141 -0
- package/src/scss/component/colorsets-contextmenu.scss +33 -0
- package/src/scss/component/colorsets.scss +89 -0
- package/src/scss/component/control.scss +93 -0
- package/src/scss/component/gradient-editor.scss +260 -0
- package/src/scss/component/gradient-picker.scss +241 -0
- package/src/scss/component/information.scss +141 -0
- package/src/scss/component/palette.scss +45 -0
- package/src/scss/index.scss +5 -0
- package/src/scss/mixins.scss +21 -0
- package/src/scss/themes/macos.scss +71 -0
- package/src/scss/themes/mini-vertical.scss +94 -0
- package/src/scss/themes/mini.scss +76 -0
- package/src/scss/themes/palette.scss +85 -0
- package/src/scss/themes/ring.scss +57 -0
- package/src/scss/themes/sketch.scss +172 -0
- package/src/scss/themes/vscode.scss +93 -0
- package/src/scss/themes/xd.scss +88 -0
- package/src/util/Blender.js +29 -0
- package/src/util/Canvas.js +128 -0
- package/src/util/Color.js +27 -0
- package/src/util/ColorNames.js +14 -0
- package/src/util/Dom.js +361 -0
- package/src/util/Event.js +30 -0
- package/src/util/EventMachin.js +349 -0
- package/src/util/GL.js +8 -0
- package/src/util/HueColor.js +49 -0
- package/src/util/ImageFilter.js +9 -0
- package/src/util/ImageLoader.js +137 -0
- package/src/util/Kmeans.js +237 -0
- package/src/util/Matrix.js +196 -0
- package/src/util/State.js +42 -0
- package/src/util/blend/composite.js +124 -0
- package/src/util/blend/non-separable.js +118 -0
- package/src/util/blend/separable.js +76 -0
- package/src/util/filter/StackBlur.js +517 -0
- package/src/util/filter/functions.js +829 -0
- package/src/util/filter/image/crop.js +16 -0
- package/src/util/filter/image/flipH.js +23 -0
- package/src/util/filter/image/flipV.js +25 -0
- package/src/util/filter/image/histogram.js +45 -0
- package/src/util/filter/image/index.js +18 -0
- package/src/util/filter/image/resize.js +18 -0
- package/src/util/filter/image/rotate.js +39 -0
- package/src/util/filter/image/rotateDegree.js +53 -0
- package/src/util/filter/index.js +11 -0
- package/src/util/filter/matrix/blur.js +12 -0
- package/src/util/filter/matrix/emboss.js +17 -0
- package/src/util/filter/matrix/gaussian-blur-5x.js +17 -0
- package/src/util/filter/matrix/gaussian-blur.js +16 -0
- package/src/util/filter/matrix/grayscale2.js +16 -0
- package/src/util/filter/matrix/index.js +58 -0
- package/src/util/filter/matrix/kirsch-horizontal.js +13 -0
- package/src/util/filter/matrix/kirsch-vertical.js +13 -0
- package/src/util/filter/matrix/laplacian-5x.js +16 -0
- package/src/util/filter/matrix/laplacian.js +14 -0
- package/src/util/filter/matrix/motion-blur-2.js +18 -0
- package/src/util/filter/matrix/motion-blur-3.js +19 -0
- package/src/util/filter/matrix/motion-blur.js +18 -0
- package/src/util/filter/matrix/negative.js +16 -0
- package/src/util/filter/matrix/normal.js +11 -0
- package/src/util/filter/matrix/sepia2.js +16 -0
- package/src/util/filter/matrix/sharpen.js +14 -0
- package/src/util/filter/matrix/sobel-horizontal.js +11 -0
- package/src/util/filter/matrix/sobel-vertical.js +11 -0
- package/src/util/filter/matrix/stack-blur.js +15 -0
- package/src/util/filter/matrix/transparency.js +16 -0
- package/src/util/filter/matrix/unsharp-masking.js +16 -0
- package/src/util/filter/multi/index.js +9 -0
- package/src/util/filter/multi/kirsch.js +7 -0
- package/src/util/filter/multi/sobel.js +7 -0
- package/src/util/filter/multi/vintage.js +7 -0
- package/src/util/filter/pixel/bitonal.js +24 -0
- package/src/util/filter/pixel/brightness.js +19 -0
- package/src/util/filter/pixel/brownie.js +23 -0
- package/src/util/filter/pixel/clip.js +21 -0
- package/src/util/filter/pixel/contrast.js +18 -0
- package/src/util/filter/pixel/gamma.js +13 -0
- package/src/util/filter/pixel/gradient.js +52 -0
- package/src/util/filter/pixel/grayscale.js +27 -0
- package/src/util/filter/pixel/hue.js +28 -0
- package/src/util/filter/pixel/index.js +52 -0
- package/src/util/filter/pixel/invert.js +16 -0
- package/src/util/filter/pixel/kodachrome.js +23 -0
- package/src/util/filter/pixel/matrix.js +28 -0
- package/src/util/filter/pixel/noise.js +24 -0
- package/src/util/filter/pixel/opacity.js +14 -0
- package/src/util/filter/pixel/polaroid.js +23 -0
- package/src/util/filter/pixel/saturation.js +30 -0
- package/src/util/filter/pixel/sepia.js +28 -0
- package/src/util/filter/pixel/shade.js +21 -0
- package/src/util/filter/pixel/shift.js +23 -0
- package/src/util/filter/pixel/solarize.js +23 -0
- package/src/util/filter/pixel/technicolor.js +23 -0
- package/src/util/filter/pixel/threshold-color.js +35 -0
- package/src/util/filter/pixel/threshold.js +7 -0
- package/src/util/filter/pixel/tint.js +20 -0
- package/src/util/functions/formatter.js +99 -0
- package/src/util/functions/fromCMYK.js +17 -0
- package/src/util/functions/fromHSL.js +52 -0
- package/src/util/functions/fromHSV.js +64 -0
- package/src/util/functions/fromLAB.js +99 -0
- package/src/util/functions/fromRGB.js +220 -0
- package/src/util/functions/fromYCrCb.js +16 -0
- package/src/util/functions/func.js +194 -0
- package/src/util/functions/image.js +145 -0
- package/src/util/functions/math.js +56 -0
- package/src/util/functions/mixin.js +164 -0
- package/src/util/functions/parser.js +294 -0
- package/src/util/gl/filter/index.js +9 -0
- package/src/util/gl/filter/matrix/blur.js +9 -0
- package/src/util/gl/filter/matrix/emboss.js +17 -0
- package/src/util/gl/filter/matrix/gaussian-blur-5x.js +15 -0
- package/src/util/gl/filter/matrix/gaussian-blur.js +19 -0
- package/src/util/gl/filter/matrix/grayscale2.js +13 -0
- package/src/util/gl/filter/matrix/index.js +55 -0
- package/src/util/gl/filter/matrix/kirsch-horizontal.js +11 -0
- package/src/util/gl/filter/matrix/kirsch-vertical.js +11 -0
- package/src/util/gl/filter/matrix/laplacian-5x.js +13 -0
- package/src/util/gl/filter/matrix/laplacian.js +11 -0
- package/src/util/gl/filter/matrix/motion-blur-2.js +17 -0
- package/src/util/gl/filter/matrix/motion-blur-3.js +17 -0
- package/src/util/gl/filter/matrix/motion-blur.js +17 -0
- package/src/util/gl/filter/matrix/negative.js +13 -0
- package/src/util/gl/filter/matrix/normal.js +8 -0
- package/src/util/gl/filter/matrix/sepia2.js +13 -0
- package/src/util/gl/filter/matrix/sharpen.js +11 -0
- package/src/util/gl/filter/matrix/sobel-horizontal.js +11 -0
- package/src/util/gl/filter/matrix/sobel-vertical.js +11 -0
- package/src/util/gl/filter/matrix/transparency.js +13 -0
- package/src/util/gl/filter/matrix/unsharp-masking.js +14 -0
- package/src/util/gl/filter/multi/index.js +9 -0
- package/src/util/gl/filter/multi/kirsch.js +7 -0
- package/src/util/gl/filter/multi/sobel.js +7 -0
- package/src/util/gl/filter/multi/vintage.js +7 -0
- package/src/util/gl/filter/pixel/bitonal.js +22 -0
- package/src/util/gl/filter/pixel/brightness.js +14 -0
- package/src/util/gl/filter/pixel/brownie.js +11 -0
- package/src/util/gl/filter/pixel/chaos.js +20 -0
- package/src/util/gl/filter/pixel/clip.js +20 -0
- package/src/util/gl/filter/pixel/contrast.js +16 -0
- package/src/util/gl/filter/pixel/gamma.js +16 -0
- package/src/util/gl/filter/pixel/gradient.js +59 -0
- package/src/util/gl/filter/pixel/grayscale.js +22 -0
- package/src/util/gl/filter/pixel/hue.js +19 -0
- package/src/util/gl/filter/pixel/index.js +54 -0
- package/src/util/gl/filter/pixel/invert.js +18 -0
- package/src/util/gl/filter/pixel/kodachrome.js +11 -0
- package/src/util/gl/filter/pixel/matrix.js +29 -0
- package/src/util/gl/filter/pixel/noise.js +18 -0
- package/src/util/gl/filter/pixel/opacity.js +17 -0
- package/src/util/gl/filter/pixel/polaroid.js +11 -0
- package/src/util/gl/filter/pixel/saturation.js +20 -0
- package/src/util/gl/filter/pixel/sepia.js +19 -0
- package/src/util/gl/filter/pixel/shade.js +20 -0
- package/src/util/gl/filter/pixel/shift.js +11 -0
- package/src/util/gl/filter/pixel/solarize.js +21 -0
- package/src/util/gl/filter/pixel/technicolor.js +11 -0
- package/src/util/gl/filter/pixel/threshold-color.js +15 -0
- package/src/util/gl/filter/pixel/threshold.js +7 -0
- package/src/util/gl/filter/pixel/tint.js +25 -0
- package/src/util/gl/filter/util.js +185 -0
- package/src/util/gl/functions.js +158 -0
- package/src/util/gl/index.js +543 -0
- package/src/util/index.js +17 -0
- package/stand.html +975 -0
- package/test/util.Blend.spec.js +15 -0
- package/test/util.Color.spec.js +200 -0
- package/test/util.Filter.spec.js +12 -0
- 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,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,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,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
|
+
}
|