OSDN Git Service

- spline curve 対応
authorYoya <yoya@awm.jp>
Mon, 24 Dec 2012 11:42:55 +0000 (20:42 +0900)
committerYoya <yoya@awm.jp>
Mon, 24 Dec 2012 11:42:55 +0000 (20:42 +0900)
- createPattern で , が消えてたので戻した

src/shape.js

index b53373c..e27b275 100644 (file)
@@ -57,10 +57,9 @@ FlappShape.prototype = {
                    rca.push("var bitmap = dict.get("+style.bitmapId+");");
                    rca.push("var image = bitmap.image;");
                    if ((style.type === 0x40) || (style.type ===  0x42)) {
-                       rca.push("var pattern = ctx.createPattern(image 'repeat');");
+                       rca.push("var pattern = ctx.createPattern(image, 'repeat');");
                     } else {
                         rca.push("var pattern = ctx.createPattern(image, 'no-repeat');");
-                       ;
                     }
                    styleCode = "pattern;";
                }
@@ -91,15 +90,20 @@ FlappShape.prototype = {
                console.log(edgeInfo);
                 rca.push("ctx.beginPath("+edges[0]+","+edges[1]+");");
                do {
-                   edgeInfo = edgeInfoList[currIndex];
-                   edges = edgeInfo.edges;
                    if (edgesUsed[currIndex]) {
                        console.error("duplicate link edge");
                        break;
                    }
+                   edgeInfo = edgeInfoList[currIndex];
+                   edges = edgeInfo.edges;
+                   var types = edgeInfo.types;
                    edgesUsed[currIndex] = 1; // used
                    for (var i2 = 2, l2 = edges.length ; i2 < l2; ) {
-                       rca.push("ctx.lineTo("+edges[i2++]+","+edges[i2++]+");");
+                       if (types[i2 / 2 - 1] === 'C') {
+                           rca.push("ctx.ctx.quadraticCurveTo("+edges[i2++]+","+edges[i2++]+","+edges[i2++]+","+edges[i2++]+");");
+                       } else {
+                           rca.push("ctx.lineTo("+edges[i2++]+","+edges[i2++]+");");
+                       }
                    }
                    if (currIndex === edgeInfo.next) {
                        break; // self loop