Skip to content

Commit

Permalink
Fixed VML, added Set.splice method
Browse files Browse the repository at this point in the history
  • Loading branch information
DmitryBaranovskiy committed Aug 16, 2011
1 parent e9f2c24 commit 951f8fb
Show file tree
Hide file tree
Showing 4 changed files with 152 additions and 49 deletions.
2 changes: 1 addition & 1 deletion raphael-min.js

Large diffs are not rendered by default.

82 changes: 72 additions & 10 deletions raphael.core.js
Original file line number Diff line number Diff line change
Expand Up @@ -3509,17 +3509,12 @@
= (object) original element
\*/
elproto.animateWith = function (element, params, ms, easing, callback) {
// var a = R.animation(params, ms, easing, callback);
// status = element.status(anim);
// this.animate(a);
// this.status(a, status);
this.animate(params, ms, easing, callback);
var start, el;
for (var i = 0, ii = animationElements.length; i < ii; i++) {
el = animationElements[i];
if (el.el.id == element.id) {
start = el.timestamp;
} else if (el.el.id == this.id) {
el.start = start;
}
}
return this.animate(params, ms, easing, callback);
return this;
};
function CubicBezierAtTime(t, p1x, p1y, p2x, p2y, duration) {
var cx = 3 * p1x,
Expand Down Expand Up @@ -4119,11 +4114,78 @@
}
return this;
};
/*\
* Set.clear
[ method ]
**
* Removeds all elements from the set
\*/
setproto.clear = function () {
while (this.length) {
this.pop();
}
};
/*\
* Set.splice
[ method ]
**
* Removes given element from the set
**
> Parameters
**
- index (number) position of the deletion
- count (number) number of element to remove
- insertion… (object) #optional elements to insert
= (object) set elements that were deleted
\*/
setproto.splice = function (index, count, insertion) {
index = index < 0 ? mmax(this.length + index, 0) : index;
count = mmax(0, mmin(this.length - index, count));
var tail = [],
todel = [],
args = [],
i;
for (i = 2; i < arguments.length; i++) {
args.push(arguments[i]);
}
for (i = 0; i < count; i++) {
todel.push(this[index + i]);
}
for (; i < this.length - index; i++) {
tail.push(this[index + i]);
}
var arglen = args.length;
for (i = 0; i < arglen + tail.length; i++) {
this.items[index + i] = this[index + i] = i < arglen ? args[i] : tail[i - arglen];
}
i = this.items.length = this.length -= count - arglen;
while (this[i]) {
delete this[i++];
}
return new Set(todel);
};
/*\
* Set.exclude
[ method ]
**
* Removes given element from the set
**
> Parameters
**
- element (object) element to remove
= (boolean) `true` if object was found & removed from the set
\*/
setproto.exclude = function (el) {
for (var i = 0, ii = this.length, found; i < ii; i++) if (found || this[i] == el) {
this[i] = this[i + 1];
found = 1;
}
if (found) {
this.length--;
delete this[i];
return true;
}
};
setproto.animate = function (params, ms, easing, callback) {
(R.is(easing, "function") || !easing) && (callback = easing || null);
var len = this.items.length,
Expand Down
86 changes: 62 additions & 24 deletions raphael.js
Original file line number Diff line number Diff line change
Expand Up @@ -2560,17 +2560,12 @@
};

elproto.animateWith = function (element, params, ms, easing, callback) {
// var a = R.animation(params, ms, easing, callback);
// status = element.status(anim);
// this.animate(a);
// this.status(a, status);
this.animate(params, ms, easing, callback);
var start, el;
for (var i = 0, ii = animationElements.length; i < ii; i++) {
el = animationElements[i];
if (el.el.id == element.id) {
start = el.timestamp;
} else if (el.el.id == this.id) {
el.start = start;
}
}
return this.animate(params, ms, easing, callback);
return this;
};
function CubicBezierAtTime(t, p1x, p1y, p2x, p2y, duration) {
var cx = 3 * p1x,
Expand Down Expand Up @@ -3024,11 +3019,51 @@
}
return this;
};

setproto.clear = function () {
while (this.length) {
this.pop();
}
};

setproto.splice = function (index, count, insertion) {
index = index < 0 ? mmax(this.length + index, 0) : index;
count = mmax(0, mmin(this.length - index, count));
var tail = [],
todel = [],
args = [],
i;
for (i = 2; i < arguments.length; i++) {
args.push(arguments[i]);
}
for (i = 0; i < count; i++) {
todel.push(this[index + i]);
}
for (; i < this.length - index; i++) {
tail.push(this[index + i]);
}
var arglen = args.length;
for (i = 0; i < arglen + tail.length; i++) {
this.items[index + i] = this[index + i] = i < arglen ? args[i] : tail[i - arglen];
}
i = this.items.length = this.length -= count - arglen;
while (this[i]) {
delete this[i++];
}
return new Set(todel);
};

