60 lines
1.3 KiB
TypeScript
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 {}
|
|
}
|