UNPKG

@thewtex/vtk.js-esm

Version:

Visualization Toolkit for the Web

59 lines (50 loc) 2.27 kB
import { g as subtract, t as multiplyScalar, k as add, z as areEquals } from '../../../Common/Core/Math/index.js'; function calculateTextPosition(model) { var vector = [0, 0, 0]; var handle1WorldPos = model.widgetState.getHandle1().getOrigin(); var handle2WorldPos = model.widgetState.getHandle2().getOrigin(); var statePositionOnLine = model.widgetState.getPositionOnLine().getPosOnLine(); statePositionOnLine = 1 - statePositionOnLine; subtract(handle1WorldPos, handle2WorldPos, vector); multiplyScalar(vector, statePositionOnLine); add(vector, handle2WorldPos, vector); return vector; } function updateTextPosition(model) { var SVGTextState = model.widgetState.getText(); SVGTextState.setOrigin(calculateTextPosition(model)); } function isHandlePlaced(handleIndex, widgetState) { var handle1Origin = widgetState.getHandle1().getOrigin(); if (handleIndex === 0) { return handle1Origin.length > 0; } var handle2Origin = widgetState.getHandle2().getOrigin(); return handle1Origin.length > 0 && handle2Origin.length > 0 && !areEquals(handle1Origin, handle2Origin, 0); } /** * Returns the world position of line extremities (placed or not). * Returns null if no extremity exist. * @param {number} handleIndex 0 or 1 * @param {object} widgetState state of line widget * @param {bool} moveHandle Get move handle position if moveHandle is true and handle is not placed */ function getPoint(handleIndex, widgetState) { var moveHandle = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; var handle = moveHandle && !isHandlePlaced(handleIndex, widgetState) ? widgetState.getMoveHandle() : widgetState["getHandle".concat(handleIndex + 1)](); var origin = handle.getOrigin(); return origin.length ? origin : null; } /** * Returns the number of handle placed on the scene by checking * handle positions. Returns 2 when the user is still * placing 2nd handle * */ function getNumberOfPlacedHandles(widgetState) { var numberOfPlacedHandles = 0; if (isHandlePlaced(0, widgetState)) { numberOfPlacedHandles = 1 + isHandlePlaced(1, widgetState); } return numberOfPlacedHandles; } export { calculateTextPosition, getNumberOfPlacedHandles, getPoint, isHandlePlaced, updateTextPosition };