UNPKG

obelisk.js-browserify-test

Version:

JavaScript Engine for Building Pixel Isometric Element with HTML5 Canvas

85 lines (69 loc) 2.88 kB
/*global obelisk:true*/ /* * SideX */ (function (obelisk) { "use strict"; var SideX, p; SideX = function (dimension, color, border, useDefaultCanvas) { this.initialize(dimension, color, border, useDefaultCanvas); }; p = SideX.prototype = new obelisk.AbstractPrimitive(); // public properties // constructor p.initialize = function (dimension, color, border, useDefaultCanvas) { this.initRender(dimension, color, border, useDefaultCanvas); this.initRectangle(); this.initBitmapData(); this.build(); this.renderBitmapDataForCanvas(); return this; }; // private method p.initRender = function (dimension, color, border, useDefaultCanvas) { this.useDefaultCanvas = useDefaultCanvas || false; this.border = border || border === undefined; this.dimension = dimension === undefined ? new obelisk.SideXDimension() : dimension; this.color = color === undefined ? new obelisk.SideColor() : color; }; p.initRectangle = function () { this.w = this.dimension.xAxis; this.h = this.dimension.zAxis + this.dimension.xAxis / 2; // the matrix offset between the bitmap and the 3d pixel coordinate ZERO point this.matrix = new obelisk.Matrix(); this.matrix.tx = 0; this.matrix.ty = -this.dimension.zAxis; }; p.initBitmapData = function () { this.bitmapData = new obelisk.BitmapData(this.w, this.h, this.useDefaultCanvas); }; p.renderBitmapDataForCanvas = function () { this.bitmapData.context.putImageData(this.bitmapData.imageData, 0, 0); this.canvas = this.bitmapData.canvas; }; p.build = function () { var xOffsetInner, yOffsetInner, xOffsetOut, yOffsetOut, i, j, borderColor; xOffsetInner = 0; yOffsetInner = this.dimension.zAxis; xOffsetOut = this.dimension.xAxis - 1; yOffsetOut = this.h - this.dimension.zAxis - 1; borderColor = this.border ? this.color.border : this.color.inner; //x axis for (i = 0; i < this.dimension.xAxis; i += 1) { this.bitmapData.setPixel(xOffsetInner + i, yOffsetInner + Math.floor(i / 2), borderColor); this.bitmapData.setPixel(xOffsetOut - i, yOffsetOut - Math.floor(i / 2), borderColor); } //z axis for (j = 0; j < this.dimension.zAxis; j += 1) { this.bitmapData.setPixel(xOffsetInner, yOffsetInner - j, borderColor); this.bitmapData.setPixel(xOffsetOut, yOffsetOut + j, borderColor); } //fill an pixel graphic enclosed this.bitmapData.floodFill(Math.floor(this.w / 2), Math.floor(this.h / 2), this.color.inner); }; // public methods p.toString = function () { return "[SideX]"; }; obelisk.SideX = SideX; }(obelisk));