OSDN Git Service

_caメソッドのテキスト処理を改善して高速化
authordhrname <dhrname@users.sourceforge.jp>
Sat, 12 Jan 2013 11:42:36 +0000 (20:42 +0900)
committerdhrname <dhrname@users.sourceforge.jp>
Sat, 12 Jan 2013 11:42:36 +0000 (20:42 +0900)
org/w3c/dom/svg.js

index 185f496..3c3e7f4 100644 (file)
@@ -1753,7 +1753,7 @@ function _ca_() {
         s = DOMImplementation.createDocument("http://www.w3.org/2000/svg", "svg"),\r
         tar = s.documentElement,\r
         tview = tar.viewport,\r
-        objw, objh, fi, n, attr, att, w, h,\r
+        objw, objh, fi, attr, w, h,\r
         sdt = tar._tar,\r
         sp = _doc.createElement("div"),\r
         dcp = _doc.createElement("v:group"),\r
@@ -1803,8 +1803,7 @@ function _ca_() {
       ndoc.loadXML(tmp);\r
       tmp = enti = map = void 0;\r
     }\r
-    tview.top = 0;\r
-    tview.left = 0;\r
+    tview.top = tview.left = 0;\r
     tview.width = objei.clientWidth;\r
     tview.height = objei.clientHeight;\r
     if (tview.height < 24) { //IEの標準モードではclientHeightプロパティの値が小さくなることがある\r
@@ -1815,18 +1814,13 @@ function _ca_() {
     }\r
     objw = objei.getAttribute("width");\r
     objh = objei.getAttribute("height");\r
-    if (objw) {\r
-      tar.setAttributeNS(null, "width", objw);\r
-    }\r
-    if (objh) {\r
-      tar.setAttributeNS(null, "height", objh);\r
-    }\r
+    objw && tar.setAttributeNS(null, "width", objw);\r
+    objh && tar.setAttributeNS(null, "height", objh);\r
     fi = ndoc.documentElement.firstChild;\r
     attr = ndoc.documentElement.attributes;\r
     /*ルート要素のNamedNodeMapを検索する*/\r
     for (var i=0,atli=attr.length;i<atli;++i) {\r
-      att = s.importNode(attr[i], false);\r
-      tar.setAttributeNodeNS(att);\r
+      tar.setAttributeNodeNS(s.importNode(attr[i], false));\r
     }\r
     str = attr = void 0;\r
     dcp.style.width = tview.width+ "px";\r
@@ -1840,8 +1834,7 @@ function _ca_() {
     }\r
     dcp.appendChild(sdt);\r
     while (fi) { //子ノードを検索して、子供がいれば、importNodeメソッドを再帰的に実行する\r
-      n = s.importNode(fi, true);\r
-      tar.appendChild(n);\r
+      tar.appendChild(s.importNode(fi, true));\r
       fi = fi.nextSibling;\r
     }\r
     fi = void 0;\r
@@ -1860,14 +1853,14 @@ function _ca_() {
     tar.height.baseVal._emToUnit(fontSize);\r
     sw = tar.width.baseVal.value;\r
     sh = tar.height.baseVal.value;\r
-    backr.style.position = "absolute";\r
+    backrs = backr.style;\r
+    backrs.position = "absolute";\r
     w = tview.width;\r
     h = tview.height;\r
-    backr.style.width = w+ "px";\r
-    backr.style.height = h+ "px";\r
-    backr.style.zIndex = -1;\r
-    backr.stroked = "false";\r
-    backr.filled = "false";\r
+    backrs.width = w+ "px";\r
+    backrs.height = h+ "px";\r
+    backrs.zIndex = -1;\r
+    backr.stroked = backr.filled = "false";\r
     tar._tar.appendChild(backr);\r
     trstyle = tar._tar.style;\r
     trstyle.visibility = "visible";\r
@@ -1910,6 +1903,7 @@ function _ca_() {
       }\r
     }\r
     //以下、テキストの位置を修正\r
+    trstyle.visibility = "hidden";\r
     text = s.documentElement._tar.getElementsByTagName("div");\r
     for (var i=0, texti;text[i];++i) {\r
       texti = text[i];\r
@@ -1922,9 +1916,10 @@ function _ca_() {
     }\r
     //ビューポートの位置をスクロールで調整 (なお、_txプロパティはSVGSVGElementのSIEコードを参照)\r
     ifcw && ifcw.scroll(-s.documentElement._tx, -s.documentElement._ty);\r
+    trstyle.visibility = "visible";\r
     s._isLoaded = 1;  //_isLoadedプロパティはevents::dispatchEventメソッドで使う\r
     s.defaultView._cache = s.defaultView._cache_ele = null;\r
-    oba = _doc = evt = ndoc = objei = tar = tview = objw = objh = n = att = sdt = sp = dcp = backr = sw = sh = style = fontSize = void 0;\r
+    oba = _doc = evt = ndoc = objei = tar = tview = objw = objh = sdt = sp = dcp = backr = sw = sh = style = fontSize = void 0;\r
     trstyle = backrs = text = texti = i = bfl = bft = bl = bt = text = _parseFloat = w = h = viewWidth = viewHeight = backdown = backright = void 0;\r
     /*IEのメモリリーク対策として、空関数を入力*/\r
     this.xmlhttp.onreadystatechange = NAIBU.emptyFunction;\r