Skip to content

Commit 7a1f67b

Browse files
committed
Merge branch 'release'
2 parents 69bf26e + 897b0b6 commit 7a1f67b

8 files changed

Lines changed: 58 additions & 46 deletions

File tree

d3.js

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ try {
1010
d3_style_setProperty.call(this, name, value + "", priority);
1111
};
1212
}
13-
d3 = {version: "2.1.1"}; // semver
13+
d3 = {version: "2.1.2"}; // semver
1414
var d3_arraySubclass = [].__proto__?
1515

1616
// Until ECMAScript supports array subclassing, prototype injection works well.
@@ -591,9 +591,15 @@ d3.ease = function(name) {
591591
var i = name.indexOf("-"),
592592
t = i >= 0 ? name.substring(0, i) : name,
593593
m = i >= 0 ? name.substring(i + 1) : "in";
594-
return d3_ease_mode[m](d3_ease[t].apply(null, Array.prototype.slice.call(arguments, 1)));
594+
return d3_ease_clamp(d3_ease_mode[m](d3_ease[t].apply(null, Array.prototype.slice.call(arguments, 1))));
595595
};
596596

597+
function d3_ease_clamp(f) {
598+
return function(t) {
599+
return t <= 0 ? 0 : t >= 1 ? 1 : f(t);
600+
};
601+
}
602+
597603
function d3_ease_reverse(f) {
598604
return function(t) {
599605
return 1 - f(1 - t);
@@ -1802,15 +1808,15 @@ function d3_transition(groups, id) {
18021808
function tick(elapsed) {
18031809
if (lock.active !== id) return stop();
18041810

1805-
var t = Math.min(1, (elapsed - delay) / duration),
1811+
var t = (elapsed - delay) / duration,
18061812
e = ease(t),
18071813
n = tweened.length;
18081814

18091815
while (n > 0) {
18101816
tweened[--n].call(node, e);
18111817
}
18121818

1813-
if (t === 1) {
1819+
if (t >= 1) {
18141820
stop();
18151821
d3_transitionInheritId = id;
18161822
event.end.dispatch.call(node, d, i);
@@ -2602,8 +2608,8 @@ d3.svg.arc = function() {
26022608
+ "A" + r1 + "," + r1 + " 0 1,1 0," + (-r1)
26032609
+ "A" + r1 + "," + r1 + " 0 1,1 0," + r1
26042610
+ "M0," + r0
2605-
+ "A" + r0 + "," + r0 + " 0 1,1 0," + (-r0)
2606-
+ "A" + r0 + "," + r0 + " 0 1,1 0," + r0
2611+
+ "A" + r0 + "," + r0 + " 0 1,0 0," + (-r0)
2612+
+ "A" + r0 + "," + r0 + " 0 1,0 0," + r0
26072613
+ "Z"
26082614
: "M0," + r1
26092615
+ "A" + r1 + "," + r1 + " 0 1,1 0," + (-r1)

d3.min.js

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

src/core/core.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
d3 = {version: "2.1.1"}; // semver
1+
d3 = {version: "2.1.2"}; // semver

src/core/ease.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,15 @@ d3.ease = function(name) {
6060
var i = name.indexOf("-"),
6161
t = i >= 0 ? name.substring(0, i) : name,
6262
m = i >= 0 ? name.substring(i + 1) : "in";
63-
return d3_ease_mode[m](d3_ease[t].apply(null, Array.prototype.slice.call(arguments, 1)));
63+
return d3_ease_clamp(d3_ease_mode[m](d3_ease[t].apply(null, Array.prototype.slice.call(arguments, 1))));
6464
};
6565

66+
function d3_ease_clamp(f) {
67+
return function(t) {
68+
return t <= 0 ? 0 : t >= 1 ? 1 : f(t);
69+
};
70+
}
71+
6672
function d3_ease_reverse(f) {
6773
return function(t) {
6874
return 1 - f(1 - t);

src/core/transition.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,15 +57,15 @@ function d3_transition(groups, id) {
5757
function tick(elapsed) {
5858
if (lock.active !== id) return stop();
5959

60-
var t = Math.min(1, (elapsed - delay) / duration),
60+
var t = (elapsed - delay) / duration,
6161
e = ease(t),
6262
n = tweened.length;
6363

6464
while (n > 0) {
6565
tweened[--n].call(node, e);
6666
}
6767

68-
if (t === 1) {
68+
if (t >= 1) {
6969
stop();
7070
d3_transitionInheritId = id;
7171
event.end.dispatch.call(node, d, i);

src/svg/arc.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ d3.svg.arc = function() {
2121
+ "A" + r1 + "," + r1 + " 0 1,1 0," + (-r1)
2222
+ "A" + r1 + "," + r1 + " 0 1,1 0," + r1
2323
+ "M0," + r0
24-
+ "A" + r0 + "," + r0 + " 0 1,1 0," + (-r0)
25-
+ "A" + r0 + "," + r0 + " 0 1,1 0," + r0
24+
+ "A" + r0 + "," + r0 + " 0 1,0 0," + (-r0)
25+
+ "A" + r0 + "," + r0 + " 0 1,0 0," + r0
2626
+ "Z"
2727
: "M0," + r1
2828
+ "A" + r1 + "," + r1 + " 0 1,1 0," + (-r1)

test/core/ease-test.js

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -51,33 +51,33 @@ suite.addBatch({
5151
var e = ease("bounce");
5252
assert.inDelta(e(.5), 0.765625, 1e-6);
5353
},
54-
"all easing functions return approximately 0 for t = 0": function(ease) {
55-
assert.inDelta(ease("linear")(0), 0, 1e-9);
56-
assert.inDelta(ease("poly", 2)(0), 0, 1e-9);
57-
assert.inDelta(ease("quad")(0), 0, 1e-9);
58-
assert.inDelta(ease("cubic")(0), 0, 1e-9);
59-
assert.inDelta(ease("sin")(0), 0, 1e-9);
60-
assert.inDelta(ease("exp")(0), 0, 1e-3); // XXX
61-
assert.inDelta(ease("circle")(0), 0, 1e-9);
62-
assert.inDelta(ease("elastic")(0), 0, 1e-9);
63-
assert.inDelta(ease("back")(0), 0, 1e-9);
64-
assert.inDelta(ease("bounce")(0), 0, 1e-9);
65-
},
66-
"all easing functions return approximately 1 for t = 1": function(ease) {
67-
assert.inDelta(ease("linear")(1), 1, 1e-9);
68-
assert.inDelta(ease("poly", 2)(1), 1, 1e-9);
69-
assert.inDelta(ease("quad")(1), 1, 1e-9);
70-
assert.inDelta(ease("cubic")(1), 1, 1e-9);
71-
assert.inDelta(ease("sin")(1), 1, 1e-9);
72-
assert.inDelta(ease("exp")(1), 1, 1e-9);
73-
assert.inDelta(ease("circle")(1), 1, 1e-9);
74-
assert.inDelta(ease("elastic")(1), 1, 1e-3); // XXX
75-
assert.inDelta(ease("back")(1), 1, 1e-9);
76-
assert.inDelta(ease("bounce")(1), 1, 1e-9);
54+
"all easing functions return exactly 0 for t = 0": function(ease) {
55+
assert.equal(ease("linear")(0), 0);
56+
assert.equal(ease("poly", 2)(0), 0);
57+
assert.equal(ease("quad")(0), 0);
58+
assert.equal(ease("cubic")(0), 0);
59+
assert.equal(ease("sin")(0), 0);
60+
assert.equal(ease("exp")(0), 0);
61+
assert.equal(ease("circle")(0), 0);
62+
assert.equal(ease("elastic")(0), 0);
63+
assert.equal(ease("back")(0), 0);
64+
assert.equal(ease("bounce")(0), 0);
65+
},
66+
"all easing functions return exactly 1 for t = 1": function(ease) {
67+
assert.equal(ease("linear")(1), 1);
68+
assert.equal(ease("poly", 2)(1), 1);
69+
assert.equal(ease("quad")(1), 1);
70+
assert.equal(ease("cubic")(1), 1);
71+
assert.equal(ease("sin")(1), 1);
72+
assert.equal(ease("exp")(1), 1);
73+
assert.equal(ease("circle")(1), 1);
74+
assert.equal(ease("elastic")(1), 1);
75+
assert.equal(ease("back")(1), 1);
76+
assert.equal(ease("bounce")(1), 1);
7777
},
7878
"the -in suffix returns the identity": function(ease) {
79-
assert.equal(ease("linear-in"), ease("linear"));
80-
assert.equal(ease("quad-in"), ease("quad"));
79+
assert.inDelta(ease("linear-in")(.25), ease("linear")(.25), 1e-6);
80+
assert.inDelta(ease("quad-in")(.75), ease("quad")(.75), 1e-6);
8181
},
8282
"the -out suffix returns the reverse": function(ease) {
8383
assert.inDelta(ease("sin-out")(.25), 1 - ease("sin-in")(.75), 1e-6);
@@ -94,10 +94,10 @@ suite.addBatch({
9494
assert.inDelta(ease("bounce-out-in")(.25), .5 * ease("bounce-out")(.5), 1e-6);
9595
assert.inDelta(ease("elastic-out-in")(.25), .5 * ease("elastic-out")(.5), 1e-6);
9696
},
97-
"does not clamp input time": function(ease) {
97+
"clamps input time": function(ease) {
9898
var e = ease("linear");
99-
assert.inDelta(e(-1), -1, 1e-6);
100-
assert.inDelta(e(2), 2, 1e-6);
99+
assert.inDelta(e(-1), 0, 1e-6);
100+
assert.inDelta(e(2), 1, 1e-6);
101101
},
102102
"poly": {
103103
"supports an optional polynomial": function(ease) {

test/svg/arc-test.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,13 +120,13 @@ suite.addBatch({
120120
},
121121
"draws an annulus when inner radius is non-zero and angle is approximately 2π": function(arc) {
122122
var a = arc().innerRadius(100).outerRadius(200);
123-
assert.pathEqual(a.startAngle(0).endAngle(2 * Math.PI - 1e-9)(), "M0,200A200,200 0 1,1 0,-200A200,200 0 1,1 0,200M0,100A100,100 0 1,1 0,-100A100,100 0 1,1 0,100Z");
124-
assert.pathEqual(a.startAngle(Math.PI + 1e-9).endAngle(3 * Math.PI - 1e-9)(), "M0,200A200,200 0 1,1 0,-200A200,200 0 1,1 0,200M0,100A100,100 0 1,1 0,-100A100,100 0 1,1 0,100Z");
123+
assert.pathEqual(a.startAngle(0).endAngle(2 * Math.PI - 1e-9)(), "M0,200A200,200 0 1,1 0,-200A200,200 0 1,1 0,200M0,100A100,100 0 1,0 0,-100A100,100 0 1,0 0,100Z");
124+
assert.pathEqual(a.startAngle(Math.PI + 1e-9).endAngle(3 * Math.PI - 1e-9)(), "M0,200A200,200 0 1,1 0,-200A200,200 0 1,1 0,200M0,100A100,100 0 1,0 0,-100A100,100 0 1,0 0,100Z");
125125
},
126126
"draws an annulus when inner radius is non-zero and angle is greater than 2π": function(arc) {
127127
var a = arc().innerRadius(100).outerRadius(200);
128-
assert.pathEqual(a.startAngle(0).endAngle(7)(), "M0,200A200,200 0 1,1 0,-200A200,200 0 1,1 0,200M0,100A100,100 0 1,1 0,-100A100,100 0 1,1 0,100Z");
129-
assert.pathEqual(a.startAngle(-1).endAngle(6)(), "M0,200A200,200 0 1,1 0,-200A200,200 0 1,1 0,200M0,100A100,100 0 1,1 0,-100A100,100 0 1,1 0,100Z");
128+
assert.pathEqual(a.startAngle(0).endAngle(7)(), "M0,200A200,200 0 1,1 0,-200A200,200 0 1,1 0,200M0,100A100,100 0 1,0 0,-100A100,100 0 1,0 0,100Z");
129+
assert.pathEqual(a.startAngle(-1).endAngle(6)(), "M0,200A200,200 0 1,1 0,-200A200,200 0 1,1 0,200M0,100A100,100 0 1,0 0,-100A100,100 0 1,0 0,100Z");
130130
},
131131
"draws an annular sector when both radii are non-zero and angle is less than 2π": function(arc) {
132132
var a = arc().innerRadius(100).outerRadius(200);

0 commit comments

Comments
 (0)