[Sie-announce] SIEコード [2937] getStartPositionOfCharメソッドの変数を軽量化のため整理

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2011年 9月 12日 (月) 20:29:50 JST


Revision: 2937
          http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=2937
Author:   dhrname
Date:     2011-09-12 20:29:49 +0900 (Mon, 12 Sep 2011)

Log Message:
-----------
getStartPositionOfCharメソッドの変数を軽量化のため整理

Modified Paths:
--------------
    branches/08x/085/org/w3c/dom/svg.js

Modified: branches/08x/085/org/w3c/dom/svg.js
===================================================================
--- branches/08x/085/org/w3c/dom/svg.js	2011-09-12 11:02:22 UTC (rev 2936)
+++ branches/08x/085/org/w3c/dom/svg.js	2011-09-12 11:29:49 UTC (rev 2937)
@@ -3929,22 +3929,29 @@
   if (charnum > this.getNumberOfChars() || charnum < 0) {
     throw (new DOMException(DOMException.INDEX_SIZE_ERR));
   } else {
-    var tar = this, ti = tar.firstChild, tp = tar.parentNode;
+    var tar = this,
+        ti = tar.firstChild,
+        tp = tar.parentNode;
     if (!!!tar._list) {
       tar._list = [];
-      var chars = tar._chars; //現在、何文字目にあるのか
-      var x = tar._stx, y = tar._sty, n = 0; //現在のテキスト位置と順番
-      var style = tar.ownerDocument.defaultView.getComputedStyle(tar, null);
-      var isYokogaki = ((style.getPropertyValue("writing-mode")) === "lr-tb") ? true : false;
-      var fontSize = parseFloat(style.getPropertyValue("font-size"));
-      var tx = tar.x.baseVal, ty = tar.y.baseVal, tdx = tar.dx.baseVal, tdy = tar.dy.baseVal;
+      var chars = tar._chars, //現在、何文字目にあるのか
+          x = tar._stx, y = tar._sty, n = 0, //現在のテキスト位置と順番
+          style = tar.ownerDocument.defaultView.getComputedStyle(tar, null),
+          isYokogaki = ((style.getPropertyValue("writing-mode")) === "lr-tb") ? true : false,
+          fontSize = parseFloat(style.getPropertyValue("font-size")),
+          tx = tar.x.baseVal, ty = tar.y.baseVal, tdx = tar.dx.baseVal, tdy = tar.dy.baseVal;
       /*親要素の属性も参照しておく*/
       if (tp && ((tp.localName === "text") ||(tp.localName === "tspan"))) {
-        var ptx = tp.x.baseVal, pty = tp.y.baseVal, ptdx = tp.dx.baseVal, ptdy = tp.dy.baseVal;
+        var ptx = tp.x.baseVal,
+            pty = tp.y.baseVal,
+            ptdx = tp.dx.baseVal,
+            ptdy = tp.dy.baseVal;
       } else {
         var ptx = pty = ptdx = ptdy = {numberOfItems : 0};
       }
-      var kern = "f ijltIr.,:;'-\"()", akern = "1234567890abcdeghknopquvxyz";
+      var kern = "f ijltIr.,:;'-\"()",
+          akern = "1234567890abcdeghknopquvxyz",
+          tt, alm, tdc, tcca, p, almx, almy, tlist, tg;
       if (isYokogaki && (tar.localName === "text")) {
         y += fontSize * 0.2;
       } else if (tar.localName === "text"){
@@ -3952,7 +3959,7 @@
       }
       while (ti) {
         if (ti.nodeType === Node.TEXT_NODE) {
-          var tt = ti._tars;
+          tt = ti._tars;
           /*tspan要素のx属性で指定された座標の個数よりも、文字数が多い場合は、祖先(親)のx属性を
            *使う。また、属性が指定されていないときも同様に祖先や親を使う。
            *もし、仮に祖先や親がx属性を指定されていなければ、現在のテキスト位置(変数xに格納している)を使う。
@@ -3995,10 +4002,10 @@
             } else if (n < tdy.numberOfItems) {
               y += tdy.getItem(n).value;
             }
-            var alm = 0;
+            alm = 0;
             if (isYokogaki) {
               //カーニングを求めて、字の幅を文字ごとに調整する
-              var tdc = ti.data.charAt(i);
+              tdc = ti.data.charAt(i);
               if (kern.indexOf(tdc) > -1) {
                 alm = fontSize * 0.68;
               } else if (tdc === "s"){
@@ -4010,18 +4017,18 @@
               } else {
                 alm = fontSize * 0.3;
               }
-              var tcca = tdc.charCodeAt(0);
+              tcca = tdc.charCodeAt(0);
               if ((12288 <= tcca) && (tcca <= 65533)) {
                 alm = -fontSize * 0.01;
                 if ((tdc === "う") || (tdc === "く") || (tdc === "し") || (tdc === "ち")) {
                   alm += fontSize * 0.2;
                 }
               }
-              tcca = null;
             }
-            tar._list[tar._list.length] = x;
-            tar._list[tar._list.length] = y;
-            tar._list[tar._list.length] = fontSize - alm;
+            tlist = tar._list;
+            tlist[tlist.length] = x;
+            tlist[tlist.length] = y;
+            tlist[tlist.length] = fontSize - alm;
             if (isYokogaki) {
               x += fontSize;
               x -= alm;
@@ -4042,8 +4049,9 @@
           ti._stx = x;
           ti._sty = y;
           ti._chars = chars;
-          var p = ti.getStartPositionOfChar(ti.getNumberOfChars());
-          var almx = 0, almy = 0;
+          p = ti.getStartPositionOfChar(ti.getNumberOfChars());
+          almx = 0;
+          almy = 0;
           if (isYokogaki) {
             almx = ti._list[ti._list.length-1];
           } else {
@@ -4052,10 +4060,9 @@
           x = ti._list[ti._list.length-3] + almx;
           y = ti._list[ti._list.length-2] + almy;
           tar._list = tar._list.concat(ti._list);
-          var tg = ti.getNumberOfChars();
+          tg = ti.getNumberOfChars();
           n += tg;
           chars += tg;
-          p = tg = null;
           ti = ti.nextSibling;
         } else if ((ti.localName === "a") && (ti.namespaceURI === "http://www.w3.org/2000/svg") && ti.firstChild) {
           /*a要素のテキストノードも処理する*/
@@ -4065,8 +4072,8 @@
         }
       }
       tar._isYokogaki = isYokogaki //getEndPositionOfCharメソッドなどで使う
-      tar = ti = tp = ptx = pty = tx = ty = chars = style = x = y = isYokogaki = null;
     }
+    tar = ti = tp = ptx = pty = tx = ty = chars = style = x = y = isYokogaki = kern = akern = tt = alm = tdc = tcca = p = almx = almy = tlist = tg = null;
     var s = this.ownerDocument.documentElement.createSVGPoint();
     s.x = this._list[charnum*3];
     s.y = this._list[charnum*3 + 1];




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