@kitware/vtk.js 28.10.2 → 28.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Common/Core/Base64.js +53 -82
- package/Common/Core/CellArray.js +52 -60
- package/Common/Core/ClassHierarchy.js +8 -36
- package/Common/Core/DataArray/Constants.js +6 -6
- package/Common/Core/DataArray.js +193 -277
- package/Common/Core/Endian.js +14 -17
- package/Common/Core/HalfFloat.js +17 -34
- package/Common/Core/ImageHelper.js +17 -25
- package/Common/Core/LookupTable.js +131 -144
- package/Common/Core/Math/Constants.js +8 -8
- package/Common/Core/Math/index.js +754 -942
- package/Common/Core/Math.js +2 -4
- package/Common/Core/MatrixBuilder.js +99 -151
- package/Common/Core/Points.js +43 -43
- package/Common/Core/PriorityQueue.js +30 -28
- package/Common/Core/ProgressHandler.js +31 -32
- package/Common/Core/ScalarsToColors/Constants.js +4 -4
- package/Common/Core/ScalarsToColors.js +196 -253
- package/Common/Core/StringArray.js +48 -73
- package/Common/Core/URLExtract.js +10 -29
- package/Common/Core/VariantArray.js +48 -73
- package/Common/Core.js +11 -11
- package/Common/DataModel/AbstractPointLocator.js +19 -17
- package/Common/DataModel/BoundingBox.js +322 -490
- package/Common/DataModel/Box.js +46 -63
- package/Common/DataModel/CardinalSpline1D.js +92 -102
- package/Common/DataModel/Cell.js +41 -61
- package/Common/DataModel/CellLinks.js +91 -127
- package/Common/DataModel/CellTypes/Constants.js +7 -6
- package/Common/DataModel/CellTypes.js +55 -74
- package/Common/DataModel/Collection.js +45 -61
- package/Common/DataModel/Cone.js +28 -20
- package/Common/DataModel/Cylinder.js +41 -35
- package/Common/DataModel/DataSet/Constants.js +11 -5
- package/Common/DataModel/DataSet.js +37 -25
- package/Common/DataModel/DataSetAttributes/Constants.js +18 -18
- package/Common/DataModel/DataSetAttributes/FieldData.js +103 -194
- package/Common/DataModel/DataSetAttributes.js +96 -138
- package/Common/DataModel/EdgeLocator.js +45 -70
- package/Common/DataModel/ITKHelper.js +67 -137
- package/Common/DataModel/ImageData.js +115 -172
- package/Common/DataModel/ImplicitBoolean/Constants.js +2 -2
- package/Common/DataModel/ImplicitBoolean.js +66 -96
- package/Common/DataModel/IncrementalOctreeNode.js +201 -231
- package/Common/DataModel/IncrementalOctreePointLocator.js +160 -198
- package/Common/DataModel/KochanekSpline1D.js +78 -81
- package/Common/DataModel/Line/Constants.js +2 -2
- package/Common/DataModel/Line.js +82 -105
- package/Common/DataModel/Locator.js +17 -10
- package/Common/DataModel/Molecule.js +26 -17
- package/Common/DataModel/PiecewiseFunction.js +218 -239
- package/Common/DataModel/Plane.js +90 -113
- package/Common/DataModel/PointSet.js +30 -26
- package/Common/DataModel/PolyData/Constants.js +2 -2
- package/Common/DataModel/PolyData.js +95 -120
- package/Common/DataModel/PolyLine.js +44 -61
- package/Common/DataModel/Polygon/Constants.js +4 -4
- package/Common/DataModel/Polygon.js +128 -169
- package/Common/DataModel/Quad/Constants.js +2 -2
- package/Common/DataModel/Quad.js +61 -100
- package/Common/DataModel/SelectionNode/Constants.js +5 -4
- package/Common/DataModel/SelectionNode.js +25 -21
- package/Common/DataModel/Sphere.js +40 -35
- package/Common/DataModel/Spline1D/Constants.js +3 -2
- package/Common/DataModel/Spline1D.js +34 -18
- package/Common/DataModel/Spline3D/Constants.js +2 -2
- package/Common/DataModel/Spline3D.js +46 -41
- package/Common/DataModel/StructuredData/Constants.js +2 -2
- package/Common/DataModel/StructuredData.js +9 -20
- package/Common/DataModel/Triangle.js +207 -250
- package/Common/DataModel.js +19 -19
- package/Common/System/MobileVR.js +56 -61
- package/Common/System/TimerLog.js +1 -1
- package/Common/System.js +2 -2
- package/Common/Transform/LandmarkTransform/Constants.js +2 -2
- package/Common/Transform/LandmarkTransform.js +133 -117
- package/Common/Transform/Transform.js +42 -57
- package/Common/Transform.js +2 -2
- package/Common/index.js +4 -4
- package/Filters/Core/Cutter.js +134 -146
- package/Filters/Core/PolyDataNormals.js +44 -50
- package/Filters/Core.js +2 -2
- package/Filters/Cornerstone/ImageDataToCornerstoneImage.js +45 -33
- package/Filters/Cornerstone.js +1 -1
- package/Filters/General/AppendPolyData.js +84 -100
- package/Filters/General/Calculator.js +95 -163
- package/Filters/General/ClipClosedSurface/Constants.js +2 -2
- package/Filters/General/ClipClosedSurface.js +341 -416
- package/Filters/General/ClosedPolyLineToSurfaceFilter.js +141 -156
- package/Filters/General/ContourTriangulator/Constants.js +2 -2
- package/Filters/General/ContourTriangulator/helper.js +684 -812
- package/Filters/General/ContourTriangulator.js +92 -89
- package/Filters/General/ImageCropFilter.js +77 -78
- package/Filters/General/ImageDataOutlineFilter.js +42 -36
- package/Filters/General/ImageMarchingCubes/caseTable.js +9 -521
- package/Filters/General/ImageMarchingCubes.js +99 -112
- package/Filters/General/ImageMarchingSquares/caseTable.js +9 -41
- package/Filters/General/ImageMarchingSquares.js +93 -118
- package/Filters/General/ImageOutlineFilter.js +53 -54
- package/Filters/General/ImageSliceFilter.js +39 -30
- package/Filters/General/ImageStreamline.js +107 -124
- package/Filters/General/LineFilter.js +26 -15
- package/Filters/General/MoleculeToRepresentation.js +136 -149
- package/Filters/General/OBBTree/OBBNode.js +36 -34
- package/Filters/General/OBBTree/helper.js +19 -24
- package/Filters/General/OBBTree.js +396 -488
- package/Filters/General/OutlineFilter.js +52 -34
- package/Filters/General/PaintFilter/PaintFilter.worker.js +93 -130
- package/Filters/General/PaintFilter.js +150 -162
- package/Filters/General/ScalarToRGBA.js +38 -33
- package/Filters/General/TriangleFilter.js +65 -62
- package/Filters/General/TubeFilter/Constants.js +4 -4
- package/Filters/General/TubeFilter.js +376 -496
- package/Filters/General/WarpScalar.js +58 -60
- package/Filters/General/WindowedSincPolyDataFilter.js +258 -330
- package/Filters/General.js +21 -21
- package/Filters/Sources/Arrow2DSource/Constants.js +2 -2
- package/Filters/Sources/Arrow2DSource.js +56 -56
- package/Filters/Sources/ArrowSource.js +39 -29
- package/Filters/Sources/CircleSource.js +43 -43
- package/Filters/Sources/ConcentricCylinderSource.js +151 -174
- package/Filters/Sources/ConeSource.js +51 -42
- package/Filters/Sources/CubeSource.js +75 -96
- package/Filters/Sources/Cursor3D.js +94 -109
- package/Filters/Sources/CylinderSource.js +90 -90
- package/Filters/Sources/ImageGridSource.js +43 -43
- package/Filters/Sources/LineSource.js +49 -39
- package/Filters/Sources/PlaneSource.js +97 -104
- package/Filters/Sources/PointSource.js +46 -37
- package/Filters/Sources/RTAnalyticSource.js +50 -48
- package/Filters/Sources/SLICSource.js +63 -73
- package/Filters/Sources/SphereSource.js +88 -78
- package/Filters/Sources/ViewFinderSource.js +26 -23
- package/Filters/Sources.js +14 -14
- package/Filters/Texture/TextureMapToPlane.js +95 -97
- package/Filters/Texture/TextureMapToSphere.js +46 -54
- package/Filters/Texture.js +2 -2
- package/Filters/index.js +5 -5
- package/IO/Core/BinaryHelper.js +12 -18
- package/IO/Core/DataAccessHelper/HtmlDataAccessHelper.js +43 -59
- package/IO/Core/DataAccessHelper/HttpDataAccessHelper.js +76 -113
- package/IO/Core/DataAccessHelper/JSZipDataAccessHelper.js +62 -112
- package/IO/Core/DataAccessHelper/LiteHttpDataAccessHelper.js +76 -113
- package/IO/Core/DataAccessHelper.js +6 -6
- package/IO/Core/HttpDataSetReader.js +136 -139
- package/IO/Core/HttpDataSetSeriesReader.js +64 -75
- package/IO/Core/HttpSceneLoader.js +130 -179
- package/IO/Core/ImageStream/DefaultProtocol.js +29 -43
- package/IO/Core/ImageStream/ViewStream.js +100 -103
- package/IO/Core/ImageStream.js +62 -54
- package/IO/Core/ResourceLoader.js +10 -9
- package/IO/Core/Serializer/ArraySerializer.js +40 -40
- package/IO/Core/Serializer/FieldDataSerializer.js +18 -28
- package/IO/Core/Serializer/ImageDataSerializer.js +22 -23
- package/IO/Core/Serializer/PolyDataSerializer.js +17 -21
- package/IO/Core/Serializer.js +6 -13
- package/IO/Core/WSLinkClient.js +90 -76
- package/IO/Core/ZipMultiDataSetReader.js +46 -44
- package/IO/Core/ZipMultiDataSetWriter.js +43 -34
- package/IO/Core.js +7 -7
- package/IO/Geometry/DracoReader.js +118 -121
- package/IO/Geometry/PLYReader.js +163 -223
- package/IO/Geometry/PLYWriter/Constants.js +5 -5
- package/IO/Geometry/PLYWriter.js +139 -154
- package/IO/Geometry/STLReader.js +123 -146
- package/IO/Geometry/STLWriter/Constants.js +2 -2
- package/IO/Geometry/STLWriter.js +83 -82
- package/IO/Geometry.js +5 -5
- package/IO/Legacy/LegacyAsciiParser.js +78 -139
- package/IO/Legacy/PolyDataReader.js +48 -36
- package/IO/Legacy.js +2 -2
- package/IO/Misc/ElevationReader.js +67 -60
- package/IO/Misc/HttpDataSetLODsLoader.js +41 -38
- package/IO/Misc/ITKImageReader.js +58 -45
- package/IO/Misc/ITKPolyDataReader.js +50 -38
- package/IO/Misc/JSONNucleoReader.js +49 -42
- package/IO/Misc/JSONReader.js +38 -33
- package/IO/Misc/MTLReader.js +74 -119
- package/IO/Misc/OBJReader.js +153 -206
- package/IO/Misc/PDBReader.js +70 -68
- package/IO/Misc/SkyboxReader.js +77 -82
- package/IO/Misc.js +9 -9
- package/IO/XML/XMLImageDataReader.js +36 -38
- package/IO/XML/XMLImageDataWriter.js +28 -21
- package/IO/XML/XMLPolyDataReader.js +49 -46
- package/IO/XML/XMLPolyDataWriter.js +43 -42
- package/IO/XML/XMLReader.js +262 -304
- package/IO/XML/XMLWriter/Constants.js +3 -3
- package/IO/XML/XMLWriter.js +70 -84
- package/IO/XML.js +6 -6
- package/IO/index.js +5 -5
- package/Imaging/Core/AbstractImageInterpolator/Constants.js +4 -4
- package/Imaging/Core/AbstractImageInterpolator/InterpolationInfo.js +30 -27
- package/Imaging/Core/AbstractImageInterpolator.js +74 -87
- package/Imaging/Core/ImageInterpolator.js +201 -252
- package/Imaging/Core/ImagePointDataIterator.js +96 -122
- package/Imaging/Core/ImageReslice/Constants.js +2 -2
- package/Imaging/Core/ImageReslice.js +327 -464
- package/Imaging/Core.js +4 -4
- package/Imaging/Hybrid/SampleFunction.js +58 -51
- package/Imaging/Hybrid.js +1 -1
- package/Imaging/index.js +2 -2
- package/Interaction/Animations/TimeStepBasedAnimationHandler.js +39 -54
- package/Interaction/Manipulators/CompositeCameraManipulator.js +22 -13
- package/Interaction/Manipulators/CompositeGestureManipulator.js +31 -43
- package/Interaction/Manipulators/CompositeKeyboardManipulator.js +15 -11
- package/Interaction/Manipulators/CompositeMouseManipulator.js +27 -33
- package/Interaction/Manipulators/CompositeVRManipulator.js +22 -15
- package/Interaction/Manipulators/GestureCameraManipulator.js +54 -36
- package/Interaction/Manipulators/KeyboardCameraManipulator.js +95 -97
- package/Interaction/Manipulators/MouseBoxSelectorManipulator.js +70 -89
- package/Interaction/Manipulators/MouseCameraAxisRotateManipulator.js +67 -54
- package/Interaction/Manipulators/MouseCameraSliceManipulator.js +40 -38
- package/Interaction/Manipulators/MouseCameraTrackballFirstPersonManipulator.js +83 -68
- package/Interaction/Manipulators/MouseCameraTrackballMultiRotateManipulator.js +32 -28
- package/Interaction/Manipulators/MouseCameraTrackballPanManipulator.js +47 -40
- package/Interaction/Manipulators/MouseCameraTrackballRollManipulator.js +55 -43
- package/Interaction/Manipulators/MouseCameraTrackballRotateManipulator.js +56 -46
- package/Interaction/Manipulators/MouseCameraTrackballZoomManipulator.js +41 -46
- package/Interaction/Manipulators/MouseCameraTrackballZoomToMouseManipulator.js +29 -27
- package/Interaction/Manipulators/MouseCameraUnicamManipulator.js +123 -146
- package/Interaction/Manipulators/MouseCameraUnicamRotateManipulator.js +144 -166
- package/Interaction/Manipulators/MouseRangeManipulator.js +127 -132
- package/Interaction/Manipulators/VRButtonPanManipulator.js +33 -23
- package/Interaction/Manipulators.js +21 -21
- package/Interaction/Misc/DeviceOrientationToCamera.js +25 -47
- package/Interaction/Misc.js +1 -1
- package/Interaction/Style/InteractorStyleImage.js +101 -121
- package/Interaction/Style/InteractorStyleMPRSlice.js +111 -128
- package/Interaction/Style/InteractorStyleManipulator/Presets.js +9 -17
- package/Interaction/Style/InteractorStyleManipulator.js +254 -329
- package/Interaction/Style/InteractorStyleRemoteMouse.js +195 -180
- package/Interaction/Style/InteractorStyleTrackballCamera.js +154 -157
- package/Interaction/Style/InteractorStyleUnicam.js +30 -38
- package/Interaction/Style.js +5 -5
- package/Interaction/UI/CornerAnnotation/CornerAnnotation.module.css.js +1 -1
- package/Interaction/UI/CornerAnnotation.js +65 -48
- package/Interaction/UI/FPSMonitor.js +104 -105
- package/Interaction/UI/Icons.js +1 -1
- package/Interaction/UI/Slider/Constants.js +2 -2
- package/Interaction/UI/Slider.js +78 -95
- package/Interaction/UI/VolumeController.js +104 -97
- package/Interaction/UI.js +5 -5
- package/Interaction/Widgets/OrientationMarkerWidget/Constants.js +2 -2
- package/Interaction/Widgets/OrientationMarkerWidget.js +90 -135
- package/Interaction/Widgets/PiecewiseGaussianWidget/ComputeHistogram.worker.js +0 -3
- package/Interaction/Widgets/PiecewiseGaussianWidget.js +381 -498
- package/Interaction/Widgets.js +2 -2
- package/Interaction/index.js +5 -5
- package/Proxy/Animation/AbstractAnimationProxy.js +22 -15
- package/Proxy/Animation/AnimationProxyManager.js +43 -51
- package/Proxy/Animation/TimeStepBasedAnimationHandlerProxy.js +26 -19
- package/Proxy/Core/AbstractRepresentationProxy.js +97 -151
- package/Proxy/Core/LookupTableProxy/Constants.js +4 -4
- package/Proxy/Core/LookupTableProxy.js +49 -52
- package/Proxy/Core/PiecewiseFunctionProxy/Constants.js +4 -4
- package/Proxy/Core/PiecewiseFunctionProxy.js +63 -72
- package/Proxy/Core/ProxyManager/core.js +83 -106
- package/Proxy/Core/ProxyManager/properties.js +53 -76
- package/Proxy/Core/ProxyManager/state.js +100 -110
- package/Proxy/Core/ProxyManager/view.js +45 -55
- package/Proxy/Core/ProxyManager.js +16 -8
- package/Proxy/Core/SourceProxy.js +41 -38
- package/Proxy/Core/View2DProxy.js +143 -199
- package/Proxy/Core/ViewProxy.js +223 -269
- package/Proxy/Core.js +7 -7
- package/Proxy/Representations/GeometryRepresentationProxy.js +34 -20
- package/Proxy/Representations/GlyphRepresentationProxy.js +42 -41
- package/Proxy/Representations/MoleculeRepresentationProxy.js +32 -22
- package/Proxy/Representations/ResliceRepresentationProxy.js +48 -32
- package/Proxy/Representations/SkyboxRepresentationProxy.js +30 -29
- package/Proxy/Representations/SliceRepresentationProxy.js +93 -112
- package/Proxy/Representations/SlicedGeometryRepresentationProxy.js +46 -42
- package/Proxy/Representations/VolumeRepresentationProxy.js +108 -133
- package/Proxy/Representations.js +7 -7
- package/Proxy/index.js +2 -2
- package/README.md +1 -1
- package/Rendering/Core/AbstractImageMapper/helper.js +44 -49
- package/Rendering/Core/AbstractImageMapper.js +18 -19
- package/Rendering/Core/AbstractMapper.js +39 -55
- package/Rendering/Core/AbstractMapper3D.js +26 -31
- package/Rendering/Core/AbstractPicker.js +25 -21
- package/Rendering/Core/Actor.js +71 -93
- package/Rendering/Core/Actor2D.js +64 -78
- package/Rendering/Core/AnnotatedCubeActor/Presets.js +5 -11
- package/Rendering/Core/AnnotatedCubeActor.js +94 -79
- package/Rendering/Core/AxesActor.js +65 -87
- package/Rendering/Core/Camera.js +246 -271
- package/Rendering/Core/CellPicker.js +125 -148
- package/Rendering/Core/ColorTransferFunction/ColorMaps.js +20 -21
- package/Rendering/Core/ColorTransferFunction/ColorMapsLite.js +20 -21
- package/Rendering/Core/ColorTransferFunction/Constants.js +4 -4
- package/Rendering/Core/ColorTransferFunction.js +460 -546
- package/Rendering/Core/Coordinate/Constants.js +2 -2
- package/Rendering/Core/Coordinate.js +119 -198
- package/Rendering/Core/CubeAxesActor.js +294 -320
- package/Rendering/Core/Follower.js +46 -45
- package/Rendering/Core/Glyph3DMapper/Constants.js +4 -4
- package/Rendering/Core/Glyph3DMapper.js +96 -148
- package/Rendering/Core/HardwareSelector.js +36 -69
- package/Rendering/Core/ImageArrayMapper.js +87 -126
- package/Rendering/Core/ImageCPRMapper.js +134 -209
- package/Rendering/Core/ImageMapper/Constants.js +2 -2
- package/Rendering/Core/ImageMapper.js +85 -144
- package/Rendering/Core/ImageProperty/Constants.js +2 -2
- package/Rendering/Core/ImageProperty.js +66 -81
- package/Rendering/Core/ImageResliceMapper/Constants.js +2 -2
- package/Rendering/Core/ImageResliceMapper.js +36 -29
- package/Rendering/Core/ImageSlice.js +85 -127
- package/Rendering/Core/InteractorObserver.js +82 -73
- package/Rendering/Core/InteractorStyle/Constants.js +2 -2
- package/Rendering/Core/InteractorStyle.js +56 -58
- package/Rendering/Core/Light.js +43 -49
- package/Rendering/Core/Mapper/CoincidentTopologyHelper.js +37 -48
- package/Rendering/Core/Mapper/Constants.js +6 -6
- package/Rendering/Core/Mapper/Static.js +15 -12
- package/Rendering/Core/Mapper.js +194 -259
- package/Rendering/Core/Mapper2D.js +61 -100
- package/Rendering/Core/Picker.js +124 -143
- package/Rendering/Core/PixelSpaceCallbackMapper.js +40 -37
- package/Rendering/Core/PointPicker.js +68 -79
- package/Rendering/Core/Prop/Constants.js +2 -2
- package/Rendering/Core/Prop.js +58 -106
- package/Rendering/Core/Prop3D.js +54 -83
- package/Rendering/Core/Property/Constants.js +6 -6
- package/Rendering/Core/Property.js +45 -74
- package/Rendering/Core/Property2D/Constants.js +2 -2
- package/Rendering/Core/Property2D.js +33 -42
- package/Rendering/Core/RenderWindow.js +70 -82
- package/Rendering/Core/RenderWindowInteractor/Constants.js +7 -7
- package/Rendering/Core/RenderWindowInteractor.js +324 -439
- package/Rendering/Core/Renderer.js +192 -256
- package/Rendering/Core/ScalarBarActor.js +267 -272
- package/Rendering/Core/Skybox.js +26 -24
- package/Rendering/Core/SphereMapper.js +22 -12
- package/Rendering/Core/StickMapper.js +22 -12
- package/Rendering/Core/SurfaceLICInterface/Constants.js +6 -6
- package/Rendering/Core/SurfaceLICInterface.js +13 -9
- package/Rendering/Core/SurfaceLICMapper.js +23 -15
- package/Rendering/Core/Texture.js +99 -141
- package/Rendering/Core/Viewport.js +60 -88
- package/Rendering/Core/Volume.js +55 -77
- package/Rendering/Core/VolumeMapper/Constants.js +4 -4
- package/Rendering/Core/VolumeMapper.js +59 -91
- package/Rendering/Core/VolumeProperty/Constants.js +4 -4
- package/Rendering/Core/VolumeProperty.js +78 -115
- package/Rendering/Core.js +47 -49
- package/Rendering/Misc/CanvasView.js +62 -61
- package/Rendering/Misc/FullScreenRenderWindow.js +60 -62
- package/Rendering/Misc/GenericRenderWindow.js +48 -37
- package/Rendering/Misc/RemoteView.js +86 -80
- package/Rendering/Misc/RenderWindowWithControlBar.js +54 -48
- package/Rendering/Misc/SynchronizableRenderWindow/BehaviorManager/CameraSynchronizer.js +43 -51
- package/Rendering/Misc/SynchronizableRenderWindow/BehaviorManager.js +52 -82
- package/Rendering/Misc/SynchronizableRenderWindow/ObjectManager.js +258 -308
- package/Rendering/Misc/SynchronizableRenderWindow.js +133 -163
- package/Rendering/Misc/TextureLODsDownloader.js +72 -74
- package/Rendering/Misc.js +7 -7
- package/Rendering/OpenGL/Actor.js +57 -68
- package/Rendering/OpenGL/Actor2D.js +56 -56
- package/Rendering/OpenGL/BufferObject/Constants.js +2 -2
- package/Rendering/OpenGL/BufferObject.js +50 -65
- package/Rendering/OpenGL/Camera.js +35 -29
- package/Rendering/OpenGL/CellArrayBufferObject.js +119 -149
- package/Rendering/OpenGL/Convolution2DPass.js +87 -81
- package/Rendering/OpenGL/CubeAxesActor.js +28 -21
- package/Rendering/OpenGL/ForwardPass.js +53 -64
- package/Rendering/OpenGL/Framebuffer.js +61 -101
- package/Rendering/OpenGL/Glyph3DMapper.js +165 -196
- package/Rendering/OpenGL/HardwareSelector/Constants.js +2 -2
- package/Rendering/OpenGL/HardwareSelector.js +272 -397
- package/Rendering/OpenGL/Helper.js +58 -73
- package/Rendering/OpenGL/ImageCPRMapper.js +339 -421
- package/Rendering/OpenGL/ImageMapper.js +268 -361
- package/Rendering/OpenGL/ImageResliceMapper.js +306 -438
- package/Rendering/OpenGL/ImageSlice.js +48 -54
- package/Rendering/OpenGL/OrderIndependentTranslucentPass.js +102 -84
- package/Rendering/OpenGL/PixelSpaceCallbackMapper.js +43 -42
- package/Rendering/OpenGL/PolyDataMapper.js +358 -492
- package/Rendering/OpenGL/PolyDataMapper2D.js +153 -205
- package/Rendering/OpenGL/RadialDistortionPass.js +86 -89
- package/Rendering/OpenGL/RenderWindow/Constants.js +2 -2
- package/Rendering/OpenGL/RenderWindow/ContextProxy.js +20 -29
- package/Rendering/OpenGL/RenderWindow.js +356 -510
- package/Rendering/OpenGL/Renderer.js +77 -89
- package/Rendering/OpenGL/ReplacementShaderMapper.js +28 -46
- package/Rendering/OpenGL/ScalarBarActor.js +28 -21
- package/Rendering/OpenGL/Shader.js +37 -31
- package/Rendering/OpenGL/ShaderCache.js +67 -74
- package/Rendering/OpenGL/ShaderProgram.js +136 -248
- package/Rendering/OpenGL/Skybox.js +99 -60
- package/Rendering/OpenGL/SphereMapper.js +94 -108
- package/Rendering/OpenGL/StickMapper.js +110 -114
- package/Rendering/OpenGL/SurfaceLIC/LineIntegralConvolution2D/pingpong.js +91 -157
- package/Rendering/OpenGL/SurfaceLIC/LineIntegralConvolution2D.js +142 -151
- package/Rendering/OpenGL/SurfaceLIC/SurfaceLICInterface.js +142 -216
- package/Rendering/OpenGL/SurfaceLIC/SurfaceLICMapper.js +79 -100
- package/Rendering/OpenGL/SurfaceLIC.js +2 -2
- package/Rendering/OpenGL/Texture/Constants.js +4 -4
- package/Rendering/OpenGL/Texture.js +443 -608
- package/Rendering/OpenGL/TextureUnitManager.js +47 -43
- package/Rendering/OpenGL/VertexArrayObject.js +92 -131
- package/Rendering/OpenGL/ViewNodeFactory.js +25 -13
- package/Rendering/OpenGL/Volume.js +38 -34
- package/Rendering/OpenGL/VolumeMapper.js +437 -547
- package/Rendering/OpenGL.js +28 -28
- package/Rendering/SceneGraph/RenderPass.js +34 -31
- package/Rendering/SceneGraph/RenderWindowViewNode.js +68 -94
- package/Rendering/SceneGraph/ViewNode.js +82 -111
- package/Rendering/SceneGraph/ViewNodeFactory.js +31 -26
- package/Rendering/SceneGraph.js +4 -4
- package/Rendering/WebGPU/Actor.js +49 -49
- package/Rendering/WebGPU/Actor2D.js +45 -44
- package/Rendering/WebGPU/BindGroup.js +43 -50
- package/Rendering/WebGPU/Buffer.js +41 -50
- package/Rendering/WebGPU/BufferManager/Constants.js +4 -4
- package/Rendering/WebGPU/BufferManager.js +111 -141
- package/Rendering/WebGPU/Camera.js +65 -67
- package/Rendering/WebGPU/CellArrayMapper.js +621 -388
- package/Rendering/WebGPU/CubeAxesActor.js +28 -19
- package/Rendering/WebGPU/Device.js +78 -133
- package/Rendering/WebGPU/ForwardPass.js +75 -72
- package/Rendering/WebGPU/FullScreenQuad.js +25 -18
- package/Rendering/WebGPU/Glyph3DMapper.js +62 -74
- package/Rendering/WebGPU/HardwareSelectionPass.js +45 -38
- package/Rendering/WebGPU/HardwareSelector.js +200 -276
- package/Rendering/WebGPU/ImageMapper.js +180 -171
- package/Rendering/WebGPU/ImageSlice.js +45 -44
- package/Rendering/WebGPU/IndexBuffer.js +166 -200
- package/Rendering/WebGPU/OpaquePass.js +37 -36
- package/Rendering/WebGPU/OrderIndependentTranslucentPass.js +72 -45
- package/Rendering/WebGPU/Pipeline.js +37 -51
- package/Rendering/WebGPU/PixelSpaceCallbackMapper.js +27 -19
- package/Rendering/WebGPU/PolyDataMapper.js +50 -53
- package/Rendering/WebGPU/PolyDataMapper2D.js +39 -39
- package/Rendering/WebGPU/RenderEncoder.js +68 -88
- package/Rendering/WebGPU/RenderWindow.js +262 -376
- package/Rendering/WebGPU/Renderer.js +224 -208
- package/Rendering/WebGPU/Sampler.js +27 -21
- package/Rendering/WebGPU/ScalarBarActor.js +28 -19
- package/Rendering/WebGPU/ShaderCache.js +43 -41
- package/Rendering/WebGPU/ShaderDescription.js +52 -59
- package/Rendering/WebGPU/ShaderModule.js +26 -17
- package/Rendering/WebGPU/SimpleMapper.js +185 -121
- package/Rendering/WebGPU/SphereMapper.js +200 -130
- package/Rendering/WebGPU/StickMapper.js +289 -152
- package/Rendering/WebGPU/StorageBuffer.js +100 -115
- package/Rendering/WebGPU/Texture.js +79 -99
- package/Rendering/WebGPU/TextureManager.js +52 -54
- package/Rendering/WebGPU/TextureView.js +40 -43
- package/Rendering/WebGPU/Types.js +53 -70
- package/Rendering/WebGPU/UniformBuffer.js +158 -184
- package/Rendering/WebGPU/VertexInput.js +64 -90
- package/Rendering/WebGPU/ViewNodeFactory.js +25 -13
- package/Rendering/WebGPU/Volume.js +52 -51
- package/Rendering/WebGPU/VolumePass.js +218 -239
- package/Rendering/WebGPU/VolumePassFSQ.js +625 -306
- package/Rendering/WebGPU.js +1 -1
- package/Rendering/index.js +5 -5
- package/Widgets/Core/AbstractWidget/Constants.js +2 -2
- package/Widgets/Core/AbstractWidget.js +49 -58
- package/Widgets/Core/AbstractWidgetFactory.js +101 -122
- package/Widgets/Core/StateBuilder/boundsMixin.js +23 -28
- package/Widgets/Core/StateBuilder/color3Mixin.js +10 -7
- package/Widgets/Core/StateBuilder/colorMixin.js +10 -6
- package/Widgets/Core/StateBuilder/cornerMixin.js +16 -15
- package/Widgets/Core/StateBuilder/directionMixin.js +20 -18
- package/Widgets/Core/StateBuilder/manipulatorMixin.js +26 -18
- package/Widgets/Core/StateBuilder/nameMixin.js +10 -6
- package/Widgets/Core/StateBuilder/orientationMixin.js +19 -16
- package/Widgets/Core/StateBuilder/originMixin.js +25 -32
- package/Widgets/Core/StateBuilder/scale1Mixin.js +10 -6
- package/Widgets/Core/StateBuilder/scale3Mixin.js +10 -6
- package/Widgets/Core/StateBuilder/shapeMixin.js +12 -6
- package/Widgets/Core/StateBuilder/textMixin.js +10 -6
- package/Widgets/Core/StateBuilder/visibleMixin.js +10 -6
- package/Widgets/Core/StateBuilder.js +120 -149
- package/Widgets/Core/WidgetManager/Constants.js +7 -7
- package/Widgets/Core/WidgetManager.js +249 -421
- package/Widgets/Core/WidgetState.js +48 -57
- package/Widgets/Core.js +5 -5
- package/Widgets/Manipulators/AbstractManipulator.js +20 -14
- package/Widgets/Manipulators/CPRManipulator.js +55 -71
- package/Widgets/Manipulators/LineManipulator.js +31 -28
- package/Widgets/Manipulators/PickerManipulator.d.ts +48 -0
- package/Widgets/Manipulators/PickerManipulator.js +65 -0
- package/Widgets/Manipulators/PlaneManipulator.js +26 -23
- package/Widgets/Manipulators/TrackballManipulator.js +39 -35
- package/Widgets/Manipulators.js +4 -2
- package/Widgets/Representations/ArrowHandleRepresentation.js +148 -162
- package/Widgets/Representations/CircleContextRepresentation.js +44 -38
- package/Widgets/Representations/ContextRepresentation.js +17 -14
- package/Widgets/Representations/ConvexFaceContextRepresentation.js +50 -47
- package/Widgets/Representations/CroppingOutlineRepresentation.js +38 -27
- package/Widgets/Representations/CubeHandleRepresentation.js +21 -18
- package/Widgets/Representations/GlyphRepresentation.js +107 -152
- package/Widgets/Representations/HandleRepresentation.js +17 -14
- package/Widgets/Representations/ImplicitPlaneRepresentation.js +97 -91
- package/Widgets/Representations/LineHandleRepresentation.js +44 -41
- package/Widgets/Representations/OutlineContextRepresentation.js +42 -36
- package/Widgets/Representations/PolyLineRepresentation.js +60 -75
- package/Widgets/Representations/RectangleContextRepresentation.js +42 -37
- package/Widgets/Representations/SphereContextRepresentation.js +19 -27
- package/Widgets/Representations/SphereHandleRepresentation.js +31 -27
- package/Widgets/Representations/SplineContextRepresentation.js +46 -70
- package/Widgets/Representations/WidgetRepresentation/Constants.js +2 -2
- package/Widgets/Representations/WidgetRepresentation.js +99 -134
- package/Widgets/Representations.js +13 -13
- package/Widgets/Widgets3D/AngleWidget/behavior.js +41 -63
- package/Widgets/Widgets3D/AngleWidget.js +40 -38
- package/Widgets/Widgets3D/DistanceWidget/behavior.js +40 -61
- package/Widgets/Widgets3D/DistanceWidget.js +38 -36
- package/Widgets/Widgets3D/EllipseWidget/behavior.js +14 -19
- package/Widgets/Widgets3D/EllipseWidget/state.js +4 -2
- package/Widgets/Widgets3D/EllipseWidget.js +37 -26
- package/Widgets/Widgets3D/ImageCroppingWidget/behavior.js +26 -56
- package/Widgets/Widgets3D/ImageCroppingWidget/helpers.js +14 -17
- package/Widgets/Widgets3D/ImageCroppingWidget/state.js +20 -16
- package/Widgets/Widgets3D/ImageCroppingWidget.js +80 -98
- package/Widgets/Widgets3D/ImplicitPlaneWidget.js +55 -77
- package/Widgets/Widgets3D/InteractiveOrientationWidget/behavior.js +17 -18
- package/Widgets/Widgets3D/InteractiveOrientationWidget/state.js +15 -7
- package/Widgets/Widgets3D/InteractiveOrientationWidget.js +30 -29
- package/Widgets/Widgets3D/LabelWidget/behavior.js +37 -62
- package/Widgets/Widgets3D/LabelWidget.js +31 -25
- package/Widgets/Widgets3D/LineWidget/Constants.js +8 -8
- package/Widgets/Widgets3D/LineWidget/behavior.js +77 -114
- package/Widgets/Widgets3D/LineWidget/helpers.js +13 -20
- package/Widgets/Widgets3D/LineWidget/state.js +2 -1
- package/Widgets/Widgets3D/LineWidget.js +39 -35
- package/Widgets/Widgets3D/PaintWidget/behavior.js +24 -59
- package/Widgets/Widgets3D/PaintWidget.js +39 -37
- package/Widgets/Widgets3D/PolyLineWidget/behavior.js +44 -68
- package/Widgets/Widgets3D/PolyLineWidget.js +36 -31
- package/Widgets/Widgets3D/RectangleWidget/behavior.js +6 -11
- package/Widgets/Widgets3D/RectangleWidget/state.js +4 -2
- package/Widgets/Widgets3D/RectangleWidget.js +37 -25
- package/Widgets/Widgets3D/ResliceCursorWidget/Constants.js +35 -21
- package/Widgets/Widgets3D/ResliceCursorWidget/behavior.js +133 -209
- package/Widgets/Widgets3D/ResliceCursorWidget/cprBehavior.js +26 -41
- package/Widgets/Widgets3D/ResliceCursorWidget/helpers.js +89 -116
- package/Widgets/Widgets3D/ResliceCursorWidget/state.js +33 -40
- package/Widgets/Widgets3D/ResliceCursorWidget.js +186 -227
- package/Widgets/Widgets3D/SeedWidget/behavior.js +82 -0
- package/Widgets/Widgets3D/SeedWidget/state.js +18 -0
- package/Widgets/Widgets3D/SeedWidget.d.ts +44 -0
- package/Widgets/Widgets3D/SeedWidget.js +43 -0
- package/Widgets/Widgets3D/ShapeWidget/Constants.js +19 -19
- package/Widgets/Widgets3D/ShapeWidget/behavior.js +150 -252
- package/Widgets/Widgets3D/ShapeWidget.js +24 -27
- package/Widgets/Widgets3D/SphereWidget/behavior.js +35 -69
- package/Widgets/Widgets3D/SphereWidget/state.js +9 -5
- package/Widgets/Widgets3D/SphereWidget.js +34 -44
- package/Widgets/Widgets3D/SplineWidget/behavior.js +85 -120
- package/Widgets/Widgets3D/SplineWidget.js +43 -39
- package/Widgets/Widgets3D.js +15 -15
- package/Widgets/index.js +4 -4
- package/_virtual/rollup-plugin-worker-loader__module_Sources/Filters/General/PaintFilter/PaintFilter.worker.js +95 -207
- package/_virtual/rollup-plugin-worker-loader__module_Sources/Interaction/Widgets/PiecewiseGaussianWidget/ComputeHistogram.worker.js +0 -3
- package/favicon.js +5 -6
- package/index.d.ts +4 -2
- package/index.js +4 -3
- package/macros.js +4 -1931
- package/macros2.js +1684 -0
- package/package.json +6 -6
- package/vtk.js +18 -31
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
3
|
-
import macro from '../../macros.js';
|
|
1
|
+
import { m as macro } from '../../macros2.js';
|
|
4
2
|
import vtkAbstractWidgetFactory from '../Core/AbstractWidgetFactory.js';
|
|
5
3
|
import vtkPlane from '../../Common/DataModel/Plane.js';
|
|
6
4
|
import vtkPlaneSource from '../../Filters/Sources/PlaneSource.js';
|
|
@@ -16,17 +14,20 @@ import { ViewTypes } from '../Core/WidgetManager/Constants.js';
|
|
|
16
14
|
import { mat4 } from 'gl-matrix';
|
|
17
15
|
import vtkMatrixBuilder from '../../Common/Core/MatrixBuilder.js';
|
|
18
16
|
|
|
19
|
-
|
|
17
|
+
const VTK_INT_MAX = 2147483647;
|
|
18
|
+
const {
|
|
19
|
+
vtkErrorMacro
|
|
20
|
+
} = macro;
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
var VTK_INT_MAX = 2147483647;
|
|
23
|
-
var vtkErrorMacro = macro.vtkErrorMacro; // ----------------------------------------------------------------------------
|
|
22
|
+
// ----------------------------------------------------------------------------
|
|
24
23
|
// Factory
|
|
25
24
|
// ----------------------------------------------------------------------------
|
|
26
25
|
|
|
27
26
|
function vtkResliceCursorWidget(publicAPI, model) {
|
|
28
27
|
model.classHierarchy.push('vtkResliceCursorWidget');
|
|
29
|
-
model.methodsToLink = ['scaleInPixels'];
|
|
28
|
+
model.methodsToLink = ['scaleInPixels'];
|
|
29
|
+
|
|
30
|
+
// --------------------------------------------------------------------------
|
|
30
31
|
// Private methods
|
|
31
32
|
// --------------------------------------------------------------------------
|
|
32
33
|
|
|
@@ -35,25 +36,23 @@ function vtkResliceCursorWidget(publicAPI, model) {
|
|
|
35
36
|
* It does not take into account the current view normal. (always axis aligned)
|
|
36
37
|
* @param {*} viewType axial, coronal or sagittal
|
|
37
38
|
*/
|
|
38
|
-
|
|
39
39
|
function computeReslicePlaneOrigin(viewType) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
const bounds = model.widgetState.getImage().getBounds();
|
|
41
|
+
const center = publicAPI.getWidgetState().getCenter();
|
|
42
|
+
const imageCenter = model.widgetState.getImage().getCenter();
|
|
43
|
+
|
|
44
|
+
// Offset based on the center of the image and how far from it the
|
|
43
45
|
// reslice cursor is. This allows us to capture the whole image even
|
|
44
46
|
// if we resliced in awkward places.
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
for (var i = 0; i < 3; i++) {
|
|
47
|
+
const offset = [];
|
|
48
|
+
for (let i = 0; i < 3; i++) {
|
|
49
49
|
offset[i] = -Math.abs(center[i] - imageCenter[i]);
|
|
50
50
|
offset[i] *= 2; // give us room
|
|
51
|
-
}
|
|
52
|
-
// at least completely cover the viewed region
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
var planeSource = vtkPlaneSource.newInstance();
|
|
51
|
+
}
|
|
56
52
|
|
|
53
|
+
// Now set the size of the plane based on the location of the cursor so as to
|
|
54
|
+
// at least completely cover the viewed region
|
|
55
|
+
const planeSource = vtkPlaneSource.newInstance();
|
|
57
56
|
if (viewType === ViewTypes.XZ_PLANE) {
|
|
58
57
|
planeSource.setOrigin(bounds[0] + offset[0], center[1], bounds[4] + offset[2]);
|
|
59
58
|
planeSource.setPoint1(bounds[1] - offset[0], center[1], bounds[4] + offset[2]);
|
|
@@ -67,93 +66,85 @@ function vtkResliceCursorWidget(publicAPI, model) {
|
|
|
67
66
|
planeSource.setPoint1(center[0], bounds[3] - offset[1], bounds[4] + offset[2]);
|
|
68
67
|
planeSource.setPoint2(center[0], bounds[2] + offset[1], bounds[5] - offset[2]);
|
|
69
68
|
}
|
|
70
|
-
|
|
71
69
|
return planeSource;
|
|
72
70
|
}
|
|
71
|
+
|
|
73
72
|
/**
|
|
74
73
|
* Compute the offset between display reslice cursor position and
|
|
75
74
|
* display focal point position
|
|
76
75
|
* This will be used to keep the same offset between reslice cursor
|
|
77
76
|
* center and focal point when needed.
|
|
78
77
|
*/
|
|
79
|
-
|
|
80
|
-
|
|
81
78
|
function computeFocalPointOffsetFromResliceCursorCenter(viewType, renderer) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
79
|
+
const worldFocalPoint = renderer.getActiveCamera().getFocalPoint();
|
|
80
|
+
const worldResliceCenter = model.widgetState.getCenter();
|
|
81
|
+
const view = renderer.getRenderWindow().getViews()[0];
|
|
82
|
+
const dims = view.getViewportSize(renderer);
|
|
83
|
+
const aspect = dims[0] / dims[1];
|
|
84
|
+
const displayFocalPoint = renderer.worldToNormalizedDisplay(...worldFocalPoint, aspect);
|
|
85
|
+
const displayResliceCenter = renderer.worldToNormalizedDisplay(...worldResliceCenter, aspect);
|
|
86
|
+
const newOffset = subtract(displayFocalPoint, displayResliceCenter, [0, 0, 0]);
|
|
87
|
+
const cameraOffsets = model.widgetState.getCameraOffsets();
|
|
91
88
|
cameraOffsets[viewType] = newOffset;
|
|
92
89
|
model.widgetState.setCameraOffsets(cameraOffsets);
|
|
93
90
|
}
|
|
94
|
-
|
|
95
91
|
function updateCamera(renderer, normal, viewType, resetFocalPoint, keepCenterFocalDistance) {
|
|
96
92
|
// When the reslice plane is changed, update the camera to look at the
|
|
97
93
|
// normal to the reslice plane.
|
|
98
|
-
var focalPoint = renderer.getActiveCamera().getFocalPoint();
|
|
99
|
-
var distance = renderer.getActiveCamera().getDistance();
|
|
100
|
-
var estimatedCameraPosition = multiplyAccumulate(focalPoint, normal, distance, [0, 0, 0]);
|
|
101
|
-
var newFocalPoint = focalPoint;
|
|
102
94
|
|
|
95
|
+
const focalPoint = renderer.getActiveCamera().getFocalPoint();
|
|
96
|
+
const distance = renderer.getActiveCamera().getDistance();
|
|
97
|
+
const estimatedCameraPosition = multiplyAccumulate(focalPoint, normal, distance, [0, 0, 0]);
|
|
98
|
+
let newFocalPoint = focalPoint;
|
|
103
99
|
if (resetFocalPoint) {
|
|
104
100
|
// intersect with the plane to get updated focal point
|
|
105
|
-
|
|
101
|
+
const intersection = vtkPlane.intersectWithLine(focalPoint, estimatedCameraPosition, model.widgetState.getCenter(),
|
|
102
|
+
// reslice cursor center
|
|
106
103
|
normal);
|
|
107
104
|
newFocalPoint = intersection.x;
|
|
108
|
-
}
|
|
109
|
-
// distance from the reslice center
|
|
110
|
-
|
|
105
|
+
}
|
|
111
106
|
|
|
107
|
+
// Update the estimated focal point so that it will be at the same
|
|
108
|
+
// distance from the reslice center
|
|
112
109
|
if (keepCenterFocalDistance) {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
110
|
+
const worldResliceCenter = model.widgetState.getCenter();
|
|
111
|
+
const view = renderer.getRenderWindow().getViews()[0];
|
|
112
|
+
const dims = view.getViewportSize(renderer);
|
|
113
|
+
const aspect = dims[0] / dims[1];
|
|
114
|
+
const displayResliceCenter = renderer.worldToNormalizedDisplay(...worldResliceCenter, aspect);
|
|
115
|
+
const realOffset = model.widgetState.getCameraOffsets()[viewType];
|
|
116
|
+
const displayFocal = add(displayResliceCenter, realOffset, [0, 0, 0]);
|
|
117
|
+
const worldFocal = renderer.normalizedDisplayToWorld(...displayFocal, aspect);
|
|
118
|
+
|
|
119
|
+
// Reproject focal point on slice in order to keep it on the
|
|
121
120
|
// same plane as the reslice cursor center
|
|
122
|
-
|
|
123
|
-
var intersection2 = vtkPlane.intersectWithLine(worldFocal, estimatedCameraPosition, worldResliceCenter, normal);
|
|
121
|
+
const intersection2 = vtkPlane.intersectWithLine(worldFocal, estimatedCameraPosition, worldResliceCenter, normal);
|
|
124
122
|
newFocalPoint[0] = intersection2.x[0];
|
|
125
123
|
newFocalPoint[1] = intersection2.x[1];
|
|
126
124
|
newFocalPoint[2] = intersection2.x[2];
|
|
127
125
|
}
|
|
128
|
-
|
|
129
126
|
renderer.getActiveCamera().setFocalPoint(newFocalPoint[0], newFocalPoint[1], newFocalPoint[2]);
|
|
130
|
-
|
|
131
|
-
renderer.getActiveCamera().setPosition(newCameraPosition[0], newCameraPosition[1], newCameraPosition[2]);
|
|
132
|
-
// Renderer may not have yet actor bounds
|
|
133
|
-
|
|
134
|
-
var bounds = model.widgetState.getImage().getBounds();
|
|
127
|
+
const newCameraPosition = multiplyAccumulate(newFocalPoint, normal, distance, [0, 0, 0]);
|
|
128
|
+
renderer.getActiveCamera().setPosition(newCameraPosition[0], newCameraPosition[1], newCameraPosition[2]);
|
|
135
129
|
|
|
130
|
+
// Don't clip away any part of the data.
|
|
131
|
+
// Renderer may not have yet actor bounds
|
|
132
|
+
const bounds = model.widgetState.getImage().getBounds();
|
|
136
133
|
if (resetFocalPoint) {
|
|
137
134
|
renderer.resetCamera(bounds);
|
|
138
135
|
}
|
|
139
|
-
|
|
140
136
|
renderer.resetCameraClippingRange(bounds);
|
|
141
137
|
}
|
|
138
|
+
|
|
142
139
|
/**
|
|
143
140
|
* Convenient function to return the widget for a given viewType
|
|
144
141
|
* @param {string} viewType
|
|
145
142
|
* @returns the widget instanced in the given viewType.
|
|
146
143
|
*/
|
|
147
|
-
|
|
148
|
-
|
|
149
144
|
function findWidgetForViewType(viewType) {
|
|
150
|
-
return publicAPI.getViewIds().map(
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
});
|
|
154
|
-
}).find(function (widget) {
|
|
155
|
-
return widget.getViewType() === viewType;
|
|
156
|
-
});
|
|
145
|
+
return publicAPI.getViewIds().map(viewId => publicAPI.getWidgetForView({
|
|
146
|
+
viewId
|
|
147
|
+
})).find(widget => widget.getViewType() === viewType);
|
|
157
148
|
}
|
|
158
149
|
/**
|
|
159
150
|
* Convenient function to return the ResliceCursorRepresentation for a given viewType
|
|
@@ -161,31 +152,30 @@ function vtkResliceCursorWidget(publicAPI, model) {
|
|
|
161
152
|
* @returns an array of 3 representations (for line handles, rotation handles, center handle)
|
|
162
153
|
* or an empty array if the widget has not yet been added to the view type.
|
|
163
154
|
*/
|
|
164
|
-
|
|
165
|
-
|
|
166
155
|
function findRepresentationsForViewType(viewType) {
|
|
167
|
-
|
|
156
|
+
const widgetForViewType = findWidgetForViewType(viewType);
|
|
168
157
|
return widgetForViewType ? widgetForViewType.getRepresentations() : [];
|
|
169
|
-
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// --------------------------------------------------------------------------
|
|
170
161
|
// initialization
|
|
171
162
|
// --------------------------------------------------------------------------
|
|
172
163
|
|
|
173
|
-
|
|
174
|
-
publicAPI.getRepresentationsForViewType = function (viewType) {
|
|
164
|
+
publicAPI.getRepresentationsForViewType = viewType => {
|
|
175
165
|
switch (viewType) {
|
|
176
166
|
case ViewTypes.XY_PLANE:
|
|
177
167
|
case ViewTypes.XZ_PLANE:
|
|
178
168
|
case ViewTypes.YZ_PLANE:
|
|
179
169
|
return [{
|
|
180
170
|
builder: vtkLineHandleRepresentation,
|
|
181
|
-
labels: [
|
|
171
|
+
labels: [`lineIn${viewTypeToPlaneName[viewType]}`],
|
|
182
172
|
initialValues: {
|
|
183
173
|
useActiveColor: false,
|
|
184
174
|
scaleInPixels: model.scaleInPixels
|
|
185
175
|
}
|
|
186
176
|
}, {
|
|
187
177
|
builder: vtkSphereHandleRepresentation,
|
|
188
|
-
labels: [
|
|
178
|
+
labels: [`rotationIn${viewTypeToPlaneName[viewType]}`],
|
|
189
179
|
initialValues: {
|
|
190
180
|
useActiveColor: false,
|
|
191
181
|
scaleInPixels: model.scaleInPixels
|
|
@@ -198,7 +188,6 @@ function vtkResliceCursorWidget(publicAPI, model) {
|
|
|
198
188
|
scaleInPixels: model.scaleInPixels
|
|
199
189
|
}
|
|
200
190
|
}];
|
|
201
|
-
|
|
202
191
|
case ViewTypes.DEFAULT:
|
|
203
192
|
case ViewTypes.GEOMETRY:
|
|
204
193
|
case ViewTypes.SLICE:
|
|
@@ -207,30 +196,29 @@ function vtkResliceCursorWidget(publicAPI, model) {
|
|
|
207
196
|
return [];
|
|
208
197
|
}
|
|
209
198
|
};
|
|
210
|
-
|
|
211
|
-
publicAPI.setImage = function (image) {
|
|
199
|
+
publicAPI.setImage = image => {
|
|
212
200
|
model.widgetState.setImage(image);
|
|
213
|
-
|
|
201
|
+
const center = image.getCenter();
|
|
214
202
|
model.widgetState.setCenter(center);
|
|
215
203
|
updateState(model.widgetState, model.scaleInPixels, model.rotationHandlePosition);
|
|
216
204
|
};
|
|
217
|
-
|
|
218
|
-
publicAPI.setCenter = function (center) {
|
|
205
|
+
publicAPI.setCenter = center => {
|
|
219
206
|
model.widgetState.setCenter(center);
|
|
220
207
|
updateState(model.widgetState, model.scaleInPixels, model.rotationHandlePosition);
|
|
221
208
|
publicAPI.modified();
|
|
222
|
-
};
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
// --------------------------------------------------------------------------
|
|
223
212
|
// Methods
|
|
224
213
|
// --------------------------------------------------------------------------
|
|
225
214
|
|
|
226
|
-
|
|
227
|
-
publicAPI.updateCameraPoints = function (renderer, viewType, resetFocalPoint, keepCenterFocalDistance, computeFocalPointOffset) {
|
|
215
|
+
publicAPI.updateCameraPoints = (renderer, viewType, resetFocalPoint, keepCenterFocalDistance, computeFocalPointOffset) => {
|
|
228
216
|
publicAPI.resetCamera(renderer, viewType, resetFocalPoint, keepCenterFocalDistance);
|
|
229
|
-
|
|
230
217
|
if (computeFocalPointOffset) {
|
|
231
218
|
computeFocalPointOffsetFromResliceCursorCenter(viewType, renderer);
|
|
232
219
|
}
|
|
233
220
|
};
|
|
221
|
+
|
|
234
222
|
/**
|
|
235
223
|
*
|
|
236
224
|
* @param {*} renderer
|
|
@@ -240,242 +228,213 @@ function vtkResliceCursorWidget(publicAPI, model) {
|
|
|
240
228
|
* in order to keep the same distance to the center (according to the computed focal point
|
|
241
229
|
* shift)
|
|
242
230
|
*/
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
(_renderer$getActiveCa2 = renderer.getActiveCamera()).setPosition.apply(_renderer$getActiveCa2, _toConsumableArray(estimatedCameraPosition));
|
|
261
|
-
|
|
262
|
-
renderer.getActiveCamera().setViewUp(model.widgetState.getPlanes()[viewType].viewUp); // Project focalPoint onto image plane and preserve distance
|
|
263
|
-
|
|
231
|
+
publicAPI.resetCamera = (renderer, viewType, resetFocalPoint, keepCenterFocalDistance) => {
|
|
232
|
+
const center = model.widgetState.getImage().getCenter();
|
|
233
|
+
const focalPoint = renderer.getActiveCamera().getFocalPoint();
|
|
234
|
+
const position = renderer.getActiveCamera().getPosition();
|
|
235
|
+
|
|
236
|
+
// Distance is preserved
|
|
237
|
+
const distance = Math.sqrt(distance2BetweenPoints(position, focalPoint));
|
|
238
|
+
const normal = publicAPI.getPlaneNormalFromViewType(viewType);
|
|
239
|
+
|
|
240
|
+
// ResetFocalPoint will reset focal point to the center of the image
|
|
241
|
+
const estimatedFocalPoint = resetFocalPoint ? center : focalPoint;
|
|
242
|
+
const estimatedCameraPosition = multiplyAccumulate(estimatedFocalPoint, normal, distance, [0, 0, 0]);
|
|
243
|
+
renderer.getActiveCamera().setFocalPoint(...estimatedFocalPoint);
|
|
244
|
+
renderer.getActiveCamera().setPosition(...estimatedCameraPosition);
|
|
245
|
+
renderer.getActiveCamera().setViewUp(model.widgetState.getPlanes()[viewType].viewUp);
|
|
246
|
+
|
|
247
|
+
// Project focalPoint onto image plane and preserve distance
|
|
264
248
|
updateCamera(renderer, normal, viewType, resetFocalPoint, keepCenterFocalDistance);
|
|
265
249
|
};
|
|
266
|
-
|
|
267
|
-
publicAPI.getPlaneSource = function (viewType) {
|
|
250
|
+
publicAPI.getPlaneSource = viewType => {
|
|
268
251
|
// Compute original (i.e. before rotation) plane (i.e. origin, p1, p2)
|
|
269
252
|
// centered on cursor center.
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
253
|
+
const planeSource = computeReslicePlaneOrigin(viewType);
|
|
254
|
+
const {
|
|
255
|
+
normal,
|
|
256
|
+
viewUp
|
|
257
|
+
} = model.widgetState.getPlanes()[viewType];
|
|
258
|
+
// Adapt plane orientation in order to fit the correct viewUp
|
|
274
259
|
// so that the rotations will be more understandable than now.
|
|
260
|
+
transformPlane(planeSource, model.widgetState.getCenter(), normal, viewUp);
|
|
275
261
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
var boundedP1 = _toConsumableArray(planeSource.getPoint1());
|
|
281
|
-
|
|
282
|
-
var boundedP2 = _toConsumableArray(planeSource.getPoint2());
|
|
283
|
-
|
|
262
|
+
// Clip to bounds
|
|
263
|
+
const boundedOrigin = [...planeSource.getOrigin()];
|
|
264
|
+
const boundedP1 = [...planeSource.getPoint1()];
|
|
265
|
+
const boundedP2 = [...planeSource.getPoint2()];
|
|
284
266
|
boundPlane(model.widgetState.getImage().getBounds(), boundedOrigin, boundedP1, boundedP2);
|
|
285
|
-
planeSource.setOrigin
|
|
286
|
-
planeSource.setPoint1
|
|
287
|
-
planeSource.setPoint2
|
|
267
|
+
planeSource.setOrigin(...boundedOrigin);
|
|
268
|
+
planeSource.setPoint1(...boundedP1);
|
|
269
|
+
planeSource.setPoint2(...boundedP2);
|
|
288
270
|
return planeSource;
|
|
289
271
|
};
|
|
290
|
-
|
|
291
|
-
publicAPI.getResliceAxes = function (viewType) {
|
|
272
|
+
publicAPI.getResliceAxes = viewType => {
|
|
292
273
|
// Compute original (i.e. before rotation) plane (i.e. origin, p1, p2)
|
|
293
274
|
// centered on cursor center.
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
275
|
+
const planeSource = publicAPI.getPlaneSource(viewType);
|
|
276
|
+
|
|
277
|
+
// TBD: use normal from planeSource ?
|
|
278
|
+
const {
|
|
279
|
+
normal
|
|
280
|
+
} = model.widgetState.getPlanes()[viewType];
|
|
281
|
+
const planeOrigin = planeSource.getOrigin();
|
|
282
|
+
const p1 = planeSource.getPoint1();
|
|
283
|
+
const planeAxis1 = [];
|
|
300
284
|
subtract(p1, planeOrigin, planeAxis1);
|
|
301
285
|
normalize(planeAxis1);
|
|
302
|
-
|
|
303
|
-
|
|
286
|
+
const p2 = planeSource.getPoint2();
|
|
287
|
+
const planeAxis2 = [];
|
|
304
288
|
subtract(p2, planeOrigin, planeAxis2);
|
|
305
289
|
normalize(planeAxis2);
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
for (var i = 0; i < 3; i++) {
|
|
290
|
+
const newResliceAxes = mat4.identity(new Float64Array(16));
|
|
291
|
+
for (let i = 0; i < 3; i++) {
|
|
309
292
|
newResliceAxes[i] = planeAxis1[i];
|
|
310
293
|
newResliceAxes[4 + i] = planeAxis2[i];
|
|
311
294
|
newResliceAxes[8 + i] = normal[i];
|
|
312
295
|
newResliceAxes[12 + i] = planeOrigin[i];
|
|
313
296
|
}
|
|
314
|
-
|
|
315
297
|
return newResliceAxes;
|
|
316
298
|
};
|
|
317
|
-
|
|
318
|
-
publicAPI.updateReslicePlane = function (imageReslice, viewType) {
|
|
299
|
+
publicAPI.updateReslicePlane = (imageReslice, viewType) => {
|
|
319
300
|
// Calculate appropriate pixel spacing for the reslicing
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
301
|
+
const spacing = model.widgetState.getImage().getSpacing();
|
|
302
|
+
const planeSource = publicAPI.getPlaneSource(viewType);
|
|
303
|
+
const newResliceAxes = publicAPI.getResliceAxes(viewType);
|
|
304
|
+
const planeOrigin = planeSource.getOrigin();
|
|
305
|
+
const p1 = planeSource.getPoint1();
|
|
306
|
+
const planeAxis1 = subtract(p1, planeOrigin, []);
|
|
307
|
+
const planeSizeX = normalize(planeAxis1);
|
|
308
|
+
const p2 = planeSource.getPoint2();
|
|
309
|
+
const planeAxis2 = subtract(p2, planeOrigin, []);
|
|
310
|
+
const planeSizeY = normalize(planeAxis2);
|
|
311
|
+
const spacingX = Math.abs(planeAxis1[0] * spacing[0]) + Math.abs(planeAxis1[1] * spacing[1]) + Math.abs(planeAxis1[2] * spacing[2]);
|
|
312
|
+
const spacingY = Math.abs(planeAxis2[0] * spacing[0]) + Math.abs(planeAxis2[1] * spacing[1]) + Math.abs(planeAxis2[2] * spacing[2]);
|
|
313
|
+
|
|
314
|
+
// Compute a new set of resliced extents
|
|
315
|
+
let extentX = 0;
|
|
316
|
+
let extentY = 0;
|
|
317
|
+
|
|
318
|
+
// Pad extent up to a power of two for efficient texture mapping
|
|
335
319
|
// make sure we're working with valid values
|
|
320
|
+
const realExtentX = spacingX === 0 ? Number.MAX_SAFE_INTEGER : planeSizeX / spacingX;
|
|
336
321
|
|
|
337
|
-
|
|
322
|
+
// Sanity check the input data:
|
|
338
323
|
// * if realExtentX is too large, extentX will wrap
|
|
339
324
|
// * if spacingX is 0, things will blow up.
|
|
340
325
|
|
|
341
|
-
|
|
326
|
+
const value = VTK_INT_MAX >> 1; // eslint-disable-line no-bitwise
|
|
342
327
|
|
|
343
328
|
if (realExtentX > value) {
|
|
344
329
|
vtkErrorMacro('Invalid X extent: ', realExtentX, ' on view type : ', viewType);
|
|
345
330
|
extentX = 0;
|
|
346
331
|
} else {
|
|
347
332
|
extentX = 1;
|
|
348
|
-
|
|
349
333
|
while (extentX < realExtentX) {
|
|
350
334
|
extentX <<= 1; // eslint-disable-line no-bitwise
|
|
351
335
|
}
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
var realExtentY = spacingY === 0 ? Number.MAX_SAFE_INTEGER : planeSizeY / spacingY;
|
|
336
|
+
}
|
|
356
337
|
|
|
338
|
+
// make sure extentY doesn't wrap during padding
|
|
339
|
+
const realExtentY = spacingY === 0 ? Number.MAX_SAFE_INTEGER : planeSizeY / spacingY;
|
|
357
340
|
if (realExtentY > value) {
|
|
358
341
|
vtkErrorMacro('Invalid Y extent:', realExtentY, ' on view type : ', viewType);
|
|
359
342
|
extentY = 0;
|
|
360
343
|
} else {
|
|
361
344
|
extentY = 1;
|
|
362
|
-
|
|
363
345
|
while (extentY < realExtentY) {
|
|
364
346
|
extentY <<= 1; // eslint-disable-line no-bitwise
|
|
365
347
|
}
|
|
366
348
|
}
|
|
367
349
|
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
350
|
+
const outputSpacingX = extentX === 0 ? 1.0 : planeSizeX / extentX;
|
|
351
|
+
const outputSpacingY = extentY === 0 ? 1.0 : planeSizeY / extentY;
|
|
352
|
+
let modified = imageReslice.setResliceAxes(newResliceAxes);
|
|
371
353
|
modified = imageReslice.setOutputSpacing([outputSpacingX, outputSpacingY, 1]) || modified;
|
|
372
354
|
modified = imageReslice.setOutputOrigin([0.5 * outputSpacingX, 0.5 * outputSpacingY, 0]) || modified;
|
|
373
355
|
modified = imageReslice.setOutputExtent([0, extentX - 1, 0, extentY - 1, 0, 0]) || modified;
|
|
374
356
|
return modified;
|
|
375
357
|
};
|
|
358
|
+
|
|
376
359
|
/**
|
|
377
360
|
* Returns a plane source with origin at cursor center and
|
|
378
361
|
* normal from the view.
|
|
379
362
|
* @param {ViewType} type: Axial, Coronal or Sagittal
|
|
380
363
|
*/
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
var origin = publicAPI.getWidgetState().getCenter();
|
|
386
|
-
var planeNormal = publicAPI.getPlaneNormalFromViewType(type);
|
|
364
|
+
publicAPI.getPlaneSourceFromViewType = type => {
|
|
365
|
+
const planeSource = vtkPlaneSource.newInstance();
|
|
366
|
+
const origin = publicAPI.getWidgetState().getCenter();
|
|
367
|
+
const planeNormal = publicAPI.getPlaneNormalFromViewType(type);
|
|
387
368
|
planeSource.setNormal(planeNormal);
|
|
388
369
|
planeSource.setOrigin(origin);
|
|
389
370
|
return planeSource;
|
|
390
371
|
};
|
|
372
|
+
publicAPI.getPlaneNormalFromViewType = viewType => publicAPI.getWidgetState().getPlanes()[viewType].normal;
|
|
391
373
|
|
|
392
|
-
publicAPI.getPlaneNormalFromViewType = function (viewType) {
|
|
393
|
-
return publicAPI.getWidgetState().getPlanes()[viewType].normal;
|
|
394
|
-
};
|
|
395
374
|
/**
|
|
396
375
|
* Returns the normals of the planes that are not viewType.
|
|
397
376
|
* @param {ViewType} viewType ViewType to extract other normals
|
|
398
377
|
*/
|
|
378
|
+
publicAPI.getOtherPlaneNormals = viewType => [ViewTypes.YZ_PLANE, ViewTypes.XZ_PLANE, ViewTypes.XY_PLANE].filter(vt => vt !== viewType).map(vt => publicAPI.getPlaneNormalFromViewType(vt));
|
|
399
379
|
|
|
400
|
-
|
|
401
|
-
publicAPI.getOtherPlaneNormals = function (viewType) {
|
|
402
|
-
return [ViewTypes.YZ_PLANE, ViewTypes.XZ_PLANE, ViewTypes.XY_PLANE].filter(function (vt) {
|
|
403
|
-
return vt !== viewType;
|
|
404
|
-
}).map(function (vt) {
|
|
405
|
-
return publicAPI.getPlaneNormalFromViewType(vt);
|
|
406
|
-
});
|
|
407
|
-
};
|
|
408
380
|
/**
|
|
409
381
|
* Return the reslice cursor matrix built as such: [YZ, XZ, XY, center]
|
|
410
382
|
*/
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
var _vtkMatrixBuilder$bui, _vtkMatrixBuilder$bui2;
|
|
415
|
-
|
|
416
|
-
var resliceMatrix = mat4.identity(new Float64Array(16));
|
|
417
|
-
|
|
418
|
-
for (var i = 0; i < 3; i++) {
|
|
383
|
+
publicAPI.getResliceMatrix = () => {
|
|
384
|
+
const resliceMatrix = mat4.identity(new Float64Array(16));
|
|
385
|
+
for (let i = 0; i < 3; i++) {
|
|
419
386
|
resliceMatrix[4 * i + 0] = publicAPI.getPlaneNormalFromViewType(ViewTypes.YZ_PLANE)[i];
|
|
420
387
|
resliceMatrix[4 * i + 1] = publicAPI.getPlaneNormalFromViewType(ViewTypes.XZ_PLANE)[i];
|
|
421
388
|
resliceMatrix[4 * i + 2] = publicAPI.getPlaneNormalFromViewType(ViewTypes.XY_PLANE)[i];
|
|
422
389
|
}
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
var m = (_vtkMatrixBuilder$bui = (_vtkMatrixBuilder$bui2 = vtkMatrixBuilder.buildFromRadian()).translate.apply(_vtkMatrixBuilder$bui2, _toConsumableArray(origin)).multiply(resliceMatrix)).translate.apply(_vtkMatrixBuilder$bui, _toConsumableArray(multiplyScalar(_toConsumableArray(origin), -1))).getMatrix();
|
|
427
|
-
|
|
390
|
+
const origin = publicAPI.getWidgetState().getCenter();
|
|
391
|
+
const m = vtkMatrixBuilder.buildFromRadian().translate(...origin).multiply(resliceMatrix).translate(...multiplyScalar([...origin], -1)).getMatrix();
|
|
428
392
|
return m;
|
|
429
393
|
};
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
return
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
return res;
|
|
437
|
-
}, {});
|
|
438
|
-
};
|
|
439
|
-
|
|
440
|
-
publicAPI.setScaleInPixels = macro.chain(publicAPI.setScaleInPixels, function (scale) {
|
|
441
|
-
publicAPI.getViewWidgets().forEach(function (w) {
|
|
442
|
-
return w.setScaleInPixels(scale);
|
|
443
|
-
});
|
|
394
|
+
publicAPI.getDisplayScaleParams = () => [ViewTypes.YZ_PLANE, ViewTypes.XZ_PLANE, ViewTypes.XY_PLANE].reduce((res, viewType) => {
|
|
395
|
+
res[viewType] = findRepresentationsForViewType(viewType)[0]?.getDisplayScaleParams?.();
|
|
396
|
+
return res;
|
|
397
|
+
}, {});
|
|
398
|
+
publicAPI.setScaleInPixels = macro.chain(publicAPI.setScaleInPixels, scale => {
|
|
399
|
+
publicAPI.getViewWidgets().forEach(w => w.setScaleInPixels(scale));
|
|
444
400
|
updateState(model.widgetState, model.scaleInPixels, model.rotationHandlePosition);
|
|
445
401
|
});
|
|
446
|
-
}
|
|
402
|
+
}
|
|
447
403
|
|
|
404
|
+
// ----------------------------------------------------------------------------
|
|
448
405
|
/**
|
|
449
406
|
* Initializes the model.
|
|
450
407
|
* @param {*} initialValues optional object of member variables. initialValues.planes is an optional list of axis names (e.g. ['X', 'Y'])
|
|
451
408
|
* @returns the initial model object
|
|
452
409
|
*/
|
|
410
|
+
const defaultValues = initialValues => ({
|
|
411
|
+
behavior: widgetBehavior,
|
|
412
|
+
widgetState: generateState(initialValues.planes),
|
|
413
|
+
rotationHandlePosition: 0.5,
|
|
414
|
+
scaleInPixels: true,
|
|
415
|
+
manipulator: vtkPlanePointManipulator.newInstance(),
|
|
416
|
+
...initialValues
|
|
417
|
+
});
|
|
453
418
|
|
|
454
|
-
|
|
455
|
-
var defaultValues = function defaultValues(initialValues) {
|
|
456
|
-
return _objectSpread({
|
|
457
|
-
behavior: widgetBehavior,
|
|
458
|
-
widgetState: generateState(initialValues.planes),
|
|
459
|
-
rotationHandlePosition: 0.5,
|
|
460
|
-
scaleInPixels: true,
|
|
461
|
-
manipulator: vtkPlanePointManipulator.newInstance()
|
|
462
|
-
}, initialValues);
|
|
463
|
-
}; // ----------------------------------------------------------------------------
|
|
464
|
-
|
|
419
|
+
// ----------------------------------------------------------------------------
|
|
465
420
|
|
|
466
421
|
function extend(publicAPI, model) {
|
|
467
|
-
|
|
422
|
+
let initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
468
423
|
Object.assign(model, defaultValues(initialValues));
|
|
469
424
|
vtkAbstractWidgetFactory.extend(publicAPI, model, initialValues);
|
|
470
425
|
macro.setGet(publicAPI, model, ['scaleInPixels', 'rotationHandlePosition', 'manipulator']);
|
|
471
426
|
vtkResliceCursorWidget(publicAPI, model);
|
|
472
|
-
}
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
// ----------------------------------------------------------------------------
|
|
473
430
|
|
|
474
|
-
|
|
431
|
+
const newInstance = macro.newInstance(extend, 'vtkResliceCursorWidget');
|
|
432
|
+
|
|
433
|
+
// ----------------------------------------------------------------------------
|
|
475
434
|
|
|
476
435
|
var vtkResliceCursorWidget$1 = {
|
|
477
|
-
newInstance
|
|
478
|
-
extend
|
|
436
|
+
newInstance,
|
|
437
|
+
extend
|
|
479
438
|
};
|
|
480
439
|
|
|
481
440
|
export { vtkResliceCursorWidget$1 as default, extend, newInstance };
|