@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.
Files changed (565) 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 +185 -270
  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/Rendering/Core/AbstractImageMapper/helper.js +44 -49
  278. package/Rendering/Core/AbstractImageMapper.js +18 -19
  279. package/Rendering/Core/AbstractMapper.js +39 -55
  280. package/Rendering/Core/AbstractMapper3D.js +26 -31
  281. package/Rendering/Core/AbstractPicker.js +25 -21
  282. package/Rendering/Core/Actor.js +71 -93
  283. package/Rendering/Core/Actor2D.js +64 -78
  284. package/Rendering/Core/AnnotatedCubeActor/Presets.js +5 -11
  285. package/Rendering/Core/AnnotatedCubeActor.js +94 -79
  286. package/Rendering/Core/AxesActor.js +65 -87
  287. package/Rendering/Core/Camera.js +246 -271
  288. package/Rendering/Core/CellPicker.js +125 -148
  289. package/Rendering/Core/ColorTransferFunction/ColorMaps.js +20 -21
  290. package/Rendering/Core/ColorTransferFunction/ColorMapsLite.js +20 -21
  291. package/Rendering/Core/ColorTransferFunction/Constants.js +4 -4
  292. package/Rendering/Core/ColorTransferFunction.js +460 -546
  293. package/Rendering/Core/Coordinate/Constants.js +2 -2
  294. package/Rendering/Core/Coordinate.js +119 -198
  295. package/Rendering/Core/CubeAxesActor.js +294 -320
  296. package/Rendering/Core/Follower.js +46 -45
  297. package/Rendering/Core/Glyph3DMapper/Constants.js +4 -4
  298. package/Rendering/Core/Glyph3DMapper.js +96 -148
  299. package/Rendering/Core/HardwareSelector.js +36 -69
  300. package/Rendering/Core/ImageArrayMapper.js +87 -126
  301. package/Rendering/Core/ImageCPRMapper.js +134 -209
  302. package/Rendering/Core/ImageMapper/Constants.js +2 -2
  303. package/Rendering/Core/ImageMapper.js +85 -144
  304. package/Rendering/Core/ImageProperty/Constants.js +2 -2
  305. package/Rendering/Core/ImageProperty.js +66 -81
  306. package/Rendering/Core/ImageResliceMapper/Constants.js +2 -2
  307. package/Rendering/Core/ImageResliceMapper.js +36 -29
  308. package/Rendering/Core/ImageSlice.js +85 -127
  309. package/Rendering/Core/InteractorObserver.js +82 -73
  310. package/Rendering/Core/InteractorStyle/Constants.js +2 -2
  311. package/Rendering/Core/InteractorStyle.js +56 -58
  312. package/Rendering/Core/Light.js +43 -49
  313. package/Rendering/Core/Mapper/CoincidentTopologyHelper.js +37 -48
  314. package/Rendering/Core/Mapper/Constants.js +6 -6
  315. package/Rendering/Core/Mapper/Static.js +15 -12
  316. package/Rendering/Core/Mapper.js +194 -259
  317. package/Rendering/Core/Mapper2D.js +61 -100
  318. package/Rendering/Core/Picker.js +124 -143
  319. package/Rendering/Core/PixelSpaceCallbackMapper.js +40 -37
  320. package/Rendering/Core/PointPicker.js +68 -79
  321. package/Rendering/Core/Prop/Constants.js +2 -2
  322. package/Rendering/Core/Prop.js +58 -106
  323. package/Rendering/Core/Prop3D.js +54 -83
  324. package/Rendering/Core/Property/Constants.js +6 -6
  325. package/Rendering/Core/Property.js +45 -74
  326. package/Rendering/Core/Property2D/Constants.js +2 -2
  327. package/Rendering/Core/Property2D.js +33 -42
  328. package/Rendering/Core/RenderWindow.js +70 -82
  329. package/Rendering/Core/RenderWindowInteractor/Constants.js +7 -7
  330. package/Rendering/Core/RenderWindowInteractor.js +324 -439
  331. package/Rendering/Core/Renderer.js +192 -256
  332. package/Rendering/Core/ScalarBarActor.js +267 -272
  333. package/Rendering/Core/Skybox.js +26 -24
  334. package/Rendering/Core/SphereMapper.js +22 -12
  335. package/Rendering/Core/StickMapper.js +22 -12
  336. package/Rendering/Core/SurfaceLICInterface/Constants.js +6 -6
  337. package/Rendering/Core/SurfaceLICInterface.js +13 -9
  338. package/Rendering/Core/SurfaceLICMapper.js +23 -15
  339. package/Rendering/Core/Texture.js +99 -141
  340. package/Rendering/Core/Viewport.js +60 -88
  341. package/Rendering/Core/Volume.js +55 -77
  342. package/Rendering/Core/VolumeMapper/Constants.js +4 -4
  343. package/Rendering/Core/VolumeMapper.js +59 -91
  344. package/Rendering/Core/VolumeProperty/Constants.js +4 -4
  345. package/Rendering/Core/VolumeProperty.js +78 -115
  346. package/Rendering/Core.js +47 -49
  347. package/Rendering/Misc/CanvasView.js +62 -61
  348. package/Rendering/Misc/FullScreenRenderWindow.js +60 -62
  349. package/Rendering/Misc/GenericRenderWindow.js +48 -37
  350. package/Rendering/Misc/RemoteView.js +86 -80
  351. package/Rendering/Misc/RenderWindowWithControlBar.js +54 -48
  352. package/Rendering/Misc/SynchronizableRenderWindow/BehaviorManager/CameraSynchronizer.js +43 -51
  353. package/Rendering/Misc/SynchronizableRenderWindow/BehaviorManager.js +52 -82
  354. package/Rendering/Misc/SynchronizableRenderWindow/ObjectManager.js +258 -308
  355. package/Rendering/Misc/SynchronizableRenderWindow.js +133 -163
  356. package/Rendering/Misc/TextureLODsDownloader.js +72 -74
  357. package/Rendering/Misc.js +7 -7
  358. package/Rendering/OpenGL/Actor.js +57 -68
  359. package/Rendering/OpenGL/Actor2D.js +56 -56
  360. package/Rendering/OpenGL/BufferObject/Constants.js +2 -2
  361. package/Rendering/OpenGL/BufferObject.js +50 -65
  362. package/Rendering/OpenGL/Camera.js +35 -29
  363. package/Rendering/OpenGL/CellArrayBufferObject.js +119 -149
  364. package/Rendering/OpenGL/Convolution2DPass.js +87 -81
  365. package/Rendering/OpenGL/CubeAxesActor.js +28 -21
  366. package/Rendering/OpenGL/ForwardPass.js +53 -64
  367. package/Rendering/OpenGL/Framebuffer.js +61 -101
  368. package/Rendering/OpenGL/Glyph3DMapper.js +165 -196
  369. package/Rendering/OpenGL/HardwareSelector/Constants.js +2 -2
  370. package/Rendering/OpenGL/HardwareSelector.js +272 -397
  371. package/Rendering/OpenGL/Helper.js +58 -73
  372. package/Rendering/OpenGL/ImageCPRMapper.js +339 -421
  373. package/Rendering/OpenGL/ImageMapper.js +268 -361
  374. package/Rendering/OpenGL/ImageResliceMapper.js +306 -438
  375. package/Rendering/OpenGL/ImageSlice.js +48 -54
  376. package/Rendering/OpenGL/OrderIndependentTranslucentPass.js +102 -84
  377. package/Rendering/OpenGL/PixelSpaceCallbackMapper.js +43 -42
  378. package/Rendering/OpenGL/PolyDataMapper.js +358 -492
  379. package/Rendering/OpenGL/PolyDataMapper2D.js +153 -205
  380. package/Rendering/OpenGL/RadialDistortionPass.js +86 -89
  381. package/Rendering/OpenGL/RenderWindow/Constants.js +2 -2
  382. package/Rendering/OpenGL/RenderWindow/ContextProxy.js +20 -29
  383. package/Rendering/OpenGL/RenderWindow.js +356 -510
  384. package/Rendering/OpenGL/Renderer.js +77 -89
  385. package/Rendering/OpenGL/ReplacementShaderMapper.js +28 -46
  386. package/Rendering/OpenGL/ScalarBarActor.js +28 -21
  387. package/Rendering/OpenGL/Shader.js +37 -31
  388. package/Rendering/OpenGL/ShaderCache.js +67 -74
  389. package/Rendering/OpenGL/ShaderProgram.js +136 -248
  390. package/Rendering/OpenGL/Skybox.js +99 -60
  391. package/Rendering/OpenGL/SphereMapper.js +94 -108
  392. package/Rendering/OpenGL/StickMapper.js +110 -114
  393. package/Rendering/OpenGL/SurfaceLIC/LineIntegralConvolution2D/pingpong.js +91 -157
  394. package/Rendering/OpenGL/SurfaceLIC/LineIntegralConvolution2D.js +142 -151
  395. package/Rendering/OpenGL/SurfaceLIC/SurfaceLICInterface.js +142 -216
  396. package/Rendering/OpenGL/SurfaceLIC/SurfaceLICMapper.js +79 -100
  397. package/Rendering/OpenGL/SurfaceLIC.js +2 -2
  398. package/Rendering/OpenGL/Texture/Constants.js +4 -4
  399. package/Rendering/OpenGL/Texture.js +443 -608
  400. package/Rendering/OpenGL/TextureUnitManager.js +47 -43
  401. package/Rendering/OpenGL/VertexArrayObject.js +92 -131
  402. package/Rendering/OpenGL/ViewNodeFactory.js +25 -13
  403. package/Rendering/OpenGL/Volume.js +38 -34
  404. package/Rendering/OpenGL/VolumeMapper.js +437 -547
  405. package/Rendering/OpenGL.js +28 -28
  406. package/Rendering/SceneGraph/RenderPass.js +34 -31
  407. package/Rendering/SceneGraph/RenderWindowViewNode.js +68 -94
  408. package/Rendering/SceneGraph/ViewNode.js +82 -111
  409. package/Rendering/SceneGraph/ViewNodeFactory.js +31 -26
  410. package/Rendering/SceneGraph.js +4 -4
  411. package/Rendering/WebGPU/Actor.js +49 -49
  412. package/Rendering/WebGPU/Actor2D.js +45 -44
  413. package/Rendering/WebGPU/BindGroup.js +43 -50
  414. package/Rendering/WebGPU/Buffer.js +41 -50
  415. package/Rendering/WebGPU/BufferManager/Constants.js +4 -4
  416. package/Rendering/WebGPU/BufferManager.js +111 -141
  417. package/Rendering/WebGPU/Camera.js +65 -67
  418. package/Rendering/WebGPU/CellArrayMapper.js +621 -388
  419. package/Rendering/WebGPU/CubeAxesActor.js +28 -19
  420. package/Rendering/WebGPU/Device.js +78 -133
  421. package/Rendering/WebGPU/ForwardPass.js +75 -72
  422. package/Rendering/WebGPU/FullScreenQuad.js +25 -18
  423. package/Rendering/WebGPU/Glyph3DMapper.js +62 -74
  424. package/Rendering/WebGPU/HardwareSelectionPass.js +45 -38
  425. package/Rendering/WebGPU/HardwareSelector.js +200 -276
  426. package/Rendering/WebGPU/ImageMapper.js +180 -171
  427. package/Rendering/WebGPU/ImageSlice.js +45 -44
  428. package/Rendering/WebGPU/IndexBuffer.js +166 -200
  429. package/Rendering/WebGPU/OpaquePass.js +37 -36
  430. package/Rendering/WebGPU/OrderIndependentTranslucentPass.js +72 -45
  431. package/Rendering/WebGPU/Pipeline.js +37 -51
  432. package/Rendering/WebGPU/PixelSpaceCallbackMapper.js +27 -19
  433. package/Rendering/WebGPU/PolyDataMapper.js +50 -53
  434. package/Rendering/WebGPU/PolyDataMapper2D.js +39 -39
  435. package/Rendering/WebGPU/RenderEncoder.js +68 -88
  436. package/Rendering/WebGPU/RenderWindow.js +262 -376
  437. package/Rendering/WebGPU/Renderer.js +224 -208
  438. package/Rendering/WebGPU/Sampler.js +27 -21
  439. package/Rendering/WebGPU/ScalarBarActor.js +28 -19
  440. package/Rendering/WebGPU/ShaderCache.js +43 -41
  441. package/Rendering/WebGPU/ShaderDescription.js +52 -59
  442. package/Rendering/WebGPU/ShaderModule.js +26 -17
  443. package/Rendering/WebGPU/SimpleMapper.js +185 -121
  444. package/Rendering/WebGPU/SphereMapper.js +200 -130
  445. package/Rendering/WebGPU/StickMapper.js +289 -152
  446. package/Rendering/WebGPU/StorageBuffer.js +100 -115
  447. package/Rendering/WebGPU/Texture.js +79 -99
  448. package/Rendering/WebGPU/TextureManager.js +52 -54
  449. package/Rendering/WebGPU/TextureView.js +40 -43
  450. package/Rendering/WebGPU/Types.js +53 -70
  451. package/Rendering/WebGPU/UniformBuffer.js +158 -184
  452. package/Rendering/WebGPU/VertexInput.js +64 -90
  453. package/Rendering/WebGPU/ViewNodeFactory.js +25 -13
  454. package/Rendering/WebGPU/Volume.js +52 -51
  455. package/Rendering/WebGPU/VolumePass.js +218 -239
  456. package/Rendering/WebGPU/VolumePassFSQ.js +625 -306
  457. package/Rendering/WebGPU.js +1 -1
  458. package/Rendering/index.js +5 -5
  459. package/Widgets/Core/AbstractWidget/Constants.js +2 -2
  460. package/Widgets/Core/AbstractWidget.js +49 -58
  461. package/Widgets/Core/AbstractWidgetFactory.js +101 -122
  462. package/Widgets/Core/StateBuilder/boundsMixin.js +23 -28
  463. package/Widgets/Core/StateBuilder/color3Mixin.js +10 -7
  464. package/Widgets/Core/StateBuilder/colorMixin.js +10 -6
  465. package/Widgets/Core/StateBuilder/cornerMixin.js +16 -15
  466. package/Widgets/Core/StateBuilder/directionMixin.js +20 -18
  467. package/Widgets/Core/StateBuilder/manipulatorMixin.js +26 -18
  468. package/Widgets/Core/StateBuilder/nameMixin.js +10 -6
  469. package/Widgets/Core/StateBuilder/orientationMixin.js +19 -16
  470. package/Widgets/Core/StateBuilder/originMixin.js +25 -32
  471. package/Widgets/Core/StateBuilder/scale1Mixin.js +10 -6
  472. package/Widgets/Core/StateBuilder/scale3Mixin.js +10 -6
  473. package/Widgets/Core/StateBuilder/shapeMixin.js +12 -6
  474. package/Widgets/Core/StateBuilder/textMixin.js +10 -6
  475. package/Widgets/Core/StateBuilder/visibleMixin.js +10 -6
  476. package/Widgets/Core/StateBuilder.js +120 -149
  477. package/Widgets/Core/WidgetManager/Constants.js +7 -7
  478. package/Widgets/Core/WidgetManager.js +249 -421
  479. package/Widgets/Core/WidgetState.js +48 -57
  480. package/Widgets/Core.js +5 -5
  481. package/Widgets/Manipulators/AbstractManipulator.js +20 -14
  482. package/Widgets/Manipulators/CPRManipulator.js +55 -71
  483. package/Widgets/Manipulators/LineManipulator.js +31 -28
  484. package/Widgets/Manipulators/PickerManipulator.d.ts +48 -0
  485. package/Widgets/Manipulators/PickerManipulator.js +65 -0
  486. package/Widgets/Manipulators/PlaneManipulator.js +26 -23
  487. package/Widgets/Manipulators/TrackballManipulator.js +39 -35
  488. package/Widgets/Manipulators.js +4 -2
  489. package/Widgets/Representations/ArrowHandleRepresentation.js +148 -162
  490. package/Widgets/Representations/CircleContextRepresentation.js +44 -38
  491. package/Widgets/Representations/ContextRepresentation.js +17 -14
  492. package/Widgets/Representations/ConvexFaceContextRepresentation.js +50 -47
  493. package/Widgets/Representations/CroppingOutlineRepresentation.js +38 -27
  494. package/Widgets/Representations/CubeHandleRepresentation.js +21 -18
  495. package/Widgets/Representations/GlyphRepresentation.js +107 -152
  496. package/Widgets/Representations/HandleRepresentation.js +17 -14
  497. package/Widgets/Representations/ImplicitPlaneRepresentation.js +97 -91
  498. package/Widgets/Representations/LineHandleRepresentation.js +44 -41
  499. package/Widgets/Representations/OutlineContextRepresentation.js +42 -36
  500. package/Widgets/Representations/PolyLineRepresentation.js +60 -75
  501. package/Widgets/Representations/RectangleContextRepresentation.js +42 -37
  502. package/Widgets/Representations/SphereContextRepresentation.js +19 -27
  503. package/Widgets/Representations/SphereHandleRepresentation.js +31 -27
  504. package/Widgets/Representations/SplineContextRepresentation.js +46 -70
  505. package/Widgets/Representations/WidgetRepresentation/Constants.js +2 -2
  506. package/Widgets/Representations/WidgetRepresentation.js +99 -134
  507. package/Widgets/Representations.js +13 -13
  508. package/Widgets/Widgets3D/AngleWidget/behavior.js +41 -63
  509. package/Widgets/Widgets3D/AngleWidget.js +40 -38
  510. package/Widgets/Widgets3D/DistanceWidget/behavior.js +40 -61
  511. package/Widgets/Widgets3D/DistanceWidget.js +38 -36
  512. package/Widgets/Widgets3D/EllipseWidget/behavior.js +14 -19
  513. package/Widgets/Widgets3D/EllipseWidget/state.js +4 -2
  514. package/Widgets/Widgets3D/EllipseWidget.js +37 -26
  515. package/Widgets/Widgets3D/ImageCroppingWidget/behavior.js +26 -56
  516. package/Widgets/Widgets3D/ImageCroppingWidget/helpers.js +14 -17
  517. package/Widgets/Widgets3D/ImageCroppingWidget/state.js +20 -16
  518. package/Widgets/Widgets3D/ImageCroppingWidget.js +80 -98
  519. package/Widgets/Widgets3D/ImplicitPlaneWidget.js +55 -77
  520. package/Widgets/Widgets3D/InteractiveOrientationWidget/behavior.js +17 -18
  521. package/Widgets/Widgets3D/InteractiveOrientationWidget/state.js +15 -7
  522. package/Widgets/Widgets3D/InteractiveOrientationWidget.js +30 -29
  523. package/Widgets/Widgets3D/LabelWidget/behavior.js +37 -62
  524. package/Widgets/Widgets3D/LabelWidget.js +31 -25
  525. package/Widgets/Widgets3D/LineWidget/Constants.js +8 -8
  526. package/Widgets/Widgets3D/LineWidget/behavior.js +77 -114
  527. package/Widgets/Widgets3D/LineWidget/helpers.js +13 -20
  528. package/Widgets/Widgets3D/LineWidget/state.js +2 -1
  529. package/Widgets/Widgets3D/LineWidget.js +39 -35
  530. package/Widgets/Widgets3D/PaintWidget/behavior.js +24 -59
  531. package/Widgets/Widgets3D/PaintWidget.js +39 -37
  532. package/Widgets/Widgets3D/PolyLineWidget/behavior.js +44 -68
  533. package/Widgets/Widgets3D/PolyLineWidget.js +36 -31
  534. package/Widgets/Widgets3D/RectangleWidget/behavior.js +6 -11
  535. package/Widgets/Widgets3D/RectangleWidget/state.js +4 -2
  536. package/Widgets/Widgets3D/RectangleWidget.js +37 -25
  537. package/Widgets/Widgets3D/ResliceCursorWidget/Constants.js +35 -21
  538. package/Widgets/Widgets3D/ResliceCursorWidget/behavior.js +133 -209
  539. package/Widgets/Widgets3D/ResliceCursorWidget/cprBehavior.js +26 -41
  540. package/Widgets/Widgets3D/ResliceCursorWidget/helpers.js +89 -116
  541. package/Widgets/Widgets3D/ResliceCursorWidget/state.js +33 -40
  542. package/Widgets/Widgets3D/ResliceCursorWidget.js +186 -227
  543. package/Widgets/Widgets3D/SeedWidget/behavior.js +82 -0
  544. package/Widgets/Widgets3D/SeedWidget/state.js +18 -0
  545. package/Widgets/Widgets3D/SeedWidget.d.ts +44 -0
  546. package/Widgets/Widgets3D/SeedWidget.js +43 -0
  547. package/Widgets/Widgets3D/ShapeWidget/Constants.js +19 -19
  548. package/Widgets/Widgets3D/ShapeWidget/behavior.js +150 -252
  549. package/Widgets/Widgets3D/ShapeWidget.js +24 -27
  550. package/Widgets/Widgets3D/SphereWidget/behavior.js +35 -69
  551. package/Widgets/Widgets3D/SphereWidget/state.js +9 -5
  552. package/Widgets/Widgets3D/SphereWidget.js +34 -44
  553. package/Widgets/Widgets3D/SplineWidget/behavior.js +85 -120
  554. package/Widgets/Widgets3D/SplineWidget.js +43 -39
  555. package/Widgets/Widgets3D.js +15 -15
  556. package/Widgets/index.js +4 -4
  557. package/_virtual/rollup-plugin-worker-loader__module_Sources/Filters/General/PaintFilter/PaintFilter.worker.js +95 -207
  558. package/_virtual/rollup-plugin-worker-loader__module_Sources/Interaction/Widgets/PiecewiseGaussianWidget/ComputeHistogram.worker.js +0 -3
  559. package/favicon.js +5 -6
  560. package/index.d.ts +4 -2
  561. package/index.js +4 -3
  562. package/macros.js +4 -1931
  563. package/macros2.js +1684 -0
  564. package/package.json +6 -6
  565. package/vtk.js +18 -31
