@niivue/niivue 0.68.2 → 1.0.0-rc.3

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 (389) hide show
  1. package/LICENSE +24 -0
  2. package/README.md +114 -8
  3. package/dist/NVConstants.d.ts +86 -0
  4. package/dist/NVControl.d.ts +4 -0
  5. package/dist/NVControlBase-B69LUzEY.js +18474 -0
  6. package/dist/NVControlBase.d.ts +661 -0
  7. package/dist/NVControlWebGL2.d.ts +4 -0
  8. package/dist/NVControlWebGPU.d.ts +4 -0
  9. package/dist/NVDocument.d.ts +163 -0
  10. package/dist/NVEvents.d.ts +117 -0
  11. package/dist/NVLoader.d.ts +21 -0
  12. package/dist/NVModel.d.ts +102 -0
  13. package/dist/NVTypes.d.ts +838 -0
  14. package/dist/NVViewGL-BAzLerZ8.js +4129 -0
  15. package/dist/NVViewGPU-uzlo4jZC.js +5278 -0
  16. package/dist/annotation/clipper.d.ts +24 -0
  17. package/dist/annotation/index.d.ts +38 -0
  18. package/dist/annotation/pointInRing.d.ts +2 -0
  19. package/dist/annotation/selection.d.ts +38 -0
  20. package/dist/annotation/shapes.d.ts +8 -0
  21. package/dist/annotation/sliceProjection.d.ts +25 -0
  22. package/dist/annotation/stats.d.ts +4 -0
  23. package/dist/annotation/triangulate.d.ts +5 -0
  24. package/dist/annotation/undoRedo.d.ts +13 -0
  25. package/{src/fonts/Ubuntu.json → dist/assets/fonts/Ubuntu.json.d.ts} +473 -470
  26. package/dist/assets/fonts/index.d.ts +1 -0
  27. package/dist/assets/fonts/index.js +4 -0
  28. package/dist/assets/fonts/ubuntu.d.ts +2 -0
  29. package/dist/assets/matcaps/cortex.d.ts +1 -0
  30. package/dist/assets/matcaps/index.d.ts +2 -0
  31. package/dist/assets/matcaps/index.js +6 -0
  32. package/dist/assets/matcaps/shiny.d.ts +1 -0
  33. package/dist/cmap/NVCmaps.d.ts +25 -0
  34. package/dist/codecs/NVGz.d.ts +4 -0
  35. package/dist/codecs/NVMatlab.d.ts +2 -0
  36. package/dist/codecs/NVZip.d.ts +30 -0
  37. package/dist/control/dragModes.d.ts +29 -0
  38. package/dist/control/interactions.d.ts +7 -0
  39. package/dist/control/locationTracking.d.ts +27 -0
  40. package/dist/control/viewBoth.d.ts +13 -0
  41. package/dist/control/viewLifecycle.d.ts +15 -0
  42. package/dist/control/viewWebGL2.d.ts +11 -0
  43. package/dist/control/viewWebGPU.d.ts +11 -0
  44. package/dist/cortex-CBhDullr.js +4 -0
  45. package/dist/drawing/drawingManager.d.ts +43 -0
  46. package/dist/drawing/penTool.d.ts +54 -0
  47. package/dist/drawing/rle.d.ts +9 -0
  48. package/dist/drawing/undo.d.ts +10 -0
  49. package/dist/extension/context.d.ts +51 -0
  50. package/dist/extension/types.d.ts +113 -0
  51. package/dist/gl/NVViewGL.d.ts +87 -0
  52. package/dist/gl/bench.d.ts +43 -0
  53. package/dist/gl/colorbar.d.ts +31 -0
  54. package/dist/gl/colorbarShader.d.ts +2 -0
  55. package/dist/gl/crosshair.d.ts +16 -0
  56. package/dist/gl/depthPickShader.d.ts +4 -0
  57. package/dist/gl/font.d.ts +27 -0
  58. package/dist/gl/fontShader.d.ts +2 -0
  59. package/dist/gl/gradient.d.ts +14 -0
  60. package/dist/gl/line.d.ts +14 -0
  61. package/dist/gl/lineShader.d.ts +2 -0
  62. package/dist/gl/mesh.d.ts +20 -0
  63. package/dist/gl/meshShader.d.ts +24 -0
  64. package/dist/gl/orientOverlay.d.ts +34 -0
  65. package/dist/gl/panelShader.d.ts +2 -0
  66. package/dist/gl/polygon.d.ts +15 -0
  67. package/dist/gl/polygon3d.d.ts +16 -0
  68. package/dist/gl/polygon3dShader.d.ts +2 -0
  69. package/dist/gl/polygonShader.d.ts +2 -0
  70. package/dist/gl/render.d.ts +42 -0
  71. package/dist/gl/renderShader.d.ts +2 -0
  72. package/dist/gl/shader.d.ts +8 -0
  73. package/dist/gl/slice.d.ts +27 -0
  74. package/dist/gl/sliceShader.d.ts +2 -0
  75. package/dist/gl/thumbnail.d.ts +16 -0
  76. package/dist/gl/volumeShaderLib.d.ts +2 -0
  77. package/dist/index-DSRsZfLB.js +148 -0
  78. package/dist/index.d.ts +14 -5435
  79. package/dist/index.webgl2.d.ts +12 -0
  80. package/dist/index.webgpu.d.ts +12 -0
  81. package/dist/logger.d.ts +34 -0
  82. package/dist/math/NVTransforms.d.ts +37 -0
  83. package/dist/mesh/NVMesh.d.ts +24 -0
  84. package/dist/mesh/NVShapes.d.ts +19 -0
  85. package/dist/mesh/connectome/index.d.ts +44 -0
  86. package/dist/mesh/connectome/readers/jcon.d.ts +7 -0
  87. package/dist/mesh/layers/index.d.ts +44 -0
  88. package/dist/mesh/layers/readers/curv.d.ts +18 -0
  89. package/dist/mesh/layers/readers/smp.d.ts +12 -0
  90. package/dist/mesh/layers/readers/stc.d.ts +13 -0
  91. package/dist/mesh/readers/asc.d.ts +4 -0
  92. package/dist/mesh/readers/dfs.d.ts +4 -0
  93. package/dist/mesh/readers/fs.d.ts +4 -0
  94. package/dist/mesh/readers/geo.d.ts +4 -0
  95. package/dist/mesh/readers/gii.d.ts +4 -0
  96. package/dist/mesh/readers/ico.d.ts +4 -0
  97. package/dist/mesh/readers/iwm.d.ts +6 -0
  98. package/dist/mesh/readers/mz3.d.ts +4 -0
  99. package/dist/mesh/readers/nv.d.ts +4 -0
  100. package/dist/mesh/readers/obj.d.ts +4 -0
  101. package/dist/mesh/readers/off.d.ts +4 -0
  102. package/dist/mesh/readers/ply.d.ts +4 -0
  103. package/dist/mesh/readers/srf.d.ts +4 -0
  104. package/dist/mesh/readers/stl.d.ts +4 -0
  105. package/dist/mesh/readers/vtk.d.ts +14 -0
  106. package/dist/mesh/readers/wrl.d.ts +4 -0
  107. package/dist/mesh/readers/x3d.d.ts +4 -0
  108. package/dist/mesh/tracts/index.d.ts +24 -0
  109. package/dist/mesh/tracts/readers/tck.d.ts +10 -0
  110. package/dist/mesh/tracts/readers/trk.d.ts +10 -0
  111. package/dist/mesh/tracts/readers/trx.d.ts +11 -0
  112. package/dist/mesh/tracts/readers/tt.d.ts +17 -0
  113. package/dist/mesh/tracts/scalars.d.ts +8 -0
  114. package/dist/mesh/writers/index.d.ts +13 -0
  115. package/dist/mesh/writers/iwm.d.ts +2 -0
  116. package/dist/mesh/writers/mz3.d.ts +5 -0
  117. package/dist/mesh/writers/obj.d.ts +2 -0
  118. package/dist/mesh/writers/stl.d.ts +2 -0
  119. package/dist/niivuegpu.js +104 -0
  120. package/dist/niivuegpu.webgl2.js +68 -0
  121. package/dist/niivuegpu.webgpu.js +66 -0
  122. package/dist/view/NVAnnotation.d.ts +17 -0
  123. package/dist/view/NVColorbar.d.ts +35 -0
  124. package/dist/view/NVCrosscut.d.ts +7 -0
  125. package/dist/view/NVCrosshair.d.ts +10 -0
  126. package/dist/view/NVDrawingTexture.d.ts +10 -0
  127. package/dist/view/NVFont.d.ts +58 -0
  128. package/dist/view/NVGraph.d.ts +62 -0
  129. package/dist/view/NVLegend.d.ts +37 -0
  130. package/dist/view/NVLine.d.ts +6 -0
  131. package/dist/view/NVMeasurement.d.ts +14 -0
  132. package/dist/view/NVMeshView.d.ts +17 -0
  133. package/dist/view/NVOrient.d.ts +25 -0
  134. package/dist/view/NVRenderer.d.ts +9 -0
  135. package/dist/view/NVRuler.d.ts +12 -0
  136. package/dist/view/NVSliceLayout.d.ts +58 -0
  137. package/dist/view/NVUILayout.d.ts +13 -0
  138. package/dist/view/sliceUtils.d.ts +3 -0
  139. package/dist/volume/NVVolume.d.ts +22 -0
  140. package/dist/volume/TensorProcessing.d.ts +16 -0
  141. package/dist/volume/modulation.d.ts +3 -0
  142. package/dist/volume/readers/afni.d.ts +7 -0
  143. package/dist/volume/readers/bmp.d.ts +7 -0
  144. package/dist/volume/readers/ecat.d.ts +7 -0
  145. package/dist/volume/readers/fib.d.ts +7 -0
  146. package/dist/volume/readers/iwi.d.ts +7 -0
  147. package/dist/volume/readers/mgh.d.ts +7 -0
  148. package/dist/volume/readers/mha.d.ts +7 -0
  149. package/dist/volume/readers/mif.d.ts +7 -0
  150. package/dist/volume/readers/nii.d.ts +7 -0
  151. package/dist/volume/readers/npy.d.ts +7 -0
  152. package/dist/volume/readers/nrrd.d.ts +7 -0
  153. package/dist/volume/readers/src.d.ts +7 -0
  154. package/dist/volume/readers/vmr.d.ts +7 -0
  155. package/dist/volume/transforms/index.d.ts +90 -0
  156. package/dist/volume/utils.d.ts +126 -0
  157. package/dist/volume/writers/index.d.ts +6 -0
  158. package/dist/volume/writers/iwi.d.ts +3 -0
  159. package/dist/volume/writers/nii.d.ts +3 -0
  160. package/dist/wgpu/NVViewGPU.d.ts +105 -0
  161. package/dist/wgpu/bench.d.ts +33 -0
  162. package/dist/wgpu/colorbar.d.ts +40 -0
  163. package/dist/wgpu/crosshair.d.ts +21 -0
  164. package/dist/wgpu/depthPick.d.ts +27 -0
  165. package/dist/wgpu/font.d.ts +24 -0
  166. package/dist/wgpu/line.d.ts +13 -0
  167. package/dist/wgpu/mesh.d.ts +13 -0
  168. package/dist/wgpu/orient.d.ts +26 -0
  169. package/dist/wgpu/polygon.d.ts +16 -0
  170. package/dist/wgpu/polygon3d.d.ts +22 -0
  171. package/dist/wgpu/render.d.ts +50 -0
  172. package/dist/wgpu/slice.d.ts +54 -0
  173. package/dist/wgpu/thumbnail.d.ts +17 -0
  174. package/dist/wgpu/volumeShaderLib.d.ts +1 -0
  175. package/dist/wgpu/webgpu.d.ts +3 -0
  176. package/dist/wgpu/wgpu.d.ts +6 -0
  177. package/dist/workers/NVWorker.d.ts +41 -0
  178. package/dist/workers/transform.worker.d.ts +12 -0
  179. package/package.json +54 -83
  180. package/build/drawing/index.d.ts +0 -128
  181. package/build/drawing/index.js +0 -8916
  182. package/build/drawing/index.js.map +0 -1
  183. package/build/index.min.js +0 -1
  184. package/build/metafile-esm.json +0 -1
  185. package/build/niivue/index.d.ts +0 -3509
  186. package/build/niivue/index.js +0 -45203
  187. package/build/niivue/index.js.map +0 -1
  188. package/build/nvdocument-BvCNF744.d.ts +0 -1934
  189. package/build/utils/index.d.ts +0 -29
  190. package/build/utils/index.js +0 -597
  191. package/build/utils/index.js.map +0 -1
  192. package/dist/index.js +0 -53958
  193. package/dist/index.js.map +0 -1
  194. package/dist/index.min.js +0 -1
  195. package/dist/metafile-esm.json +0 -1
  196. package/dist/niivue.umd.js +0 -2382
  197. package/src/cmaps/_itksnap.json +0 -55
  198. package/src/cmaps/_slicer3d.json +0 -355
  199. package/src/cmaps/actc.json +0 -7
  200. package/src/cmaps/afni_blues_inv.json +0 -9
  201. package/src/cmaps/afni_reds_inv.json +0 -7
  202. package/src/cmaps/batlow.json +0 -7
  203. package/src/cmaps/bcgwhw.json +0 -32
  204. package/src/cmaps/bcgwhw_dark.json +0 -32
  205. package/src/cmaps/blue.json +0 -7
  206. package/src/cmaps/blue2cyan.json +0 -7
  207. package/src/cmaps/blue2magenta.json +0 -7
  208. package/src/cmaps/blue2red.json +0 -7
  209. package/src/cmaps/bluegrn.json +0 -7
  210. package/src/cmaps/bone.json +0 -7
  211. package/src/cmaps/bronze.json +0 -7
  212. package/src/cmaps/cet_l17.json +0 -93
  213. package/src/cmaps/cividis.json +0 -7
  214. package/src/cmaps/cool.json +0 -7
  215. package/src/cmaps/copper.json +0 -7
  216. package/src/cmaps/copper2.json +0 -7
  217. package/src/cmaps/ct_airways.json +0 -9
  218. package/src/cmaps/ct_artery.json +0 -9
  219. package/src/cmaps/ct_bones.json +0 -9
  220. package/src/cmaps/ct_brain.json +0 -9
  221. package/src/cmaps/ct_brain_gray.json +0 -9
  222. package/src/cmaps/ct_cardiac.json +0 -9
  223. package/src/cmaps/ct_head.json +0 -9
  224. package/src/cmaps/ct_kidneys.json +0 -9
  225. package/src/cmaps/ct_liver.json +0 -9
  226. package/src/cmaps/ct_muscles.json +0 -9
  227. package/src/cmaps/ct_scalp.json +0 -9
  228. package/src/cmaps/ct_skull.json +0 -9
  229. package/src/cmaps/ct_soft.json +0 -9
  230. package/src/cmaps/ct_soft_tissue.json +0 -9
  231. package/src/cmaps/ct_surface.json +0 -9
  232. package/src/cmaps/ct_vessels.json +0 -9
  233. package/src/cmaps/ct_w_contrast.json +0 -9
  234. package/src/cmaps/cubehelix.json +0 -22
  235. package/src/cmaps/electric_blue.json +0 -7
  236. package/src/cmaps/freesurfer.json +0 -27
  237. package/src/cmaps/ge_color.json +0 -7
  238. package/src/cmaps/gold.json +0 -7
  239. package/src/cmaps/gray.json +0 -7
  240. package/src/cmaps/green.json +0 -7
  241. package/src/cmaps/green2cyan.json +0 -7
  242. package/src/cmaps/green2orange.json +0 -7
  243. package/src/cmaps/hot.json +0 -7
  244. package/src/cmaps/hotiron.json +0 -7
  245. package/src/cmaps/hsv.json +0 -7
  246. package/src/cmaps/index.ts +0 -72
  247. package/src/cmaps/inferno.json +0 -7
  248. package/src/cmaps/jet.json +0 -7
  249. package/src/cmaps/kry.json +0 -7
  250. package/src/cmaps/linspecer.json +0 -7
  251. package/src/cmaps/lipari.json +0 -7
  252. package/src/cmaps/magma.json +0 -7
  253. package/src/cmaps/mako.json +0 -7
  254. package/src/cmaps/navia.json +0 -7
  255. package/src/cmaps/nih.json +0 -7
  256. package/src/cmaps/plasma.json +0 -7
  257. package/src/cmaps/random.json +0 -90
  258. package/src/cmaps/red.json +0 -7
  259. package/src/cmaps/redyell.json +0 -7
  260. package/src/cmaps/rocket.json +0 -7
  261. package/src/cmaps/roi_i256.json +0 -92
  262. package/src/cmaps/surface.json +0 -7
  263. package/src/cmaps/thermal.json +0 -7
  264. package/src/cmaps/turbo.json +0 -7
  265. package/src/cmaps/violet.json +0 -7
  266. package/src/cmaps/viridis.json +0 -7
  267. package/src/cmaps/warm.json +0 -7
  268. package/src/cmaps/winter.json +0 -7
  269. package/src/cmaps/x_rain.json +0 -7
  270. package/src/colortables.ts +0 -289
  271. package/src/drawing/index.ts +0 -13
  272. package/src/drawing/masks.ts +0 -500
  273. package/src/drawing/rle.ts +0 -97
  274. package/src/drawing/undo.ts +0 -28
  275. package/src/events.ts +0 -144
  276. package/src/fonts/Garamond.json +0 -1491
  277. package/src/fonts/Garamond.png +0 -0
  278. package/src/fonts/GaramondBold.json +0 -1506
  279. package/src/fonts/GaramondBold.png +0 -0
  280. package/src/fonts/Roboto-Regular.json +0 -1496
  281. package/src/fonts/Roboto-Regular.png +0 -0
  282. package/src/fonts/Ubuntu.png +0 -0
  283. package/src/fonts/UbuntuBold.json +0 -1506
  284. package/src/fonts/UbuntuBold.png +0 -0
  285. package/src/index.html +0 -152
  286. package/src/index_histo.html +0 -233
  287. package/src/index_magic.html +0 -223
  288. package/src/index_zarr_viewer.html +0 -785
  289. package/src/logger.ts +0 -74
  290. package/src/matcaps/Cortex.jpg +0 -0
  291. package/src/matcaps/Cream.jpg +0 -0
  292. package/src/matcaps/Fuzzy.jpg +0 -0
  293. package/src/matcaps/Gold.jpg +0 -0
  294. package/src/matcaps/Peach.jpg +0 -0
  295. package/src/matcaps/Plastic.jpg +0 -0
  296. package/src/matcaps/Shiny.jpg +0 -0
  297. package/src/niivue/core/CoordinateTransform.ts +0 -700
  298. package/src/niivue/core/README.md +0 -122
  299. package/src/niivue/core/ShaderManager.ts +0 -621
  300. package/src/niivue/core/gl.ts +0 -304
  301. package/src/niivue/data/ConnectomeManager.ts +0 -178
  302. package/src/niivue/data/FileLoader.ts +0 -324
  303. package/src/niivue/data/MeshManager.ts +0 -305
  304. package/src/niivue/data/VolumeColormap.ts +0 -87
  305. package/src/niivue/data/VolumeLayerRenderer.ts +0 -590
  306. package/src/niivue/data/VolumeManager.ts +0 -292
  307. package/src/niivue/data/VolumeModulation.ts +0 -135
  308. package/src/niivue/data/VolumeTexture.ts +0 -203
  309. package/src/niivue/descriptives.ts +0 -252
  310. package/src/niivue/drawing/DrawingManager.ts +0 -462
  311. package/src/niivue/drawing/FloodFillTool.ts +0 -749
  312. package/src/niivue/drawing/PenTool.ts +0 -647
  313. package/src/niivue/drawing/ShapeTool.ts +0 -298
  314. package/src/niivue/index.ts +0 -12392
  315. package/src/niivue/interaction/DragModeManager.ts +0 -555
  316. package/src/niivue/interaction/DropHandler.ts +0 -255
  317. package/src/niivue/interaction/EventController.ts +0 -298
  318. package/src/niivue/interaction/KeyboardController.ts +0 -240
  319. package/src/niivue/interaction/MouseController.ts +0 -410
  320. package/src/niivue/interaction/TouchController.ts +0 -434
  321. package/src/niivue/interaction/WheelController.ts +0 -274
  322. package/src/niivue/interaction/index.ts +0 -11
  323. package/src/niivue/navigation/CameraController.ts +0 -129
  324. package/src/niivue/navigation/ClipPlaneManager.ts +0 -294
  325. package/src/niivue/navigation/LayoutManager.ts +0 -709
  326. package/src/niivue/navigation/SliceNavigation.ts +0 -482
  327. package/src/niivue/processing/ImageProcessing.ts +0 -1159
  328. package/src/niivue/rendering/MeshRenderer.ts +0 -521
  329. package/src/niivue/rendering/SceneRenderer.ts +0 -405
  330. package/src/niivue/rendering/SliceRenderer.ts +0 -450
  331. package/src/niivue/rendering/UIElementRenderer.ts +0 -772
  332. package/src/niivue/rendering/VolumeRenderer.ts +0 -530
  333. package/src/niivue/texture-constants.ts +0 -22
  334. package/src/niivue-object3D.ts +0 -382
  335. package/src/niivue.css +0 -105
  336. package/src/nvconnectome.ts +0 -454
  337. package/src/nvdocument.ts +0 -850
  338. package/src/nvimage/AffineProcessor.ts +0 -163
  339. package/src/nvimage/ColormapManager.ts +0 -84
  340. package/src/nvimage/CoordinateTransform.ts +0 -178
  341. package/src/nvimage/ImageDataProcessor.ts +0 -207
  342. package/src/nvimage/ImageFactory.ts +0 -354
  343. package/src/nvimage/ImageMetadata.ts +0 -82
  344. package/src/nvimage/ImageOrientation.ts +0 -391
  345. package/src/nvimage/ImageReaders/afni.ts +0 -260
  346. package/src/nvimage/ImageReaders/brainvoyager.ts +0 -138
  347. package/src/nvimage/ImageReaders/dsistudio.ts +0 -184
  348. package/src/nvimage/ImageReaders/ecat.ts +0 -119
  349. package/src/nvimage/ImageReaders/image.ts +0 -78
  350. package/src/nvimage/ImageReaders/index.ts +0 -22
  351. package/src/nvimage/ImageReaders/itk.ts +0 -163
  352. package/src/nvimage/ImageReaders/mgh.ts +0 -394
  353. package/src/nvimage/ImageReaders/mrtrix.ts +0 -323
  354. package/src/nvimage/ImageReaders/nii.ts +0 -56
  355. package/src/nvimage/ImageReaders/nrrd.ts +0 -318
  356. package/src/nvimage/ImageReaders/numpy.ts +0 -136
  357. package/src/nvimage/ImageReaders/zarr.ts +0 -93
  358. package/src/nvimage/ImageWriter.ts +0 -317
  359. package/src/nvimage/IntensityCalibration.ts +0 -280
  360. package/src/nvimage/RenderingUtils.ts +0 -158
  361. package/src/nvimage/StreamingLoader.ts +0 -143
  362. package/src/nvimage/TensorProcessing.ts +0 -108
  363. package/src/nvimage/VolumeUtils.ts +0 -331
  364. package/src/nvimage/ZarrProcessor.ts +0 -114
  365. package/src/nvimage/affineUtils.ts +0 -144
  366. package/src/nvimage/index.ts +0 -1399
  367. package/src/nvimage/utils.ts +0 -677
  368. package/src/nvimage/zarr/NVZarrHelper.ts +0 -1041
  369. package/src/nvimage/zarr/ZarrChunkCache.ts +0 -133
  370. package/src/nvimage/zarr/ZarrChunkClient.ts +0 -544
  371. package/src/nvimage/zarr/index.ts +0 -17
  372. package/src/nvlabel.ts +0 -106
  373. package/src/nvmesh-loaders.ts +0 -4043
  374. package/src/nvmesh-types.ts +0 -161
  375. package/src/nvmesh-utilities.ts +0 -454
  376. package/src/nvmesh.ts +0 -2084
  377. package/src/nvserializer.ts +0 -809
  378. package/src/nvutilities.ts +0 -680
  379. package/src/orientCube.ts +0 -32
  380. package/src/shader-srcs.ts +0 -2372
  381. package/src/shader.ts +0 -77
  382. package/src/types.ts +0 -294
  383. package/src/utils/file-utils.ts +0 -33
  384. package/src/utils/image-utils.ts +0 -91
  385. package/src/utils/index.ts +0 -5
  386. package/src/utils/legacy-migrate.ts +0 -408
  387. package/src/utils/math-utils.ts +0 -52
  388. package/src/utils/nice.ts +0 -27
  389. package/src/utils/webgl-utils.ts +0 -40
