import { WidgetHandle } from './Widgets'; import { Mode } from '../enums/Mode'; import { Orientation } from '../enums/Orientation'; import { ToolType } from '../enums/ToolType'; export interface ToolParameters { scene: THREE.Scene; displayMode: Mode; stackHelper: any; loadedDataParent: THREE.Object3D; boundingBoxGeometry: THREE.Geometry; orientation: Orientation; hideMesh: boolean; } export interface ToolSerial { toolParams: ToolParameters; toolType: ToolType; worldPosition: THREE.Vector3; worldNormal: THREE.Vector3; } export interface ToolInstanceData { line: any; label: any; moving: boolean; } export interface ToolInstanceSerial { } export declare abstract class WidgetBase extends THREE.Object3D { _screenOffsets: { top: number; left: number; }; protected _container: HTMLElement; protected _enabled: boolean; protected _displayed: boolean; protected _selected: boolean; protected _active: boolean; protected _dragged: boolean; protected _hovered: boolean; protected _color: number; protected _controls: THREE.OrbitControls; protected _camera: THREE.Camera; protected _material: any; protected _geometry: any; private _mesh; protected _initialized: boolean; protected _dom: any; protected _handles: WidgetHandle[]; protected _colors: any; protected _instanceData: ToolInstanceData; protected _domHovered: boolean; protected _widgetType: ToolType; _toolParams: ToolParameters; protected _worldPosition: THREE.Vector3; private _worldNormal; protected _doesSnap: boolean; protected _boundingScale: number; protected _maxDistance: number; worldNormal: THREE.Vector3; mesh: any; readonly widgetType: ToolType; worldPosition: THREE.Vector3; enabled: boolean; selected: boolean; displayed: boolean; active: boolean; dragged: boolean; hovered: boolean; color: any; constructor(controls: THREE.OrbitControls, container: HTMLElement, baseSerial: ToolSerial, doesSnap: boolean, maxDistance: number, extendedSerial?: ToolInstanceSerial); flushState(): void; updateMeshColor(): void; updateColor(): void; /** * @param {HTMLElement} label * @param {Vector3} point label's center coordinates (default) * @param {Boolean} corner if true, then point is the label's top left corner coordinates */ updateLabelTransform(label: HTMLElement, point: THREE.Vector3, corner?: boolean): import("three").Vector2; updateDOMColor(): void; protected abstract _updateDOMColor(): any; updateDOM(): void; protected abstract _updateDOM(): any; updateMeshPosition(): void; protected abstract _updateMeshPosition(): any; update(): void; protected abstract _update(): any; create(): void; protected _createScreenOffsets(): void; protected _createEventBindings(): void; protected abstract _createUniqueBindings(): any; protected _createEventListeners(): void; protected abstract _createUniqueListeners(): any; createMesh(): void; protected abstract _createMesh(): any; /** * Factory function for initialising this Widget's mesh as a line */ protected _createMeshAsLine(): void; createDOM(): void; protected abstract _createDOM(): any; showDOM(): void; protected abstract _showDOM(): any; hideDOM(): void; protected abstract _hideDOM(): any; hideMesh(): void; showMesh(): void; show(): void; hide(): void; hoverDom(evt: any): void; onResize(): void; abstract onStart(evt: any): any; abstract onEnd(): any; onMove(evt: any): void; abstract onHover(evt: any): any; getMousePosition(event: MouseEvent, container: HTMLElement): { x: number; y: number; screenX: number; screenY: number; }; setDefaultColor(color: number): void; protected abstract _initialize(baseSerial: ToolSerial, extendedSerial?: ToolInstanceSerial): any; protected abstract _removeEventListeners(): any; free(): void; }