Working on 0.8
This commit is contained in:
parent
2dbef68fee
commit
b3e699a2ee
268
raphael.js
268
raphael.js
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Raphael 0.7.4 - JavaScript Vector Library
|
||||
* Raphael 0.8 - JavaScript Vector Library
|
||||
*
|
||||
* Copyright (c) 2008 - 2009 Dmitry Baranovskiy (http://raphaeljs.com)
|
||||
* Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.
|
||||
|
|
@ -10,6 +10,10 @@ window.Raphael = (function () {
|
|||
var separator = /[, ]+/,
|
||||
doc = document,
|
||||
win = window,
|
||||
oldRaphael = {
|
||||
was: "Raphael" in window,
|
||||
is: window.Raphael
|
||||
},
|
||||
R = function () {
|
||||
return create.apply(R, arguments);
|
||||
},
|
||||
|
|
@ -17,9 +21,8 @@ window.Raphael = (function () {
|
|||
availableAttrs = {cx: 0, cy: 0, fill: "#fff", "fill-opacity": 1, font: '10px "Arial"', "font-family": '"Arial"', "font-size": "10", "font-style": "normal", "font-weight": 400, gradient: 0, height: 0, href: "http://raphaeljs.com/", opacity: 1, path: "M0,0", r: 0, rotation: 0, rx: 0, ry: 0, scale: "1 1", src: "", stroke: "#000", "stroke-dasharray": "", "stroke-linecap": "butt", "stroke-linejoin": "butt", "stroke-miterlimit": 0, "stroke-opacity": 1, "stroke-width": 1, target: "_blank", "text-anchor": "middle", title: "Raphael", translation: "0 0", width: 0, x: 0, y: 0},
|
||||
availableAnimAttrs = {cx: "number", cy: "number", fill: "colour", "fill-opacity": "number", "font-size": "number", height: "number", opacity: "number", path: "path", r: "number", rotation: "csv", rx: "number", ry: "number", scale: "csv", stroke: "colour", "stroke-opacity": "number", "stroke-width": "number", translation: "csv", width: "number", x: "number", y: "number"},
|
||||
events = ["click", "dblclick", "mousedown", "mousemove", "mouseout", "mouseover", "mouseup"];
|
||||
R.version = "0.7.4";
|
||||
R.type = (window.SVGAngle || document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1")
|
||||
? "SVG" : "VML");
|
||||
R.version = "0.8";
|
||||
R.type = (window.SVGAngle || document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1") ? "SVG" : "VML");
|
||||
R.svg = !(R.vml = R.type == "VML");
|
||||
R.idGenerator = 0;
|
||||
R.fn = {};
|
||||
|
|
@ -146,28 +149,28 @@ window.Raphael = (function () {
|
|||
}
|
||||
if (rgb[4]) {
|
||||
rgb = rgb[4].split(/\s*,\s*/);
|
||||
red = parseFloat(rgb[0], 10);
|
||||
green = parseFloat(rgb[1], 10);
|
||||
blue = parseFloat(rgb[2], 10);
|
||||
red = parseFloat(rgb[0]);
|
||||
green = parseFloat(rgb[1]);
|
||||
blue = parseFloat(rgb[2]);
|
||||
}
|
||||
if (rgb[5]) {
|
||||
rgb = rgb[5].split(/\s*,\s*/);
|
||||
red = parseFloat(rgb[0], 10) * 2.55;
|
||||
green = parseFloat(rgb[1], 10) * 2.55;
|
||||
blue = parseFloat(rgb[2], 10) * 2.55;
|
||||
red = parseFloat(rgb[0]) * 2.55;
|
||||
green = parseFloat(rgb[1]) * 2.55;
|
||||
blue = parseFloat(rgb[2]) * 2.55;
|
||||
}
|
||||
if (rgb[6]) {
|
||||
rgb = rgb[6].split(/\s*,\s*/);
|
||||
red = parseFloat(rgb[0], 10);
|
||||
green = parseFloat(rgb[1], 10);
|
||||
blue = parseFloat(rgb[2], 10);
|
||||
red = parseFloat(rgb[0]);
|
||||
green = parseFloat(rgb[1]);
|
||||
blue = parseFloat(rgb[2]);
|
||||
return R.hsb2rgb(red, green, blue);
|
||||
}
|
||||
if (rgb[7]) {
|
||||
rgb = rgb[7].split(/\s*,\s*/);
|
||||
red = parseFloat(rgb[0], 10) * 2.55;
|
||||
green = parseFloat(rgb[1], 10) * 2.55;
|
||||
blue = parseFloat(rgb[2], 10) * 2.55;
|
||||
red = parseFloat(rgb[0]) * 2.55;
|
||||
green = parseFloat(rgb[1]) * 2.55;
|
||||
blue = parseFloat(rgb[2]) * 2.55;
|
||||
return R.hsb2rgb(red, green, blue);
|
||||
}
|
||||
var rgb = {r: red, g: green, b: blue};
|
||||
|
|
@ -476,7 +479,7 @@ window.Raphael = (function () {
|
|||
} else if (angle.toLowerCase() == "h") {
|
||||
angle = 0;
|
||||
} else {
|
||||
angle = parseFloat(angle, 10);
|
||||
angle = parseFloat(angle);
|
||||
}
|
||||
angle = -angle;
|
||||
var grobj = {angle: angle, type: "linear", dots: [], vector: [0, 0, Math.cos(angle * Math.PI / 180).toFixed(3), Math.sin(angle * Math.PI / 180).toFixed(3)]};
|
||||
|
|
@ -504,7 +507,7 @@ window.Raphael = (function () {
|
|||
}
|
||||
for (var i = 1, ii = grobj.dots.length - 1; i < ii; i++) {
|
||||
if (!grobj.dots[i].offset) {
|
||||
var start = parseFloat(grobj.dots[i - 1].offset || 0, 10),
|
||||
var start = parseFloat(grobj.dots[i - 1].offset || 0),
|
||||
end = false;
|
||||
for (var j = i + 1; j < ii; j++) {
|
||||
if (grobj.dots[j].offset) {
|
||||
|
|
@ -516,7 +519,7 @@ window.Raphael = (function () {
|
|||
end = 100;
|
||||
j = ii;
|
||||
}
|
||||
end = parseFloat(end, 10);
|
||||
end = parseFloat(end);
|
||||
var d = (end - start) / (j - i + 1);
|
||||
for (; i < j; i++) {
|
||||
start += d;
|
||||
|
|
@ -553,7 +556,7 @@ window.Raphael = (function () {
|
|||
}
|
||||
};
|
||||
var plugins = function (con, scope, add) {
|
||||
for (var prop in add) if (!(prop in con)) {
|
||||
for (var prop in add) if (add.hasOwnProperty(prop) && !(prop in con)) {
|
||||
switch (typeof add[prop]) {
|
||||
case "function":
|
||||
con[prop] = con === scope ? add[prop] : function () { add[prop].apply(scope, arguments); };
|
||||
|
|
@ -591,20 +594,20 @@ window.Raphael = (function () {
|
|||
};
|
||||
p.moveTo = function (x, y) {
|
||||
var d = this.isAbsolute?"M":"m";
|
||||
d += parseFloat(x, 10).toFixed(3) + " " + parseFloat(y, 10).toFixed(3) + " ";
|
||||
d += parseFloat(x).toFixed(3) + " " + parseFloat(y).toFixed(3) + " ";
|
||||
var oldD = this[0].getAttribute("d") || "";
|
||||
(oldD == "M0,0") && (oldD = "");
|
||||
this[0].setAttribute("d", oldD + d);
|
||||
this.last.x = (this.isAbsolute ? 0 : this.last.x) + parseFloat(x, 10);
|
||||
this.last.y = (this.isAbsolute ? 0 : this.last.y) + parseFloat(y, 10);
|
||||
this.last.x = (this.isAbsolute ? 0 : this.last.x) + parseFloat(x);
|
||||
this.last.y = (this.isAbsolute ? 0 : this.last.y) + parseFloat(y);
|
||||
this.attrs.path = oldD + d;
|
||||
return this;
|
||||
};
|
||||
p.lineTo = function (x, y) {
|
||||
this.last.x = (this.isAbsolute ? 0 : this.last.x) + parseFloat(x, 10);
|
||||
this.last.y = (this.isAbsolute ? 0 : this.last.y) + parseFloat(y, 10);
|
||||
this.last.x = (this.isAbsolute ? 0 : this.last.x) + parseFloat(x);
|
||||
this.last.y = (this.isAbsolute ? 0 : this.last.y) + parseFloat(y);
|
||||
var d = this.isAbsolute?"L":"l";
|
||||
d += parseFloat(x, 10).toFixed(3) + " " + parseFloat(y, 10).toFixed(3) + " ";
|
||||
d += parseFloat(x).toFixed(3) + " " + parseFloat(y).toFixed(3) + " ";
|
||||
var oldD = this[0].getAttribute("d") || "";
|
||||
this[0].setAttribute("d", oldD + d);
|
||||
this.attrs.path = oldD + d;
|
||||
|
|
@ -612,11 +615,11 @@ window.Raphael = (function () {
|
|||
};
|
||||
p.arcTo = function (rx, ry, large_arc_flag, sweep_flag, x, y) {
|
||||
var d = this.isAbsolute ? "A" : "a";
|
||||
d += [parseFloat(rx, 10).toFixed(3), parseFloat(ry, 10).toFixed(3), 0, large_arc_flag, sweep_flag, parseFloat(x, 10).toFixed(3), parseFloat(y, 10).toFixed(3)].join(" ");
|
||||
d += [parseFloat(rx).toFixed(3), parseFloat(ry).toFixed(3), 0, large_arc_flag, sweep_flag, parseFloat(x).toFixed(3), parseFloat(y).toFixed(3)].join(" ");
|
||||
var oldD = this[0].getAttribute("d") || "";
|
||||
this[0].setAttribute("d", oldD + d);
|
||||
this.last.x = parseFloat(x, 10);
|
||||
this.last.y = parseFloat(y, 10);
|
||||
this.last.x = parseFloat(x);
|
||||
this.last.y = parseFloat(y);
|
||||
this.attrs.path = oldD + d;
|
||||
return this;
|
||||
};
|
||||
|
|
@ -625,9 +628,9 @@ window.Raphael = (function () {
|
|||
return this.lineTo(x1, y1);
|
||||
} else {
|
||||
var p = {};
|
||||
var x = parseFloat(x1, 10);
|
||||
var y = parseFloat(y1, 10);
|
||||
var w = parseFloat(w1, 10);
|
||||
var x = parseFloat(x1);
|
||||
var y = parseFloat(y1);
|
||||
var w = parseFloat(w1);
|
||||
var d = this.isAbsolute?"C":"c";
|
||||
var attr = [+this.last.x + w, +this.last.y, x - w, y, x, y];
|
||||
for (var i = 0, ii = attr.length; i < ii; i++) {
|
||||
|
|
@ -652,12 +655,12 @@ window.Raphael = (function () {
|
|||
d = d.toUpperCase();
|
||||
}
|
||||
for (var i = 0, ii = arguments.length; i < ii; i++) {
|
||||
d += parseFloat(arguments[i], 10).toFixed(3) + " ";
|
||||
d += parseFloat(arguments[i]).toFixed(3) + " ";
|
||||
}
|
||||
this.last.x = (this.isAbsolute ? 0 : this.last.x) + parseFloat(arguments[arguments.length - 2], 10);
|
||||
this.last.y = (this.isAbsolute ? 0 : this.last.y) + parseFloat(arguments[arguments.length - 1], 10);
|
||||
this.last.bx = parseFloat(arguments[arguments.length - 4], 10);
|
||||
this.last.by = parseFloat(arguments[arguments.length - 3], 10);
|
||||
this.last.x = (this.isAbsolute ? 0 : this.last.x) + parseFloat(arguments[arguments.length - 2]);
|
||||
this.last.y = (this.isAbsolute ? 0 : this.last.y) + parseFloat(arguments[arguments.length - 1]);
|
||||
this.last.bx = parseFloat(arguments[arguments.length - 4]);
|
||||
this.last.by = parseFloat(arguments[arguments.length - 3]);
|
||||
var oldD = this.node.getAttribute("d") || "";
|
||||
this.node.setAttribute("d", oldD + d);
|
||||
this.attrs.path = oldD + d;
|
||||
|
|
@ -672,13 +675,13 @@ window.Raphael = (function () {
|
|||
d = d.toUpperCase();
|
||||
}
|
||||
for (var i = 0, ii = arguments.length; i < ii; i++) {
|
||||
d += parseFloat(arguments[i], 10).toFixed(3) + " ";
|
||||
d += parseFloat(arguments[i]).toFixed(3) + " ";
|
||||
}
|
||||
this.last.x = (this.isAbsolute ? 0 : this.last.x) + parseFloat(arguments[arguments.length - 2], 10);
|
||||
this.last.y = (this.isAbsolute ? 0 : this.last.y) + parseFloat(arguments[arguments.length - 1], 10);
|
||||
this.last.x = (this.isAbsolute ? 0 : this.last.x) + parseFloat(arguments[arguments.length - 2]);
|
||||
this.last.y = (this.isAbsolute ? 0 : this.last.y) + parseFloat(arguments[arguments.length - 1]);
|
||||
if (arguments.length != 2) {
|
||||
this.last.qx = parseFloat(arguments[arguments.length - 4], 10);
|
||||
this.last.qy = parseFloat(arguments[arguments.length - 3], 10);
|
||||
this.last.qx = parseFloat(arguments[arguments.length - 4]);
|
||||
this.last.qy = parseFloat(arguments[arguments.length - 3]);
|
||||
}
|
||||
var oldD = this.node.getAttribute("d") || "";
|
||||
this.node.setAttribute("d", oldD + d);
|
||||
|
|
@ -863,6 +866,14 @@ window.Raphael = (function () {
|
|||
case "height":
|
||||
o.node.setAttribute(att, value);
|
||||
break;
|
||||
case "r":
|
||||
if (o.type == "rect") {
|
||||
o.node.setAttribute("rx", value);
|
||||
o.node.setAttribute("ry", value);
|
||||
} else {
|
||||
o.node.setAttribute(att, value);
|
||||
}
|
||||
break;
|
||||
case "src":
|
||||
if (o.type == "image") {
|
||||
o.node.setAttributeNS(o.svg.xlink, "href", value);
|
||||
|
|
@ -1025,10 +1036,10 @@ window.Raphael = (function () {
|
|||
var bbox = this.getBBox();
|
||||
deg = deg.toString().split(separator);
|
||||
if (deg.length - 1) {
|
||||
cx = parseFloat(deg[1], 10);
|
||||
cy = parseFloat(deg[2], 10);
|
||||
cx = parseFloat(deg[1]);
|
||||
cy = parseFloat(deg[2]);
|
||||
}
|
||||
deg = parseFloat(deg[0], 10);
|
||||
deg = parseFloat(deg[0]);
|
||||
if (cx != null) {
|
||||
this._.rt.deg = deg;
|
||||
} else {
|
||||
|
|
@ -1081,7 +1092,7 @@ window.Raphael = (function () {
|
|||
}
|
||||
return this.attrs[arguments[0]];
|
||||
}
|
||||
if (arguments.length == 1 && arguments[0] instanceof Array) {
|
||||
if (arguments.length == 1 && arguments[0] instanceof win.Array) {
|
||||
var values = {};
|
||||
for (var j in arguments[0]) {
|
||||
values[arguments[0][j]] = this.attrs[arguments[0][j]];
|
||||
|
|
@ -1345,20 +1356,20 @@ window.Raphael = (function () {
|
|||
};
|
||||
p.moveTo = function (x, y) {
|
||||
var d = this.isAbsolute?"m":"t";
|
||||
d += Math.round(parseFloat(x, 10)) + " " + Math.round(parseFloat(y, 10));
|
||||
d += Math.round(parseFloat(x)) + " " + Math.round(parseFloat(y));
|
||||
this.node.path = this.Path += d;
|
||||
this.last.x = (this.isAbsolute ? 0 : this.last.x) + parseFloat(x, 10);
|
||||
this.last.y = (this.isAbsolute ? 0 : this.last.y) + parseFloat(y, 10);
|
||||
this.last.x = (this.isAbsolute ? 0 : this.last.x) + parseFloat(x);
|
||||
this.last.y = (this.isAbsolute ? 0 : this.last.y) + parseFloat(y);
|
||||
this.last.isAbsolute = this.isAbsolute;
|
||||
this.attrs.path += (this.isAbsolute ? "M" : "m") + [x, y];
|
||||
return this;
|
||||
};
|
||||
p.lineTo = function (x, y) {
|
||||
var d = this.isAbsolute?"l":"r";
|
||||
d += Math.round(parseFloat(x, 10)) + " " + Math.round(parseFloat(y, 10));
|
||||
d += Math.round(parseFloat(x)) + " " + Math.round(parseFloat(y));
|
||||
this[0].path = this.Path += d;
|
||||
this.last.x = (this.isAbsolute ? 0 : this.last.x) + parseFloat(x, 10);
|
||||
this.last.y = (this.isAbsolute ? 0 : this.last.y) + parseFloat(y, 10);
|
||||
this.last.x = (this.isAbsolute ? 0 : this.last.x) + parseFloat(x);
|
||||
this.last.y = (this.isAbsolute ? 0 : this.last.y) + parseFloat(y);
|
||||
this.last.isAbsolute = this.isAbsolute;
|
||||
this.attrs.path += (this.isAbsolute ? "L" : "l") + [x, y];
|
||||
return this;
|
||||
|
|
@ -1379,10 +1390,10 @@ window.Raphael = (function () {
|
|||
d = sweep_flag ? (this.isAbsolute ? "wa" : "wr") : (this.isAbsolute ? "at" : "ar"),
|
||||
left = Math.round(cx - rx),
|
||||
top = Math.round(cy - ry);
|
||||
d += [left, top, Math.round(left + rx * 2), Math.round(top + ry * 2), Math.round(x1), Math.round(y1), Math.round(parseFloat(x2, 10)), Math.round(parseFloat(y2, 10))].join(", ");
|
||||
d += [left, top, Math.round(left + rx * 2), Math.round(top + ry * 2), Math.round(x1), Math.round(y1), Math.round(parseFloat(x2)), Math.round(parseFloat(y2))].join(", ");
|
||||
this.node.path = this.Path += d;
|
||||
this.last.x = (this.isAbsolute ? 0 : this.last.x) + parseFloat(x2, 10);
|
||||
this.last.y = (this.isAbsolute ? 0 : this.last.y) + parseFloat(y2, 10);
|
||||
this.last.x = (this.isAbsolute ? 0 : this.last.x) + parseFloat(x2);
|
||||
this.last.y = (this.isAbsolute ? 0 : this.last.y) + parseFloat(y2);
|
||||
this.last.isAbsolute = this.isAbsolute;
|
||||
this.attrs.path += (this.isAbsolute ? "A" : "a") + [rx, ry, 0, large_arc_flag, sweep_flag, x2, y2];
|
||||
return this;
|
||||
|
|
@ -1391,9 +1402,9 @@ window.Raphael = (function () {
|
|||
if (!w1) {
|
||||
return this.lineTo(x1, y1);
|
||||
} else {
|
||||
var x = Math.round(Math.round(parseFloat(x1, 10) * 100) / 100),
|
||||
y = Math.round(Math.round(parseFloat(y1, 10) * 100) / 100),
|
||||
w = Math.round(Math.round(parseFloat(w1, 10) * 100) / 100),
|
||||
var x = Math.round(Math.round(parseFloat(x1) * 100) / 100),
|
||||
y = Math.round(Math.round(parseFloat(y1) * 100) / 100),
|
||||
w = Math.round(Math.round(parseFloat(w1) * 100) / 100),
|
||||
d = this.isAbsolute ? "c" : "v",
|
||||
attr = [Math.round(this.last.x) + w, Math.round(this.last.y), x - w, y, x, y],
|
||||
svgattr = [this.last.x + w1, this.last.y, x1 - w1, y1, x1, y1];
|
||||
|
|
@ -1410,31 +1421,31 @@ window.Raphael = (function () {
|
|||
p.curveTo = function () {
|
||||
var d = this.isAbsolute ? "c" : "v";
|
||||
if (arguments.length == 6) {
|
||||
this.last.bx = (this.isAbsolute ? 0 : this.last.x) + parseFloat(arguments[2], 10);
|
||||
this.last.by = (this.isAbsolute ? 0 : this.last.y) + parseFloat(arguments[3], 10);
|
||||
this.last.x = (this.isAbsolute ? 0 : this.last.x) + parseFloat(arguments[4], 10);
|
||||
this.last.y = (this.isAbsolute ? 0 : this.last.y) + parseFloat(arguments[5], 10);
|
||||
d += [Math.round(parseFloat(arguments[0], 10)),
|
||||
Math.round(parseFloat(arguments[1], 10)),
|
||||
Math.round(parseFloat(arguments[2], 10)),
|
||||
Math.round(parseFloat(arguments[3], 10)),
|
||||
Math.round(parseFloat(arguments[4], 10)),
|
||||
Math.round(parseFloat(arguments[5], 10))].join(" ") + " ";
|
||||
this.last.bx = (this.isAbsolute ? 0 : this.last.x) + parseFloat(arguments[2]);
|
||||
this.last.by = (this.isAbsolute ? 0 : this.last.y) + parseFloat(arguments[3]);
|
||||
this.last.x = (this.isAbsolute ? 0 : this.last.x) + parseFloat(arguments[4]);
|
||||
this.last.y = (this.isAbsolute ? 0 : this.last.y) + parseFloat(arguments[5]);
|
||||
d += [Math.round(parseFloat(arguments[0])),
|
||||
Math.round(parseFloat(arguments[1])),
|
||||
Math.round(parseFloat(arguments[2])),
|
||||
Math.round(parseFloat(arguments[3])),
|
||||
Math.round(parseFloat(arguments[4])),
|
||||
Math.round(parseFloat(arguments[5]))].join(" ") + " ";
|
||||
this.last.isAbsolute = this.isAbsolute;
|
||||
this.attrs.path += (this.isAbsolute ? "C" : "c") + Array.prototype.splice.call(arguments, 0, arguments.length);
|
||||
}
|
||||
if (arguments.length == 4) {
|
||||
var bx = this.last.x * 2 - this.last.bx;
|
||||
var by = this.last.y * 2 - this.last.by;
|
||||
this.last.bx = (this.isAbsolute ? 0 : this.last.x) + parseFloat(arguments[0], 10);
|
||||
this.last.by = (this.isAbsolute ? 0 : this.last.y) + parseFloat(arguments[1], 10);
|
||||
this.last.x = (this.isAbsolute ? 0 : this.last.x) + parseFloat(arguments[2], 10);
|
||||
this.last.y = (this.isAbsolute ? 0 : this.last.y) + parseFloat(arguments[3], 10);
|
||||
this.last.bx = (this.isAbsolute ? 0 : this.last.x) + parseFloat(arguments[0]);
|
||||
this.last.by = (this.isAbsolute ? 0 : this.last.y) + parseFloat(arguments[1]);
|
||||
this.last.x = (this.isAbsolute ? 0 : this.last.x) + parseFloat(arguments[2]);
|
||||
this.last.y = (this.isAbsolute ? 0 : this.last.y) + parseFloat(arguments[3]);
|
||||
d += [Math.round(bx), Math.round(by),
|
||||
Math.round(parseFloat(arguments[0], 10)),
|
||||
Math.round(parseFloat(arguments[1], 10)),
|
||||
Math.round(parseFloat(arguments[2], 10)),
|
||||
Math.round(parseFloat(arguments[3], 10))].join(" ") + " ";
|
||||
Math.round(parseFloat(arguments[0])),
|
||||
Math.round(parseFloat(arguments[1])),
|
||||
Math.round(parseFloat(arguments[2])),
|
||||
Math.round(parseFloat(arguments[3]))].join(" ") + " ";
|
||||
this.attrs.path += (this.isAbsolute ? "S" : "s") + Array.prototype.splice.call(arguments, 0, arguments.length);
|
||||
}
|
||||
this.node.path = this.Path += d;
|
||||
|
|
@ -1443,10 +1454,10 @@ window.Raphael = (function () {
|
|||
p.qcurveTo = function () {
|
||||
var d = "qb";
|
||||
if (arguments.length == 4) {
|
||||
this.last.qx = (this.isAbsolute ? 0 : this.last.x) + parseFloat(arguments[0], 10);
|
||||
this.last.qy = (this.isAbsolute ? 0 : this.last.y) + parseFloat(arguments[1], 10);
|
||||
this.last.x = (this.isAbsolute ? 0 : this.last.x) + parseFloat(arguments[2], 10);
|
||||
this.last.y = (this.isAbsolute ? 0 : this.last.y) + parseFloat(arguments[3], 10);
|
||||
this.last.qx = (this.isAbsolute ? 0 : this.last.x) + parseFloat(arguments[0]);
|
||||
this.last.qy = (this.isAbsolute ? 0 : this.last.y) + parseFloat(arguments[1]);
|
||||
this.last.x = (this.isAbsolute ? 0 : this.last.x) + parseFloat(arguments[2]);
|
||||
this.last.y = (this.isAbsolute ? 0 : this.last.y) + parseFloat(arguments[3]);
|
||||
d += [Math.round(this.last.qx),
|
||||
Math.round(this.last.qy),
|
||||
Math.round(this.last.x),
|
||||
|
|
@ -1457,8 +1468,8 @@ window.Raphael = (function () {
|
|||
if (arguments.length == 2) {
|
||||
this.last.qx = this.last.x * 2 - this.last.qx;
|
||||
this.last.qy = this.last.y * 2 - this.last.qy;
|
||||
this.last.x = (this.isAbsolute ? 0 : this.last.x) + parseFloat(arguments[2], 10);
|
||||
this.last.y = (this.isAbsolute ? 0 : this.last.y) + parseFloat(arguments[3], 10);
|
||||
this.last.x = (this.isAbsolute ? 0 : this.last.x) + parseFloat(arguments[2]);
|
||||
this.last.y = (this.isAbsolute ? 0 : this.last.y) + parseFloat(arguments[3]);
|
||||
d += [Math.round(this.last.qx),
|
||||
Math.round(this.last.qy),
|
||||
Math.round(this.last.x),
|
||||
|
|
@ -1526,7 +1537,7 @@ window.Raphael = (function () {
|
|||
return o;
|
||||
};
|
||||
p.andClose = function () {
|
||||
this.node.path = (this.Path += "x e");
|
||||
this.node.path = (this.Path += "x");
|
||||
this.attrs.path += "z";
|
||||
return this;
|
||||
};
|
||||
|
|
@ -1618,7 +1629,7 @@ window.Raphael = (function () {
|
|||
params["stroke-linejoin"] && (stroke.joinstyle = params["stroke-linejoin"] || "miter");
|
||||
stroke.miterlimit = params["stroke-miterlimit"] || 8;
|
||||
params["stroke-linecap"] && (stroke.endcap = {butt: "flat", square: "square", round: "round"}[params["stroke-linecap"]] || "miter");
|
||||
params["stroke-width"] && (stroke.weight = (parseFloat(params["stroke-width"], 10) || 1) * 12 / 16);
|
||||
params["stroke-width"] && (stroke.weight = (parseFloat(params["stroke-width"]) || 1) * 12 / 16);
|
||||
if (params["stroke-dasharray"]) {
|
||||
var dasharray = {
|
||||
"-": "shortdash",
|
||||
|
|
@ -1673,8 +1684,8 @@ window.Raphael = (function () {
|
|||
}
|
||||
};
|
||||
var getAngle = function (a, b, c, d) {
|
||||
var angle = Math.round(Math.atan((parseFloat(c, 10) - parseFloat(a, 10)) / (parseFloat(d, 10) - parseFloat(b, 10))) * 57.29) || 0;
|
||||
if (!angle && parseFloat(a, 10) < parseFloat(b, 10)) {
|
||||
var angle = Math.round(Math.atan((parseFloat(c) - parseFloat(a)) / (parseFloat(d) - parseFloat(b))) * 57.29) || 0;
|
||||
if (!angle && parseFloat(a) < parseFloat(b)) {
|
||||
angle = 180;
|
||||
}
|
||||
angle -= 180;
|
||||
|
|
@ -1756,10 +1767,10 @@ window.Raphael = (function () {
|
|||
}
|
||||
deg = deg.toString().split(separator);
|
||||
if (deg.length - 1) {
|
||||
cx = parseFloat(deg[1], 10);
|
||||
cy = parseFloat(deg[2], 10);
|
||||
cx = parseFloat(deg[1]);
|
||||
cy = parseFloat(deg[2]);
|
||||
}
|
||||
deg = parseFloat(deg[0], 10);
|
||||
deg = parseFloat(deg[0]);
|
||||
if (cx != null) {
|
||||
this._.rt.deg = deg;
|
||||
} else {
|
||||
|
|
@ -1856,6 +1867,10 @@ window.Raphael = (function () {
|
|||
os.top = y - top + "px";
|
||||
os.width = w + "px";
|
||||
os.height = h + "px";
|
||||
if (this.type == "rect" && this.attrs.r != params.r) {
|
||||
// We should recplace element with the new one
|
||||
// this.node.arcsize = (params.r || 0) / (Math.min(w, h));
|
||||
}
|
||||
}
|
||||
};
|
||||
Element.prototype.hide = function () {
|
||||
|
|
@ -1867,6 +1882,9 @@ window.Raphael = (function () {
|
|||
return this;
|
||||
};
|
||||
Element.prototype.getBBox = function () {
|
||||
if (this.type == "path") {
|
||||
return pathDimensions(this.attr("path"));
|
||||
}
|
||||
return {
|
||||
x: this.X + (this.bbx || 0),
|
||||
y: this.Y,
|
||||
|
|
@ -1886,7 +1904,7 @@ window.Raphael = (function () {
|
|||
}
|
||||
return this.attrs[arguments[0]];
|
||||
}
|
||||
if (this.attrs && arguments.length == 1 && arguments[0] instanceof Array) {
|
||||
if (this.attrs && arguments.length == 1 && arguments[0] instanceof win.Array) {
|
||||
var values = {};
|
||||
for (var i = 0, ii = arguments[0].length; i < ii; i++) {
|
||||
values[arguments[0][i]] = this.attrs[arguments[0][i]];
|
||||
|
|
@ -1954,10 +1972,8 @@ window.Raphael = (function () {
|
|||
};
|
||||
var theRect = function (vml, x, y, w, h, r) {
|
||||
var g = createNode("group");
|
||||
var o = createNode(r ? "roundrect" : "rect");
|
||||
if (r) {
|
||||
o.arcsize = r / (Math.min(w, h));
|
||||
}
|
||||
var o = createNode("roundrect");
|
||||
o.arcsize = (+r || 0) / (Math.min(w, h));
|
||||
g.appendChild(o);
|
||||
vml.canvas.appendChild(g);
|
||||
var res = new Element(o, g, vml);
|
||||
|
|
@ -2040,7 +2056,7 @@ window.Raphael = (function () {
|
|||
this.height = height || this.height;
|
||||
this.canvas.style.width = this.width + "px";
|
||||
this.canvas.style.height = this.height + "px";
|
||||
this.canvas.parentNode.style.clip = "rect(0 " + this.width + " " + this.height + " 0)";
|
||||
this.canvas.parentNode.style.clip = "rect(0 " + this.width + "px " + this.height + "px 0)";
|
||||
this.canvas.coordsize = this.width + " " + this.height;
|
||||
return this;
|
||||
};
|
||||
|
|
@ -2083,7 +2099,7 @@ window.Raphael = (function () {
|
|||
d.style.position = "relative";
|
||||
rs.width = width;
|
||||
rs.height = height;
|
||||
r.coordsize = (/%$/.test(width) ? width : parseFloat(width, 10)) + " " + (/%$/.test(height) ? height : parseFloat(height, 10));
|
||||
r.coordsize = (/%$/.test(width) ? width : parseFloat(width)) + " " + (/%$/.test(height) ? height : parseFloat(height));
|
||||
r.coordorigin = "0 0";
|
||||
|
||||
var b = createNode("rect"), bs = b.style;
|
||||
|
|
@ -2286,30 +2302,36 @@ window.Raphael = (function () {
|
|||
Element.prototype.stop = function () {
|
||||
clearTimeout(this.animation_in_progress);
|
||||
};
|
||||
Element.prototype.scale = function (x, y) {
|
||||
Element.prototype.scale = function (x, y, cx, cy) {
|
||||
if (x == null && y == null) {
|
||||
return {x: this._.sx, y: this._.sy};
|
||||
}
|
||||
y = y || x;
|
||||
// following line is for IE, apparently NaN is not always falsy
|
||||
isNaN(y) && (y = x);
|
||||
var dx, dy, cx, cy;
|
||||
!+y && (y = x);
|
||||
var dx, dy, dcx, dcy;
|
||||
if (x != 0) {
|
||||
var bb = this.getBBox(),
|
||||
rcx = bb.x + bb.width / 2,
|
||||
rcy = bb.y + bb.height / 2;
|
||||
cx = cx || rcx;
|
||||
cy = cy || rcy;
|
||||
var dirx = Math.round(x / Math.abs(x)),
|
||||
diry = Math.round(y / Math.abs(y)),
|
||||
s = this.node.style;
|
||||
s = this.node.style,
|
||||
ncx = cx + (rcx - cx) * x * dirx / this._.sx,
|
||||
ncy = cy + (rcy - cy) * y * diry / this._.sy;
|
||||
dx = this.attr("x");
|
||||
dy = this.attr("y");
|
||||
cx = this.attr("cx");
|
||||
cy = this.attr("cy");
|
||||
dcx = this.attr("cx");
|
||||
dcy = this.attr("cy");
|
||||
if (dirx != 1 || diry != 1) {
|
||||
if (this.transformations) {
|
||||
this.transformations[2] = "scale(" + [dirx, diry] + ")";
|
||||
this.node.setAttribute("transform", this.transformations.join(" "));
|
||||
dx = (dirx < 0) ? -this.attr("x") - this.attrs.width * x * dirx / this._.sx : this.attr("x");
|
||||
dy = (diry < 0) ? -this.attr("y") - this.attrs.height * y * diry / this._.sy : this.attr("y");
|
||||
cx = this.attr("cx") * dirx;
|
||||
cy = this.attr("cy") * diry;
|
||||
dcx = this.attr("cx") * dirx;
|
||||
dcy = this.attr("cy") * diry;
|
||||
} else {
|
||||
this.node.filterMatrix = " progid:DXImageTransform.Microsoft.Matrix(M11=" + dirx +
|
||||
", M12=0, M21=0, M22=" + diry +
|
||||
|
|
@ -2328,11 +2350,15 @@ window.Raphael = (function () {
|
|||
switch (this.type) {
|
||||
case "rect":
|
||||
case "image":
|
||||
var neww = this.attrs.width * x * dirx / this._.sx,
|
||||
newh = this.attrs.height * y * diry / this._.sy,
|
||||
newx = ncx - neww / 2,
|
||||
newy = ncy - newh / 2;
|
||||
this.attr({
|
||||
width: this.attrs.width * x * dirx / this._.sx,
|
||||
height: this.attrs.height * y * diry / this._.sy,
|
||||
x: dx,
|
||||
y: dy
|
||||
width: neww,
|
||||
height: newh,
|
||||
x: newx,
|
||||
y: newy
|
||||
});
|
||||
break;
|
||||
case "circle":
|
||||
|
|
@ -2340,15 +2366,14 @@ window.Raphael = (function () {
|
|||
this.attr({
|
||||
rx: this.attrs.rx * x * dirx / this._.sx,
|
||||
ry: this.attrs.ry * y * diry / this._.sy,
|
||||
r: this.attrs.r * x * diry / this._.sx,
|
||||
cx: cx,
|
||||
cy: cy
|
||||
r: this.attrs.r * x * dirx / this._.sx,
|
||||
cx: ncx,
|
||||
cy: ncy
|
||||
});
|
||||
break;
|
||||
case "path":
|
||||
var path = pathToRelative(R.parsePathString(this.attr("path"))),
|
||||
skip = true,
|
||||
dim = pathDimensions(this.attrs.path);
|
||||
skip = true;
|
||||
for (var i = 0, ii = path.length; i < ii; i++) {
|
||||
if (path[i][0].toUpperCase() == "M" && skip) {
|
||||
continue;
|
||||
|
|
@ -2367,12 +2392,12 @@ window.Raphael = (function () {
|
|||
}
|
||||
}
|
||||
var dim2 = pathDimensions(path),
|
||||
dx = dim.x + dim.width / 2 - dim2.x - dim2.width / 2,
|
||||
dy = dim.y + dim.height / 2 - dim2.y - dim2.height / 2;
|
||||
dx = ncx - dim2.x - dim2.width / 2,
|
||||
dy = ncy - dim2.y - dim2.height / 2;
|
||||
path = pathToRelative(path);
|
||||
path[0][1] += dx;
|
||||
path[0][2] += dy;
|
||||
|
||||
|
||||
this.attr({path: path.join(" ")});
|
||||
}
|
||||
}
|
||||
|
|
@ -2435,11 +2460,11 @@ window.Raphael = (function () {
|
|||
}
|
||||
}
|
||||
}
|
||||
var start = new Date(),
|
||||
var start = +new Date,
|
||||
prev = 0,
|
||||
that = this;
|
||||
(function () {
|
||||
var time = (new Date()).getTime() - start.getTime(),
|
||||
var time = +new Date - start,
|
||||
set = {},
|
||||
now;
|
||||
if (time < ms) {
|
||||
|
|
@ -2515,7 +2540,7 @@ window.Raphael = (function () {
|
|||
case "rect":
|
||||
case "image":
|
||||
case "text":
|
||||
this.attr({x: this.attrs.x + +x, y: this.attrs.y + +y});
|
||||
this.attr({x: this.attrs.x + (+x), y: this.attrs.y + (+y)});
|
||||
break;
|
||||
case "path":
|
||||
var path = pathToRelative(this.attrs.path);
|
||||
|
|
@ -2589,6 +2614,9 @@ window.Raphael = (function () {
|
|||
R.noConflict = function () {
|
||||
var r = window.Raphael;
|
||||
delete window.Raphael;
|
||||
if (oldRaphael.was) {
|
||||
window.Raphael = oldRaphael.is;
|
||||
}
|
||||
return r;
|
||||
};
|
||||
return R;
|
||||
|
|
|
|||
Loading…
Reference in New Issue