@@ -1,9 +1,5 @@
1
- import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
2
- import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
3
- import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
4
- import _regeneratorRuntime from '@babel/runtime/regenerator';
5
1
  import { VtkDataTypes } from '../../Common/Core/DataArray/Constants.js';
6
- import macro from '../../macros.js';
2
+ import { m as macro } from '../../macros2.js';
7
3
  import { registerViewConstructor } from '../Core/RenderWindow.js';
8
4
  import vtkForwardPass from './ForwardPass.js';
9
5
  import vtkHardwareSelector from './HardwareSelector.js';
@@ -15,88 +11,84 @@ import vtkRenderWindowViewNode from '../SceneGraph/RenderWindowViewNode.js';
15
11
  import Constants from './RenderWindow/Constants.js';
16
12
  import { createContextProxyHandler, GET_UNDERLYING_CONTEXT } from './RenderWindow/ContextProxy.js';
17
13
 
18
- var vtkDebugMacro = macro.vtkDebugMacro,
19
- vtkErrorMacro = macro.vtkErrorMacro;
20
- var XrSessionTypes = Constants.XrSessionTypes;
21
- var SCREENSHOT_PLACEHOLDER = {
14
+ const {
15
+ vtkDebugMacro,
16
+ vtkErrorMacro
17
+ } = macro;
18
+ const {
19
+ XrSessionTypes
20
+ } = Constants;
21
+ const SCREENSHOT_PLACEHOLDER = {
22
22
  position: 'absolute',
23
23
  top: 0,
24
24
  left: 0,
25
25
  width: '100%',
26
26
  height: '100%'
27
27
  };
28
- var DEFAULT_RESET_FACTORS = {
28
+ const DEFAULT_RESET_FACTORS = {
29
29
  rescaleFactor: 0.25,
30
30
  // isotropic scale factor reduces apparent size of objects
31
31
  translateZ: -1.5 // default translation initializes object in front of camera
32
-
33
32
  };
34
33
 
35
34
  function checkRenderTargetSupport(gl, format, type) {
36
35
  // create temporary frame buffer and texture
37
- var framebuffer = gl.createFramebuffer();
38
- var texture = gl.createTexture();
36
+ const framebuffer = gl.createFramebuffer();
37
+ const texture = gl.createTexture();
39
38
  gl.bindTexture(gl.TEXTURE_2D, texture);
40
39
  gl.texImage2D(gl.TEXTURE_2D, 0, format, 2, 2, 0, format, type, null);
41
40
  gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
42
- gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0); // check frame buffer status
41
+ gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);
43
42
 
44
- var status = gl.checkFramebufferStatus(gl.FRAMEBUFFER); // clean up
43
+ // check frame buffer status
44
+ const status = gl.checkFramebufferStatus(gl.FRAMEBUFFER);
45
45
 
46
+ // clean up
46
47
  gl.bindFramebuffer(gl.FRAMEBUFFER, null);
47
48
  gl.bindTexture(gl.TEXTURE_2D, null);
48
49
  return status === gl.FRAMEBUFFER_COMPLETE;
49
- } // ----------------------------------------------------------------------------
50
+ }
51
+
52
+ // ----------------------------------------------------------------------------
50
53
  // Monitor the usage of GL context across vtkOpenGLRenderWindow instances
