@kitware/vtk.js 28.10.2 → 28.11.0
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 +185 -270
- 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/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 { d as dot, e as distance2BetweenPoints } from '../../Common/Core/Math/index.js';
|
|
5
3
|
import vtkCellArray from '../../Common/Core/CellArray.js';
|
|
6
4
|
import vtkDataArray from '../../Common/Core/DataArray.js';
|
|
@@ -12,22 +10,18 @@ import vtkContourTriangulator from './ContourTriangulator.js';
|
|
|
12
10
|
import vtkEdgeLocator from '../../Common/DataModel/EdgeLocator.js';
|
|
13
11
|
import Constants from './ClipClosedSurface/Constants.js';
|
|
14
12
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
13
|
+
const {
|
|
14
|
+
vtkErrorMacro,
|
|
15
|
+
capitalize
|
|
16
|
+
} = macro;
|
|
17
|
+
const {
|
|
18
|
+
ScalarMode
|
|
19
|
+
} = Constants;
|
|
22
20
|
function vtkClipClosedSurface(publicAPI, model) {
|
|
23
21
|
// Set our className
|
|
24
22
|
model.classHierarchy.push('vtkClipClosedSurface');
|
|
23
|
+
publicAPI.getMTime = () => model.clippingPlanes.reduce((a, b) => b.getMTime() > a ? b.getMTime() : a, model.mtime);
|
|
25
24
|
|
|
26
|
-
publicAPI.getMTime = function () {
|
|
27
|
-
return model.clippingPlanes.reduce(function (a, b) {
|
|
28
|
-
return b.getMTime() > a ? b.getMTime() : a;
|
|
29
|
-
}, model.mtime);
|
|
30
|
-
};
|
|
31
25
|
/**
|
|
32
26
|
* Take three colors as doubles, and convert to unsigned char.
|
|
33
27
|
*
|
|
@@ -36,21 +30,16 @@ function vtkClipClosedSurface(publicAPI, model) {
|
|
|
36
30
|
* @param {Number} color3
|
|
37
31
|
* @param {Number[3][3]} colors
|
|
38
32
|
*/
|
|
39
|
-
|
|
40
|
-
|
|
41
33
|
function createColorValues(color1, color2, color3, colors) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
for (var i = 0; i < 3; i++) {
|
|
49
|
-
for (var j = 0; j < 3; j++) {
|
|
34
|
+
const dcolors = [color1, color2, color3];
|
|
35
|
+
const clamp = (n, min, max) => Math.min(Math.max(n, min), max);
|
|
36
|
+
for (let i = 0; i < 3; i++) {
|
|
37
|
+
for (let j = 0; j < 3; j++) {
|
|
50
38
|
colors[i][j] = Math.round(clamp(dcolors[i][j], 0, 1) * 255);
|
|
51
39
|
}
|
|
52
40
|
}
|
|
53
41
|
}
|
|
42
|
+
|
|
54
43
|
/**
|
|
55
44
|
* Point interpolation for clipping and contouring, given the scalar
|
|
56
45
|
* values (v0, v1) for the two endpoints (p0, p1). The use of this
|
|
@@ -67,52 +56,46 @@ function vtkClipClosedSurface(publicAPI, model) {
|
|
|
67
56
|
* @param {Number} i
|
|
68
57
|
* @returns {Number}
|
|
69
58
|
*/
|
|
70
|
-
|
|
71
|
-
|
|
72
59
|
function interpolateEdge(points, pointData, locator, tol, i0, i1, v0, v1) {
|
|
73
60
|
// This swap guarantees that exactly the same point is computed
|
|
74
61
|
// for both line directions, as long as the endpoints are the same.
|
|
75
62
|
if (v1 > 0) {
|
|
76
63
|
// eslint-disable-next-line no-param-reassign
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
v1 = _ref2[1];
|
|
83
|
-
} // After the above swap, i0 will be kept, and i1 will be clipped
|
|
84
|
-
// Check to see if this point has already been computed
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
var edge = locator.insertUniqueEdge(i0, i1);
|
|
64
|
+
[i0, i1] = [i1, i0];
|
|
65
|
+
// eslint-disable-next-line no-param-reassign
|
|
66
|
+
[v0, v1] = [v1, v0];
|
|
67
|
+
}
|
|
68
|
+
// After the above swap, i0 will be kept, and i1 will be clipped
|
|
88
69
|
|
|
70
|
+
// Check to see if this point has already been computed
|
|
71
|
+
const edge = locator.insertUniqueEdge(i0, i1);
|
|
89
72
|
if (edge.value != null) {
|
|
90
73
|
return edge.value;
|
|
91
|
-
}
|
|
92
|
-
|
|
74
|
+
}
|
|
93
75
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
76
|
+
// Get the edge and interpolate the new point
|
|
77
|
+
const p0 = points.getPoint(i0);
|
|
78
|
+
const p1 = points.getPoint(i1);
|
|
79
|
+
const f = v0 / (v0 - v1);
|
|
80
|
+
const s = 1.0 - f;
|
|
81
|
+
const t = 1.0 - s;
|
|
82
|
+
const p = [s * p0[0] + t * p1[0], s * p0[1] + t * p1[1], s * p0[2] + t * p1[2]];
|
|
83
|
+
const tol2 = tol * tol;
|
|
101
84
|
|
|
85
|
+
// Make sure that new point is far enough from kept point
|
|
102
86
|
if (distance2BetweenPoints(p, p0) < tol2) {
|
|
103
87
|
edge.value = i0;
|
|
104
88
|
return i0;
|
|
105
89
|
}
|
|
106
|
-
|
|
107
90
|
if (distance2BetweenPoints(p, p1) < tol2) {
|
|
108
91
|
edge.value = i1;
|
|
109
92
|
return i1;
|
|
110
93
|
}
|
|
111
|
-
|
|
112
94
|
edge.value = points.insertNextTuple(p);
|
|
113
95
|
pointData.interpolateData(pointData, i0, i1, edge.value, t);
|
|
114
96
|
return edge.value;
|
|
115
97
|
}
|
|
98
|
+
|
|
116
99
|
/**
|
|
117
100
|
* Method for clipping lines and copying the scalar data.
|
|
118
101
|
*
|
|
@@ -125,52 +108,50 @@ function vtkClipClosedSurface(publicAPI, model) {
|
|
|
125
108
|
* @param {vtkDataSetAttributes} inLineData
|
|
126
109
|
* @param {vtkDataSetAttributes} outLineData
|
|
127
110
|
*/
|
|
128
|
-
|
|
129
|
-
|
|
130
111
|
function clipLines(points, pointScalars, pointData, edgeLocator, inputLines, outputLines, inLineData, outLineData) {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
for (var i = 0; i < values.length; i += numPts + 1, cellId++) {
|
|
112
|
+
let numPts;
|
|
113
|
+
let i0;
|
|
114
|
+
let i1;
|
|
115
|
+
let v0;
|
|
116
|
+
let v1;
|
|
117
|
+
let c0;
|
|
118
|
+
let c1;
|
|
119
|
+
const linePts = [];
|
|
120
|
+
const values = inputLines.getData();
|
|
121
|
+
let cellId = 0;
|
|
122
|
+
for (let i = 0; i < values.length; i += numPts + 1, cellId++) {
|
|
143
123
|
numPts = values[i];
|
|
144
124
|
i1 = values[i + 1];
|
|
145
125
|
v1 = pointScalars.getData()[i1];
|
|
146
126
|
c1 = v1 > 0;
|
|
147
|
-
|
|
148
|
-
for (var j = 2; j <= numPts; j++) {
|
|
127
|
+
for (let j = 2; j <= numPts; j++) {
|
|
149
128
|
i0 = i1;
|
|
150
129
|
v0 = v1;
|
|
151
130
|
c0 = c1;
|
|
152
131
|
i1 = values[i + j];
|
|
153
132
|
v1 = pointScalars.getData()[i1];
|
|
154
|
-
c1 = v1 > 0;
|
|
133
|
+
c1 = v1 > 0;
|
|
155
134
|
|
|
135
|
+
// If at least one point wasn't clipped
|
|
156
136
|
if (c0 || c1) {
|
|
157
137
|
// If only one end was clipped, interpolate new point
|
|
158
138
|
if (c0 ? !c1 : c1) {
|
|
159
139
|
linePts[c0 ? 1 : 0] = interpolateEdge(points, pointData, edgeLocator, model.tolerance, i0, i1, v0, v1);
|
|
160
|
-
}
|
|
161
|
-
|
|
140
|
+
}
|
|
162
141
|
|
|
142
|
+
// If endpoints are different, insert the line segment
|
|
163
143
|
if (i0 !== i1) {
|
|
164
144
|
linePts[0] = i0;
|
|
165
145
|
linePts[1] = i1;
|
|
166
|
-
|
|
167
|
-
|
|
146
|
+
const newCellId = outputLines.insertNextCell(linePts);
|
|
147
|
+
// outLineData.copyData(inLineData, cellId, newCellId);
|
|
168
148
|
outLineData.passData(inLineData, cellId, newCellId);
|
|
169
149
|
}
|
|
170
150
|
}
|
|
171
151
|
}
|
|
172
152
|
}
|
|
173
153
|
}
|
|
154
|
+
|
|
174
155
|
/**
|
|
175
156
|
* Break polylines into individual lines, copying scalar values from
|
|
176
157
|
* inputScalars starting at firstLineScalar. If inputScalars is zero,
|
|
@@ -184,31 +165,25 @@ function vtkClipClosedSurface(publicAPI, model) {
|
|
|
184
165
|
* @param {vtkDataArray} scalars
|
|
185
166
|
* @param {Vector3} color
|
|
186
167
|
*/
|
|
187
|
-
|
|
188
|
-
|
|
189
168
|
function breakPolylines(inputLines, outputLines, inputScalars, firstLineScalar, scalars, color) {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
for (var i = 0; i < values.length; i += numPts + 1) {
|
|
169
|
+
const cellColor = [...color];
|
|
170
|
+
let cellId = 0;
|
|
171
|
+
const values = inputLines.getData();
|
|
172
|
+
let numPts;
|
|
173
|
+
for (let i = 0; i < values.length; i += numPts + 1) {
|
|
197
174
|
numPts = values[i];
|
|
198
|
-
|
|
199
175
|
if (inputScalars) {
|
|
200
176
|
inputScalars.getTuple(firstLineScalar + cellId++, cellColor);
|
|
201
177
|
}
|
|
202
|
-
|
|
203
|
-
for (var j = 1; j < numPts; j++) {
|
|
178
|
+
for (let j = 1; j < numPts; j++) {
|
|
204
179
|
outputLines.insertNextCell([values[i + j], values[i + j + 1]]);
|
|
205
|
-
|
|
206
180
|
if (scalars) {
|
|
207
181
|
scalars.insertNextTuple(cellColor);
|
|
208
182
|
}
|
|
209
183
|
}
|
|
210
184
|
}
|
|
211
185
|
}
|
|
186
|
+
|
|
212
187
|
/**
|
|
213
188
|
* Copy polygons and their associated scalars to a new array.
|
|
214
189
|
* If inputScalars is set to zero, set polyScalars to color instead.
|
|
@@ -221,84 +196,68 @@ function vtkClipClosedSurface(publicAPI, model) {
|
|
|
221
196
|
* @param {vtkDataArray} polyScalars
|
|
222
197
|
* @param {Vector3} color
|
|
223
198
|
*/
|
|
224
|
-
|
|
225
|
-
|
|
226
199
|
function copyPolygons(inputPolys, outputPolys, inputScalars, firstPolyScalar, polyScalars, color) {
|
|
227
200
|
if (!inputPolys) {
|
|
228
201
|
return;
|
|
229
202
|
}
|
|
230
|
-
|
|
231
203
|
outputPolys.deepCopy(inputPolys);
|
|
232
|
-
|
|
233
204
|
if (polyScalars) {
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
var n = outputPolys.getNumberOfCells();
|
|
205
|
+
const scalarValue = [...color];
|
|
206
|
+
const n = outputPolys.getNumberOfCells();
|
|
237
207
|
polyScalars.insertTuple(n - 1, scalarValue);
|
|
238
|
-
|
|
239
208
|
if (inputScalars) {
|
|
240
|
-
for (
|
|
209
|
+
for (let i = 0; i < n; i++) {
|
|
241
210
|
inputScalars.getTuple(i + firstPolyScalar, scalarValue);
|
|
242
211
|
polyScalars.setTuple(i, scalarValue);
|
|
243
212
|
}
|
|
244
213
|
} else {
|
|
245
|
-
for (
|
|
246
|
-
polyScalars.setTuple(
|
|
214
|
+
for (let i = 0; i < n; i++) {
|
|
215
|
+
polyScalars.setTuple(i, scalarValue);
|
|
247
216
|
}
|
|
248
217
|
}
|
|
249
218
|
}
|
|
250
219
|
}
|
|
251
|
-
|
|
252
220
|
function breakTriangleStrips(inputStrips, polys, inputScalars, firstStripScalar, polyScalars, color) {
|
|
253
221
|
if (inputStrips.getNumberOfCells() === 0) {
|
|
254
222
|
return;
|
|
255
223
|
}
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
for (var j = 0; j < numPts - 2; j++) {
|
|
268
|
-
var p3 = values[i + j + 3];
|
|
269
|
-
|
|
224
|
+
const values = inputStrips.getData();
|
|
225
|
+
let cellId = firstStripScalar;
|
|
226
|
+
let numPts;
|
|
227
|
+
for (let i = 0; i < values.length; i += numPts + 1, cellId++) {
|
|
228
|
+
numPts = values[i];
|
|
229
|
+
// vtkTriangleStrip.decomposeStrip(numPts, values, polys);
|
|
230
|
+
let p1 = values[i + 1];
|
|
231
|
+
let p2 = values[i + 2];
|
|
232
|
+
for (let j = 0; j < numPts - 2; j++) {
|
|
233
|
+
const p3 = values[i + j + 3];
|
|
270
234
|
if (j % 2) {
|
|
271
235
|
polys.insertNextCell([p2, p1, p3]);
|
|
272
236
|
} else {
|
|
273
237
|
polys.insertNextCell([p1, p2, p3]);
|
|
274
238
|
}
|
|
275
|
-
|
|
276
239
|
p1 = p2;
|
|
277
240
|
p2 = p3;
|
|
278
241
|
}
|
|
279
|
-
|
|
280
242
|
if (polyScalars) {
|
|
281
|
-
|
|
282
|
-
|
|
243
|
+
const scalarValue = [...color];
|
|
283
244
|
if (inputScalars) {
|
|
284
245
|
// If there are input scalars, use them instead of "color"
|
|
285
246
|
inputScalars.getTuple(cellId, scalarValue);
|
|
286
247
|
}
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
var m = polyScalars.getNumberOfTuples();
|
|
290
|
-
|
|
248
|
+
const n = numPts - 3;
|
|
249
|
+
const m = polyScalars.getNumberOfTuples();
|
|
291
250
|
if (n >= 0) {
|
|
292
251
|
// First insert is just to allocate space
|
|
293
252
|
polyScalars.insertTuple(m + n, scalarValue);
|
|
294
|
-
|
|
295
|
-
for (var k = 0; k < n; k++) {
|
|
253
|
+
for (let k = 0; k < n; k++) {
|
|
296
254
|
polyScalars.setTuple(m + k, scalarValue);
|
|
297
255
|
}
|
|
298
256
|
}
|
|
299
257
|
}
|
|
300
258
|
}
|
|
301
259
|
}
|
|
260
|
+
|
|
302
261
|
/**
|
|
303
262
|
* Given some closed contour lines, create a triangle mesh that
|
|
304
263
|
* fills those lines. The input lines must be single-segment lines,
|
|
@@ -314,20 +273,17 @@ function vtkClipClosedSurface(publicAPI, model) {
|
|
|
314
273
|
* @param {vtkCellArray} outputPolys
|
|
315
274
|
* @param {Vector3} normal
|
|
316
275
|
*/
|
|
317
|
-
|
|
318
|
-
|
|
319
276
|
function triangulateContours(polyData, firstLine, numLines, outputPolys, normal) {
|
|
320
277
|
// If no cut lines were generated, there's nothing to do
|
|
321
278
|
if (numLines <= 0) {
|
|
322
279
|
return;
|
|
323
280
|
}
|
|
324
|
-
|
|
325
|
-
var triangulationError = !vtkContourTriangulator.triangulateContours(polyData, firstLine, numLines, outputPolys, [-normal[0], -normal[1], -normal[2]]);
|
|
326
|
-
|
|
281
|
+
const triangulationError = !vtkContourTriangulator.triangulateContours(polyData, firstLine, numLines, outputPolys, [-normal[0], -normal[1], -normal[2]]);
|
|
327
282
|
if (triangulationError && model.triangulationErrorDisplay) {
|
|
328
283
|
vtkErrorMacro('Triangulation failed, polyData may not be watertight.');
|
|
329
284
|
}
|
|
330
285
|
}
|
|
286
|
+
|
|
331
287
|
/**
|
|
332
288
|
* Break polylines into individual lines, copying scalar values from
|
|
333
289
|
* inputScalars starting at firstLineScalar. If inputScalars is zero,
|
|
@@ -339,11 +295,10 @@ function vtkClipClosedSurface(publicAPI, model) {
|
|
|
339
295
|
* @param {vtkCellArray} triangles
|
|
340
296
|
* @returns {Boolean}
|
|
341
297
|
*/
|
|
342
|
-
|
|
343
|
-
|
|
344
298
|
function triangulatePolygon(polygon, points, triangles) {
|
|
345
299
|
return vtkContourTriangulator.triangulatePolygon(polygon, points, triangles);
|
|
346
300
|
}
|
|
301
|
+
|
|
347
302
|
/**
|
|
348
303
|
* Clip and contour polys in one step, in order to guarantee
|
|
349
304
|
* that the contour lines exactly match the new free edges of
|
|
@@ -362,13 +317,10 @@ function vtkClipClosedSurface(publicAPI, model) {
|
|
|
362
317
|
* @param {vtkDataSetAttributes} outPolyData
|
|
363
318
|
* @param {vtkDataSetAttributes} outLineData
|
|
364
319
|
*/
|
|
365
|
-
|
|
366
|
-
|
|
367
320
|
function clipAndContourPolys(points, pointScalars, pointData, edgeLocator, triangulate, inputPolys, outputPolys, outputLines, inCellData, outPolyData, outLineData) {
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
321
|
+
const idList = model._idList;
|
|
322
|
+
// How many sides for output polygons?
|
|
323
|
+
let polyMax = Number.MAX_VALUE;
|
|
372
324
|
if (triangulate) {
|
|
373
325
|
if (triangulate < 4) {
|
|
374
326
|
// triangles only
|
|
@@ -377,103 +329,98 @@ function vtkClipClosedSurface(publicAPI, model) {
|
|
|
377
329
|
// allow triangles and quads
|
|
378
330
|
polyMax = 4;
|
|
379
331
|
}
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
var triangulationFailure = false; // Go through all cells and clip them
|
|
332
|
+
}
|
|
384
333
|
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
var cellId = 0;
|
|
388
|
-
var numPts;
|
|
334
|
+
// eslint-disable-next-line prefer-const
|
|
335
|
+
let triangulationFailure = false;
|
|
389
336
|
|
|
390
|
-
|
|
337
|
+
// Go through all cells and clip them
|
|
338
|
+
const values = inputPolys.getData();
|
|
339
|
+
const linePts = [];
|
|
340
|
+
let cellId = 0;
|
|
341
|
+
let numPts;
|
|
342
|
+
for (let i = 0; i < values.length; i += numPts + 1, cellId++) {
|
|
391
343
|
numPts = values[i];
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
344
|
+
let i1 = values[i + numPts];
|
|
345
|
+
let v1 = pointScalars.getData()[i1];
|
|
346
|
+
let c1 = v1 > 0;
|
|
395
347
|
|
|
396
|
-
|
|
397
|
-
|
|
348
|
+
// The ids for the current edge: init j0 to -1 if i1 will be clipped
|
|
349
|
+
let j0 = c1 ? i1 : -1;
|
|
350
|
+
let j1 = 0;
|
|
398
351
|
|
|
352
|
+
// To store the ids of the contour line
|
|
399
353
|
linePts[0] = 0;
|
|
400
354
|
linePts[1] = 0;
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
for (var j = 1; j <= numPts; j++) {
|
|
355
|
+
let idListIdx = 0;
|
|
356
|
+
for (let j = 1; j <= numPts; j++) {
|
|
404
357
|
// Save previous point info
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
358
|
+
const i0 = i1;
|
|
359
|
+
const v0 = v1;
|
|
360
|
+
const c0 = c1;
|
|
408
361
|
|
|
362
|
+
// Generate new point info
|
|
409
363
|
i1 = values[i + j];
|
|
410
364
|
v1 = pointScalars.getData()[i1];
|
|
411
|
-
c1 = v1 > 0;
|
|
365
|
+
c1 = v1 > 0;
|
|
412
366
|
|
|
367
|
+
// If at least one edge end point wasn't clipped
|
|
413
368
|
if (c0 || c1) {
|
|
414
369
|
// If only one end was clipped, interpolate new point
|
|
415
370
|
if (c0 ? !c1 : c1) {
|
|
416
371
|
j1 = interpolateEdge(points, pointData, edgeLocator, model.tolerance, i0, i1, v0, v1);
|
|
417
|
-
|
|
418
372
|
if (j1 !== j0) {
|
|
419
373
|
idList[idListIdx++] = j1;
|
|
420
374
|
j0 = j1;
|
|
421
|
-
}
|
|
422
|
-
|
|
375
|
+
}
|
|
423
376
|
|
|
377
|
+
// Save as one end of the contour line
|
|
424
378
|
linePts[c0 ? 1 : 0] = j1;
|
|
425
379
|
}
|
|
426
|
-
|
|
427
380
|
if (c1) {
|
|
428
381
|
j1 = i1;
|
|
429
|
-
|
|
430
382
|
if (j1 !== j0) {
|
|
431
383
|
idList[idListIdx++] = j1;
|
|
432
384
|
j0 = j1;
|
|
433
385
|
}
|
|
434
386
|
}
|
|
435
387
|
}
|
|
436
|
-
}
|
|
437
|
-
|
|
388
|
+
}
|
|
438
389
|
|
|
439
|
-
|
|
390
|
+
// Insert the clipped poly
|
|
391
|
+
const numPoints = idListIdx;
|
|
440
392
|
idList.length = numPoints;
|
|
441
|
-
|
|
442
393
|
if (model.triangulatePolys && numPoints > polyMax) {
|
|
443
394
|
// TODO: Support triangulatePolygon
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
395
|
+
let newCellId = outputPolys.getNumberOfCells();
|
|
396
|
+
// Triangulate the poly and insert triangles into output.
|
|
397
|
+
const success = triangulatePolygon(idList, points, outputPolys);
|
|
448
398
|
if (!success) {
|
|
449
399
|
triangulationFailure = true;
|
|
450
|
-
}
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
var ncells = outputPolys.getNumberOfCells();
|
|
400
|
+
}
|
|
454
401
|
|
|
402
|
+
// Copy the attribute data to the triangle cells
|
|
403
|
+
const ncells = outputPolys.getNumberOfCells();
|
|
455
404
|
for (; newCellId < ncells; newCellId++) {
|
|
456
405
|
outPolyData.passData(inCellData, cellId, newCellId);
|
|
457
406
|
}
|
|
458
407
|
} else if (numPoints > 2) {
|
|
459
408
|
// Insert the polygon without triangulating it
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
} // Insert the contour line if one was created
|
|
464
|
-
|
|
409
|
+
const newCellId = outputPolys.insertNextCell(idList);
|
|
410
|
+
outPolyData.passData(inCellData, cellId, newCellId);
|
|
411
|
+
}
|
|
465
412
|
|
|
413
|
+
// Insert the contour line if one was created
|
|
466
414
|
if (linePts[0] !== linePts[1]) {
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
outLineData.passData(inCellData, cellId, _newCellId2);
|
|
415
|
+
const newCellId = outputLines.insertNextCell(linePts);
|
|
416
|
+
outLineData.passData(inCellData, cellId, newCellId);
|
|
470
417
|
}
|
|
471
418
|
}
|
|
472
|
-
|
|
473
419
|
if (triangulationFailure && model.triangulationErrorDisplay) {
|
|
474
420
|
vtkErrorMacro('Triangulation failed, output may not be watertight');
|
|
475
421
|
}
|
|
476
422
|
}
|
|
423
|
+
|
|
477
424
|
/**
|
|
478
425
|
* Squeeze the points and store them in the output. Only the points that
|
|
479
426
|
* are used by the cells will be saved, and the pointIds of the cells will
|
|
@@ -484,71 +431,64 @@ function vtkClipClosedSurface(publicAPI, model) {
|
|
|
484
431
|
* @param {vtkDataSetAttributes} pointData
|
|
485
432
|
* @param {String} outputPointDataType
|
|
486
433
|
*/
|
|
487
|
-
|
|
488
|
-
|
|
489
434
|
function squeezeOutputPoints(output, points, pointData, outputPointDataType) {
|
|
490
435
|
// Create a list of points used by cells
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
436
|
+
const n = points.getNumberOfPoints();
|
|
437
|
+
let numNewPoints = 0;
|
|
438
|
+
const outPointData = output.getPointData();
|
|
439
|
+
const pointMap = [];
|
|
495
440
|
pointMap.length = n;
|
|
496
|
-
|
|
441
|
+
const cellArrays = [output.getVerts(), output.getLines(), output.getPolys(), output.getStrips()];
|
|
497
442
|
|
|
498
|
-
|
|
443
|
+
// Find all the newPoints that are used by cells
|
|
444
|
+
cellArrays.forEach(cellArray => {
|
|
499
445
|
if (!cellArray) {
|
|
500
446
|
return;
|
|
501
447
|
}
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
for (var i = 0; i < values.length; i += numPts + 1) {
|
|
448
|
+
const values = cellArray.getData();
|
|
449
|
+
let numPts;
|
|
450
|
+
let pointId;
|
|
451
|
+
for (let i = 0; i < values.length; i += numPts + 1) {
|
|
508
452
|
numPts = values[i];
|
|
509
|
-
|
|
510
|
-
for (var j = 1; j <= numPts; j++) {
|
|
453
|
+
for (let j = 1; j <= numPts; j++) {
|
|
511
454
|
pointId = values[i + j];
|
|
512
|
-
|
|
513
455
|
if (pointMap[pointId] === undefined) {
|
|
514
456
|
pointMap[pointId] = numNewPoints++;
|
|
515
457
|
}
|
|
516
458
|
}
|
|
517
459
|
}
|
|
518
|
-
});
|
|
460
|
+
});
|
|
519
461
|
|
|
520
|
-
|
|
462
|
+
// Create exactly the number of points that are required
|
|
463
|
+
const newPoints = vtkPoints.newInstance({
|
|
521
464
|
size: numNewPoints * 3,
|
|
522
465
|
dataType: outputPointDataType
|
|
523
|
-
});
|
|
524
|
-
|
|
525
|
-
var p = [];
|
|
526
|
-
var newPointId;
|
|
466
|
+
});
|
|
467
|
+
// outPointData.copyAllocate(pointData, numNewPoints, 0);
|
|
527
468
|
|
|
528
|
-
|
|
469
|
+
const p = [];
|
|
470
|
+
let newPointId;
|
|
471
|
+
for (let pointId = 0; pointId < n; pointId++) {
|
|
529
472
|
newPointId = pointMap[pointId];
|
|
530
|
-
|
|
531
473
|
if (newPointId !== undefined) {
|
|
532
474
|
points.getPoint(pointId, p);
|
|
533
475
|
newPoints.setTuple(newPointId, p);
|
|
534
|
-
outPointData.passData(pointData, pointId, newPointId);
|
|
476
|
+
outPointData.passData(pointData, pointId, newPointId);
|
|
477
|
+
// outPointData.copyData(pointData, pointId, newPointId);
|
|
535
478
|
}
|
|
536
|
-
}
|
|
537
|
-
|
|
479
|
+
}
|
|
538
480
|
|
|
539
|
-
|
|
481
|
+
// Change the cell pointIds to reflect the new point array
|
|
482
|
+
cellArrays.forEach(cellArray => {
|
|
540
483
|
if (!cellArray) {
|
|
541
484
|
return;
|
|
542
485
|
}
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
for (var i = 0; i < values.length; i += numPts + 1) {
|
|
486
|
+
const values = cellArray.getData();
|
|
487
|
+
let numPts;
|
|
488
|
+
let pointId;
|
|
489
|
+
for (let i = 0; i < values.length; i += numPts + 1) {
|
|
549
490
|
numPts = values[i];
|
|
550
|
-
|
|
551
|
-
for (var j = 1; j <= numPts; j++) {
|
|
491
|
+
for (let j = 1; j <= numPts; j++) {
|
|
552
492
|
pointId = values[i + j];
|
|
553
493
|
values[i + j] = pointMap[pointId];
|
|
554
494
|
}
|
|
@@ -556,76 +496,71 @@ function vtkClipClosedSurface(publicAPI, model) {
|
|
|
556
496
|
});
|
|
557
497
|
output.setPoints(newPoints);
|
|
558
498
|
}
|
|
559
|
-
|
|
560
|
-
publicAPI.requestData = function (inData, outData) {
|
|
561
|
-
var _input$getVerts, _input$getStrips;
|
|
562
|
-
|
|
499
|
+
publicAPI.requestData = (inData, outData) => {
|
|
563
500
|
// implement requestData
|
|
564
|
-
|
|
565
|
-
|
|
501
|
+
const input = inData[0];
|
|
502
|
+
const output = vtkPolyData.newInstance();
|
|
566
503
|
outData[0] = output;
|
|
567
|
-
|
|
568
504
|
if (!input) {
|
|
569
505
|
vtkErrorMacro('Invalid or missing input');
|
|
570
506
|
return;
|
|
571
507
|
}
|
|
572
|
-
|
|
573
508
|
if (model._idList == null) {
|
|
574
509
|
model._idList = [];
|
|
575
510
|
} else {
|
|
576
511
|
model._idList.length = 0;
|
|
577
|
-
}
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
var inputPoints = input.getPoints();
|
|
581
|
-
var numPts = 0;
|
|
582
|
-
var inputPointsType = VtkDataTypes.FLOAT;
|
|
512
|
+
}
|
|
583
513
|
|
|
514
|
+
// Get the input points
|
|
515
|
+
const inputPoints = input.getPoints();
|
|
516
|
+
let numPts = 0;
|
|
517
|
+
let inputPointsType = VtkDataTypes.FLOAT;
|
|
584
518
|
if (inputPoints) {
|
|
585
519
|
numPts = inputPoints.getNumberOfPoints();
|
|
586
520
|
inputPointsType = inputPoints.getDataType();
|
|
587
|
-
}
|
|
588
|
-
|
|
521
|
+
}
|
|
589
522
|
|
|
590
|
-
|
|
523
|
+
// Force points to double precision, copy the point attributes
|
|
524
|
+
const points = vtkPoints.newInstance({
|
|
591
525
|
size: numPts * 3,
|
|
592
526
|
dataType: VtkDataTypes.DOUBLE
|
|
593
527
|
});
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
528
|
+
const pointData = vtkDataSetAttributes.newInstance();
|
|
529
|
+
let inPointData = null;
|
|
597
530
|
if (model.passPointData) {
|
|
598
|
-
inPointData = input.getPointData();
|
|
531
|
+
inPointData = input.getPointData();
|
|
532
|
+
// pointData.interpolateAllocate(inPointData, numPts, 0);
|
|
599
533
|
}
|
|
600
534
|
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
for (var ptId = 0; ptId < numPts; ptId++) {
|
|
535
|
+
const point = [];
|
|
536
|
+
for (let ptId = 0; ptId < numPts; ptId++) {
|
|
604
537
|
inputPoints.getPoint(ptId, point);
|
|
605
538
|
points.setTuple(ptId, point);
|
|
606
|
-
|
|
607
539
|
if (inPointData) {
|
|
608
540
|
// pointData.copyData(inPointData, ptId, ptId);
|
|
609
541
|
pointData.passData(inPointData, ptId, ptId);
|
|
610
542
|
}
|
|
611
|
-
}
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
var edgeLocator = vtkEdgeLocator.newInstance(); // A temporary polydata for the contour lines that are triangulated
|
|
543
|
+
}
|
|
615
544
|
|
|
616
|
-
|
|
545
|
+
// An edge locator to avoid point duplication while clipping
|
|
546
|
+
const edgeLocator = vtkEdgeLocator.newInstance();
|
|
617
547
|
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
var inputScalars; // For input scalars: the offsets to the various cell types
|
|
548
|
+
// A temporary polydata for the contour lines that are triangulated
|
|
549
|
+
const tmpContourData = vtkPolyData.newInstance();
|
|
621
550
|
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
551
|
+
// The cell scalars
|
|
552
|
+
let lineScalars;
|
|
553
|
+
let polyScalars;
|
|
554
|
+
let inputScalars;
|
|
625
555
|
|
|
626
|
-
|
|
627
|
-
|
|
556
|
+
// For input scalars: the offsets to the various cell types
|
|
557
|
+
let firstLineScalar = 0;
|
|
558
|
+
let firstPolyScalar = 0;
|
|
559
|
+
let firstStripScalar = 0;
|
|
628
560
|
|
|
561
|
+
// Make the colors to be used on the data
|
|
562
|
+
let numberOfScalarComponents = 1;
|
|
563
|
+
const colors = [[0, 0, 0], [0, 0, 0], [0, 0, 0]];
|
|
629
564
|
if (model.scalarMode === ScalarMode.COLORS) {
|
|
630
565
|
numberOfScalarComponents = 3;
|
|
631
566
|
createColorValues(model.baseColor, model.clipColor, model.activePlaneColor, colors);
|
|
@@ -633,18 +568,17 @@ function vtkClipClosedSurface(publicAPI, model) {
|
|
|
633
568
|
colors[0][0] = 0;
|
|
634
569
|
colors[1][0] = 1;
|
|
635
570
|
colors[2][0] = 2;
|
|
636
|
-
}
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
// This is set if we have to work with scalars. The input scalars
|
|
637
574
|
// will be copied if they are unsigned char with 3 components, otherwise
|
|
638
575
|
// new scalars will be generated.
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
var numPolys = (inputPolys === null || inputPolys === void 0 ? void 0 : inputPolys.getNumberOfCells()) || 0;
|
|
646
|
-
var numStrips = ((_input$getStrips = input.getStrips()) === null || _input$getStrips === void 0 ? void 0 : _input$getStrips.getNumberOfCells()) || 0;
|
|
647
|
-
|
|
576
|
+
const numVerts = input.getVerts()?.getNumberOfCells() || 0;
|
|
577
|
+
const inputLines = input.getLines();
|
|
578
|
+
const numLines = inputLines?.getNumberOfCells() || 0;
|
|
579
|
+
const inputPolys = input.getPolys();
|
|
580
|
+
const numPolys = inputPolys?.getNumberOfCells() || 0;
|
|
581
|
+
const numStrips = input.getStrips()?.getNumberOfCells() || 0;
|
|
648
582
|
if (model.scalarMode !== ScalarMode.NONE) {
|
|
649
583
|
lineScalars = vtkDataArray.newInstance({
|
|
650
584
|
dataType: VtkDataTypes.UNSIGNED_CHAR,
|
|
@@ -653,19 +587,18 @@ function vtkClipClosedSurface(publicAPI, model) {
|
|
|
653
587
|
// values: new Uint8Array(numLines * 3),
|
|
654
588
|
numberOfComponents: numberOfScalarComponents
|
|
655
589
|
});
|
|
656
|
-
|
|
657
|
-
|
|
590
|
+
const tryInputScalars = input.getCellData().getScalars();
|
|
591
|
+
// Get input scalars if they are RGB color scalars
|
|
658
592
|
if (tryInputScalars && tryInputScalars.getDataType() === VtkDataTypes.UNSIGNED_CHAR && numberOfScalarComponents === 3 && tryInputScalars.getNumberOfComponents() === 3) {
|
|
659
593
|
inputScalars = input.getCellData().getScalars();
|
|
660
594
|
firstLineScalar = numVerts;
|
|
661
595
|
firstPolyScalar = numVerts + numLines;
|
|
662
596
|
firstStripScalar = numVerts + numLines + numPolys;
|
|
663
597
|
}
|
|
664
|
-
}
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
var lines;
|
|
598
|
+
}
|
|
668
599
|
|
|
600
|
+
// Break the input lines into segments, generate scalars for lines
|
|
601
|
+
let lines;
|
|
669
602
|
if (numLines > 0) {
|
|
670
603
|
lines = vtkCellArray.newInstance({
|
|
671
604
|
dataType: inputLines.getDataType(),
|
|
@@ -679,10 +612,8 @@ function vtkClipClosedSurface(publicAPI, model) {
|
|
|
679
612
|
empty: true
|
|
680
613
|
});
|
|
681
614
|
}
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
var polyMax = 3;
|
|
685
|
-
|
|
615
|
+
let polys = null;
|
|
616
|
+
let polyMax = 3;
|
|
686
617
|
if (numPolys > 0 || numStrips > 0) {
|
|
687
618
|
// If there are line scalars, then poly scalars are needed too
|
|
688
619
|
if (lineScalars) {
|
|
@@ -694,204 +625,188 @@ function vtkClipClosedSurface(publicAPI, model) {
|
|
|
694
625
|
numberOfComponents: numberOfScalarComponents
|
|
695
626
|
});
|
|
696
627
|
}
|
|
697
|
-
|
|
698
628
|
polys = vtkCellArray.newInstance();
|
|
699
|
-
copyPolygons(inputPolys, polys, inputScalars, firstPolyScalar, polyScalars, colors[0]);
|
|
700
|
-
|
|
701
|
-
breakTriangleStrips(input.getStrips(), polys, inputScalars, firstStripScalar, polyScalars, colors[0]);
|
|
702
|
-
|
|
703
|
-
polyMax = inputPolys.getCellSizes().reduce(function (a, b) {
|
|
704
|
-
return a > b ? a : b;
|
|
705
|
-
}, 0);
|
|
706
|
-
} // Arrays for storing the clipped lines and polys
|
|
629
|
+
copyPolygons(inputPolys, polys, inputScalars, firstPolyScalar, polyScalars, colors[0]);
|
|
630
|
+
// TODO: Support triangle strips
|
|
631
|
+
breakTriangleStrips(input.getStrips(), polys, inputScalars, firstStripScalar, polyScalars, colors[0]);
|
|
707
632
|
|
|
633
|
+
// Check if the input has polys and quads or just triangles
|
|
634
|
+
polyMax = inputPolys.getCellSizes().reduce((a, b) => a > b ? a : b, 0);
|
|
635
|
+
}
|
|
708
636
|
|
|
709
|
-
|
|
637
|
+
// Arrays for storing the clipped lines and polys
|
|
638
|
+
let newLines = vtkCellArray.newInstance({
|
|
710
639
|
dataType: lines.getDataType(),
|
|
711
640
|
empty: true
|
|
712
641
|
});
|
|
713
|
-
|
|
714
|
-
|
|
642
|
+
let newPolys = null;
|
|
715
643
|
if (polys) {
|
|
716
644
|
newPolys = vtkCellArray.newInstance({
|
|
717
645
|
dataType: polys.getDataType(),
|
|
718
646
|
empty: true
|
|
719
647
|
});
|
|
720
|
-
}
|
|
721
|
-
|
|
648
|
+
}
|
|
722
649
|
|
|
723
|
-
|
|
650
|
+
// The line scalars, for coloring the outline
|
|
651
|
+
let inLineData = vtkDataSetAttributes.newInstance();
|
|
724
652
|
inLineData.copyScalarsOn();
|
|
725
|
-
inLineData.setScalars(lineScalars);
|
|
653
|
+
inLineData.setScalars(lineScalars);
|
|
726
654
|
|
|
727
|
-
|
|
655
|
+
// The poly scalars, for coloring the faces
|
|
656
|
+
let inPolyData = vtkDataSetAttributes.newInstance();
|
|
728
657
|
inPolyData.copyScalarsOn();
|
|
729
|
-
inPolyData.setScalars(polyScalars);
|
|
658
|
+
inPolyData.setScalars(polyScalars);
|
|
730
659
|
|
|
731
|
-
|
|
660
|
+
// Also create output attribute data
|
|
661
|
+
let outLineData = vtkDataSetAttributes.newInstance();
|
|
732
662
|
outLineData.copyScalarsOn();
|
|
733
|
-
|
|
663
|
+
let outPolyData = vtkDataSetAttributes.newInstance();
|
|
734
664
|
outPolyData.copyScalarsOn();
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
for (var planeId = 0; planeId < planes.length; planeId++) {
|
|
738
|
-
var plane = planes[planeId];
|
|
739
|
-
var triangulate = 5;
|
|
665
|
+
const planes = model.clippingPlanes;
|
|
740
666
|
|
|
667
|
+
// Go through the clipping planes and clip the input with each plane
|
|
668
|
+
for (let planeId = 0; planeId < planes.length; planeId++) {
|
|
669
|
+
const plane = planes[planeId];
|
|
670
|
+
let triangulate = 5;
|
|
741
671
|
if (planeId === planes.length - 1) {
|
|
742
672
|
triangulate = polyMax;
|
|
743
673
|
}
|
|
674
|
+
const active = planeId === model.activePlaneId;
|
|
744
675
|
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
676
|
+
// Convert the plane into an easy-to-evaluate function
|
|
677
|
+
const pc = plane.getNormal();
|
|
678
|
+
// OK to modify pc because vtkPlane.getNormal() returns a copy
|
|
679
|
+
pc[3] = -dot(pc, plane.getOrigin());
|
|
748
680
|
|
|
749
|
-
|
|
681
|
+
// Create the clip scalars by evaluating the plane at each point
|
|
682
|
+
const numPoints = points.getNumberOfPoints();
|
|
750
683
|
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
var pointScalars = vtkDataArray.newInstance({
|
|
684
|
+
// The point scalars, needed for clipping (not for the output!)
|
|
685
|
+
const pointScalars = vtkDataArray.newInstance({
|
|
754
686
|
dataType: VtkDataTypes.DOUBLE,
|
|
755
687
|
size: numPoints
|
|
756
688
|
});
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
for (var pointId = 0; pointId < numPoints; pointId) {
|
|
689
|
+
const pointScalarsData = pointScalars.getData();
|
|
690
|
+
const pointsData = points.getData();
|
|
691
|
+
let i = 0;
|
|
692
|
+
for (let pointId = 0; pointId < numPoints; pointId) {
|
|
762
693
|
pointScalarsData[pointId++] = pointsData[i++] * pc[0] + pointsData[i++] * pc[1] + pointsData[i++] * pc[2] + pc[3];
|
|
763
|
-
}
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
// Prepare the output scalars
|
|
764
697
|
// outLineData.copyAllocate(inLineData, 0, 0);
|
|
765
698
|
// outPolyData.copyAllocate(inPolyData, 0, 0);
|
|
766
|
-
// Reset the locator
|
|
767
|
-
|
|
768
699
|
|
|
769
|
-
|
|
700
|
+
// Reset the locator
|
|
701
|
+
edgeLocator.initialize();
|
|
770
702
|
|
|
771
|
-
|
|
703
|
+
// Clip the lines
|
|
704
|
+
clipLines(points, pointScalars, pointData, edgeLocator, lines, newLines, inLineData, outLineData);
|
|
772
705
|
|
|
706
|
+
// Clip the polys
|
|
773
707
|
if (polys) {
|
|
774
708
|
// Get the number of lines remaining after the clipping
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
clipAndContourPolys(points, pointScalars, pointData, edgeLocator, triangulate, polys, newPolys, newLines, inPolyData, outPolyData, outLineData); // Add scalars for the newly-created contour lines
|
|
709
|
+
const numClipLines = newLines.getNumberOfCells();
|
|
778
710
|
|
|
779
|
-
|
|
711
|
+
// Cut the polys to generate more lines
|
|
712
|
+
clipAndContourPolys(points, pointScalars, pointData, edgeLocator, triangulate, polys, newPolys, newLines, inPolyData, outPolyData, outLineData);
|
|
780
713
|
|
|
781
|
-
|
|
714
|
+
// Add scalars for the newly-created contour lines
|
|
715
|
+
let scalars = outLineData.getScalars();
|
|
716
|
+
if (scalars) {
|
|
782
717
|
// Set the color to the active color if plane is active
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
_scalars.getTuple(lineId, oldColor);
|
|
790
|
-
|
|
718
|
+
const color = colors[1 + (active ? 1 : 0)];
|
|
719
|
+
const activeColor = colors[2];
|
|
720
|
+
const numNewLines = newLines.getNumberOfCells();
|
|
721
|
+
const oldColor = [];
|
|
722
|
+
for (let lineId = numClipLines; lineId < numNewLines; lineId++) {
|
|
723
|
+
scalars.getTuple(lineId, oldColor);
|
|
791
724
|
if (numberOfScalarComponents !== 3 || oldColor[0] !== activeColor[0] || oldColor[1] !== activeColor[1] || oldColor[2] !== activeColor[2]) {
|
|
792
|
-
|
|
725
|
+
scalars.setTuple(lineId, color);
|
|
793
726
|
}
|
|
794
727
|
}
|
|
795
|
-
}
|
|
796
|
-
|
|
728
|
+
}
|
|
797
729
|
|
|
798
|
-
|
|
799
|
-
|
|
730
|
+
// Generate new polys from the cut lines
|
|
731
|
+
let cellId = newPolys.getNumberOfCells();
|
|
732
|
+
const numClipAndContourLines = newLines.getNumberOfCells();
|
|
800
733
|
|
|
734
|
+
// Create a polydata for the lines
|
|
801
735
|
tmpContourData.setPoints(points);
|
|
802
736
|
tmpContourData.setLines(newLines);
|
|
803
737
|
tmpContourData.buildCells();
|
|
804
|
-
triangulateContours(tmpContourData, numClipLines, numClipAndContourLines - numClipLines, newPolys, pc);
|
|
805
|
-
|
|
806
|
-
_scalars = outPolyData.getScalars();
|
|
807
|
-
|
|
808
|
-
if (_scalars) {
|
|
809
|
-
var _color = colors[1 + (active ? 1 : 0)];
|
|
810
|
-
var numCells = newPolys.getNumberOfCells();
|
|
738
|
+
triangulateContours(tmpContourData, numClipLines, numClipAndContourLines - numClipLines, newPolys, pc);
|
|
811
739
|
|
|
740
|
+
// Add scalars for the newly-created polys
|
|
741
|
+
scalars = outPolyData.getScalars();
|
|
742
|
+
if (scalars) {
|
|
743
|
+
const color = colors[1 + (active ? 1 : 0)];
|
|
744
|
+
const numCells = newPolys.getNumberOfCells();
|
|
812
745
|
if (numCells > cellId) {
|
|
813
746
|
// The insert allocates space up to numCells - 1
|
|
814
|
-
|
|
815
|
-
|
|
747
|
+
scalars.insertTuple(numCells - 1, color);
|
|
816
748
|
for (; cellId < numCells; cellId++) {
|
|
817
|
-
|
|
749
|
+
scalars.setTuple(cellId, color);
|
|
818
750
|
}
|
|
819
751
|
}
|
|
820
|
-
}
|
|
821
|
-
// triangulateContours(). In usual operation, no lines are added.
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
_scalars = outLineData.getScalars();
|
|
825
|
-
|
|
826
|
-
if (_scalars) {
|
|
827
|
-
var _color2 = [0, 255, 255];
|
|
828
|
-
|
|
829
|
-
var _numCells = newLines.getNumberOfCells();
|
|
752
|
+
}
|
|
830
753
|
|
|
831
|
-
|
|
754
|
+
// Add scalars to any diagnostic lines that added by
|
|
755
|
+
// triangulateContours(). In usual operation, no lines are added.
|
|
756
|
+
scalars = outLineData.getScalars();
|
|
757
|
+
if (scalars) {
|
|
758
|
+
const color = [0, 255, 255];
|
|
759
|
+
const numCells = newLines.getNumberOfCells();
|
|
760
|
+
if (numCells > numClipAndContourLines) {
|
|
832
761
|
// The insert allocates space up to numCells - 1
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
_scalars.setTuple(lineCellId, _color2);
|
|
762
|
+
scalars.insertTuple(numCells - 1, color);
|
|
763
|
+
for (let lineCellId = numClipAndContourLines; lineCellId < numCells; lineCellId++) {
|
|
764
|
+
scalars.setTuple(lineCellId, color);
|
|
837
765
|
}
|
|
838
766
|
}
|
|
839
767
|
}
|
|
840
|
-
}
|
|
841
|
-
|
|
768
|
+
}
|
|
842
769
|
|
|
843
|
-
|
|
844
|
-
lines =
|
|
845
|
-
newLines = _ref3[1];
|
|
770
|
+
// Swap the lines, points, etcetera: old output becomes new input
|
|
771
|
+
[lines, newLines] = [newLines, lines];
|
|
846
772
|
newLines.initialize();
|
|
847
|
-
|
|
848
773
|
if (polys) {
|
|
849
|
-
|
|
850
|
-
polys = _ref4[0];
|
|
851
|
-
newPolys = _ref4[1];
|
|
774
|
+
[polys, newPolys] = [newPolys, polys];
|
|
852
775
|
newPolys.initialize();
|
|
853
776
|
}
|
|
854
|
-
|
|
855
|
-
var _ref5 = [outLineData, inLineData];
|
|
856
|
-
inLineData = _ref5[0];
|
|
857
|
-
outLineData = _ref5[1];
|
|
777
|
+
[inLineData, outLineData] = [outLineData, inLineData];
|
|
858
778
|
outLineData.initialize();
|
|
859
|
-
|
|
860
|
-
inPolyData = _ref6[0];
|
|
861
|
-
outPolyData = _ref6[1];
|
|
779
|
+
[inPolyData, outPolyData] = [outPolyData, inPolyData];
|
|
862
780
|
outPolyData.initialize();
|
|
863
|
-
}
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
var scalars = inLineData.getScalars();
|
|
781
|
+
}
|
|
867
782
|
|
|
783
|
+
// Get the line scalars
|
|
784
|
+
const scalars = inLineData.getScalars();
|
|
868
785
|
if (model.generateOutline) {
|
|
869
786
|
output.setLines(lines);
|
|
870
787
|
} else if (scalars) {
|
|
871
788
|
scalars.initialize();
|
|
872
789
|
}
|
|
873
|
-
|
|
874
790
|
if (model.generateFaces) {
|
|
875
791
|
output.setPolys(polys);
|
|
876
|
-
|
|
877
792
|
if (polys && scalars) {
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
793
|
+
const pScalars = inPolyData.getScalars();
|
|
794
|
+
const m = scalars.getNumberOfTuples();
|
|
795
|
+
const n = pScalars.getNumberOfTuples();
|
|
882
796
|
if (n > 0) {
|
|
883
|
-
|
|
797
|
+
const color = [0, 0, 0];
|
|
884
798
|
|
|
885
|
-
|
|
799
|
+
// This is just to expand the array
|
|
800
|
+
scalars.insertTuple(n + m - 1, color);
|
|
886
801
|
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
802
|
+
// Fill in the poly scalars
|
|
803
|
+
for (let i = 0; i < n; i++) {
|
|
804
|
+
pScalars.getTuple(i, color);
|
|
805
|
+
scalars.setTuple(i + m, color);
|
|
890
806
|
}
|
|
891
807
|
}
|
|
892
808
|
}
|
|
893
809
|
}
|
|
894
|
-
|
|
895
810
|
if (scalars && model.scalarMode === ScalarMode.COLORS) {
|
|
896
811
|
scalars.setName('Colors');
|
|
897
812
|
output.getCellData().setScalars(scalars);
|
|
@@ -903,34 +818,33 @@ function vtkClipClosedSurface(publicAPI, model) {
|
|
|
903
818
|
// output.getCellData().setScalars(categories);
|
|
904
819
|
// categories.delete();
|
|
905
820
|
// TODO: Check
|
|
906
|
-
|
|
821
|
+
const categories = scalars.newClone();
|
|
907
822
|
categories.setData(scalars.getData().slice());
|
|
908
823
|
categories.setName('Labels');
|
|
909
824
|
output.getCellData().setScalars(categories);
|
|
910
825
|
} else {
|
|
911
826
|
output.getCellData().setScalars(null);
|
|
912
|
-
}
|
|
913
|
-
|
|
827
|
+
}
|
|
914
828
|
|
|
915
|
-
|
|
829
|
+
// Finally, store the points in the output
|
|
830
|
+
squeezeOutputPoints(output, points, pointData, inputPointsType);
|
|
831
|
+
// TODO: Check
|
|
916
832
|
// output.squeeze();
|
|
917
|
-
|
|
918
833
|
outData[0] = output;
|
|
919
834
|
};
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
publicAPI["setScalarModeTo".concat(name)] = function () {
|
|
835
|
+
Object.keys(ScalarMode).forEach(key => {
|
|
836
|
+
const name = capitalize(key.toLowerCase());
|
|
837
|
+
publicAPI[`setScalarModeTo${name}`] = () => {
|
|
925
838
|
model.scalarMode = ScalarMode[key];
|
|
926
839
|
};
|
|
927
840
|
});
|
|
928
|
-
}
|
|
841
|
+
}
|
|
842
|
+
|
|
843
|
+
// ----------------------------------------------------------------------------
|
|
929
844
|
// Object factory
|
|
930
845
|
// ----------------------------------------------------------------------------
|
|
931
846
|
|
|
932
|
-
|
|
933
|
-
var DEFAULT_VALUES = {
|
|
847
|
+
const DEFAULT_VALUES = {
|
|
934
848
|
clippingPlanes: null,
|
|
935
849
|
tolerance: 1e-6,
|
|
936
850
|
passPointData: false,
|
|
@@ -945,28 +859,39 @@ var DEFAULT_VALUES = {
|
|
|
945
859
|
// Sandy brown
|
|
946
860
|
activePlaneColor: [227 / 255, 207 / 255, 87 / 255],
|
|
947
861
|
// Banana
|
|
948
|
-
triangulationErrorDisplay: false // _idList: null,
|
|
949
862
|
|
|
950
|
-
|
|
863
|
+
triangulationErrorDisplay: false
|
|
864
|
+
// _idList: null,
|
|
865
|
+
};
|
|
866
|
+
|
|
867
|
+
// ----------------------------------------------------------------------------
|
|
951
868
|
|
|
952
869
|
function extend(publicAPI, model) {
|
|
953
|
-
|
|
954
|
-
Object.assign(model, DEFAULT_VALUES, initialValues);
|
|
870
|
+
let initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
871
|
+
Object.assign(model, DEFAULT_VALUES, initialValues);
|
|
955
872
|
|
|
956
|
-
|
|
873
|
+
// Make this a VTK object
|
|
874
|
+
macro.obj(publicAPI, model);
|
|
957
875
|
|
|
876
|
+
// Also make it an algorithm with one input and one output
|
|
958
877
|
macro.algo(publicAPI, model, 1, 1);
|
|
959
878
|
macro.setGet(publicAPI, model, ['clippingPlanes', 'tolerance', 'passPointData', 'triangulatePolys', 'scalarMode', 'generateOutline', 'generateFaces', 'activePlaneId', 'triangulationErrorDisplay']);
|
|
960
|
-
macro.setGetArray(publicAPI, model, ['baseColor', 'clipColor', 'activePlaneColor'], 3);
|
|
879
|
+
macro.setGetArray(publicAPI, model, ['baseColor', 'clipColor', 'activePlaneColor'], 3);
|
|
961
880
|
|
|
881
|
+
// Object specific methods
|
|
962
882
|
vtkClipClosedSurface(publicAPI, model);
|
|
963
|
-
}
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
// ----------------------------------------------------------------------------
|
|
886
|
+
|
|
887
|
+
const newInstance = macro.newInstance(extend, 'vtkClipClosedSurface');
|
|
964
888
|
|
|
965
|
-
|
|
889
|
+
// ----------------------------------------------------------------------------
|
|
966
890
|
|
|
967
|
-
var vtkClipClosedSurface$1 =
|
|
968
|
-
newInstance
|
|
969
|
-
extend
|
|
970
|
-
|
|
891
|
+
var vtkClipClosedSurface$1 = {
|
|
892
|
+
newInstance,
|
|
893
|
+
extend,
|
|
894
|
+
...Constants
|
|
895
|
+
};
|
|
971
896
|
|
|
972
897
|
export { vtkClipClosedSurface$1 as default, extend, newInstance };
|