svnno****@sourc*****
svnno****@sourc*****
2009年 9月 16日 (水) 20:53:59 JST
Revision: 1255 http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=1255 Author: dhrname Date: 2009-09-16 20:53:59 +0900 (Wed, 16 Sep 2009) Log Message: ----------- Modified Paths: -------------- branches/DOM/org/w3c/dom/svg.js Modified: branches/DOM/org/w3c/dom/svg.js =================================================================== --- branches/DOM/org/w3c/dom/svg.js 2009-09-16 09:36:07 UTC (rev 1254) +++ branches/DOM/org/w3c/dom/svg.js 2009-09-16 11:53:59 UTC (rev 1255) @@ -1446,48 +1446,6 @@ } } -//SVGLengthを参照 -function STLength( /*string or number*/ d, /*boolean*/ wort, /*float*/ f) { - d += ""; - this.unitType = 0;//unknown - this.wort = wort; - this.fontSize = f; - try { - var v = parseFloat(d); - var tani = d.match(/\D+$/); - this.newValueSpecifiedUnits(tani,v); - } catch(e) {stlog.add(e,1133); this.value = 1000;} - return this; -} -STLength.prototype.newValueSpecifiedUnits = function stlengthnvsu( /*string or number*/ tani, /*number*/ value) { - var n = 1, ut; - switch (tani+"") { - case "pt": n = 1.25; ut = 9; - break; - case "pc": n = 15; ut = 10; - break; - case "mm": n = 3.543307; ut = 7; - break; - case "cm": n = 35.43307; ut = 6; - break; - case "in": n = 90; ut = 8; - break; - case "em": n = this.fontSize; ut = 3; - break; - case "ex": ut = 4; - break; - case "px": ut = 5; - break; - case "%": n = 0.01 * this.wort; ut = 2; - break; - default: ut = 1; - break; - } - this.unitType = ut; - this.value = value * n; - this.valueInSpecifiedUnits = value; -} - //XLink言語を処理 NAIBU.XLink = function( /*element*/ ele) { this.tar = ele; @@ -1683,7 +1641,7 @@ try{if (sieb_s) {svgtovml();}} catch(e) {} if((typeof SVGElement) === "function" && /*@cc_on!@*/false){//IE7以降 - +/* // File: svg.idl #ifndef _SVG_IDL_ #define _SVG_IDL_ @@ -1733,6 +1691,7 @@ exception SVGException { unsigned short code; }; +*/ // SVGExceptionCode /*const unsigned short*/ SVG_WRONG_TYPE_ERR = 0; /*const unsigned short*/ SVG_INVALID_VALUE_ERR = 1; @@ -1758,7 +1717,7 @@ /*readonly String*/ this.animVal; return this; }; - interface SVGStringList { +function SVGStringList() { /* readonly attribute unsigned long numberOfItems; void clear ( ) raises( DOMException ); @@ -1774,7 +1733,9 @@ raises( DOMException ); DOMString appendItem ( in DOMString newItem ) raises( DOMException, SVGException ); - }; +*/return this; +}; +/* interface SVGAnimatedEnumeration { attribute unsigned short baseVal; // raises DOMException on setting @@ -1794,7 +1755,8 @@ // raises DOMException on setting readonly attribute float animVal; }; - interface SVGNumberList { +*/ +function SVGNumberList() { /* readonly attribute unsigned long numberOfItems; void clear ( ) raises( DOMException ); @@ -1810,13 +1772,21 @@ raises( DOMException ); SVGNumber appendItem ( in SVGNumber newItem ) raises( DOMException, SVGException ); - }; - interface SVGAnimatedNumberList { - readonly attribute SVGNumberList baseVal; - readonly attribute SVGNumberList animVal; - }; - interface SVGLength { +*/ + return this; +}; +function SVGAnimatedNumberList() { + /*readonly SVGNumberList*/ this.baseVal = new SVGNumberList(); + /*readonly SVGNumberList*/ this.animVal; + return this; +}; +/*SVGLengthクラス + *長さを設定する(単位pxに統一する方便として使う) + *valueInSpecifiedUnitsプロパティはpxに統一する前の数値。valueプロパティはpxに統一した後の数値 + */ +function SVGLength( /*string or number*/ d, /*float*/ wort, /*float*/ f) { // Length Unit Types +/* const unsigned short SVG_LENGTHTYPE_UNKNOWN = 0; const unsigned short SVG_LENGTHTYPE_NUMBER = 1; const unsigned short SVG_LENGTHTYPE_PERCENTAGE = 2; @@ -1828,21 +1798,64 @@ const unsigned short SVG_LENGTHTYPE_IN = 8; const unsigned short SVG_LENGTHTYPE_PT = 9; const unsigned short SVG_LENGTHTYPE_PC = 10; - readonly attribute unsigned short unitType; - attribute float value; - // raises DOMException on setting - attribute float valueInSpecifiedUnits; - // raises DOMException on setting - attribute DOMString valueAsString; - // raises DOMException on setting - void newValueSpecifiedUnits ( in unsigned short unitType, in float valueInSpecifiedUnits ); - void convertToSpecifiedUnits ( in unsigned short unitType ); - }; - interface SVGAnimatedLength { - readonly attribute SVGLength baseVal; - readonly attribute SVGLength animVal; - }; - interface SVGLengthList { +*/ + d += ""; + /*readonly unsigned short*/ this.unitType = 0; //unknown + if (wort === void 0) { //void 0 = undefined + wort = 1; + } + if (f === void 0) { + f = 12; + } + try { + this._n[1] *= wort; + this._n[2] = this._n[3] = f; + var v = parseFloat(d); + var tani = d.match(this._dR); + var ut = 1; + if(tani) { + ut = this._tani[tani]; + } + this.newValueSpecifiedUnits(ut,v); + /*DOMString*/ this.valueAsString = d; + wort = f = v = tani = ut = null; //解放 + } catch(e) {stlog.add(e,1133); this.value = 1000;} + return this; +}; + +SVGLength.prototype._dR = /\D+$/; //RegExpオブジェクトをあらかじめ生成 +SVGLength.prototype._n = [1, 0.01, 1, 1, 1, 35.43307, 3.543307, 90, 1.25, 15]; //利用単位への変換値 +SVGLength.prototype._tani = { //単位に番号を振る + "pt": 9, + "pc": 10, + "mm": 7, + "cm": 6, + "in": 8, + "em": 3, + "ex": 4, + "px": 5, + "%": 2 +} + +SVGLength.prototype.newValueSpecifiedUnits = function (/*unsigned short*/ unitType, /*float*/ valueInSpecifiedUnits) { + this.unitType = unitType; + /*float*/ this.value = valueInSpecifiedUnits * this._n[unitType-1]; + /*float*/ this.valueInSpecifiedUnits = valueInSpecifiedUnits; + this._n[1] = 0.01; //初期化 +} +SVGLength.prototype.convertToSpecifiedUnits = function (/*unsigned short*/ unitType) { + this.unitType = unitType; + this.valueInSpecifiedUnits = this.value / this._n[unitType-1]; +}; + +function SVGAnimatedLength( /*string or number*/ d, /*float*/ wort, /*float*/ f) { + /*readonly SVGLength*/ this.baseVal = new SVGLength(d, wort, f); + /*readonly SVGLength*/ this.animVal; + return this; +}; + +function SVGLengthList() { +/* readonly attribute unsigned long numberOfItems; void clear ( ) raises( DOMException ); @@ -1858,7 +1871,9 @@ raises( DOMException ); SVGLength appendItem ( in SVGLength newItem ) raises( DOMException, SVGException ); - }; +*/ + return this; +}; interface SVGAnimatedLengthList { readonly attribute SVGLengthList baseVal; readonly attribute SVGLengthList animVal;