@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.
Files changed (566) hide show
  1. package/Common/Core/Base64.js +53 -82
  2. package/Common/Core/CellArray.js +52 -60
  3. package/Common/Core/ClassHierarchy.js +8 -36
  4. package/Common/Core/DataArray/Constants.js +6 -6
  5. package/Common/Core/DataArray.js +193 -277
  6. package/Common/Core/Endian.js +14 -17
  7. package/Common/Core/HalfFloat.js +17 -34
  8. package/Common/Core/ImageHelper.js +17 -25
  9. package/Common/Core/LookupTable.js +131 -144
  10. package/Common/Core/Math/Constants.js +8 -8
  11. package/Common/Core/Math/index.js +754 -942
  12. package/Common/Core/Math.js +2 -4
  13. package/Common/Core/MatrixBuilder.js +99 -151
  14. package/Common/Core/Points.js +43 -43
  15. package/Common/Core/PriorityQueue.js +30 -28
  16. package/Common/Core/ProgressHandler.js +31 -32
  17. package/Common/Core/ScalarsToColors/Constants.js +4 -4
  18. package/Common/Core/ScalarsToColors.js +196 -253
  19. package/Common/Core/StringArray.js +48 -73
  20. package/Common/Core/URLExtract.js +10 -29
  21. package/Common/Core/VariantArray.js +48 -73
  22. package/Common/Core.js +11 -11
  23. package/Common/DataModel/AbstractPointLocator.js +19 -17
  24. package/Common/DataModel/BoundingBox.js +322 -490
  25. package/Common/DataModel/Box.js +46 -63
  26. package/Common/DataModel/CardinalSpline1D.js +92 -102
  27. package/Common/DataModel/Cell.js +41 -61
  28. package/Common/DataModel/CellLinks.js +91 -127
  29. package/Common/DataModel/CellTypes/Constants.js +7 -6
  30. package/Common/DataModel/CellTypes.js +55 -74
  31. package/Common/DataModel/Collection.js +45 -61
  32. package/Common/DataModel/Cone.js +28 -20
  33. package/Common/DataModel/Cylinder.js +41 -35
  34. package/Common/DataModel/DataSet/Constants.js +11 -5
  35. package/Common/DataModel/DataSet.js +37 -25
  36. package/Common/DataModel/DataSetAttributes/Constants.js +18 -18
  37. package/Common/DataModel/DataSetAttributes/FieldData.js +103 -194
  38. package/Common/DataModel/DataSetAttributes.js +96 -138
  39. package/Common/DataModel/EdgeLocator.js +45 -70
  40. package/Common/DataModel/ITKHelper.js +67 -137
  41. package/Common/DataModel/ImageData.js +115 -172
  42. package/Common/DataModel/ImplicitBoolean/Constants.js +2 -2
  43. package/Common/DataModel/ImplicitBoolean.js +66 -96
  44. package/Common/DataModel/IncrementalOctreeNode.js +201 -231
  45. package/Common/DataModel/IncrementalOctreePointLocator.js +160 -198
  46. package/Common/DataModel/KochanekSpline1D.js +78 -81
  47. package/Common/DataModel/Line/Constants.js +2 -2
  48. package/Common/DataModel/Line.js +82 -105
  49. package/Common/DataModel/Locator.js +17 -10
  50. package/Common/DataModel/Molecule.js +26 -17
  51. package/Common/DataModel/PiecewiseFunction.js +218 -239
  52. package/Common/DataModel/Plane.js +90 -113
  53. package/Common/DataModel/PointSet.js +30 -26
  54. package/Common/DataModel/PolyData/Constants.js +2 -2
  55. package/Common/DataModel/PolyData.js +95 -120
  56. package/Common/DataModel/PolyLine.js +44 -61
  57. package/Common/DataModel/Polygon/Constants.js +4 -4
  58. package/Common/DataModel/Polygon.js +128 -169
  59. package/Common/DataModel/Quad/Constants.js +2 -2
  60. package/Common/DataModel/Quad.js +61 -100
  61. package/Common/DataModel/SelectionNode/Constants.js +5 -4
  62. package/Common/DataModel/SelectionNode.js +25 -21
  63. package/Common/DataModel/Sphere.js +40 -35
  64. package/Common/DataModel/Spline1D/Constants.js +3 -2
  65. package/Common/DataModel/Spline1D.js +34 -18
  66. package/Common/DataModel/Spline3D/Constants.js +2 -2
  67. package/Common/DataModel/Spline3D.js +46 -41
  68. package/Common/DataModel/StructuredData/Constants.js +2 -2
  69. package/Common/DataModel/StructuredData.js +9 -20
  70. package/Common/DataModel/Triangle.js +207 -250
  71. package/Common/DataModel.js +19 -19
  72. package/Common/System/MobileVR.js +56 -61
  73. package/Common/System/TimerLog.js +1 -1
  74. package/Common/System.js +2 -2
  75. package/Common/Transform/LandmarkTransform/Constants.js +2 -2
  76. package/Common/Transform/LandmarkTransform.js +133 -117
  77. package/Common/Transform/Transform.js +42 -57
  78. package/Common/Transform.js +2 -2
  79. package/Common/index.js +4 -4
  80. package/Filters/Core/Cutter.js +134 -146
  81. package/Filters/Core/PolyDataNormals.js +44 -50
  82. package/Filters/Core.js +2 -2
  83. package/Filters/Cornerstone/ImageDataToCornerstoneImage.js +45 -33
  84. package/Filters/Cornerstone.js +1 -1
  85. package/Filters/General/AppendPolyData.js +84 -100
  86. package/Filters/General/Calculator.js +95 -163
  87. package/Filters/General/ClipClosedSurface/Constants.js +2 -2
  88. package/Filters/General/ClipClosedSurface.js +341 -416
  89. package/Filters/General/ClosedPolyLineToSurfaceFilter.js +141 -156
  90. package/Filters/General/ContourTriangulator/Constants.js +2 -2
  91. package/Filters/General/ContourTriangulator/helper.js +684 -812
  92. package/Filters/General/ContourTriangulator.js +92 -89
  93. package/Filters/General/ImageCropFilter.js +77 -78
  94. package/Filters/General/ImageDataOutlineFilter.js +42 -36
  95. package/Filters/General/ImageMarchingCubes/caseTable.js +9 -521
  96. package/Filters/General/ImageMarchingCubes.js +99 -112
  97. package/Filters/General/ImageMarchingSquares/caseTable.js +9 -41
  98. package/Filters/General/ImageMarchingSquares.js +93 -118
  99. package/Filters/General/ImageOutlineFilter.js +53 -54
  100. package/Filters/General/ImageSliceFilter.js +39 -30
  101. package/Filters/General/ImageStreamline.js +107 -124
  102. package/Filters/General/LineFilter.js +26 -15
  103. package/Filters/General/MoleculeToRepresentation.js +136 -149
  104. package/Filters/General/OBBTree/OBBNode.js +36 -34
  105. package/Filters/General/OBBTree/helper.js +19 -24
  106. package/Filters/General/OBBTree.js +396 -488
  107. package/Filters/General/OutlineFilter.js +52 -34
  108. package/Filters/General/PaintFilter/PaintFilter.worker.js +93 -130
  109. package/Filters/General/PaintFilter.js +150 -162
  110. package/Filters/General/ScalarToRGBA.js +38 -33
  111. package/Filters/General/TriangleFilter.js +65 -62
  112. package/Filters/General/TubeFilter/Constants.js +4 -4
  113. package/Filters/General/TubeFilter.js +376 -496
  114. package/Filters/General/WarpScalar.js +58 -60
  115. package/Filters/General/WindowedSincPolyDataFilter.js +258 -330
  116. package/Filters/General.js +21 -21
  117. package/Filters/Sources/Arrow2DSource/Constants.js +2 -2
  118. package/Filters/Sources/Arrow2DSource.js +56 -56
  119. package/Filters/Sources/ArrowSource.js +39 -29
  120. package/Filters/Sources/CircleSource.js +43 -43
  121. package/Filters/Sources/ConcentricCylinderSource.js +151 -174
  122. package/Filters/Sources/ConeSource.js +51 -42
  123. package/Filters/Sources/CubeSource.js +75 -96
  124. package/Filters/Sources/Cursor3D.js +94 -109
  125. package/Filters/Sources/CylinderSource.js +90 -90
  126. package/Filters/Sources/ImageGridSource.js +43 -43
  127. package/Filters/Sources/LineSource.js +49 -39
  128. package/Filters/Sources/PlaneSource.js +97 -104
  129. package/Filters/Sources/PointSource.js +46 -37
  130. package/Filters/Sources/RTAnalyticSource.js +50 -48
  131. package/Filters/Sources/SLICSource.js +63 -73
  132. package/Filters/Sources/SphereSource.js +88 -78
  133. package/Filters/Sources/ViewFinderSource.js +26 -23
  134. package/Filters/Sources.js +14 -14
  135. package/Filters/Texture/TextureMapToPlane.js +95 -97
  136. package/Filters/Texture/TextureMapToSphere.js +46 -54
  137. package/Filters/Texture.js +2 -2
  138. package/Filters/index.js +5 -5
  139. package/IO/Core/BinaryHelper.js +12 -18
  140. package/IO/Core/DataAccessHelper/HtmlDataAccessHelper.js +43 -59
  141. package/IO/Core/DataAccessHelper/HttpDataAccessHelper.js +76 -113
  142. package/IO/Core/DataAccessHelper/JSZipDataAccessHelper.js +62 -112
  143. package/IO/Core/DataAccessHelper/LiteHttpDataAccessHelper.js +76 -113
  144. package/IO/Core/DataAccessHelper.js +6 -6
  145. package/IO/Core/HttpDataSetReader.js +136 -139
  146. package/IO/Core/HttpDataSetSeriesReader.js +64 -75
  147. package/IO/Core/HttpSceneLoader.js +130 -179
  148. package/IO/Core/ImageStream/DefaultProtocol.js +29 -43
  149. package/IO/Core/ImageStream/ViewStream.js +100 -103
  150. package/IO/Core/ImageStream.js +62 -54
  151. package/IO/Core/ResourceLoader.js +10 -9
  152. package/IO/Core/Serializer/ArraySerializer.js +40 -40
  153. package/IO/Core/Serializer/FieldDataSerializer.js +18 -28
  154. package/IO/Core/Serializer/ImageDataSerializer.js +22 -23
  155. package/IO/Core/Serializer/PolyDataSerializer.js +17 -21
  156. package/IO/Core/Serializer.js +6 -13
  157. package/IO/Core/WSLinkClient.js +90 -76
  158. package/IO/Core/ZipMultiDataSetReader.js +46 -44
  159. package/IO/Core/ZipMultiDataSetWriter.js +43 -34
  160. package/IO/Core.js +7 -7
  161. package/IO/Geometry/DracoReader.js +118 -121
  162. package/IO/Geometry/PLYReader.js +163 -223
  163. package/IO/Geometry/PLYWriter/Constants.js +5 -5
  164. package/IO/Geometry/PLYWriter.js +139 -154
  165. package/IO/Geometry/STLReader.js +123 -146
  166. package/IO/Geometry/STLWriter/Constants.js +2 -2
  167. package/IO/Geometry/STLWriter.js +83 -82
  168. package/IO/Geometry.js +5 -5
  169. package/IO/Legacy/LegacyAsciiParser.js +78 -139
  170. package/IO/Legacy/PolyDataReader.js +48 -36
  171. package/IO/Legacy.js +2 -2
  172. package/IO/Misc/ElevationReader.js +67 -60
  173. package/IO/Misc/HttpDataSetLODsLoader.js +41 -38
  174. package/IO/Misc/ITKImageReader.js +58 -45
  175. package/IO/Misc/ITKPolyDataReader.js +50 -38
  176. package/IO/Misc/JSONNucleoReader.js +49 -42
  177. package/IO/Misc/JSONReader.js +38 -33
  178. package/IO/Misc/MTLReader.js +74 -119
  179. package/IO/Misc/OBJReader.js +153 -206
  180. package/IO/Misc/PDBReader.js +70 -68
  181. package/IO/Misc/SkyboxReader.js +77 -82
  182. package/IO/Misc.js +9 -9
  183. package/IO/XML/XMLImageDataReader.js +36 -38
  184. package/IO/XML/XMLImageDataWriter.js +28 -21
  185. package/IO/XML/XMLPolyDataReader.js +49 -46
  186. package/IO/XML/XMLPolyDataWriter.js +43 -42
  187. package/IO/XML/XMLReader.js +262 -304
  188. package/IO/XML/XMLWriter/Constants.js +3 -3
  189. package/IO/XML/XMLWriter.js +70 -84
  190. package/IO/XML.js +6 -6
  191. package/IO/index.js +5 -5
  192. package/Imaging/Core/AbstractImageInterpolator/Constants.js +4 -4
  193. package/Imaging/Core/AbstractImageInterpolator/InterpolationInfo.js +30 -27
  194. package/Imaging/Core/AbstractImageInterpolator.js +74 -87
  195. package/Imaging/Core/ImageInterpolator.js +201 -252
  196. package/Imaging/Core/ImagePointDataIterator.js +96 -122
  197. package/Imaging/Core/ImageReslice/Constants.js +2 -2
  198. package/Imaging/Core/ImageReslice.js +327 -464
  199. package/Imaging/Core.js +4 -4
  200. package/Imaging/Hybrid/SampleFunction.js +58 -51
  201. package/Imaging/Hybrid.js +1 -1
  202. package/Imaging/index.js +2 -2
  203. package/Interaction/Animations/TimeStepBasedAnimationHandler.js +39 -54
  204. package/Interaction/Manipulators/CompositeCameraManipulator.js +22 -13
  205. package/Interaction/Manipulators/CompositeGestureManipulator.js +31 -43
  206. package/Interaction/Manipulators/CompositeKeyboardManipulator.js +15 -11
  207. package/Interaction/Manipulators/CompositeMouseManipulator.js +27 -33
  208. package/Interaction/Manipulators/CompositeVRManipulator.js +22 -15
  209. package/Interaction/Manipulators/GestureCameraManipulator.js +54 -36
  210. package/Interaction/Manipulators/KeyboardCameraManipulator.js +95 -97
  211. package/Interaction/Manipulators/MouseBoxSelectorManipulator.js +70 -89
  212. package/Interaction/Manipulators/MouseCameraAxisRotateManipulator.js +67 -54
  213. package/Interaction/Manipulators/MouseCameraSliceManipulator.js +40 -38
  214. package/Interaction/Manipulators/MouseCameraTrackballFirstPersonManipulator.js +83 -68
  215. package/Interaction/Manipulators/MouseCameraTrackballMultiRotateManipulator.js +32 -28
  216. package/Interaction/Manipulators/MouseCameraTrackballPanManipulator.js +47 -40
  217. package/Interaction/Manipulators/MouseCameraTrackballRollManipulator.js +55 -43
  218. package/Interaction/Manipulators/MouseCameraTrackballRotateManipulator.js +56 -46
  219. package/Interaction/Manipulators/MouseCameraTrackballZoomManipulator.js +41 -46
  220. package/Interaction/Manipulators/MouseCameraTrackballZoomToMouseManipulator.js +29 -27
  221. package/Interaction/Manipulators/MouseCameraUnicamManipulator.js +123 -146
  222. package/Interaction/Manipulators/MouseCameraUnicamRotateManipulator.js +144 -166
  223. package/Interaction/Manipulators/MouseRangeManipulator.js +127 -132
  224. package/Interaction/Manipulators/VRButtonPanManipulator.js +33 -23
  225. package/Interaction/Manipulators.js +21 -21
  226. package/Interaction/Misc/DeviceOrientationToCamera.js +25 -47
  227. package/Interaction/Misc.js +1 -1
  228. package/Interaction/Style/InteractorStyleImage.js +101 -121
  229. package/Interaction/Style/InteractorStyleMPRSlice.js +111 -128
  230. package/Interaction/Style/InteractorStyleManipulator/Presets.js +9 -17
  231. package/Interaction/Style/InteractorStyleManipulator.js +254 -329
  232. package/Interaction/Style/InteractorStyleRemoteMouse.js +195 -180
  233. package/Interaction/Style/InteractorStyleTrackballCamera.js +154 -157
  234. package/Interaction/Style/InteractorStyleUnicam.js +30 -38
  235. package/Interaction/Style.js +5 -5
  236. package/Interaction/UI/CornerAnnotation/CornerAnnotation.module.css.js +1 -1
  237. package/Interaction/UI/CornerAnnotation.js +65 -48
  238. package/Interaction/UI/FPSMonitor.js +104 -105
  239. package/Interaction/UI/Icons.js +1 -1
  240. package/Interaction/UI/Slider/Constants.js +2 -2
  241. package/Interaction/UI/Slider.js +78 -95
  242. package/Interaction/UI/VolumeController.js +104 -97
  243. package/Interaction/UI.js +5 -5
  244. package/Interaction/Widgets/OrientationMarkerWidget/Constants.js +2 -2
  245. package/Interaction/Widgets/OrientationMarkerWidget.js +90 -135
  246. package/Interaction/Widgets/PiecewiseGaussianWidget/ComputeHistogram.worker.js +0 -3
  247. package/Interaction/Widgets/PiecewiseGaussianWidget.js +381 -498
  248. package/Interaction/Widgets.js +2 -2
  249. package/Interaction/index.js +5 -5
  250. package/Proxy/Animation/AbstractAnimationProxy.js +22 -15
  251. package/Proxy/Animation/AnimationProxyManager.js +43 -51
  252. package/Proxy/Animation/TimeStepBasedAnimationHandlerProxy.js +26 -19
  253. package/Proxy/Core/AbstractRepresentationProxy.js +97 -151
  254. package/Proxy/Core/LookupTableProxy/Constants.js +4 -4
  255. package/Proxy/Core/LookupTableProxy.js +49 -52
  256. package/Proxy/Core/PiecewiseFunctionProxy/Constants.js +4 -4
  257. package/Proxy/Core/PiecewiseFunctionProxy.js +63 -72
  258. package/Proxy/Core/ProxyManager/core.js +83 -106
  259. package/Proxy/Core/ProxyManager/properties.js +53 -76
  260. package/Proxy/Core/ProxyManager/state.js +100 -110
  261. package/Proxy/Core/ProxyManager/view.js +45 -55
  262. package/Proxy/Core/ProxyManager.js +16 -8
  263. package/Proxy/Core/SourceProxy.js +41 -38
  264. package/Proxy/Core/View2DProxy.js +143 -199
  265. package/Proxy/Core/ViewProxy.js +223 -269
  266. package/Proxy/Core.js +7 -7
  267. package/Proxy/Representations/GeometryRepresentationProxy.js +34 -20
  268. package/Proxy/Representations/GlyphRepresentationProxy.js +42 -41
  269. package/Proxy/Representations/MoleculeRepresentationProxy.js +32 -22
  270. package/Proxy/Representations/ResliceRepresentationProxy.js +48 -32
  271. package/Proxy/Representations/SkyboxRepresentationProxy.js +30 -29
  272. package/Proxy/Representations/SliceRepresentationProxy.js +93 -112
  273. package/Proxy/Representations/SlicedGeometryRepresentationProxy.js +46 -42
  274. package/Proxy/Representations/VolumeRepresentationProxy.js +108 -133
  275. package/Proxy/Representations.js +7 -7
  276. package/Proxy/index.js +2 -2
  277. package/README.md +1 -1
  278. package/Rendering/Core/AbstractImageMapper/helper.js +44 -49
  279. package/Rendering/Core/AbstractImageMapper.js +18 -19
  280. package/Rendering/Core/AbstractMapper.js +39 -55
  281. package/Rendering/Core/AbstractMapper3D.js +26 -31
  282. package/Rendering/Core/AbstractPicker.js +25 -21
  283. package/Rendering/Core/Actor.js +71 -93
  284. package/Rendering/Core/Actor2D.js +64 -78
  285. package/Rendering/Core/AnnotatedCubeActor/Presets.js +5 -11
  286. package/Rendering/Core/AnnotatedCubeActor.js +94 -79
  287. package/Rendering/Core/AxesActor.js +65 -87
  288. package/Rendering/Core/Camera.js +246 -271
  289. package/Rendering/Core/CellPicker.js +125 -148
  290. package/Rendering/Core/ColorTransferFunction/ColorMaps.js +20 -21
  291. package/Rendering/Core/ColorTransferFunction/ColorMapsLite.js +20 -21
  292. package/Rendering/Core/ColorTransferFunction/Constants.js +4 -4
  293. package/Rendering/Core/ColorTransferFunction.js +460 -546
  294. package/Rendering/Core/Coordinate/Constants.js +2 -2
  295. package/Rendering/Core/Coordinate.js +119 -198
  296. package/Rendering/Core/CubeAxesActor.js +294 -320
  297. package/Rendering/Core/Follower.js +46 -45
  298. package/Rendering/Core/Glyph3DMapper/Constants.js +4 -4
  299. package/Rendering/Core/Glyph3DMapper.js +96 -148
  300. package/Rendering/Core/HardwareSelector.js +36 -69
  301. package/Rendering/Core/ImageArrayMapper.js +87 -126
  302. package/Rendering/Core/ImageCPRMapper.js +134 -209
  303. package/Rendering/Core/ImageMapper/Constants.js +2 -2
  304. package/Rendering/Core/ImageMapper.js +85 -144
  305. package/Rendering/Core/ImageProperty/Constants.js +2 -2
  306. package/Rendering/Core/ImageProperty.js +66 -81
  307. package/Rendering/Core/ImageResliceMapper/Constants.js +2 -2
  308. package/Rendering/Core/ImageResliceMapper.js +36 -29
  309. package/Rendering/Core/ImageSlice.js +85 -127
  310. package/Rendering/Core/InteractorObserver.js +82 -73
  311. package/Rendering/Core/InteractorStyle/Constants.js +2 -2
  312. package/Rendering/Core/InteractorStyle.js +56 -58
  313. package/Rendering/Core/Light.js +43 -49
  314. package/Rendering/Core/Mapper/CoincidentTopologyHelper.js +37 -48
  315. package/Rendering/Core/Mapper/Constants.js +6 -6
  316. package/Rendering/Core/Mapper/Static.js +15 -12
  317. package/Rendering/Core/Mapper.js +194 -259
  318. package/Rendering/Core/Mapper2D.js +61 -100
  319. package/Rendering/Core/Picker.js +124 -143
  320. package/Rendering/Core/PixelSpaceCallbackMapper.js +40 -37
  321. package/Rendering/Core/PointPicker.js +68 -79
  322. package/Rendering/Core/Prop/Constants.js +2 -2
  323. package/Rendering/Core/Prop.js +58 -106
  324. package/Rendering/Core/Prop3D.js +54 -83
  325. package/Rendering/Core/Property/Constants.js +6 -6
  326. package/Rendering/Core/Property.js +45 -74
  327. package/Rendering/Core/Property2D/Constants.js +2 -2
  328. package/Rendering/Core/Property2D.js +33 -42
  329. package/Rendering/Core/RenderWindow.js +70 -82
  330. package/Rendering/Core/RenderWindowInteractor/Constants.js +7 -7
  331. package/Rendering/Core/RenderWindowInteractor.js +324 -439
  332. package/Rendering/Core/Renderer.js +192 -256
  333. package/Rendering/Core/ScalarBarActor.js +267 -272
  334. package/Rendering/Core/Skybox.js +26 -24
  335. package/Rendering/Core/SphereMapper.js +22 -12
  336. package/Rendering/Core/StickMapper.js +22 -12
  337. package/Rendering/Core/SurfaceLICInterface/Constants.js +6 -6
  338. package/Rendering/Core/SurfaceLICInterface.js +13 -9
  339. package/Rendering/Core/SurfaceLICMapper.js +23 -15
  340. package/Rendering/Core/Texture.js +99 -141
  341. package/Rendering/Core/Viewport.js +60 -88
  342. package/Rendering/Core/Volume.js +55 -77
  343. package/Rendering/Core/VolumeMapper/Constants.js +4 -4
  344. package/Rendering/Core/VolumeMapper.js +59 -91
  345. package/Rendering/Core/VolumeProperty/Constants.js +4 -4
  346. package/Rendering/Core/VolumeProperty.js +78 -115
  347. package/Rendering/Core.js +47 -49
  348. package/Rendering/Misc/CanvasView.js +62 -61
  349. package/Rendering/Misc/FullScreenRenderWindow.js +60 -62
  350. package/Rendering/Misc/GenericRenderWindow.js +48 -37
  351. package/Rendering/Misc/RemoteView.js +86 -80
  352. package/Rendering/Misc/RenderWindowWithControlBar.js +54 -48
  353. package/Rendering/Misc/SynchronizableRenderWindow/BehaviorManager/CameraSynchronizer.js +43 -51
  354. package/Rendering/Misc/SynchronizableRenderWindow/BehaviorManager.js +52 -82
  355. package/Rendering/Misc/SynchronizableRenderWindow/ObjectManager.js +258 -308
  356. package/Rendering/Misc/SynchronizableRenderWindow.js +133 -163
  357. package/Rendering/Misc/TextureLODsDownloader.js +72 -74
  358. package/Rendering/Misc.js +7 -7
  359. package/Rendering/OpenGL/Actor.js +57 -68
  360. package/Rendering/OpenGL/Actor2D.js +56 -56
  361. package/Rendering/OpenGL/BufferObject/Constants.js +2 -2
  362. package/Rendering/OpenGL/BufferObject.js +50 -65
  363. package/Rendering/OpenGL/Camera.js +35 -29
  364. package/Rendering/OpenGL/CellArrayBufferObject.js +119 -149
  365. package/Rendering/OpenGL/Convolution2DPass.js +87 -81
  366. package/Rendering/OpenGL/CubeAxesActor.js +28 -21
  367. package/Rendering/OpenGL/ForwardPass.js +53 -64
  368. package/Rendering/OpenGL/Framebuffer.js +61 -101
  369. package/Rendering/OpenGL/Glyph3DMapper.js +165 -196
  370. package/Rendering/OpenGL/HardwareSelector/Constants.js +2 -2
  371. package/Rendering/OpenGL/HardwareSelector.js +272 -397
  372. package/Rendering/OpenGL/Helper.js +58 -73
  373. package/Rendering/OpenGL/ImageCPRMapper.js +339 -421
  374. package/Rendering/OpenGL/ImageMapper.js +268 -361
  375. package/Rendering/OpenGL/ImageResliceMapper.js +306 -438
  376. package/Rendering/OpenGL/ImageSlice.js +48 -54
  377. package/Rendering/OpenGL/OrderIndependentTranslucentPass.js +102 -84
  378. package/Rendering/OpenGL/PixelSpaceCallbackMapper.js +43 -42
  379. package/Rendering/OpenGL/PolyDataMapper.js +358 -492
  380. package/Rendering/OpenGL/PolyDataMapper2D.js +153 -205
  381. package/Rendering/OpenGL/RadialDistortionPass.js +86 -89
  382. package/Rendering/OpenGL/RenderWindow/Constants.js +2 -2
  383. package/Rendering/OpenGL/RenderWindow/ContextProxy.js +20 -29
  384. package/Rendering/OpenGL/RenderWindow.js +356 -510
  385. package/Rendering/OpenGL/Renderer.js +77 -89
  386. package/Rendering/OpenGL/ReplacementShaderMapper.js +28 -46
  387. package/Rendering/OpenGL/ScalarBarActor.js +28 -21
  388. package/Rendering/OpenGL/Shader.js +37 -31
  389. package/Rendering/OpenGL/ShaderCache.js +67 -74
  390. package/Rendering/OpenGL/ShaderProgram.js +136 -248
  391. package/Rendering/OpenGL/Skybox.js +99 -60
  392. package/Rendering/OpenGL/SphereMapper.js +94 -108
  393. package/Rendering/OpenGL/StickMapper.js +110 -114
  394. package/Rendering/OpenGL/SurfaceLIC/LineIntegralConvolution2D/pingpong.js +91 -157
  395. package/Rendering/OpenGL/SurfaceLIC/LineIntegralConvolution2D.js +142 -151
  396. package/Rendering/OpenGL/SurfaceLIC/SurfaceLICInterface.js +142 -216
  397. package/Rendering/OpenGL/SurfaceLIC/SurfaceLICMapper.js +79 -100
  398. package/Rendering/OpenGL/SurfaceLIC.js +2 -2
  399. package/Rendering/OpenGL/Texture/Constants.js +4 -4
  400. package/Rendering/OpenGL/Texture.js +443 -608
  401. package/Rendering/OpenGL/TextureUnitManager.js +47 -43
  402. package/Rendering/OpenGL/VertexArrayObject.js +92 -131
  403. package/Rendering/OpenGL/ViewNodeFactory.js +25 -13
  404. package/Rendering/OpenGL/Volume.js +38 -34
  405. package/Rendering/OpenGL/VolumeMapper.js +437 -547
  406. package/Rendering/OpenGL.js +28 -28
  407. package/Rendering/SceneGraph/RenderPass.js +34 -31
  408. package/Rendering/SceneGraph/RenderWindowViewNode.js +68 -94
  409. package/Rendering/SceneGraph/ViewNode.js +82 -111
  410. package/Rendering/SceneGraph/ViewNodeFactory.js +31 -26
  411. package/Rendering/SceneGraph.js +4 -4
  412. package/Rendering/WebGPU/Actor.js +49 -49
  413. package/Rendering/WebGPU/Actor2D.js +45 -44
  414. package/Rendering/WebGPU/BindGroup.js +43 -50
  415. package/Rendering/WebGPU/Buffer.js +41 -50
  416. package/Rendering/WebGPU/BufferManager/Constants.js +4 -4
  417. package/Rendering/WebGPU/BufferManager.js +111 -141
  418. package/Rendering/WebGPU/Camera.js +65 -67
  419. package/Rendering/WebGPU/CellArrayMapper.js +621 -388
  420. package/Rendering/WebGPU/CubeAxesActor.js +28 -19
  421. package/Rendering/WebGPU/Device.js +78 -133
  422. package/Rendering/WebGPU/ForwardPass.js +75 -72
  423. package/Rendering/WebGPU/FullScreenQuad.js +25 -18
  424. package/Rendering/WebGPU/Glyph3DMapper.js +62 -74
  425. package/Rendering/WebGPU/HardwareSelectionPass.js +45 -38
  426. package/Rendering/WebGPU/HardwareSelector.js +200 -276
  427. package/Rendering/WebGPU/ImageMapper.js +180 -171
  428. package/Rendering/WebGPU/ImageSlice.js +45 -44
  429. package/Rendering/WebGPU/IndexBuffer.js +166 -200
  430. package/Rendering/WebGPU/OpaquePass.js +37 -36
  431. package/Rendering/WebGPU/OrderIndependentTranslucentPass.js +72 -45
  432. package/Rendering/WebGPU/Pipeline.js +37 -51
  433. package/Rendering/WebGPU/PixelSpaceCallbackMapper.js +27 -19
  434. package/Rendering/WebGPU/PolyDataMapper.js +50 -53
  435. package/Rendering/WebGPU/PolyDataMapper2D.js +39 -39
  436. package/Rendering/WebGPU/RenderEncoder.js +68 -88
  437. package/Rendering/WebGPU/RenderWindow.js +262 -376
  438. package/Rendering/WebGPU/Renderer.js +224 -208
  439. package/Rendering/WebGPU/Sampler.js +27 -21
  440. package/Rendering/WebGPU/ScalarBarActor.js +28 -19
  441. package/Rendering/WebGPU/ShaderCache.js +43 -41
  442. package/Rendering/WebGPU/ShaderDescription.js +52 -59
  443. package/Rendering/WebGPU/ShaderModule.js +26 -17
  444. package/Rendering/WebGPU/SimpleMapper.js +185 -121
  445. package/Rendering/WebGPU/SphereMapper.js +200 -130
  446. package/Rendering/WebGPU/StickMapper.js +289 -152
  447. package/Rendering/WebGPU/StorageBuffer.js +100 -115
  448. package/Rendering/WebGPU/Texture.js +79 -99
  449. package/Rendering/WebGPU/TextureManager.js +52 -54
  450. package/Rendering/WebGPU/TextureView.js +40 -43
  451. package/Rendering/WebGPU/Types.js +53 -70
  452. package/Rendering/WebGPU/UniformBuffer.js +158 -184
  453. package/Rendering/WebGPU/VertexInput.js +64 -90
  454. package/Rendering/WebGPU/ViewNodeFactory.js +25 -13
  455. package/Rendering/WebGPU/Volume.js +52 -51
  456. package/Rendering/WebGPU/VolumePass.js +218 -239
  457. package/Rendering/WebGPU/VolumePassFSQ.js +625 -306
  458. package/Rendering/WebGPU.js +1 -1
  459. package/Rendering/index.js +5 -5
  460. package/Widgets/Core/AbstractWidget/Constants.js +2 -2
  461. package/Widgets/Core/AbstractWidget.js +49 -58
  462. package/Widgets/Core/AbstractWidgetFactory.js +101 -122
  463. package/Widgets/Core/StateBuilder/boundsMixin.js +23 -28
  464. package/Widgets/Core/StateBuilder/color3Mixin.js +10 -7
  465. package/Widgets/Core/StateBuilder/colorMixin.js +10 -6
  466. package/Widgets/Core/StateBuilder/cornerMixin.js +16 -15
  467. package/Widgets/Core/StateBuilder/directionMixin.js +20 -18
  468. package/Widgets/Core/StateBuilder/manipulatorMixin.js +26 -18
  469. package/Widgets/Core/StateBuilder/nameMixin.js +10 -6
  470. package/Widgets/Core/StateBuilder/orientationMixin.js +19 -16
  471. package/Widgets/Core/StateBuilder/originMixin.js +25 -32
  472. package/Widgets/Core/StateBuilder/scale1Mixin.js +10 -6
  473. package/Widgets/Core/StateBuilder/scale3Mixin.js +10 -6
  474. package/Widgets/Core/StateBuilder/shapeMixin.js +12 -6
  475. package/Widgets/Core/StateBuilder/textMixin.js +10 -6
  476. package/Widgets/Core/StateBuilder/visibleMixin.js +10 -6
  477. package/Widgets/Core/StateBuilder.js +120 -149
  478. package/Widgets/Core/WidgetManager/Constants.js +7 -7
  479. package/Widgets/Core/WidgetManager.js +249 -421
  480. package/Widgets/Core/WidgetState.js +48 -57
  481. package/Widgets/Core.js +5 -5
  482. package/Widgets/Manipulators/AbstractManipulator.js +20 -14
  483. package/Widgets/Manipulators/CPRManipulator.js +55 -71
  484. package/Widgets/Manipulators/LineManipulator.js +31 -28
  485. package/Widgets/Manipulators/PickerManipulator.d.ts +48 -0
  486. package/Widgets/Manipulators/PickerManipulator.js +65 -0
  487. package/Widgets/Manipulators/PlaneManipulator.js +26 -23
  488. package/Widgets/Manipulators/TrackballManipulator.js +39 -35
  489. package/Widgets/Manipulators.js +4 -2
  490. package/Widgets/Representations/ArrowHandleRepresentation.js +148 -162
  491. package/Widgets/Representations/CircleContextRepresentation.js +44 -38
  492. package/Widgets/Representations/ContextRepresentation.js +17 -14
  493. package/Widgets/Representations/ConvexFaceContextRepresentation.js +50 -47
  494. package/Widgets/Representations/CroppingOutlineRepresentation.js +38 -27
  495. package/Widgets/Representations/CubeHandleRepresentation.js +21 -18
  496. package/Widgets/Representations/GlyphRepresentation.js +107 -152
  497. package/Widgets/Representations/HandleRepresentation.js +17 -14
  498. package/Widgets/Representations/ImplicitPlaneRepresentation.js +97 -91
  499. package/Widgets/Representations/LineHandleRepresentation.js +44 -41
  500. package/Widgets/Representations/OutlineContextRepresentation.js +42 -36
  501. package/Widgets/Representations/PolyLineRepresentation.js +60 -75
  502. package/Widgets/Representations/RectangleContextRepresentation.js +42 -37
  503. package/Widgets/Representations/SphereContextRepresentation.js +19 -27
  504. package/Widgets/Representations/SphereHandleRepresentation.js +31 -27
  505. package/Widgets/Representations/SplineContextRepresentation.js +46 -70
  506. package/Widgets/Representations/WidgetRepresentation/Constants.js +2 -2
  507. package/Widgets/Representations/WidgetRepresentation.js +99 -134
  508. package/Widgets/Representations.js +13 -13
  509. package/Widgets/Widgets3D/AngleWidget/behavior.js +41 -63
  510. package/Widgets/Widgets3D/AngleWidget.js +40 -38
  511. package/Widgets/Widgets3D/DistanceWidget/behavior.js +40 -61
  512. package/Widgets/Widgets3D/DistanceWidget.js +38 -36
  513. package/Widgets/Widgets3D/EllipseWidget/behavior.js +14 -19
  514. package/Widgets/Widgets3D/EllipseWidget/state.js +4 -2
  515. package/Widgets/Widgets3D/EllipseWidget.js +37 -26
  516. package/Widgets/Widgets3D/ImageCroppingWidget/behavior.js +26 -56
  517. package/Widgets/Widgets3D/ImageCroppingWidget/helpers.js +14 -17
  518. package/Widgets/Widgets3D/ImageCroppingWidget/state.js +20 -16
  519. package/Widgets/Widgets3D/ImageCroppingWidget.js +80 -98
  520. package/Widgets/Widgets3D/ImplicitPlaneWidget.js +55 -77
  521. package/Widgets/Widgets3D/InteractiveOrientationWidget/behavior.js +17 -18
  522. package/Widgets/Widgets3D/InteractiveOrientationWidget/state.js +15 -7
  523. package/Widgets/Widgets3D/InteractiveOrientationWidget.js +30 -29
  524. package/Widgets/Widgets3D/LabelWidget/behavior.js +37 -62
  525. package/Widgets/Widgets3D/LabelWidget.js +31 -25
  526. package/Widgets/Widgets3D/LineWidget/Constants.js +8 -8
  527. package/Widgets/Widgets3D/LineWidget/behavior.js +77 -114
  528. package/Widgets/Widgets3D/LineWidget/helpers.js +13 -20
  529. package/Widgets/Widgets3D/LineWidget/state.js +2 -1
  530. package/Widgets/Widgets3D/LineWidget.js +39 -35
  531. package/Widgets/Widgets3D/PaintWidget/behavior.js +24 -59
  532. package/Widgets/Widgets3D/PaintWidget.js +39 -37
  533. package/Widgets/Widgets3D/PolyLineWidget/behavior.js +44 -68
  534. package/Widgets/Widgets3D/PolyLineWidget.js +36 -31
  535. package/Widgets/Widgets3D/RectangleWidget/behavior.js +6 -11
  536. package/Widgets/Widgets3D/RectangleWidget/state.js +4 -2
  537. package/Widgets/Widgets3D/RectangleWidget.js +37 -25
  538. package/Widgets/Widgets3D/ResliceCursorWidget/Constants.js +35 -21
  539. package/Widgets/Widgets3D/ResliceCursorWidget/behavior.js +133 -209
  540. package/Widgets/Widgets3D/ResliceCursorWidget/cprBehavior.js +26 -41
  541. package/Widgets/Widgets3D/ResliceCursorWidget/helpers.js +89 -116
  542. package/Widgets/Widgets3D/ResliceCursorWidget/state.js +33 -40
  543. package/Widgets/Widgets3D/ResliceCursorWidget.js +186 -227
  544. package/Widgets/Widgets3D/SeedWidget/behavior.js +82 -0
  545. package/Widgets/Widgets3D/SeedWidget/state.js +18 -0
  546. package/Widgets/Widgets3D/SeedWidget.d.ts +44 -0
  547. package/Widgets/Widgets3D/SeedWidget.js +43 -0
  548. package/Widgets/Widgets3D/ShapeWidget/Constants.js +19 -19
  549. package/Widgets/Widgets3D/ShapeWidget/behavior.js +150 -252
  550. package/Widgets/Widgets3D/ShapeWidget.js +24 -27
  551. package/Widgets/Widgets3D/SphereWidget/behavior.js +35 -69
  552. package/Widgets/Widgets3D/SphereWidget/state.js +9 -5
  553. package/Widgets/Widgets3D/SphereWidget.js +34 -44
  554. package/Widgets/Widgets3D/SplineWidget/behavior.js +85 -120
  555. package/Widgets/Widgets3D/SplineWidget.js +43 -39
  556. package/Widgets/Widgets3D.js +15 -15
  557. package/Widgets/index.js +4 -4
  558. package/_virtual/rollup-plugin-worker-loader__module_Sources/Filters/General/PaintFilter/PaintFilter.worker.js +95 -207
  559. package/_virtual/rollup-plugin-worker-loader__module_Sources/Interaction/Widgets/PiecewiseGaussianWidget/ComputeHistogram.worker.js +0 -3
  560. package/favicon.js +5 -6
  561. package/index.d.ts +4 -2
  562. package/index.js +4 -3
  563. package/macros.js +4 -1931
  564. package/macros2.js +1684 -0
  565. package/package.json +6 -6
  566. package/vtk.js +18 -31
