svnno****@sourc*****
svnno****@sourc*****
2010年 6月 20日 (日) 23:30:09 JST
Revision: 1907 http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=1907 Author: dhrname Date: 2010-06-20 23:30:09 +0900 (Sun, 20 Jun 2010) Log Message: ----------- cコマンドとsコマンドのバグを修正 Modified Paths: -------------- branches/06x/061/org/w3c/dom/svg.js Modified: branches/06x/061/org/w3c/dom/svg.js =================================================================== --- branches/06x/061/org/w3c/dom/svg.js 2010-06-20 13:29:12 UTC (rev 1906) +++ branches/06x/061/org/w3c/dom/svg.js 2010-06-20 14:30:09 UTC (rev 1907) @@ -2055,12 +2055,8 @@ } else if (dii === "a") { s = tar.createSVGPathSegArcRel(di[j+5], di[j+6], di[j], di[j+1], di[j+2], di[j+3], di[j+4]); j += 6; - } else if (dii === "Z") { + } else if (dii === "Z" || dii === "z") { s = tar.createSVGPathSegClosePath(); - break; - } else if (dii === "z") { - s = tar.createSVGPathSegClosePath(); - break; } else if (dii === "S") { s = tar.createSVGPathSegCurvetoCubicSmoothAbs(di[j+2], di[j+3], di[j], di[j+1]); j += 3; @@ -2092,7 +2088,6 @@ *変換をする処理。相対座標を絶対座標に変換して、M、L、Cコマンドに正規化していく */ var cx = 0, cy = 0; //現在セグメントの終了点の絶対座標を示す (相対座標を絶対座標に変換するときに使用) - var xn = 0, yn = 0; //subpath の始点の絶対座標を示す (SコマンドやTコマンドなどで使用) for (var j=0, tli=tlist.numberOfItems;j<tli;++j) { var ti = tlist.getItem(j), ts = ti.pathSegType, dii = ti.pathSegTypeAsLetter; if (ts === SVGPathSeg.PATHSEG_UNKNOWN) { @@ -2212,8 +2207,8 @@ })(ti, cx, cy, rx, ry, tar, tnl); } else if (dii === "S") { if (j !== 0) { - var tg = tlist.getItem(j-1); - if (tg.pathSegTypeAsLetter === "C" || tg.pathSegTypeAsLetter === "c") { + var tg = tnl.getItem(tnl.numberOfItems-1); + if (tg.pathSegTypeAsLetter === "C") { var x1 = 2*tg.x - tg.x2; var y1 = 2*tg.y - tg.y2; tnl.appendItem(tar.createSVGPathSegCurvetoCubicAbs(cx, cy, x1, y1, ti.x2, ti.y2)); @@ -2221,8 +2216,8 @@ } } else if (dii === "s") { if (j !== 0) { - var tg = tlist.getItem(j-1); - if (tg.pathSegTypeAsLetter === "C" || tg.pathSegTypeAsLetter === "c") { + var tg = tnl.getItem(tnl.numberOfItems-1); + if (tg.pathSegTypeAsLetter === "C") { var x1 = 2*tg.x - tg.x2; var y1 = 2*tg.y - tg.y2; tnl.appendItem(tar.createSVGPathSegCurvetoCubicAbs(cx, cy, x1, y1, ti.x2+rx, ti.y2+ry)); @@ -2230,8 +2225,8 @@ } } else if (dii === "T" || dii === "t") { if (j !== 0) { - var tg = tlist.getItem(j-1); - if (tg.pathSegTypeAsLetter === "Q" || tg.pathSegTypeAsLetter === "q") { + var tg = tnl.getItem(tnl.numberOfItems-1); + if (tg.pathSegTypeAsLetter === "C") { var x1 = 2*tg.x - tg.x1; var y1 = 2*tg.y - tg.y1; tnl.appendItem(tar.createSVGPathSegCurvetoCubicAbs(cx, cy, (rx + 2*x1) / 3, (ry + 2*y1) / 3, (2*x1 + cx) / 3, (2*y1 + cy) / 3));