[Sie-announce] SIEコード [2140] チケット #23599

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2010年 11月 12日 (金) 22:59:18 JST


Revision: 2140
          http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=2140
Author:   dhrname
Date:     2010-11-12 22:59:18 +0900 (Fri, 12 Nov 2010)

Log Message:
-----------
チケット #23599
「Test Suiteのpath-data-x-tに関する表示の問題について」を修正

Ticket Links:
:-----------
    http://sourceforge.jp/projects/sie/tracker/detail/23599

Modified Paths:
--------------
    branches/06x/063/org/w3c/dom/svg.js

Modified: branches/06x/063/org/w3c/dom/svg.js
===================================================================
--- branches/06x/063/org/w3c/dom/svg.js	2010-11-12 12:09:32 UTC (rev 2139)
+++ branches/06x/063/org/w3c/dom/svg.js	2010-11-12 13:59:18 UTC (rev 2140)
@@ -2384,7 +2384,7 @@
        *変換をする処理。相対座標を絶対座標に変換して、M、L、Cコマンドに正規化していく
        */
       var cx = 0, cy = 0; //現在セグメントの終了点の絶対座標を示す (相対座標を絶対座標に変換するときに使用)
-      var xn = 0, yn = 0; //T,tコマンドで仮想的な座標を算出するのに用いる
+      var xn = 0, yn = 0; //T,tコマンドで仮想的な座標を算出するのに用いる。第一コントロール点
       var startx = 0, starty = 0; //M,mコマンドにおける始点座標(Z,zコマンドで用いる)
       for (var j=0, tli=tlist.numberOfItems;j<tli;++j) {
         var ti = tlist.getItem(j), ts = ti.pathSegType, dii = ti.pathSegTypeAsLetter;
@@ -2514,13 +2514,14 @@
               if (tg.pathSegTypeAsLetter === "C") {
                 var x1 = 2*tg.x - tg.x2;
                 var y1 = 2*tg.y - tg.y2;
-              } else {
+              } else { //前のコマンドがCでなければ、現在の座標を第1コントロール点に用いる
                 var x1 = rx, y1 = ry;
               }
             } else {
               var x1 = rx, y1 = ry;
             }
             tnl.appendItem(tar.createSVGPathSegCurvetoCubicAbs(cx, cy, x1, y1, ti.x2, ti.y2));
+            x1 = y1 = null;
           } else if (dii === "s") {
             if (j !== 0) {
               var tg = tnl.getItem(tnl.numberOfItems-1);
@@ -2534,21 +2535,27 @@
               var x1 = rx, y1 = ry;
             }
             tnl.appendItem(tar.createSVGPathSegCurvetoCubicAbs(cx, cy, x1, y1, ti.x2+rx, ti.y2+ry));
+            x1 = y1 = null;
           } else if (dii === "T" || dii === "t") {
             if (j !== 0) {
               var tg = tlist.getItem(j-1);
               if ("QqTt".indexOf(tg.pathSegTypeAsLetter) > -1) {
-                tnl.appendItem(tar.createSVGPathSegCurvetoCubicAbs(cx, cy, (rx + 2*xn) / 3, (ry + 2*yn) / 3, (2*xn + cx) / 3, (2*yn + cy) / 3));
-                xn = 2*cx - xn;
-                yn = 2*cy - yn;
+               } else {
+                xn = rx, yn = ry;
               }
+            } else {
+              xn = rx, yn = ry;
             }
+            tnl.appendItem(tar.createSVGPathSegCurvetoCubicAbs(cx, cy, (rx + 2*xn) / 3, (ry + 2*yn) / 3, (2*xn + cx) / 3, (2*yn + cy) / 3));
+            xn = 2*cx - xn;
+            yn = 2*cy - yn;
+            xx1 = yy1 = null;
           } else if (dii === "H" || dii === "h") {
             tnl.appendItem(tar.createSVGPathSegLinetoAbs(cx, ry));
             cy = ry; //勝手にti.yが0としているため
           } else if (dii === "V" || dii === "v") {
             tnl.appendItem(tar.createSVGPathSegLinetoAbs(rx, cy));
-            cx = rx; //勝手にti.yが0としているため
+            cx = rx;
           }
         }
         ti = dii = ts = null;




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