@@ -1,6 +1,4 @@
1
- import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
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 vtkBoundingBox from '../../Common/DataModel/BoundingBox.js';
5
3
  import vtkImageCropFilter from '../../Filters/General/ImageCropFilter.js';
6
4
  import vtkImageMapper from '../../Rendering/Core/ImageMapper.js';
@@ -9,35 +7,37 @@ import vtkVolume from '../../Rendering/Core/Volume.js';
9
7
  import vtkVolumeMapper from '../../Rendering/Core/VolumeMapper.js';
10
8
  import vtkAbstractRepresentationProxy from '../Core/AbstractRepresentationProxy.js';
11
9
 
10
+ // ----------------------------------------------------------------------------
11
+
12
12
  function sum(a, b) {
13
13
  return a + b;
14
- } // ----------------------------------------------------------------------------
14
+ }
15
15
 
16
+ // ----------------------------------------------------------------------------
16
17
 
17
18
  function mean() {
18
19
  for (var _len = arguments.length, array = new Array(_len), _key = 0; _key < _len; _key++) {
19
20
  array[_key] = arguments[_key];
20
21
  }
21
-
22
22
  return array.reduce(sum, 0) / array.length;
23
- } // ----------------------------------------------------------------------------
23
+ }
24
24
 
25
+ // ----------------------------------------------------------------------------
25
26
 