51
54
  // ----------------------------------------------------------------------------
52
55
 
53
-
54
- var GL_CONTEXT_COUNT = 0;
55
- var GL_CONTEXT_LISTENERS = [];
56
-
56
+ let GL_CONTEXT_COUNT = 0;
57
+ const GL_CONTEXT_LISTENERS = [];
57
58
  function createGLContext() {
58
59
  GL_CONTEXT_COUNT++;
59
- GL_CONTEXT_LISTENERS.forEach(function (cb) {
60
- return cb(GL_CONTEXT_COUNT);
61
- });
60
+ GL_CONTEXT_LISTENERS.forEach(cb => cb(GL_CONTEXT_COUNT));
62
61
  }
63
-
64
62
  function deleteGLContext() {
65
63
  GL_CONTEXT_COUNT--;
66
- GL_CONTEXT_LISTENERS.forEach(function (cb) {
67
- return cb(GL_CONTEXT_COUNT);
68
- });
64
+ GL_CONTEXT_LISTENERS.forEach(cb => cb(GL_CONTEXT_COUNT));
69
65
  }
70
-
71
66
  function pushMonitorGLContextCount(cb) {
72
67
  GL_CONTEXT_LISTENERS.push(cb);
73
68
  }
74
69
  function popMonitorGLContextCount(cb) {
75
70
  return GL_CONTEXT_LISTENERS.pop();
76
71
  }
77
-
78
72
  function _preventDefault(e) {
79
73
  e.preventDefault();
80
- } // ----------------------------------------------------------------------------
74
+ }
75
+
76
+ // ----------------------------------------------------------------------------
81
77
  // vtkOpenGLRenderWindow methods
82
78
  // ----------------------------------------------------------------------------
83
79
 
84
-
85
80
  function vtkOpenGLRenderWindow(publicAPI, model) {
86
81
  // Set our className
87
82
  model.classHierarchy.push('vtkOpenGLRenderWindow');
88
- var cachingContextHandler = createContextProxyHandler();
89
-
90
- publicAPI.getViewNodeFactory = function () {
91
- return model.myFactory;
92
- }; // prevent default context lost handler
93
-
83
+ const cachingContextHandler = createContextProxyHandler();
84
+ publicAPI.getViewNodeFactory = () => model.myFactory;
94
85
 
86
+ // prevent default context lost handler
95
87
  model.canvas.addEventListener('webglcontextlost', _preventDefault, false);
96
- model.canvas.addEventListener('webglcontextrestored', publicAPI.restoreContext, false); // Auto update style
97
-
98
- var previousSize = [0, 0];
88
+ model.canvas.addEventListener('webglcontextrestored', publicAPI.restoreContext, false);
99
89
 
90
+ // Auto update style
91
+ const previousSize = [0, 0];
100
92
  function updateWindow() {
101
93
  // Canvas size
102
94
  if (model.renderable) {
@@ -106,163 +98,145 @@ function vtkOpenGLRenderWindow(publicAPI, model) {
106
98
  model.canvas.setAttribute('width', model.size[0]);
107
99
  model.canvas.setAttribute('height', model.size[1]);
108
100
  }
109
- } // ImageStream size
110
-
101
+ }
111
102
 
103
+ // ImageStream size
112
104
  if (model.viewStream) {
113
105
  // If same size that's a NoOp
114
106
  model.viewStream.setSize(model.size[0], model.size[1]);
115
- } // Offscreen ?
116
-
107
+ }
117
108
 
118
- model.canvas.style.display = model.useOffScreen ? 'none' : 'block'; // Cursor type
109
+ // Offscreen ?
110
+ model.canvas.style.display = model.useOffScreen ? 'none' : 'block';
119
111
 
112
+ // Cursor type
120
113
  if (model.el) {
121
114
  model.el.style.cursor = model.cursorVisibility ? model.cursor : 'none';
122
- } // Invalidate cached DOM container size
123
-
115
+ }
124
116
 
117
+ // Invalidate cached DOM container size
125
118
  model.containerSize = null;
126
119
  }
120
+ publicAPI.onModified(updateWindow);
127
121
 
