homemanager-fe/src/modules/house-planner/tools/tool-base.ts

60 lines
1.3 KiB
TypeScript

import { ICanvasToolBase, LayerObject, Vec2 } from '../interfaces';
import type { HousePlannerCanvasTools } from '../tools';
export class CanvasToolBase<T> implements ICanvasToolBase<T> {
public name = 'tool';
public subTool: T | undefined;
constructor(public manager: HousePlannerCanvasTools) {}
get ctx() {
return this.manager.ctx;
}
get canvas() {
return this.manager.canvas;
}
get history() {
return this.manager.history;
}
get renderer() {
return this.manager.manager;
}
get layer() {
return this.manager.selectedLayer;
}
get mousePosition() {
return this.renderer.mousePositionSnapped;
}
get mousePositionAbsolute() {
return this.renderer.mousePosition;
}
drawHighlights() {}
drawControls() {}
mouseDown(targetObject?: LayerObject) {}
mouseMoved(mouse: Vec2, offset: Vec2, mouseAbsolute: Vec2) {}
mouseUp(moved = false) {}
setSubTool(subTool: T) {
this.subTool = subTool;
}
activate() {}
deactivate() {}
enterPress(e: KeyboardEvent): void {}
escapePress(e: KeyboardEvent): void {}
emitEvent(e: CustomEvent<any>): void {
this.canvas.dispatchEvent(e);
}
isToolCancelable(): boolean {
return true;
}
selectionDeleted(): void {}
selectionChanged(selection: LayerObject[]): void {}
}