this.canvas = document.createElement('canvas');
this.canvas.width = 240; // XXX
this.canvas.height = 240; // XXX
- this.renderCode = "";
+ this.renderCode = ""; // new Function("ctx,dict", "ctx.line...")
};
FlappShape.prototype = {
loadShapeTag: function(shape, dict) {
- ;
+ var rca = []; // rca
+ var fillStyles = shape.fillStyles;
+ var lineStyles = shape.lineStyles;
+ var fillEdges = shape.edges.fillEdges;
+ var lineEdges = shape.edges.lineEdges;
+ for (var fillStyle in fillEdges) {
+ // style
+ var style = fillStyles[fillStyle - 1];
+ console.log('style');
+ console.log(style);
+ console.log(fillStyle);
+ console.log(fillStyles);
+ var styleCode = null;
+ switch (style.type) {
+ case 00:
+ styleCode = style.color.toCSS();
+ break;
+ case 0x40:
+ case 0x41:
+ case 0x42:
+ case 0x43:
+ if (style.bitmapId === 65535) {
+ // nothing to do
+ } else {
+ rca.push("var bitmap = dict.get(style.bitmapId);");
+ rca.push("var image = bitmap.image;");
+ rca.push("var c = createImage(image.width, image.height);");
+ if ((style.type === 0x40) || (style.type === 0x42)) {
+ rca.push("var pattern = ctx.createPattern(c, 'repeat');");
+ } else {
+ rca.push("var pattern = ctx.createPattern(c, 'no-repeat');");
+ ;
+ }
+
+ styleCode = "pattern;";
+ }
+ break;
+ }
+ if (styleCode !== null) {
+ rca.push("ctx.fillStyle = '"+styleCode+"';");
+ }
+ var edgeInfoList = fillEdges[fillStyle];
+ for (var i1 = 0, l1 = edgeInfoList.length ; i1 < l1 ; i1++) {
+
+ var edges = edgeInfoList[i1].edges;
+ var edgesUsed = new Uint8Array(edges.length); // 0 initialize ?
+ if (edges.prev === null || edges.next === null) {
+ console.warn("edges.prev === null || edges.next === null");
+ continue;
+ }
+ for (var i2 = 0, l2 = edges.length ; i2 < l2; i2++) {
+ var edge = edges[i2];
+ if (edgesUsed[i2]) {
+ continue;
+ }
+ }
+ var edge = edges[i2];
+ rca.push("ctx.beginPath(edge[0], edge[1]);");
+ edgesUsed[i2] = 1; // used
+ rca.push("");
+ }
+ }
+ this.renderCode = rca.join("\n");
+ console.debug(this.renderCode);
+ //
},
- render: function(canvas) {
-
+ render: function(canvas, dict) {
+ console.debug("FlappShape::render");
+ var ret = new Function("ctx,dict", this.renderCode);
+ console.debug(ret);
+
},
destroy: function(canvas) {
- ;
}
};