svnno****@sourc*****
svnno****@sourc*****
2010年 12月 18日 (土) 20:35:10 JST
Revision: 2227
http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=2227
Author: dhrname
Date: 2010-12-18 20:35:10 +0900 (Sat, 18 Dec 2010)
Log Message:
-----------
0.65統合
Modified Paths:
--------------
trunk/sie.js
Property Changed:
----------------
trunk/sie.js
Modified: trunk/sie.js
===================================================================
--- trunk/sie.js 2010-12-18 11:25:45 UTC (rev 2226)
+++ trunk/sie.js 2010-12-18 11:35:10 UTC (rev 2227)
@@ -1,4 +1,4 @@
-/*SIE-SVG without Plugin under LGPL2.1 & GPL2.0 & Mozilla Public Lisence
+/*SIE-SVG without Plugin under LGPL2.1 & GPL2.0 & Mozilla Public Lisence
*公式ページは http://sie.sourceforge.jp/
*利用方法は <script defer="defer" type="text/javascript" src="sie.js"></script>
*http://sie.sourceforge.jp/
@@ -1172,6 +1172,8 @@
},
/*void*/ preventDefault : function(){
this._default = false;
+ /*IEのみで使えるreturnValueプロパティ*/
+ window.event.returnValue = false;
},
/*void*/ initEvent : function( /*string*/ eventTypeArg, /*boolean*/ canBubbleArg, /*boolean*/ cancelableArg) {
this.type = eventTypeArg;
@@ -1700,9 +1702,11 @@
var ti = this._list[i], tc = ti.cssText;
if (tc.indexOf(propertyName) > -1) { //プロパティ名に合致するCSSValueオブジェクトが見つかった場合
ti._empercents = this._list._fontSize;
+ propertyName = null;
return ti;
}
}
+ propertyName = null;
return null;
},
/*removePropertyメソッド
@@ -2128,17 +2132,18 @@
return this;
};
/*CSSStyleDeclaration*/ ViewCSS.prototype.getComputedStyle = function( /*Element*/ elt, /*string*/ pseudoElt) {
+ if (!!elt._currentStyle) {
+ /*キャッシュがあれば、それを返す*/
+ return (elt._currentStyle);
+ }
var s = new CSSStyleDeclaration();
+ elt._currentStyle = s;
//リストを連結することによって、カスケーディングを実現する
var pelt = elt.parentNode;
if (pelt) {
- if (this._cache_ele !== pelt) { //キャッシュを更新する
- this._cache = this.getComputedStyle(pelt, pseudoElt);
- this._cache_ele = pelt;
- }
- var p = this._cache._list;
+ var p = this.getComputedStyle(pelt, pseudoElt)._list;
} else {
- var p = CSS2Properties._list; //デフォルト値の設定
+ var p = this._defaultCSS; //デフォルト値の設定
}
var q = s._list;
if (!!elt.style) {
@@ -2166,7 +2171,7 @@
}
s._list._opacity = p._opacity * (eso || 1);
s._list._fontSize = p._fontSize;
- eso = p = q = null;
+ pelt = eso = p = q = null;
s._document = elt.ownerDocument;
return s;
};
@@ -2520,16 +2525,17 @@
if (evt.eventPhase === Event.BUBBLING_PHASE) {
return;
}
- var name = evt.attrName, tar = evt.target, _parseFloat = parseFloat;
+ var name = evt.attrName, tar = evt.target;
if (!!CSS2Properties[name] || name.indexOf("-") > -1) { //スタイルシートのプロパティならば
tar._attributeStyle.setProperty(name, evt.newValue, "");
+ tar._currentStyle = null; //キャッシュは消しておく
}
if (evt.relatedNode.localName === "id") { //xml:idあるいはid属性ならば
tar.id = evt.newValue;
} else if (name === "transform" && !!tar.transform) {
- var tft = evt.newValue, degR = /[\-\d\.e]+/g;
- var coma = tft.match(/[A-Za-z]+(?=\s*\()/g); //コマンド文字にマッチ translate
- var list = tft.match(/\([^\)]+\)/g); //カッコ内のリストにマッチ (10 20 30...)
+ var tft = evt.newValue, degR = tar._degReg;
+ var coma = tft.match(tar._comaReg); //コマンド文字にマッチ translate
+ var list = tft.match(tar._strReg); //カッコ内のリストにマッチ (10 20 30...)
var a,b,c,d,e,f,lis,deg,rad,degli;
//transform属性の値を、SVGTransformListであるtransformプロパティに結びつける
for (var j=0,cli=coma.length;j<cli;j++) {
@@ -2539,22 +2545,22 @@
degli = deg.length;
if (degli === 6) {
var cm = s.matrix;
- cm.a = _parseFloat(deg[0]);
- cm.b = _parseFloat(deg[1]);
- cm.c = _parseFloat(deg[2]);
- cm.d = _parseFloat(deg[3]);
- cm.e = _parseFloat(deg[4]);
- cm.f = _parseFloat(deg[5]);
+ cm.a = +(deg[0]);
+ cm.b = +(deg[1]);
+ cm.c = +(deg[2]);
+ cm.d = +(deg[3]);
+ cm.e = +(deg[4]);
+ cm.f = +(deg[5]);
} else {
if (degli === 3) {
- var degz = _parseFloat(deg[0]);
- s.setRotate(degz, _parseFloat(deg[1]), _parseFloat(deg[2]))
+ var degz = +(deg[0]);
+ s.setRotate(degz, +(deg[1]), +(deg[2]))
} else if (degli <= 2) {
- var degz = _parseFloat(deg[0]);
+ var degz = +(deg[0]);
if (com === "translate") {
- s.setTranslate(degz, _parseFloat(deg[1] || 0));
+ s.setTranslate(degz, +(deg[1] || 0));
} else if (com === "scale") {
- s.setScale(degz, _parseFloat(deg[1] || deg[0]));
+ s.setScale(degz, +(deg[1] || deg[0]));
} else if (com === "rotate") {
s.setRotate(degz, 0, 0);
} else if (com === "skewX") {
@@ -2573,9 +2579,9 @@
style.cssText = sc;
if (sc !== "") {
//style属性値の解析
- sc = sc.replace(/^[^a-z\-]+/, "")
- .replace(/\:\s+/g, ":")
- .replace(/\s*;[^a-z\-]*/g, ";");
+ sc = sc.replace(tar._shouReg, "")
+ .replace(tar._conReg, ":")
+ .replace(tar._bouReg, ";");
var a = sc.split(";");
for (var i=0, ali=a.length;i<ali;++i) {
var ai = a[i], m = ai.split(":");
@@ -2586,6 +2592,7 @@
}
a = sc = null;
}
+ tar._currentStyle = null;
} else if (name === "class") {
tar.className = evt.newValue;
} else if (name.indexOf("on") === 0) { //event属性ならば
@@ -2623,7 +2630,7 @@
if (!!tar[name]) {
var tea = tar[name], tod = tar.ownerDocument.documentElement;
if (tea instanceof SVGAnimatedLength) {
- var n = evt.newValue.match(/\D+$/), type = SVGLength.SVG_LENGTHTYPE_NUMBER;
+ var n = evt.newValue.match(tar._NaNReg), type = SVGLength.SVG_LENGTHTYPE_NUMBER, _parseFloat = parseFloat;
if (!!n) {
n = n[0];
}
@@ -2677,6 +2684,14 @@
SVGElement.constructor = Element;
SVGElement.prototype = new Element();
+SVGElement.prototype._degReg = /[\-\d\.e]+/g;
+SVGElement.prototype._comaReg = /[A-Za-z]+(?=\s*\()/g;
+SVGElement.prototype._strReg = /\([^\)]+\)/g;
+SVGElement.prototype._syouReg = /^[^a-z\-]+/;
+SVGElement.prototype._conReg = /\:\s+/g;
+SVGElement.prototype._bouReg = /\s*;[^a-z\-]*/g;
+SVGElement.prototype._NaNReg = /\D+$/;
+
/*interface SVGLocatable*/
/*SVGRect*/ SVGElement.prototype.getBBox = function(){
var s = new SVGRect();
@@ -2688,7 +2703,7 @@
*/
var degis = data.match(/[0-9\-]+/g);
for (var i=0,degisli=degis.length;i<degisli;i+=2) {
- var nx = parseInt(degis[i]), ny = parseInt(degis[i+1]);
+ var nx = +(degis[i]), ny = +(degis[i+1]);
el = el > nx ? nx : el;
et = et > ny ? ny : et;
er = er > nx ? er : nx;
@@ -3926,11 +3941,14 @@
tmp = null;
}
var s = DOMImplementation.createDocument("http://www.w3.org/2000/svg", "svg");
- var tar = s.documentElement;
- tar.viewport.top = 0;
- tar.viewport.left = 0;
- tar.viewport.width = objei.clientWidth;
- tar.viewport.height = objei.clientHeight;
+ var tar = s.documentElement, tview = tar.viewport;
+ tview.top = 0;
+ tview.left = 0;
+ tview.width = objei.clientWidth;
+ tview.height = objei.clientHeight;
+ if (tview.height < 24) { //IEの標準モードではclientHeightプロパティの値が小さくなることがある
+ tview.height = screen.availHeight;
+ }
if (tar.viewport.height < 24) { //IEの標準モードではclientHeightプロパティの値が小さくなることがある
tar.viewport.height = screen.width;
}
@@ -3950,10 +3968,9 @@
}
str = attr = null;
var sdt = tar._tar, sp = document.createElement("div"), dcp = document.createElement("v:group");
- var view = tar.viewport;
- dcp.style.width = view.width+ "px";
- dcp.style.height = view.height+ "px";
- dcp.coordsize = view.width+ " " +view.height;
+ dcp.style.width = tview.width+ "px";
+ dcp.style.height = tview.height+ "px";
+ dcp.coordsize = tview.width+ " " +tview.height;
sp.appendChild(dcp);
objei.parentNode.insertBefore(sp, objei);
dcp.appendChild(sdt)
@@ -3967,7 +3984,7 @@
*作り出す作業を行う。これは必須
*/
var backr = document.createElement("v:rect");
- var w = tar.viewport.width, h = tar.viewport.height, sw = tar.width.baseVal.value, sh = tar.height.baseVal.value;
+ var w = tview.width, h = tview.height, sw = tar.width.baseVal.value, sh = tar.height.baseVal.value;
backr.style.position = "absolute";
backr.style.width = w+ "px";
backr.style.height = h+ "px";
@@ -4063,10 +4080,9 @@
*2次元座標の点(x,y)を表すオブジェクト
*/
function SVGPoint() {
- /*float*/ this.x = 0;
- /*float*/ this.y = 0;
return this;
};
+/*float*/SVGPoint.prototype.x = SVGPoint.prototype.y = 0;
SVGPoint.prototype.matrixTransform = function(/*SVGMatrix*/ matrix ) {
/*整数にしているのは、VMLの設計上、小数点を扱えないときがあるため*/
var x = parseInt(matrix.a * this.x + matrix.c * this.y + matrix.e);
@@ -4095,15 +4111,15 @@
*[0 0 1]
*/
function SVGMatrix() {
- /*float*/ this.a = 1;
- /*float*/ this.b = 0;
- /*float*/ this.c = 0;
- /*float*/ this.d = 1;
- /*float*/ this.e = 0;
- /*float*/ this.f = 0;
return this;
};
SVGMatrix.prototype = {
+ /*float*/ a : 1,
+ /*float*/ b : 0,
+ /*float*/ c : 0,
+ /*float*/ d : 1,
+ /*float*/ e : 0,
+ /*float*/ f : 0,
/*multiplyメソッド
*行列の積を求めて返す
*/
@@ -5030,10 +5046,9 @@
var w = vi.width.baseVal.value, h = vi.height.baseVal.value;
dat[dat.length] = " e";
tar._tar.path = dat.join(" ");
- dat = null;
tar._tar.coordsize = w + " " + h;
NAIBU._setPaint(tar, matrix);
- evt = tar = w = h = matrix = x = y = _parseInt = null;
+ evt = tar = dat = w = h = matrix = tlist = x = y = _parseInt = ma = mb = mc = md = me = mf = vi = isZ = isM = isL = isC = null;
}, false);
evt = tar = null;
}, false);
@@ -6509,7 +6524,7 @@
rx = ry = r;
var tarrect = tar.getBBox();
var vi = tar.ownerDocument.documentElement.viewport;
- var el = vi.width, et = vi.height, er = 0, eb = 0;
+ var el = vi.width | 0, et = vi.height | 0, er = 0, eb = 0;
var units = grad.getAttributeNS(null, "gradientUnits");
if (!units || units === "objectBoundingBox") {
//%の場合は小数点に変換(10% -> 0.1)
@@ -7107,7 +7122,7 @@
/* try{*/
var ntc = NAIBU.Time.currentFrame++;
var nc = NAIBU.Clip;
- var s = ntc * 125 * 0.8; //フレーム数ntcをミリ秒数sに変換
+ var s = ntc * 100; //フレーム数ntcをミリ秒数sに変換
if (ntc > NAIBU.Time.Max) {
clearInterval(NAIBU.stop);
}
@@ -7537,6 +7552,11 @@
SVGExternalResourcesRequired,
SVGStylable*/ {
SVGElement.apply(this);
+ this.addEventListener("SVGLoad", function(evt){
+ var tar = evt.target, ctar = evt.currentTarget;
+ ctar._instance = tar._instance;
+ evt = tar = ctar = null;
+ }, true);
return this;
};
SVGFontElement.constructor = SVGElement;
@@ -7596,11 +7616,6 @@
}
evt.target.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:show", "embed");
}, false);
- this.addEventListener("SVGLoad", function(evt){
- var tar = evt.target;
- var doc = tar.ownerDocument.importNode(tar._instance, true);
- evt = trans = tar = evtt = tgtb = null;
- }, false);
SVGURIReference.apply(this);
return this;
};
@@ -7741,6 +7756,8 @@
s._list._opacity = 1;
s._list._fontSize = 12;
CSS2Properties._list = s._list;
+ Document.prototype.defaultView._defaultCSS = CSS2Properties._list;
+ s = null;
})();
NAIBU.addEvent = function(evt,lis){
Property changes on: trunk/sie.js
___________________________________________________________________
Modified: svn:mergeinfo
- /branches/04x/040/sie.js:812-829
/branches/04x/041/sie.js:891-923
/branches/04x/042/sie.js:927-967
/branches/04x/043/sie.js:969-1013
/branches/04x/044/sie.js:1015-1067
/branches/04x/045/sie.js:1069-1078
/branches/04x/046/sie.js:1080-1129
/branches/04x/047/sie.js:1131-1164
/branches/04x/048/sie.js:1166-1180
/branches/04x/sie.js:830-1181
/branches/05x/050/sie.js:1183-1201
/branches/05x/051/sie.js:1207-1323
/branches/05x/052/sie.js:1325-1352
/branches/05x/053/sie.js:1354-1400
/branches/05x/054/sie.js:1403-1422
/branches/05x/055/sie.js:1424-1454
/branches/05x/056/sie.js:1456-1491
/branches/05x/057/sie.js:1496-1523
/branches/05x/058/sie.js:1526-1590
/branches/05x/sie.js:1183-1594
/branches/06x/060/sie.js:1603-1850
/branches/06x/sie.js:1599-2185
+ /branches/04x/040/sie.js:812-829
/branches/04x/041/sie.js:891-923
/branches/04x/042/sie.js:927-967
/branches/04x/043/sie.js:969-1013
/branches/04x/044/sie.js:1015-1067
/branches/04x/045/sie.js:1069-1078
/branches/04x/046/sie.js:1080-1129
/branches/04x/047/sie.js:1131-1164
/branches/04x/048/sie.js:1166-1180
/branches/04x/sie.js:830-1181
/branches/05x/050/sie.js:1183-1201
/branches/05x/051/sie.js:1207-1323
/branches/05x/052/sie.js:1325-1352
/branches/05x/053/sie.js:1354-1400
/branches/05x/054/sie.js:1403-1422
/branches/05x/055/sie.js:1424-1454
/branches/05x/056/sie.js:1456-1491
/branches/05x/057/sie.js:1496-1523
/branches/05x/058/sie.js:1526-1590
/branches/05x/sie.js:1183-1594
/branches/06x/060/sie.js:1603-1850
/branches/06x/sie.js:1599-2226