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,24 @@
|
|
1
|
+
import Color from '../../Color'
|
2
|
+
import { pixel } from '../functions'
|
3
|
+
|
4
|
+
|
5
|
+
export default function bitonal(darkColor, lightColor, threshold = 100) {
|
6
|
+
let $darkColor = Color.parse(darkColor);
|
7
|
+
let $lightColor = Color.parse(lightColor);
|
8
|
+
let $threshold = threshold
|
9
|
+
|
10
|
+
return pixel(`
|
11
|
+
const thresholdColor = ( $r + $g + $b ) <= $threshold ? $darkColor : $lightColor
|
12
|
+
|
13
|
+
$r = thresholdColor.r
|
14
|
+
$g = thresholdColor.g
|
15
|
+
$b = thresholdColor.b
|
16
|
+
`, {
|
17
|
+
$threshold
|
18
|
+
}, {
|
19
|
+
$darkColor,
|
20
|
+
$lightColor
|
21
|
+
})
|
22
|
+
}
|
23
|
+
|
24
|
+
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import {
|
2
|
+
parseParamNumber,
|
3
|
+
pixel,
|
4
|
+
colorMatrix
|
5
|
+
} from '../functions'
|
6
|
+
|
7
|
+
/*
|
8
|
+
* @param {Number} amount -100..100 , value < 0 is darken, value > 0 is brighten
|
9
|
+
*/
|
10
|
+
export default function brightness (amount = 1) {
|
11
|
+
amount = parseParamNumber(amount)
|
12
|
+
const $C = Math.floor(255 * (amount / 100));
|
13
|
+
|
14
|
+
return pixel(`
|
15
|
+
$r += $C
|
16
|
+
$g += $C
|
17
|
+
$b += $C
|
18
|
+
`,{ $C })
|
19
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import {
|
2
|
+
parseParamNumber,
|
3
|
+
pixel
|
4
|
+
} from '../functions'
|
5
|
+
|
6
|
+
export default function brownie () {
|
7
|
+
|
8
|
+
const $matrix = [
|
9
|
+
0.5997023498159715,0.34553243048391263,-0.2708298674538042,0,
|
10
|
+
-0.037703249837783157,0.8609577587992641,0.15059552388459913,0,
|
11
|
+
0.24113635128153335,-0.07441037908422492,0.44972182064877153,0,
|
12
|
+
0,0,0,1
|
13
|
+
]
|
14
|
+
|
15
|
+
return pixel(`
|
16
|
+
$r = $matrix[0] * $r + $matrix[1] * $g + $matrix[2] * $b + $matrix[3] * $a
|
17
|
+
$g = $matrix[4] * $r + $matrix[5] * $g + $matrix[6] * $b + $matrix[7] * $a
|
18
|
+
$b = $matrix[8] * $r + $matrix[9] * $g + $matrix[10] * $b + $matrix[11] * $a
|
19
|
+
$a = $matrix[12] * $r + $matrix[13] * $g + $matrix[14] * $b + $matrix[15] * $a
|
20
|
+
`, {
|
21
|
+
$matrix
|
22
|
+
})
|
23
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import {
|
2
|
+
parseParamNumber,
|
3
|
+
pixel
|
4
|
+
} from '../functions'
|
5
|
+
|
6
|
+
/**
|
7
|
+
*
|
8
|
+
* @param {Number} amount from 0 to 100
|
9
|
+
*/
|
10
|
+
export default function clip (amount = 0) {
|
11
|
+
amount = parseParamNumber(amount)
|
12
|
+
const $C = Math.abs(amount) * 2.55
|
13
|
+
|
14
|
+
return pixel(`
|
15
|
+
|
16
|
+
$r = ($r > 255 - $C) ? 255 : 0
|
17
|
+
$g = ($g > 255 - $C) ? 255 : 0
|
18
|
+
$b = ($b > 255 - $C) ? 255 : 0
|
19
|
+
|
20
|
+
`, { $C })
|
21
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import {
|
2
|
+
parseParamNumber,
|
3
|
+
pixel
|
4
|
+
} from '../functions'
|
5
|
+
/**
|
6
|
+
*
|
7
|
+
* @param {*} amount min = -128, max = 128
|
8
|
+
*/
|
9
|
+
export default function contrast(amount = 0) {
|
10
|
+
amount = parseParamNumber(amount)
|
11
|
+
const $C = Math.max((128 + amount) / 128, 0);
|
12
|
+
|
13
|
+
return pixel(`
|
14
|
+
$r *= $C
|
15
|
+
$g *= $C
|
16
|
+
$b *= $C
|
17
|
+
`, { $C })
|
18
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import {
|
2
|
+
parseParamNumber,
|
3
|
+
pixel
|
4
|
+
} from '../functions'
|
5
|
+
|
6
|
+
export default function gamma (amount = 1) {
|
7
|
+
const $C = parseParamNumber(amount)
|
8
|
+
return pixel(`
|
9
|
+
$r = Math.pow($r / 255, $C) * 255
|
10
|
+
$g = Math.pow($g / 255, $C) * 255
|
11
|
+
$b = Math.pow($b / 255, $C) * 255
|
12
|
+
`, { $C })
|
13
|
+
}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
import Color from '../../Color'
|
2
|
+
import {
|
3
|
+
// clamp,
|
4
|
+
pixel
|
5
|
+
} from '../functions'
|
6
|
+
/**
|
7
|
+
* F.gradient('red', 'blue', 'yellow', 'white', 10)
|
8
|
+
* F.gradient('red, blue, yellow, white, 10')
|
9
|
+
*/
|
10
|
+
export default function gradient () {
|
11
|
+
// 전체 매개변수 기준으로 파싱
|
12
|
+
// 색이 아닌 것 기준으로 scale 변수로 인식
|
13
|
+
|
14
|
+
let params = [...arguments];
|
15
|
+
|
16
|
+
if (params.length === 1 && typeof params[0] === 'string') {
|
17
|
+
params = Color.convertMatchesArray(params[0])
|
18
|
+
}
|
19
|
+
|
20
|
+
params = params.map(arg => {
|
21
|
+
const res = Color.matches(arg)
|
22
|
+
|
23
|
+
if (!res.length) {
|
24
|
+
return { type: 'scale', value : arg }
|
25
|
+
}
|
26
|
+
|
27
|
+
return { type: 'param', value : arg }
|
28
|
+
})
|
29
|
+
|
30
|
+
let $scale = params.filter(it => { return it.type == 'scale' })[0]
|
31
|
+
$scale = $scale ? +$scale.value : 256
|
32
|
+
|
33
|
+
params = params.filter(it => { return it.type == 'param' }).map( it => {
|
34
|
+
return it.value
|
35
|
+
}).join(',')
|
36
|
+
|
37
|
+
let $colors = Color.gradient(params, $scale).map(c => {
|
38
|
+
const { r, g, b, a } = Color.parse(c)
|
39
|
+
return {r, g, b, a}
|
40
|
+
})
|
41
|
+
|
42
|
+
return pixel(`
|
43
|
+
const colorIndex = clamp(Math.ceil($r * 0.2126 + $g * 0.7152 + $b * 0.0722))
|
44
|
+
const newColorIndex = clamp(Math.floor(colorIndex * ($scale / 256)))
|
45
|
+
const color = $colors[newColorIndex]
|
46
|
+
|
47
|
+
$r = color.r
|
48
|
+
$g = color.g
|
49
|
+
$b = color.b
|
50
|
+
$a = clamp(Math.floor(color.a * 256))
|
51
|
+
`, { }, { $colors, $scale })
|
52
|
+
}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import {
|
2
|
+
parseParamNumber,
|
3
|
+
pixel
|
4
|
+
} from '../functions'
|
5
|
+
|
6
|
+
export default function grayscale (amount) {
|
7
|
+
amount = parseParamNumber(amount)
|
8
|
+
let C = amount / 100;
|
9
|
+
|
10
|
+
if (C > 1) C = 1;
|
11
|
+
|
12
|
+
const $matrix = [
|
13
|
+
(0.2126 + 0.7874 * (1 - C)), (0.7152 - 0.7152 * (1 - C)), (0.0722 - 0.0722 * (1 - C)), 0,
|
14
|
+
(0.2126 - 0.2126 * (1 - C)), (0.7152 + 0.2848 * (1 - C)), (0.0722 - 0.0722 * (1 - C)), 0,
|
15
|
+
(0.2126 - 0.2126 * (1 - C)), (0.7152 - 0.7152 * (1 - C)), (0.0722 + 0.9278 * (1 - C)), 0,
|
16
|
+
0, 0, 0, 1
|
17
|
+
]
|
18
|
+
|
19
|
+
return pixel(/*javascript*/`
|
20
|
+
$r = $matrix[0] * $r + $matrix[1] * $g + $matrix[2] * $b + $matrix[3] * $a
|
21
|
+
$g = $matrix[4] * $r + $matrix[5] * $g + $matrix[6] * $b + $matrix[7] * $a
|
22
|
+
$b = $matrix[8] * $r + $matrix[9] * $g + $matrix[10] * $b + $matrix[11] * $a
|
23
|
+
$a = $matrix[12] * $r + $matrix[13] * $g + $matrix[14] * $b + $matrix[15] * $a
|
24
|
+
`, {
|
25
|
+
$matrix
|
26
|
+
});
|
27
|
+
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import {
|
2
|
+
parseParamNumber,
|
3
|
+
pixel
|
4
|
+
} from '../functions'
|
5
|
+
|
6
|
+
/*
|
7
|
+
* @param {Number} amount 0..360
|
8
|
+
*/
|
9
|
+
export default function hue (amount = 360) {
|
10
|
+
const $C = parseParamNumber(amount)
|
11
|
+
return pixel(`
|
12
|
+
var hsv = Color.RGBtoHSV($r, $g, $b);
|
13
|
+
|
14
|
+
// 0 ~ 360
|
15
|
+
var h = hsv.h;
|
16
|
+
h += Math.abs($C)
|
17
|
+
h = h % 360
|
18
|
+
hsv.h = h
|
19
|
+
|
20
|
+
var rgb = Color.HSVtoRGB(hsv);
|
21
|
+
|
22
|
+
$r = rgb.r
|
23
|
+
$g = rgb.g
|
24
|
+
$b = rgb.b
|
25
|
+
`, {
|
26
|
+
$C
|
27
|
+
})
|
28
|
+
}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
|
2
|
+
import bitonal from './bitonal'
|
3
|
+
import brightness from './brightness'
|
4
|
+
import brownie from './brownie'
|
5
|
+
import clip from './clip'
|
6
|
+
import contrast from './contrast'
|
7
|
+
import gamma from './gamma'
|
8
|
+
import gradient from './gradient'
|
9
|
+
import grayscale from './grayscale'
|
10
|
+
import hue from './hue'
|
11
|
+
import invert from './invert'
|
12
|
+
import kodachrome from './kodachrome'
|
13
|
+
import matrix from './matrix'
|
14
|
+
import noise from './noise'
|
15
|
+
import opacity from './opacity'
|
16
|
+
import polaroid from './polaroid'
|
17
|
+
import saturation from './saturation'
|
18
|
+
import sepia from './sepia'
|
19
|
+
import shade from './shade'
|
20
|
+
import shift from './shift'
|
21
|
+
import solarize from './solarize'
|
22
|
+
import technicolor from './technicolor'
|
23
|
+
import threshold from './threshold'
|
24
|
+
import thresholdColor from './threshold-color'
|
25
|
+
import tint from './tint'
|
26
|
+
|
27
|
+
export default {
|
28
|
+
bitonal,
|
29
|
+
brightness,
|
30
|
+
brownie,
|
31
|
+
clip,
|
32
|
+
contrast,
|
33
|
+
gamma,
|
34
|
+
gradient,
|
35
|
+
grayscale,
|
36
|
+
hue,
|
37
|
+
invert,
|
38
|
+
kodachrome,
|
39
|
+
matrix,
|
40
|
+
noise,
|
41
|
+
opacity,
|
42
|
+
polaroid,
|
43
|
+
saturation,
|
44
|
+
sepia,
|
45
|
+
shade,
|
46
|
+
shift,
|
47
|
+
solarize,
|
48
|
+
technicolor,
|
49
|
+
threshold,
|
50
|
+
'threshold-color': thresholdColor,
|
51
|
+
tint
|
52
|
+
}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import {
|
2
|
+
parseParamNumber,
|
3
|
+
pixel
|
4
|
+
} from '../functions'
|
5
|
+
export default function invert (amount = 100) {
|
6
|
+
amount = parseParamNumber(amount)
|
7
|
+
const $C = amount / 100;
|
8
|
+
|
9
|
+
return pixel(`
|
10
|
+
$r = (255 - $r) * $C
|
11
|
+
$g = (255 - $g) * $C
|
12
|
+
$b = (255 - $b) * $C
|
13
|
+
`, {
|
14
|
+
$C
|
15
|
+
})
|
16
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import {
|
2
|
+
parseParamNumber,
|
3
|
+
pixel
|
4
|
+
} from '../functions'
|
5
|
+
|
6
|
+
export default function kodachrome () {
|
7
|
+
|
8
|
+
const $matrix = [
|
9
|
+
1.1285582396593525,-0.3967382283601348,-0.03992559172921793,0,
|
10
|
+
-0.16404339962244616,1.0835251566291304,-0.05498805115633132,0,
|
11
|
+
-0.16786010706155763,-0.5603416277695248,1.6014850761964943,0,
|
12
|
+
0,0,0,1
|
13
|
+
]
|
14
|
+
|
15
|
+
return pixel(`
|
16
|
+
$r = $matrix[0] * $r + $matrix[1] * $g + $matrix[2] * $b + $matrix[3] * $a
|
17
|
+
$g = $matrix[4] * $r + $matrix[5] * $g + $matrix[6] * $b + $matrix[7] * $a
|
18
|
+
$b = $matrix[8] * $r + $matrix[9] * $g + $matrix[10] * $b + $matrix[11] * $a
|
19
|
+
$a = $matrix[12] * $r + $matrix[13] * $g + $matrix[14] * $b + $matrix[15] * $a
|
20
|
+
`, {
|
21
|
+
$matrix
|
22
|
+
})
|
23
|
+
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import {
|
2
|
+
parseParamNumber,
|
3
|
+
pixel
|
4
|
+
} from '../functions'
|
5
|
+
|
6
|
+
export default function matrix (
|
7
|
+
$a = 0, $b = 0, $c = 0, $d = 0,
|
8
|
+
$e = 0, $f = 0, $g = 0, $h = 0,
|
9
|
+
$i = 0, $j = 0, $k = 0, $l = 0,
|
10
|
+
$m = 0, $n = 0, $o = 0, $p = 0
|
11
|
+
) {
|
12
|
+
|
13
|
+
const $matrix = [
|
14
|
+
$a, $b, $c, $d,
|
15
|
+
$e, $f, $g, $h,
|
16
|
+
$i, $j, $k, $l,
|
17
|
+
$m, $n, $o, $p
|
18
|
+
]
|
19
|
+
|
20
|
+
return pixel(`
|
21
|
+
$r = $matrix[0] * $r + $matrix[1] * $g + $matrix[2] * $b + $matrix[3] * $a
|
22
|
+
$g = $matrix[4] * $r + $matrix[5] * $g + $matrix[6] * $b + $matrix[7] * $a
|
23
|
+
$b = $matrix[8] * $r + $matrix[9] * $g + $matrix[10] * $b + $matrix[11] * $a
|
24
|
+
$a = $matrix[12] * $r + $matrix[13] * $g + $matrix[14] * $b + $matrix[15] * $a
|
25
|
+
`, {
|
26
|
+
$matrix
|
27
|
+
})
|
28
|
+
}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import {
|
2
|
+
parseParamNumber,
|
3
|
+
pixel
|
4
|
+
} from '../functions'
|
5
|
+
|
6
|
+
/**
|
7
|
+
*
|
8
|
+
* @param {Number} amount 1..100
|
9
|
+
*/
|
10
|
+
export default function noise (amount = 1) {
|
11
|
+
const $C = parseParamNumber(amount)
|
12
|
+
return pixel(`
|
13
|
+
const C = Math.abs($C) * 5
|
14
|
+
const min = -C
|
15
|
+
const max = C
|
16
|
+
const noiseValue = Math.round(min + (Math.random() * (max - min)))
|
17
|
+
|
18
|
+
$r += noiseValue
|
19
|
+
$g += noiseValue
|
20
|
+
$b += noiseValue
|
21
|
+
`, {
|
22
|
+
$C
|
23
|
+
})
|
24
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import {
|
2
|
+
parseParamNumber,
|
3
|
+
pixel
|
4
|
+
} from '../functions'
|
5
|
+
|
6
|
+
export default function polaroid () {
|
7
|
+
|
8
|
+
const $matrix = [
|
9
|
+
1.438,-0.062,-0.062,0,
|
10
|
+
-0.122,1.378,-0.122,0,
|
11
|
+
-0.016,-0.016,1.483,0,
|
12
|
+
0,0,0,1
|
13
|
+
]
|
14
|
+
|
15
|
+
return pixel(`
|
16
|
+
$r = $matrix[0] * $r + $matrix[1] * $g + $matrix[2] * $b + $matrix[3] * $a
|
17
|
+
$g = $matrix[4] * $r + $matrix[5] * $g + $matrix[6] * $b + $matrix[7] * $a
|
18
|
+
$b = $matrix[8] * $r + $matrix[9] * $g + $matrix[10] * $b + $matrix[11] * $a
|
19
|
+
$a = $matrix[12] * $r + $matrix[13] * $g + $matrix[14] * $b + $matrix[15] * $a
|
20
|
+
`, {
|
21
|
+
$matrix
|
22
|
+
})
|
23
|
+
}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
import {
|
2
|
+
parseParamNumber,
|
3
|
+
pixel
|
4
|
+
} from '../functions'
|
5
|
+
|
6
|
+
/*
|
7
|
+
* @param {Number} amount -100..100
|
8
|
+
*/
|
9
|
+
export default function saturation (amount = 100) {
|
10
|
+
amount = parseParamNumber(amount)
|
11
|
+
const C = amount / 100
|
12
|
+
const L = 1 - Math.abs(C);
|
13
|
+
|
14
|
+
const $matrix = [
|
15
|
+
L, 0, 0, 0,
|
16
|
+
0, L, 0, 0,
|
17
|
+
0, 0, L, 0,
|
18
|
+
0, 0, 0, L
|
19
|
+
]
|
20
|
+
|
21
|
+
return pixel(`
|
22
|
+
$r = $matrix[0] * $r + $matrix[1] * $g + $matrix[2] * $b + $matrix[3] * $a
|
23
|
+
$g = $matrix[4] * $r + $matrix[5] * $g + $matrix[6] * $b + $matrix[7] * $a
|
24
|
+
$b = $matrix[8] * $r + $matrix[9] * $g + $matrix[10] * $b + $matrix[11] * $a
|
25
|
+
$a = $matrix[12] * $r + $matrix[13] * $g + $matrix[14] * $b + $matrix[15] * $a
|
26
|
+
`, {
|
27
|
+
$matrix
|
28
|
+
})
|
29
|
+
|
30
|
+
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import {
|
2
|
+
parseParamNumber,
|
3
|
+
pixel
|
4
|
+
} from '../functions'
|
5
|
+
|
6
|
+
/*
|
7
|
+
* @param {Number} amount 0..1
|
8
|
+
*/
|
9
|
+
export default function sepia (amount = 1) {
|
10
|
+
let C = parseParamNumber(amount);
|
11
|
+
if (C > 1) C = 1;
|
12
|
+
|
13
|
+
const $matrix = [
|
14
|
+
(0.393 + 0.607 * (1 - C)), (0.769 - 0.769 * (1 - C)), (0.189 - 0.189 * (1 - C)), 0,
|
15
|
+
(0.349 - 0.349 * (1 - C)), (0.686 + 0.314 * (1 - C)), (0.168 - 0.168 * (1 - C)), 0,
|
16
|
+
(0.272 - 0.272 * (1 - C)), (0.534 - 0.534 * (1 - C)), (0.131 + 0.869 * (1 - C)), 0,
|
17
|
+
0, 0, 0, 1
|
18
|
+
]
|
19
|
+
|
20
|
+
return pixel(`
|
21
|
+
$r = $matrix[0] * $r + $matrix[1] * $g + $matrix[2] * $b + $matrix[3] * $a
|
22
|
+
$g = $matrix[4] * $r + $matrix[5] * $g + $matrix[6] * $b + $matrix[7] * $a
|
23
|
+
$b = $matrix[8] * $r + $matrix[9] * $g + $matrix[10] * $b + $matrix[11] * $a
|
24
|
+
$a = $matrix[12] * $r + $matrix[13] * $g + $matrix[14] * $b + $matrix[15] * $a
|
25
|
+
`, {
|
26
|
+
$matrix
|
27
|
+
})
|
28
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import {
|
2
|
+
parseParamNumber,
|
3
|
+
pixel
|
4
|
+
} from '../functions'
|
5
|
+
|
6
|
+
export default function shade(redValue = 1, greenValue = 1, blueValue = 1) {
|
7
|
+
const $redValue = parseParamNumber(redValue)
|
8
|
+
const $greenValue = parseParamNumber(greenValue)
|
9
|
+
const $blueValue = parseParamNumber(blueValue)
|
10
|
+
|
11
|
+
return pixel(`
|
12
|
+
$r *= $redValue
|
13
|
+
$g *= $greenValue
|
14
|
+
$b *= $blueValue
|
15
|
+
`, {
|
16
|
+
$redValue,
|
17
|
+
$greenValue,
|
18
|
+
$blueValue
|
19
|
+
})
|
20
|
+
|
21
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import {
|
2
|
+
parseParamNumber,
|
3
|
+
pixel
|
4
|
+
} from '../functions'
|
5
|
+
|
6
|
+
export default function shift () {
|
7
|
+
|
8
|
+
const $matrix = [
|
9
|
+
1.438,-0.062,-0.062,0,
|
10
|
+
-0.122,1.378,-0.122,0,
|
11
|
+
-0.016,-0.016,1.483,0,
|
12
|
+
0,0,0,1
|
13
|
+
]
|
14
|
+
|
15
|
+
return pixel(`
|
16
|
+
$r = $matrix[0] * $r + $matrix[1] * $g + $matrix[2] * $b + $matrix[3] * $a
|
17
|
+
$g = $matrix[4] * $r + $matrix[5] * $g + $matrix[6] * $b + $matrix[7] * $a
|
18
|
+
$b = $matrix[8] * $r + $matrix[9] * $g + $matrix[10] * $b + $matrix[11] * $a
|
19
|
+
$a = $matrix[12] * $r + $matrix[13] * $g + $matrix[14] * $b + $matrix[15] * $a
|
20
|
+
`, {
|
21
|
+
$matrix
|
22
|
+
})
|
23
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import {
|
2
|
+
parseParamNumber,
|
3
|
+
pixel
|
4
|
+
} from '../functions'
|
5
|
+
/**
|
6
|
+
* change the relative darkness of (a part of an image) by overexposure to light.
|
7
|
+
* @param {*} r
|
8
|
+
* @param {*} g
|
9
|
+
* @param {*} b
|
10
|
+
*/
|
11
|
+
export default function solarize (redValue, greenValue, blueValue) {
|
12
|
+
const $redValue = parseParamNumber(redValue)
|
13
|
+
const $greenValue = parseParamNumber(greenValue)
|
14
|
+
const $blueValue = parseParamNumber(blueValue)
|
15
|
+
return pixel(`
|
16
|
+
$r = ($r < $redValue) ? 255 - $r: $r
|
17
|
+
$g = ($g < $greenValue) ? 255 - $g: $g
|
18
|
+
$b = ($b < $blueValue) ? 255 - $b: $b
|
19
|
+
`, {
|
20
|
+
$redValue, $greenValue, $blueValue
|
21
|
+
})
|
22
|
+
|
23
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import {
|
2
|
+
parseParamNumber,
|
3
|
+
pixel
|
4
|
+
} from '../functions'
|
5
|
+
|
6
|
+
export default function technicolor () {
|
7
|
+
|
8
|
+
const $matrix = [
|
9
|
+
1.9125277891456083,-0.8545344976951645,-0.09155508482755585,0,
|
10
|
+
-0.3087833385928097,1.7658908555458428,-0.10601743074722245,0,
|
11
|
+
-0.231103377548616,-0.7501899197440212,1.847597816108189,0,
|
12
|
+
0,0,0,1
|
13
|
+
]
|
14
|
+
|
15
|
+
return pixel(`
|
16
|
+
$r = $matrix[0] * $r + $matrix[1] * $g + $matrix[2] * $b + $matrix[3] * $a
|
17
|
+
$g = $matrix[4] * $r + $matrix[5] * $g + $matrix[6] * $b + $matrix[7] * $a
|
18
|
+
$b = $matrix[8] * $r + $matrix[9] * $g + $matrix[10] * $b + $matrix[11] * $a
|
19
|
+
$a = $matrix[12] * $r + $matrix[13] * $g + $matrix[14] * $b + $matrix[15] * $a
|
20
|
+
`, {
|
21
|
+
$matrix
|
22
|
+
})
|
23
|
+
}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import {
|
2
|
+
parseParamNumber,
|
3
|
+
pixel
|
4
|
+
} from '../functions'
|
5
|
+
|
6
|
+
|
7
|
+
export default function thresholdColor (scale = 200, amount = 100, hasColor = true) {
|
8
|
+
const $scale = parseParamNumber(scale)
|
9
|
+
amount = parseParamNumber(amount)
|
10
|
+
const $C = amount / 100;
|
11
|
+
const $hasColor = hasColor
|
12
|
+
|
13
|
+
return pixel(`
|
14
|
+
// refer to Color.brightness
|
15
|
+
const v = ($C * Math.ceil($r * 0.2126 + $g * 0.7152 + $b * 0.0722) ) >= $scale ? 255 : 0;
|
16
|
+
|
17
|
+
if ($hasColor) {
|
18
|
+
|
19
|
+
if (v == 0) {
|
20
|
+
$r = 0
|
21
|
+
$g = 0
|
22
|
+
$b = 0
|
23
|
+
}
|
24
|
+
|
25
|
+
} else {
|
26
|
+
const value = Math.round(v)
|
27
|
+
$r = value
|
28
|
+
$g = value
|
29
|
+
$b = value
|
30
|
+
}
|
31
|
+
|
32
|
+
`, {
|
33
|
+
$C, $scale, $hasColor
|
34
|
+
})
|
35
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import { pixel, parseParamNumber } from "../functions";
|
2
|
+
|
3
|
+
|
4
|
+
export default function (redTint = 1, greenTint = 1, blueTint = 1) {
|
5
|
+
const $redTint = parseParamNumber(redTint)
|
6
|
+
const $greenTint = parseParamNumber(greenTint)
|
7
|
+
const $blueTint = parseParamNumber(blueTint)
|
8
|
+
return pixel(`
|
9
|
+
|
10
|
+
$r += (255 - $r) * $redTint
|
11
|
+
$g += (255 - $g) * $greenTint
|
12
|
+
$b += (255 - $b) * $blueTint
|
13
|
+
|
14
|
+
`, {
|
15
|
+
$redTint,
|
16
|
+
$greenTint,
|
17
|
+
$blueTint
|
18
|
+
})
|
19
|
+
|
20
|
+
}
|