Skip to content

Commit 2c6e7ec

Browse files
committed
Merge branch 'instanceof-color' into 3.4.9
2 parents 086b5fc + 35584ba commit 2c6e7ec

File tree

8 files changed

+87
-144
lines changed

8 files changed

+87
-144
lines changed

d3.js

Lines changed: 33 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1483,29 +1483,23 @@
14831483
}, "mousewheel") : (d3_behavior_zoomDelta = function() {
14841484
return -d3.event.detail;
14851485
}, "MozMousePixelScroll");
1486-
function d3_Color() {}
1487-
d3_Color.prototype.toString = function() {
1486+
d3.color = d3_color;
1487+
function d3_color() {}
1488+
d3_color.prototype.toString = function() {
14881489
return this.rgb() + "";
14891490
};
1490-
d3.hsl = function(h, s, l) {
1491-
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);
1492-
};
1491+
d3.hsl = d3_hsl;
14931492
function d3_hsl(h, s, l) {
1494-
return new d3_Hsl(h, s, l);
1495-
}
1496-
function d3_Hsl(h, s, l) {
1497-
this.h = h;
1498-
this.s = s;
1499-
this.l = l;
1493+
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);
15001494
}
1501-
var d3_hslPrototype = d3_Hsl.prototype = new d3_Color();
1495+
var d3_hslPrototype = d3_hsl.prototype = new d3_color();
15021496
d3_hslPrototype.brighter = function(k) {
15031497
k = Math.pow(.7, arguments.length ? k : 1);
1504-
return d3_hsl(this.h, this.s, this.l / k);
1498+
return new d3_hsl(this.h, this.s, this.l / k);
15051499
};
15061500
d3_hslPrototype.darker = function(k) {
15071501
k = Math.pow(.7, arguments.length ? k : 1);
1508-
return d3_hsl(this.h, this.s, k * this.l);
1502+
return new d3_hsl(this.h, this.s, k * this.l);
15091503
};
15101504
d3_hslPrototype.rgb = function() {
15111505
return d3_hsl_rgb(this.h, this.s, this.l);
@@ -1527,53 +1521,39 @@
15271521
function vv(h) {
15281522
return Math.round(v(h) * 255);
15291523
}
1530-
return d3_rgb(vv(h + 120), vv(h), vv(h - 120));
1524+
return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));
15311525
}
1532-
d3.hcl = function(h, c, l) {
1533-
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);
1534-
};
1526+
d3.hcl = d3_hcl;
15351527
function d3_hcl(h, c, l) {
1536-
return new d3_Hcl(h, c, l);
1528+
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);
15371529
}
1538-
function d3_Hcl(h, c, l) {
1539-
this.h = h;
1540-
this.c = c;
1541-
this.l = l;
1542-
}
1543-
var d3_hclPrototype = d3_Hcl.prototype = new d3_Color();
1530+
var d3_hclPrototype = d3_hcl.prototype = new d3_color();
15441531
d3_hclPrototype.brighter = function(k) {
1545-
return d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));
1532+
return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));
15461533
};
15471534
d3_hclPrototype.darker = function(k) {
1548-
return d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));
1535+
return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));
15491536
};
15501537
d3_hclPrototype.rgb = function() {
15511538
return d3_hcl_lab(this.h, this.c, this.l).rgb();
15521539
};
15531540
function d3_hcl_lab(h, c, l) {
15541541
if (isNaN(h)) h = 0;
15551542
if (isNaN(c)) c = 0;
1556-
return d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);
1543+
return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);
15571544
}
1558-
d3.lab = function(l, a, b) {
1559-
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);
1560-
};
1545+
d3.lab = d3_lab;
15611546
function d3_lab(l, a, b) {
1562-
return new d3_Lab(l, a, b);
1563-
}
1564-
function d3_Lab(l, a, b) {
1565-
this.l = l;
1566-
this.a = a;
1567-
this.b = b;
1547+
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);
15681548
}
15691549
var d3_lab_K = 18;
15701550
var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;
1571-
var d3_labPrototype = d3_Lab.prototype = new d3_Color();
1551+
var d3_labPrototype = d3_lab.prototype = new d3_color();
15721552
d3_labPrototype.brighter = function(k) {
1573-
return d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
1553+
return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
15741554
};
15751555
d3_labPrototype.darker = function(k) {
1576-
return d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
1556+
return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
15771557
};
15781558
d3_labPrototype.rgb = function() {
15791559
return d3_lab_rgb(this.l, this.a, this.b);
@@ -1583,10 +1563,10 @@
15831563
x = d3_lab_xyz(x) * d3_lab_X;
15841564
y = d3_lab_xyz(y) * d3_lab_Y;
15851565
z = d3_lab_xyz(z) * d3_lab_Z;
1586-
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));
1566+
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));
15871567
}
15881568
function d3_lab_hcl(l, a, b) {
1589-
return l > 0 ? d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : d3_hcl(NaN, NaN, l);
1569+
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);
15901570
}
15911571
function d3_lab_xyz(x) {
15921572
return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;
@@ -1597,36 +1577,29 @@
15971577
function d3_xyz_rgb(r) {
15981578
return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));
15991579
}
1600-
d3.rgb = function(r, g, b) {
1601-
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);
1602-
};
1580+
d3.rgb = d3_rgb;
1581+
function d3_rgb(r, g, b) {
1582+
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);
1583+
}
16031584
function d3_rgbNumber(value) {
1604-
return d3_rgb(value >> 16, value >> 8 & 255, value & 255);
1585+
return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);
16051586
}
16061587
function d3_rgbString(value) {
16071588
return d3_rgbNumber(value) + "";
16081589
}
1609-
function d3_rgb(r, g, b) {
1610-
return new d3_Rgb(r, g, b);
1611-
}
1612-
function d3_Rgb(r, g, b) {
1613-
this.r = r;
1614-
this.g = g;
1615-
this.b = b;
1616-
}
1617-
var d3_rgbPrototype = d3_Rgb.prototype = new d3_Color();
1590+
var d3_rgbPrototype = d3_rgb.prototype = new d3_color();
16181591
d3_rgbPrototype.brighter = function(k) {
16191592
k = Math.pow(.7, arguments.length ? k : 1);
16201593
var r = this.r, g = this.g, b = this.b, i = 30;
1621-
if (!r && !g && !b) return d3_rgb(i, i, i);
1594+
if (!r && !g && !b) return new d3_rgb(i, i, i);
16221595
if (r && r < i) r = i;
16231596
if (g && g < i) g = i;
16241597
if (b && b < i) b = i;
1625-
return d3_rgb(Math.min(255, ~~(r / k)), Math.min(255, ~~(g / k)), Math.min(255, ~~(b / k)));
1598+
return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));
16261599
};
16271600
d3_rgbPrototype.darker = function(k) {
16281601
k = Math.pow(.7, arguments.length ? k : 1);
1629-
return d3_rgb(~~(k * this.r), ~~(k * this.g), ~~(k * this.b));
1602+
return new d3_rgb(k * this.r, k * this.g, k * this.b);
16301603
};
16311604
d3_rgbPrototype.hsl = function() {
16321605
return d3_rgb_hsl(this.r, this.g, this.b);
@@ -1681,7 +1654,7 @@
16811654
h = NaN;
16821655
s = l > 0 && l < 1 ? 0 : h;
16831656
}
1684-
return d3_hsl(h, s, l);
1657+
return new d3_hsl(h, s, l);
16851658
}
16861659
function d3_rgb_lab(r, g, b) {
16871660
r = d3_rgb_xyz(r);
@@ -5679,7 +5652,7 @@
56795652
}
56805653
d3.interpolators = [ function(a, b) {
56815654
var t = typeof b;
5682-
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);
5655+
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);
56835656
} ];
56845657
d3.interpolateArray = d3_interpolateArray;
56855658
function d3_interpolateArray(a, b) {

d3.min.js

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/color/color.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
function d3_Color() {}
1+
d3.color = d3_color;
22

3-
d3_Color.prototype.toString = function() {
3+
function d3_color() {}
4+
5+
d3_color.prototype.toString = function() {
46
return this.rgb() + "";
57
};

src/color/hcl.js

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,32 +3,24 @@ import "color";
33
import "lab";
44
import "rgb";
55

6-
d3.hcl = function(h, c, l) {
7-
return arguments.length === 1
8-
? (h instanceof d3_Hcl ? d3_hcl(h.h, h.c, h.l)
9-
: (h instanceof d3_Lab ? d3_lab_hcl(h.l, h.a, h.b)
10-
: d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b)))
11-
: d3_hcl(+h, +c, +l);
12-
};
6+
d3.hcl = d3_hcl;
137

148
function d3_hcl(h, c, l) {
15-
return new d3_Hcl(h, c, l);
16-
}
17-
18-
function d3_Hcl(h, c, l) {
19-
this.h = h;
20-
this.c = c;
21-
this.l = l;
9+
return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l)
10+
: arguments.length < 2 ? (h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l)
11+
: (h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b)
12+
: d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b)))
13+
: new d3_hcl(h, c, l);
2214
}
2315