26
27
  function updateDomains(dataset, dataArray, model, updateProp) {
27
- var dataRange = dataArray.getRange();
28
- var spacing = dataset.getSpacing();
29
- var bounds = dataset.getBounds();
30
-
31
- var _model$mapperX$getClo = model.mapperX.getClosestIJKAxis(),
32
- xIJKAxis = _model$mapperX$getClo.ijkMode;
33
-
34
- var _model$mapperY$getClo = model.mapperY.getClosestIJKAxis(),
35
- yIJKAxis = _model$mapperY$getClo.ijkMode;
36
-
37
- var _model$mapperZ$getClo = model.mapperZ.getClosestIJKAxis(),
38
- zIJKAxis = _model$mapperZ$getClo.ijkMode;
39
-
40
- var propToUpdate = {
28
+ const dataRange = dataArray.getRange();
29
+ const spacing = dataset.getSpacing();
30
+ const bounds = dataset.getBounds();
31
+ const {
32
+ ijkMode: xIJKAxis
33
+ } = model.mapperX.getClosestIJKAxis();
34
+ const {
35
+ ijkMode: yIJKAxis
36
+ } = model.mapperY.getClosestIJKAxis();
37
+ const {
38
+ ijkMode: zIJKAxis
39
+ } = model.mapperZ.getClosestIJKAxis();
40
+ const propToUpdate = {
41
41
  xSlice: {
42
42
  domain: {
43
43
  min: bounds[0],
@@ -86,59 +86,63 @@ function updateDomains(dataset, dataArray, model, updateProp) {
86
86
  windowWidth: propToUpdate.windowWidth.domain.max,
87
87
  windowLevel: Math.floor(mean(propToUpdate.windowLevel.domain.min, propToUpdate.windowLevel.domain.max))
88
88
  };
89
- } // ----------------------------------------------------------------------------
89
+ }
90
90
 
91
+ // ----------------------------------------------------------------------------
91
92
 
92
93
  function updateConfiguration(dataset, dataArray, _ref) {
93
- _ref.mapper;
94
- var property = _ref.property;
94
+ let {
95
+ mapper,
96
+ property
97
+ } = _ref;
95
98
  // Configuration
96
99
  // actor.getProperty().setInterpolationTypeToFastLinear();
97
100
  property.setInterpolationTypeToLinear();
98
- var numberOfComponents = dataArray.getNumberOfComponents();
99
- var scalarOpacityUnitDistance = vtkBoundingBox.getDiagonalLength(dataset.getBounds()) / Math.max.apply(Math, _toConsumableArray(dataset.getDimensions()));
100
-
101
- for (var component = 0; component < numberOfComponents; component++) {
101
+ const numberOfComponents = dataArray.getNumberOfComponents();
102
+ const scalarOpacityUnitDistance = vtkBoundingBox.getDiagonalLength(dataset.getBounds()) / Math.max(...dataset.getDimensions());
103
+ for (let component = 0; component < numberOfComponents; component++) {
102
104
  // For better looking volume rendering
103
105
  // - distance in world coordinates a scalar opacity of 1.0
104
106
  property.setScalarOpacityUnitDistance(component, scalarOpacityUnitDistance);
105
- var dataRange = dataArray.getRange(component); // - control how we emphasize surface boundaries
107
+ const dataRange = dataArray.getRange(component);
108
+ // - control how we emphasize surface boundaries
106
109
  // => max should be around the average gradient magnitude for the
107
110
  // volume or maybe average plus one std dev of the gradient magnitude
108
111
  // (adjusted for spacing, this is a world coordinate gradient, not a
109
112
  // pixel gradient)
110
113
  // => max hack: (dataRange[1] - dataRange[0]) * 0.05
111
-
112
114
  property.setGradientOpacityMinimumValue(component, 0);
113
- property.setGradientOpacityMaximumValue(component, (dataRange[1] - dataRange[0]) * 0.05); // - Use shading based on gradient
114
-
115
+ property.setGradientOpacityMaximumValue(component, (dataRange[1] - dataRange[0]) * 0.05);
116
+ // - Use shading based on gradient
115
117
  property.setShade(true);
116
- property.setUseGradientOpacity(component, true); // - generic good default
117
-
118
+ property.setUseGradientOpacity(component, true);
119
+ // - generic good default
118
120
  property.setGradientOpacityMinimumOpacity(component, 0.0);
119
121
  property.setGradientOpacityMaximumOpacity(component, 1.0);
120
122
  }
121
-
122
123
  property.setAmbient(0.2);
123
124
  property.setDiffuse(0.7);
124
125
  property.setSpecular(0.3);
125
126
  property.setSpecularPower(8.0);
126
- } // ----------------------------------------------------------------------------
127
+ }
128
+
129
+ // ----------------------------------------------------------------------------
127
130
  // vtkVolumeRepresentationProxy methods
128
131
  // ----------------------------------------------------------------------------
129
132
 
130
-
131
133
  function vtkVolumeRepresentationProxy(publicAPI, model) {
132
134
  // Set our className
133
- model.classHierarchy.push('vtkVolumeRepresentationProxy'); // Volume
135
+ model.classHierarchy.push('vtkVolumeRepresentationProxy');
134
136
 
137
+ // Volume
135
138
  model.mapper = vtkVolumeMapper.newInstance();
136
139
  model.volume = vtkVolume.newInstance();
137
140
  model.property = model.volume.getProperty();
138
141
  model.cropFilter = vtkImageCropFilter.newInstance();
139
142
  model.mapper.setInputConnection(model.cropFilter.getOutputPort());
140
- model.sourceDependencies.push(model.cropFilter); // Slices
143
+ model.sourceDependencies.push(model.cropFilter);
141
144
 
145
+ // Slices
142
146
  model.mapperX = vtkImageMapper.newInstance({
143
147
  slicingMode: vtkImageMapper.SlicingMode.X
144
148
  });
@@ -162,81 +166,68 @@ function vtkVolumeRepresentationProxy(publicAPI, model) {
162
166
  });
163
167
  model.mapperX.setInputConnection(model.cropFilter.getOutputPort());
164
168
  model.mapperY.setInputConnection(model.cropFilter.getOutputPort());
165
- model.mapperZ.setInputConnection(model.cropFilter.getOutputPort()); // model.sourceDependencies.push(model.mapperX);
169
+ model.mapperZ.setInputConnection(model.cropFilter.getOutputPort());
170
+ // model.sourceDependencies.push(model.mapperX);
166
171
  // model.sourceDependencies.push(model.mapperY);
167
172
  // model.sourceDependencies.push(model.mapperZ);
168
- // connect rendering pipeline
169
173
 
174
+ // connect rendering pipeline
170
175
  model.volume.setMapper(model.mapper);
171
- model.volumes.push(model.volume); // Connect slice pipeline
176
+ model.volumes.push(model.volume);
172
177
 
178
+ // Connect slice pipeline
173
179
  model.actorX.setMapper(model.mapperX);
174
180
  model.actors.push(model.actorX);
175
181
  model.actorY.setMapper(model.mapperY);
176
182
  model.actors.push(model.actorY);
177
183
  model.actorZ.setMapper(model.mapperZ);
178
184
  model.actors.push(model.actorZ);
179
-
180
185
  function setInputData(inputDataset) {
181
- var _publicAPI$getColorBy = publicAPI.getColorBy(),
182
- _publicAPI$getColorBy2 = _slicedToArray(_publicAPI$getColorBy, 2),
183
- name = _publicAPI$getColorBy2[0],
184
- location = _publicAPI$getColorBy2[1];
185
-
186
+ const [name, location] = publicAPI.getColorBy();
186
187
  publicAPI.rescaleTransferFunctionToDataRange(name, location);
187
- var lutProxy = publicAPI.getLookupTableProxy(name);
188
- var pwfProxy = publicAPI.getPiecewiseFunctionProxy(name);
188
+ const lutProxy = publicAPI.getLookupTableProxy(name);
189
+ const pwfProxy = publicAPI.getPiecewiseFunctionProxy(name);
189
190
  model.property.setRGBTransferFunction(0, lutProxy.getLookupTable());
190
191
  model.property.setScalarOpacity(0, pwfProxy.getPiecewiseFunction());
191
192
  updateConfiguration(inputDataset, publicAPI.getDataArray(), model);
192
-
193
193
  if (model.sampleDistance < 0 || model.sampleDistance > 1) {
194
194
  publicAPI.setSampleDistance();
195
195
  }
196
-
197
196
  if (model.edgeGradient < 0 || model.edgeGradient > 1) {
198
197
  publicAPI.setEdgeGradient();
199
- } // Update domains
200
-
201
-
202
- var state = updateDomains(inputDataset, publicAPI.getDataArray(), model, publicAPI.updateProxyProperty);
203
- publicAPI.set(state); // Check for 2D volumes
198
+ }
204
199
 
205
- var numberOfDimensions = inputDataset.getDimensions().reduce(function (number, dimension) {
206
- return number + (dimension > 1 ? 1 : 0);
207
- }, 0);
200
+ // Update domains
201
+ const state = updateDomains(inputDataset, publicAPI.getDataArray(), model, publicAPI.updateProxyProperty);
202
+ publicAPI.set(state);
208
203
 
204
+ // Check for 2D volumes
205
+ const numberOfDimensions = inputDataset.getDimensions().reduce((number, dimension) => number + (dimension > 1 ? 1 : 0), 0);
209
206
  if (numberOfDimensions === 2) {
210
207
  publicAPI.setIs2DVolume(true);
211
208
  }
212
209
  }
213
-
214
210
  model.sourceDependencies.push({
215
- setInputData: setInputData
216
- }); // API ----------------------------------------------------------------------
211
+ setInputData
212
+ });
213
+
214
+ // API ----------------------------------------------------------------------
217
215
 
