UNPKG

rpi-led-matrix-painter

Version:

Add drawing facilities to rpi-led-matrix. Manage sections of the board independently, draw shapes, text, and images.

50 lines (42 loc) 1.95 kB
import * as matrix from "wesleytabaka-rpi-led-matrix"; import { CanvasSection } from "./canvassection"; import { CanvasSectionSettings } from "./canvassectionsettings"; import { PaintingInstruction } from "./paintinginstruction"; export class Canvas { private canvas: CanvasSection[]; private matrixOptions: matrix.MatrixOptions; private runtimeOptions: matrix.RuntimeOptions; constructor(matrixOptions: matrix.MatrixOptions, runtimeOptions: matrix.RuntimeOptions){ this.canvas = ([] as CanvasSection[]); this.matrixOptions = matrixOptions; // May come in handy for display size, etc. this.runtimeOptions = runtimeOptions; // May come in handy for display size, etc. } public getCanvasSections(): CanvasSection[] { return this.canvas; } public getCanvasSection(name: string): CanvasSection | undefined { return this.canvas.find((canvasSection: CanvasSection) => { return canvasSection.name == name; }); } public setCanvasSection(name: string, paintingInstructions: PaintingInstruction[]): void { let canvasSection = this.getCanvasSection(name); if(canvasSection != undefined){ canvasSection.setRepresentation(paintingInstructions); } else { throw Error("CanvasSection not found by name, \"" + name + "\""); } } public addCanvasSection(canvasSection: CanvasSection): void { this.canvas.push(canvasSection); } public removeCanvasSection(canvasSectionName: string): void { this.canvas.splice(this.canvas.findIndex((value) => {value.name == canvasSectionName}),1); } public setCanvas(canvasSections: CanvasSectionSettings[]): void { // Shortcut method to draw the whole canvas at once. canvasSections.forEach((canvasSection) => { this.setCanvasSection(canvasSection.name, canvasSection.representation); }); } }