24-
var d3_hclPrototype = d3_Hcl.prototype = new d3_Color;
16+
var d3_hclPrototype = d3_hcl.prototype = new d3_color;
2517

2618
d3_hclPrototype.brighter = function(k) {
27-
return d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));
19+
return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));
2820
};
2921

3022
d3_hclPrototype.darker = function(k) {
31-
return d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));
23+
return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));
3224
};
3325

3426
d3_hclPrototype.rgb = function() {
@@ -38,5 +30,5 @@ d3_hclPrototype.rgb = function() {
3830
function d3_hcl_lab(h, c, l) {
3931
if (isNaN(h)) h = 0;
4032
if (isNaN(c)) c = 0;
41-
return d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);
33+
return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);
4234
}

src/color/hsl.js

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,25 @@
11
import "color";
22
import "rgb";
33

4-
d3.hsl = function(h, s, l) {
5-
return arguments.length === 1
6-
? (h instanceof d3_Hsl ? d3_hsl(h.h, h.s, h.l)
7-
: d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl))
8-
: d3_hsl(+h, +s, +l);
9-
};
4+
d3.hsl = d3_hsl;
105

116
function d3_hsl(h, s, l) {
12-
return new d3_Hsl(h, s, l);
13-
}
14-
15-
function d3_Hsl(h, s, l) {
16-
this.h = h;
17-
this.s = s;
18-
this.l = l;
7+
return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l)
8+
: arguments.length < 2 ? (h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l)
9+
: d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl))
10+
: new d3_hsl(h, s, l);
1911
}
2012

