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