@itwin/measure-tools-react
Version:
Frontend framework and tools for measurements
88 lines • 3.28 kB
JavaScript
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