Support instanceof d3.{color,rgb,…}
This also makes it possible to create a subclass of d3.color outside of the core library, which would then support automatic interpolation.
This commit is contained in:
Родитель
db8d30584d
Коммит
35584baa17
|
@ -1468,29 +1468,23 @@
|
||||||
}, "mousewheel") : (d3_behavior_zoomDelta = function() {
|
}, "mousewheel") : (d3_behavior_zoomDelta = function() {
|
||||||
return -d3.event.detail;
|
return -d3.event.detail;
|
||||||
}, "MozMousePixelScroll");
|
}, "MozMousePixelScroll");
|
||||||
function d3_Color() {}
|
d3.color = d3_color;
|
||||||
d3_Color.prototype.toString = function() {
|
function d3_color() {}
|
||||||
|
d3_color.prototype.toString = function() {
|
||||||
return this.rgb() + "";
|
return this.rgb() + "";
|
||||||
};
|
};
|
||||||
d3.hsl = function(h, s, l) {
|
d3.hsl = d3_hsl;
|
||||||
return arguments.length === 1 ? h instanceof d3_Hsl ? d3_hsl(h.h, h.s, h.l) : d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl) : d3_hsl(+h, +s, +l);
|
|
||||||
};
|
|
||||||
function d3_hsl(h, s, l) {
|
function d3_hsl(h, s, l) {
|
||||||
return new d3_Hsl(h, s, l);
|
return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);
|
||||||
}
|
}
|
||||||
function d3_Hsl(h, s, l) {
|
var d3_hslPrototype = d3_hsl.prototype = new d3_color();
|
||||||
this.h = h;
|
|
||||||
this.s = s;
|
|
||||||
this.l = l;
|
|
||||||
}
|
|
||||||
var d3_hslPrototype = d3_Hsl.prototype = new d3_Color();
|
|
||||||
d3_hslPrototype.brighter = function(k) {
|
d3_hslPrototype.brighter = function(k) {
|
||||||
k = Math.pow(.7, arguments.length ? k : 1);
|
k = Math.pow(.7, arguments.length ? k : 1);
|
||||||
return d3_hsl(this.h, this.s, this.l / k);
|
return new d3_hsl(this.h, this.s, this.l / k);
|
||||||
};
|
};
|
||||||
d3_hslPrototype.darker = function(k) {
|
d3_hslPrototype.darker = function(k) {
|
||||||
k = Math.pow(.7, arguments.length ? k : 1);
|
k = Math.pow(.7, arguments.length ? k : 1);
|
||||||
return d3_hsl(this.h, this.s, k * this.l);
|
return new d3_hsl(this.h, this.s, k * this.l);
|
||||||
};
|
};
|
||||||
d3_hslPrototype.rgb = function() {
|
d3_hslPrototype.rgb = function() {
|
||||||
return d3_hsl_rgb(this.h, this.s, this.l);
|
return d3_hsl_rgb(this.h, this.s, this.l);
|
||||||
|
@ -1512,25 +1506,18 @@
|
||||||
function vv(h) {
|
function vv(h) {
|
||||||
return Math.round(v(h) * 255);
|
return Math.round(v(h) * 255);
|
||||||
}
|
}
|
||||||
return d3_rgb(vv(h + 120), vv(h), vv(h - 120));
|
return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));
|
||||||
}
|
}
|
||||||
d3.hcl = function(h, c, l) {
|
d3.hcl = d3_hcl;
|
||||||
return arguments.length === 1 ? h instanceof d3_Hcl ? d3_hcl(h.h, h.c, h.l) : h instanceof d3_Lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : d3_hcl(+h, +c, +l);
|
|
||||||
};
|
|
||||||
function d3_hcl(h, c, l) {
|
function d3_hcl(h, c, l) {
|
||||||
return new d3_Hcl(h, c, l);
|
return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);
|
||||||
}
|
}
|
||||||
function d3_Hcl(h, c, l) {
|
var d3_hclPrototype = d3_hcl.prototype = new d3_color();
|
||||||
this.h = h;
|
|
||||||
this.c = c;
|
|
||||||
this.l = l;
|
|
||||||
}
|
|
||||||
var d3_hclPrototype = d3_Hcl.prototype = new d3_Color();
|
|
||||||
d3_hclPrototype.brighter = function(k) {
|
d3_hclPrototype.brighter = function(k) {
|
||||||
return d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));
|
return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));
|
||||||
};
|
};
|
||||||
d3_hclPrototype.darker = function(k) {
|
d3_hclPrototype.darker = function(k) {
|
||||||
return d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));
|
return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));
|
||||||
};
|
};
|
||||||
d3_hclPrototype.rgb = function() {
|
d3_hclPrototype.rgb = function() {
|
||||||
return d3_hcl_lab(this.h, this.c, this.l).rgb();
|
return d3_hcl_lab(this.h, this.c, this.l).rgb();
|
||||||
|
@ -1538,27 +1525,20 @@
|
||||||
function d3_hcl_lab(h, c, l) {
|
function d3_hcl_lab(h, c, l) {
|
||||||
if (isNaN(h)) h = 0;
|
if (isNaN(h)) h = 0;
|
||||||
if (isNaN(c)) c = 0;
|
if (isNaN(c)) c = 0;
|
||||||
return d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);
|
return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);
|
||||||
}
|
}
|
||||||
d3.lab = function(l, a, b) {
|
d3.lab = d3_lab;
|
||||||
return arguments.length === 1 ? l instanceof d3_Lab ? d3_lab(l.l, l.a, l.b) : l instanceof d3_Hcl ? d3_hcl_lab(l.l, l.c, l.h) : d3_rgb_lab((l = d3.rgb(l)).r, l.g, l.b) : d3_lab(+l, +a, +b);
|
|
||||||
};
|
|
||||||
function d3_lab(l, a, b) {
|
function d3_lab(l, a, b) {
|
||||||
return new d3_Lab(l, a, b);
|
return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.l, l.c, l.h) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);
|
||||||
}
|
|
||||||
function d3_Lab(l, a, b) {
|
|
||||||
this.l = l;
|
|
||||||
this.a = a;
|
|
||||||
this.b = b;
|
|
||||||
}
|
}
|
||||||
var d3_lab_K = 18;
|
var d3_lab_K = 18;
|
||||||
var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;
|
var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;
|
||||||
var d3_labPrototype = d3_Lab.prototype = new d3_Color();
|
var d3_labPrototype = d3_lab.prototype = new d3_color();
|
||||||
d3_labPrototype.brighter = function(k) {
|
d3_labPrototype.brighter = function(k) {
|
||||||
return d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
|
return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
|
||||||
};
|
};
|
||||||
d3_labPrototype.darker = function(k) {
|
d3_labPrototype.darker = function(k) {
|
||||||
return d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
|
return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
|
||||||
};
|
};
|
||||||
d3_labPrototype.rgb = function() {
|
d3_labPrototype.rgb = function() {
|
||||||
return d3_lab_rgb(this.l, this.a, this.b);
|
return d3_lab_rgb(this.l, this.a, this.b);
|
||||||
|
@ -1568,10 +1548,10 @@
|
||||||
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 new 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 l > 0 ? d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : d3_hcl(NaN, NaN, l);
|
return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, 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;
|
||||||
|
@ -1582,36 +1562,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));
|
||||||
}
|
}
|
||||||
d3.rgb = function(r, g, b) {
|
d3.rgb = d3_rgb;
|
||||||
return arguments.length === 1 ? r instanceof d3_Rgb ? d3_rgb(r.r, r.g, r.b) : d3_rgb_parse("" + r, d3_rgb, d3_hsl_rgb) : d3_rgb(~~r, ~~g, ~~b);
|
function d3_rgb(r, g, b) {
|
||||||
};
|
return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse("" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);
|
||||||
|
}
|
||||||
function d3_rgbNumber(value) {
|
function d3_rgbNumber(value) {
|
||||||
return d3_rgb(value >> 16, value >> 8 & 255, value & 255);
|
return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);
|
||||||
}
|
}
|
||||||
function d3_rgbString(value) {
|
function d3_rgbString(value) {
|
||||||
return d3_rgbNumber(value) + "";
|
return d3_rgbNumber(value) + "";
|
||||||
}
|
}
|
||||||
function d3_rgb(r, g, b) {
|
var d3_rgbPrototype = d3_rgb.prototype = new d3_color();
|
||||||
return new d3_Rgb(r, g, b);
|
|
||||||
}
|
|
||||||
function d3_Rgb(r, g, b) {
|
|
||||||
this.r = r;
|
|
||||||
this.g = g;
|
|
||||||
this.b = b;
|
|
||||||
}
|
|
||||||
var d3_rgbPrototype = d3_Rgb.prototype = new d3_Color();
|
|
||||||
d3_rgbPrototype.brighter = function(k) {
|
d3_rgbPrototype.brighter = function(k) {
|
||||||
k = Math.pow(.7, arguments.length ? k : 1);
|
k = Math.pow(.7, arguments.length ? k : 1);
|
||||||
var r = this.r, g = this.g, b = this.b, i = 30;
|
var r = this.r, g = this.g, b = this.b, i = 30;
|
||||||
if (!r && !g && !b) return d3_rgb(i, i, i);
|
if (!r && !g && !b) return new d3_rgb(i, i, i);
|
||||||
if (r && r < i) r = i;
|
if (r && r < i) r = i;
|
||||||
if (g && g < i) g = i;
|
if (g && g < i) g = i;
|
||||||
if (b && b < i) b = i;
|
if (b && b < i) b = i;
|
||||||
return d3_rgb(Math.min(255, ~~(r / k)), Math.min(255, ~~(g / k)), Math.min(255, ~~(b / k)));
|
return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));
|
||||||
};
|
};
|
||||||
d3_rgbPrototype.darker = function(k) {
|
d3_rgbPrototype.darker = function(k) {
|
||||||
k = Math.pow(.7, arguments.length ? k : 1);
|
k = Math.pow(.7, arguments.length ? k : 1);
|
||||||
return d3_rgb(~~(k * this.r), ~~(k * this.g), ~~(k * this.b));
|
return new d3_rgb(k * this.r, k * this.g, k * this.b);
|
||||||
};
|
};
|
||||||
d3_rgbPrototype.hsl = function() {
|
d3_rgbPrototype.hsl = function() {
|
||||||
return d3_rgb_hsl(this.r, this.g, this.b);
|
return d3_rgb_hsl(this.r, this.g, this.b);
|
||||||
|
@ -1666,7 +1639,7 @@
|
||||||
h = NaN;
|
h = NaN;
|
||||||
s = l > 0 && l < 1 ? 0 : h;
|
s = l > 0 && l < 1 ? 0 : h;
|
||||||
}
|
}
|
||||||
return d3_hsl(h, s, l);
|
return new 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);
|
||||||
|
@ -5664,7 +5637,7 @@
|
||||||
}
|
}
|
||||||
d3.interpolators = [ function(a, b) {
|
d3.interpolators = [ function(a, b) {
|
||||||
var t = typeof 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);
|
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);
|
||||||
} ];
|
} ];
|
||||||
d3.interpolateArray = d3_interpolateArray;
|
d3.interpolateArray = d3_interpolateArray;
|
||||||
function d3_interpolateArray(a, b) {
|
function d3_interpolateArray(a, b) {
|
||||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -1,5 +1,7 @@
|
||||||
function d3_Color() {}
|
d3.color = d3_color;
|
||||||
|
|
||||||
d3_Color.prototype.toString = function() {
|
function d3_color() {}
|
||||||
|
|
||||||
|
d3_color.prototype.toString = function() {
|
||||||
return this.rgb() + "";
|
return this.rgb() + "";
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,32 +3,24 @@ import "color";
|
||||||
import "lab";
|
import "lab";
|
||||||
import "rgb";
|
import "rgb";
|
||||||
|
|
||||||
d3.hcl = function(h, c, l) {
|
d3.hcl = d3_hcl;
|
||||||
return arguments.length === 1
|
|
||||||
? (h instanceof d3_Hcl ? d3_hcl(h.h, h.c, h.l)
|
|
||||||
: (h instanceof d3_Lab ? d3_lab_hcl(h.l, h.a, h.b)
|
|
||||||
: d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b)))
|
|
||||||
: d3_hcl(+h, +c, +l);
|
|
||||||
};
|
|
||||||
|
|
||||||
function d3_hcl(h, c, l) {
|
function d3_hcl(h, c, l) {
|
||||||
return new d3_Hcl(h, c, l);
|
return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l)
|
||||||
|
: arguments.length < 2 ? (h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l)
|
||||||
|
: (h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b)
|
||||||
|
: d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b)))
|
||||||
|
: new d3_hcl(h, c, l);
|
||||||
}
|
}
|
||||||
|
|
||||||
function d3_Hcl(h, c, l) {
|
var d3_hclPrototype = d3_hcl.prototype = new d3_color;
|
||||||
this.h = h;
|
|
||||||
this.c = c;
|
|
||||||
this.l = l;
|
|
||||||
}
|
|
||||||
|
|
||||||
var d3_hclPrototype = d3_Hcl.prototype = new d3_Color;
|
|
||||||
|
|
||||||
d3_hclPrototype.brighter = function(k) {
|
d3_hclPrototype.brighter = function(k) {
|
||||||
return d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));
|
return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));
|
||||||
};
|
};
|
||||||
|
|
||||||
d3_hclPrototype.darker = function(k) {
|
d3_hclPrototype.darker = function(k) {
|
||||||
return d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));
|
return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));
|
||||||
};
|
};
|
||||||
|
|
||||||
d3_hclPrototype.rgb = function() {
|
d3_hclPrototype.rgb = function() {
|
||||||
|
@ -38,5 +30,5 @@ d3_hclPrototype.rgb = function() {
|
||||||
function d3_hcl_lab(h, c, l) {
|
function d3_hcl_lab(h, c, l) {
|
||||||
if (isNaN(h)) h = 0;
|
if (isNaN(h)) h = 0;
|
||||||
if (isNaN(c)) c = 0;
|
if (isNaN(c)) c = 0;
|
||||||
return d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);
|
return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,33 +1,25 @@
|
||||||
import "color";
|
import "color";
|
||||||
import "rgb";
|
import "rgb";
|
||||||
|
|
||||||
d3.hsl = function(h, s, l) {
|
d3.hsl = d3_hsl;
|
||||||
return arguments.length === 1
|
|
||||||
? (h instanceof d3_Hsl ? d3_hsl(h.h, h.s, h.l)
|
|
||||||
: d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl))
|
|
||||||
: d3_hsl(+h, +s, +l);
|
|
||||||
};
|
|
||||||
|
|
||||||
function d3_hsl(h, s, l) {
|
function d3_hsl(h, s, l) {
|
||||||
return new d3_Hsl(h, s, l);
|
return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l)
|
||||||
|
: arguments.length < 2 ? (h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l)
|
||||||
|
: d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl))
|
||||||
|
: new d3_hsl(h, s, l);
|
||||||
}
|
}
|
||||||
|
|
||||||
function d3_Hsl(h, s, l) {
|
var d3_hslPrototype = d3_hsl.prototype = new d3_color;
|
||||||
this.h = h;
|
|
||||||
this.s = s;
|
|
||||||
this.l = l;
|
|
||||||
}
|
|
||||||
|
|
||||||
var d3_hslPrototype = d3_Hsl.prototype = new d3_Color;
|
|
||||||
|
|
||||||
d3_hslPrototype.brighter = function(k) {
|
d3_hslPrototype.brighter = function(k) {
|
||||||
k = Math.pow(0.7, arguments.length ? k : 1);
|
k = Math.pow(0.7, arguments.length ? k : 1);
|
||||||
return d3_hsl(this.h, this.s, this.l / k);
|
return new d3_hsl(this.h, this.s, this.l / k);
|
||||||
};
|
};
|
||||||
|
|
||||||
d3_hslPrototype.darker = function(k) {
|
d3_hslPrototype.darker = function(k) {
|
||||||
k = Math.pow(0.7, arguments.length ? k : 1);
|
k = Math.pow(0.7, arguments.length ? k : 1);
|
||||||
return d3_hsl(this.h, this.s, k * this.l);
|
return new d3_hsl(this.h, this.s, k * this.l);
|
||||||
};
|
};
|
||||||
|
|
||||||
d3_hslPrototype.rgb = function() {
|
d3_hslPrototype.rgb = function() {
|
||||||
|
@ -60,5 +52,5 @@ function d3_hsl_rgb(h, s, l) {
|
||||||
return Math.round(v(h) * 255);
|
return Math.round(v(h) * 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
return d3_rgb(vv(h + 120), vv(h), vv(h - 120));
|
return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,22 +3,14 @@ import "color";
|
||||||
import "hcl";
|
import "hcl";
|
||||||
import "rgb";
|
import "rgb";
|
||||||
|
|
||||||
d3.lab = function(l, a, b) {
|
d3.lab = d3_lab;
|
||||||
return arguments.length === 1
|
|
||||||
? (l instanceof d3_Lab ? d3_lab(l.l, l.a, l.b)
|
|
||||||
: (l instanceof d3_Hcl ? d3_hcl_lab(l.l, l.c, l.h)
|
|
||||||
: d3_rgb_lab((l = d3.rgb(l)).r, l.g, l.b)))
|
|
||||||
: d3_lab(+l, +a, +b);
|
|
||||||
};
|
|
||||||
|
|
||||||
function d3_lab(l, a, b) {
|
function d3_lab(l, a, b) {
|
||||||
return new d3_Lab(l, a, b);
|
return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b)
|
||||||
}
|
: arguments.length < 2 ? (l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b)
|
||||||
|
: (l instanceof d3_hcl ? d3_hcl_lab(l.l, l.c, l.h)
|
||||||
function d3_Lab(l, a, b) {
|
: d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b)))
|
||||||
this.l = l;
|
: new d3_lab(l, a, b);
|
||||||
this.a = a;
|
|
||||||
this.b = b;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Corresponds roughly to RGB brighter/darker
|
// Corresponds roughly to RGB brighter/darker
|
||||||
|
@ -29,14 +21,14 @@ var d3_lab_X = 0.950470,
|
||||||
d3_lab_Y = 1,
|
d3_lab_Y = 1,
|
||||||
d3_lab_Z = 1.088830;
|
d3_lab_Z = 1.088830;
|
||||||
|
|
||||||
var d3_labPrototype = d3_Lab.prototype = new d3_Color;
|
var d3_labPrototype = d3_lab.prototype = new d3_color;
|
||||||
|
|
||||||
d3_labPrototype.brighter = function(k) {
|
d3_labPrototype.brighter = function(k) {
|
||||||
return d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
|
return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
|
||||||
};
|
};
|
||||||
|
|
||||||
d3_labPrototype.darker = function(k) {
|
d3_labPrototype.darker = function(k) {
|
||||||
return d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
|
return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
|
||||||
};
|
};
|
||||||
|
|
||||||
d3_labPrototype.rgb = function() {
|
d3_labPrototype.rgb = function() {
|
||||||
|
@ -50,7 +42,7 @@ function d3_lab_rgb(l, a, b) {
|
||||||
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(
|
return new d3_rgb(
|
||||||
d3_xyz_rgb( 3.2404542 * x - 1.5371385 * y - 0.4985314 * z),
|
d3_xyz_rgb( 3.2404542 * x - 1.5371385 * y - 0.4985314 * z),
|
||||||
d3_xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z),
|
d3_xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z),
|
||||||
d3_xyz_rgb( 0.0556434 * x - 0.2040259 * y + 1.0572252 * z)
|
d3_xyz_rgb( 0.0556434 * x - 0.2040259 * y + 1.0572252 * z)
|
||||||
|
@ -59,8 +51,8 @@ function d3_lab_rgb(l, a, b) {
|
||||||
|
|
||||||
function d3_lab_hcl(l, a, b) {
|
function d3_lab_hcl(l, a, b) {
|
||||||
return l > 0
|
return l > 0
|
||||||
? d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l)
|
? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l)
|
||||||
: d3_hcl(NaN, NaN, l);
|
: new d3_hcl(NaN, NaN, l);
|
||||||
}
|
}
|
||||||
|
|
||||||
function d3_lab_xyz(x) {
|
function d3_lab_xyz(x) {
|
||||||
|
|
|
@ -4,32 +4,24 @@ import "hsl";
|
||||||
import "lab";
|
import "lab";
|
||||||
import "xyz";
|
import "xyz";
|
||||||
|
|
||||||
d3.rgb = function(r, g, b) {
|
d3.rgb = d3_rgb;
|
||||||
return arguments.length === 1
|
|
||||||
? (r instanceof d3_Rgb ? d3_rgb(r.r, r.g, r.b)
|
function d3_rgb(r, g, b) {
|
||||||
|
return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b)
|
||||||
|
: arguments.length < 2 ? (r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b)
|
||||||
: d3_rgb_parse("" + r, d3_rgb, d3_hsl_rgb))
|
: d3_rgb_parse("" + r, d3_rgb, d3_hsl_rgb))
|
||||||
: d3_rgb(~~r, ~~g, ~~b);
|
: new d3_rgb(r, g, b);
|
||||||
};
|
}
|
||||||
|
|
||||||
function d3_rgbNumber(value) {
|
function d3_rgbNumber(value) {
|
||||||
return d3_rgb(value >> 16, value >> 8 & 0xff, value & 0xff);
|
return new d3_rgb(value >> 16, value >> 8 & 0xff, value & 0xff);
|
||||||
}
|
}
|
||||||
|
|
||||||
function d3_rgbString(value) {
|
function d3_rgbString(value) {
|
||||||
return d3_rgbNumber(value) + "";
|
return d3_rgbNumber(value) + "";
|
||||||
}
|
}
|
||||||
|
|
||||||
function d3_rgb(r, g, b) {
|
var d3_rgbPrototype = d3_rgb.prototype = new d3_color;
|
||||||
return new d3_Rgb(r, g, b);
|
|
||||||
}
|
|
||||||
|
|
||||||
function d3_Rgb(r, g, b) {
|
|
||||||
this.r = r;
|
|
||||||
this.g = g;
|
|
||||||
this.b = b;
|
|
||||||
}
|
|
||||||
|
|
||||||
var d3_rgbPrototype = d3_Rgb.prototype = new d3_Color;
|
|
||||||
|
|
||||||
d3_rgbPrototype.brighter = function(k) {
|
d3_rgbPrototype.brighter = function(k) {
|
||||||
k = Math.pow(0.7, arguments.length ? k : 1);
|
k = Math.pow(0.7, arguments.length ? k : 1);
|
||||||
|
@ -37,16 +29,16 @@ d3_rgbPrototype.brighter = function(k) {
|
||||||
g = this.g,
|
g = this.g,
|
||||||
b = this.b,
|
b = this.b,
|
||||||
i = 30;
|
i = 30;
|
||||||
if (!r && !g && !b) return d3_rgb(i, i, i);
|
if (!r && !g && !b) return new d3_rgb(i, i, i);
|
||||||
if (r && r < i) r = i;
|
if (r && r < i) r = i;
|
||||||
if (g && g < i) g = i;
|
if (g && g < i) g = i;
|
||||||
if (b && b < i) b = i;
|
if (b && b < i) b = i;
|
||||||
return d3_rgb(Math.min(255, ~~(r / k)), Math.min(255, ~~(g / k)), Math.min(255, ~~(b / k)));
|
return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));
|
||||||
};
|
};
|
||||||
|
|
||||||
d3_rgbPrototype.darker = function(k) {
|
d3_rgbPrototype.darker = function(k) {
|
||||||
k = Math.pow(0.7, arguments.length ? k : 1);
|
k = Math.pow(0.7, arguments.length ? k : 1);
|
||||||
return d3_rgb(~~(k * this.r), ~~(k * this.g), ~~(k * this.b));
|
return new d3_rgb(k * this.r, k * this.g, k * this.b);
|
||||||
};
|
};
|
||||||
|
|
||||||
d3_rgbPrototype.hsl = function() {
|
d3_rgbPrototype.hsl = function() {
|
||||||
|
@ -129,7 +121,7 @@ function d3_rgb_hsl(r, g, b) {
|
||||||
h = NaN;
|
h = NaN;
|
||||||
s = l > 0 && l < 1 ? 0 : h;
|
s = l > 0 && l < 1 ? 0 : h;
|
||||||
}
|
}
|
||||||
return d3_hsl(h, s, l);
|
return new d3_hsl(h, s, l);
|
||||||
}
|
}
|
||||||
|
|
||||||
function d3_rgb_lab(r, g, b) {
|
function d3_rgb_lab(r, g, b) {
|
||||||
|
|
|
@ -18,7 +18,7 @@ d3.interpolators = [
|
||||||
function(a, b) {
|
function(a, b) {
|
||||||
var t = typeof b;
|
var t = typeof b;
|
||||||
return (t === "string" ? (d3_rgb_names.has(b) || /^(#|rgb\(|hsl\()/.test(b) ? d3_interpolateRgb : d3_interpolateString)
|
return (t === "string" ? (d3_rgb_names.has(b) || /^(#|rgb\(|hsl\()/.test(b) ? d3_interpolateRgb : d3_interpolateString)
|
||||||
: b instanceof d3_Color ? d3_interpolateRgb
|
: b instanceof d3_color ? d3_interpolateRgb
|
||||||
: Array.isArray(b) ? d3_interpolateArray
|
: Array.isArray(b) ? d3_interpolateArray
|
||||||
: t === "object" && isNaN(b) ? d3_interpolateObject
|
: t === "object" && isNaN(b) ? d3_interpolateObject
|
||||||
: d3_interpolateNumber)(a, b);
|
: d3_interpolateNumber)(a, b);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче