Add a way to construct HSV colors with hsv and hsva. Also add a now function to Date.

This commit is contained in:
evancz 2012-11-22 20:32:32 -08:00
parent b9ae74b9e5
commit d4012e466a
2 changed files with 52 additions and 33 deletions

View file

@ -1,6 +1,13 @@
Elm.Date = function() {
function dateNow() { return new window.Date; }
function now(t) {
var clock = Elm.Signal.constant(dateNow());
function tellTime() { Dispatcher.notify(clock.id, dateNow()); }
setInterval(tellTime, t);
return clock;
}
function readDate(str) {
var d = new window.Date(Elm.JavaScript.castStringToJSString(str));
if (isNaN(d.getTime())) return ["Nothing"];
@ -12,6 +19,7 @@ Elm.Date = function() {
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
return {
now : now,
read : readDate,
year : function(d) { return d.getFullYear(); },
month : function(d) { return [monthTable[d.getMonth()]]; },

View file

@ -1,40 +1,51 @@
Elm.Color = function() {
function Color_0(a1) {
return function(a2) {
return function(a3) {
return function(a4) {
return["Color", a1, a2, a3, a4]
}
function Color_0(a1) {
return function(a2) {
return function(a3) {
return function(a4) {
return["Color", a1, a2, a3, a4]
}
}
}
var rgba_1 = Color_0;
var red_3 = ["Color",255,0,0,1];
var green_4 = ["Color",0,255,0,1];
var blue_5 = ["Color",0,0,255,1];
var yellow_6 = ["Color",255,255,0,1];
var cyan_7 = ["Color",0,255,255,1];
var magenta_8 = ["Color",255,0,255,1];
var black_9 = ["Color",0,0,0,1];
var white_10 = ["Color",255,255,255,1];
var gray_11 = ["Color",128,128,128,1];
var grey_12 = ["Color",128,128,128,1];
function rgb_2(r_13) {
return function(g_14) {
return function(b_15) {
return ["Color",r_13,g_14,b_15,1]
}
}
}
function extract(c) {
if (c[4] === 1) { return 'rgb(' + c[1] + ',' + c[2] + ',' + c[3] + ')'; }
return 'rgba(' + c[1] + ',' + c[2] + ',' + c[3] + ',' + c[4] + ')';
}
function complement(rgb) {
var hsv = toHSV(rgb);
hsv.hue = (hsv.hue + 180) % 360;
return toRGB(hsv);
}
var rgba_1 = Color_0;
var red_3 = ["Color",255,0,0,1];
var green_4 = ["Color",0,255,0,1];
var blue_5 = ["Color",0,0,255,1];
var yellow_6 = ["Color",255,255,0,1];
var cyan_7 = ["Color",0,255,255,1];
var magenta_8 = ["Color",255,0,255,1];
var black_9 = ["Color",0,0,0,1];
var white_10 = ["Color",255,255,255,1];
var gray_11 = ["Color",128,128,128,1];
var grey_12 = ["Color",128,128,128,1];
function rgb_2(r_13) {
return function(g_14) {
return function(b_15) {
return ["Color",r_13,g_14,b_15,1]
}
}
}
function extract(c) {
if (c[4] === 1) { return 'rgb(' + c[1] + ',' + c[2] + ',' + c[3] + ')'; }
return 'rgba(' + c[1] + ',' + c[2] + ',' + c[3] + ',' + c[4] + ')';
}
function complement(rgb) {
var hsv = toHSV(rgb);
hsv.hue = (hsv.hue + 180) % 360;
return toRGB(hsv);
}
function hsva(h) { return function(s) { return function(v) { return function(a) {
var clr = toRGB({hue:h, saturation:s, value:v});
clr[4] = a;
return clr;
}; }; };
}
function hsv(h) { return function(s) { return function(v) {
return toRGB({hue:h, saturation:s, value:v}); }; }; }
function toHSV(rgb) {
var hsv = {};
@ -71,5 +82,5 @@ function toRGB(hsv) {
var m = hsv.value - c;
return ["Color", norm(r+m), norm(g+m), norm(b+m), 1 ];
}
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}
return{rgba:rgba_1, rgb:rgb_2, hsva:hsva, hsv:hsv, 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}
}();