OSDN Git Service

minX, minY 分右下にズラして描画
authorYoshihiro Yamazaki <yoya@awm.jp>
Wed, 26 Dec 2012 11:10:32 +0000 (20:10 +0900)
committerYoshihiro Yamazaki <yoya@awm.jp>
Wed, 26 Dec 2012 11:10:32 +0000 (20:10 +0900)
src/shape.js

index 18ff103..f5bf43f 100644 (file)
@@ -43,6 +43,11 @@ FlappShape.prototype = {
            //      console.log(fillStyles);
            var styleCode = null;
            var factor = FlappSWFMatrix.maxAbsScaleSkew(this.absoluteMatrix);
+           var edgeInfoList = fillEdges[fillStyle];
+           var minX = edgeInfoList.minX;
+           var maxX = edgeInfoList.maxX;
+           var minY = edgeInfoList.minY;
+           var maxY = edgeInfoList.maxY;
            switch (style.type) {
            case 00:
                styleCode = '"'+style.color.toCSS()+'"';
@@ -86,7 +91,7 @@ FlappShape.prototype = {
                rca.push("ctx.save();");
                rca.push("ctx.transform("+1/factor+",0, 0, "+1/factor+", 0, 0);");
            }
-           var edgeInfoList = fillEdges[fillStyle];
+           rca.push("ctx.translate("+minX*factor+","+minY*factor+");");
            var edgesUsed = new Uint8Array(edgeInfoList.length); // 0 initialized
            for (var i1 = 0, l1 = edgeInfoList.length ; i1 < l1 ; i1++) {
                var edgeInfo = edgeInfoList[i1];
@@ -100,7 +105,7 @@ FlappShape.prototype = {
                }
                var currIndex = i1;
                console.log(edgeInfo);
-                rca.push("ctx.beginPath("+edges[0]*factor+","+edges[1]*factor+");");
+                rca.push("ctx.beginPath("+(edges[0]-minX)*factor+","+(edges[1]-minY)*factor+");");
                do {
                    if (edgesUsed[currIndex]) {
                        console.error("duplicate link edge");
@@ -112,9 +117,9 @@ FlappShape.prototype = {
                    edgesUsed[currIndex] = 1; // used
                    for (var i2 = 2, l2 = edges.length ; i2 < l2; ) {
                        if (types[i2 / 2 - 1] === 'C') {
-                           rca.push("ctx.ctx.quadraticCurveTo("+edges[i2++]*factor+","+edges[i2++]*factor+","+edges[i2++]*factor+","+edges[i2++]*factor+");");
+                           rca.push("ctx.ctx.quadraticCurveTo("+(edges[i2++]-minX)*factor+","+(edges[i2++]-minY)*factor+","+(edges[i2++]-minX)*factor+","+(edges[i2++]-minY)*factor+");");
                        } else {
-                           rca.push("ctx.lineTo("+edges[i2++]*factor+","+edges[i2++]*factor+");");
+                           rca.push("ctx.lineTo("+(edges[i2++]-minX)*factor+","+(edges[i2++]-minY)*factor+");");
                        }
                    }
                    if (currIndex === edgeInfo.next) {