Files
Tessellate/src/drawSquare.js
2016-02-24 15:32:03 -05:00

45 lines
1.5 KiB
JavaScript

import {sqrt2} from './utils.js';
export default class DrawSquare {
constructor(settings) {
this.squareX = [1, 1, -1, -1];
this.squareY = [1, -1, -1, 1];
this.diamondX = [sqrt2, 0, -sqrt2, 0];
this.diamondY = [0, -sqrt2, 0, sqrt2];
}
filled(context, scale, x, y, cell) {
scale = scale * cell.scale;
let squareCornerX = cell.pointyTop ? this.diamondX : this.squareX;
let squareCornerY = cell.pointyTop ? this.diamondY : this.squareY;
context.beginPath();
context.moveTo(x + scale * squareCornerX[0], y + scale * squareCornerY[0]);
context.lineTo(x + scale * squareCornerX[1], y + scale * squareCornerY[1]);
context.lineTo(x + scale * squareCornerX[2], y + scale * squareCornerY[2]);
context.lineTo(x + scale * squareCornerX[3], y + scale * squareCornerY[3]);
context.fillStyle = cell.getColor();
context.fill();
}
outline(context, scale, x, y, cell) {
scale = scale * cell.scale;
let squareCornerX = cell.pointyTop ? this.diamondX : this.squareX;
let squareCornerY = cell.pointyTop ? this.diamondY : this.squareY;
context.beginPath();
context.moveTo(x + scale * squareCornerX[0], y + scale * squareCornerY[0]);
context.lineTo(x + scale * squareCornerX[1], y + scale * squareCornerY[1]);
context.lineTo(x + scale * squareCornerX[2], y + scale * squareCornerY[2]);
context.lineTo(x + scale * squareCornerX[3], y + scale * squareCornerY[3]);
context.closePath();
context.lineWidth = cell.width;
context.strokeStyle = cell.getColor();
context.stroke();
}
}