UNPKG

@itwin/measure-tools-react

Version:
87 lines 3.64 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Bentley Systems, Incorporated. All rights reserved. * See LICENSE.md in the project root for license terms and full copyright notice. *--------------------------------------------------------------------------------------------*/ import { MeasurementPreferences } from "../api/MeasurementPreferences.js"; import { MeasurementToolModel } from "../api/MeasurementToolModel.js"; import { DistanceMeasurement } from "../measurements/DistanceMeasurement.js"; var State; (function (State) { State[State["SetMeasurementViewport"] = 0] = "SetMeasurementViewport"; State[State["SetStartPoint"] = 1] = "SetStartPoint"; State[State["SetEndPoint"] = 2] = "SetEndPoint"; })(State || (State = {})); export class MeasureDistanceToolModel extends MeasurementToolModel { constructor() { super(); this._currentState = State.SetMeasurementViewport; } get currentState() { return this._currentState; } get dynamicMeasurement() { return this._currentMeasurement; } get drawingMetadata() { return this._currentMeasurement?.drawingMetadata; } set drawingMetadata(data) { if (this._currentMeasurement) this._currentMeasurement.drawingMetadata = data; } set sheetViewId(id) { if (this._currentMeasurement) this._currentMeasurement.sheetViewId = id; } get sheetViewId() { return this._currentMeasurement?.sheetViewId; } setMeasurementViewport(viewType) { if (State.SetMeasurementViewport !== this._currentState) return false; this._currentViewportType = viewType; this.moveToNextState(); return true; } setStartPoint(viewType, point) { if (State.SetStartPoint !== this._currentState) return false; if (viewType !== this._currentViewportType) return false; this._currentMeasurement = DistanceMeasurement.create(point, point, this._currentViewportType); this._currentMeasurement.isDynamic = true; this._currentMeasurement.showAxes = false; // Turn off axes for new dynamic measurements this.notifyNewMeasurement(); 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.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.SetEndPoint; break; case State.SetEndPoint: this._currentMeasurement.isDynamic = false; this._currentMeasurement.showAxes = MeasurementPreferences.current.displayMeasurementAxes; // Turn axes on if its preferred this.addMeasurementAndReset(this._currentMeasurement); break; } } reset(clearMeasurements) { super.reset(clearMeasurements); this._currentMeasurement = undefined; this._currentState = State.SetMeasurementViewport; } } MeasureDistanceToolModel.State = State; //# sourceMappingURL=MeasureDistanceToolModel.js.map