218
216
  /**
219
217
  * Choose whether the input volume should be treated as a 2D volume
220
218
  * (no volume rendering).
221
219
  */
222
-
223
- publicAPI.setIs2DVolume = function (is2D) {
220
+ publicAPI.setIs2DVolume = is2D => {
224
221
  model.is2DVolume = is2D;
225
-
226
222
  if (is2D) {
227
223
  if (publicAPI.getVisibility()) {
228
224
  publicAPI.setSliceVisibility(true);
229
225
  }
230
-
231
226
  model.volume.setVisibility(false);
232
227
  }
233
228
  };
234
-
235
- publicAPI.isVisible = function () {
236
- return model.volume.getVisibility();
237
- };
238
-
239
- publicAPI.setVisibility = function (isVisible) {
229
+ publicAPI.isVisible = () => model.volume.getVisibility();
230
+ publicAPI.setVisibility = isVisible => {
240
231
  if (isVisible) {
241
232
  if (model.is2DVolume) {
242
233
  publicAPI.setSliceVisibility(true);
@@ -249,108 +240,88 @@ function vtkVolumeRepresentationProxy(publicAPI, model) {
249
240
  publicAPI.setSliceVisibility(false);
250
241
  }
251
242
  };
252
-
253
- publicAPI.getVisibility = function () {
254
- return model.volume.getVisibility() || publicAPI.getSliceVisibility();
255
- };
256
-
243
+ publicAPI.getVisibility = () => model.volume.getVisibility() || publicAPI.getSliceVisibility();
257
244
  publicAPI.isVisible = publicAPI.getVisibility;
258
-
259
- publicAPI.setSliceVisibility = function (isVisible) {
245
+ publicAPI.setSliceVisibility = isVisible => {
260
246
  if (isVisible && model.is2DVolume) {
261
- var normalAxis = publicAPI.getInputDataSet().getDimensions().indexOf(1);
262
-
247
+ const normalAxis = publicAPI.getInputDataSet().getDimensions().indexOf(1);
263
248
  if (model.actors[normalAxis]) {
264
249
  model.actors[normalAxis].setVisibility(true);
265
250
  }
266
251
  } else {
267
- model.actors.forEach(function (actor) {
268
- return actor.setVisibility(isVisible);
269
- });
252
+ model.actors.forEach(actor => actor.setVisibility(isVisible));
270
253
  }
271
254
  };
272
-
273
- publicAPI.getSliceVisibility = function () {
274
- return model.actorX.getVisibility() || model.actorY.getVisibility() || model.actorZ.getVisibility();
275
- };
276
-
255
+ publicAPI.getSliceVisibility = () => model.actorX.getVisibility() || model.actorY.getVisibility() || model.actorZ.getVisibility();
277
256
  publicAPI.setSampleDistance = function () {
278
- var distance = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0.4;
279
-
257
+ let distance = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0.4;
280
258
  if (model.sampleDistance !== distance) {
281
259
  model.sampleDistance = distance;
282
- var sourceDS = publicAPI.getInputDataSet();
283
- var sampleDistance = 0.7 * Math.sqrt(sourceDS.getSpacing().map(function (v) {
284
- return v * v;
285
- }).reduce(function (a, b) {
286
- return a + b;
287
- }, 0));
288
- model.mapper.setSampleDistance(sampleDistance * Math.pow(2, distance * 3.0 - 1.5));
260
+ const sourceDS = publicAPI.getInputDataSet();
261
+ const sampleDistance = 0.7 * Math.sqrt(sourceDS.getSpacing().map(v => v * v).reduce((a, b) => a + b, 0));
262
+ model.mapper.setSampleDistance(sampleDistance * 2 ** (distance * 3.0 - 1.5));
289
263
  publicAPI.modified();
290
264
  }
291
265
  };
292
-
293
266
  publicAPI.setEdgeGradient = function () {
294
- var edgeGradient = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0.2;
295
-
267
+ let edgeGradient = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0.2;
296
268
  if (model.edgeGradient !== edgeGradient) {
297
269
  model.edgeGradient = edgeGradient;
298
- var dataArray = publicAPI.getDataArray();
299
- var numberOfComponents = dataArray.getNumberOfComponents();
300
-
270
+ const dataArray = publicAPI.getDataArray();
271
+ const numberOfComponents = dataArray.getNumberOfComponents();
301
272
  if (edgeGradient === 0) {
302
- for (var component = 0; component < numberOfComponents; component++) {
273
+ for (let component = 0; component < numberOfComponents; component++) {
303
274
  model.volume.getProperty().setUseGradientOpacity(component, false);
304
275
  }
305
276
  } else {
306
- for (var _component = 0; _component < numberOfComponents; _component++) {
307
- var dataRange = dataArray.getRange(_component);
308
- model.volume.getProperty().setUseGradientOpacity(_component, true);
309
- var minV = Math.max(0.0, edgeGradient - 0.3) / 0.7;
310
-
277
+ for (let component = 0; component < numberOfComponents; component++) {
278
+ const dataRange = dataArray.getRange(component);
279
+ model.volume.getProperty().setUseGradientOpacity(component, true);
280
+ const minV = Math.max(0.0, edgeGradient - 0.3) / 0.7;
311
281
  if (minV > 0.0) {
312
- model.volume.getProperty().setGradientOpacityMinimumValue(_component, Math.exp(Math.log((dataRange[1] - dataRange[0]) * 0.2) * minV * minV));
282
+ model.volume.getProperty().setGradientOpacityMinimumValue(component, Math.exp(Math.log((dataRange[1] - dataRange[0]) * 0.2) * minV * minV));
313
283
  } else {
314
- model.volume.getProperty().setGradientOpacityMinimumValue(_component, 0.0);
284
+ model.volume.getProperty().setGradientOpacityMinimumValue(component, 0.0);
315
285
  }
316
-
317
- model.volume.getProperty().setGradientOpacityMaximumValue(_component, Math.exp(Math.log((dataRange[1] - dataRange[0]) * 1.0) * edgeGradient * edgeGradient));
286
+ model.volume.getProperty().setGradientOpacityMaximumValue(component, Math.exp(Math.log((dataRange[1] - dataRange[0]) * 1.0) * edgeGradient * edgeGradient));
318
287
  }
319
288
  }
320
-
321
289
  publicAPI.modified();
322
290
  }
323
291
  };
324
-
325
- var parentSetColorBy = publicAPI.setColorBy;
326
-
292
+ const parentSetColorBy = publicAPI.setColorBy;
327
293
  publicAPI.setColorBy = function (arrayName, arrayLocation) {
328
- var componentIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -1;
294
+ let componentIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -1;
329
295
  parentSetColorBy(arrayName, arrayLocation, componentIndex);
330
- var lutProxy = publicAPI.getLookupTableProxy(arrayName);
331
- var pwfProxy = publicAPI.getPiecewiseFunctionProxy(arrayName);
296
+ const lutProxy = publicAPI.getLookupTableProxy(arrayName);
297
+ const pwfProxy = publicAPI.getPiecewiseFunctionProxy(arrayName);
332
298
  model.property.setRGBTransferFunction(0, lutProxy.getLookupTable());
333
299
  model.property.setScalarOpacity(0, pwfProxy.getPiecewiseFunction());
334
300
  };
335
- } // ----------------------------------------------------------------------------
301
+ }
302
+
303
+ // ----------------------------------------------------------------------------
336
304
  // Object factory
337
305
  // ----------------------------------------------------------------------------
338
306
 
339
-
340
- var DEFAULT_VALUES = {
307
+ const DEFAULT_VALUES = {
341
308
  sampleDistance: -1,
342
309
  edgeGradient: -1,
343
310
  disableSolidColor: true,
344
311
  is2DVolume: false
345
- }; // ----------------------------------------------------------------------------
312
+ };
313
+
314
+ // ----------------------------------------------------------------------------
346
315
 
347
316
  function extend(publicAPI, model) {
348
- var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
349
- Object.assign(model, DEFAULT_VALUES, initialValues); // Object methods
317
+ let initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
318
+ Object.assign(model, DEFAULT_VALUES, initialValues);
350
319
 
320
+ // Object methods
351
321
  vtkAbstractRepresentationProxy.extend(publicAPI, model, initialValues);
352
- macro.get(publicAPI, model, ['sampleDistance', 'edgeGradient', 'cropFilter', 'is2DVolume']); // Object specific methods
322
+ macro.get(publicAPI, model, ['sampleDistance', 'edgeGradient', 'cropFilter', 'is2DVolume']);
353
323
 
324
+ // Object specific methods
354
325
  vtkVolumeRepresentationProxy(publicAPI, model);
355
326
  macro.proxyPropertyMapping(publicAPI, model, {
356
327
  xSlice: {
@@ -398,14 +369,18 @@ function extend(publicAPI, model) {
398
369
  property: 'croppingPlanes'
399
370
  }
400
371
  });
401
- } // ----------------------------------------------------------------------------
372
+ }
402
373
 
403
- var newInstance = macro.newInstance(extend, 'vtkVolumeRepresentationProxy'); // ----------------------------------------------------------------------------
374
+ // ----------------------------------------------------------------------------
375
+
376
+ const newInstance = macro.newInstance(extend, 'vtkVolumeRepresentationProxy');
377
+
378
+ // ----------------------------------------------------------------------------
404
379
 
405
380
  var vtkVolumeRepresentationProxy$1 = {
406
- newInstance: newInstance,
407
- extend: extend,
408
- updateConfiguration: updateConfiguration
381
+ newInstance,
382
+ extend,
383
+ updateConfiguration
409
384
  };
410
385
 
411
386
  export { vtkVolumeRepresentationProxy$1 as default, extend, newInstance };
@@ -7,13 +7,13 @@ import vtkSlicedGeometryRepresentationProxy from './Representations/SlicedGeomet
7
7
  import vtkVolumeRepresentationProxy from './Representations/VolumeRepresentationProxy.js';
8
8
 
9
9
  var Representations = {
10
- vtkGeometryRepresentationProxy: vtkGeometryRepresentationProxy,
11
- vtkGlyphRepresentationProxy: vtkGlyphRepresentationProxy,
12
- vtkMoleculeRepresentationProxy: vtkMoleculeRepresentationProxy,
13
- vtkSkyboxRepresentationProxy: vtkSkyboxRepresentationProxy,
14
- vtkSliceRepresentationProxy: vtkSliceRepresentationProxy,
15
- vtkSlicedGeometryRepresentationProxy: vtkSlicedGeometryRepresentationProxy,
16
- vtkVolumeRepresentationProxy: vtkVolumeRepresentationProxy
10
+ vtkGeometryRepresentationProxy,
11
+ vtkGlyphRepresentationProxy,
12
+ vtkMoleculeRepresentationProxy,
13
+ vtkSkyboxRepresentationProxy,
14
+ vtkSliceRepresentationProxy,
15
+ vtkSlicedGeometryRepresentationProxy,
16
+ vtkVolumeRepresentationProxy
17
17
  };
18
18
 
19
19
  export { Representations as default };
package/Proxy/index.js CHANGED
@@ -2,8 +2,8 @@ import Core from './Core.js';
2
2
  import Representations from './Representations.js';
3
3
 
4
4
  var VTKProxy = {
5
- Core: Core,
6
- Representations: Representations
5
+ Core,
6
+ Representations
7
7
  };
8
8
 
9
9
  export { VTKProxy as default };
package/README.md CHANGED
@@ -35,7 +35,7 @@ vtk.js aims to be a subset of VTK and provide 3D rendering using WebGL (+WebGPU)
35
35
  VTK.js is a complete rewrite of VTK/C++ using plain JavaScript (ES6).
36
36
  The focus of the rewrite, so far, has been the rendering pipeline for ImageData and PolyData, the pipeline infrastructure, and frequently used readers (obj, stl, vtp, vti). Some filters are also provided as demonstrations. We are not aiming for vtk.js to provide the same set of filters that is available in VTK/C++, but vtk.js does provide the infrastructure needed to define pipelines and filters.
37
37
 
38
- We have also started to explore a path where you can compile some bits of VTK/C++ into WebAssembly and to enable them to interact with vtk.js. With such interaction, you can pick and choose what you need to extract from VTK and enable it inside your web application. VTK/C++ WebAssembly can even be used for rendering, and examples can be found in [VTK repository](https://github.com/Kitware/VTK/tree/master/Examples/Emscripten/Cxx). Additionally [itk.js](https://insightsoftwareconsortium.github.io/itk-js/index.html) (which is ITK via WebAssembly) also provides proven implementations for several image filters and data readers. There are, however, some additional costs in terms of the size of the WebAssembly file that will have to be downloaded when visiting a VTK or ITK WebAssembly webpage; and we still have some work to do to streamline the vtk.js + VTK WebAssembly integrations.
38
+ We have also started to explore a path where you can compile some bits of VTK/C++ into WebAssembly and to enable them to interact with vtk.js. With such interaction, you can pick and choose what you need to extract from VTK and enable it inside your web application. VTK/C++ WebAssembly can even be used for rendering, and examples can be found in [VTK repository](https://github.com/Kitware/VTK/tree/master/Examples/Emscripten/Cxx). Additionally [itk-wasm](https://github.com/InsightSoftwareConsortium/itk-wasm) (which is ITK via WebAssembly) also provides proven implementations for several image filters and data readers. There are, however, some additional costs in terms of the size of the WebAssembly file that will have to be downloaded when visiting a VTK or ITK WebAssembly webpage; and we still have some work to do to streamline the vtk.js + VTK WebAssembly integrations.
39
39
 
40
40
  In general if you want to stay in the pure JavaScript land, then vtk.js is perhaps the ideal solution for you. We welcome your feedback, including your contributions for new visualization filters, bug fixes, and examples.
41
41
 
@@ -9,50 +9,47 @@ import vtkPlane from '../../../Common/DataModel/Plane.js';
9
9
  * @param {Vector3} p2
10
10
  * @param {vtkImageMapper|vtkImageArrayMapper} mapper
11
11
  */
12
-
13
12
  function doPicking(p1, p2, mapper) {
14
- var imageData = mapper.getCurrentImage();
15
- var extent = imageData.getExtent(); // Slice origin
16
-
17
- var ijk = [extent[0], extent[2], extent[4]];
18
-
19
- var _mapper$getClosestIJK = mapper.getClosestIJKAxis(),
20
- ijkMode = _mapper$getClosestIJK.ijkMode;
21
-
22
- var nSlice = mapper.isA('vtkImageArrayMapper') ? mapper.getSubSlice() : mapper.getSlice();
23
-
13
+ const imageData = mapper.getCurrentImage();
14
+ const extent = imageData.getExtent();
15
+
16
+ // Slice origin
17
+ const ijk = [extent[0], extent[2], extent[4]];
18
+ const {
19
+ ijkMode
20
+ } = mapper.getClosestIJKAxis();
21
+ let nSlice = mapper.isA('vtkImageArrayMapper') ? mapper.getSubSlice() : mapper.getSlice();
24
22
  if (ijkMode !== mapper.getSlicingMode()) {
25
23
  // If not IJK slicing, get the IJK slice from the XYZ position/slice
26
24
  nSlice = mapper.getSliceAtPosition(nSlice);
27
25
  }
28
-
29
26
  ijk[ijkMode] += nSlice;
30
- var worldOrigin = [0, 0, 0];
31
- imageData.indexToWorld(ijk, worldOrigin); // Normal computation
27
+ const worldOrigin = [0, 0, 0];
28
+ imageData.indexToWorld(ijk, worldOrigin);
32
29
 
30
+ // Normal computation
33
31
  ijk[ijkMode] += 1;
34
- var worldNormal = [0, 0, 0];
32
+ const worldNormal = [0, 0, 0];
35
33
  imageData.indexToWorld(ijk, worldNormal);
36
34
  worldNormal[0] -= worldOrigin[0];
37
35
  worldNormal[1] -= worldOrigin[1];
38
36
  worldNormal[2] -= worldOrigin[2];
39
37
  vec3.normalize(worldNormal, worldNormal);
40
- var intersect = vtkPlane.intersectWithLine(p1, p2, worldOrigin, worldNormal);
41
-
38
+ const intersect = vtkPlane.intersectWithLine(p1, p2, worldOrigin, worldNormal);
42
39
  if (intersect.intersection) {
43
- var point = intersect.x;
44
- var absoluteIJK = [0, 0, 0];
45
- imageData.worldToIndex(point, absoluteIJK); // `t` is the parametric position along the line
40
+ const point = intersect.x;
41
+ const absoluteIJK = [0, 0, 0];
42
+ imageData.worldToIndex(point, absoluteIJK);
43
+ // `t` is the parametric position along the line
46
44
  // defined in Plane.intersectWithLine
47
-
48
45
  return {
49
46
  t: intersect.t,
50
- absoluteIJK: absoluteIJK
47
+ absoluteIJK
51
48
  };
52
49
  }
53
-
54
50
  return null;
55
51
  }
52
+
56
53
  /**
57
54
  * Implement point picking for image plane.
58
55
  * The plane is defined by the imageData and current slice number,
@@ -62,30 +59,28 @@ function doPicking(p1, p2, mapper) {
62
59
  * @param {Vector3} p2
63
60
  * @param {vtkImageMapper|vtkImageArrayMapper} mapper
64
61
  */
65
-
66
-
67
62
  function intersectWithLineForPointPicking(p1, p2, mapper) {
68
- var pickingData = doPicking(p1, p2, mapper);
69
-
63
+ const pickingData = doPicking(p1, p2, mapper);
70
64
  if (pickingData) {
71
- var imageData = mapper.getCurrentImage();
72
- var extent = imageData.getExtent(); // Get closer integer ijk
73
- // NB: point picking means closest slice, means rounding
65
+ const imageData = mapper.getCurrentImage();
66
+ const extent = imageData.getExtent();
74
67
 
75
- var ijk = [Math.round(pickingData.absoluteIJK[0]), Math.round(pickingData.absoluteIJK[1]), Math.round(pickingData.absoluteIJK[2])]; // Are we outside our actual extent
68
+ // Get closer integer ijk
69
+ // NB: point picking means closest slice, means rounding
70
+ const ijk = [Math.round(pickingData.absoluteIJK[0]), Math.round(pickingData.absoluteIJK[1]), Math.round(pickingData.absoluteIJK[2])];
76
71
 
72
+ // Are we outside our actual extent
77
73
  if (ijk[0] < extent[0] || ijk[0] > extent[1] || ijk[1] < extent[2] || ijk[1] > extent[3] || ijk[2] < extent[4] || ijk[2] > extent[5]) {
78
74
  return null;
79
75
  }
80
-
81
76
  return {
82
77
  t: pickingData.t,
83
- ijk: ijk
78
+ ijk
84
79
  };
85
80
  }
86
-
87
81
  return null;
88
82
  }
83
+
89
84
  /**
90
85
  * Implement cell picking for image plane.
91
86
  * The plane is defined by the imageData and current slice number,
@@ -95,32 +90,32 @@ function intersectWithLineForPointPicking(p1, p2, mapper) {
95
90
  * @param {Vector3} p2
96
91
  * @param {vtkImageMapper|vtkImageArrayMapper} mapper
97
92
  */
98
-
99
93
  function intersectWithLineForCellPicking(p1, p2, mapper) {
100
- var pickingData = doPicking(p1, p2, mapper);
101
-
94
+ const pickingData = doPicking(p1, p2, mapper);
102
95
  if (pickingData) {
103
- var imageData = mapper.getCurrentImage();
104
- var extent = imageData.getExtent();
105
- var absIJK = pickingData.absoluteIJK; // Get closer integer ijk
106
- // NB: cell picking means closest voxel, means flooring
96
+ const imageData = mapper.getCurrentImage();
97
+ const extent = imageData.getExtent();
98
+ const absIJK = pickingData.absoluteIJK;
107
99
 
108
- var ijk = [Math.floor(absIJK[0]), Math.floor(absIJK[1]), Math.floor(absIJK[2])]; // Are we outside our actual extent
100
+ // Get closer integer ijk
101
+ // NB: cell picking means closest voxel, means flooring
102
+ const ijk = [Math.floor(absIJK[0]), Math.floor(absIJK[1]), Math.floor(absIJK[2])];
109
103
 
110
- if (ijk[0] < extent[0] || ijk[0] > extent[1] - 1 || ijk[1] < extent[2] || ijk[1] > extent[3] - 1 || ijk[2] < extent[4] || // handle single-slice images
104
+ // Are we outside our actual extent
105
+ if (ijk[0] < extent[0] || ijk[0] > extent[1] - 1 || ijk[1] < extent[2] || ijk[1] > extent[3] - 1 || ijk[2] < extent[4] ||
106
+ // handle single-slice images
111
107
  ijk[2] > (extent[5] ? extent[5] - 1 : extent[5])) {
112
108
  return null;
113
- } // Parametric coordinates within cell
114
-
109
+ }
115
110
 
116
- var pCoords = [absIJK[0] - ijk[0], absIJK[1] - ijk[1], absIJK[2] - ijk[2]];
111
+ // Parametric coordinates within cell
112
+ const pCoords = [absIJK[0] - ijk[0], absIJK[1] - ijk[1], absIJK[2] - ijk[2]];
117
113
  return {
118
114
  t: pickingData.t,
119
- ijk: ijk,
120
- pCoords: pCoords
115
+ ijk,
116
+ pCoords
121
117
  };
122
118
  }
123
-
124
119
  return null;
125
120
  }
126
121