123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.SGraphScene = void 0;
- const lib_1 = require("@persagy-web/base/lib");
- const lib_2 = require("@persagy-web/draw/lib");
- const SGraphItem_1 = require("./SGraphItem");
- const SGraphSelectContainer_1 = require("./SGraphSelectContainer");
- class SGraphScene {
- constructor() {
- this.view = null;
- this.root = new SGraphItem_1.SGraphItem();
- this.grabItem = null;
- this.hoverItem = null;
- this.selectContainer = new SGraphSelectContainer_1.SGraphSelectContainer();
- this.root.scene = this;
- }
- addItem(item) {
- item.parent = this.root;
- }
- removeItem(item) {
- item.parent = null;
- }
- drawScene(painter, rect) {
- this.root.onPaint(painter, rect);
- }
- drawBackground(painter, rect) {
- }
- drawForeground(painter, rect) {
- }
- allItemRect() {
- let rect = null;
- for (let item of this.root.children) {
- if (rect == null) {
- rect = item.boundingRect().translated(item.pos.x, item.pos.y);
- }
- else {
- rect.union(item.boundingRect().translated(item.pos.x, item.pos.y));
- }
- }
- return rect;
- }
- selectedItemRect() {
- let rect = null;
- for (let item of this.root.children) {
- if (!item.selected) {
- continue;
- }
- if (rect == null) {
- rect = item.boundingRect().translated(item.pos.x, item.pos.y);
- }
- else {
- rect.union(item.boundingRect().translated(item.pos.x, item.pos.y));
- }
- }
- return rect;
- }
- selectedItems() {
- let itemList = Array();
- for (let item of this.root.children) {
- if (item.selected) {
- itemList.push(item);
- }
- }
- return itemList;
- }
- onDoubleClick(event) {
- if (this.grabItem != null) {
- return this.grabItem.onDoubleClick(this.toGrabItemMotionEvent(this.grabItem, event));
- }
- return this.root.onDoubleClick(event);
- }
- onMouseDown(event) {
- if (this.grabItem != null) {
- return this.grabItem.onMouseDown(this.toGrabItemMotionEvent(this.grabItem, event));
- }
- const flag = this.root.onMouseDown(event);
- if (!flag) {
- this.selectContainer.clear();
- }
- return flag;
- }
- onMouseMove(event) {
- if (this.grabItem != null) {
- return this.grabItem.onMouseMove(this.toGrabItemMotionEvent(this.grabItem, event));
- }
- return this.root.onMouseMove(event);
- }
- onMouseUp(event) {
- if (this.grabItem != null) {
- return this.grabItem.onMouseUp(this.toGrabItemMotionEvent(this.grabItem, event));
- }
- return this.root.onMouseUp(event);
- }
- onContextMenu(event) {
- if (this.grabItem != null) {
- return this.grabItem.onContextMenu(this.toGrabItemMotionEvent(this.grabItem, event));
- }
- return this.root.onContextMenu(event);
- }
- onKeyDown(event) {
- if (this.grabItem != null) {
- return this.grabItem.onKeyDown(event);
- }
- return this.root.onKeyDown(event);
- }
- onKeyUp(event) {
- if (this.grabItem != null) {
- return this.grabItem.onKeyUp(event);
- }
- return this.root.onKeyUp(event);
- }
- toGrabItemMotionEvent(item, event) {
- let se = Object.assign({}, event);
- se.matrix = new lib_1.SMatrix();
- if (this.view) {
- se.matrix.translate(this.view.origin.x, this.view.origin.y);
- se.matrix.scale(this.view.scale, this.view.scale);
- se.matrix.rotate(this.view.rotate);
- }
- se.matrix.multiply(item.scene2itemMattrix());
- let p = new lib_2.SPoint(event.offsetX, event.offsetY).matrixTransform(se.matrix.inversed());
- se.x = p.x;
- se.y = p.y;
- return se;
- }
- }
- exports.SGraphScene = SGraphScene;
|