package/LICENSE ADDED
@@ -0,0 +1,24 @@
1
+ BSD 2-Clause License
2
+
3
+ Copyright (c) 2026, NiiVue
4
+
5
+ Redistribution and use in source and binary forms, with or without
6
+ modification, are permitted provided that the following conditions are met:
7
+
8
+ 1. Redistributions of source code must retain the above copyright notice, this
9
+ list of conditions and the following disclaimer.
10
+
11
+ 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ this list of conditions and the following disclaimer in the documentation
13
+ and/or other materials provided with the distribution.
14
+
15
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
19
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
22
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
23
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package/README.md CHANGED
@@ -1,14 +1,120 @@
1
- # NiiVue
1
+ # NiiVueGPU
2
2
 
3
- NiiVue is web-based visualization tool for neuroimaging that can run on any operating system and any web device (phone, tablet, computer). This repository contains only the **core NiiVue package** that can be embedded into other projects. See [niivue.com](https://niivue.com/) for examples and documentation.
3
+ NiiVue is a tool for visualizing volumes, meshes, and tractography streamlines commonly used in neuroimaging. The original NiiVue project evolved organically, resulting in tightly coupled model, view, and controller components. This repository refactors the codebase to improve maintainability and to support emerging technologies such as WebGPU.
4
4
 
5
- ## Local Development
5
+ ## Getting Started
6
6
 
7
- To run a hot-loading development that is updated whenever you save changes to any source files, you can run:
7
+ ### Prerequisites
8
8
 
9
+ - [Bun](https://bun.sh/)
10
+ - A browser with WebGPU support (Chrome, Firefox). Safari works if you have a recent MacOS (version 26) or iOS. Older browsers will fall back to the WebGL2 renderer.
11
+
12
+ ### Build Commands
13
+
14
+ ```bash
15
+ bun install # Install dependencies
16
+ bun run dev # Hot-reload dev server
17
+ bun run build # Library build to ./dist (published npm package)
18
+ bun run deploy # Production examples-site build to ./dist (GitHub Pages)
19
+ bun run demo # Build examples site and serve locally
20
+ bun run lint # ESLint check
21
+ bun run lint:fix # ESLint auto-fix
22
+ bun run typecheck # TypeScript type checking (tsc --noEmit)
23
+ ```
24
+
25
+ ### Development Workflows
26
+
27
+ - **`bun run dev`** — Runs the `demos/` pages with hot reloading. A Vite plugin intercepts `import '../dist/niivuegpu.mjs'` and redirects it to source, so demo scripts stay identical to the deployed versions but get full HMR. Asset directories in `demos/` are symlinked to `public/` on first run.
28
+ - **`bun run demo`** — Builds the library to `demos/dist/`, copies assets, and serves with `http-server`. Use this to test the actual built output or before deploying to GitHub Pages.
29
+
30
+ ## Usage
31
+
32
+ Add a `<canvas>` to your page and attach NiiVueGPU to it:
33
+
34
+ ```html
35
+ <canvas id="gl1"></canvas>
36
+ <script type="module">
37
+ import NiiVue from 'niivuegpu'
38
+
39
+ const nv = new NiiVue()
40
+ await nv.attachToCanvas(document.getElementById('gl1'))
41
+ await nv.loadVolumes([{ url: '/volumes/mni152.nii.gz' }])
42
+ </script>
43
+ ```
44
+
45
+ ### Backend-specific distributions
46
+
47
+ By default, `niivuegpu` includes both backends (WebGPU + WebGL2 fallback):
48
+
49
+ ```js
50
+ import NiiVue from 'niivuegpu'
51
+ ```
52
+
53
+ You can also import backend-only builds to reduce package size:
54
+
55
+ ```js
56
+ import NiiVueWebGPU from 'niivuegpu/webgpu' // WebGPU-only
57
+ import NiiVueWebGL2 from 'niivuegpu/webgl2' // WebGL2-only
9
58
  ```
10
- git clone git@github.com:niivue/niivue.git
11
- cd niivue
12
- npm install
13
- npm run dev
59
+
60
+ In backend-only builds, selecting the missing backend throws an explicit error.
61
+
62
+ ### Load a mesh
63
+
64
+ ```js
65
+ await nv.loadMeshes([{ url: '/meshes/brain.mz3' }])
14
66
  ```
67
+
68
+ ### Change slice type and colormap
69
+
70
+ ```js
71
+ nv.sliceType = 3 // 0=Axial, 1=Coronal, 2=Sagittal, 3=Multi, 4=Render
72
+ nv.setVolume(0, { colormap: 'hot' }) // apply colormap to first volume
73
+ ```
74
+
75
+ ### Configuration options
76
+
77
+ Pass options to the constructor to customize the viewer:
78
+
79
+ ```js
80
+ const nv = new NiiVue({
81
+ isColorbarVisible: true,
82
+ backgroundColor: [0, 0, 0, 1],
83
+ clipPlaneColor: [1, 1, 1, 0.5],
84
+ })
85
+ ```
86
+
87
+ ### Testing
88
+
89
+ The package includes a unit test suite for non-rendering (server-side) logic using the [Bun test runner](https://bun.sh/docs/cli/test). Tests are co-located with source files as `*.test.ts`.
90
+
91
+ ```bash
92
+ bun test # Run all tests with coverage
93
+ bun test src/drawing/ # Run tests in a specific directory
94
+ bun test --watch # Watch mode
95
+ ```
96
+
97
+ Coverage is enabled by default (configured in `bunfig.toml`) and outputs both a console summary and an `lcov` report to `coverage/`. Tested modules include:
98
+
99
+ - **Drawing tools** — RLE codec, pen/line/flood-fill, undo stack
100
+ - **Annotations** — undo/redo, point-in-polygon, slice projection, shape selection
101
+ - **Math/transforms** — vox↔mm conversions, spherical coordinates, slice plane equations
102
+ - **Volume utilities** — intensity range calculation, NIfTI header creation, voxel lookup, reorientation
103
+ - **Colormaps** — LUT generation, label colormap construction
104
+ - **Mesh I/O** — STL/OBJ writers, STL/OFF readers (roundtrip tests)
105
+
106
+ To run tests via Nx from the monorepo root:
107
+
108
+ ```bash
109
+ bunx nx test niivue
110
+ ```
111
+
112
+ ### Architecture
113
+
114
+ The codebase is written in **TypeScript** and follows an MVC pattern with dual rendering backends (WebGPU and WebGL2). See [CLAUDE.md](CLAUDE.md) for detailed architecture documentation, directory structure, code style, and module naming conventions.
115
+
116
+ ### Dependencies
117
+
118
+ - [nifti-reader-js](https://github.com/rii-mango/NIFTI-Reader-JS) — NIfTI file parsing
119
+ - [gl-matrix](https://glmatrix.net/) — Vector/matrix math (vec3, vec4, mat3, mat4)
120
+ - [cbor-x](https://github.com/nicolo-ribaudo/cbor-x) — CBOR encoding/decoding for document save/load and ITK-Wasm (.iwi.cbor) format support
@@ -0,0 +1,86 @@
1
+ import { AnnotationConfig, DrawConfig, InteractionConfig, LayoutConfig, MeshRenderConfig, UIConfig, VolumeRenderConfig } from './NVTypes';
2
+ export declare const NUM_CLIP_PLANE = 6;
3
+ export declare const DEFAULT_CLIP_PLANE: readonly [0, 0, 0, 2];
4
+ export declare enum COLORMAP_TYPE {
5
+ MIN_TO_MAX = 0,
6
+ ZERO_TO_MAX_TRANSPARENT_BELOW_MIN = 1,
7
+ ZERO_TO_MAX_TRANSLUCENT_BELOW_MIN = 2
8
+ }
9
+ export declare enum DRAG_MODE {
10
+ none = 0,
11
+ contrast = 1,
12
+ measurement = 2,
13
+ pan = 3,
14
+ slicer3D = 4,
15
+ callbackOnly = 5,
16
+ roiSelection = 6,
17
+ angle = 7,
18
+ crosshair = 8,
19
+ windowing = 9
20
+ }
21
+ export declare enum SHOW_RENDER {
22
+ NEVER = 0,
23
+ ALWAYS = 1,
24
+ AUTO = 2
25
+ }
26
+ export declare const NiiIntentCode: Readonly<{
27
+ readonly NIFTI_INTENT_NONE: 0;
28
+ readonly NIFTI_INTENT_CORREL: 2;
29
+ readonly NIFTI_INTENT_TTEST: 3;
30
+ readonly NIFTI_INTENT_FTEST: 4;
31
+ readonly NIFTI_INTENT_ZSCORE: 5;
32
+ readonly NIFTI_INTENT_LABEL: 1002;
33
+ readonly NIFTI_INTENT_NEURONAMES: 1005;
34
+ readonly NIFTI_INTENT_RGB_VECTOR: 2003;
35
+ }>;
36
+ export declare const NiiDataType: Readonly<{
37
+ readonly DT_NONE: 0;
38
+ readonly DT_BINARY: 1;
39
+ readonly DT_UINT8: 2;
40
+ readonly DT_INT16: 4;
41
+ readonly DT_INT32: 8;
42
+ readonly DT_FLOAT32: 16;
43
+ readonly DT_COMPLEX64: 32;
44
+ readonly DT_FLOAT64: 64;
45
+ readonly DT_RGB24: 128;
46
+ readonly DT_INT8: 256;
47
+ readonly DT_UINT16: 512;
48
+ readonly DT_UINT32: 768;
49
+ readonly DT_INT64: 1024;
50
+ readonly DT_UINT64: 1280;
51
+ readonly DT_FLOAT128: 1536;
52
+ readonly DT_COMPLEX128: 1792;
53
+ readonly DT_COMPLEX256: 2048;
54
+ readonly DT_RGBA32: 2304;
55
+ }>;
56
+ /** Check whether a volume is PAQD (Probabilistic Atlas Quad Datatype) */
57
+ export declare function isPaqd(hdr: {
58
+ intent_code: number;
59
+ datatypeCode: number;
60
+ }): boolean;
61
+ export declare const MULTIPLANAR_TYPE: {
62
+ readonly 0: "AUTO";
63
+ readonly 1: "COLUMN";
64
+ readonly 2: "GRID";
65
+ readonly 3: "ROW";
66
+ readonly AUTO: 0;
67
+ readonly COLUMN: 1;
68
+ readonly GRID: 2;
69
+ readonly ROW: 3;
70
+ };
71
+ export declare const SLICE_TYPE: Readonly<{
72
+ readonly AXIAL: 0;
73
+ readonly CORONAL: 1;
74
+ readonly SAGITTAL: 2;
75
+ readonly MULTIPLANAR: 3;
76
+ readonly RENDER: 4;
77
+ }>;
78
+ /** Maps AXIAL→2, CORONAL→1, SAGITTAL→0 (the RAS dimension perpendicular to the slice). */
79
+ export declare function sliceTypeDim(sliceType: number): number;
80
+ export declare const LAYOUT_DEFAULTS: LayoutConfig;
81
+ export declare const UI_DEFAULTS: UIConfig;
82
+ export declare const VOLUME_DEFAULTS: VolumeRenderConfig;
83
+ export declare const MESH_DEFAULTS: MeshRenderConfig;
84
+ export declare const DRAW_DEFAULTS: DrawConfig;
85
+ export declare const INTERACTION_DEFAULTS: InteractionConfig;
86
+ export declare const ANNOTATION_DEFAULTS: AnnotationConfig;
@@ -0,0 +1,4 @@
1
+ import { default as NiiVueGPUBase, NiiVueOptions } from './NVControlBase';
2
+ export default class NiiVueGPU extends NiiVueGPUBase {
3
+ constructor(options?: NiiVueOptions);
4
+ }