[Sie-announce] SIEコード [2526] GetSVGDocumentのメソッドを整理して軽量化

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2011年 3月 29日 (火) 22:39:52 JST


Revision: 2526
          http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=2526
Author:   dhrname
Date:     2011-03-29 22:39:52 +0900 (Tue, 29 Mar 2011)

Log Message:
-----------
GetSVGDocumentのメソッドを整理して軽量化

Modified Paths:
--------------
    branches/07x/074/org/w3c/dom/svg.js

Modified: branches/07x/074/org/w3c/dom/svg.js
===================================================================
--- branches/07x/074/org/w3c/dom/svg.js	2011-03-28 14:39:04 UTC (rev 2525)
+++ branches/07x/074/org/w3c/dom/svg.js	2011-03-29 13:39:52 UTC (rev 2526)
@@ -1684,18 +1684,19 @@
           backr = document.createElement("v:rect"),
           style, fontSize, w, h, sw, sh, trstyle, tpstyle, backrs, viewWidth, viewHeight,
           bfl, bft, bl, backright, backdown, text,
-          _parseFloat = parseFloat;
-      NAIBU.doc.async = false;
+          _parseFloat = parseFloat,
+          ndoc = NAIBU.doc;
+      ndoc.async = false;
       /*下記のプロパティについては、Microsoftのサイトを参照
        *ResolveExternals Property [Second-level DOM]
        * http://msdn.microsoft.com/en-us/library/ms761375%28VS.85%29.aspx
        *ValidateOnParse Property [Second-level DOM]
        * http://msdn.microsoft.com/en-us/library/ms760286%28VS.85%29.asp
        */
-      NAIBU.doc.validateOnParse = false;
-      NAIBU.doc.resolveExternals = false;
-      NAIBU.doc.preserveWhiteSpace = true;
-      NAIBU.doc.loadXML(str);
+      ndoc.validateOnParse = false;
+      ndoc.resolveExternals = false;
+      ndoc.preserveWhiteSpace = true;
+      ndoc.loadXML(str);
       /*IE6-8のみで使えるupdateIntervalは、
        *描画間隔の調整が可能。デフォルトは0。
        *スクロール時にバグが起きるので、0に戻してやる必要がある。
@@ -1706,13 +1707,13 @@
          *代替の処理を用いて、実体参照を処理するもの
          */
         var tmp = str;
-        var enti = (NAIBU.doc.doctype)? NAIBU.doc.doctype.entities: { length:0 };
+        var enti = (ndoc.doctype)? ndoc.doctype.entities: { length:0 };
         for (var i=0; i<enti.length; i++) {
         var map = enti.item(i);
         var regex = new RegExp("&"+map.nodeName+";", "g");
         tmp = tmp.replace(regex, map.firstChild.xml);
         }
-        NAIBU.doc.loadXML(tmp);
+        ndoc.loadXML(tmp);
         tmp = null;
       }
       tview.top = 0;
@@ -1733,8 +1734,8 @@
       if (objh) {
         tar.setAttributeNS(null, "height", objh);
       }
-      fi = NAIBU.doc.documentElement.firstChild;
-      attr = NAIBU.doc.documentElement.attributes;
+      fi = ndoc.documentElement.firstChild;
+      attr = ndoc.documentElement.attributes;
       /*ルート要素のNamedNodeMapを検索する*/
       for (var i=0,atli=attr.length;i<atli;++i) {
         att = s.importNode(attr[i], false);
@@ -1757,7 +1758,7 @@
        *作り出す作業を行う。これは必須
        */
       style = tar.ownerDocument.defaultView.getComputedStyle(tar, "");
-      fontSize = parseFloat(style.getPropertyValue("font-size"));
+      fontSize = _parseFloat(style.getPropertyValue("font-size"));
       tar.x.baseVal._emToUnit(fontSize);
       tar.y.baseVal._emToUnit(fontSize);
       tar.width.baseVal._emToUnit(fontSize);
@@ -1783,8 +1784,8 @@
       /*ウィンドウ枠の長さを決定する*/
       viewWidth = w > sw ? sw : w;
       viewHeight = h > sh ? sh : h;
-      bfl = parseFloat(backrs.left);
-      bft = parseFloat(backrs.top);
+      bfl = _parseFloat(backrs.left);
+      bft = _parseFloat(backrs.top);
       bl = -tar._tx;
       bt = -tar._ty;
       if (bfl !== 0 && !isNaN(bfl)) { //内部の図形にずれが生じたとき(isNaNはIE8でautoがデフォルト値のため)
@@ -1842,16 +1843,20 @@
           /*以下はバッファリングにためておいた要素とイベントを、後から実行する*/
           NAIBU._buff_num = 0;
           NAIBU._buff = setInterval(function(){
-            if (DOMImplementation._buffer_.length === 0) {
+            var n = NAIBU._buff_num,
+                dbuf = DOMImplementation._buffer_,
+                dbufli = dbuf.length,
+                s, evt;
+            if (dufli === 0) {
               clearInterval(Event._buff);              
             } else {
-              var n = NAIBU._buff_num;
               for (var i=0;i<50;++i) {
-                var s = DOMImplementation._buffer_[n], evt = DOMImplementation._buffer_[n+1];
+                s = dbuf[n];
+                evt = dbuf[n+1];
                 s.dispatchEvent(evt);
                 n += 2;
-                s = evt = null;
-                if (n >= DOMImplementation._buffer_.length) {
+                dbuf = dbufli = s = evt = null;
+                if (n >= dbufli) {
                   clearInterval(NAIBU._buff);
                   DOMImplementation._buffer_ = null;
                   NAIBU.Time.start();




Sie-announce メーリングリストの案内
Back to archive index