/* * iGeom by LInE * Free software to student private data * * http://www.matematica.br/igeom * http://www.usp.br/line * * ./app/core/drawers/layer.js * @version 2023/01/27 */ import Konva from "konva"; import { ActionManager } from "../models/application/actions/action-manager"; export class Layer { // @calledby app/core/drawers/stage.js: createLayer(): const layer = new Layer(sequence, new Konva.Layer()); constructor (id, konvaLayer) { console.log("layer.js!constructor(.): id=" + id); this.id = id; this.name = "new_construction_" + this.id; this.konvaLayer = konvaLayer; this.aggregators = []; this.selectedAggregators = []; this.konvaGroup = new Konva.Group({ draggable: false, resizeEnabled: false }); this.konvaLayer.add(this.konvaGroup); this.actionManager = new ActionManager(); } getKonvaGroup () { return this.konvaGroup; } getKonvaLayer () { return this.konvaLayer; } addAggregator (aggregator) { this.aggregators.push(aggregator); } getAggregators () { return this.aggregators; } getSelectedAggregators () { return this.selectedAggregators; } setSelectedAggregator (aggregator) { if (!this.selectedAggregators.includes(aggregator)) { this.selectedAggregators.push(aggregator); } } removeSelectedAggregator (aggregator) { if (this.selectedAggregators.includes(aggregator)) { let index = this.selectedAggregators.indexOf(aggregator); this.selectedAggregators.splice(index, 1); } } removeAggregator (aggregator) { console.info("aggregator", aggregator); let index = this.aggregators.indexOf(aggregator); this.aggregators.splice(index, 1); if (this.selectedAggregators.includes(aggregator)) { let index = this.selectedAggregators.indexOf(aggregator); this.selectedAggregators.splice(index, 1); } this.actionManager.remove(aggregator.genericObject); aggregator.konvaObject.destroy(); } } // export class Layer