on 4e97c4f help sign in
elk/core-js/Graphics/Color.js
75 lines 2.4 kB history raw
1Elm.Color = function() {
2 function Color_0(a1) {
3 return function(a2) {
4 return function(a3) {
5 return function(a4) {
6 return["Color", a1, a2, a3, a4]
7 }
8 }
9 }
10 }
11 var rgba_1 = Color_0;
12 var red_3 = ["Color",255,0,0,1];
13 var green_4 = ["Color",0,255,0,1];
14 var blue_5 = ["Color",0,0,255,1];
15 var yellow_6 = ["Color",255,255,0,1];
16 var cyan_7 = ["Color",0,255,255,1];
17 var magenta_8 = ["Color",255,0,255,1];
18 var black_9 = ["Color",0,0,0,1];
19 var white_10 = ["Color",255,255,255,1];
20 var gray_11 = ["Color",128,128,128,1];
21 var grey_12 = ["Color",128,128,128,1];
22 function rgb_2(r_13) {
23 return function(g_14) {
24 return function(b_15) {
25 return ["Color",r_13,g_14,b_15,1]
26 }
27 }
28 }
29 function extract(c) {
30 if (c[4] === 1) { return 'rgb(' + c[1] + ',' + c[2] + ',' + c[3] + ')'; }
31 return 'rgba(' + c[1] + ',' + c[2] + ',' + c[3] + ',' + c[4] + ')';
32 }
33function complement(rgb) {
34 var hsv = toHSV(rgb);
35 hsv.hue = (hsv.hue + 180) % 360;
36 return toRGB(hsv);
39function toHSV(rgb) {
40 var hsv = {};
41 var r = rgb[1] / 255.0, g = rgb[2] / 255.0, b = rgb[3] / 255.0;
42 var M = Math.max(r,g,b);
43 var m = Math.min(r,g,b);
44 var c = M - m;
46 var h = 0;
47 if (c === 0) { h = 0; }
48 else if (M === r) { h = ((g - b) / c) % 6; }
49 else if (M === g) { h = ((b - r) / c) + 2; }
50 else if (M === b) { h = ((r - g) / c) + 4; }
51 h *= 60;
53 return { value : M, hue : h, saturation : (M === 0 ? 0 : c / M) };
56function between(lo,hi,x) { return lo <= x && x < hi; }
57function norm(n) { return Math.round(n*255); }
59function toRGB(hsv) {
60 var c = hsv.value * hsv.saturation;
61 var hue = hsv.hue / 60;
62 var x = c * (1 - Math.abs((hue % 2) - 1));
63 var r = 0, g = 0, b = 0;
64 if (between(0,1,hue)) { r = c; g = x; b = 0; }
65 else if (between(1,2,hue)) { r = x; g = c; b = 0; }
66 else if (between(2,3,hue)) { r = 0; g = c; b = x; }
67 else if (between(3,4,hue)) { r = 0; g = x; b = c; }
68 else if (between(4,5,hue)) { r = x; g = 0; b = c; }
69 else if (between(5,6,hue)) { r = c; g = 0; b = x; }
71 var m = hsv.value - c;
72 return ["Color", norm(r+m), norm(g+m), norm(b+m), 1 ];
74 return{rgba:rgba_1, rgb:rgb_2, red:red_3, green:green_4, blue:blue_5, yellow:yellow_6, cyan:cyan_7, magenta:magenta_8, black:black_9, white:white_10, gray:gray_11, grey:grey_12,complement:complement,extract:extract}
75}();