UNPKG

@thewtex/vtk.js-esm

Version:

Visualization Toolkit for the Web

146 lines (114 loc) 6.31 kB
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray'; import _defineProperty from '@babel/runtime/helpers/defineProperty'; import macro from '../../../macro.js'; import vtkActor from '../../../Rendering/Core/Actor.js'; import vtkBoundingBox from '../../../Common/DataModel/BoundingBox.js'; import vtkMapper from '../../../Rendering/Core/Mapper.js'; import { u as uninitializeBounds } from '../../../Common/Core/Math/index.js'; import vtkProp3D from '../../../Rendering/Core/Prop3D.js'; import vtkProperty from '../../../Rendering/Core/Property.js'; import vtkResliceCursorPolyDataAlgorithm from './ResliceCursorPolyDataAlgorithm.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; } // vtkResliceCursorActor methods // ---------------------------------------------------------------------------- function vtkResliceCursorActor(publicAPI, model) { // Set our className model.classHierarchy.push('vtkResliceCursorActor'); var superClass = _objectSpread({}, publicAPI); publicAPI.getActors = function () { if (model.cursorAlgorithm.getResliceCursor()) { publicAPI.updateViewProps(); } return _toConsumableArray(model.cursorCenterlineActor); }; publicAPI.getNestedProps = function () { return publicAPI.getActors(); }; publicAPI.updateViewProps = function () { if (!model.cursorAlgorithm.getResliceCursor()) { return; } model.cursorAlgorithm.update(); var axisNormal = model.cursorAlgorithm.getReslicePlaneNormal(); var axis1 = model.cursorAlgorithm.getPlaneAxis1(); var axis2 = model.cursorAlgorithm.getPlaneAxis2(); model.cursorCenterlineMapper[axis1].setInputData(model.cursorAlgorithm.getOutputData(0)); model.cursorCenterlineMapper[axis2].setInputData(model.cursorAlgorithm.getOutputData(1)); model.cursorCenterlineActor[axis1].setVisibility(model.visibility); model.cursorCenterlineActor[axis2].setVisibility(model.visibility); model.cursorCenterlineActor[axisNormal].setVisibility(0); }; publicAPI.getBounds = function () { uninitializeBounds(model.bounds); publicAPI.updateViewProps(); var boundingBox = _toConsumableArray(vtkBoundingBox.INIT_BOUNDS); var bounds = []; for (var i = 0; i < 3; i++) { if (model.cursorCenterlineActor[i].getVisibility() && model.cursorCenterlineActor[i].getUseBounds()) { bounds = model.cursorCenterlineActor[i].getBounds(); vtkBoundingBox.addBounds(boundingBox, bounds[0], bounds[1], bounds[2], bounds[3], bounds[4], bounds[5]); } } model.bounds = boundingBox; return model.bounds; }; publicAPI.getMTime = function () { var mTime = superClass.getMTime(); if (model.cursorAlgorithm) { var time = model.cursorAlgorithm.getMTime(); if (time > mTime) { mTime = time; } } return mTime; }; publicAPI.getCenterlineProperty = function (i) { return model.centerlineProperty[i]; }; publicAPI.getCenterlineActor = function (i) { return model.cursorCenterlineActor[i]; }; publicAPI.setUserMatrix = function (matrix) { model.cursorCenterlineActor[0].setUserMatrix(matrix); model.cursorCenterlineActor[1].setUserMatrix(matrix); model.cursorCenterlineActor[2].setUserMatrix(matrix); superClass.setUserMatrix(matrix); }; //---------------------------------------------------------------------------- // Public API methods //---------------------------------------------------------------------------- } // ---------------------------------------------------------------------------- // Object factory // ---------------------------------------------------------------------------- var DEFAULT_VALUES = {}; // ---------------------------------------------------------------------------- function extend(publicAPI, model) { var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; Object.assign(model, DEFAULT_VALUES, initialValues); vtkProp3D.extend(publicAPI, model, initialValues); model.cursorAlgorithm = vtkResliceCursorPolyDataAlgorithm.newInstance(); model.cursorCenterlineMapper = []; model.cursorCenterlineActor = []; model.centerlineProperty = []; for (var i = 0; i < 3; i++) { model.cursorCenterlineMapper[i] = vtkMapper.newInstance(); model.cursorCenterlineMapper[i].setScalarVisibility(false); model.cursorCenterlineMapper[i].setResolveCoincidentTopologyToPolygonOffset(); model.cursorCenterlineMapper[i].setResolveCoincidentTopologyLineOffsetParameters(-1.0, -1.0); model.cursorCenterlineActor[i] = vtkActor.newInstance(); model.cursorCenterlineActor[i].setMapper(model.cursorCenterlineMapper[i]); model.centerlineProperty[i] = vtkProperty.newInstance(); model.cursorCenterlineActor[i].setProperty(model.centerlineProperty[i]); } model.centerlineProperty[0].setColor(1, 0, 0); model.centerlineProperty[1].setColor(0, 1, 0); model.centerlineProperty[2].setColor(0, 0, 1); macro.get(publicAPI, model, ['cursorAlgorithm']); // Object methods vtkResliceCursorActor(publicAPI, model); } // ---------------------------------------------------------------------------- var newInstance = macro.newInstance(extend, 'vtkResliceCursorActor'); // ---------------------------------------------------------------------------- var vtkResliceCursorActor$1 = { newInstance: newInstance, extend: extend }; export default vtkResliceCursorActor$1; export { extend, newInstance };