UNPKG

@itwin/measure-tools-react

Version:
88 lines 3.3 kB
import { MeasurementToolModel } from "../api/MeasurementToolModel.js"; import { RadiusMeasurement } from "../measurements/RadiusMeasurement.js"; var State; (function (State) { State[State["SetMeasurementViewport"] = 0] = "SetMeasurementViewport"; State[State["SetStartPoint"] = 1] = "SetStartPoint"; State[State["SetMidPoint"] = 2] = "SetMidPoint"; State[State["SetEndPoint"] = 3] = "SetEndPoint"; })(State || (State = {})); /** Tool model for measuring radius using 3-points */ export class MeasureRadiusToolModel 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 = RadiusMeasurement.create(point, undefined, undefined, viewType); this._currentMeasurement.isDynamic = isDynamic; this.notifyNewMeasurement(); this._moveToNextState(); return true; } setMidPoint(viewType, point, isDynamic) { if (State.SetMidPoint !== this._currentState) return false; if (viewType !== this._currentViewportType) return false; this._currentMeasurement.setMidPoint(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.SetMidPoint; break; case State.SetMidPoint: 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; } } MeasureRadiusToolModel.State = State; //# sourceMappingURL=MeasureRadiusToolModel.js.map