Use new function call format in more places.
This commit is contained in:
parent
3926066a64
commit
58275b0002
6 changed files with 73 additions and 80 deletions
|
@ -15,31 +15,29 @@ function complement(rgb) {
|
||||||
return toRGB(hsv);
|
return toRGB(hsv);
|
||||||
}
|
}
|
||||||
|
|
||||||
function hsva(h) { return function(s) { return function(v) { return function(a) {
|
function hsva(h,s,v,a) {
|
||||||
var clr = toRGB({hue:h, saturation:s, value:v});
|
var clr = toRGB({hue:h, saturation:s, value:v});
|
||||||
clr._3 = a;
|
clr._3 = a;
|
||||||
return clr;
|
return clr;
|
||||||
}; }; };
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function hsv(h) { return function(s) { return function(v) {
|
function hsv(h,s,v) { return toRGB({hue:h, saturation:s, value:v}); }
|
||||||
return toRGB({hue:h, saturation:s, value:v}); }; }; }
|
|
||||||
|
|
||||||
function toHSV(rgb) {
|
function toHSV(rgb) {
|
||||||
var hsv = {};
|
var hsv = {};
|
||||||
var r = rgb._0 / 255.0, g = rgb._1 / 255.0, b = rgb._2 / 255.0;
|
var r = rgb._0 / 255.0, g = rgb._1 / 255.0, b = rgb._2 / 255.0;
|
||||||
var M = Math.max(r,g,b);
|
var M = Math.max(r,g,b);
|
||||||
var m = Math.min(r,g,b);
|
var m = Math.min(r,g,b);
|
||||||
var c = M - m;
|
var c = M - m;
|
||||||
|
|
||||||
var h = 0;
|
var h = 0;
|
||||||
if (c === 0) { h = 0; }
|
if (c === 0) { h = 0; }
|
||||||
else if (M === r) { h = ((g - b) / c) % 6; }
|
else if (M === r) { h = ((g - b) / c) % 6; }
|
||||||
else if (M === g) { h = ((b - r) / c) + 2; }
|
else if (M === g) { h = ((b - r) / c) + 2; }
|
||||||
else if (M === b) { h = ((r - g) / c) + 4; }
|
else if (M === b) { h = ((r - g) / c) + 4; }
|
||||||
h *= 60;
|
h *= 60;
|
||||||
|
|
||||||
return { value : M, hue : h, saturation : (M === 0 ? 0 : c / M) };
|
return { value : M, hue : h, saturation : (M === 0 ? 0 : c / M) };
|
||||||
}
|
}
|
||||||
|
|
||||||
function between(lo,hi,x) { return lo <= x && x < hi; }
|
function between(lo,hi,x) { return lo <= x && x < hi; }
|
||||||
|
@ -61,8 +59,11 @@ function toRGB(hsv) {
|
||||||
return { ctor:"Color", _0:norm(r+m), _1:norm(g+m), _2:norm(b+m), _3:1 };
|
return { ctor:"Color", _0:norm(r+m), _1:norm(g+m), _2:norm(b+m), _3:1 };
|
||||||
}
|
}
|
||||||
|
|
||||||
Elm.Native.Color = {hsva:hsva,
|
Elm.Native.Color = {
|
||||||
hsv:hsv,
|
hsva:F4(hsva),
|
||||||
complement:complement,
|
hsv:F3(hsv),
|
||||||
extract:extract};
|
complement:complement,
|
||||||
|
extract:extract
|
||||||
|
};
|
||||||
|
|
||||||
}());
|
}());
|
|
@ -14,8 +14,7 @@ import List
|
||||||
return signal;
|
return signal;
|
||||||
}
|
}
|
||||||
|
|
||||||
function dir(up) { return function(down) {
|
function dir(up, down, left, right) {
|
||||||
return function(left) { return function(right) {
|
|
||||||
function f(ks) {
|
function f(ks) {
|
||||||
var x = 0, y = 0;
|
var x = 0, y = 0;
|
||||||
while (ks.ctor == "Cons") {
|
while (ks.ctor == "Cons") {
|
||||||
|
@ -30,11 +29,10 @@ import List
|
||||||
return { _:{}, x:x, y:y };
|
return { _:{}, x:x, y:y };
|
||||||
}
|
}
|
||||||
return keySignal(f);
|
return keySignal(f);
|
||||||
}}}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function is(key) { return keySignal(Elm.List.member(key)); }
|
function is(key) { return keySignal(Elm.List.member(key)); }
|
||||||
|
|
||||||
Elm.Native.Keyboard = { isDown:is, dir:dir };
|
Elm.Native.Keyboard = { isDown:is, dir:F4(dir) };
|
||||||
|
|
||||||
}());
|
}());
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
/**
|
/**
|
||||||
module Native.List where
|
module Native.List where
|
||||||
|
|
||||||
import Native.Function
|
import Native.Function
|
||||||
**/
|
**/
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
@ -34,7 +34,7 @@ import Native.Function
|
||||||
function range(lo,hi) {
|
function range(lo,hi) {
|
||||||
var lst = Nil;
|
var lst = Nil;
|
||||||
if (lo <= hi) {
|
if (lo <= hi) {
|
||||||
do { lst = Cons(hi,lst) } while (hi-->lo);
|
do { lst = Cons(hi,lst) } while (hi-->lo);
|
||||||
}
|
}
|
||||||
return lst
|
return lst
|
||||||
}
|
}
|
||||||
|
@ -119,7 +119,7 @@ import Native.Function
|
||||||
}
|
}
|
||||||
|
|
||||||
function scanl1(f, xs) {
|
function scanl1(f, xs) {
|
||||||
xs.ctor === "Nil" ? throwError('scanl1') : return scanl(f, xs._0, xs._1);
|
return xs.ctor === "Nil" ? throwError('scanl1') : scanl(f, xs._0, xs._1);
|
||||||
}
|
}
|
||||||
|
|
||||||
function filter(pred, xs) {
|
function filter(pred, xs) {
|
||||||
|
|
|
@ -30,7 +30,7 @@ import JSON
|
||||||
}
|
}
|
||||||
|
|
||||||
var Tuple0 = { ctor: "Tuple0" }
|
var Tuple0 = { ctor: "Tuple0" }
|
||||||
function Tuple2(x,y) { return { ctor = "Tuple2", _0:x, _1:y }; }
|
function Tuple2(x,y) { return { ctor = "Tuple2", _0:x, _1:y } }
|
||||||
|
|
||||||
function makeSpaces(s) {
|
function makeSpaces(s) {
|
||||||
if (s.length == 0) { return s; }
|
if (s.length == 0) { return s; }
|
||||||
|
|
|
@ -4,19 +4,17 @@ import Signal
|
||||||
*/
|
*/
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
function inRange(min) { return function(max) {
|
function inRange(min, max) {
|
||||||
return Elm.Signal.constant(Math.floor(Math.random() * (max-min+1)) + min);
|
return Elm.Signal.constant(Math.floor(Math.random() * (max-min+1)) + min);
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function randomize(min) { return function(max) { return function(signal) {
|
function randomize(min, max, signal) {
|
||||||
function f(x) { return Math.floor(Math.random() * (max-min+1)) + min; }
|
function f(x) { return Math.floor(Math.random() * (max-min+1)) + min; }
|
||||||
return Elm.Signal.lift(f)(signal);
|
return Elm.Signal.lift(f)(signal);
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Elm.Native.Random = { inRange:inRange, randomize:randomize };
|
Elm.Native.Random = { inRange:F2(inRange), randomize: F3(randomize) };
|
||||||
|
|
||||||
}());
|
}());
|
|
@ -8,45 +8,41 @@ import Maybe
|
||||||
|
|
||||||
function timeNow() { return (new window.Date).getTime(); }
|
function timeNow() { return (new window.Date).getTime(); }
|
||||||
|
|
||||||
function fpsWhen(desiredFPS) { return function (isOn) {
|
function fpsWhen(desiredFPS, isOn) {
|
||||||
var msPerFrame = 1000 / desiredFPS;
|
var msPerFrame = 1000 / desiredFPS;
|
||||||
var prev = timeNow(), curr = prev, diff = 0, wasOn = true;
|
var prev = timeNow(), curr = prev, diff = 0, wasOn = true;
|
||||||
var ticker = Elm.Signal.constant(diff);
|
var ticker = Elm.Signal.constant(diff);
|
||||||
function tick(zero) { return function() {
|
function tick(zero) { return function() {
|
||||||
curr = timeNow();
|
curr = timeNow();
|
||||||
diff = zero ? 0 : curr - prev;
|
diff = zero ? 0 : curr - prev;
|
||||||
prev = curr;
|
prev = curr;
|
||||||
Dispatcher.notify(ticker.id, diff);
|
Dispatcher.notify(ticker.id, diff);
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
var timeoutID = 0;
|
||||||
|
function f(isOn, t) {
|
||||||
|
if (isOn) {
|
||||||
|
timeoutID = setTimeout(tick(!wasOn && isOn), msPerFrame);
|
||||||
|
} else if (wasOn) {
|
||||||
|
clearTimeout(timeoutID);
|
||||||
}
|
}
|
||||||
var timeoutID = 0;
|
wasOn = isOn;
|
||||||
function f(isOn) { return function(t) {
|
return t;
|
||||||
if (isOn) {
|
}
|
||||||
timeoutID = setTimeout(tick(!wasOn && isOn), msPerFrame);
|
return Elm.Signal.lift2(F2(f))(isOn)(ticker);
|
||||||
} else if (wasOn) {
|
|
||||||
clearTimeout(timeoutID);
|
|
||||||
}
|
|
||||||
wasOn = isOn;
|
|
||||||
return t;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return Elm.Signal.lift2(f)(isOn)(ticker);
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function everyWhen(isOn) { return function(t) {
|
function everyWhen(t, isOn) {
|
||||||
var clock = Elm.Signal.constant(timeNow());
|
var clock = Elm.Signal.constant(timeNow());
|
||||||
function tellTime() { Dispatcher.notify(clock.id, timeNow()); }
|
function tellTime() { Dispatcher.notify(clock.id, timeNow()); }
|
||||||
setInterval(tellTime, t);
|
setInterval(tellTime, t);
|
||||||
return clock;
|
return clock;
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function since(t) { return function(s) {
|
function since(t, s) {
|
||||||
function cmp(a) { return function(b) { return !Value.eq(a,b); }; }
|
function cmp(a,b) { return !Value.eq(a,b) }
|
||||||
var dcount = Elm.Signal.count(Elm.Signal.delay(t)(s));
|
var dcount = Elm.Signal.count(Elm.Signal.delay(t)(s));
|
||||||
return Elm.Signal.lift2(cmp)(Elm.Signal.count(s))(dcount);
|
return Elm.Signal.lift2(F2(cmp))(Elm.Signal.count(s))(dcount);
|
||||||
};
|
|
||||||
}
|
}
|
||||||
function after(t) {
|
function after(t) {
|
||||||
t *= 1000;
|
t *= 1000;
|
||||||
|
@ -65,11 +61,11 @@ import Maybe
|
||||||
return isNaN(t) ? Elm.Maybe.Nothing : Elm.Maybe.Just(t);
|
return isNaN(t) ? Elm.Maybe.Nothing : Elm.Maybe.Just(t);
|
||||||
}
|
}
|
||||||
Elm.Native.Time = {
|
Elm.Native.Time = {
|
||||||
fpsWhen : fpsWhen,
|
fpsWhen : F2(fpsWhen),
|
||||||
fps : function(t) { return fpsWhen(t)(Elm.Signal.constant(true)); },
|
fps : function(t) { return fpsWhen(t, Elm.Signal.constant(true)); },
|
||||||
every : everyWhen(Elm.Signal.constant(true)),
|
every : function(t) { return everyWhen(t, Elm.Signal.constant(true)) },
|
||||||
delay : Elm.Signal.delay,
|
delay : Elm.Signal.delay,
|
||||||
since : since,
|
since : F2(since),
|
||||||
after : after,
|
after : after,
|
||||||
before : before,
|
before : before,
|
||||||
toDate : function(t) { return new window.Date(t); },
|
toDate : function(t) { return new window.Date(t); },
|
||||||
|
|
Loading…
Reference in a new issue