UNPKG

@itwin/measure-tools-react

Version:
88 lines 3.28 kB
import { MeasurementToolModel } from "../api/MeasurementToolModel.js"; import { AngleMeasurement } from "../measurements/AngleMeasurement.js"; var State; (function (State) { State[State["SetMeasurementViewport"] = 0] = "SetMeasurementViewport"; State[State["SetStartPoint"] = 1] = "SetStartPoint"; State[State["SetCenter"] = 2] = "SetCenter"; State[State["SetEndPoint"] = 3] = "SetEndPoint"; })(State || (State = {})); /** Tool model for measuring radius using 3-points */ export class MeasureAngleToolModel extends MeasurementToolModel { constructor() { super(); this._currentState = State.SetMeasurementViewport; } get currentState() { return this._currentState; } get dynamicMeasurement() { return this._currentMeasurement; } setMeasurementViewport(viewType) { if (State.SetMeasurementViewport !== this._currentState) return false; this._currentViewportType = viewType; this._moveToNextState(); return true; } setStartPoint(viewType, point, isDynamic) { if (State.SetStartPoint !== this._currentState) return false; if (viewType !== this._currentViewportType) return false; this._currentMeasurement = AngleMeasurement.create(point, undefined, undefined, viewType); this._currentMeasurement.isDynamic = isDynamic; this.notifyNewMeasurement(); this._moveToNextState(); return true; } setCenter(viewType, point, isDynamic) { if (State.SetCenter !== this._currentState) return false; if (viewType !== this._currentViewportType) return false; this._currentMeasurement.setCenter(point); this._currentMeasurement.isDynamic = isDynamic; this.notifyDynamicMeasurementChanged(); if (!isDynamic) this._moveToNextState(); return true; } setEndPoint(viewType, point, isDynamic) { if (State.SetEndPoint !== this._currentState) return false; if (viewType !== this._currentViewportType) return false; this._currentMeasurement.setEndPoint(point); this._currentMeasurement.isDynamic = isDynamic; this.notifyDynamicMeasurementChanged(); if (!isDynamic) this._moveToNextState(); return true; } _moveToNextState() { switch (this._currentState) { case State.SetMeasurementViewport: this._currentState = State.SetStartPoint; break; case State.SetStartPoint: this._currentState = State.SetCenter; break; case State.SetCenter: this._currentState = State.SetEndPoint; break; case State.SetEndPoint: this._currentMeasurement.isDynamic = false; this.addMeasurementAndReset(this._currentMeasurement); break; } } reset(clearMeasurements) { super.reset(clearMeasurements); this._currentMeasurement = undefined; this._currentState = State.SetMeasurementViewport; } } MeasureAngleToolModel.State = State; //# sourceMappingURL=MeasureAngleToolModel.js.map