(function() { |
if (Modernizr.svg){(function() { |
function d3_class(ctor, properties) { |
function d3_class(ctor, properties) { |
try { |
try { |
for (var key in properties) { |
for (var key in properties) { |
Object.defineProperty(ctor.prototype, key, { |
Object.defineProperty(ctor.prototype, key, { |
value: properties[key], |
value: properties[key], |
enumerable: false |
enumerable: false |
}); |
}); |
} |
} |
} catch (e) { |
} catch (e) { |
ctor.prototype = properties; |
ctor.prototype = properties; |
} |
} |
} |
} |
function d3_arrayCopy(pseudoarray) { |
function d3_arrayCopy(pseudoarray) { |
var i = -1, n = pseudoarray.length, array = []; |
var i = -1, n = pseudoarray.length, array = []; |
while (++i < n) array.push(pseudoarray[i]); |
while (++i < n) array.push(pseudoarray[i]); |
return array; |
return array; |
} |
} |
function d3_arraySlice(pseudoarray) { |
function d3_arraySlice(pseudoarray) { |
return Array.prototype.slice.call(pseudoarray); |
return Array.prototype.slice.call(pseudoarray); |
} |
} |
function d3_Map() {} |
function d3_Map() {} |
function d3_identity(d) { |
function d3_identity(d) { |
return d; |
return d; |
} |
} |
function d3_this() { |
function d3_this() { |
return this; |
return this; |
} |
} |
function d3_true() { |
function d3_true() { |
return true; |
return true; |
} |
} |
function d3_functor(v) { |
function d3_functor(v) { |
return typeof v === "function" ? v : function() { |
return typeof v === "function" ? v : function() { |
return v; |
return v; |
}; |
}; |
} |
} |
function d3_rebind(target, source, method) { |
function d3_rebind(target, source, method) { |
return function() { |
return function() { |
var value = method.apply(source, arguments); |
var value = method.apply(source, arguments); |
return arguments.length ? target : value; |
return arguments.length ? target : value; |
}; |
}; |
} |
} |
function d3_number(x) { |
function d3_number(x) { |
return x != null && !isNaN(x); |
return x != null && !isNaN(x); |
} |
} |
function d3_zipLength(d) { |
function d3_zipLength(d) { |
return d.length; |
return d.length; |
} |
} |
function d3_splitter(d) { |
function d3_splitter(d) { |
return d == null; |
return d == null; |
} |
} |
function d3_collapse(s) { |
function d3_collapse(s) { |
return s.trim().replace(/\s+/g, " "); |
return s.trim().replace(/\s+/g, " "); |
} |
} |
function d3_range_integerScale(x) { |
function d3_range_integerScale(x) { |
var k = 1; |
var k = 1; |
while (x * k % 1) k *= 10; |
while (x * k % 1) k *= 10; |
return k; |
return k; |
} |
} |
function d3_dispatch() {} |
function d3_dispatch() {} |
function d3_dispatch_event(dispatch) { |
function d3_dispatch_event(dispatch) { |
function event() { |
function event() { |
var z = listeners, i = -1, n = z.length, l; |
var z = listeners, i = -1, n = z.length, l; |
while (++i < n) if (l = z[i].on) l.apply(this, arguments); |
while (++i < n) if (l = z[i].on) l.apply(this, arguments); |
return dispatch; |
return dispatch; |
} |
} |
var listeners = [], listenerByName = new d3_Map; |
var listeners = [], listenerByName = new d3_Map; |
event.on = function(name, listener) { |
event.on = function(name, listener) { |
var l = listenerByName.get(name), i; |
var l = listenerByName.get(name), i; |
if (arguments.length < 2) return l && l.on; |
if (arguments.length < 2) return l && l.on; |
if (l) { |
if (l) { |
l.on = null; |
l.on = null; |
listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1)); |
listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1)); |
listenerByName.remove(name); |
listenerByName.remove(name); |
} |
} |
if (listener) listeners.push(listenerByName.set(name, { |
if (listener) listeners.push(listenerByName.set(name, { |
on: listener |
on: listener |
})); |
})); |
return dispatch; |
return dispatch; |
}; |
}; |
return event; |
return event; |
} |
} |
function d3_format_precision(x, p) { |
function d3_format_precision(x, p) { |
return p - (x ? 1 + Math.floor(Math.log(x + Math.pow(10, 1 + Math.floor(Math.log(x) / Math.LN10) - p)) / Math.LN10) : 1); |
return p - (x ? 1 + Math.floor(Math.log(x + Math.pow(10, 1 + Math.floor(Math.log(x) / Math.LN10) - p)) / Math.LN10) : 1); |
} |
} |
function d3_format_typeDefault(x) { |
function d3_format_typeDefault(x) { |
return x + ""; |
return x + ""; |
} |
} |
function d3_format_group(value) { |
function d3_format_group(value) { |
var i = value.lastIndexOf("."), f = i >= 0 ? value.substring(i) : (i = value.length, ""), t = []; |
var i = value.lastIndexOf("."), f = i >= 0 ? value.substring(i) : (i = value.length, ""), t = []; |
while (i > 0) t.push(value.substring(i -= 3, i + 3)); |
while (i > 0) t.push(value.substring(i -= 3, i + 3)); |
return t.reverse().join(",") + f; |
return t.reverse().join(",") + f; |
} |
} |
function d3_formatPrefix(d, i) { |
function d3_formatPrefix(d, i) { |
var k = Math.pow(10, Math.abs(8 - i) * 3); |
var k = Math.pow(10, Math.abs(8 - i) * 3); |
return { |
return { |
scale: i > 8 ? function(d) { |
scale: i > 8 ? function(d) { |
return d / k; |
return d / k; |
} : function(d) { |
} : function(d) { |
return d * k; |
return d * k; |
}, |
}, |
symbol: d |
symbol: d |
}; |
}; |
} |
} |
function d3_ease_clamp(f) { |
function d3_ease_clamp(f) { |
return function(t) { |
return function(t) { |
return t <= 0 ? 0 : t >= 1 ? 1 : f(t); |
return t <= 0 ? 0 : t >= 1 ? 1 : f(t); |
}; |
}; |
} |
} |
function d3_ease_reverse(f) { |
function d3_ease_reverse(f) { |
return function(t) { |
return function(t) { |
return 1 - f(1 - t); |
return 1 - f(1 - t); |
}; |
}; |
} |
} |
function d3_ease_reflect(f) { |
function d3_ease_reflect(f) { |
return function(t) { |
return function(t) { |
return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t)); |
return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t)); |
}; |
}; |
} |
} |
function d3_ease_identity(t) { |
function d3_ease_identity(t) { |
return t; |
return t; |
} |
} |
function d3_ease_poly(e) { |
function d3_ease_poly(e) { |
return function(t) { |
return function(t) { |
return Math.pow(t, e); |
return Math.pow(t, e); |
}; |
}; |
} |
} |
function d3_ease_sin(t) { |
function d3_ease_sin(t) { |
return 1 - Math.cos(t * Math.PI / 2); |
return 1 - Math.cos(t * Math.PI / 2); |
} |
} |
function d3_ease_exp(t) { |
function d3_ease_exp(t) { |
return Math.pow(2, 10 * (t - 1)); |
return Math.pow(2, 10 * (t - 1)); |
} |
} |
function d3_ease_circle(t) { |
function d3_ease_circle(t) { |
return 1 - Math.sqrt(1 - t * t); |
return 1 - Math.sqrt(1 - t * t); |
} |
} |
function d3_ease_elastic(a, p) { |
function d3_ease_elastic(a, p) { |
var s; |
var s; |
if (arguments.length < 2) p = .45; |
if (arguments.length < 2) p = .45; |
if (arguments.length < 1) { |
if (arguments.length < 1) { |
a = 1; |
a = 1; |
s = p / 4; |
s = p / 4; |
} else s = p / (2 * Math.PI) * Math.asin(1 / a); |
} else s = p / (2 * Math.PI) * Math.asin(1 / a); |
return function(t) { |
return function(t) { |
return 1 + a * Math.pow(2, 10 * -t) * Math.sin((t - s) * 2 * Math.PI / p); |
return 1 + a * Math.pow(2, 10 * -t) * Math.sin((t - s) * 2 * Math.PI / p); |
}; |
}; |
} |
} |
function d3_ease_back(s) { |
function d3_ease_back(s) { |
if (!s) s = 1.70158; |
if (!s) s = 1.70158; |
return function(t) { |
return function(t) { |
return t * t * ((s + 1) * t - s); |
return t * t * ((s + 1) * t - s); |
}; |
}; |
} |
} |
function d3_ease_bounce(t) { |
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; |
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; |
} |
} |
function d3_eventCancel() { |
function d3_eventCancel() { |
d3.event.stopPropagation(); |
d3.event.stopPropagation(); |
d3.event.preventDefault(); |
d3.event.preventDefault(); |
} |
} |
function d3_eventSource() { |
function d3_eventSource() { |
var e = d3.event, s; |
var e = d3.event, s; |
while (s = e.sourceEvent) e = s; |
while (s = e.sourceEvent) e = s; |
return e; |
return e; |
} |
} |
function d3_eventDispatch(target) { |
function d3_eventDispatch(target) { |
var dispatch = new d3_dispatch, i = 0, n = arguments.length; |
var dispatch = new d3_dispatch, i = 0, n = arguments.length; |
while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch); |
while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch); |
dispatch.of = function(thiz, argumentz) { |
dispatch.of = function(thiz, argumentz) { |
return function(e1) { |
return function(e1) { |
try { |
try { |
var e0 = e1.sourceEvent = d3.event; |
var e0 = e1.sourceEvent = d3.event; |
e1.target = target; |
e1.target = target; |
d3.event = e1; |
d3.event = e1; |
dispatch[e1.type].apply(thiz, argumentz); |
dispatch[e1.type].apply(thiz, argumentz); |
} finally { |
} finally { |
d3.event = e0; |
d3.event = e0; |
} |
} |
}; |
}; |
}; |
}; |
return dispatch; |
return dispatch; |
} |
} |
function d3_transform(m) { |
function d3_transform(m) { |
var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0; |
var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0; |
if (r0[0] * r1[1] < r1[0] * r0[1]) { |
if (r0[0] * r1[1] < r1[0] * r0[1]) { |
r0[0] *= -1; |
r0[0] *= -1; |
r0[1] *= -1; |
r0[1] *= -1; |
kx *= -1; |
kx *= -1; |
kz *= -1; |
kz *= -1; |
} |
} |
this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_transformDegrees; |
this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_transformDegrees; |
this.translate = [ m.e, m.f ]; |
this.translate = [ m.e, m.f ]; |
this.scale = [ kx, ky ]; |
this.scale = [ kx, ky ]; |
this.skew = ky ? Math.atan2(kz, ky) * d3_transformDegrees : 0; |
this.skew = ky ? Math.atan2(kz, ky) * d3_transformDegrees : 0; |
} |
} |
function d3_transformDot(a, b) { |
function d3_transformDot(a, b) { |
return a[0] * b[0] + a[1] * b[1]; |
return a[0] * b[0] + a[1] * b[1]; |
} |
} |
function d3_transformNormalize(a) { |
function d3_transformNormalize(a) { |
var k = Math.sqrt(d3_transformDot(a, a)); |
var k = Math.sqrt(d3_transformDot(a, a)); |
if (k) { |
if (k) { |
a[0] /= k; |
a[0] /= k; |
a[1] /= k; |
a[1] /= k; |
} |
} |
return k; |
return k; |
} |
} |
function d3_transformCombine(a, b, k) { |
function d3_transformCombine(a, b, k) { |
a[0] += k * b[0]; |
a[0] += k * b[0]; |
a[1] += k * b[1]; |
a[1] += k * b[1]; |
return a; |
return a; |
} |
} |
function d3_interpolateByName(name) { |
function d3_interpolateByName(name) { |
return name == "transform" ? d3.interpolateTransform : d3.interpolate; |
return name == "transform" ? d3.interpolateTransform : d3.interpolate; |
} |
} |
function d3_uninterpolateNumber(a, b) { |
function d3_uninterpolateNumber(a, b) { |
b = b - (a = +a) ? 1 / (b - a) : 0; |
b = b - (a = +a) ? 1 / (b - a) : 0; |
return function(x) { |
return function(x) { |
return (x - a) * b; |
return (x - a) * b; |
}; |
}; |
} |
} |
function d3_uninterpolateClamp(a, b) { |
function d3_uninterpolateClamp(a, b) { |
b = b - (a = +a) ? 1 / (b - a) : 0; |
b = b - (a = +a) ? 1 / (b - a) : 0; |
return function(x) { |
return function(x) { |
return Math.max(0, Math.min(1, (x - a) * b)); |
return Math.max(0, Math.min(1, (x - a) * b)); |
}; |
}; |
} |
} |
function d3_Color() {} |
function d3_Color() {} |
function d3_rgb(r, g, b) { |
function d3_rgb(r, g, b) { |
return new d3_Rgb(r, g, b); |
return new d3_Rgb(r, g, b); |
} |
} |
function d3_Rgb(r, g, b) { |
function d3_Rgb(r, g, b) { |
this.r = r; |
this.r = r; |
this.g = g; |
this.g = g; |
this.b = b; |
this.b = b; |
} |
} |
function d3_rgb_hex(v) { |
function d3_rgb_hex(v) { |
return v < 16 ? "0" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16); |
return v < 16 ? "0" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16); |
} |
} |
function d3_rgb_parse(format, rgb, hsl) { |
function d3_rgb_parse(format, rgb, hsl) { |
var r = 0, g = 0, b = 0, m1, m2, name; |
var r = 0, g = 0, b = 0, m1, m2, name; |
m1 = /([a-z]+)\((.*)\)/i.exec(format); |
m1 = /([a-z]+)\((.*)\)/i.exec(format); |
if (m1) { |
if (m1) { |
m2 = m1[2].split(","); |
m2 = m1[2].split(","); |
switch (m1[1]) { |
switch (m1[1]) { |
case "hsl": |
case "hsl": |
{ |
{ |
return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100); |
return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100); |
} |
} |
case "rgb": |
case "rgb": |
{ |
{ |
return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2])); |
return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2])); |
} |
} |
} |
} |
} |
} |
if (name = d3_rgb_names.get(format)) return rgb(name.r, name.g, name.b); |
if (name = d3_rgb_names.get(format)) return rgb(name.r, name.g, name.b); |
if (format != null && format.charAt(0) === "#") { |
if (format != null && format.charAt(0) === "#") { |
if (format.length === 4) { |
if (format.length === 4) { |
r = format.charAt(1); |
r = format.charAt(1); |
r += r; |
r += r; |
g = format.charAt(2); |
g = format.charAt(2); |
g += g; |
g += g; |
b = format.charAt(3); |
b = format.charAt(3); |
b += b; |
b += b; |
} else if (format.length === 7) { |
} else if (format.length === 7) { |
r = format.substring(1, 3); |
r = format.substring(1, 3); |
g = format.substring(3, 5); |
g = format.substring(3, 5); |
b = format.substring(5, 7); |
b = format.substring(5, 7); |
} |
} |
r = parseInt(r, 16); |
r = parseInt(r, 16); |
g = parseInt(g, 16); |
g = parseInt(g, 16); |
b = parseInt(b, 16); |
b = parseInt(b, 16); |
} |
} |
return rgb(r, g, b); |
return rgb(r, g, b); |
} |
} |
function d3_rgb_hsl(r, g, b) { |
function d3_rgb_hsl(r, g, b) { |
var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2; |
var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2; |
if (d) { |
if (d) { |
s = l < .5 ? d / (max + min) : d / (2 - max - min); |
s = l < .5 ? d / (max + min) : d / (2 - max - min); |
if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4; |
if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4; |
h *= 60; |
h *= 60; |
} else { |
} else { |
s = h = 0; |
s = h = 0; |
} |
} |
return d3_hsl(h, s, l); |
return d3_hsl(h, s, l); |
} |
} |
function d3_rgb_lab(r, g, b) { |
function d3_rgb_lab(r, g, b) { |
r = d3_rgb_xyz(r); |
r = d3_rgb_xyz(r); |
g = d3_rgb_xyz(g); |
g = d3_rgb_xyz(g); |
b = d3_rgb_xyz(b); |
b = d3_rgb_xyz(b); |
var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z); |
var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z); |
return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z)); |
return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z)); |
} |
} |
function d3_rgb_xyz(r) { |
function d3_rgb_xyz(r) { |
return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4); |
return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4); |
} |
} |
function d3_rgb_parseNumber(c) { |
function d3_rgb_parseNumber(c) { |
var f = parseFloat(c); |
var f = parseFloat(c); |
return c.charAt(c.length - 1) === "%" ? Math.round(f * 2.55) : f; |
return c.charAt(c.length - 1) === "%" ? Math.round(f * 2.55) : f; |
} |
} |
function d3_hsl(h, s, l) { |
function d3_hsl(h, s, l) { |
return new d3_Hsl(h, s, l); |
return new d3_Hsl(h, s, l); |
} |
} |
function d3_Hsl(h, s, l) { |
function d3_Hsl(h, s, l) { |
this.h = h; |
this.h = h; |
this.s = s; |
this.s = s; |
this.l = l; |
this.l = l; |
} |
} |
function d3_hsl_rgb(h, s, l) { |
function d3_hsl_rgb(h, s, l) { |
function v(h) { |
function v(h) { |
if (h > 360) h -= 360; else if (h < 0) h += 360; |
if (h > 360) h -= 360; else if (h < 0) h += 360; |
if (h < 60) return m1 + (m2 - m1) * h / 60; |
if (h < 60) return m1 + (m2 - m1) * h / 60; |
if (h < 180) return m2; |
if (h < 180) return m2; |
if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60; |
if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60; |
return m1; |
return m1; |
} |
} |
function vv(h) { |
function vv(h) { |
return Math.round(v(h) * 255); |
return Math.round(v(h) * 255); |
} |
} |
var m1, m2; |
var m1, m2; |
h = h % 360; |
h = h % 360; |
if (h < 0) h += 360; |
if (h < 0) h += 360; |
s = s < 0 ? 0 : s > 1 ? 1 : s; |
s = s < 0 ? 0 : s > 1 ? 1 : s; |
l = l < 0 ? 0 : l > 1 ? 1 : l; |
l = l < 0 ? 0 : l > 1 ? 1 : l; |
m2 = l <= .5 ? l * (1 + s) : l + s - l * s; |
m2 = l <= .5 ? l * (1 + s) : l + s - l * s; |
m1 = 2 * l - m2; |
m1 = 2 * l - m2; |
return d3_rgb(vv(h + 120), vv(h), vv(h - 120)); |
return d3_rgb(vv(h + 120), vv(h), vv(h - 120)); |
} |
} |
function d3_hcl(h, c, l) { |
function d3_hcl(h, c, l) { |
return new d3_Hcl(h, c, l); |
return new d3_Hcl(h, c, l); |
} |
} |
function d3_Hcl(h, c, l) { |
function d3_Hcl(h, c, l) { |
this.h = h; |
this.h = h; |
this.c = c; |
this.c = c; |
this.l = l; |
this.l = l; |
} |
} |
function d3_hcl_lab(h, c, l) { |
function d3_hcl_lab(h, c, l) { |
return d3_lab(l, Math.cos(h *= Math.PI / 180) * c, Math.sin(h) * c); |
return d3_lab(l, Math.cos(h *= Math.PI / 180) * c, Math.sin(h) * c); |
} |
} |
function d3_lab(l, a, b) { |
function d3_lab(l, a, b) { |
return new d3_Lab(l, a, b); |
return new d3_Lab(l, a, b); |
} |
} |
function d3_Lab(l, a, b) { |
function d3_Lab(l, a, b) { |
this.l = l; |
this.l = l; |
this.a = a; |
this.a = a; |
this.b = b; |
this.b = b; |
} |
} |
function d3_lab_rgb(l, a, b) { |
function d3_lab_rgb(l, a, b) { |
var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200; |
var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200; |
x = d3_lab_xyz(x) * d3_lab_X; |
x = d3_lab_xyz(x) * d3_lab_X; |
y = d3_lab_xyz(y) * d3_lab_Y; |
y = d3_lab_xyz(y) * d3_lab_Y; |
z = d3_lab_xyz(z) * d3_lab_Z; |
z = d3_lab_xyz(z) * d3_lab_Z; |
return d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z)); |
return d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z)); |
} |
} |
function d3_lab_hcl(l, a, b) { |
function d3_lab_hcl(l, a, b) { |
return d3_hcl(Math.atan2(b, a) / Math.PI * 180, Math.sqrt(a * a + b * b), l); |
return d3_hcl(Math.atan2(b, a) / Math.PI * 180, Math.sqrt(a * a + b * b), l); |
} |
} |
function d3_lab_xyz(x) { |
function d3_lab_xyz(x) { |
return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037; |
return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037; |
} |
} |
function d3_xyz_lab(x) { |
function d3_xyz_lab(x) { |
return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29; |
return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29; |
} |
} |
function d3_xyz_rgb(r) { |
function d3_xyz_rgb(r) { |
return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055)); |
return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055)); |
} |
} |
function d3_selection(groups) { |
function d3_selection(groups) { |
d3_arraySubclass(groups, d3_selectionPrototype); |
d3_arraySubclass(groups, d3_selectionPrototype); |
return groups; |
return groups; |
} |
} |
function d3_selection_selector(selector) { |
function d3_selection_selector(selector) { |
return function() { |
return function() { |
return d3_select(selector, this); |
return d3_select(selector, this); |
}; |
}; |
} |
} |
function d3_selection_selectorAll(selector) { |
function d3_selection_selectorAll(selector) { |
return function() { |
return function() { |
return d3_selectAll(selector, this); |
return d3_selectAll(selector, this); |
}; |
}; |
} |
} |
function d3_selection_attr(name, value) { |
function d3_selection_attr(name, value) { |
function attrNull() { |
function attrNull() { |
this.removeAttribute(name); |
this.removeAttribute(name); |