Skip to content

Commit

Permalink
Restore d3_interpolateByName for transforms.
Browse files Browse the repository at this point in the history
  • Loading branch information
mbostock committed Nov 4, 2011
1 parent e3f6f33 commit a7ff9fa
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 14 deletions.
19 changes: 13 additions & 6 deletions d3.js
Original file line number Diff line number Diff line change
Expand Up @@ -937,7 +937,7 @@ d3.interpolateObject = function(a, b) {
k;
for (k in a) {
if (k in b) {
i[k] = d3.interpolate(a[k], b[k]);
i[k] = d3_interpolateByName(k)(a[k], b[k]);
} else {
c[k] = a[k];
}
Expand All @@ -955,6 +955,12 @@ d3.interpolateObject = function(a, b) {

var d3_interpolate_number = /[-+]?(?:\d+\.\d+|\d+\.|\.\d+|\d+)(?:[eE][-]?\d+)?/g;

function d3_interpolateByName(n) {
return n == "transform"
? d3.interpolateTransform
: d3.interpolate;
}

d3.interpolators = [
d3.interpolateObject,
function(a, b) { return (b instanceof Array) && d3.interpolateArray(a, b); },
Expand Down Expand Up @@ -1989,17 +1995,18 @@ function d3_transitionNull(d, i, a) {
return a != "" && d3_transitionRemove;
}

function d3_transitionTween(b) {
function d3_transitionTween(name, b) {
var interpolate = d3_interpolateByName(name);

function transitionFunction(d, i, a) {
var v = b.call(this, d, i);
return v == null
? a != "" && d3_transitionRemove
: a != v && d3.interpolate(a, v);
: a != v && interpolate(a, v);
}

function transitionString(d, i, a) {
return a != b && d3.interpolate(a, b);
return a != b && interpolate(a, b);
}

return typeof b === "function" ? transitionFunction
Expand Down Expand Up @@ -2064,7 +2071,7 @@ d3_transitionPrototype.selectAll = function(selector) {
return d3_transition(subgroups, this.id, this.time).ease(this.ease());
};
d3_transitionPrototype.attr = function(name, value) {
return this.attrTween(name, d3_transitionTween(value));
return this.attrTween(name, d3_transitionTween(name, value));
};

d3_transitionPrototype.attrTween = function(nameNS, tween) {
Expand All @@ -2088,7 +2095,7 @@ d3_transitionPrototype.attrTween = function(nameNS, tween) {
};
d3_transitionPrototype.style = function(name, value, priority) {
if (arguments.length < 3) priority = "";
return this.styleTween(name, d3_transitionTween(value), priority);
return this.styleTween(name, d3_transitionTween(name, value), priority);
};

d3_transitionPrototype.styleTween = function(name, tween, priority) {
Expand Down
4 changes: 2 additions & 2 deletions d3.min.js

Large diffs are not rendered by default.

8 changes: 7 additions & 1 deletion src/core/interpolate.js
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ d3.interpolateObject = function(a, b) {
k;
for (k in a) {
if (k in b) {
i[k] = d3.interpolate(a[k], b[k]);
i[k] = d3_interpolateByName(k)(a[k], b[k]);
} else {
c[k] = a[k];
}
Expand All @@ -168,6 +168,12 @@ d3.interpolateObject = function(a, b) {

var d3_interpolate_number = /[-+]?(?:\d+\.\d+|\d+\.|\.\d+|\d+)(?:[eE][-]?\d+)?/g;

function d3_interpolateByName(n) {
return n == "transform"
? d3.interpolateTransform
: d3.interpolate;
}

d3.interpolators = [
d3.interpolateObject,
function(a, b) { return (b instanceof Array) && d3.interpolateArray(a, b); },
Expand Down
2 changes: 1 addition & 1 deletion src/core/transition-attr.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
d3_transitionPrototype.attr = function(name, value) {
return this.attrTween(name, d3_transitionTween(value));
return this.attrTween(name, d3_transitionTween(name, value));
};

d3_transitionPrototype.attrTween = function(nameNS, tween) {
Expand Down
2 changes: 1 addition & 1 deletion src/core/transition-style.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
d3_transitionPrototype.style = function(name, value, priority) {
if (arguments.length < 3) priority = "";
return this.styleTween(name, d3_transitionTween(value), priority);
return this.styleTween(name, d3_transitionTween(name, value), priority);
};

d3_transitionPrototype.styleTween = function(name, tween, priority) {
Expand Down
7 changes: 4 additions & 3 deletions src/core/transition.js
Original file line number Diff line number Diff line change
Expand Up @@ -92,17 +92,18 @@ function d3_transitionNull(d, i, a) {
return a != "" && d3_transitionRemove;
}

function d3_transitionTween(b) {
function d3_transitionTween(name, b) {
var interpolate = d3_interpolateByName(name);

function transitionFunction(d, i, a) {
var v = b.call(this, d, i);
return v == null
? a != "" && d3_transitionRemove
: a != v && d3.interpolate(a, v);
: a != v && interpolate(a, v);
}

function transitionString(d, i, a) {
return a != b && d3.interpolate(a, b);
return a != b && interpolate(a, b);
}

return typeof b === "function" ? transitionFunction
Expand Down

0 comments on commit a7ff9fa

Please sign in to comment.