128
- publicAPI.onModified(updateWindow); // Builds myself.
129
-
130
- publicAPI.buildPass = function (prepass) {
122
+ // Builds myself.
123
+ publicAPI.buildPass = prepass => {
131
124
  if (prepass) {
132
125
  if (!model.renderable) {
133
126
  return;
134
127
  }
135
-
136
128
  publicAPI.prepareNodes();
137
129
  publicAPI.addMissingNodes(model.renderable.getRenderersByReference());
138
130
  publicAPI.removeUnusedNodes();
139
131
  publicAPI.initialize();
140
- model.children.forEach(function (child) {
132
+ model.children.forEach(child => {
141
133
  child.setOpenGLRenderWindow(publicAPI);
142
134
  });
143
135
  }
144
136
  };
145
-
146
- publicAPI.initialize = function () {
137
+ publicAPI.initialize = () => {
147
138
  if (!model.initialized) {
148
139
  model.context = publicAPI.get3DContext();
149
140
  model.textureUnitManager = vtkTextureUnitManager.newInstance();
150
141
  model.textureUnitManager.setContext(model.context);
151
- model.shaderCache.setContext(model.context); // initialize blending for transparency
152
-
153
- var gl = model.context;
142
+ model.shaderCache.setContext(model.context);
143
+ // initialize blending for transparency
144
+ const gl = model.context;
154
145
  gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
155
146
  gl.depthFunc(gl.LEQUAL);
156
147
  gl.enable(gl.BLEND);
157
148
  model.initialized = true;
158
149
  }
159
150
  };
160
-
161
- publicAPI.makeCurrent = function () {
151
+ publicAPI.makeCurrent = () => {
162
152
  model.context.makeCurrent();
163
153
  };
164
-
165
- publicAPI.setContainer = function (el) {
154
+ publicAPI.setContainer = el => {
166
155
  if (model.el && model.el !== el) {
167
156
  if (model.canvas.parentNode !== model.el) {
168
157
  vtkErrorMacro('Error: canvas parent node does not match container');
169
- } // Remove canvas from previous container
158
+ }
170
159
 
160
+ // Remove canvas from previous container
161
+ model.el.removeChild(model.canvas);
171
162
 
172
- model.el.removeChild(model.canvas); // If the renderer has previously added
163
+ // If the renderer has previously added
173
164
  // a background image, remove it from the DOM.
174
-
175
165
  if (model.el.contains(model.bgImage)) {
176
166
  model.el.removeChild(model.bgImage);
177
167
  }
178
168
  }
179
-
180
169
  if (model.el !== el) {
181
170
  model.el = el;
182
-
183
171
  if (model.el) {
184
- model.el.appendChild(model.canvas); // If the renderer is set to use a background
185
- // image, attach it to the DOM.
172
+ model.el.appendChild(model.canvas);
186
173
 
174
+ // If the renderer is set to use a background
175
+ // image, attach it to the DOM.
187
176
  if (model.useBackgroundImage) {
188
177
  model.el.appendChild(model.bgImage);
189
178
  }
190
- } // Trigger modified()
191
-
179
+ }
192
180
 
181
+ // Trigger modified()
193
182
  publicAPI.modified();
194
183
  }
195
184
  };
196
-
197
- publicAPI.getContainer = function () {
198
- return model.el;
199
- };
200
-
201
- publicAPI.getContainerSize = function () {
185
+ publicAPI.getContainer = () => model.el;
186
+ publicAPI.getContainerSize = () => {
202
187
  if (!model.containerSize && model.el) {
203
- var _model$el$getBounding = model.el.getBoundingClientRect(),
204
- width = _model$el$getBounding.width,
205
- height = _model$el$getBounding.height;
206
-
188
+ const {
189
+ width,
190
+ height
191
+ } = model.el.getBoundingClientRect();
207
192
  model.containerSize = [width, height];
208
193
  }
209
-
210
194
  return model.containerSize || model.size;
211
195
  };
212
-
213
- publicAPI.getFramebufferSize = function () {
196
+ publicAPI.getFramebufferSize = () => {
214
197
  if (model.activeFramebuffer) {
215
198
  return model.activeFramebuffer.getSize();
216
199
  }
217
-
218
200
  return model.size;
219
201
  };
220
-
221
- publicAPI.getPixelData = function (x1, y1, x2, y2) {
222
- var pixels = new Uint8Array((x2 - x1 + 1) * (y2 - y1 + 1) * 4);
202
+ publicAPI.getPixelData = (x1, y1, x2, y2) => {
203
+ const pixels = new Uint8Array((x2 - x1 + 1) * (y2 - y1 + 1) * 4);
223
204
  model.context.readPixels(x1, y1, x2 - x1 + 1, y2 - y1 + 1, model.context.RGBA, model.context.UNSIGNED_BYTE, pixels);
224
205
  return pixels;
225
206
  };
226
-
227
207
  publicAPI.get3DContext = function () {
228
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
208
+ let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
229
209
  preserveDrawingBuffer: false,
230
210
  depth: true,
231
211
  alpha: true,
232
212
  powerPreference: 'high-performance'
233
213
  };
234
- var result = null;
235
- var webgl2Supported = typeof WebGL2RenderingContext !== 'undefined';
214
+ let result = null;
215
+ const webgl2Supported = typeof WebGL2RenderingContext !== 'undefined';
236
216
  model.webgl2 = false;
237
-
238
217
  if (model.defaultToWebgl2 && webgl2Supported) {
239
218
  result = model.canvas.getContext('webgl2', options);
240
-
241
219
  if (result) {
242
220
  model.webgl2 = true;
243
221
  vtkDebugMacro('using webgl2');
244
222
  }
245
223
  }
246
-
247
224
  if (!result) {
248
225
  vtkDebugMacro('using webgl1');
249
226
  result = model.canvas.getContext('webgl', options) || model.canvas.getContext('experimental-webgl', options);
250
227
  }
251
-
252
228
  return new Proxy(result, cachingContextHandler);
253
- }; // Request an XR session on the user device with WebXR,
254
- // typically in response to a user request such as a button press
255
-
229
+ };
256
230
 
257
- publicAPI.startXR = function (xrSessionType) {
231
+ // Request an XR session on the user device with WebXR,
232
+ // typically in response to a user request such as a button press
233
+ publicAPI.startXR = xrSessionType => {
258
234
  if (navigator.xr === undefined) {
259
235
  throw new Error('WebXR is not available');
260
236
  }
261
-
262
237
  model.xrSessionType = xrSessionType !== undefined ? xrSessionType : XrSessionTypes.HmdVR;
263
- var isXrSessionAR = [XrSessionTypes.HmdAR, XrSessionTypes.MobileAR].includes(model.xrSessionType);
264
- var sessionType = isXrSessionAR ? 'immersive-ar' : 'immersive-vr';
265
-
238
+ const isXrSessionAR = [XrSessionTypes.HmdAR, XrSessionTypes.MobileAR].includes(model.xrSessionType);
239
+ const sessionType = isXrSessionAR ? 'immersive-ar' : 'immersive-vr';
266
240
  if (!navigator.xr.isSessionSupported(sessionType)) {
267
241
  if (isXrSessionAR) {
268
242
  throw new Error('Device does not support AR session');
@@ -270,659 +244,520 @@ function vtkOpenGLRenderWindow(publicAPI, model) {
270
244
  throw new Error('VR display is not available');
271
245
  }
272
246
  }
273
-
274
247
  if (model.xrSession === null) {
275
- navigator.xr.requestSession(sessionType).then(publicAPI.enterXR, function () {
248
+ navigator.xr.requestSession(sessionType).then(publicAPI.enterXR, () => {
276
249
  throw new Error('Failed to create XR session!');
277
250
  });
278
251
  } else {
279
252
  throw new Error('XR Session already exists!');
280
253
  }
281
- }; // When an XR session is available, set up the XRWebGLLayer
282
- // and request the first animation frame for the device
283
-
284
-
285
- publicAPI.enterXR = /*#__PURE__*/function () {
286
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(xrSession) {
287
- var gl, glLayer, isXrSessionAR, ren;
288
- return _regeneratorRuntime.wrap(function _callee$(_context) {
289
- while (1) {
290
- switch (_context.prev = _context.next) {
291
- case 0:
292
- model.xrSession = xrSession;
293
- model.oldCanvasSize = model.size.slice();
294
-
295
- if (!(model.xrSession !== null)) {
296
- _context.next = 17;
297
- break;
298
- }
299
-
300
- gl = publicAPI.get3DContext();
301
- _context.next = 6;
302
- return gl.makeXRCompatible();
303
-
304
- case 6:
305
- glLayer = new global.XRWebGLLayer(model.xrSession, // constructor needs unproxied context
306
- gl[GET_UNDERLYING_CONTEXT]());
307
- publicAPI.setSize(glLayer.framebufferWidth, glLayer.framebufferHeight);
308
- model.xrSession.updateRenderState({
309
- baseLayer: glLayer
310
- });
311
- model.xrSession.requestReferenceSpace('local').then(function (refSpace) {
312
- model.xrReferenceSpace = refSpace;
313
- }); // Initialize transparent background for augmented reality session
314
-
315
- isXrSessionAR = [XrSessionTypes.HmdAR, XrSessionTypes.MobileAR].includes(model.xrSessionType);
316
-
317
- if (isXrSessionAR) {
318
- ren = model.renderable.getRenderers()[0];
319
- model.preXrSessionBackground = ren.getBackground();
320
- ren.setBackground([0, 0, 0, 0]);
321
- }
322
-
323
- publicAPI.resetXRScene();
324
- model.renderable.getInteractor().switchToXRAnimation();
325
- model.xrSceneFrame = model.xrSession.requestAnimationFrame(publicAPI.xrRender);
326
- _context.next = 18;
327
- break;
328
-
329
- case 17:
330
- throw new Error('Failed to enter XR with a null xrSession.');
331
-
332
- case 18:
333
- case "end":
334
- return _context.stop();
335
- }
336
- }
337
- }, _callee);
338
- }));
254
+ };
339
255
 
340
- return function (_x) {
341
- return _ref.apply(this, arguments);
342
- };
343
- }();
256
+ // When an XR session is available, set up the XRWebGLLayer
257
+ // and request the first animation frame for the device
258
+ publicAPI.enterXR = async xrSession => {
259
+ model.xrSession = xrSession;
260
+ model.oldCanvasSize = model.size.slice();
261
+ if (model.xrSession !== null) {
262
+ const gl = publicAPI.get3DContext();
263
+ await gl.makeXRCompatible();
264
+ const glLayer = new global.XRWebGLLayer(model.xrSession,
265
+ // constructor needs unproxied context
266
+ gl[GET_UNDERLYING_CONTEXT]());
267
+ publicAPI.setSize(glLayer.framebufferWidth, glLayer.framebufferHeight);
268
+ model.xrSession.updateRenderState({
269
+ baseLayer: glLayer
270
+ });
271
+ model.xrSession.requestReferenceSpace('local').then(refSpace => {
272
+ model.xrReferenceSpace = refSpace;
273
+ });
344
274
 
275
+ // Initialize transparent background for augmented reality session
276
+ const isXrSessionAR = [XrSessionTypes.HmdAR, XrSessionTypes.MobileAR].includes(model.xrSessionType);
277
+ if (isXrSessionAR) {
278
+ const ren = model.renderable.getRenderers()[0];
279
+ model.preXrSessionBackground = ren.getBackground();
280
+ ren.setBackground([0, 0, 0, 0]);
281
+ }
282
+ publicAPI.resetXRScene();
283
+ model.renderable.getInteractor().switchToXRAnimation();
284
+ model.xrSceneFrame = model.xrSession.requestAnimationFrame(publicAPI.xrRender);
285
+ } else {
286
+ throw new Error('Failed to enter XR with a null xrSession.');
287
+ }
288
+ };
345
289
  publicAPI.resetXRScene = function () {
346
- var rescaleFactor = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_RESET_FACTORS.rescaleFactor;
347
- var translateZ = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_RESET_FACTORS.translateZ;
290
+ let rescaleFactor = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_RESET_FACTORS.rescaleFactor;
291
+ let translateZ = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_RESET_FACTORS.translateZ;
348
292
  // Adjust world-to-physical parameters for different modalities
349
- var ren = model.renderable.getRenderers()[0];
293
+
294
+ const ren = model.renderable.getRenderers()[0];
350
295
  ren.resetCamera();
351
- var camera = ren.getActiveCamera();
352
- var physicalScale = camera.getPhysicalScale();
353
- var physicalTranslation = camera.getPhysicalTranslation();
354
- var rescaledTranslateZ = translateZ * physicalScale;
296
+ const camera = ren.getActiveCamera();
297
+ let physicalScale = camera.getPhysicalScale();
298
+ const physicalTranslation = camera.getPhysicalTranslation();
299
+ const rescaledTranslateZ = translateZ * physicalScale;
355
300
  physicalScale /= rescaleFactor;
356
301
  physicalTranslation[2] += rescaledTranslateZ;
357
302
  camera.setPhysicalScale(physicalScale);
358
- camera.setPhysicalTranslation(physicalTranslation); // Clip at 0.1m, 100.0m in physical space by default
359
-
303
+ camera.setPhysicalTranslation(physicalTranslation);
304
+ // Clip at 0.1m, 100.0m in physical space by default
360
305
  camera.setClippingRange(0.1 * physicalScale, 100.0 * physicalScale);
361
306
  };
362
-
363
- publicAPI.stopXR = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
364
- var gl, ren;
365
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
366
- while (1) {
367
- switch (_context2.prev = _context2.next) {
368
- case 0:
369
- if (!(navigator.xr === undefined)) {
370
- _context2.next = 2;
371
- break;
372
- }
373
-
374
- return _context2.abrupt("return");
375
-
376
- case 2:
377
- if (!(model.xrSession !== null)) {
378
- _context2.next = 10;
379
- break;
380
- }
381
-
382
- model.xrSession.cancelAnimationFrame(model.xrSceneFrame);
383
- model.renderable.getInteractor().returnFromXRAnimation();
384
- gl = publicAPI.get3DContext();
385
- gl.bindFramebuffer(gl.FRAMEBUFFER, null);
386
- _context2.next = 9;
387
- return model.xrSession.end().catch(function (error) {
388
- if (!(error instanceof DOMException)) {
389
- throw error;
390
- }
391
- });
392
-
393
- case 9:
394
- model.xrSession = null;
395
-
396
- case 10:
397
- if (model.oldCanvasSize !== undefined) {
398
- publicAPI.setSize.apply(publicAPI, _toConsumableArray(model.oldCanvasSize));
399
- } // Reset to default canvas
400
-
401
-
402
- ren = model.renderable.getRenderers()[0];
403
-
404
- if (model.preXrSessionBackground != null) {
405
- ren.setBackground(model.preXrSessionBackground);
406
- model.preXrSessionBackground = null;
407
- }
408
-
409
- ren.getActiveCamera().setProjectionMatrix(null);
410
- ren.resetCamera();
411
- ren.setViewport(0.0, 0, 1.0, 1.0);
412
- publicAPI.traverseAllPasses();
413
-
414
- case 17:
415
- case "end":
416
- return _context2.stop();
307
+ publicAPI.stopXR = async () => {
308
+ if (navigator.xr === undefined) {
309
+ // WebXR polyfill not available so nothing to do
310
+ return;
311
+ }
312
+ if (model.xrSession !== null) {
313
+ model.xrSession.cancelAnimationFrame(model.xrSceneFrame);
314
+ model.renderable.getInteractor().returnFromXRAnimation();
315
+ const gl = publicAPI.get3DContext();
316
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
317
+ await model.xrSession.end().catch(error => {
318
+ if (!(error instanceof DOMException)) {
319
+ throw error;
417
320
  }
321
+ });
322
+ model.xrSession = null;
323
+ }
324
+ if (model.oldCanvasSize !== undefined) {
325
+ publicAPI.setSize(...model.oldCanvasSize);
326
+ }
327
+
328
+ // Reset to default canvas
329
+ const ren = model.renderable.getRenderers()[0];
330
+ if (model.preXrSessionBackground != null) {
331
+ ren.setBackground(model.preXrSessionBackground);
332
+ model.preXrSessionBackground = null;
333
+ }
334
+ ren.getActiveCamera().setProjectionMatrix(null);
335
+ ren.resetCamera();
336
+ ren.setViewport(0.0, 0, 1.0, 1.0);
337
+ publicAPI.traverseAllPasses();
338
+ };
339
+ publicAPI.xrRender = async (t, frame) => {
340
+ const xrSession = frame.session;
341
+ const isXrSessionHMD = [XrSessionTypes.HmdVR, XrSessionTypes.HmdAR].includes(model.xrSessionType);
342
+ model.renderable.getInteractor().updateXRGamepads(xrSession, frame, model.xrReferenceSpace);
343
+ model.xrSceneFrame = model.xrSession.requestAnimationFrame(publicAPI.xrRender);
344
+ const xrPose = frame.getViewerPose(model.xrReferenceSpace);
345
+ if (xrPose) {
346
+ const gl = publicAPI.get3DContext();
347
+ if (model.xrSessionType === XrSessionTypes.MobileAR && model.oldCanvasSize !== undefined) {
348
+ gl.canvas.width = model.oldCanvasSize[0];
349
+ gl.canvas.height = model.oldCanvasSize[1];
418
350
  }
419
- }, _callee2);
420
- }));
421
-
422
- publicAPI.xrRender = /*#__PURE__*/function () {
423
- var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(t, frame) {
424
- var xrSession, isXrSessionHMD, xrPose, gl, glLayer, ren;
425
- return _regeneratorRuntime.wrap(function _callee3$(_context3) {
426
- while (1) {
427
- switch (_context3.prev = _context3.next) {
428
- case 0:
429
- xrSession = frame.session;
430
- isXrSessionHMD = [XrSessionTypes.HmdVR, XrSessionTypes.HmdAR].includes(model.xrSessionType);
431
- model.renderable.getInteractor().updateXRGamepads(xrSession, frame, model.xrReferenceSpace);
432
- model.xrSceneFrame = model.xrSession.requestAnimationFrame(publicAPI.xrRender);
433
- xrPose = frame.getViewerPose(model.xrReferenceSpace);
434
-
435
- if (xrPose) {
436
- gl = publicAPI.get3DContext();
437
-
438
- if (model.xrSessionType === XrSessionTypes.MobileAR && model.oldCanvasSize !== undefined) {
439
- gl.canvas.width = model.oldCanvasSize[0];
440
- gl.canvas.height = model.oldCanvasSize[1];
441
- }
442
-
443
- glLayer = xrSession.renderState.baseLayer;
444
- gl.bindFramebuffer(gl.FRAMEBUFFER, glLayer.framebuffer);
445
- gl.clear(gl.COLOR_BUFFER_BIT);
446
- gl.clear(gl.DEPTH_BUFFER_BIT);
447
- publicAPI.setSize(glLayer.framebufferWidth, glLayer.framebufferHeight); // get the first renderer
448
-
449
- ren = model.renderable.getRenderers()[0]; // Do a render pass for each eye
450
-
451
- xrPose.views.forEach(function (view, index) {
452
- var viewport = glLayer.getViewport(view);
453
-
454
- if (isXrSessionHMD) {
455
- if (view.eye === 'left') {
456
- ren.setViewport(0, 0, 0.5, 1.0);
457
- } else if (view.eye === 'right') {
458
- ren.setViewport(0.5, 0, 1.0, 1.0);
459
- } else {
460
- // No handling for non-eye viewport
461
- return;
462
- }
463
- } else if (model.xrSessionType === XrSessionTypes.LookingGlassVR) {
464
- var startX = viewport.x / glLayer.framebufferWidth;
465
- var startY = viewport.y / glLayer.framebufferHeight;
466
- var endX = (viewport.x + viewport.width) / glLayer.framebufferWidth;
467
- var endY = (viewport.y + viewport.height) / glLayer.framebufferHeight;
468
- ren.setViewport(startX, startY, endX, endY);
469
- } else {
470
- ren.setViewport(0, 0, 1, 1);
471
- }
472
-
473
- ren.getActiveCamera().computeViewParametersFromPhysicalMatrix(view.transform.inverse.matrix);
474
- ren.getActiveCamera().setProjectionMatrix(view.projectionMatrix);
475
- publicAPI.traverseAllPasses();
476
- }); // Reset scissorbox before any subsequent rendering to external displays
477
- // on frame end, such as rendering to a Looking Glass display.
478
-
479
- gl.scissor(0, 0, glLayer.framebufferWidth, glLayer.framebufferHeight);
480
- gl.disable(gl.SCISSOR_TEST);
481
- }
482
-
483
- case 6:
484
- case "end":
485
- return _context3.stop();
351
+ const glLayer = xrSession.renderState.baseLayer;
352
+ gl.bindFramebuffer(gl.FRAMEBUFFER, glLayer.framebuffer);
353
+ gl.clear(gl.COLOR_BUFFER_BIT);
354
+ gl.clear(gl.DEPTH_BUFFER_BIT);
355
+ publicAPI.setSize(glLayer.framebufferWidth, glLayer.framebufferHeight);
356
+
357
+ // get the first renderer
358
+ const ren = model.renderable.getRenderers()[0];
359
+
360
+ // Do a render pass for each eye
361
+ xrPose.views.forEach((view, index) => {
362
+ const viewport = glLayer.getViewport(view);
363
+ if (isXrSessionHMD) {
364
+ if (view.eye === 'left') {
365
+ ren.setViewport(0, 0, 0.5, 1.0);
366
+ } else if (view.eye === 'right') {
367
+ ren.setViewport(0.5, 0, 1.0, 1.0);
368
+ } else {
369
+ // No handling for non-eye viewport
370
+ return;
486
371
  }
372
+ } else if (model.xrSessionType === XrSessionTypes.LookingGlassVR) {
373
+ const startX = viewport.x / glLayer.framebufferWidth;
374
+ const startY = viewport.y / glLayer.framebufferHeight;
375
+ const endX = (viewport.x + viewport.width) / glLayer.framebufferWidth;
376
+ const endY = (viewport.y + viewport.height) / glLayer.framebufferHeight;
377
+ ren.setViewport(startX, startY, endX, endY);
378
+ } else {
379
+ ren.setViewport(0, 0, 1, 1);
487
380
  }
488
- }, _callee3);
489
- }));
490
-
491
- return function (_x2, _x3) {
492
- return _ref3.apply(this, arguments);
493
- };
494
- }();
381
+ ren.getActiveCamera().computeViewParametersFromPhysicalMatrix(view.transform.inverse.matrix);
382
+ ren.getActiveCamera().setProjectionMatrix(view.projectionMatrix);
383
+ publicAPI.traverseAllPasses();
384
+ });
495
385
 
496
- publicAPI.restoreContext = function () {
497
- var rp = vtkRenderPass.newInstance();
386
+ // Reset scissorbox before any subsequent rendering to external displays
387
+ // on frame end, such as rendering to a Looking Glass display.
388
+ gl.scissor(0, 0, glLayer.framebufferWidth, glLayer.framebufferHeight);
389
+ gl.disable(gl.SCISSOR_TEST);
390
+ }
391
+ };
392
+ publicAPI.restoreContext = () => {
393
+ const rp = vtkRenderPass.newInstance();
498
394
  rp.setCurrentOperation('Release');
499
395
  rp.traverse(publicAPI, null);
500
396
  };
501
-
502
- publicAPI.activateTexture = function (texture) {
397
+ publicAPI.activateTexture = texture => {
503
398
  // Only add if it isn't already there
504
- var result = model._textureResourceIds.get(texture);
505
-
399
+ const result = model._textureResourceIds.get(texture);
506
400
  if (result !== undefined) {
507
401
  model.context.activeTexture(model.context.TEXTURE0 + result);
508
402
  return;
509
403
  }
510
-
511
- var activeUnit = publicAPI.getTextureUnitManager().allocate();
512
-
404
+ const activeUnit = publicAPI.getTextureUnitManager().allocate();
513
405
  if (activeUnit < 0) {
514
406
  vtkErrorMacro('Hardware does not support the number of textures defined.');
515
407
  return;
516
408
  }
517
-
518
409
  model._textureResourceIds.set(texture, activeUnit);
519
-
520
410
  model.context.activeTexture(model.context.TEXTURE0 + activeUnit);
521
411
  };
522
-
523
- publicAPI.deactivateTexture = function (texture) {
412
+ publicAPI.deactivateTexture = texture => {
524
413
  // Only deactivate if it isn't already there
525
- var result = model._textureResourceIds.get(texture);
526
-
414
+ const result = model._textureResourceIds.get(texture);
527
415
  if (result !== undefined) {
528
416
  publicAPI.getTextureUnitManager().free(result);
529
-
530
417
  model._textureResourceIds.delete(texture);
531
418
  }
532
419
  };
533
-
534
- publicAPI.getTextureUnitForTexture = function (texture) {
535
- var result = model._textureResourceIds.get(texture);
536
-
420
+ publicAPI.getTextureUnitForTexture = texture => {
421
+ const result = model._textureResourceIds.get(texture);
537
422
  if (result !== undefined) {
538
423
  return result;
539
424
  }
540
-
541
425
  return -1;
542
426
  };
543
-
544
427
  publicAPI.getDefaultTextureInternalFormat = function (vtktype, numComps) {
545
- var oglNorm16Ext = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
546
- var useHalfFloat = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
547
-
428
+ let oglNorm16Ext = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
429
+ let useHalfFloat = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
548
430
  if (model.webgl2) {
549
431
  switch (vtktype) {
550
432
  case VtkDataTypes.UNSIGNED_CHAR:
551
433
  switch (numComps) {
552
434
  case 1:
553
435
  return model.context.R8;
554
-
555
436
  case 2:
556
437
  return model.context.RG8;
557
-
558
438
  case 3:
559
439
  return model.context.RGB8;
560
-
561
440
  case 4:
562
441
  default:
563
442
  return model.context.RGBA8;
564
443
  }
565
-
566
444
  case oglNorm16Ext && !useHalfFloat && VtkDataTypes.UNSIGNED_SHORT:
567
445
  switch (numComps) {
568
446
  case 1:
569
447
  return oglNorm16Ext.R16_EXT;
570
-
571
448
  case 2:
572
449
  return oglNorm16Ext.RG16_EXT;
573
-
574
450
  case 3:
575
451
  return oglNorm16Ext.RGB16_EXT;
576
-
577
452
  case 4:
578
453
  default:
579
454
  return oglNorm16Ext.RGBA16_EXT;
580
455
  }
581
-
582
456
  // prioritize norm16 over float
583
-
584
457
  case oglNorm16Ext && !useHalfFloat && VtkDataTypes.SHORT:
585
458
  switch (numComps) {
586
459
  case 1:
587
460
  return oglNorm16Ext.R16_SNORM_EXT;
588
-
589
461
  case 2:
590
462
  return oglNorm16Ext.RG16_SNORM_EXT;
591
-
592
463
  case 3:
593
464
  return oglNorm16Ext.RGB16_SNORM_EXT;
594
-
595
465
  case 4:
596
466
  default:
597
467
  return oglNorm16Ext.RGBA16_SNORM_EXT;
598
468
  }
599
-
600
469
  case VtkDataTypes.FLOAT:
601
470
  default:
602
471
  switch (numComps) {
603
472
  case 1:
604
473
  return model.context.R16F;
605
-
606
474
  case 2:
607
475
  return model.context.RG16F;
608
-
609
476
  case 3:
610
477
  return model.context.RGB16F;
611
-
612
478
  case 4:
613
479
  default:
614
480
  return model.context.RGBA16F;
615
481
  }
616
-
617
482
  }
618
- } // webgl1 only supports four types
619
-
483
+ }
620
484
 
485
+ // webgl1 only supports four types
621
486
  switch (numComps) {
622
487
  case 1:
623
488
  return model.context.LUMINANCE;
624
-
625
489
  case 2:
626
490
  return model.context.LUMINANCE_ALPHA;
627
-
628
491
  case 3:
629
492
  return model.context.RGB;
630
-
631
493
  case 4:
632
494
  default:
633
495
  return model.context.RGBA;
634
496
  }
635
497
  };
636
-
637
- publicAPI.setBackgroundImage = function (img) {
498
+ publicAPI.setBackgroundImage = img => {
638
499
  model.bgImage.src = img.src;
639
500
  };
501
+ publicAPI.setUseBackgroundImage = value => {
502
+ model.useBackgroundImage = value;
640
503
 
641
- publicAPI.setUseBackgroundImage = function (value) {
642
- model.useBackgroundImage = value; // Add or remove the background image from the
504
+ // Add or remove the background image from the
643
505
  // DOM as specified.
644
-
645
506
  if (model.useBackgroundImage && !model.el.contains(model.bgImage)) {
646
507
  model.el.appendChild(model.bgImage);
647
508
  } else if (!model.useBackgroundImage && model.el.contains(model.bgImage)) {
648
509
  model.el.removeChild(model.bgImage);
649
510
  }
650
511
  };
651
-
652
512
  function getCanvasDataURL() {
653
- var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : model.imageFormat;
513
+ let format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : model.imageFormat;
654
514
  // Copy current canvas to not modify the original
655
- var temporaryCanvas = document.createElement('canvas');
656
- var temporaryContext = temporaryCanvas.getContext('2d');
515
+ const temporaryCanvas = document.createElement('canvas');
516
+ const temporaryContext = temporaryCanvas.getContext('2d');
657
517
  temporaryCanvas.width = model.canvas.width;
658
518
  temporaryCanvas.height = model.canvas.height;
659
- temporaryContext.drawImage(model.canvas, 0, 0); // Get current client rect to place canvas
660
-
661
- var mainBoundingClientRect = model.canvas.getBoundingClientRect();
662
- var renderWindow = model.renderable;
663
- var renderers = renderWindow.getRenderers();
664
- renderers.forEach(function (renderer) {
665
- var viewProps = renderer.getViewProps();
666
- viewProps.forEach(function (viewProp) {
519
+ temporaryContext.drawImage(model.canvas, 0, 0);
520
+
521
+ // Get current client rect to place canvas
522
+ const mainBoundingClientRect = model.canvas.getBoundingClientRect();
523
+ const renderWindow = model.renderable;
524
+ const renderers = renderWindow.getRenderers();
525
+ renderers.forEach(renderer => {
526
+ const viewProps = renderer.getViewProps();
527
+ viewProps.forEach(viewProp => {
667
528
  // Check if the prop has a container that should have canvas
668
529
  if (viewProp.getContainer) {
669
- var container = viewProp.getContainer();
670
- var canvasList = container.getElementsByTagName('canvas'); // Go throughout all canvas and copy it into temporary main canvas
671
-
672
- for (var i = 0; i < canvasList.length; i++) {
673
- var currentCanvas = canvasList[i];
674
- var boundingClientRect = currentCanvas.getBoundingClientRect();
675
- var newXPosition = boundingClientRect.x - mainBoundingClientRect.x;
676
- var newYPosition = boundingClientRect.y - mainBoundingClientRect.y;
530
+ const container = viewProp.getContainer();
531
+ const canvasList = container.getElementsByTagName('canvas');
532
+ // Go throughout all canvas and copy it into temporary main canvas
533
+ for (let i = 0; i < canvasList.length; i++) {
534
+ const currentCanvas = canvasList[i];
535
+ const boundingClientRect = currentCanvas.getBoundingClientRect();
536
+ const newXPosition = boundingClientRect.x - mainBoundingClientRect.x;
537
+ const newYPosition = boundingClientRect.y - mainBoundingClientRect.y;
677
538
  temporaryContext.drawImage(currentCanvas, newXPosition, newYPosition);
678
539
  }
679
540
  }
680
541
  });
681
542
  });
682
- var screenshot = temporaryCanvas.toDataURL(format);
543
+ const screenshot = temporaryCanvas.toDataURL(format);
683
544
  temporaryCanvas.remove();
684
545
  publicAPI.invokeImageReady(screenshot);
685
546
  }
686
-
687
547
  publicAPI.captureNextImage = function () {
688
- var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'image/png';
689
-
690
- var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
691
- _ref4$resetCamera = _ref4.resetCamera,
692
- resetCamera = _ref4$resetCamera === void 0 ? false : _ref4$resetCamera,
693
- _ref4$size = _ref4.size,
694
- size = _ref4$size === void 0 ? null : _ref4$size,
695
- _ref4$scale = _ref4.scale,
696
- scale = _ref4$scale === void 0 ? 1 : _ref4$scale;
697
-
548
+ let format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'image/png';
549
+ let {
550
+ resetCamera = false,
551
+ size = null,
552
+ scale = 1
553
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
698
554
  if (model.deleted) {
699
555
  return null;
700
556
  }
701
-
702
557
  model.imageFormat = format;
703
- var previous = model.notifyStartCaptureImage;
558
+ const previous = model.notifyStartCaptureImage;
704
559
  model.notifyStartCaptureImage = true;
705
560
  model._screenshot = {
706
- size: !!size || scale !== 1 ? size || model.size.map(function (val) {
707
- return val * scale;
708
- }) : null
561
+ size: !!size || scale !== 1 ? size || model.size.map(val => val * scale) : null
709
562
  };
710
- return new Promise(function (resolve, reject) {
711
- var subscription = publicAPI.onImageReady(function (imageURL) {
563
+ return new Promise((resolve, reject) => {
564
+ const subscription = publicAPI.onImageReady(imageURL => {
712
565
  if (model._screenshot.size === null) {
713
566
  model.notifyStartCaptureImage = previous;
714
567
  subscription.unsubscribe();
715
-
716
568
  if (model._screenshot.placeHolder) {
717
569
  // resize the main canvas back to its original size and show it
718
- model.size = model._screenshot.originalSize; // process the resize
570
+ model.size = model._screenshot.originalSize;
719
571
 
720
- publicAPI.modified(); // restore the saved camera parameters, if applicable
572
+ // process the resize
573
+ publicAPI.modified();
721
574
 
575
+ // restore the saved camera parameters, if applicable
722
576
  if (model._screenshot.cameras) {
723
- model._screenshot.cameras.forEach(function (_ref5) {
724
- var restoreParamsFn = _ref5.restoreParamsFn,
725
- arg = _ref5.arg;
577
+ model._screenshot.cameras.forEach(_ref => {
578
+ let {
579
+ restoreParamsFn,
580
+ arg
581
+ } = _ref;
726
582
  return restoreParamsFn(arg);
727
583
  });
728
- } // Trigger a render at the original size
729
-
584
+ }
730
585
 
731
- publicAPI.traverseAllPasses(); // Remove and clean up the placeholder, revealing the original
586
+ // Trigger a render at the original size
587
+ publicAPI.traverseAllPasses();
732
588
 
589
+ // Remove and clean up the placeholder, revealing the original
733
590
  model.el.removeChild(model._screenshot.placeHolder);
734
-
735
591
  model._screenshot.placeHolder.remove();
736
-
737
592
  model._screenshot = null;
738
593
  }
739
-
740
594
  resolve(imageURL);
741
595
  } else {
742
596
  // Create a placeholder image overlay while we resize and render
743
- var tmpImg = document.createElement('img');
597
+ const tmpImg = document.createElement('img');
744
598
  tmpImg.style = SCREENSHOT_PLACEHOLDER;
745
599
  tmpImg.src = imageURL;
746
- model._screenshot.placeHolder = model.el.appendChild(tmpImg); // hide the main canvas
600
+ model._screenshot.placeHolder = model.el.appendChild(tmpImg);
747
601
 
748
- model.canvas.style.display = 'none'; // remember the main canvas original size, then resize it
602
+ // hide the main canvas
603
+ model.canvas.style.display = 'none';
749
604
 
605
+ // remember the main canvas original size, then resize it
750
606
  model._screenshot.originalSize = model.size;
751
607
  model.size = model._screenshot.size;
752
- model._screenshot.size = null; // process the resize
608
+ model._screenshot.size = null;
753
609
 
610
+ // process the resize
754
611
  publicAPI.modified();
755
-
756
612
  if (resetCamera) {
757
- var isUserResetCamera = resetCamera !== true; // If resetCamera was requested, we first save camera parameters
758
- // from all the renderers, so we can restore them later
613
+ const isUserResetCamera = resetCamera !== true;
759
614
 
760
- model._screenshot.cameras = model.renderable.getRenderers().map(function (renderer) {
761
- var camera = renderer.getActiveCamera();
762
- var params = camera.get('focalPoint', 'position', 'parallelScale');
615
+ // If resetCamera was requested, we first save camera parameters
616
+ // from all the renderers, so we can restore them later
617
+ model._screenshot.cameras = model.renderable.getRenderers().map(renderer => {
618
+ const camera = renderer.getActiveCamera();
619
+ const params = camera.get('focalPoint', 'position', 'parallelScale');
763
620
  return {
764
621
  resetCameraArgs: isUserResetCamera ? {
765
- renderer: renderer
622
+ renderer
766
623
  } : undefined,
767
624
  resetCameraFn: isUserResetCamera ? resetCamera : renderer.resetCamera,
768
625
  restoreParamsFn: camera.set,
769
626
  // "clone" the params so we don't keep refs to properties
770
627
  arg: JSON.parse(JSON.stringify(params))
771
628
  };
772
- }); // Perform the resetCamera() on each renderer only after capturing
629
+ });
630
+
631
+ // Perform the resetCamera() on each renderer only after capturing
773
632
  // the params from all active cameras, in case there happen to be
774
633
  // linked cameras among the renderers.
775
-
776
- model._screenshot.cameras.forEach(function (_ref6) {
777
- var resetCameraFn = _ref6.resetCameraFn,
778
- resetCameraArgs = _ref6.resetCameraArgs;
634
+ model._screenshot.cameras.forEach(_ref2 => {
635
+ let {
636
+ resetCameraFn,
637
+ resetCameraArgs
638
+ } = _ref2;
779
639
  return resetCameraFn(resetCameraArgs);
780
640
  });
781
- } // Trigger a render at the custom size
782
-
641
+ }
783
642
 
643
+ // Trigger a render at the custom size
784
644
  publicAPI.traverseAllPasses();
785
645
  }
786
646
  });
787
647
  });
788
648
  };
789
-
790
- var hardwareMaximumLineWidth;
791
-
792
- publicAPI.getHardwareMaximumLineWidth = function () {
649
+ let hardwareMaximumLineWidth;
650
+ publicAPI.getHardwareMaximumLineWidth = () => {
793
651
  // We cache the result of this function because `getParameter` is slow
794
652
  if (hardwareMaximumLineWidth != null) {
795
653
  return hardwareMaximumLineWidth;
796
654
  }
797
-
798
- var gl = publicAPI.get3DContext();
799
- var lineWidthRange = gl.getParameter(gl.ALIASED_LINE_WIDTH_RANGE);
655
+ const gl = publicAPI.get3DContext();
656
+ const lineWidthRange = gl.getParameter(gl.ALIASED_LINE_WIDTH_RANGE);
800
657
  hardwareMaximumLineWidth = lineWidthRange[1];
801
658
  return lineWidthRange[1];
802
659
  };
803
-
804
- publicAPI.getGLInformations = function () {
805
- var gl = publicAPI.get3DContext();
806
- var glTextureFloat = gl.getExtension('OES_texture_float');
807
- var glTextureHalfFloat = gl.getExtension('OES_texture_half_float');
808
- var glDebugRendererInfo = gl.getExtension('WEBGL_debug_renderer_info');
809
- var glDrawBuffers = gl.getExtension('WEBGL_draw_buffers');
810
- var glAnisotropic = gl.getExtension('EXT_texture_filter_anisotropic') || gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic');
811
- var params = [['Max Vertex Attributes', 'MAX_VERTEX_ATTRIBS', gl.getParameter(gl.MAX_VERTEX_ATTRIBS)], ['Max Varying Vectors', 'MAX_VARYING_VECTORS', gl.getParameter(gl.MAX_VARYING_VECTORS)], ['Max Vertex Uniform Vectors', 'MAX_VERTEX_UNIFORM_VECTORS', gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS)], ['Max Fragment Uniform Vectors', 'MAX_FRAGMENT_UNIFORM_VECTORS', gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS)], ['Max Fragment Texture Image Units', 'MAX_TEXTURE_IMAGE_UNITS', gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS)], ['Max Vertex Texture Image Units', 'MAX_VERTEX_TEXTURE_IMAGE_UNITS', gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS)], ['Max Combined Texture Image Units', 'MAX_COMBINED_TEXTURE_IMAGE_UNITS', gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS)], ['Max 2D Texture Size', 'MAX_TEXTURE_SIZE', gl.getParameter(gl.MAX_TEXTURE_SIZE)], ['Max Cube Texture Size', 'MAX_CUBE_MAP_TEXTURE_SIZE', gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE)], ['Max Texture Anisotropy', 'MAX_TEXTURE_MAX_ANISOTROPY_EXT', glAnisotropic && gl.getParameter(glAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT)], ['Point Size Range', 'ALIASED_POINT_SIZE_RANGE', gl.getParameter(gl.ALIASED_POINT_SIZE_RANGE).join(' - ')], ['Line Width Range', 'ALIASED_LINE_WIDTH_RANGE', gl.getParameter(gl.ALIASED_LINE_WIDTH_RANGE).join(' - ')], ['Max Viewport Dimensions', 'MAX_VIEWPORT_DIMS', gl.getParameter(gl.MAX_VIEWPORT_DIMS).join(' - ')], ['Max Renderbuffer Size', 'MAX_RENDERBUFFER_SIZE', gl.getParameter(gl.MAX_RENDERBUFFER_SIZE)], ['Framebuffer Red Bits', 'RED_BITS', gl.getParameter(gl.RED_BITS)], ['Framebuffer Green Bits', 'GREEN_BITS', gl.getParameter(gl.GREEN_BITS)], ['Framebuffer Blue Bits', 'BLUE_BITS', gl.getParameter(gl.BLUE_BITS)], ['Framebuffer Alpha Bits', 'ALPHA_BITS', gl.getParameter(gl.ALPHA_BITS)], ['Framebuffer Depth Bits', 'DEPTH_BITS', gl.getParameter(gl.DEPTH_BITS)], ['Framebuffer Stencil Bits', 'STENCIL_BITS', gl.getParameter(gl.STENCIL_BITS)], ['Framebuffer Subpixel Bits', 'SUBPIXEL_BITS', gl.getParameter(gl.SUBPIXEL_BITS)], ['MSAA Samples', 'SAMPLES', gl.getParameter(gl.SAMPLES)], ['MSAA Sample Buffers', 'SAMPLE_BUFFERS', gl.getParameter(gl.SAMPLE_BUFFERS)], ['Supported Formats for UByte Render Targets ', 'UNSIGNED_BYTE RENDER TARGET FORMATS', [glTextureFloat && checkRenderTargetSupport(gl, gl.RGBA, gl.UNSIGNED_BYTE) ? 'RGBA' : '', glTextureFloat && checkRenderTargetSupport(gl, gl.RGB, gl.UNSIGNED_BYTE) ? 'RGB' : '', glTextureFloat && checkRenderTargetSupport(gl, gl.LUMINANCE, gl.UNSIGNED_BYTE) ? 'LUMINANCE' : '', glTextureFloat && checkRenderTargetSupport(gl, gl.ALPHA, gl.UNSIGNED_BYTE) ? 'ALPHA' : '', glTextureFloat && checkRenderTargetSupport(gl, gl.LUMINANCE_ALPHA, gl.UNSIGNED_BYTE) ? 'LUMINANCE_ALPHA' : ''].join(' ')], ['Supported Formats for Half Float Render Targets', 'HALF FLOAT RENDER TARGET FORMATS', [glTextureHalfFloat && checkRenderTargetSupport(gl, gl.RGBA, glTextureHalfFloat.HALF_FLOAT_OES) ? 'RGBA' : '', glTextureHalfFloat && checkRenderTargetSupport(gl, gl.RGB, glTextureHalfFloat.HALF_FLOAT_OES) ? 'RGB' : '', glTextureHalfFloat && checkRenderTargetSupport(gl, gl.LUMINANCE, glTextureHalfFloat.HALF_FLOAT_OES) ? 'LUMINANCE' : '', glTextureHalfFloat && checkRenderTargetSupport(gl, gl.ALPHA, glTextureHalfFloat.HALF_FLOAT_OES) ? 'ALPHA' : '', glTextureHalfFloat && checkRenderTargetSupport(gl, gl.LUMINANCE_ALPHA, glTextureHalfFloat.HALF_FLOAT_OES) ? 'LUMINANCE_ALPHA' : ''].join(' ')], ['Supported Formats for Full Float Render Targets', 'FLOAT RENDER TARGET FORMATS', [glTextureFloat && checkRenderTargetSupport(gl, gl.RGBA, gl.FLOAT) ? 'RGBA' : '', glTextureFloat && checkRenderTargetSupport(gl, gl.RGB, gl.FLOAT) ? 'RGB' : '', glTextureFloat && checkRenderTargetSupport(gl, gl.LUMINANCE, gl.FLOAT) ? 'LUMINANCE' : '', glTextureFloat && checkRenderTargetSupport(gl, gl.ALPHA, gl.FLOAT) ? 'ALPHA' : '', glTextureFloat && checkRenderTargetSupport(gl, gl.LUMINANCE_ALPHA, gl.FLOAT) ? 'LUMINANCE_ALPHA' : ''].join(' ')], ['Max Multiple Render Targets Buffers', 'MAX_DRAW_BUFFERS_WEBGL', glDrawBuffers ? gl.getParameter(glDrawBuffers.MAX_DRAW_BUFFERS_WEBGL) : 0], ['High Float Precision in Vertex Shader', 'HIGH_FLOAT VERTEX_SHADER', [gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT).precision, ' (-2<sup>', gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT).rangeMin, '</sup> - 2<sup>', gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT).rangeMax, '</sup>)'].join('')], ['Medium Float Precision in Vertex Shader', 'MEDIUM_FLOAT VERTEX_SHADER', [gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT).precision, ' (-2<sup>', gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT).rangeMin, '</sup> - 2<sup>', gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT).rangeMax, '</sup>)'].join('')], ['Low Float Precision in Vertex Shader', 'LOW_FLOAT VERTEX_SHADER', [gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.LOW_FLOAT).precision, ' (-2<sup>', gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.LOW_FLOAT).rangeMin, '</sup> - 2<sup>', gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.LOW_FLOAT).rangeMax, '</sup>)'].join('')], ['High Float Precision in Fragment Shader', 'HIGH_FLOAT FRAGMENT_SHADER', [gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT).precision, ' (-2<sup>', gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT).rangeMin, '</sup> - 2<sup>', gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT).rangeMax, '</sup>)'].join('')], ['Medium Float Precision in Fragment Shader', 'MEDIUM_FLOAT FRAGMENT_SHADER', [gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT).precision, ' (-2<sup>', gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT).rangeMin, '</sup> - 2<sup>', gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT).rangeMax, '</sup>)'].join('')], ['Low Float Precision in Fragment Shader', 'LOW_FLOAT FRAGMENT_SHADER', [gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.LOW_FLOAT).precision, ' (-2<sup>', gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.LOW_FLOAT).rangeMin, '</sup> - 2<sup>', gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.LOW_FLOAT).rangeMax, '</sup>)'].join('')], ['High Int Precision in Vertex Shader', 'HIGH_INT VERTEX_SHADER', [gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_INT).precision, ' (-2<sup>', gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_INT).rangeMin, '</sup> - 2<sup>', gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_INT).rangeMax, '</sup>)'].join('')], ['Medium Int Precision in Vertex Shader', 'MEDIUM_INT VERTEX_SHADER', [gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_INT).precision, ' (-2<sup>', gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_INT).rangeMin, '</sup> - 2<sup>', gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_INT).rangeMax, '</sup>)'].join('')], ['Low Int Precision in Vertex Shader', 'LOW_INT VERTEX_SHADER', [gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.LOW_INT).precision, ' (-2<sup>', gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.LOW_INT).rangeMin, '</sup> - 2<sup>', gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.LOW_INT).rangeMax, '</sup>)'].join('')], ['High Int Precision in Fragment Shader', 'HIGH_INT FRAGMENT_SHADER', [gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_INT).precision, ' (-2<sup>', gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_INT).rangeMin, '</sup> - 2<sup>', gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_INT).rangeMax, '</sup>)'].join('')], ['Medium Int Precision in Fragment Shader', 'MEDIUM_INT FRAGMENT_SHADER', [gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_INT).precision, ' (-2<sup>', gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_INT).rangeMin, '</sup> - 2<sup>', gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_INT).rangeMax, '</sup>)'].join('')], ['Low Int Precision in Fragment Shader', 'LOW_INT FRAGMENT_SHADER', [gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.LOW_INT).precision, ' (-2<sup>', gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.LOW_INT).rangeMin, '</sup> - 2<sup>', gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.LOW_INT).rangeMax, '</sup>)'].join('')], ['Supported Extensions', 'EXTENSIONS', gl.getSupportedExtensions().join('<br/>\t\t\t\t\t ')], ['WebGL Renderer', 'RENDERER', gl.getParameter(gl.RENDERER)], ['WebGL Vendor', 'VENDOR', gl.getParameter(gl.VENDOR)], ['WebGL Version', 'VERSION', gl.getParameter(gl.VERSION)], ['Shading Language Version', 'SHADING_LANGUAGE_VERSION', gl.getParameter(gl.SHADING_LANGUAGE_VERSION)], ['Unmasked Renderer', 'UNMASKED_RENDERER', glDebugRendererInfo && gl.getParameter(glDebugRendererInfo.UNMASKED_RENDERER_WEBGL)], ['Unmasked Vendor', 'UNMASKED_VENDOR', glDebugRendererInfo && gl.getParameter(glDebugRendererInfo.UNMASKED_VENDOR_WEBGL)], ['WebGL Version', 'WEBGL_VERSION', model.webgl2 ? 2 : 1]];
812
- var result = {};
813
-
660
+ publicAPI.getGLInformations = () => {
661
+ const gl = publicAPI.get3DContext();
662
+ const glTextureFloat = gl.getExtension('OES_texture_float');
663
+ const glTextureHalfFloat = gl.getExtension('OES_texture_half_float');
664
+ const glDebugRendererInfo = gl.getExtension('WEBGL_debug_renderer_info');
665
+ const glDrawBuffers = gl.getExtension('WEBGL_draw_buffers');
666
+ const glAnisotropic = gl.getExtension('EXT_texture_filter_anisotropic') || gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic');
667
+ const params = [['Max Vertex Attributes', 'MAX_VERTEX_ATTRIBS', gl.getParameter(gl.MAX_VERTEX_ATTRIBS)], ['Max Varying Vectors', 'MAX_VARYING_VECTORS', gl.getParameter(gl.MAX_VARYING_VECTORS)], ['Max Vertex Uniform Vectors', 'MAX_VERTEX_UNIFORM_VECTORS', gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS)], ['Max Fragment Uniform Vectors', 'MAX_FRAGMENT_UNIFORM_VECTORS', gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS)], ['Max Fragment Texture Image Units', 'MAX_TEXTURE_IMAGE_UNITS', gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS)], ['Max Vertex Texture Image Units', 'MAX_VERTEX_TEXTURE_IMAGE_UNITS', gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS)], ['Max Combined Texture Image Units', 'MAX_COMBINED_TEXTURE_IMAGE_UNITS', gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS)], ['Max 2D Texture Size', 'MAX_TEXTURE_SIZE', gl.getParameter(gl.MAX_TEXTURE_SIZE)], ['Max Cube Texture Size', 'MAX_CUBE_MAP_TEXTURE_SIZE', gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE)], ['Max Texture Anisotropy', 'MAX_TEXTURE_MAX_ANISOTROPY_EXT', glAnisotropic && gl.getParameter(glAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT)], ['Point Size Range', 'ALIASED_POINT_SIZE_RANGE', gl.getParameter(gl.ALIASED_POINT_SIZE_RANGE).join(' - ')], ['Line Width Range', 'ALIASED_LINE_WIDTH_RANGE', gl.getParameter(gl.ALIASED_LINE_WIDTH_RANGE).join(' - ')], ['Max Viewport Dimensions', 'MAX_VIEWPORT_DIMS', gl.getParameter(gl.MAX_VIEWPORT_DIMS).join(' - ')], ['Max Renderbuffer Size', 'MAX_RENDERBUFFER_SIZE', gl.getParameter(gl.MAX_RENDERBUFFER_SIZE)], ['Framebuffer Red Bits', 'RED_BITS', gl.getParameter(gl.RED_BITS)], ['Framebuffer Green Bits', 'GREEN_BITS', gl.getParameter(gl.GREEN_BITS)], ['Framebuffer Blue Bits', 'BLUE_BITS', gl.getParameter(gl.BLUE_BITS)], ['Framebuffer Alpha Bits', 'ALPHA_BITS', gl.getParameter(gl.ALPHA_BITS)], ['Framebuffer Depth Bits', 'DEPTH_BITS', gl.getParameter(gl.DEPTH_BITS)], ['Framebuffer Stencil Bits', 'STENCIL_BITS', gl.getParameter(gl.STENCIL_BITS)], ['Framebuffer Subpixel Bits', 'SUBPIXEL_BITS', gl.getParameter(gl.SUBPIXEL_BITS)], ['MSAA Samples', 'SAMPLES', gl.getParameter(gl.SAMPLES)], ['MSAA Sample Buffers', 'SAMPLE_BUFFERS', gl.getParameter(gl.SAMPLE_BUFFERS)], ['Supported Formats for UByte Render Targets ', 'UNSIGNED_BYTE RENDER TARGET FORMATS', [glTextureFloat && checkRenderTargetSupport(gl, gl.RGBA, gl.UNSIGNED_BYTE) ? 'RGBA' : '', glTextureFloat && checkRenderTargetSupport(gl, gl.RGB, gl.UNSIGNED_BYTE) ? 'RGB' : '', glTextureFloat && checkRenderTargetSupport(gl, gl.LUMINANCE, gl.UNSIGNED_BYTE) ? 'LUMINANCE' : '', glTextureFloat && checkRenderTargetSupport(gl, gl.ALPHA, gl.UNSIGNED_BYTE) ? 'ALPHA' : '', glTextureFloat && checkRenderTargetSupport(gl, gl.LUMINANCE_ALPHA, gl.UNSIGNED_BYTE) ? 'LUMINANCE_ALPHA' : ''].join(' ')], ['Supported Formats for Half Float Render Targets', 'HALF FLOAT RENDER TARGET FORMATS', [glTextureHalfFloat && checkRenderTargetSupport(gl, gl.RGBA, glTextureHalfFloat.HALF_FLOAT_OES) ? 'RGBA' : '', glTextureHalfFloat && checkRenderTargetSupport(gl, gl.RGB, glTextureHalfFloat.HALF_FLOAT_OES) ? 'RGB' : '', glTextureHalfFloat && checkRenderTargetSupport(gl, gl.LUMINANCE, glTextureHalfFloat.HALF_FLOAT_OES) ? 'LUMINANCE' : '', glTextureHalfFloat && checkRenderTargetSupport(gl, gl.ALPHA, glTextureHalfFloat.HALF_FLOAT_OES) ? 'ALPHA' : '', glTextureHalfFloat && checkRenderTargetSupport(gl, gl.LUMINANCE_ALPHA, glTextureHalfFloat.HALF_FLOAT_OES) ? 'LUMINANCE_ALPHA' : ''].join(' ')], ['Supported Formats for Full Float Render Targets', 'FLOAT RENDER TARGET FORMATS', [glTextureFloat && checkRenderTargetSupport(gl, gl.RGBA, gl.FLOAT) ? 'RGBA' : '', glTextureFloat && checkRenderTargetSupport(gl, gl.RGB, gl.FLOAT) ? 'RGB' : '', glTextureFloat && checkRenderTargetSupport(gl, gl.LUMINANCE, gl.FLOAT) ? 'LUMINANCE' : '', glTextureFloat && checkRenderTargetSupport(gl, gl.ALPHA, gl.FLOAT) ? 'ALPHA' : '', glTextureFloat && checkRenderTargetSupport(gl, gl.LUMINANCE_ALPHA, gl.FLOAT) ? 'LUMINANCE_ALPHA' : ''].join(' ')], ['Max Multiple Render Targets Buffers', 'MAX_DRAW_BUFFERS_WEBGL', glDrawBuffers ? gl.getParameter(glDrawBuffers.MAX_DRAW_BUFFERS_WEBGL) : 0], ['High Float Precision in Vertex Shader', 'HIGH_FLOAT VERTEX_SHADER', [gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT).precision, ' (-2<sup>', gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT).rangeMin, '</sup> - 2<sup>', gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT).rangeMax, '</sup>)'].join('')], ['Medium Float Precision in Vertex Shader', 'MEDIUM_FLOAT VERTEX_SHADER', [gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT).precision, ' (-2<sup>', gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT).rangeMin, '</sup> - 2<sup>', gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT).rangeMax, '</sup>)'].join('')], ['Low Float Precision in Vertex Shader', 'LOW_FLOAT VERTEX_SHADER', [gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.LOW_FLOAT).precision, ' (-2<sup>', gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.LOW_FLOAT).rangeMin, '</sup> - 2<sup>', gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.LOW_FLOAT).rangeMax, '</sup>)'].join('')], ['High Float Precision in Fragment Shader', 'HIGH_FLOAT FRAGMENT_SHADER', [gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT).precision, ' (-2<sup>', gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT).rangeMin, '</sup> - 2<sup>', gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT).rangeMax, '</sup>)'].join('')], ['Medium Float Precision in Fragment Shader', 'MEDIUM_FLOAT FRAGMENT_SHADER', [gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT).precision, ' (-2<sup>', gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT).rangeMin, '</sup> - 2<sup>', gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT).rangeMax, '</sup>)'].join('')], ['Low Float Precision in Fragment Shader', 'LOW_FLOAT FRAGMENT_SHADER', [gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.LOW_FLOAT).precision, ' (-2<sup>', gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.LOW_FLOAT).rangeMin, '</sup> - 2<sup>', gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.LOW_FLOAT).rangeMax, '</sup>)'].join('')], ['High Int Precision in Vertex Shader', 'HIGH_INT VERTEX_SHADER', [gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_INT).precision, ' (-2<sup>', gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_INT).rangeMin, '</sup> - 2<sup>', gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_INT).rangeMax, '</sup>)'].join('')], ['Medium Int Precision in Vertex Shader', 'MEDIUM_INT VERTEX_SHADER', [gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_INT).precision, ' (-2<sup>', gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_INT).rangeMin, '</sup> - 2<sup>', gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_INT).rangeMax, '</sup>)'].join('')], ['Low Int Precision in Vertex Shader', 'LOW_INT VERTEX_SHADER', [gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.LOW_INT).precision, ' (-2<sup>', gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.LOW_INT).rangeMin, '</sup> - 2<sup>', gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.LOW_INT).rangeMax, '</sup>)'].join('')], ['High Int Precision in Fragment Shader', 'HIGH_INT FRAGMENT_SHADER', [gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_INT).precision, ' (-2<sup>', gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_INT).rangeMin, '</sup> - 2<sup>', gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_INT).rangeMax, '</sup>)'].join('')], ['Medium Int Precision in Fragment Shader', 'MEDIUM_INT FRAGMENT_SHADER', [gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_INT).precision, ' (-2<sup>', gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_INT).rangeMin, '</sup> - 2<sup>', gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_INT).rangeMax, '</sup>)'].join('')], ['Low Int Precision in Fragment Shader', 'LOW_INT FRAGMENT_SHADER', [gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.LOW_INT).precision, ' (-2<sup>', gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.LOW_INT).rangeMin, '</sup> - 2<sup>', gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.LOW_INT).rangeMax, '</sup>)'].join('')], ['Supported Extensions', 'EXTENSIONS', gl.getSupportedExtensions().join('<br/>\t\t\t\t\t ')], ['WebGL Renderer', 'RENDERER', gl.getParameter(gl.RENDERER)], ['WebGL Vendor', 'VENDOR', gl.getParameter(gl.VENDOR)], ['WebGL Version', 'VERSION', gl.getParameter(gl.VERSION)], ['Shading Language Version', 'SHADING_LANGUAGE_VERSION', gl.getParameter(gl.SHADING_LANGUAGE_VERSION)], ['Unmasked Renderer', 'UNMASKED_RENDERER', glDebugRendererInfo && gl.getParameter(glDebugRendererInfo.UNMASKED_RENDERER_WEBGL)], ['Unmasked Vendor', 'UNMASKED_VENDOR', glDebugRendererInfo && gl.getParameter(glDebugRendererInfo.UNMASKED_VENDOR_WEBGL)], ['WebGL Version', 'WEBGL_VERSION', model.webgl2 ? 2 : 1]];
668
+ const result = {};
814
669
  while (params.length) {
815
- var _params$pop = params.pop(),
816
- _params$pop2 = _slicedToArray(_params$pop, 3),
817
- label = _params$pop2[0],
818
- key = _params$pop2[1],
819
- value = _params$pop2[2];
820
-
670
+ const [label, key, value] = params.pop();
821
671
  if (key) {
822
672
  result[key] = {
823
- label: label,
824
- value: value
673
+ label,
674
+ value
825
675
  };
826
676
  }
827
677
  }
