layer.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /*
  2. * iGeom by LInE
  3. * Free software to student private data
  4. *
  5. * http://www.matematica.br/igeom
  6. * http://www.usp.br/line
  7. *
  8. * ./app/core/drawers/layer.js
  9. * @version 2023/01/27
  10. */
  11. import Konva from "konva";
  12. import { ActionManager } from "../models/application/actions/action-manager";
  13. export class Layer {
  14. // @calledby app/core/drawers/stage.js: createLayer(): const layer = new Layer(sequence, new Konva.Layer());
  15. constructor (id, konvaLayer) {
  16. console.log("layer.js!constructor(.): id=" + id);
  17. this.id = id;
  18. this.name = "new_construction_" + this.id;
  19. this.konvaLayer = konvaLayer;
  20. this.aggregators = [];
  21. this.selectedAggregators = [];
  22. this.konvaGroup = new Konva.Group({
  23. draggable: false,
  24. resizeEnabled: false
  25. });
  26. this.konvaLayer.add(this.konvaGroup);
  27. this.actionManager = new ActionManager();
  28. }
  29. getKonvaGroup () {
  30. return this.konvaGroup;
  31. }
  32. getKonvaLayer () {
  33. return this.konvaLayer;
  34. }
  35. addAggregator (aggregator) {
  36. this.aggregators.push(aggregator);
  37. }
  38. getAggregators () {
  39. return this.aggregators;
  40. }
  41. getSelectedAggregators () {
  42. return this.selectedAggregators;
  43. }
  44. setSelectedAggregator (aggregator) {
  45. if (!this.selectedAggregators.includes(aggregator)) {
  46. this.selectedAggregators.push(aggregator);
  47. }
  48. }
  49. removeSelectedAggregator (aggregator) {
  50. if (this.selectedAggregators.includes(aggregator)) {
  51. let index = this.selectedAggregators.indexOf(aggregator);
  52. this.selectedAggregators.splice(index, 1);
  53. }
  54. }
  55. removeAggregator (aggregator) {
  56. console.info("aggregator", aggregator);
  57. let index = this.aggregators.indexOf(aggregator);
  58. this.aggregators.splice(index, 1);
  59. if (this.selectedAggregators.includes(aggregator)) {
  60. let index = this.selectedAggregators.indexOf(aggregator);
  61. this.selectedAggregators.splice(index, 1);
  62. }
  63. this.actionManager.remove(aggregator.genericObject);
  64. aggregator.konvaObject.destroy();
  65. }
  66. } // export class Layer