From a8ab0d3b28e59971f103e443f13471e27f448038 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Sun, 6 Aug 2023 18:21:43 +0400 Subject: [PATCH] Up set coords --- src/canvas/index.ts | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/canvas/index.ts b/src/canvas/index.ts index 4864c2c8f..2a2c06b01 100644 --- a/src/canvas/index.ts +++ b/src/canvas/index.ts @@ -60,6 +60,10 @@ import { Coordinates } from '../common'; export type CanvasEvent = 'canvas:dragenter' | 'canvas:dragover' | 'canvas:drop' | 'canvas:dragend' | 'canvas:dragdata'; +export interface ToWorldOption { + toWorld?: boolean; +} + export default class CanvasModule extends Module { /** * Get configuration object @@ -607,14 +611,24 @@ export default class CanvasModule extends Module { * @example * canvas.setCoords(100, 100); */ - setCoords(x?: string | number, y?: string | number) { + setCoords(x?: string | number, y?: string | number, opts: ToWorldOption = {}) { + const hasX = x || x === 0; + const hasY = y || y === 0; const coords = { x: this.canvas.get('x'), y: this.canvas.get('y'), }; - if (x || x === 0) coords.x = parseFloat(`${x}`); - if (y || y === 0) coords.y = parseFloat(`${y}`); + if (hasX) coords.x = parseFloat(`${x}`); + if (hasY) coords.y = parseFloat(`${y}`); + + if (opts.toWorld) { + const delta = this.canvasView?.getViewportDelta(); + if (delta) { + if (hasX) coords.x = coords.x - delta.x; + if (hasY) coords.y = coords.y - delta.y; + } + } this.canvas.set(coords);