UNPKG

@thewtex/vtk.js-esm

Version:

Visualization Toolkit for the Web

159 lines (126 loc) 6.15 kB
import _defineProperty from '@babel/runtime/helpers/defineProperty'; import macro from '../../../macro.js'; import vtkAbstractWidget from '../AbstractWidget.js'; import vtkInteractorStyleImage from '../../Style/InteractorStyleImage.js'; import vtkResliceCursorLineRepresentation from './ResliceCursorLineRepresentation.js'; import { WidgetState } from './ResliceCursorWidget/Constants.js'; import { InteractionState } from './ResliceCursorRepresentation/Constants.js'; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } var VOID = macro.VOID, EVENT_ABORT = macro.EVENT_ABORT; // ---------------------------------------------------------------------------- // vtkResliceCursorWidget methods // ---------------------------------------------------------------------------- function vtkResliceCursorWidget(publicAPI, model) { // Set our className model.classHierarchy.push('vtkResliceCursorWidget'); var superClass = _objectSpread({}, publicAPI); //---------------------------------------------------------------------------- // Public API methods //---------------------------------------------------------------------------- publicAPI.setCursor = function (state) { switch (state) { case InteractionState.ON_AXIS1: case InteractionState.ON_AXIS2: case InteractionState.ON_CENTER: { model.interactor.getView().setCursor('pointer'); break; } default: { model.interactor.getView().setCursor('default'); } } }; publicAPI.createDefaultRepresentation = function () { if (!model.widgetRep) { publicAPI.setWidgetRep(vtkResliceCursorLineRepresentation.newInstance()); } }; publicAPI.handleMouseMove = function (callData) { return publicAPI.moveAction(callData); }; publicAPI.handleLeftButtonPress = function (callData) { return publicAPI.selectAction(callData); }; publicAPI.handleLeftButtonRelease = function (callData) { return publicAPI.endSelectAction(callData); }; publicAPI.selectAction = function (callData) { var position = [callData.position.x, callData.position.y]; var state = model.widgetRep.computeInteractionState(position); if (state === InteractionState.OUTSIDE) { model.widgetState = WidgetState.WINDOW_LEVEL; model.imageInteractorStyle.handleLeftButtonPress(callData); } else { model.widgetRep.startComplexWidgetInteraction(position); model.widgetState = WidgetState.ACTIVE; publicAPI.setCursor(state); } publicAPI.invokeStartInteractionEvent(); publicAPI.render(); return EVENT_ABORT; }; publicAPI.endSelectAction = function (callData) { if (model.widgetState === WidgetState.START) { return VOID; } if (model.widgetState === WidgetState.WINDOW_LEVEL) { model.imageInteractorStyle.handleLeftButtonRelease(callData); } model.widgetState = WidgetState.START; publicAPI.invokeEndInteractionEvent(); publicAPI.render(); return EVENT_ABORT; }; publicAPI.moveAction = function (callData) { var position = [callData.position.x, callData.position.y]; if (model.widgetState === WidgetState.START) { var state = model.widgetRep.getInteractionState(); model.widgetRep.computeInteractionState(position); publicAPI.setCursor(model.widgetRep.getInteractionState()); if (state !== model.widgetRep.getInteractionState()) { publicAPI.render(); } return VOID; } if (model.widgetState === WidgetState.WINDOW_LEVEL) { model.imageInteractorStyle.handleMouseMove(callData); } else { model.widgetRep.complexWidgetInteraction(position); } publicAPI.invokeInteractionEvent(); publicAPI.render(); return EVENT_ABORT; }; publicAPI.setWidgetRep = function (widgetRep) { superClass.setWidgetRep(widgetRep); model.imageInteractorStyle.setCurrentImageProperty(model.widgetRep.getImageActor().getProperty()); }; publicAPI.setInteractor = function (i) { superClass.setInteractor(i); model.imageInteractorStyle.setInteractor(model.interactor); model.imageInteractorStyle.setEnabled(false); }; } // ---------------------------------------------------------------------------- // Object factory // ---------------------------------------------------------------------------- var DEFAULT_VALUES = { widgetState: WidgetState.START }; // ---------------------------------------------------------------------------- function extend(publicAPI, model) { var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; Object.assign(model, DEFAULT_VALUES, initialValues); vtkAbstractWidget.extend(publicAPI, model, DEFAULT_VALUES, initialValues); model.imageInteractorStyle = vtkInteractorStyleImage.newInstance({ currentImageNumber: null }); // Object methods vtkResliceCursorWidget(publicAPI, model); } // ---------------------------------------------------------------------------- var newInstance = macro.newInstance(extend, 'vtkResliceCursorWidget'); // ---------------------------------------------------------------------------- var vtkResliceCursorWidget$1 = { newInstance: newInstance, extend: extend }; export default vtkResliceCursorWidget$1; export { extend, newInstance };