21-
var d3_hslPrototype = d3_Hsl.prototype = new d3_Color;
13+
var d3_hslPrototype = d3_hsl.prototype = new d3_color;
2214

2315
d3_hslPrototype.brighter = function(k) {
2416
k = Math.pow(0.7, arguments.length ? k : 1);
25-
return d3_hsl(this.h, this.s, this.l / k);
17+
return new d3_hsl(this.h, this.s, this.l / k);
2618
};
2719

2820
d3_hslPrototype.darker = function(k) {
2921
k = Math.pow(0.7, arguments.length ? k : 1);
30-
return d3_hsl(this.h, this.s, k * this.l);
22+
return new d3_hsl(this.h, this.s, k * this.l);
3123
};
3224

3325
d3_hslPrototype.rgb = function() {
@@ -60,5 +52,5 @@ function d3_hsl_rgb(h, s, l) {
6052
return Math.round(v(h) * 255);
6153
}
6254

63-
return d3_rgb(vv(h + 120), vv(h), vv(h - 120));
55+
return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));
6456
}

src/color/lab.js

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,14 @@ import "color";
33
import "hcl";
44
import "rgb";
55

6-
d3.lab = function(l, a, b) {
7-
return arguments.length === 1
8-
? (l instanceof d3_Lab ? d3_lab(l.l, l.a, l.b)
9-
: (l instanceof d3_Hcl ? d3_hcl_lab(l.l, l.c, l.h)
10-
: d3_rgb_lab((l = d3.rgb(l)).r, l.g, l.b)))
11-
: d3_lab(+l, +a, +b);
12-
};
6+
d3.lab = d3_lab;
137

148
function d3_lab(l, a, b) {
15-
return new d3_Lab(l, a, b);
16-
}
17-
18-
function d3_Lab(l, a, b) {
19-
this.l = l;
20-
this.a = a;
21-
this.b = b;
9+
return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b)
10+
: arguments.length < 2 ? (l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b)
11+
: (l instanceof d3_hcl ? d3_hcl_lab(l.l, l.c, l.h)
12+
: d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b)))
13+
: new d3_lab(l, a, b);
2214
}
2315

2416
// Corresponds roughly to RGB brighter/darker
@@ -29,14 +21,14 @@ var d3_lab_X = 0.950470,
2921
d3_lab_Y = 1,
3022
d3_lab_Z = 1.088830;
3123

32-
var d3_labPrototype = d3_Lab.prototype = new d3_Color;
24+
var d3_labPrototype = d3_lab.prototype = new d3_color;
3325

3426
d3_labPrototype.brighter = function(k) {
35-
return d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
27+
return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
3628
};
3729

3830
d3_labPrototype.darker = function(k) {
39-
return d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
31+
return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
4032
};
4133

4234
d3_labPrototype.rgb = function() {
@@ -50,7 +42,7 @@ function d3_lab_rgb(l, a, b) {
5042
x = d3_lab_xyz(x) * d3_lab_X;
5143
y = d3_lab_xyz(y) * d3_lab_Y;
5244
z = d3_lab_xyz(z) * d3_lab_Z;
53-
return d3_rgb(
45+
return new d3_rgb(
5446
d3_xyz_rgb( 3.2404542 * x - 1.5371385 * y - 0.4985314 * z),
5547
d3_xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z),
5648
d3_xyz_rgb( 0.0556434 * x - 0.2040259 * y + 1.0572252 * z)
@@ -59,8 +51,8 @@ function d3_lab_rgb(l, a, b) {
5951

6052
function d3_lab_hcl(l, a, b) {
6153
return l > 0
62-
? d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l)
63-
: d3_hcl(NaN, NaN, l);
54+
? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l)
55+
: new d3_hcl(NaN, NaN, l);
6456
}
6557

6658
function d3_lab_xyz(x) {

0 commit comments

Comments
 (0)