Facilitate code minification in PathIterator.

This commit is contained in:
Jürg Lehni 2016-07-22 14:21:35 +02:00
parent becac4c921
commit 23f3097f84
2 changed files with 12 additions and 11 deletions

View file

@ -107,25 +107,28 @@ var PathIterator = Base.extend({
_get: function(offset) {
// Make sure we're not beyond the requested offset already. Search the
// start position backwards from where to then process the loop below.
var i, j = this.index;
var parts = this.parts,
length = parts.length,
start,
i, j = this.index;
for (;;) {
i = j;
if (!j || this.parts[--j].offset < offset)
if (!j || parts[--j].offset < offset)
break;
}
// Find the part that succeeds the given offset, then interpolate
// with the previous part
for (var l = this.parts.length; i < l; i++) {
var part = this.parts[i];
for (; i < length; i++) {
var part = parts[i];
if (part.offset >= offset) {
// Found the right part, remember current position
this.index = i;
// Now get the previous part so we can linearly interpolate
// the curve parameter
var prev = this.parts[i - 1];
// Make sure we only use the previous parameter value if its
// for the same curve, by checking index. Use 0 otherwise.
var prevTime = prev && prev.index === part.index ? prev.time : 0,
var prev = parts[i - 1],
// Make sure we only use the previous parameter value if its
// for the same curve, by checking index. Use 0 otherwise.
prevTime = prev && prev.index === part.index ? prev.time : 0,
prevOffset = prev ? prev.offset : 0;
return {
index: part.index,
@ -136,9 +139,8 @@ var PathIterator = Base.extend({
}
}
// If we're still here, return last one
var part = this.parts[this.parts.length - 1];
return {
index: part.index,
index: parts[length - 1].index,
time: 1
};
},

View file

@ -402,7 +402,6 @@ test('path.curves on closed paths', function() {
equals(path.curves.toString(), "{ point1: { x: 100, y: 0 }, handle1: { x: 55.22847, y: 0 }, handle2: { x: 0, y: -55.22847 }, point2: { x: 200, y: 100 } },{ point1: { x: 200, y: 100 }, handle1: { x: 0, y: 55.22847 }, handle2: { x: 55.22847, y: 0 }, point2: { x: 100, y: 200 } },{ point1: { x: 100, y: 200 }, handle1: { x: -55.22847, y: 0 }, handle2: { x: -55.22847, y: 0 }, point2: { x: 100, y: 0 } }");
});
test('path.flatten(maxDistance)', function() {
var path = new Path.Circle(new Size(80, 50), 35);