828
-
829
678
  return result;
830
679
  };
831
-
832
- publicAPI.traverseAllPasses = function () {
680
+ publicAPI.traverseAllPasses = () => {
833
681
  if (model.renderPasses) {
834
- for (var index = 0; index < model.renderPasses.length; ++index) {
682
+ for (let index = 0; index < model.renderPasses.length; ++index) {
835
683
  model.renderPasses[index].traverse(publicAPI, null);
836
684
  }
837
685
  }
838
-
839
686
  if (model.notifyStartCaptureImage) {
840
687
  getCanvasDataURL();
841
688
  }
842
689
  };
843
-
844
- publicAPI.disableCullFace = function () {
690
+ publicAPI.disableCullFace = () => {
845
691
  if (model.cullFaceEnabled) {
846
692
  model.context.disable(model.context.CULL_FACE);
847
693
  model.cullFaceEnabled = false;
848
694
  }
849
695
  };
850
-
851
- publicAPI.enableCullFace = function () {
696
+ publicAPI.enableCullFace = () => {
852
697
  if (!model.cullFaceEnabled) {
853
698
  model.context.enable(model.context.CULL_FACE);
854
699
  model.cullFaceEnabled = true;
855
700
  }
856
701
  };
857
-
858
- publicAPI.setViewStream = function (stream) {
702
+ publicAPI.setViewStream = stream => {
859
703
  if (model.viewStream === stream) {
860
704
  return false;
861
705
  }
862
-
863
706
  if (model.subscription) {
864
707
  model.subscription.unsubscribe();
865
708
  model.subscription = null;
866
709
  }
867
-
868
710
  model.viewStream = stream;
869
-
870
711
  if (model.viewStream) {
871
712
  // Force background to be transparent + render
872
- var mainRenderer = model.renderable.getRenderers()[0];
873
- mainRenderer.getBackgroundByReference()[3] = 0; // Enable display of the background image
713
+ const mainRenderer = model.renderable.getRenderers()[0];
714
+ mainRenderer.getBackgroundByReference()[3] = 0;
874
715
 
875
- publicAPI.setUseBackgroundImage(true); // Bind to remote stream
716
+ // Enable display of the background image
717
+ publicAPI.setUseBackgroundImage(true);
876
718
 
877
- model.subscription = model.viewStream.onImageReady(function (e) {
878
- return publicAPI.setBackgroundImage(e.image);
879
- });
719
+ // Bind to remote stream
720
+ model.subscription = model.viewStream.onImageReady(e => publicAPI.setBackgroundImage(e.image));
880
721
  model.viewStream.setSize(model.size[0], model.size[1]);
881
722
  model.viewStream.invalidateCache();
882
723
  model.viewStream.render();
883
724
  publicAPI.modified();
884
725
  }
885
-
886
726
  return true;
887
727
  };
888
-
889
- publicAPI.createSelector = function () {
890
- var ret = vtkHardwareSelector.newInstance();
728
+ publicAPI.createSelector = () => {
729
+ const ret = vtkHardwareSelector.newInstance();
891
730
  ret.setOpenGLRenderWindow(publicAPI);
892
731
  return ret;
893
732
  };
894
-
895
733
  function clearEvents() {
896
734
  model.canvas.removeEventListener('webglcontextlost', _preventDefault);
897
735
  model.canvas.removeEventListener('webglcontextrestored', publicAPI.restoreContext);
898
736
  }
737
+ publicAPI.delete = macro.chain(clearEvents, publicAPI.delete, publicAPI.setViewStream, deleteGLContext);
899
738
 
900
- publicAPI.delete = macro.chain(clearEvents, publicAPI.delete, publicAPI.setViewStream, deleteGLContext); // Do not trigger modified for performance reasons
901
-
902
- publicAPI.setActiveFramebuffer = function (newActiveFramebuffer) {
739
+ // Do not trigger modified for performance reasons
740
+ publicAPI.setActiveFramebuffer = newActiveFramebuffer => {
903
741
  model.activeFramebuffer = newActiveFramebuffer;
904
742
  };
905
-
906
- var superSetSize = publicAPI.setSize;
907
-
908
- publicAPI.setSize = function (width, height) {
909
- var modified = superSetSize(width, height);
910
-
743
+ const superSetSize = publicAPI.setSize;
744
+ publicAPI.setSize = (width, height) => {
745
+ const modified = superSetSize(width, height);
911
746
  if (modified) {
912
747
  publicAPI.invokeWindowResizeEvent({
913
- width: width,
914
- height: height
748
+ width,
749
+ height
915
750
  });
916
751
  }
917
-
918
752
  return modified;
919
753
  };
920
- } // ----------------------------------------------------------------------------
754
+ }
755
+
756
+ // ----------------------------------------------------------------------------
921
757
  // Object factory
922
758
  // ----------------------------------------------------------------------------
923
759
 
924
-
925
- var DEFAULT_VALUES = {
760
+ const DEFAULT_VALUES = {
926
761
  cullFaceEnabled: false,
927
762
  shaderCache: null,
928
763
  initialized: false,
@@ -945,24 +780,27 @@ var DEFAULT_VALUES = {
945
780
  imageFormat: 'image/png',
946
781
  useOffScreen: false,
947
782
  useBackgroundImage: false
948
- }; // ----------------------------------------------------------------------------
783
+ };
784
+
785
+ // ----------------------------------------------------------------------------
949
786
 
950
787
  function extend(publicAPI, model) {
951
- var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
952
- Object.assign(model, DEFAULT_VALUES, initialValues); // Inheritance
788
+ let initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
789
+ Object.assign(model, DEFAULT_VALUES, initialValues);
953
790
 
954
- vtkRenderWindowViewNode.extend(publicAPI, model, initialValues); // Create internal instances
791
+ // Inheritance
792
+ vtkRenderWindowViewNode.extend(publicAPI, model, initialValues);
955
793
 
794
+ // Create internal instances
956
795
  model.canvas = document.createElement('canvas');
957
796
  model.canvas.style.width = '100%';
958
797
  createGLContext();
959
-
960
798
  if (!model.selector) {
961
799
  model.selector = vtkHardwareSelector.newInstance();
962
800
  model.selector.setOpenGLRenderWindow(publicAPI);
963
- } // Create internal bgImage
964
-
801
+ }
965
802
 
803
+ // Create internal bgImage
966
804
  model.bgImage = new Image();
967
805
  model.bgImage.style.position = 'absolute';
968
806
  model.bgImage.style.left = '0';
@@ -973,35 +811,43 @@ function extend(publicAPI, model) {
973
811
  model._textureResourceIds = new Map();
974
812
  model.myFactory = vtkViewNodeFactory.newInstance();
975
813
  /* eslint-disable no-use-before-define */
976
-
977
814
  model.myFactory.registerOverride('vtkRenderWindow', newInstance);
978
815
  /* eslint-enable no-use-before-define */
979
816
 
980
817
  model.shaderCache = vtkShaderCache.newInstance();
981
- model.shaderCache.setOpenGLRenderWindow(publicAPI); // setup default forward pass rendering
818
+ model.shaderCache.setOpenGLRenderWindow(publicAPI);
982
819
 
820
+ // setup default forward pass rendering
983
821
  model.renderPasses[0] = vtkForwardPass.newInstance();
984
- macro.event(publicAPI, model, 'imageReady'); // Build VTK API
822
+ macro.event(publicAPI, model, 'imageReady');
985
823
 
824
+ // Build VTK API
986
825
  macro.get(publicAPI, model, ['shaderCache', 'textureUnitManager', 'webgl2', 'vrDisplay', 'useBackgroundImage', 'xrSupported', 'activeFramebuffer']);
987
826
  macro.setGet(publicAPI, model, ['initialized', 'context', 'canvas', 'renderPasses', 'notifyStartCaptureImage', 'defaultToWebgl2', 'cursor', 'useOffScreen']);
988
827
  macro.setGetArray(publicAPI, model, ['size'], 2);
989
- macro.event(publicAPI, model, 'windowResizeEvent'); // Object methods
828
+ macro.event(publicAPI, model, 'windowResizeEvent');
990
829
 
830
+ // Object methods
991
831
  vtkOpenGLRenderWindow(publicAPI, model);
992
- } // ----------------------------------------------------------------------------
832
+ }
993
833
 
994
- var newInstance = macro.newInstance(extend, 'vtkOpenGLRenderWindow'); // ----------------------------------------------------------------------------
834
+ // ----------------------------------------------------------------------------
835
+
836
+ const newInstance = macro.newInstance(extend, 'vtkOpenGLRenderWindow');
837
+
838
+ // ----------------------------------------------------------------------------
995
839
  // Register API specific RenderWindow implementation
996
840
  // ----------------------------------------------------------------------------
997
841
 
998
- registerViewConstructor('WebGL', newInstance); // ----------------------------------------------------------------------------
842
+ registerViewConstructor('WebGL', newInstance);
843
+
844
+ // ----------------------------------------------------------------------------
999
845
 
1000
846
  var vtkRenderWindow = {
1001
- newInstance: newInstance,
1002
- extend: extend,
1003
- pushMonitorGLContextCount: pushMonitorGLContextCount,
1004
- popMonitorGLContextCount: popMonitorGLContextCount
847
+ newInstance,
848
+ extend,
849
+ pushMonitorGLContextCount,
850
+ popMonitorGLContextCount
1005
851
  };
1006
852
 
1007
853
  export { vtkRenderWindow as default, extend, newInstance, popMonitorGLContextCount, pushMonitorGLContextCount };