aboutsummaryrefslogtreecommitdiffstats
path: root/web/nms.gathering.org/speedometer/d3-master/src/interpolate
diff options
context:
space:
mode:
Diffstat (limited to 'web/nms.gathering.org/speedometer/d3-master/src/interpolate')
-rw-r--r--web/nms.gathering.org/speedometer/d3-master/src/interpolate/array.js19
-rw-r--r--web/nms.gathering.org/speedometer/d3-master/src/interpolate/ease.js111
-rw-r--r--web/nms.gathering.org/speedometer/d3-master/src/interpolate/hcl.js20
-rw-r--r--web/nms.gathering.org/speedometer/d3-master/src/interpolate/hsl.js20
-rw-r--r--web/nms.gathering.org/speedometer/d3-master/src/interpolate/index.js14
-rw-r--r--web/nms.gathering.org/speedometer/d3-master/src/interpolate/interpolate.js26
-rw-r--r--web/nms.gathering.org/speedometer/d3-master/src/interpolate/lab.js17
-rw-r--r--web/nms.gathering.org/speedometer/d3-master/src/interpolate/number.js6
-rw-r--r--web/nms.gathering.org/speedometer/d3-master/src/interpolate/object.js25
-rw-r--r--web/nms.gathering.org/speedometer/d3-master/src/interpolate/rgb.js20
-rw-r--r--web/nms.gathering.org/speedometer/d3-master/src/interpolate/round.js6
-rw-r--r--web/nms.gathering.org/speedometer/d3-master/src/interpolate/string.js54
-rw-r--r--web/nms.gathering.org/speedometer/d3-master/src/interpolate/transform.js56
-rw-r--r--web/nms.gathering.org/speedometer/d3-master/src/interpolate/uninterpolate.js9
-rw-r--r--web/nms.gathering.org/speedometer/d3-master/src/interpolate/zoom.js47
15 files changed, 450 insertions, 0 deletions
diff --git a/web/nms.gathering.org/speedometer/d3-master/src/interpolate/array.js b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/array.js
new file mode 100644
index 0000000..33f8f48
--- /dev/null
+++ b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/array.js
@@ -0,0 +1,19 @@
+import "interpolate";
+
+d3.interpolateArray = d3_interpolateArray;
+
+function d3_interpolateArray(a, b) {
+ var x = [],
+ c = [],
+ na = a.length,
+ nb = b.length,
+ n0 = Math.min(a.length, b.length),
+ i;
+ for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));
+ for (; i < na; ++i) c[i] = a[i];
+ for (; i < nb; ++i) c[i] = b[i];
+ return function(t) {
+ for (i = 0; i < n0; ++i) c[i] = x[i](t);
+ return c;
+ };
+}
diff --git a/web/nms.gathering.org/speedometer/d3-master/src/interpolate/ease.js b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/ease.js
new file mode 100644
index 0000000..fd48a17
--- /dev/null
+++ b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/ease.js
@@ -0,0 +1,111 @@
+import "../arrays/map";
+import "../core/array";
+import "../core/identity";
+import "../math/trigonometry";
+
+var d3_ease_default = function() { return d3_identity; };
+
+var d3_ease = d3.map({
+ linear: d3_ease_default,
+ poly: d3_ease_poly,
+ quad: function() { return d3_ease_quad; },
+ cubic: function() { return d3_ease_cubic; },
+ sin: function() { return d3_ease_sin; },
+ exp: function() { return d3_ease_exp; },
+ circle: function() { return d3_ease_circle; },
+ elastic: d3_ease_elastic,
+ back: d3_ease_back,
+ bounce: function() { return d3_ease_bounce; }
+});
+
+var d3_ease_mode = d3.map({
+ "in": d3_identity,
+ "out": d3_ease_reverse,
+ "in-out": d3_ease_reflect,
+ "out-in": function(f) { return d3_ease_reflect(d3_ease_reverse(f)); }
+});
+
+d3.ease = function(name) {
+ var i = name.indexOf("-"),
+ t = i >= 0 ? name.slice(0, i) : name,
+ m = i >= 0 ? name.slice(i + 1) : "in";
+ t = d3_ease.get(t) || d3_ease_default;
+ m = d3_ease_mode.get(m) || d3_identity;
+ return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));
+};
+
+function d3_ease_clamp(f) {
+ return function(t) {
+ return t <= 0 ? 0 : t >= 1 ? 1 : f(t);
+ };
+}
+
+function d3_ease_reverse(f) {
+ return function(t) {
+ return 1 - f(1 - t);
+ };
+}
+
+function d3_ease_reflect(f) {
+ return function(t) {
+ return .5 * (t < .5 ? f(2 * t) : (2 - f(2 - 2 * t)));
+ };
+}
+
+function d3_ease_quad(t) {
+ return t * t;
+}
+
+function d3_ease_cubic(t) {
+ return t * t * t;
+}
+
+// Optimized clamp(reflect(poly(3))).
+function d3_ease_cubicInOut(t) {
+ if (t <= 0) return 0;
+ if (t >= 1) return 1;
+ var t2 = t * t, t3 = t2 * t;
+ return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);
+}
+
+function d3_ease_poly(e) {
+ return function(t) {
+ return Math.pow(t, e);
+ };
+}
+
+function d3_ease_sin(t) {
+ return 1 - Math.cos(t * halfπ);
+}
+
+function d3_ease_exp(t) {
+ return Math.pow(2, 10 * (t - 1));
+}
+
+function d3_ease_circle(t) {
+ return 1 - Math.sqrt(1 - t * t);
+}
+
+function d3_ease_elastic(a, p) {
+ var s;
+ if (arguments.length < 2) p = 0.45;
+ if (arguments.length) s = p / τ * Math.asin(1 / a);
+ else a = 1, s = p / 4;
+ return function(t) {
+ return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);
+ };
+}
+
+function d3_ease_back(s) {
+ if (!s) s = 1.70158;
+ return function(t) {
+ return t * t * ((s + 1) * t - s);
+ };
+}
+
+function d3_ease_bounce(t) {
+ return t < 1 / 2.75 ? 7.5625 * t * t
+ : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75
+ : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375
+ : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;
+}
diff --git a/web/nms.gathering.org/speedometer/d3-master/src/interpolate/hcl.js b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/hcl.js
new file mode 100644
index 0000000..4e62591
--- /dev/null
+++ b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/hcl.js
@@ -0,0 +1,20 @@
+import "../color/hcl";
+
+d3.interpolateHcl = d3_interpolateHcl;
+
+function d3_interpolateHcl(a, b) {
+ a = d3.hcl(a);
+ b = d3.hcl(b);
+ var ah = a.h,
+ ac = a.c,
+ al = a.l,
+ bh = b.h - ah,
+ bc = b.c - ac,
+ bl = b.l - al;
+ if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;
+ if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah;
+ else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360; // shortest path
+ return function(t) {
+ return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + "";
+ };
+}
diff --git a/web/nms.gathering.org/speedometer/d3-master/src/interpolate/hsl.js b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/hsl.js
new file mode 100644
index 0000000..2b8d70f
--- /dev/null
+++ b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/hsl.js
@@ -0,0 +1,20 @@
+import "../color/hsl";
+
+d3.interpolateHsl = d3_interpolateHsl;
+
+function d3_interpolateHsl(a, b) {
+ a = d3.hsl(a);
+ b = d3.hsl(b);
+ var ah = a.h,
+ as = a.s,
+ al = a.l,
+ bh = b.h - ah,
+ bs = b.s - as,
+ bl = b.l - al;
+ if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;
+ if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah;
+ else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360; // shortest path
+ return function(t) {
+ return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + "";
+ };
+}
diff --git a/web/nms.gathering.org/speedometer/d3-master/src/interpolate/index.js b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/index.js
new file mode 100644
index 0000000..ed6c502
--- /dev/null
+++ b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/index.js
@@ -0,0 +1,14 @@
+import "array";
+import "ease";
+import "hcl";
+import "hsl";
+import "interpolate";
+import "lab";
+import "number";
+import "object";
+import "rgb";
+import "round";
+import "string";
+import "transform";
+import "uninterpolate";
+import "zoom";
diff --git a/web/nms.gathering.org/speedometer/d3-master/src/interpolate/interpolate.js b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/interpolate.js
new file mode 100644
index 0000000..14f5dc5
--- /dev/null
+++ b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/interpolate.js
@@ -0,0 +1,26 @@
+import "../color/color";
+import "../color/rgb";
+import "rgb";
+import "object";
+import "array";
+import "number";
+import "string";
+
+d3.interpolate = d3_interpolate;
+
+function d3_interpolate(a, b) {
+ var i = d3.interpolators.length, f;
+ while (--i >= 0 && !(f = d3.interpolators[i](a, b)));
+ return f;
+}
+
+d3.interpolators = [
+ function(a, b) {
+ var t = typeof b;
+ return (t === "string" ? (d3_rgb_names.has(b) || /^(#|rgb\(|hsl\()/.test(b) ? d3_interpolateRgb : d3_interpolateString)
+ : b instanceof d3_color ? d3_interpolateRgb
+ : Array.isArray(b) ? d3_interpolateArray
+ : t === "object" && isNaN(b) ? d3_interpolateObject
+ : d3_interpolateNumber)(a, b);
+ }
+];
diff --git a/web/nms.gathering.org/speedometer/d3-master/src/interpolate/lab.js b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/lab.js
new file mode 100644
index 0000000..6b46c04
--- /dev/null
+++ b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/lab.js
@@ -0,0 +1,17 @@
+import "../color/lab";
+
+d3.interpolateLab = d3_interpolateLab;
+
+function d3_interpolateLab(a, b) {
+ a = d3.lab(a);
+ b = d3.lab(b);
+ var al = a.l,
+ aa = a.a,
+ ab = a.b,
+ bl = b.l - al,
+ ba = b.a - aa,
+ bb = b.b - ab;
+ return function(t) {
+ return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + "";
+ };
+}
diff --git a/web/nms.gathering.org/speedometer/d3-master/src/interpolate/number.js b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/number.js
new file mode 100644
index 0000000..2f0e42a
--- /dev/null
+++ b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/number.js
@@ -0,0 +1,6 @@
+d3.interpolateNumber = d3_interpolateNumber;
+
+function d3_interpolateNumber(a, b) {
+ a = +a, b = +b;
+ return function(t) { return a * (1 - t) + b * t; };
+}
diff --git a/web/nms.gathering.org/speedometer/d3-master/src/interpolate/object.js b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/object.js
new file mode 100644
index 0000000..a3f863a
--- /dev/null
+++ b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/object.js
@@ -0,0 +1,25 @@
+import "interpolate";
+
+d3.interpolateObject = d3_interpolateObject;
+
+function d3_interpolateObject(a, b) {
+ var i = {},
+ c = {},
+ k;
+ for (k in a) {
+ if (k in b) {
+ i[k] = d3_interpolate(a[k], b[k]);
+ } else {
+ c[k] = a[k];
+ }
+ }
+ for (k in b) {
+ if (!(k in a)) {
+ c[k] = b[k];
+ }
+ }
+ return function(t) {
+ for (k in i) c[k] = i[k](t);
+ return c;
+ };
+}
diff --git a/web/nms.gathering.org/speedometer/d3-master/src/interpolate/rgb.js b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/rgb.js
new file mode 100644
index 0000000..f4944d2
--- /dev/null
+++ b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/rgb.js
@@ -0,0 +1,20 @@
+import "../color/rgb";
+
+d3.interpolateRgb = d3_interpolateRgb;
+
+function d3_interpolateRgb(a, b) {
+ a = d3.rgb(a);
+ b = d3.rgb(b);
+ var ar = a.r,
+ ag = a.g,
+ ab = a.b,
+ br = b.r - ar,
+ bg = b.g - ag,
+ bb = b.b - ab;
+ return function(t) {
+ return "#"
+ + d3_rgb_hex(Math.round(ar + br * t))
+ + d3_rgb_hex(Math.round(ag + bg * t))
+ + d3_rgb_hex(Math.round(ab + bb * t));
+ };
+}
diff --git a/web/nms.gathering.org/speedometer/d3-master/src/interpolate/round.js b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/round.js
new file mode 100644
index 0000000..8e8797d
--- /dev/null
+++ b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/round.js
@@ -0,0 +1,6 @@
+d3.interpolateRound = d3_interpolateRound;
+
+function d3_interpolateRound(a, b) {
+ b -= a;
+ return function(t) { return Math.round(a + b * t); };
+}
diff --git a/web/nms.gathering.org/speedometer/d3-master/src/interpolate/string.js b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/string.js
new file mode 100644
index 0000000..3033a71
--- /dev/null
+++ b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/string.js
@@ -0,0 +1,54 @@
+import "number";
+
+d3.interpolateString = d3_interpolateString;
+
+function d3_interpolateString(a, b) {
+ var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, // scan index for next number in b
+ am, // current match in a
+ bm, // current match in b
+ bs, // string preceding current number in b, if any
+ i = -1, // index in s
+ s = [], // string constants and placeholders
+ q = []; // number interpolators
+
+ // Coerce inputs to strings.
+ a = a + "", b = b + "";
+
+ // Interpolate pairs of numbers in a & b.
+ while ((am = d3_interpolate_numberA.exec(a))
+ && (bm = d3_interpolate_numberB.exec(b))) {
+ if ((bs = bm.index) > bi) { // a string precedes the next number in b
+ bs = b.slice(bi, bs);
+ if (s[i]) s[i] += bs; // coalesce with previous string
+ else s[++i] = bs;
+ }
+ if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match
+ if (s[i]) s[i] += bm; // coalesce with previous string
+ else s[++i] = bm;
+ } else { // interpolate non-matching numbers
+ s[++i] = null;
+ q.push({i: i, x: d3_interpolateNumber(am, bm)});
+ }
+ bi = d3_interpolate_numberB.lastIndex;
+ }
+
+ // Add remains of b.
+ if (bi < b.length) {
+ bs = b.slice(bi);
+ if (s[i]) s[i] += bs; // coalesce with previous string
+ else s[++i] = bs;
+ }
+
+ // Special optimization for only a single match.
+ // Otherwise, interpolate each of the numbers and rejoin the string.
+ return s.length < 2
+ ? (q[0] ? (b = q[0].x, function(t) { return b(t) + ""; })
+ : function() { return b; })
+ : (b = q.length, function(t) {
+ for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);
+ return s.join("");
+ });
+}
+
+var d3_interpolate_numberA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,
+ d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, "g");
diff --git a/web/nms.gathering.org/speedometer/d3-master/src/interpolate/transform.js b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/transform.js
new file mode 100644
index 0000000..17a19cb
--- /dev/null
+++ b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/transform.js
@@ -0,0 +1,56 @@
+import "../math/transform";
+import "number";
+
+d3.interpolateTransform = d3_interpolateTransform;
+
+function d3_interpolateTransform(a, b) {
+ var s = [], // string constants and placeholders
+ q = [], // number interpolators
+ n,
+ A = d3.transform(a),
+ B = d3.transform(b),
+ ta = A.translate,
+ tb = B.translate,
+ ra = A.rotate,
+ rb = B.rotate,
+ wa = A.skew,
+ wb = B.skew,
+ ka = A.scale,
+ kb = B.scale;
+
+ if (ta[0] != tb[0] || ta[1] != tb[1]) {
+ s.push("translate(", null, ",", null, ")");
+ q.push({i: 1, x: d3_interpolateNumber(ta[0], tb[0])}, {i: 3, x: d3_interpolateNumber(ta[1], tb[1])});
+ } else if (tb[0] || tb[1]) {
+ s.push("translate(" + tb + ")");
+ } else {
+ s.push("");
+ }
+
+ if (ra != rb) {
+ if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360; // shortest path
+ q.push({i: s.push(s.pop() + "rotate(", null, ")") - 2, x: d3_interpolateNumber(ra, rb)});
+ } else if (rb) {
+ s.push(s.pop() + "rotate(" + rb + ")");
+ }
+
+ if (wa != wb) {
+ q.push({i: s.push(s.pop() + "skewX(", null, ")") - 2, x: d3_interpolateNumber(wa, wb)});
+ } else if (wb) {
+ s.push(s.pop() + "skewX(" + wb + ")");
+ }
+
+ if (ka[0] != kb[0] || ka[1] != kb[1]) {
+ n = s.push(s.pop() + "scale(", null, ",", null, ")");
+ q.push({i: n - 4, x: d3_interpolateNumber(ka[0], kb[0])}, {i: n - 2, x: d3_interpolateNumber(ka[1], kb[1])});
+ } else if (kb[0] != 1 || kb[1] != 1) {
+ s.push(s.pop() + "scale(" + kb + ")");
+ }
+
+ n = q.length;
+ return function(t) {
+ var i = -1, o;
+ while (++i < n) s[(o = q[i]).i] = o.x(t);
+ return s.join("");
+ };
+}
diff --git a/web/nms.gathering.org/speedometer/d3-master/src/interpolate/uninterpolate.js b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/uninterpolate.js
new file mode 100644
index 0000000..d8c8332
--- /dev/null
+++ b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/uninterpolate.js
@@ -0,0 +1,9 @@
+function d3_uninterpolateNumber(a, b) {
+ b = (b -= a = +a) || 1 / b;
+ return function(x) { return (x - a) / b; };
+}
+
+function d3_uninterpolateClamp(a, b) {
+ b = (b -= a = +a) || 1 / b;
+ return function(x) { return Math.max(0, Math.min(1, (x - a) / b)); };
+}
diff --git a/web/nms.gathering.org/speedometer/d3-master/src/interpolate/zoom.js b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/zoom.js
new file mode 100644
index 0000000..ae6b5c7
--- /dev/null
+++ b/web/nms.gathering.org/speedometer/d3-master/src/interpolate/zoom.js
@@ -0,0 +1,47 @@
+import "../math/trigonometry";
+
+var ρ = Math.SQRT2,
+ ρ2 = 2,
+ ρ4 = 4;
+
+// p0 = [ux0, uy0, w0]
+// p1 = [ux1, uy1, w1]
+d3.interpolateZoom = function(p0, p1) {
+ var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],
+ ux1 = p1[0], uy1 = p1[1], w1 = p1[2];
+
+ var dx = ux1 - ux0,
+ dy = uy1 - uy0,
+ d2 = dx * dx + dy * dy,
+ d1 = Math.sqrt(d2),
+ b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1),
+ b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1),
+ r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),
+ r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1),
+ dr = r1 - r0,
+ S = (dr || Math.log(w1 / w0)) / ρ;
+
+ function interpolate(t) {
+ var s = t * S;
+ if (dr) {
+ // General case.
+ var coshr0 = d3_cosh(r0),
+ u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));
+ return [
+ ux0 + u * dx,
+ uy0 + u * dy,
+ w0 * coshr0 / d3_cosh(ρ * s + r0)
+ ];
+ }
+ // Special case for u0 ~= u1.
+ return [
+ ux0 + t * dx,
+ uy0 + t * dy,
+ w0 * Math.exp(ρ * s)
+ ];
+ }
+
+ interpolate.duration = S * 1000;
+
+ return interpolate;
+};