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;