{"version":3,"file":"index.cjs","sources":["../src/colors/AbstractColor.ts","../src/utils/ColorGeom.ts","../src/colors/CubeColor.ts","../src/colors/LineColor.ts","../src/colors/PyramidColor.ts","../src/colors/SideColor.ts","../src/colors/SlopeColor.ts","../src/dimensions/AbstractDimension.ts","../src/dimensions/BrickDimension.ts","../src/dimensions/CubeDimension.ts","../src/dimensions/LineXDimension.ts","../src/dimensions/LineYDimension.ts","../src/dimensions/LineZDimension.ts","../src/dimensions/PyramidDimension.ts","../src/dimensions/SideXDimension.ts","../src/dimensions/SideYDimension.ts","../src/dimensions/SlopeDimension.ts","../src/primitives/AbstractPrimitive.ts","../src/geom/Matrix.ts","../src/geom/Point.ts","../src/geom/Point3D.ts","../src/utils/CanvasManager.ts","../src/display/BitmapData.ts","../src/primitives/Brick.ts","../src/display/PixelObject.ts","../src/primitives/SideX.ts","../src/primitives/SideY.ts","../src/primitives/Cube.ts","../src/primitives/LineX.ts","../src/primitives/LineY.ts","../src/primitives/LineZ.ts","../src/primitives/Pyramid.ts","../src/primitives/SlopeEast.ts","../src/primitives/SlopeNorth.ts","../src/primitives/SlopeSouth.ts","../src/primitives/SlopeWest.ts","../src/display/PixelView.ts","../src/utils/CanvasTool.ts","../src/utils/ColorPattern.ts"],"sourcesContent":["export class AbstractColor {\r\n  /**\r\n   * The inner colors for elements of certain primitive\r\n   */\r\n  public inner: number | null;\r\n\r\n  /**\r\n   * The border colors for elements of certain primitive\r\n   */\r\n  public border: number | null;\r\n\r\n  /**\r\n   * The borderHighlight colors for elements of certain primitive\r\n   */\r\n  public borderHighlight: number | null;\r\n\r\n  /**\r\n   * The left side colors for elements of certain primitive\r\n   */\r\n  public left: number | null;\r\n\r\n  /**\r\n   * The right side colors for elements of certain primitive\r\n   */\r\n  public right: number | null;\r\n\r\n  /**\r\n   * The horizontal colors for elements of certain primitive\r\n   */\r\n  public horizontal: number | null;\r\n\r\n  /**\r\n   * The left slot side colors for elements of certain primitive\r\n   */\r\n  public leftSlope: number | null;\r\n\r\n  /**\r\n   * The right slot side colors for elements of certain primitive\r\n   */\r\n  public rightSlope: number | null;\r\n\r\n  constructor({\r\n    inner = null,\r\n    left = null,\r\n    right = null,\r\n    border = null,\r\n    borderHighlight = null,\r\n    horizontal = null,\r\n    leftSlope = null,\r\n    rightSlope = null,\r\n  }: {\r\n    inner?: number | null;\r\n    left?: number | null;\r\n    right?: number | null;\r\n    border?: number | null;\r\n    borderHighlight?: number | null;\r\n    horizontal?: number | null;\r\n    leftSlope?: number | null;\r\n    rightSlope?: number | null;\r\n  } = {}) {\r\n    this.inner = inner;\r\n    this.left = left;\r\n    this.right = right;\r\n    this.border = border;\r\n    this.borderHighlight = borderHighlight;\r\n    this.horizontal = horizontal;\r\n    this.leftSlope = leftSlope;\r\n    this.rightSlope = rightSlope;\r\n  }\r\n\r\n  public static toString(): string {\r\n    return \"[AbstractColor]\";\r\n  }\r\n}\r\n","﻿/* eslint-disable no-bitwise */\r\n\r\nexport abstract class ColorGeom {\r\n  public static get32(color: number): number {\r\n    return color < 0xff000000 ? color + 0xff000000 : color;\r\n  }\r\n\r\n  public static applyBrightness(\r\n    color: number,\r\n    brightness: number,\r\n    highlight?: boolean\r\n  ): number {\r\n    let r;\r\n    let g;\r\n    let b;\r\n    let y;\r\n\r\n    const a = (color >>> 24) & 0x000000ff;\r\n    r = (color >>> 16) & 0x000000ff;\r\n    g = (color >>> 8) & 0x000000ff;\r\n    b = color & 0x000000ff;\r\n\r\n    y = ((r * 313524) >> 20) + ((g * 615514) >> 20) + ((b * 119538) >> 20);\r\n    const u =\r\n      -((155189 * r) >> 20) - ((303038 * g) >> 20) + ((458227 * b) >> 20);\r\n    const v =\r\n      ((644874 * r) >> 20) - ((540016 * g) >> 20) - ((104857 * b) >> 20);\r\n\r\n    if (!highlight) {\r\n      y += brightness;\r\n    } else {\r\n      y = 60 + y ** 1.2;\r\n    }\r\n\r\n    r = y + ((1195376 * v) >> 20);\r\n    g = y - ((408944 * u) >> 20) - ((608174 * v) >> 20);\r\n    b = y + ((2128609 * u) >> 20);\r\n\r\n    r = Math.max(0, Math.min(r, 255));\r\n    g = Math.max(0, Math.min(g, 255));\r\n    b = Math.max(0, Math.min(b, 255));\r\n\r\n    return (a << 24) | (r << 16) | (g << 8) | b;\r\n  }\r\n}\r\n\r\nColorGeom.toString = () => \"[ColorGeom]\";\r\n","import { AbstractColor } from \"./AbstractColor\";\r\nimport { ColorGeom } from \"../utils/ColorGeom\";\r\n\r\nexport class CubeColor extends AbstractColor {\r\n  public brightnessGain = -20;\r\n\r\n  constructor(\r\n    border?: number,\r\n    borderHighlight?: number,\r\n    left?: number,\r\n    right?: number,\r\n    horizontal?: number\r\n  ) {\r\n    super();\r\n    this.border = ColorGeom.get32(border === undefined ? 0x878787 : border);\r\n    this.borderHighlight = ColorGeom.get32(\r\n      borderHighlight === undefined ? 0xffffff : borderHighlight\r\n    );\r\n    this.left = ColorGeom.get32(left === undefined ? 0xc9cfd0 : left);\r\n    this.right = ColorGeom.get32(right === undefined ? 0xe3e3e3 : right);\r\n    this.horizontal = ColorGeom.get32(\r\n      horizontal === undefined ? 0xeeeff0 : horizontal\r\n    );\r\n  }\r\n\r\n  public getByHorizontalColor(horizontal: number): CubeColor {\r\n    return new CubeColor(\r\n      ColorGeom.applyBrightness(horizontal, this.brightnessGain * 4),\r\n      // Apply highlight\r\n      ColorGeom.applyBrightness(horizontal, 0, true),\r\n      ColorGeom.applyBrightness(horizontal, this.brightnessGain * 2),\r\n      ColorGeom.applyBrightness(horizontal, this.brightnessGain),\r\n      horizontal\r\n    );\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[CubeColor]\";\r\n  }\r\n}\r\n","import { AbstractColor } from \"./AbstractColor\";\r\nimport { ColorGeom } from \"../utils/ColorGeom\";\r\n\r\nexport class LineColor extends AbstractColor {\r\n  constructor(border?: number, inner?: number) {\r\n    super({ border: border || null, inner: inner || null });\r\n    this.border = ColorGeom.get32(border === undefined ? 0x878787 : border);\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[LineColor]\";\r\n  }\r\n}\r\n","import { AbstractColor } from \"./AbstractColor\";\r\nimport { ColorGeom } from \"../utils/ColorGeom\";\r\n\r\nexport class PyramidColor extends AbstractColor {\r\n  public brightnessGain = -20;\r\n\r\n  constructor(\r\n    border?: number,\r\n    borderHighlight?: number,\r\n    left?: number,\r\n    right?: number\r\n  ) {\r\n    super();\r\n    this.border = ColorGeom.get32(border === undefined ? 0x949698 : border);\r\n    this.borderHighlight = ColorGeom.get32(\r\n      borderHighlight === undefined ? 0xffffff : borderHighlight\r\n    );\r\n    this.left = ColorGeom.get32(left === undefined ? 0xe6e8e9 : left);\r\n    this.right = ColorGeom.get32(right === undefined ? 0xeeeff0 : right);\r\n  }\r\n\r\n  public getByRightColor(right: number): PyramidColor {\r\n    return new PyramidColor(\r\n      ColorGeom.applyBrightness(right, this.brightnessGain * 4),\r\n      // Apply highlight\r\n      ColorGeom.applyBrightness(right, 0, true),\r\n      ColorGeom.applyBrightness(right, this.brightnessGain),\r\n      right\r\n    );\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[PyramidColor]\";\r\n  }\r\n}\r\n","import { AbstractColor } from \"./AbstractColor\";\r\nimport { ColorGeom } from \"../utils/ColorGeom\";\r\n\r\nexport class SideColor extends AbstractColor {\r\n  public brightnessGain = -20;\r\n\r\n  constructor(border?: number, inner?: number) {\r\n    super();\r\n    this.border = ColorGeom.get32(border === undefined ? 0x878787 : border);\r\n    this.inner = ColorGeom.get32(inner === undefined ? 0xeeeeee : inner);\r\n  }\r\n\r\n  public getByInnerColor(inner: number): SideColor {\r\n    return new SideColor(\r\n      ColorGeom.applyBrightness(inner, this.brightnessGain * 4),\r\n      inner\r\n    );\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[SideColor]\";\r\n  }\r\n}\r\n","import { AbstractColor } from \"./AbstractColor\";\r\nimport { ColorGeom } from \"../utils/ColorGeom\";\r\n\r\nexport class SlopeColor extends AbstractColor {\r\n  public brightnessGain = -20;\r\n\r\n  constructor(\r\n    border?: number,\r\n    borderHighlight?: number,\r\n    left?: number,\r\n    right?: number,\r\n    leftSlope?: number,\r\n    rightSlope?: number\r\n  ) {\r\n    super();\r\n    this.border = ColorGeom.get32(border === undefined ? 0x949698 : border);\r\n    this.borderHighlight = ColorGeom.get32(\r\n      borderHighlight === undefined ? 0xffffff : borderHighlight\r\n    );\r\n    this.left = ColorGeom.get32(left === undefined ? 0xc9cfd0 : left);\r\n    this.right = ColorGeom.get32(right === undefined ? 0xe6e8e9 : right);\r\n    this.leftSlope = ColorGeom.get32(\r\n      leftSlope === undefined ? 0xdbdbdb : leftSlope\r\n    );\r\n    this.rightSlope = ColorGeom.get32(\r\n      rightSlope === undefined ? 0xdbdbdb : rightSlope\r\n    );\r\n  }\r\n\r\n  /*\r\n   * Horizontal side doesn't actually exist in the Slope primitive.\r\n   * You can assign the same horizontal color as cube\r\n   * so that you will be able to arrange the slope with cube\r\n   */\r\n  public getByHorizontalColor(horizontal: number): SlopeColor {\r\n    return new SlopeColor(\r\n      ColorGeom.applyBrightness(horizontal, this.brightnessGain * 4),\r\n      // Apply highlight\r\n      ColorGeom.applyBrightness(horizontal, 0, true),\r\n      ColorGeom.applyBrightness(horizontal, this.brightnessGain * 2),\r\n      ColorGeom.applyBrightness(horizontal, this.brightnessGain),\r\n      ColorGeom.applyBrightness(horizontal, this.brightnessGain * 1.5),\r\n      ColorGeom.applyBrightness(horizontal, this.brightnessGain * 0.5)\r\n    );\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[SlopeColor]\";\r\n  }\r\n}\r\n","export class AbstractDimension {\r\n  /**\r\n   * The x Axis dimensions in 22.6 degrees coordinate\r\n   */\r\n  public xAxis: number | null;\r\n\r\n  /**\r\n   * The y Axis dimensions in 22.6 degrees coordinate\r\n   */\r\n  public yAxis: number | null;\r\n\r\n  /**\r\n   * The z Axis dimensions in 22.6 degrees coordinate\r\n   */\r\n  public zAxis: number | null;\r\n\r\n  /**\r\n   * Pyramid tall mode\r\n   */\r\n  public tall: boolean;\r\n\r\n  constructor({\r\n    xAxis = null,\r\n    yAxis = null,\r\n    zAxis = null,\r\n    tall = false,\r\n  }: {\r\n    xAxis?: number | null;\r\n    yAxis?: number | null;\r\n    zAxis?: number | null;\r\n    tall?: boolean;\r\n  } = {}) {\r\n    this.xAxis = xAxis;\r\n    this.yAxis = yAxis;\r\n    this.zAxis = zAxis;\r\n    this.tall = tall;\r\n  }\r\n\r\n  public static toString(): string {\r\n    return \"[AbstractDimension]\";\r\n  }\r\n}\r\n","import { AbstractDimension } from \"./AbstractDimension\";\r\n\r\nexport class BrickDimension extends AbstractDimension {\r\n  constructor(xAxis?: number, yAxis?: number) {\r\n    super();\r\n    this.xAxis = xAxis || 30;\r\n    this.yAxis = yAxis || 30;\r\n\r\n    if (this.xAxis % 2 === 1 || this.yAxis % 2 === 1) {\r\n      throw new Error(\"xAxis / yAxis must be an even number\");\r\n    }\r\n\r\n    // If xAxis or yAxis = 4 then floodFill can not be applied\r\n    if (this.xAxis <= 4 || this.yAxis <= 4) {\r\n      throw new Error(\"Dimensions are too small\");\r\n    }\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[BrickDimension]\";\r\n  }\r\n}\r\n","import { AbstractDimension } from \"./AbstractDimension\";\r\n\r\nexport class CubeDimension extends AbstractDimension {\r\n  constructor(xAxis?: number, yAxis?: number, zAxis?: number) {\r\n    super();\r\n    this.xAxis = xAxis || 30;\r\n    this.yAxis = yAxis || 30;\r\n    this.zAxis = zAxis || 30;\r\n\r\n    if (this.xAxis % 2 === 1 || this.yAxis % 2 === 1) {\r\n      throw new Error(\"xAxis / yAxis must be an even number\");\r\n    }\r\n\r\n    // If axis = 4 then floodFill can not be applied\r\n    if (this.xAxis <= 4 || this.yAxis <= 4 || this.zAxis <= 2) {\r\n      throw new Error(\"Dimensions are too small\");\r\n    }\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[CubeDimension]\";\r\n  }\r\n}\r\n","import { AbstractDimension } from \"./AbstractDimension\";\r\n\r\nexport class LineXDimension extends AbstractDimension {\r\n  constructor(xAxis?: number) {\r\n    super();\r\n    this.xAxis = xAxis || 30;\r\n\r\n    if (this.xAxis % 2 === 1) {\r\n      throw new Error(\"xAxis must be an even number\");\r\n    }\r\n\r\n    if (this.xAxis < 2) {\r\n      throw new Error(\"Dimension is too small\");\r\n    }\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[LineXDimension]\";\r\n  }\r\n}\r\n","import { AbstractDimension } from \"./AbstractDimension\";\r\n\r\nexport class LineYDimension extends AbstractDimension {\r\n  constructor(yAxis?: number) {\r\n    super();\r\n    this.yAxis = yAxis || 30;\r\n\r\n    if (this.yAxis % 2 === 1) {\r\n      throw new Error(\"yAxis must be an even number\");\r\n    }\r\n\r\n    if (this.yAxis < 2) {\r\n      throw new Error(\"Dimension is too small\");\r\n    }\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[LineYDimension]\";\r\n  }\r\n}\r\n","import { AbstractDimension } from \"./AbstractDimension\";\r\n\r\nexport class LineZDimension extends AbstractDimension {\r\n  constructor(zAxis?: number) {\r\n    super();\r\n    this.zAxis = zAxis || 30;\r\n\r\n    if (this.zAxis <= 0) {\r\n      throw new Error(\"Dimension is too small\");\r\n    }\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[LineZDimension]\";\r\n  }\r\n}\r\n","import { AbstractDimension } from \"./AbstractDimension\";\r\n\r\nexport class PyramidDimension extends AbstractDimension {\r\n  constructor(axis?: number, tall?: boolean) {\r\n    super();\r\n    this.xAxis = axis || 30;\r\n    this.yAxis = axis || 30;\r\n    this.tall = tall || false;\r\n\r\n    if (this.xAxis % 2 === 1) {\r\n      throw new Error(\"Axis must be an even number\");\r\n    }\r\n\r\n    if (this.xAxis <= 4) {\r\n      throw new Error(\"Dimension is too small\");\r\n    }\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[PyramidDimension]\";\r\n  }\r\n}\r\n","import { AbstractDimension } from \"./AbstractDimension\";\r\n\r\nexport class SideXDimension extends AbstractDimension {\r\n  constructor(xAxis?: number, zAxis?: number) {\r\n    super();\r\n    this.xAxis = xAxis || 30;\r\n    this.zAxis = zAxis || 30;\r\n\r\n    if (this.xAxis % 2 === 1) {\r\n      throw new Error(\"xAxis must be an even number\");\r\n    }\r\n\r\n    // If xAxis or zAxis = 4 floodFill cannot be applied\r\n    if (this.xAxis <= 4 || this.zAxis <= 2) {\r\n      throw new Error(\"Dimensions are too small\");\r\n    }\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[SideXDimension]\";\r\n  }\r\n}\r\n","import { AbstractDimension } from \"./AbstractDimension\";\r\n\r\nexport class SideYDimension extends AbstractDimension {\r\n  constructor(yAxis?: number, zAxis?: number) {\r\n    super();\r\n    this.yAxis = yAxis || 30;\r\n    this.zAxis = zAxis || 30;\r\n\r\n    if (this.yAxis % 2 === 1) {\r\n      throw new Error(\"yAxis must be an even number\");\r\n    }\r\n\r\n    // If yAxis or zAxis = 4 floodFill cannot be applied\r\n    if (this.yAxis <= 4 || this.zAxis <= 2) {\r\n      throw new Error(\"Dimensions are too small\");\r\n    }\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[SideYDimension]\";\r\n  }\r\n}\r\n","import { AbstractDimension } from \"./AbstractDimension\";\r\n\r\nexport class SlopeDimension extends AbstractDimension {\r\n  constructor(xAxis?: number, yAxis?: number) {\r\n    super();\r\n    this.xAxis = xAxis || 30;\r\n    this.yAxis = yAxis || 30;\r\n\r\n    if (this.xAxis % 2 === 1 || this.yAxis % 2 === 1) {\r\n      throw new Error(\"xAxis and yAxis must be even numbers\");\r\n    }\r\n\r\n    if (this.xAxis <= 4 || this.yAxis <= 4) {\r\n      throw new Error(\"Dimensions are too small\");\r\n    }\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[SlopeDimension]\";\r\n  }\r\n}\r\n","import type { Dimension } from \"../dimensions\";\r\nimport type { Color } from \"../colors\";\r\nimport type { BitmapData } from \"../display/BitmapData\";\r\nimport type { Matrix } from \"../geom\";\r\n\r\nexport class AbstractPrimitive {\r\n  /**\r\n   * The canvas for drawImage\r\n   */\r\n  public canvas: HTMLCanvasElement | null;\r\n\r\n  /**\r\n   * The width of the bitmap in 2d flash coordinate\r\n   */\r\n  protected w: number | null;\r\n\r\n  /**\r\n   * The height of the bitmap in 2d flash coordinate\r\n   */\r\n  protected h: number | null;\r\n\r\n  /**\r\n   * The dimension of primitive in 3d pixel coordinate\r\n   */\r\n  protected dimension: Dimension | null;\r\n\r\n  /**\r\n   * The color obj of the primitive\r\n   */\r\n  protected color: Color | null;\r\n\r\n  /**\r\n   * The border option of the primitive\r\n   */\r\n  protected border: boolean | null;\r\n\r\n  /**\r\n   * The source bitmapData containing pixel graphic\r\n   */\r\n  protected bitmapData: BitmapData | null;\r\n\r\n  /**\r\n   * The preserve canvas option\r\n   */\r\n  protected useDefaultCanvas: boolean | null;\r\n\r\n  /**\r\n   * The matrix offset between the bitmap and the 3d pixel coordinate zero point\r\n   */\r\n  protected matrix: Matrix | null;\r\n\r\n  constructor({\r\n    canvas = null,\r\n    w = null,\r\n    h = null,\r\n    dimension = null,\r\n    color = null,\r\n    border = null,\r\n    bitmapData = null,\r\n    useDefaultCanvas = null,\r\n    matrix = null,\r\n  }: {\r\n    canvas?: HTMLCanvasElement | null;\r\n    w?: number | null;\r\n    h?: number | null;\r\n    dimension?: Dimension | null;\r\n    color?: Color | null;\r\n    border?: boolean | null;\r\n    bitmapData?: BitmapData | null;\r\n    useDefaultCanvas?: boolean | null;\r\n    matrix?: Matrix | null;\r\n  } = {}) {\r\n    this.canvas = canvas;\r\n    this.w = w;\r\n    this.h = h;\r\n    this.dimension = dimension;\r\n    this.color = color;\r\n    this.border = border;\r\n    this.bitmapData = bitmapData;\r\n    this.useDefaultCanvas = useDefaultCanvas;\r\n    this.matrix = matrix;\r\n  }\r\n\r\n  public static toString(): string {\r\n    return \"[AbstractPrimitive]\";\r\n  }\r\n}\r\n","export class Matrix {\r\n  /**\r\n   * Position (0, 0) in a 3x3 matrix.\r\n   * */\r\n  public a: number;\r\n\r\n  /**\r\n   * Position (0, 1) in a 3x3 matrix.\r\n   * */\r\n  public b: number;\r\n\r\n  /**\r\n   * Position (1, 0) in a 3x3 matrix.\r\n   * */\r\n  public c: number;\r\n\r\n  /**\r\n   * Position (1, 1) in a 3x3 matrix.\r\n   * */\r\n  public d: number;\r\n\r\n  /**\r\n   * Position (2, 0) in a 3x3 matrix.\r\n   * */\r\n  public tx: number;\r\n\r\n  /**\r\n   * Position (2, 1) in a 3x3 matrix.\r\n   * */\r\n  public ty: number;\r\n\r\n  constructor(\r\n    a?: number,\r\n    b?: number,\r\n    c?: number,\r\n    d?: number,\r\n    tx?: number,\r\n    ty?: number\r\n  ) {\r\n    this.a = a === undefined ? 1 : a;\r\n    this.b = b || 0;\r\n    this.c = c || 0;\r\n    this.d = d === undefined ? 1 : d;\r\n    this.tx = tx || 0;\r\n    this.ty = ty || 0;\r\n  }\r\n\r\n  public static toString(): string {\r\n    return \"[Matrix]\";\r\n  }\r\n}\r\n","export class Point {\r\n  public x: number;\r\n\r\n  public y: number;\r\n\r\n  constructor(x?: number, y?: number) {\r\n    this.x = x === undefined ? 0 : x;\r\n    this.y = y === undefined ? 0 : y;\r\n  }\r\n\r\n  public toString(): string {\r\n    return `[Point x: ${this.x}, y: ${this.y}]`;\r\n  }\r\n}\r\n","import { Point } from \"./Point\";\r\n\r\nexport class Point3D {\r\n  public x: number;\r\n\r\n  public y: number;\r\n\r\n  public z: number;\r\n\r\n  constructor(x?: number, y?: number, z?: number) {\r\n    this.x = x === undefined ? 0 : x;\r\n    this.y = y === undefined ? 0 : y;\r\n    this.z = z === undefined ? 0 : z;\r\n  }\r\n\r\n  public toGlobalCoordinates(offset?: { x: number; y: number }): Point {\r\n    const p2D = new Point(\r\n      this.x - this.y,\r\n      Math.floor(this.x / 2 + this.y / 2) - this.z\r\n    );\r\n\r\n    if (offset !== undefined) {\r\n      p2D.x += offset.x;\r\n      p2D.y += offset.y;\r\n    }\r\n\r\n    return p2D;\r\n  }\r\n\r\n  public toString(): string {\r\n    return `[Point3D x : ${this.x}, y : ${this.y}, z: ${this.z}]`;\r\n  }\r\n}\r\n","export abstract class CanvasManager {\r\n  public static defaultCanvas: HTMLCanvasElement | null;\r\n\r\n  public static getDefaultCanvas(): HTMLCanvasElement | null {\r\n    this.defaultCanvas = this.defaultCanvas || document.createElement(\"canvas\");\r\n    return this.defaultCanvas;\r\n  }\r\n\r\n  public static getNewCanvas(): HTMLCanvasElement {\r\n    return document.createElement(\"canvas\");\r\n  }\r\n\r\n  public static toString(): string {\r\n    return \"[CanvasManager]\";\r\n  }\r\n}\r\n","/* eslint-disable no-bitwise */\r\n\r\nimport { CanvasManager } from \"../utils/CanvasManager\";\r\n\r\nexport class BitmapData {\r\n  public imageData: ImageData | null;\r\n\r\n  public canvas: HTMLCanvasElement | null;\r\n\r\n  public context: CanvasRenderingContext2D | null;\r\n\r\n  constructor(w?: number, h?: number, useDefaultCanvas?: boolean) {\r\n    if (w === undefined || h === undefined) {\r\n      throw new Error(\"BitmapData width or height is missing\");\r\n    }\r\n\r\n    if (useDefaultCanvas) {\r\n      this.canvas = CanvasManager.getDefaultCanvas();\r\n    } else {\r\n      this.canvas = CanvasManager.getNewCanvas();\r\n    }\r\n\r\n    this.imageData = null;\r\n    this.context = null;\r\n\r\n    if (this.canvas) {\r\n      this.canvas.setAttribute(\"width\", w.toString());\r\n      this.canvas.setAttribute(\"height\", h.toString());\r\n\r\n      this.context = this.canvas.getContext(\"2d\") || null;\r\n\r\n      if (this.context) {\r\n        this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);\r\n\r\n        (this.context as any).mozImageSmoothingEnabled = false;\r\n        (this.context as any).msImageSmoothingEnabled = false;\r\n        this.context.imageSmoothingEnabled = false;\r\n\r\n        this.imageData = this.context.createImageData(w, h);\r\n      }\r\n    }\r\n  }\r\n\r\n  public setPixel(posX: number, posY: number, color: number): void {\r\n    if (this.imageData) {\r\n      const index = (posY * this.imageData.width + posX) * 4;\r\n      this.setPixelByIndex(index, color);\r\n    }\r\n  }\r\n\r\n  public setPixelByIndex(index: number, color: number): void {\r\n    if (this.imageData) {\r\n      const pixels = this.imageData.data;\r\n\r\n      pixels[index] = (color >>> 16) & 0xff;\r\n      pixels[index + 1] = (color >>> 8) & 0xff;\r\n      pixels[index + 2] = (color >>> 0) & 0xff;\r\n      pixels[index + 3] = (color >>> 24) & 0xff;\r\n    }\r\n  }\r\n\r\n  public checkPixelAvailable(x: number, y: number): boolean {\r\n    if (this.imageData) {\r\n      const index = (y * this.imageData.width + x) * 4;\r\n      return this.imageData.data[index + 3] === 0;\r\n    }\r\n\r\n    return false;\r\n  }\r\n\r\n  public floodFill(posX: number, posY: number, color: number): void {\r\n    if (((color >>> 24) & 0xff) === 0x00 || !this.imageData) {\r\n      // Transparent flood fill\r\n      return;\r\n    }\r\n\r\n    let x = posX;\r\n    let y = posY;\r\n\r\n    const stack: number[] = [];\r\n    let nowCol: number[] = [];\r\n    let prevCol: number[] = [];\r\n\r\n    let col: number;\r\n    let row: number;\r\n    let matchFlag: boolean;\r\n    let newStart: number;\r\n\r\n    const w = this.imageData.width;\r\n    const h = this.imageData.height;\r\n\r\n    let i: number;\r\n    let j: number;\r\n\r\n    // Bound reach\r\n    if (x < 0 || y < 0 || x >= w || y >= h) {\r\n      return;\r\n    }\r\n\r\n    // First point check fail\r\n    if (!this.checkPixelAvailable(x, y)) {\r\n      throw new Error(\"Start point for flood fill is already filled\");\r\n    }\r\n\r\n    // Left side flood fill\r\n    for (col = x; col >= 0; col -= 1) {\r\n      // Top side\r\n      for (row = y; row >= 0; row -= 1) {\r\n        if (this.checkPixelAvailable(col, row)) {\r\n          // Available pixel\r\n          stack.push((row * w + col) * 4);\r\n          nowCol.push(row);\r\n        } else {\r\n          // First one is invalid pixel and not at col top\r\n          if (row === y && this.checkPixelAvailable(col + 1, row - 1)) {\r\n            // Next one is valid\r\n            if (this.checkPixelAvailable(col, row - 1)) {\r\n              newStart = row - 1;\r\n            } else if (this.checkPixelAvailable(col + 1, row - 2)) {\r\n              newStart = row - 2;\r\n            } else {\r\n              // Fail, assign max value to avoid loop below\r\n              newStart = -1;\r\n            }\r\n\r\n            for (row = newStart; row >= 0; row -= 1) {\r\n              if (this.checkPixelAvailable(col, row)) {\r\n                // Available pixel\r\n                stack.push((row * w + col) * 4);\r\n                nowCol.push(row);\r\n              } else {\r\n                break;\r\n              }\r\n            }\r\n          }\r\n\r\n          break;\r\n        }\r\n      }\r\n\r\n      // Bottom side\r\n      for (row = y; row < h; row += 1) {\r\n        if (this.checkPixelAvailable(col, row)) {\r\n          // Available pixel\r\n          stack.push((row * w + col) * 4);\r\n          nowCol.push(row);\r\n        } else {\r\n          // First one is invalid pixel and not at col bottom\r\n          if (row === y && this.checkPixelAvailable(col + 1, row + 1)) {\r\n            // Next one is valid\r\n            if (this.checkPixelAvailable(col, row + 1)) {\r\n              newStart = row + 1;\r\n            } else if (this.checkPixelAvailable(col + 1, row + 2)) {\r\n              newStart = row + 2;\r\n            } else {\r\n              // Fail, assign max value to avoid loop below\r\n              newStart = h;\r\n            }\r\n\r\n            for (row = newStart; row < h; row += 1) {\r\n              if (this.checkPixelAvailable(col, row)) {\r\n                // AAvailable pixel\r\n                stack.push((row * w + col) * 4);\r\n                nowCol.push(row);\r\n              } else {\r\n                break;\r\n              }\r\n            }\r\n          }\r\n\r\n          break;\r\n        }\r\n      }\r\n\r\n      // Compare with previous column\r\n      // for first column,\r\n      // the given point should be inside the container\r\n      if (col === x) {\r\n        prevCol = nowCol.concat();\r\n      }\r\n\r\n      matchFlag = false;\r\n\r\n      for (i = 0; i < prevCol.length; i += 1) {\r\n        for (j = 0; j < prevCol.length; j += 1) {\r\n          if (nowCol[j] === prevCol[i]) {\r\n            matchFlag = true;\r\n            y = prevCol[i]!;\r\n            break;\r\n          }\r\n        }\r\n\r\n        if (matchFlag) {\r\n          break;\r\n        }\r\n      }\r\n\r\n      if (matchFlag) {\r\n        prevCol = nowCol.concat();\r\n        nowCol = [];\r\n      } else {\r\n        // Bound reach\r\n        break;\r\n      }\r\n    }\r\n\r\n    // Reset start point\r\n    x = posX;\r\n    y = posY;\r\n    prevCol = [];\r\n    nowCol = [];\r\n\r\n    // Right side flood fill\r\n    for (col = x; col < w; col += 1) {\r\n      // Top side\r\n      for (row = y; row >= 0; row -= 1) {\r\n        if (this.checkPixelAvailable(col, row)) {\r\n          // Available pixel\r\n          stack.push((row * w + col) * 4);\r\n          nowCol.push(row);\r\n        } else {\r\n          // First one is invalid pixel and not at col top\r\n          if (row === y && this.checkPixelAvailable(col - 1, row - 1)) {\r\n            // Next one is valid\r\n            if (this.checkPixelAvailable(col, row - 1)) {\r\n              newStart = row - 1;\r\n            } else if (this.checkPixelAvailable(col - 1, row - 2)) {\r\n              newStart = row - 2;\r\n            } else {\r\n              // Fail, assign max value to avoid loop below\r\n              newStart = -1;\r\n            }\r\n\r\n            for (row = newStart; row >= 0; row -= 1) {\r\n              if (this.checkPixelAvailable(col, row)) {\r\n                // Available pixel\r\n                stack.push((row * w + col) * 4);\r\n                nowCol.push(row);\r\n              } else {\r\n                break;\r\n              }\r\n            }\r\n          }\r\n\r\n          break;\r\n        }\r\n      }\r\n\r\n      // Bottom side\r\n      for (row = y; row < h; row += 1) {\r\n        if (this.checkPixelAvailable(col, row)) {\r\n          // Available pixel\r\n          stack.push((row * w + col) * 4);\r\n          nowCol.push(row);\r\n        } else {\r\n          // First one is invalid pixel && not at col bottom\r\n          if (row === y && this.checkPixelAvailable(col - 1, row + 1)) {\r\n            // Next one is valid\r\n            if (this.checkPixelAvailable(col, row + 1)) {\r\n              newStart = row + 1;\r\n            } else if (this.checkPixelAvailable(col - 1, row + 2)) {\r\n              newStart = row + 2;\r\n            } else {\r\n              // Fail, assign max value to avoid loop below\r\n              newStart = h;\r\n            }\r\n\r\n            for (row = newStart; row < h; row += 1) {\r\n              if (this.checkPixelAvailable(col, row)) {\r\n                // Available pixel\r\n                stack.push((row * w + col) * 4);\r\n                nowCol.push(row);\r\n              } else {\r\n                break;\r\n              }\r\n            }\r\n          }\r\n\r\n          break;\r\n        }\r\n      }\r\n\r\n      // Compare with previous column\r\n      // for first column,\r\n      // the given point should be inside the container\r\n      if (col === x) {\r\n        prevCol = nowCol.concat();\r\n      }\r\n\r\n      matchFlag = false;\r\n\r\n      for (i = 0; i < prevCol.length; i += 1) {\r\n        for (j = 0; j < prevCol.length; j += 1) {\r\n          if (nowCol[j] === prevCol[i]) {\r\n            matchFlag = true;\r\n            y = prevCol[i]!;\r\n            break;\r\n          }\r\n        }\r\n\r\n        if (matchFlag) {\r\n          break;\r\n        }\r\n      }\r\n\r\n      if (matchFlag) {\r\n        prevCol = nowCol.concat();\r\n        nowCol = [];\r\n      } else {\r\n        // Bound reach\r\n        break;\r\n      }\r\n    }\r\n\r\n    // Fill image data\r\n    for (i = 0; i < stack.length; i += 1) {\r\n      this.setPixelByIndex(stack[i]!, color);\r\n    }\r\n  }\r\n\r\n  public static toString(): string {\r\n    return \"[BitmapData]\";\r\n  }\r\n}\r\n","import { BrickDimension } from \"../dimensions\";\r\nimport { SideColor } from \"../colors\";\r\nimport { Matrix } from \"../geom\";\r\nimport { BitmapData } from \"../display/BitmapData\";\r\nimport { AbstractPrimitive } from \"./AbstractPrimitive\";\r\n\r\nexport class Brick extends AbstractPrimitive {\r\n  constructor(\r\n    dimension?: BrickDimension,\r\n    color?: SideColor,\r\n    border?: boolean,\r\n    useDefaultCanvas?: boolean\r\n  ) {\r\n    super();\r\n\r\n    this.useDefaultCanvas = useDefaultCanvas || false;\r\n    this.border = border || border === undefined;\r\n    this.dimension = dimension === undefined ? new BrickDimension() : dimension;\r\n    this.color = color === undefined ? new SideColor() : color;\r\n\r\n    this.initRectangle();\r\n    this.initBitmapData();\r\n    this.build();\r\n    this.renderBitmapDataForCanvas();\r\n  }\r\n\r\n  private initRectangle(): void {\r\n    this.w = this.dimension!.xAxis! + this.dimension!.yAxis!;\r\n    this.h = (this.dimension!.xAxis! + this.dimension!.yAxis!) / 2;\r\n\r\n    // 22.6 degrees implementation\r\n    this.w -= 2;\r\n    this.h -= 1;\r\n\r\n    // The matrix offset between the bitmap and the 3d pixel coordinate ZERO point\r\n    this.matrix = new Matrix();\r\n    this.matrix.tx = -this.dimension!.yAxis! + 2;\r\n    this.matrix.ty = 0;\r\n  }\r\n\r\n  private initBitmapData(): void {\r\n    this.bitmapData = new BitmapData(\r\n      this.w!,\r\n      this.h!,\r\n      this.useDefaultCanvas || undefined\r\n    );\r\n  }\r\n\r\n  private renderBitmapDataForCanvas(): void {\r\n    this.bitmapData!.context!.putImageData(this.bitmapData!.imageData!, 0, 0);\r\n    this.canvas = this.bitmapData!.canvas;\r\n  }\r\n\r\n  private build(): void {\r\n    const xOffsetInner = this.dimension!.yAxis! - 2;\r\n    const yOffsetInner = 0;\r\n    const xOffsetOut = this.dimension!.xAxis! - 1;\r\n    const yOffsetOut = (this.h || 0) - 1;\r\n    const borderColor = this.border ? this.color!.border! : this.color!.inner!;\r\n\r\n    // X axis\r\n    for (let i = 0; i < this.dimension!.xAxis!; i += 1) {\r\n      this.bitmapData!.setPixel(\r\n        xOffsetInner + i,\r\n        yOffsetInner + Math.floor(i / 2),\r\n        borderColor\r\n      );\r\n\r\n      this.bitmapData!.setPixel(\r\n        xOffsetOut - i,\r\n        yOffsetOut - Math.floor(i / 2),\r\n        borderColor\r\n      );\r\n    }\r\n\r\n    // Y axis\r\n    for (let j = 0; j < this.dimension!.yAxis!; j += 1) {\r\n      this.bitmapData!.setPixel(\r\n        xOffsetInner + 1 - j,\r\n        yOffsetInner + Math.floor(j / 2),\r\n        borderColor\r\n      );\r\n\r\n      this.bitmapData!.setPixel(\r\n        xOffsetOut - 1 + j,\r\n        yOffsetOut - Math.floor(j / 2),\r\n        borderColor\r\n      );\r\n    }\r\n\r\n    // Fill a pixel graphic enclosed\r\n    this.bitmapData!.floodFill(\r\n      Math.floor(this.w! / 2),\r\n      Math.floor(this.h! / 2),\r\n      this.color!.inner!\r\n    );\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[Brick]\";\r\n  }\r\n}\r\n","import { Point3D } from \"../geom\";\r\nimport type { AbstractPrimitive } from \"../primitives\";\r\n\r\nexport class PixelObject {\r\n  public x: number | null;\r\n\r\n  public y: number | null;\r\n\r\n  public canvas: HTMLCanvasElement | null;\r\n\r\n  constructor(primitive?: AbstractPrimitive, point3D?: Point3D) {\r\n    if (!primitive) {\r\n      throw new Error(\"Primitive is not defined\");\r\n    }\r\n\r\n    const p3D = point3D || new Point3D();\r\n\r\n    this.canvas = primitive.canvas;\r\n    this.x = (primitive as any).matrix!.tx + p3D.x - p3D.y;\r\n    this.y =\r\n      (primitive as any).matrix!.ty + Math.floor(p3D.x / 2 + p3D.y / 2) - p3D.z;\r\n  }\r\n\r\n  public static toString(): string {\r\n    return \"[PixelObject]\";\r\n  }\r\n}\r\n","import { SideXDimension } from \"../dimensions\";\r\nimport { SideColor } from \"../colors\";\r\nimport { Matrix } from \"../geom\";\r\nimport { BitmapData } from \"../display/BitmapData\";\r\nimport { AbstractPrimitive } from \"./AbstractPrimitive\";\r\n\r\nexport class SideX extends AbstractPrimitive {\r\n  constructor(\r\n    dimension?: SideXDimension,\r\n    color?: SideColor,\r\n    border?: boolean,\r\n    useDefaultCanvas?: boolean\r\n  ) {\r\n    super();\r\n\r\n    this.useDefaultCanvas = useDefaultCanvas || false;\r\n    this.border = border || border === undefined;\r\n    this.dimension = dimension === undefined ? new SideXDimension() : dimension;\r\n    this.color = color === undefined ? new SideColor() : color;\r\n\r\n    this.initRectangle();\r\n    this.initBitmapData();\r\n    this.build();\r\n    this.renderBitmapDataForCanvas();\r\n  }\r\n\r\n  private initRectangle(): void {\r\n    this.w = this.dimension!.xAxis;\r\n    this.h = this.dimension!.zAxis! + this.dimension!.xAxis! / 2;\r\n\r\n    // The matrix offset between the bitmap and the 3d pixel coordinate zero point\r\n    this.matrix = new Matrix();\r\n    this.matrix.tx = 0;\r\n    this.matrix.ty = -this.dimension!.zAxis!;\r\n  }\r\n\r\n  private initBitmapData(): void {\r\n    this.bitmapData = new BitmapData(\r\n      this.w!,\r\n      this.h!,\r\n      this.useDefaultCanvas || undefined\r\n    );\r\n  }\r\n\r\n  private renderBitmapDataForCanvas(): void {\r\n    this.bitmapData!.context!.putImageData(this.bitmapData!.imageData!, 0, 0);\r\n    this.canvas = this.bitmapData!.canvas;\r\n  }\r\n\r\n  private build(): void {\r\n    const xOffsetInner = 0;\r\n    const yOffsetInner = this.dimension!.zAxis!;\r\n    const xOffsetOut = this.dimension!.xAxis! - 1;\r\n    const yOffsetOut = this.h! - this.dimension!.zAxis! - 1;\r\n    const borderColor = this.border ? this.color!.border! : this.color!.inner!;\r\n\r\n    // X axis\r\n    for (let i = 0; i < this.dimension!.xAxis!; i += 1) {\r\n      this.bitmapData!.setPixel(\r\n        xOffsetInner + i,\r\n        yOffsetInner + Math.floor(i / 2),\r\n        borderColor\r\n      );\r\n      this.bitmapData!.setPixel(\r\n        xOffsetOut - i,\r\n        yOffsetOut - Math.floor(i / 2),\r\n        borderColor\r\n      );\r\n    }\r\n\r\n    // Z axis\r\n    for (let j = 0; j < this.dimension!.zAxis!; j += 1) {\r\n      this.bitmapData!.setPixel(xOffsetInner, yOffsetInner - j, borderColor);\r\n      this.bitmapData!.setPixel(xOffsetOut, yOffsetOut + j, borderColor);\r\n    }\r\n\r\n    // fill an pixel graphic enclosed\r\n    this.bitmapData!.floodFill(\r\n      Math.floor(this.w! / 2),\r\n      Math.floor(this.h! / 2),\r\n      this.color!.inner!\r\n    );\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[SideX]\";\r\n  }\r\n}\r\n","import { SideYDimension } from \"../dimensions\";\r\nimport { SideColor } from \"../colors\";\r\nimport { Matrix } from \"../geom\";\r\nimport { BitmapData } from \"../display/BitmapData\";\r\nimport { AbstractPrimitive } from \"./AbstractPrimitive\";\r\n\r\nexport class SideY extends AbstractPrimitive {\r\n  constructor(\r\n    dimension?: SideYDimension,\r\n    color?: SideColor,\r\n    border?: boolean,\r\n    useDefaultCanvas?: boolean\r\n  ) {\r\n    super();\r\n\r\n    this.useDefaultCanvas = useDefaultCanvas || false;\r\n    this.border = border || border === undefined;\r\n    this.dimension = dimension === undefined ? new SideYDimension() : dimension;\r\n    this.color = color === undefined ? new SideColor() : color;\r\n\r\n    this.initRectangle();\r\n    this.initBitmapData();\r\n    this.build();\r\n    this.renderBitmapDataForCanvas();\r\n  }\r\n\r\n  private initRectangle(): void {\r\n    this.w = this.dimension!.yAxis!;\r\n    this.h = this.dimension!.zAxis! + this.dimension!.yAxis! / 2;\r\n\r\n    // The matrix offset between the bitmap and the 3d pixel coordinate zero point\r\n    this.matrix = new Matrix();\r\n    this.matrix.tx = -this.dimension!.yAxis! + 2;\r\n    this.matrix.ty = -this.dimension!.zAxis!;\r\n  }\r\n\r\n  private initBitmapData(): void {\r\n    this.bitmapData = new BitmapData(\r\n      this.w!,\r\n      this.h!,\r\n      this.useDefaultCanvas || undefined\r\n    );\r\n  }\r\n\r\n  private renderBitmapDataForCanvas(): void {\r\n    this.bitmapData!.context!.putImageData(this.bitmapData!.imageData!, 0, 0);\r\n    this.canvas = this.bitmapData!.canvas;\r\n  }\r\n\r\n  private build(): void {\r\n    const xOffsetInner = 0;\r\n    const yOffsetInner = this.h! - this.dimension!.zAxis! - 1;\r\n    const xOffsetOut = this.dimension!.yAxis! - 1;\r\n    const yOffsetOut = this.dimension!.zAxis!;\r\n    const borderColor = this.border ? this.color!.border! : this.color!.inner!;\r\n\r\n    // Y axis\r\n    for (let i = 0; i < this.dimension!.yAxis!; i += 1) {\r\n      this.bitmapData!.setPixel(\r\n        xOffsetInner + i,\r\n        yOffsetInner - Math.floor(i / 2),\r\n        borderColor\r\n      );\r\n\r\n      this.bitmapData!.setPixel(\r\n        xOffsetOut - i,\r\n        yOffsetOut + Math.floor(i / 2),\r\n        borderColor\r\n      );\r\n    }\r\n\r\n    // Z axis\r\n    for (let j = 0; j < this.dimension!.zAxis!; j += 1) {\r\n      this.bitmapData!.setPixel(xOffsetInner, yOffsetInner + j, borderColor);\r\n      this.bitmapData!.setPixel(xOffsetOut, yOffsetOut - j, borderColor);\r\n    }\r\n\r\n    // Fill a pixel graphic enclosed\r\n    this.bitmapData!.floodFill(\r\n      Math.floor(this.w! / 2),\r\n      Math.floor(this.h! / 2),\r\n      this.color!.inner!\r\n    );\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[SideY]\";\r\n  }\r\n}\r\n","import {\r\n  CubeDimension,\r\n  BrickDimension,\r\n  SideYDimension,\r\n  SideXDimension,\r\n} from \"../dimensions\";\r\nimport { CubeColor, SideColor } from \"../colors\";\r\nimport { Matrix } from \"../geom\";\r\nimport { PixelObject } from \"../display/PixelObject\";\r\nimport { BitmapData } from \"../display/BitmapData\";\r\nimport { AbstractPrimitive } from \"./AbstractPrimitive\";\r\nimport { Brick } from \"./Brick\";\r\nimport { SideX } from \"./SideX\";\r\nimport { SideY } from \"./SideY\";\r\n\r\nexport class Cube extends AbstractPrimitive {\r\n  constructor(\r\n    dimension?: CubeDimension,\r\n    color?: CubeColor,\r\n    border?: boolean,\r\n    useDefaultCanvas?: boolean\r\n  ) {\r\n    super();\r\n\r\n    this.useDefaultCanvas = useDefaultCanvas || false;\r\n    this.border = border || border === undefined;\r\n    this.dimension = dimension === undefined ? new CubeDimension() : dimension;\r\n    this.color = color === undefined ? new CubeColor() : color;\r\n\r\n    this.initRectangle();\r\n    this.initBitmapData();\r\n    this.build();\r\n    this.renderBitmapDataForCanvas();\r\n  }\r\n\r\n  private initRectangle(): void {\r\n    this.w = this.dimension!.xAxis! + this.dimension!.yAxis!;\r\n    this.h =\r\n      this.dimension!.zAxis! +\r\n      (this.dimension!.xAxis! + this.dimension!.yAxis!) / 2;\r\n\r\n    // 22.6 degrees implementation\r\n    this.w -= 2;\r\n    this.h -= 1;\r\n\r\n    // The matrix offset between the bitmap and the 3d pixel coordinate zero point\r\n    this.matrix = new Matrix();\r\n    this.matrix.tx = -this.dimension!.yAxis! + 2;\r\n    this.matrix.ty = -this.dimension!.zAxis!;\r\n  }\r\n\r\n  private initBitmapData(): void {\r\n    this.bitmapData = new BitmapData(\r\n      this.w!,\r\n      this.h!,\r\n      this.useDefaultCanvas || undefined\r\n    );\r\n  }\r\n\r\n  private renderBitmapDataForCanvas(): void {\r\n    this.canvas = this.bitmapData!.canvas;\r\n  }\r\n\r\n  private build(): void {\r\n    let offsetX: number;\r\n    let offsetY: number;\r\n\r\n    // Horizontal layer\r\n    const brick = new Brick(\r\n      new BrickDimension(this.dimension!.xAxis!, this.dimension!.yAxis!),\r\n      new SideColor(this.color!.border!, this.color!.horizontal!),\r\n      this.border!\r\n    );\r\n\r\n    // Left side\r\n    const sideX = new SideX(\r\n      new SideXDimension(this.dimension!.xAxis!, this.dimension!.zAxis!),\r\n      new SideColor(this.color!.border!, this.color!.left!),\r\n      this.border!\r\n    );\r\n\r\n    // Right side\r\n    const sideY = new SideY(\r\n      new SideYDimension(this.dimension!.yAxis!, this.dimension!.zAxis!),\r\n      new SideColor(this.color!.border!, this.color!.right!),\r\n      this.border!\r\n    );\r\n\r\n    const poBrick = new PixelObject(brick);\r\n    const poX = new PixelObject(sideX);\r\n    const poY = new PixelObject(sideY);\r\n\r\n    const ctx = this.bitmapData!.context!;\r\n\r\n    ctx.drawImage(\r\n      poBrick.canvas!,\r\n      poBrick.x! + this.dimension!.yAxis! - 2,\r\n      poBrick.y!\r\n    );\r\n\r\n    ctx.drawImage(\r\n      poX.canvas!,\r\n      poX.x!,\r\n      poX.y! + this.dimension!.zAxis! + this.dimension!.yAxis! / 2 - 1\r\n    );\r\n\r\n    ctx.drawImage(\r\n      poY.canvas!,\r\n      poY.x! + this.w! - 2,\r\n      poX.y! + this.dimension!.zAxis! + this.dimension!.xAxis! / 2 - 1\r\n    );\r\n\r\n    // Highlight & highlight fix\r\n    const bmd = new BitmapData(this.w!, this.h!);\r\n\r\n    if (this.border) {\r\n      offsetX = this.dimension!.xAxis! - 2;\r\n      offsetY = (this.dimension!.xAxis! + this.dimension!.yAxis!) / 2 - 2;\r\n\r\n      // The 2px in bounding without highlight\r\n      for (let i = 0; i < this.dimension!.xAxis! - 2; i += 1) {\r\n        bmd.setPixel(\r\n          offsetX + 1 - i,\r\n          offsetY - Math.floor(i / 2),\r\n          this.color!.borderHighlight!\r\n        );\r\n      }\r\n\r\n      // the 2px in bounding without highlight\r\n      for (let j = 0; j < this.dimension!.yAxis! - 2; j += 1) {\r\n        bmd.setPixel(\r\n          offsetX + j,\r\n          offsetY - Math.floor(j / 2),\r\n          this.color!.borderHighlight!\r\n        );\r\n      }\r\n\r\n      for (let k = 0; k < this.dimension!.zAxis!; k += 1) {\r\n        bmd.setPixel(offsetX, offsetY + k, this.color!.borderHighlight!);\r\n      }\r\n    } else {\r\n      for (let i = 0; i < this.dimension!.zAxis!; i += 1) {\r\n        bmd.setPixel(\r\n          this.dimension!.xAxis! - 2,\r\n          (this.dimension!.xAxis! + this.dimension!.yAxis!) / 2 - 1 + i,\r\n          this.color!.left!\r\n        );\r\n      }\r\n    }\r\n\r\n    bmd.context!.putImageData(bmd.imageData!, 0, 0);\r\n    ctx.drawImage(bmd.canvas!, 0, 0);\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[Cube]\";\r\n  }\r\n}\r\n","import { LineXDimension } from \"../dimensions\";\r\nimport { LineColor } from \"../colors\";\r\nimport { Matrix } from \"../geom\";\r\nimport { BitmapData } from \"../display/BitmapData\";\r\nimport { AbstractPrimitive } from \"./AbstractPrimitive\";\r\n\r\nexport class LineX extends AbstractPrimitive {\r\n  constructor(\r\n    dimension?: LineXDimension,\r\n    color?: LineColor,\r\n    useDefaultCanvas?: boolean\r\n  ) {\r\n    super();\r\n\r\n    this.useDefaultCanvas = useDefaultCanvas || false;\r\n    this.dimension = dimension === undefined ? new LineXDimension() : dimension;\r\n    this.color = color === undefined ? new LineColor() : color;\r\n\r\n    this.initRectangle();\r\n    this.initBitmapData();\r\n    this.build();\r\n    this.renderBitmapDataForCanvas();\r\n  }\r\n\r\n  private initRectangle(): void {\r\n    this.w = this.dimension!.xAxis!;\r\n    this.h = this.dimension!.xAxis! / 2;\r\n\r\n    // The matrix offset between the bitmap and the 3d pixel coordinate zero point\r\n    this.matrix = new Matrix();\r\n    this.matrix.tx = 0;\r\n    this.matrix.ty = 0;\r\n  }\r\n\r\n  private initBitmapData(): void {\r\n    this.bitmapData = new BitmapData(\r\n      this.w!,\r\n      this.h!,\r\n      this.useDefaultCanvas || undefined\r\n    );\r\n  }\r\n\r\n  private renderBitmapDataForCanvas(): void {\r\n    this.bitmapData!.context!.putImageData(this.bitmapData!.imageData!, 0, 0);\r\n    this.canvas = this.bitmapData!.canvas;\r\n  }\r\n\r\n  private build(): void {\r\n    const xOffsetBorder = 0;\r\n    const yOffsetBorder = 0;\r\n    const borderColor = this.color!.border!;\r\n\r\n    // X axis\r\n    for (let i = 0; i < this.dimension!.xAxis!; i += 1) {\r\n      this.bitmapData!.setPixel(\r\n        xOffsetBorder + i,\r\n        yOffsetBorder + Math.floor(i / 2),\r\n        borderColor\r\n      );\r\n    }\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[LineX]\";\r\n  }\r\n}\r\n","import { LineYDimension } from \"../dimensions\";\r\nimport { LineColor } from \"../colors\";\r\nimport { Matrix } from \"../geom\";\r\nimport { BitmapData } from \"../display/BitmapData\";\r\nimport { AbstractPrimitive } from \"./AbstractPrimitive\";\r\n\r\nexport class LineY extends AbstractPrimitive {\r\n  constructor(\r\n    dimension?: LineYDimension,\r\n    color?: LineColor,\r\n    useDefaultCanvas?: boolean\r\n  ) {\r\n    super();\r\n\r\n    this.useDefaultCanvas = useDefaultCanvas || false;\r\n    this.dimension = dimension === undefined ? new LineYDimension() : dimension;\r\n    this.color = color === undefined ? new LineColor() : color;\r\n\r\n    this.initRectangle();\r\n    this.initBitmapData();\r\n    this.build();\r\n    this.renderBitmapDataForCanvas();\r\n  }\r\n\r\n  private initRectangle(): void {\r\n    this.w = this.dimension!.yAxis!;\r\n    this.h = this.dimension!.yAxis! / 2;\r\n\r\n    // The matrix offset between the bitmap and the 3d pixel coordinate zero point\r\n    this.matrix = new Matrix();\r\n    this.matrix.tx = -this.dimension!.yAxis! + 2;\r\n    this.matrix.ty = 0;\r\n  }\r\n\r\n  private initBitmapData(): void {\r\n    this.bitmapData = new BitmapData(\r\n      this.w!,\r\n      this.h!,\r\n      this.useDefaultCanvas || undefined\r\n    );\r\n  }\r\n\r\n  private renderBitmapDataForCanvas(): void {\r\n    this.bitmapData!.context!.putImageData(this.bitmapData!.imageData!, 0, 0);\r\n    this.canvas = this.bitmapData!.canvas;\r\n  }\r\n\r\n  private build(): void {\r\n    const xOffsetBorder = this.dimension!.yAxis! - 1;\r\n    const yOffsetBorder = 0;\r\n    const borderColor = this.color!.border!;\r\n\r\n    // Y axis\r\n    for (let i = 0; i < this.dimension!.yAxis!; i += 1) {\r\n      this.bitmapData!.setPixel(\r\n        xOffsetBorder - i,\r\n        yOffsetBorder + Math.floor(i / 2),\r\n        borderColor\r\n      );\r\n    }\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[LineY]\";\r\n  }\r\n}\r\n","import { LineZDimension } from \"../dimensions\";\r\nimport { LineColor } from \"../colors\";\r\nimport { Matrix } from \"../geom\";\r\nimport { BitmapData } from \"../display/BitmapData\";\r\nimport { AbstractPrimitive } from \"./AbstractPrimitive\";\r\n\r\nexport class LineZ extends AbstractPrimitive {\r\n  constructor(\r\n    dimension?: LineZDimension,\r\n    color?: LineColor,\r\n    useDefaultCanvas?: boolean\r\n  ) {\r\n    super();\r\n\r\n    this.useDefaultCanvas = useDefaultCanvas || false;\r\n    this.dimension = dimension === undefined ? new LineZDimension() : dimension;\r\n    this.color = color === undefined ? new LineColor() : color;\r\n\r\n    this.initRectangle();\r\n    this.initBitmapData();\r\n    this.build();\r\n    this.renderBitmapDataForCanvas();\r\n  }\r\n\r\n  private initRectangle(): void {\r\n    this.w = 1;\r\n    this.h = this.dimension!.zAxis!;\r\n\r\n    // The matrix offset between the bitmap and the 3d pixel coordinate zero point\r\n    this.matrix = new Matrix();\r\n    this.matrix.tx = 0;\r\n    this.matrix.ty = -this.dimension!.zAxis! + 1;\r\n  }\r\n\r\n  private initBitmapData(): void {\r\n    this.bitmapData = new BitmapData(\r\n      this.w!,\r\n      this.h!,\r\n      this.useDefaultCanvas || undefined\r\n    );\r\n  }\r\n\r\n  private renderBitmapDataForCanvas(): void {\r\n    this.bitmapData!.context!.putImageData(this.bitmapData!.imageData!, 0, 0);\r\n    this.canvas = this.bitmapData!.canvas;\r\n  }\r\n\r\n  private build(): void {\r\n    const xOffsetBorder = 0;\r\n    const yOffsetBorder = 0;\r\n    const borderColor = this.color!.border!;\r\n\r\n    // Y axis\r\n    for (let i = 0; i < this.dimension!.zAxis!; i += 1) {\r\n      this.bitmapData!.setPixel(xOffsetBorder, yOffsetBorder + i, borderColor);\r\n    }\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[LineZ]\";\r\n  }\r\n}\r\n","import { PyramidDimension } from \"../dimensions\";\r\nimport { PyramidColor } from \"../colors\";\r\nimport { Matrix } from \"../geom\";\r\nimport { BitmapData } from \"../display/BitmapData\";\r\nimport { AbstractPrimitive } from \"./AbstractPrimitive\";\r\n\r\nexport class Pyramid extends AbstractPrimitive {\r\n  private readonly hSize: number;\r\n\r\n  private readonly hOffset: number;\r\n\r\n  constructor(\r\n    dimension?: PyramidDimension,\r\n    color?: PyramidColor,\r\n    border?: boolean,\r\n    useDefaultCanvas?: boolean\r\n  ) {\r\n    super();\r\n\r\n    this.useDefaultCanvas = useDefaultCanvas || false;\r\n    this.border = border || border === undefined;\r\n    this.dimension =\r\n      dimension === undefined ? new PyramidDimension() : dimension;\r\n    this.color = color === undefined ? new PyramidColor() : color;\r\n\r\n    this.hSize = this.dimension.tall\r\n      ? this.dimension!.xAxis! * 2\r\n      : this.dimension!.xAxis!;\r\n    this.hOffset = this.dimension.tall ? -3 : -2;\r\n\r\n    this.initRectangle();\r\n    this.initBitmapData();\r\n    this.build();\r\n    this.renderBitmapDataForCanvas();\r\n  }\r\n\r\n  private initRectangle(): void {\r\n    this.w = this.dimension!.xAxis! + this.dimension!.yAxis!;\r\n    this.h = this.hSize + this.dimension!.xAxis! / 2;\r\n\r\n    // 22.6 degrees implementation\r\n    this.w -= 2;\r\n    this.h += this.hOffset;\r\n\r\n    // The matrix offset between the bitmap and the 3d pixel coordinate zero point\r\n    this.matrix = new Matrix();\r\n    this.matrix.tx = -this.dimension!.xAxis! + 2;\r\n    this.matrix.ty =\r\n      -this.hSize / 2 +\r\n      2 -\r\n      (this.dimension!.tall ? this.dimension!.xAxis! / 2 : 1);\r\n  }\r\n\r\n  private initBitmapData(): void {\r\n    this.bitmapData = new BitmapData(\r\n      this.w!,\r\n      this.h!,\r\n      this.useDefaultCanvas || undefined\r\n    );\r\n  }\r\n\r\n  private renderBitmapDataForCanvas(): void {\r\n    this.bitmapData!.context!.putImageData(this.bitmapData!.imageData!, 0, 0);\r\n    this.canvas = this.bitmapData!.canvas;\r\n  }\r\n\r\n  private build(): void {\r\n    const colorBorderLeft = this.border\r\n      ? this.color!.border!\r\n      : this.color!.left!;\r\n    const colorBorderRight = this.border\r\n      ? this.color!.border!\r\n      : this.color!.right!;\r\n\r\n    const colorBorderHighlight = this.border\r\n      ? this.color!.borderHighlight!\r\n      : colorBorderLeft;\r\n\r\n    // Z axis highlight\r\n    for (let k = 0; k < this.hSize + this.dimension!.xAxis! / 2 - 4; k += 1) {\r\n      this.bitmapData!.setPixel(\r\n        this.dimension!.xAxis! - 2,\r\n        k + 3 + this.hOffset,\r\n        colorBorderHighlight\r\n      );\r\n    }\r\n\r\n    // X axis\r\n    for (let i = 0; i < this.dimension!.xAxis!; i += 1) {\r\n      this.bitmapData!.setPixel(\r\n        i,\r\n        this.hSize + Math.floor(i / 2) + this.hOffset,\r\n        colorBorderLeft\r\n      );\r\n    }\r\n\r\n    // Y axis\r\n    for (let j = 0; j < this.dimension!.xAxis!; j += 1) {\r\n      this.bitmapData!.setPixel(\r\n        j + this.dimension!.xAxis! - 2,\r\n        this.hSize +\r\n          this.dimension!.xAxis! / 2 -\r\n          Math.floor(j / 2) -\r\n          1 +\r\n          this.hOffset,\r\n        colorBorderRight\r\n      );\r\n    }\r\n\r\n    if (!this.dimension!.tall) {\r\n      // Left edge\r\n      for (let l = 0; l < this.hSize; l += 1) {\r\n        this.bitmapData!.setPixel(\r\n          l,\r\n          this.hSize - l + this.hOffset,\r\n          colorBorderLeft\r\n        );\r\n      }\r\n\r\n      // Right edge\r\n      for (let m = 0; m < this.hSize; m += 1) {\r\n        this.bitmapData!.setPixel(\r\n          m + this.hSize - 2,\r\n          m + 1 + this.hOffset,\r\n          colorBorderRight\r\n        );\r\n      }\r\n    } else {\r\n      // Left edge\r\n      for (let l = 0; l < this.hSize - 2; l += 1) {\r\n        this.bitmapData!.setPixel(\r\n          Math.floor(l / 2),\r\n          this.hSize - l + this.hOffset,\r\n          colorBorderLeft\r\n        );\r\n      }\r\n\r\n      // Right edge\r\n      for (let m = 2; m < this.hSize; m += 1) {\r\n        this.bitmapData!.setPixel(\r\n          Math.floor(m / 2) + this.dimension!.xAxis! - 2,\r\n          m + 1 + this.hOffset,\r\n          colorBorderRight\r\n        );\r\n      }\r\n    }\r\n\r\n    if (!this.border) {\r\n      this.bitmapData!.setPixel(\r\n        this.dimension!.xAxis! - 2,\r\n        this.hSize + this.dimension!.xAxis! / 2 - 1 + this.hOffset,\r\n        colorBorderLeft\r\n      );\r\n    }\r\n\r\n    // floodFill\r\n    this.bitmapData!.floodFill(\r\n      this.dimension!.xAxis! - 1,\r\n      this.hSize +\r\n        Math.floor((this.dimension!.xAxis! - 1) / 2) +\r\n        this.hOffset -\r\n        1,\r\n      this.color!.right!\r\n    );\r\n\r\n    this.bitmapData!.floodFill(\r\n      this.dimension!.xAxis! - 3,\r\n      this.hSize +\r\n        Math.floor((this.dimension!.xAxis! - 1) / 2) +\r\n        this.hOffset -\r\n        2,\r\n      this.color!.left!\r\n    );\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[Pyramid]\";\r\n  }\r\n}\r\n","import { SlopeColor } from \"../colors\";\r\nimport { SlopeDimension } from \"../dimensions\";\r\nimport { Matrix } from \"../geom\";\r\nimport { BitmapData } from \"../display/BitmapData\";\r\nimport { AbstractPrimitive } from \"./AbstractPrimitive\";\r\n\r\nexport class SlopeEast extends AbstractPrimitive {\r\n  constructor(\r\n    dimension?: SlopeDimension,\r\n    color?: SlopeColor,\r\n    border?: boolean,\r\n    useDefaultCanvas?: boolean\r\n  ) {\r\n    super();\r\n\r\n    this.useDefaultCanvas = useDefaultCanvas || false;\r\n    this.border = border || border === undefined;\r\n    this.dimension = dimension === undefined ? new SlopeDimension() : dimension;\r\n    this.color = color === undefined ? new SlopeColor() : color;\r\n\r\n    this.initRectangle();\r\n    this.initBitmapData();\r\n    this.build();\r\n    this.renderBitmapDataForCanvas();\r\n  }\r\n\r\n  private initRectangle(): void {\r\n    this.w = this.dimension!.xAxis! + this.dimension!.yAxis!;\r\n    this.h = this.dimension!.xAxis! * 2 + this.dimension!.yAxis! / 2;\r\n\r\n    // 22.6 degrees implementation\r\n    this.w -= 2;\r\n    this.h -= 3;\r\n\r\n    // The matrix offset between the bitmap and the 3d pixel coordinate zero point\r\n    this.matrix = new Matrix();\r\n    this.matrix.tx = -(this.dimension!.yAxis! - 2);\r\n    this.matrix.ty = -((this.dimension!.xAxis! * 3) / 2 - 2);\r\n  }\r\n\r\n  private initBitmapData(): void {\r\n    this.bitmapData = new BitmapData(\r\n      this.w!,\r\n      this.h!,\r\n      this.useDefaultCanvas || undefined\r\n    );\r\n  }\r\n\r\n  private renderBitmapDataForCanvas(): void {\r\n    this.bitmapData!.context!.putImageData(this.bitmapData!.imageData!, 0, 0);\r\n    this.canvas = this.bitmapData!.canvas;\r\n  }\r\n\r\n  private build(): void {\r\n    const colorBorderLeft = this.border\r\n      ? this.color!.border!\r\n      : this.color!.left!;\r\n    const colorBorderRight = this.border\r\n      ? this.color!.border!\r\n      : this.color!.rightSlope!;\r\n\r\n    // Y axis\r\n    for (let j = 0; j < this.dimension!.yAxis!; j += 1) {\r\n      this.bitmapData!.setPixel(\r\n        j,\r\n        this.dimension!.yAxis! / 2 - Math.floor(j / 2) - 1,\r\n        colorBorderRight\r\n      );\r\n\r\n      this.bitmapData!.setPixel(\r\n        j + this.dimension!.xAxis! - 2,\r\n        this.h! - Math.floor(j / 2) - 1,\r\n        colorBorderRight\r\n      );\r\n    }\r\n\r\n    // X axis\r\n    for (let i = 0; i < this.dimension!.xAxis!; i += 1) {\r\n      this.bitmapData!.setPixel(\r\n        i,\r\n        this.h! - this.dimension!.xAxis! / 2 + Math.floor(i / 2),\r\n        colorBorderLeft\r\n      );\r\n    }\r\n\r\n    // X axis\r\n    for (\r\n      let k = this.dimension!.yAxis! / 2 - 1;\r\n      k < this.h! - this.dimension!.xAxis! / 2;\r\n      k += 1\r\n    ) {\r\n      this.bitmapData!.setPixel(0, k, colorBorderLeft);\r\n    }\r\n\r\n    // Slot\r\n    for (let m = 0; m < this.dimension!.xAxis! * 2 - 2; m += 1) {\r\n      this.bitmapData!.setPixel(\r\n        this.dimension!.yAxis! - 1 + Math.floor(m / 2),\r\n        m,\r\n        colorBorderRight\r\n      );\r\n\r\n      this.bitmapData!.setPixel(\r\n        1 + Math.floor(m / 2),\r\n        this.dimension!.yAxis! / 2 + m - 1,\r\n        colorBorderRight\r\n      );\r\n    }\r\n\r\n    // floodFill\r\n    this.bitmapData!.floodFill(\r\n      this.dimension!.yAxis! - 2,\r\n      1,\r\n      this.color!.rightSlope!\r\n    );\r\n\r\n    this.bitmapData!.floodFill(\r\n      this.dimension!.xAxis! - 3,\r\n      this.h! - 3,\r\n      this.color!.left!\r\n    );\r\n\r\n    // Hack single pixel\r\n    this.bitmapData!.setPixel(\r\n      this.dimension!.xAxis! - 2,\r\n      this.h! - 2,\r\n      this.color!.left!\r\n    );\r\n\r\n    // Highlight\r\n    if (this.border) {\r\n      for (let n = 1; n < this.dimension!.xAxis! * 2 - 3; n += 1) {\r\n        this.bitmapData!.setPixel(\r\n          1 + Math.floor(n / 2),\r\n          this.dimension!.yAxis! / 2 + n - 1,\r\n          this.color!.borderHighlight!\r\n        );\r\n      }\r\n    }\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[SlopeEast]\";\r\n  }\r\n}\r\n","import { SlopeDimension, SideXDimension } from \"../dimensions\";\r\nimport { SlopeColor, SideColor } from \"../colors\";\r\nimport { Matrix } from \"../geom\";\r\nimport { BitmapData } from \"../display/BitmapData\";\r\nimport { AbstractPrimitive } from \"./AbstractPrimitive\";\r\nimport { SideX } from \"./SideX\";\r\n\r\nimport { PixelObject } from \"../display/PixelObject\";\r\n\r\nexport class SlopeNorth extends AbstractPrimitive {\r\n  constructor(\r\n    dimension?: SlopeDimension,\r\n    color?: SlopeColor,\r\n    border?: boolean,\r\n    useDefaultCanvas?: boolean\r\n  ) {\r\n    super();\r\n\r\n    this.useDefaultCanvas = useDefaultCanvas || false;\r\n    this.border = border || border === undefined;\r\n    this.dimension = dimension === undefined ? new SlopeDimension() : dimension;\r\n    this.color = color === undefined ? new SlopeColor() : color;\r\n\r\n    this.initRectangle();\r\n    this.initBitmapData();\r\n    this.build();\r\n    this.renderBitmapDataForCanvas();\r\n  }\r\n\r\n  private initRectangle(): void {\r\n    this.w = this.dimension!.xAxis! + this.dimension!.yAxis!;\r\n    this.h = (this.dimension!.yAxis! * 3) / 2 + this.dimension!.xAxis! / 2;\r\n\r\n    // 22.6 degrees implementation\r\n    this.w -= 2;\r\n    this.h -= 3;\r\n\r\n    // The matrix offset between the bitmap and the 3d pixel coordinate zero point\r\n    this.matrix = new Matrix();\r\n    this.matrix.tx = -(this.dimension!.yAxis! - 2);\r\n    this.matrix.ty = -(this.dimension!.yAxis! - 2);\r\n  }\r\n\r\n  private initBitmapData(): void {\r\n    this.bitmapData = new BitmapData(\r\n      this.w!,\r\n      this.h!,\r\n      this.useDefaultCanvas || undefined\r\n    );\r\n  }\r\n\r\n  private renderBitmapDataForCanvas(): void {\r\n    this.canvas = this.bitmapData!.canvas;\r\n  }\r\n\r\n  private build(): void {\r\n    const colorBorderLeft = this.border\r\n      ? this.color!.border!\r\n      : this.color!.left!;\r\n    const colorBorderRight = this.border\r\n      ? this.color!.border!\r\n      : this.color!.right!;\r\n    const colorBorderHighlight = this.border\r\n      ? this.color!.borderHighlight\r\n      : this.color!.left;\r\n\r\n    const sideX = new SideX(\r\n      new SideXDimension(\r\n        this.dimension!.xAxis!,\r\n        this.h! - this.dimension!.xAxis! / 2\r\n      ),\r\n      new SideColor(colorBorderLeft, this.color!.left!)\r\n    );\r\n\r\n    const poX = new PixelObject(sideX);\r\n\r\n    const ctx = this.bitmapData!.context!;\r\n    ctx.drawImage(\r\n      poX.canvas!,\r\n      poX.x!,\r\n      poX.y! + this.h! - this.dimension!.xAxis! / 2\r\n    );\r\n\r\n    const bmd = new BitmapData(this.w!, this.h!);\r\n\r\n    // Close the path for floodFill\r\n    for (\r\n      let i = this.h! - (this.dimension!.yAxis! * 3) / 2 + 2;\r\n      i < this.h!;\r\n      i += 1\r\n    ) {\r\n      bmd.setPixel(this.dimension!.xAxis! - 1, i, colorBorderRight);\r\n    }\r\n\r\n    // Y axis\r\n    for (let j = 1; j < this.dimension!.yAxis!; j += 1) {\r\n      bmd.setPixel(\r\n        this.dimension!.xAxis! + j - 2,\r\n        this.h! - Math.floor(j / 2) - 1,\r\n        colorBorderRight\r\n      );\r\n\r\n      bmd.setPixel(\r\n        this.dimension!.xAxis! + j - 2,\r\n        this.dimension!.xAxis! / 2 - 2 + j,\r\n        colorBorderRight\r\n      );\r\n    }\r\n\r\n    // floodFill\r\n    bmd.floodFill(this.dimension!.xAxis! + 1, this.h! - 3, this.color!.right!);\r\n\r\n    // Highlight\r\n    for (let n = this.dimension!.xAxis! / 2; n < this.h! - 1; n += 1) {\r\n      bmd.setPixel(this.dimension!.xAxis! - 1, n, this.color!.right!);\r\n      bmd.setPixel(this.dimension!.xAxis! - 2, n, colorBorderHighlight!);\r\n    }\r\n\r\n    bmd.context!.putImageData(bmd.imageData!, 0, 0);\r\n    ctx.drawImage(bmd.canvas!, 0, 0);\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[SlopeNorth]\";\r\n  }\r\n}\r\n","import { SlopeDimension } from \"../dimensions\";\r\nimport { SlopeColor } from \"../colors\";\r\nimport { Matrix } from \"../geom\";\r\nimport { BitmapData } from \"../display/BitmapData\";\r\nimport { AbstractPrimitive } from \"./AbstractPrimitive\";\r\n\r\nexport class SlopeSouth extends AbstractPrimitive {\r\n  constructor(\r\n    dimension?: SlopeDimension,\r\n    color?: SlopeColor,\r\n    border?: boolean,\r\n    useDefaultCanvas?: boolean\r\n  ) {\r\n    super();\r\n\r\n    this.useDefaultCanvas = useDefaultCanvas || false;\r\n    this.border = border || border === undefined;\r\n    this.dimension = dimension === undefined ? new SlopeDimension() : dimension;\r\n    this.color = color === undefined ? new SlopeColor() : color;\r\n\r\n    this.initRectangle();\r\n    this.initBitmapData();\r\n    this.build();\r\n    this.renderBitmapDataForCanvas();\r\n  }\r\n\r\n  private initRectangle(): void {\r\n    this.w = this.dimension!.xAxis! + this.dimension!.yAxis!;\r\n    this.h = this.dimension!.xAxis! / 2 + this.dimension!.yAxis! * 2;\r\n\r\n    // 22.6 degrees implementation\r\n    this.w -= 2;\r\n    this.h -= 3;\r\n\r\n    // The matrix offset between the bitmap and the 3d pixel coordinate zero point\r\n    this.matrix = new Matrix();\r\n    this.matrix.tx = -(this.dimension!.yAxis! - 2);\r\n    this.matrix.ty = -((this.dimension!.yAxis! * 3) / 2 - 2);\r\n  }\r\n\r\n  private initBitmapData(): void {\r\n    this.bitmapData = new BitmapData(\r\n      this.w!,\r\n      this.h!,\r\n      this.useDefaultCanvas || undefined\r\n    );\r\n  }\r\n\r\n  private renderBitmapDataForCanvas(): void {\r\n    this.bitmapData!.context!.putImageData(this.bitmapData!.imageData!, 0, 0);\r\n    this.canvas = this.bitmapData!.canvas;\r\n  }\r\n\r\n  private build(): void {\r\n    const colorBorderLeft = this.border\r\n      ? this.color!.border!\r\n      : this.color!.leftSlope!;\r\n    const colorBorderRight = this.border\r\n      ? this.color!.border!\r\n      : this.color!.right!;\r\n\r\n    // X axis\r\n    for (let j = 0; j < this.dimension!.xAxis!; j += 1) {\r\n      this.bitmapData!.setPixel(\r\n        j,\r\n        this.dimension!.yAxis! * 2 + Math.floor(j / 2) - 3,\r\n        colorBorderLeft\r\n      );\r\n\r\n      this.bitmapData!.setPixel(\r\n        j + this.dimension!.yAxis! - 2,\r\n        Math.floor(j / 2),\r\n        colorBorderLeft\r\n      );\r\n    }\r\n\r\n    // Y axis\r\n    for (let i = 0; i < this.dimension!.yAxis!; i += 1) {\r\n      this.bitmapData!.setPixel(\r\n        this.dimension!.xAxis! - 2 + i,\r\n        this.h! - Math.floor(i / 2) - 1,\r\n        colorBorderRight\r\n      );\r\n    }\r\n\r\n    // X axis\r\n    for (\r\n      let k = this.dimension!.xAxis! / 2 - 1;\r\n      k < this.h! - this.dimension!.yAxis! / 2;\r\n      k += 1\r\n    ) {\r\n      this.bitmapData!.setPixel(this.w! - 1, k, colorBorderRight);\r\n    }\r\n\r\n    // Slot\r\n    for (let m = 0; m < this.dimension!.yAxis! * 2 - 2; m += 1) {\r\n      this.bitmapData!.setPixel(\r\n        Math.floor(m / 2),\r\n        this.dimension!.yAxis! * 2 - m - 3,\r\n        colorBorderLeft\r\n      );\r\n\r\n      this.bitmapData!.setPixel(\r\n        this.dimension!.xAxis! - 2 + Math.floor(m / 2),\r\n        this.h! - m - 1,\r\n        colorBorderLeft\r\n      );\r\n    }\r\n\r\n    // floodFill\r\n    this.bitmapData!.floodFill(\r\n      this.dimension!.yAxis! - 1,\r\n      1,\r\n      this.color!.leftSlope!\r\n    );\r\n\r\n    this.bitmapData!.floodFill(\r\n      this.dimension!.xAxis!,\r\n      this.h! - 3,\r\n      this.color!.right!\r\n    );\r\n\r\n    // Hack single pixel\r\n    this.bitmapData!.setPixel(\r\n      this.dimension!.xAxis! - 1,\r\n      this.h! - 2,\r\n      this.color!.right!\r\n    );\r\n\r\n    // Highlight\r\n    if (this.border) {\r\n      for (let n = 1; n < this.dimension!.yAxis! * 2 - 3; n += 1) {\r\n        this.bitmapData!.setPixel(\r\n          this.dimension!.xAxis! - 2 + Math.floor(n / 2),\r\n          this.h! - n - 1,\r\n          this.color!.borderHighlight!\r\n        );\r\n      }\r\n    }\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[SlopeSouth]\";\r\n  }\r\n}\r\n","import { SlopeDimension, SideYDimension } from \"../dimensions\";\r\nimport { SlopeColor, SideColor } from \"../colors\";\r\nimport { Matrix } from \"../geom\";\r\nimport { BitmapData } from \"../display/BitmapData\";\r\nimport { AbstractPrimitive } from \"./AbstractPrimitive\";\r\nimport { SideY } from \"./SideY\";\r\n\r\nimport { PixelObject } from \"../display/PixelObject\";\r\n\r\nexport class SlopeWest extends AbstractPrimitive {\r\n  constructor(\r\n    dimension?: SlopeDimension,\r\n    color?: SlopeColor,\r\n    border?: boolean,\r\n    useDefaultCanvas?: boolean\r\n  ) {\r\n    super();\r\n\r\n    this.useDefaultCanvas = useDefaultCanvas || false;\r\n    this.border = border || border === undefined;\r\n    this.dimension = dimension === undefined ? new SlopeDimension() : dimension;\r\n    this.color = color === undefined ? new SlopeColor() : color;\r\n\r\n    this.initRectangle();\r\n    this.initBitmapData();\r\n    this.build();\r\n    this.renderBitmapDataForCanvas();\r\n  }\r\n\r\n  private initRectangle(): void {\r\n    this.w = this.dimension!.xAxis! + this.dimension!.yAxis!;\r\n    this.h = (this.dimension!.xAxis! * 3) / 2 + this.dimension!.yAxis! / 2;\r\n\r\n    // 22.6 degrees implementation\r\n    this.w -= 2;\r\n    this.h -= 3;\r\n\r\n    // The matrix offset between the bitmap and the 3d pixel coordinate zero point\r\n    this.matrix = new Matrix();\r\n    this.matrix.tx = -(this.dimension!.yAxis! - 2);\r\n    this.matrix.ty = -(this.dimension!.xAxis! - 2);\r\n  }\r\n\r\n  private initBitmapData(): void {\r\n    this.bitmapData = new BitmapData(\r\n      this.w!,\r\n      this.h!,\r\n      this.useDefaultCanvas || undefined\r\n    );\r\n  }\r\n\r\n  private renderBitmapDataForCanvas(): void {\r\n    this.canvas = this.bitmapData!.canvas;\r\n  }\r\n\r\n  private build(): void {\r\n    const colorBorderLeft = this.border\r\n      ? this.color!.border!\r\n      : this.color!.left!;\r\n    const colorBorderRight = this.border\r\n      ? this.color!.border!\r\n      : this.color!.right!;\r\n    const colorBorderHighlight = this.border\r\n      ? this.color!.borderHighlight!\r\n      : this.color!.left!;\r\n\r\n    const sideY = new SideY(\r\n      new SideYDimension(\r\n        this.dimension!.yAxis!,\r\n        this.h! - this.dimension!.yAxis! / 2\r\n      ),\r\n      new SideColor(colorBorderRight, this.color!.right!)\r\n    );\r\n\r\n    const poY = new PixelObject(sideY);\r\n\r\n    const ctx = this.bitmapData!.context!;\r\n    ctx.drawImage(\r\n      poY.canvas!,\r\n      poY.x! + this.w! - 2,\r\n      poY.y! + this.h! - this.dimension!.yAxis! / 2\r\n    );\r\n\r\n    const bmd = new BitmapData(this.w!, this.h!);\r\n\r\n    // Close the path for floodFill\r\n    for (\r\n      let i = this.h! - (this.dimension!.xAxis! * 3) / 2 + 2;\r\n      i < this.h!;\r\n      i += 1\r\n    ) {\r\n      bmd.setPixel(this.dimension!.xAxis! - 2, i, colorBorderLeft);\r\n    }\r\n\r\n    // X axis\r\n    for (let j = 0; j < this.dimension!.xAxis! - 1; j += 1) {\r\n      bmd.setPixel(\r\n        j,\r\n        this.dimension!.xAxis! +\r\n          this.dimension!.yAxis! / 2 -\r\n          3 +\r\n          Math.floor(j / 2),\r\n        colorBorderLeft\r\n      );\r\n\r\n      bmd.setPixel(\r\n        j,\r\n        this.dimension!.xAxis! + this.dimension!.yAxis! / 2 - 3 - j,\r\n        colorBorderLeft\r\n      );\r\n    }\r\n\r\n    // floodFill\r\n    bmd.floodFill(this.dimension!.xAxis! - 3, this.h! - 3, this.color!.left!);\r\n\r\n    // Highlight\r\n    for (let n = this.dimension!.yAxis! / 2; n < this.h! - 1; n += 1) {\r\n      bmd.setPixel(this.dimension!.xAxis! - 2, n, colorBorderHighlight);\r\n    }\r\n\r\n    bmd.context!.putImageData(bmd.imageData!, 0, 0);\r\n    ctx.drawImage(bmd.canvas!, 0, 0);\r\n  }\r\n\r\n  public static override toString(): string {\r\n    return \"[SlopeWest]\";\r\n  }\r\n}\r\n","import { Point } from \"../geom\";\r\nimport { PixelObject } from \"./PixelObject\";\r\n\r\nexport class PixelView {\r\n  public canvas: HTMLCanvasElement | null;\r\n\r\n  public context: CanvasRenderingContext2D | null;\r\n\r\n  public point: Point | null;\r\n\r\n  constructor(canvas?: HTMLCanvasElement, point?: Point) {\r\n    if (!canvas) {\r\n      throw new Error(\"Canvas is not defined\");\r\n    }\r\n\r\n    this.canvas = canvas;\r\n\r\n    this.context = this.canvas.getContext(\"2d\");\r\n    if (this.context) {\r\n      (this.context as any).mozImageSmoothingEnabled = false;\r\n      (this.context as any).msImageSmoothingEnabled = false;\r\n      this.context.imageSmoothingEnabled = false;\r\n    }\r\n\r\n    this.point = point || new Point(0, 0);\r\n  }\r\n\r\n  public renderObject(\r\n    primitive: ConstructorParameters<typeof PixelObject>[0],\r\n    point3D: ConstructorParameters<typeof PixelObject>[1]\r\n  ): void {\r\n    const po = new PixelObject(primitive, point3D);\r\n\r\n    if (this.context && this.point && po.canvas) {\r\n      this.context.drawImage(\r\n        po.canvas,\r\n        this.point.x + (po.x || 0),\r\n        this.point.y + (po.y || 0)\r\n      );\r\n    }\r\n  }\r\n\r\n  public clear(): void {\r\n    if (this.canvas && this.context) {\r\n      this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);\r\n    }\r\n  }\r\n\r\n  public static toString(): string {\r\n    return \"[PixelView]\";\r\n  }\r\n}\r\n","export abstract class CanvasTool {\r\n  public static getPixel(imageData: ImageData, x: number, y: number): number {\r\n    const { data } = imageData;\r\n    const index = (y * imageData.width + x) * 4;\r\n    const r = data[index]!;\r\n    const g = data[index + 1]!;\r\n    const b = data[index + 2]!;\r\n\r\n    // eslint-disable-next-line no-bitwise\r\n    return (r << 16) | (g << 8) | b;\r\n  }\r\n\r\n  public static toString() {\r\n    return \"[CanvasTool]\";\r\n  }\r\n}\r\n","export abstract class ColorPattern {\r\n  public GRASS_GREEN: number;\r\n\r\n  public YELLOW: number;\r\n\r\n  public WINE_RED: number;\r\n\r\n  public PINK: number;\r\n\r\n  public PURPLE: number;\r\n\r\n  public BLUE: number;\r\n\r\n  public GRAY: number;\r\n\r\n  public BLACK: number;\r\n\r\n  public FINE_COLORS: number[];\r\n\r\n  protected constructor() {\r\n    this.GRASS_GREEN = 0xccff00;\r\n    this.YELLOW = 0xffff00;\r\n    this.WINE_RED = 0xff0099;\r\n    this.PINK = 0xff7cbf;\r\n    this.PURPLE = 0xcc00ff;\r\n    this.BLUE = 0x00ccff;\r\n    this.GRAY = 0xeeeeee;\r\n    this.BLACK = 0x666666;\r\n\r\n    this.FINE_COLORS = [\r\n      this.GRASS_GREEN,\r\n      this.YELLOW,\r\n      this.WINE_RED,\r\n      this.PINK,\r\n      this.PURPLE,\r\n      this.BLUE,\r\n      this.GRAY,\r\n      this.BLACK,\r\n    ];\r\n  }\r\n\r\n  public getRandomComfortableColor(): number {\r\n    return this.FINE_COLORS[\r\n      Math.floor(Math.random() * this.FINE_COLORS.length)\r\n    ]!;\r\n  }\r\n\r\n  public static toString(): string {\r\n    return \"[ColorPattern]\";\r\n  }\r\n}\r\n"],"names":[],"mappings":"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"}