UNPKG

@acransac/vtk.js

Version:

Visualization Toolkit for the Web

153 lines (144 loc) 6.34 kB
import vtkStateBuilder from 'vtk.js/Sources/Widgets/Core/StateBuilder'; import { ScrollingMethods } from 'vtk.js/Sources/Widgets/Widgets3D/ResliceCursorWidget/Constants'; import { ViewTypes } from 'vtk.js/Sources/Widgets/Core/WidgetManager/Constants'; const factor = 1; const rotationFactor = 1; const axisXColor = [1, 0, 0]; const axisYColor = [0, 1, 0]; const axisZColor = [0, 0, 1]; const generateAxisXinY = () => vtkStateBuilder .createBuilder() .addField({ name: 'point1', initialValue: [0, 0, -factor] }) .addField({ name: 'point2', initialValue: [0, 0, factor] }) .addField({ name: 'rotationPoint1', initialValue: [0, 0, -rotationFactor] }) .addField({ name: 'rotationPoint2', initialValue: [0, 0, rotationFactor] }) .addField({ name: 'color', initialValue: axisXColor }) .addField({ name: 'name', initialValue: 'AxisXinY' }) .addField({ name: 'viewType', initialValue: ViewTypes.YZ_PLANE }) .addField({ name: 'inViewType', initialValue: ViewTypes.XZ_PLANE }) .build(); const generateAxisXinZ = () => vtkStateBuilder .createBuilder() .addField({ name: 'point1', initialValue: [0, -factor, 0] }) .addField({ name: 'point2', initialValue: [0, factor, 0] }) .addField({ name: 'rotationPoint1', initialValue: [0, -rotationFactor, 0] }) .addField({ name: 'rotationPoint2', initialValue: [0, rotationFactor, 0] }) .addField({ name: 'color', initialValue: axisXColor }) .addField({ name: 'name', initialValue: 'AxisXinZ' }) .addField({ name: 'viewType', initialValue: ViewTypes.YZ_PLANE }) .addField({ name: 'inViewType', initialValue: ViewTypes.XY_PLANE }) .build(); const generateAxisYinX = () => vtkStateBuilder .createBuilder() .addField({ name: 'point1', initialValue: [0, 0, -factor] }) .addField({ name: 'point2', initialValue: [0, 0, factor] }) .addField({ name: 'rotationPoint1', initialValue: [0, 0, -rotationFactor] }) .addField({ name: 'rotationPoint2', initialValue: [0, 0, rotationFactor] }) .addField({ name: 'color', initialValue: axisYColor }) .addField({ name: 'name', initialValue: 'AxisYinX' }) .addField({ name: 'viewType', initialValue: ViewTypes.XZ_PLANE }) .addField({ name: 'inViewType', initialValue: ViewTypes.YZ_PLANE }) .build(); const generateAxisYinZ = () => vtkStateBuilder .createBuilder() .addField({ name: 'point1', initialValue: [-factor, 0, 0] }) .addField({ name: 'point2', initialValue: [factor, 0, 0] }) .addField({ name: 'rotationPoint1', initialValue: [-rotationFactor, 0, 0] }) .addField({ name: 'rotationPoint2', initialValue: [rotationFactor, 0, 0] }) .addField({ name: 'color', initialValue: axisYColor }) .addField({ name: 'name', initialValue: 'AxisYinZ' }) .addField({ name: 'viewType', initialValue: ViewTypes.XZ_PLANE }) .addField({ name: 'inViewType', initialValue: ViewTypes.XY_PLANE }) .build(); const generateAxisZinX = () => vtkStateBuilder .createBuilder() .addField({ name: 'point1', initialValue: [0, -factor, 0] }) .addField({ name: 'point2', initialValue: [0, factor, 0] }) .addField({ name: 'rotationPoint1', initialValue: [0, -rotationFactor, 0] }) .addField({ name: 'rotationPoint2', initialValue: [0, rotationFactor, 0] }) .addField({ name: 'color', initialValue: axisZColor }) .addField({ name: 'name', initialValue: 'AxisZinX' }) .addField({ name: 'viewType', initialValue: ViewTypes.XY_PLANE }) .addField({ name: 'inViewType', initialValue: ViewTypes.YZ_PLANE }) .build(); const generateAxisZinY = () => vtkStateBuilder .createBuilder() .addField({ name: 'point1', initialValue: [-factor, 0, 0] }) .addField({ name: 'point2', initialValue: [factor, 0, 0] }) .addField({ name: 'rotationPoint1', initialValue: [-rotationFactor, 0, 0] }) .addField({ name: 'rotationPoint2', initialValue: [rotationFactor, 0, 0] }) .addField({ name: 'color', initialValue: axisZColor }) .addField({ name: 'name', initialValue: 'AxisZinY' }) .addField({ name: 'viewType', initialValue: ViewTypes.XY_PLANE }) .addField({ name: 'inViewType', initialValue: ViewTypes.XZ_PLANE }) .build(); export default function generateState() { return vtkStateBuilder .createBuilder() .addStateFromInstance({ labels: ['AxisXinY'], name: 'AxisXinY', instance: generateAxisXinY(), }) .addStateFromInstance({ labels: ['AxisXinZ'], name: 'AxisXinZ', instance: generateAxisXinZ(), }) .addStateFromInstance({ labels: ['AxisYinX'], name: 'AxisYinX', instance: generateAxisYinX(), }) .addStateFromInstance({ labels: ['AxisYinZ'], name: 'AxisYinZ', instance: generateAxisYinZ(), }) .addStateFromInstance({ labels: ['AxisZinX'], name: 'AxisZinX', instance: generateAxisZinX(), }) .addStateFromInstance({ labels: ['AxisZinY'], name: 'AxisZinY', instance: generateAxisZinY(), }) .addField({ name: 'center', initialValue: [0, 0, 0] }) .addField({ name: 'opacity', initialValue: 1 }) .addField({ name: 'activeLineState', initialValue: null }) .addField({ name: 'activeRotationPointName', initialValue: null }) .addField({ name: 'image', initialValue: null }) .addField({ name: 'activeViewType', initialValue: null }) .addField({ name: 'lineThickness', initialValue: 2 }) .addField({ name: 'sphereRadius', initialValue: 5 }) .addField({ name: 'showCenter', initialValue: true }) .addField({ name: 'updateMethodName', }) .addField({ name: 'planes', initialValue: { [ViewTypes.YZ_PLANE]: { normal: [1, 0, 0], viewUp: [0, 0, 1] }, [ViewTypes.XZ_PLANE]: { normal: [0, -1, 0], viewUp: [0, 0, 1] }, [ViewTypes.XY_PLANE]: { normal: [0, 0, -1], viewUp: [0, -1, 0] }, }, }) .addField({ name: 'enableRotation', initialValue: true }) .addField({ name: 'enableTranslation', initialValue: true }) .addField({ name: 'keepOrthogonality', initialValue: false }) .addField({ name: 'scrollingMethod', initialValue: ScrollingMethods.MIDDLE_MOUSE_BUTTON, }) .addField({ name: 'cameraOffsets', initialValue: {} }) .addField({ name: 'viewUpFromViewType', initialValue: {} }) .build(); }