Skip to content

Commit

Permalink
Merge branch 'fix-polylinear' into v2.8.0
Browse files Browse the repository at this point in the history
  • Loading branch information
mbostock committed Feb 18, 2012
2 parents 4345a0c + 744aa96 commit 4949310
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 6 deletions.
4 changes: 2 additions & 2 deletions d3.js
Expand Up @@ -2430,7 +2430,7 @@ function d3_scale_linear(domain, range, interpolate, clamp) {
input;

function rescale() {
var linear = domain.length == 2 ? d3_scale_bilinear : d3_scale_polylinear,
var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear,
uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;
output = linear(domain, range, uninterpolate, interpolate);
input = linear(range, domain, uninterpolate, d3.interpolate);
Expand Down Expand Up @@ -2542,7 +2542,7 @@ function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {
var u = [],
i = [],
j = 0,
k = domain.length - 1;
k = Math.min(domain.length, range.length) - 1;

// Handle descending domains.
if (domain[k] < domain[0]) {
Expand Down
4 changes: 2 additions & 2 deletions d3.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/scale/linear.js
Expand Up @@ -7,7 +7,7 @@ function d3_scale_linear(domain, range, interpolate, clamp) {
input;

function rescale() {
var linear = domain.length == 2 ? d3_scale_bilinear : d3_scale_polylinear,
var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear,
uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;
output = linear(domain, range, uninterpolate, interpolate);
input = linear(range, domain, uninterpolate, d3.interpolate);
Expand Down
2 changes: 1 addition & 1 deletion src/scale/polylinear.js
Expand Up @@ -2,7 +2,7 @@ function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {
var u = [],
i = [],
j = 0,
k = domain.length - 1;
k = Math.min(domain.length, range.length) - 1;

// Handle descending domains.
if (domain[k] < domain[0]) {
Expand Down
8 changes: 8 additions & 0 deletions test/scale/linear-test.js
Expand Up @@ -43,6 +43,14 @@ suite.addBatch({
assert.equal(x(50), "#80c080");
assert.equal(x(75), "#40a040");
},
"the smaller of the domain or range is observed": function(linear) {
var x = linear().domain([-10, 0]).range(["red", "white", "green"]).clamp(true);
assert.equal(x(-5), "#ff8080");
assert.equal(x(50), "#ffffff");
var x = linear().domain([-10, 0, 100]).range(["red", "white"]).clamp(true);
assert.equal(x(-5), "#ff8080");
assert.equal(x(50), "#ffffff");
},
"an empty domain maps to the range start": function(linear) {
var x = linear().domain([0, 0]).range(["red", "green"]);
assert.equal(x(0), "#ff0000");
Expand Down

0 comments on commit 4949310

Please sign in to comment.