setproto.exclude = function (el) {
for (var i = 0, ii = this.length, found; i < ii; i++) if (found || this[i] == el) {
this[i] = this[i + 1];
found = 1;
}
if (found) {
this.length--;
delete this[i];
return true;
}
};
setproto.animate = function (params, ms, easing, callback) {
(R.is(easing, "function") || !easing) && (callback = easing || null);
var len = this.items.length,
Expand Down Expand Up @@ -4504,10 +4539,10 @@ window.Raphael.vml && function (R) {
node.path = path2vml(a.path);
}
if (isOval) {
var cx = a.cx,
cy = a.cy,
rx = a.rx || a.r || 0,
ry = a.ry || a.r || 0;
var cx = +a.cx,
cy = +a.cy,
rx = +a.rx || +a.r || 0,
ry = +a.ry || +a.r || 0;
node.path = R.format("ar{0},{1},{2},{3},{4},{1},{4},{1}x", round((cx - rx) * zoom), round((cy - ry) * zoom), round((cx + rx) * zoom), round((cy + ry) * zoom), round(cx * zoom));
}
if ("clip-rect" in params) {
Expand Down Expand Up @@ -4785,19 +4820,21 @@ window.Raphael.vml && function (R) {
if (tstr == null) {
return this._.transform;
}
R._extractTransform(this, tstr);
var vbs = this.paper._viewBoxShift,
vbt = vbs ? "s" + [vbs.scale, vbs.scale] + "-1-1t" + [vbs.dx, vbs.dy] : E,
oldt;
if (vbs) {
oldt = tstr = Str(tstr).replace(/\.{3}|\u2026/g, this._.transform || E);
}
R._extractTransform(this, vbt + tstr);
var matrix = this.matrix.clone(),
vbs = this.paper._viewBoxShift,
skew = this.skew,
o = this.node,
split,
isGrad = Str(this.attrs.fill).indexOf("-") + 1;
isGrad = ~Str(this.attrs.fill).indexOf("-"),
isPatt = !Str(this.attrs.fill).indexOf("url(");
matrix.translate(-.5, -.5);
if (vbs) {
matrix.scale(vbs.scale, vbs.scale, -1, -1);
matrix.translate(vbs.dx, vbs.dy);
}
if (isGrad || this.type == "image") {
if (isPatt || isGrad || this.type == "image") {
skew.matrix = "1 0 0 1";
skew.offset = "0 0";
split = matrix.split();
Expand All @@ -4818,6 +4855,7 @@ window.Raphael.vml && function (R) {
skew.matrix = Str(matrix);
skew.offset = matrix.offset();
}
oldt && (this._.transform = oldt);
return this;
};
elproto.rotate = function (deg, cx, cy) {
Expand Down Expand Up @@ -5004,7 +5042,7 @@ window.Raphael.vml && function (R) {
if (this.removed) {
return this;
}
if (element.constructor == Set) {
if (element.constructor == R.st.constructor) {
element = element[element.length - 1];
}
if (element.node.nextSibling) {
Expand All @@ -5019,7 +5057,7 @@ window.Raphael.vml && function (R) {
if (this.removed) {
return this;
}
if (element.constructor == Set) {
if (element.constructor == R.st.constructor) {
element = element[0];
}
element.node.parentNode.insertBefore(this.node, element.node);
Expand Down
31 changes: 17 additions & 14 deletions raphael.vml.js
Original file line number Diff line number Diff line change
Expand Up @@ -173,10 +173,10 @@ window.Raphael.vml && function (R) {
node.path = path2vml(a.path);
}
if (isOval) {
var cx = a.cx,
cy = a.cy,
rx = a.rx || a.r || 0,
ry = a.ry || a.r || 0;
var cx = +a.cx,
cy = +a.cy,
rx = +a.rx || +a.r || 0,
ry = +a.ry || +a.r || 0;
node.path = R.format("ar{0},{1},{2},{3},{4},{1},{4},{1}x", round((cx - rx) * zoom), round((cy - ry) * zoom), round((cx + rx) * zoom), round((cy + ry) * zoom), round(cx * zoom));
}
if ("clip-rect" in params) {
Expand Down Expand Up @@ -454,19 +454,21 @@ window.Raphael.vml && function (R) {
if (tstr == null) {
return this._.transform;
}
R._extractTransform(this, tstr);
var vbs = this.paper._viewBoxShift,
vbt = vbs ? "s" + [vbs.scale, vbs.scale] + "-1-1t" + [vbs.dx, vbs.dy] : E,
oldt;
if (vbs) {
oldt = tstr = Str(tstr).replace(/\.{3}|\u2026/g, this._.transform || E);
}
R._extractTransform(this, vbt + tstr);
var matrix = this.matrix.clone(),
vbs = this.paper._viewBoxShift,
skew = this.skew,
o = this.node,
split,
isGrad = Str(this.attrs.fill).indexOf("-") + 1;
isGrad = ~Str(this.attrs.fill).indexOf("-"),
isPatt = !Str(this.attrs.fill).indexOf("url(");
matrix.translate(-.5, -.5);
if (vbs) {
matrix.scale(vbs.scale, vbs.scale, -1, -1);
matrix.translate(vbs.dx, vbs.dy);
}
if (isGrad || this.type == "image") {
if (isPatt || isGrad || this.type == "image") {
skew.matrix = "1 0 0 1";
skew.offset = "0 0";
split = matrix.split();
Expand All @@ -487,6 +489,7 @@ window.Raphael.vml && function (R) {
skew.matrix = Str(matrix);
skew.offset = matrix.offset();
}
oldt && (this._.transform = oldt);
return this;
};
elproto.rotate = function (deg, cx, cy) {
Expand Down Expand Up @@ -673,7 +676,7 @@ window.Raphael.vml && function (R) {
if (this.removed) {
return this;
}
if (element.constructor == Set) {
if (element.constructor == R.st.constructor) {
element = element[element.length - 1];
}
if (element.node.nextSibling) {
Expand All @@ -688,7 +691,7 @@ window.Raphael.vml && function (R) {
if (this.removed) {
return this;
}
if (element.constructor == Set) {
if (element.constructor == R.st.constructor) {
element = element[0];
}
element.node.parentNode.insertBefore(this.node, element.node);
Expand Down

0 comments on commit 951f8fb

Please sign in to comment.