@niivue/niivue 0.68.2 → 1.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (388) 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-DGoHnxcM.js +18464 -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-q8p_z6Ye.js +3939 -0
  15. package/dist/NVViewGPU-BH-LVkOj.js +5127 -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/dist/assets/Shiny.jpg +0 -0
  26. package/{src/fonts/Ubuntu.json → dist/assets/fonts/Ubuntu.json.d.ts} +473 -470
  27. package/dist/assets/fonts/index.d.ts +1 -0
  28. package/dist/assets/fonts/index.js +4 -0
  29. package/dist/assets/fonts/ubuntu.d.ts +2 -0
  30. package/dist/assets/matcaps/cortex.d.ts +1 -0
  31. package/dist/assets/matcaps/index.d.ts +2 -0
  32. package/dist/assets/matcaps/index.js +6 -0
  33. package/dist/assets/matcaps/shiny.d.ts +1 -0
  34. package/dist/cmap/NVCmaps.d.ts +25 -0
  35. package/dist/codecs/NVGz.d.ts +4 -0
  36. package/dist/codecs/NVMatlab.d.ts +2 -0
  37. package/dist/codecs/NVZip.d.ts +30 -0
  38. package/dist/control/dragModes.d.ts +29 -0
  39. package/dist/control/interactions.d.ts +7 -0
  40. package/dist/control/locationTracking.d.ts +27 -0
  41. package/dist/control/viewBoth.d.ts +13 -0
  42. package/dist/control/viewLifecycle.d.ts +15 -0
  43. package/dist/control/viewWebGL2.d.ts +11 -0
  44. package/dist/control/viewWebGPU.d.ts +11 -0
  45. package/dist/cortex-DMSPO3VL.js +4 -0
  46. package/dist/drawing/drawingManager.d.ts +43 -0
  47. package/dist/drawing/penTool.d.ts +54 -0
  48. package/dist/drawing/rle.d.ts +9 -0
  49. package/dist/drawing/undo.d.ts +10 -0
  50. package/dist/extension/context.d.ts +51 -0
  51. package/dist/extension/types.d.ts +113 -0
  52. package/dist/gl/NVViewGL.d.ts +77 -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 +41 -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-DxayULvb.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 +89 -0
  161. package/dist/wgpu/colorbar.d.ts +40 -0
  162. package/dist/wgpu/crosshair.d.ts +21 -0
  163. package/dist/wgpu/depthPick.d.ts +27 -0
  164. package/dist/wgpu/font.d.ts +24 -0
  165. package/dist/wgpu/line.d.ts +13 -0
  166. package/dist/wgpu/mesh.d.ts +13 -0
  167. package/dist/wgpu/orient.d.ts +26 -0
  168. package/dist/wgpu/polygon.d.ts +16 -0
  169. package/dist/wgpu/polygon3d.d.ts +22 -0
  170. package/dist/wgpu/render.d.ts +50 -0
  171. package/dist/wgpu/slice.d.ts +54 -0
  172. package/dist/wgpu/thumbnail.d.ts +17 -0
  173. package/dist/wgpu/volumeShaderLib.d.ts +1 -0
  174. package/dist/wgpu/webgpu.d.ts +3 -0
  175. package/dist/wgpu/wgpu.d.ts +6 -0
  176. package/dist/workers/NVWorker.d.ts +41 -0
  177. package/dist/workers/transform.worker.d.ts +12 -0
  178. package/package.json +54 -83
  179. package/build/drawing/index.d.ts +0 -128
  180. package/build/drawing/index.js +0 -8916
  181. package/build/drawing/index.js.map +0 -1
  182. package/build/index.min.js +0 -1
  183. package/build/metafile-esm.json +0 -1
  184. package/build/niivue/index.d.ts +0 -3509
  185. package/build/niivue/index.js +0 -45203
  186. package/build/niivue/index.js.map +0 -1
  187. package/build/nvdocument-BvCNF744.d.ts +0 -1934
  188. package/build/utils/index.d.ts +0 -29
  189. package/build/utils/index.js +0 -597
  190. package/build/utils/index.js.map +0 -1
  191. package/dist/index.js +0 -53958
  192. package/dist/index.js.map +0 -1
  193. package/dist/index.min.js +0 -1
  194. package/dist/metafile-esm.json +0 -1
  195. package/dist/niivue.umd.js +0 -2382
  196. package/src/cmaps/_itksnap.json +0 -55
  197. package/src/cmaps/_slicer3d.json +0 -355
  198. package/src/cmaps/actc.json +0 -7
  199. package/src/cmaps/afni_blues_inv.json +0 -9
  200. package/src/cmaps/afni_reds_inv.json +0 -7
  201. package/src/cmaps/batlow.json +0 -7
  202. package/src/cmaps/bcgwhw.json +0 -32
  203. package/src/cmaps/bcgwhw_dark.json +0 -32
  204. package/src/cmaps/blue.json +0 -7
  205. package/src/cmaps/blue2cyan.json +0 -7
  206. package/src/cmaps/blue2magenta.json +0 -7
  207. package/src/cmaps/blue2red.json +0 -7
  208. package/src/cmaps/bluegrn.json +0 -7
  209. package/src/cmaps/bone.json +0 -7
  210. package/src/cmaps/bronze.json +0 -7
  211. package/src/cmaps/cet_l17.json +0 -93
  212. package/src/cmaps/cividis.json +0 -7
  213. package/src/cmaps/cool.json +0 -7
  214. package/src/cmaps/copper.json +0 -7
  215. package/src/cmaps/copper2.json +0 -7
  216. package/src/cmaps/ct_airways.json +0 -9
  217. package/src/cmaps/ct_artery.json +0 -9
  218. package/src/cmaps/ct_bones.json +0 -9
  219. package/src/cmaps/ct_brain.json +0 -9
  220. package/src/cmaps/ct_brain_gray.json +0 -9
  221. package/src/cmaps/ct_cardiac.json +0 -9
  222. package/src/cmaps/ct_head.json +0 -9
  223. package/src/cmaps/ct_kidneys.json +0 -9
  224. package/src/cmaps/ct_liver.json +0 -9
  225. package/src/cmaps/ct_muscles.json +0 -9
  226. package/src/cmaps/ct_scalp.json +0 -9
  227. package/src/cmaps/ct_skull.json +0 -9
  228. package/src/cmaps/ct_soft.json +0 -9
  229. package/src/cmaps/ct_soft_tissue.json +0 -9
  230. package/src/cmaps/ct_surface.json +0 -9
  231. package/src/cmaps/ct_vessels.json +0 -9
  232. package/src/cmaps/ct_w_contrast.json +0 -9
  233. package/src/cmaps/cubehelix.json +0 -22
  234. package/src/cmaps/electric_blue.json +0 -7
  235. package/src/cmaps/freesurfer.json +0 -27
  236. package/src/cmaps/ge_color.json +0 -7
  237. package/src/cmaps/gold.json +0 -7
  238. package/src/cmaps/gray.json +0 -7
  239. package/src/cmaps/green.json +0 -7
  240. package/src/cmaps/green2cyan.json +0 -7
  241. package/src/cmaps/green2orange.json +0 -7
  242. package/src/cmaps/hot.json +0 -7
  243. package/src/cmaps/hotiron.json +0 -7
  244. package/src/cmaps/hsv.json +0 -7
  245. package/src/cmaps/index.ts +0 -72
  246. package/src/cmaps/inferno.json +0 -7
  247. package/src/cmaps/jet.json +0 -7
  248. package/src/cmaps/kry.json +0 -7
  249. package/src/cmaps/linspecer.json +0 -7
  250. package/src/cmaps/lipari.json +0 -7
  251. package/src/cmaps/magma.json +0 -7
  252. package/src/cmaps/mako.json +0 -7
  253. package/src/cmaps/navia.json +0 -7
  254. package/src/cmaps/nih.json +0 -7
  255. package/src/cmaps/plasma.json +0 -7
  256. package/src/cmaps/random.json +0 -90
  257. package/src/cmaps/red.json +0 -7
  258. package/src/cmaps/redyell.json +0 -7
  259. package/src/cmaps/rocket.json +0 -7
  260. package/src/cmaps/roi_i256.json +0 -92
  261. package/src/cmaps/surface.json +0 -7
  262. package/src/cmaps/thermal.json +0 -7
  263. package/src/cmaps/turbo.json +0 -7
  264. package/src/cmaps/violet.json +0 -7
  265. package/src/cmaps/viridis.json +0 -7
  266. package/src/cmaps/warm.json +0 -7
  267. package/src/cmaps/winter.json +0 -7
  268. package/src/cmaps/x_rain.json +0 -7
  269. package/src/colortables.ts +0 -289
  270. package/src/drawing/index.ts +0 -13
  271. package/src/drawing/masks.ts +0 -500
  272. package/src/drawing/rle.ts +0 -97
  273. package/src/drawing/undo.ts +0 -28
  274. package/src/events.ts +0 -144
  275. package/src/fonts/Garamond.json +0 -1491
  276. package/src/fonts/Garamond.png +0 -0
  277. package/src/fonts/GaramondBold.json +0 -1506
  278. package/src/fonts/GaramondBold.png +0 -0
  279. package/src/fonts/Roboto-Regular.json +0 -1496
  280. package/src/fonts/Roboto-Regular.png +0 -0
  281. package/src/fonts/UbuntuBold.json +0 -1506
  282. package/src/fonts/UbuntuBold.png +0 -0
  283. package/src/index.html +0 -152
  284. package/src/index_histo.html +0 -233
  285. package/src/index_magic.html +0 -223
  286. package/src/index_zarr_viewer.html +0 -785
  287. package/src/logger.ts +0 -74
  288. package/src/matcaps/Cream.jpg +0 -0
  289. package/src/matcaps/Fuzzy.jpg +0 -0
  290. package/src/matcaps/Gold.jpg +0 -0
  291. package/src/matcaps/Peach.jpg +0 -0
  292. package/src/matcaps/Plastic.jpg +0 -0
  293. package/src/matcaps/Shiny.jpg +0 -0
  294. package/src/niivue/core/CoordinateTransform.ts +0 -700
  295. package/src/niivue/core/README.md +0 -122
  296. package/src/niivue/core/ShaderManager.ts +0 -621
  297. package/src/niivue/core/gl.ts +0 -304
  298. package/src/niivue/data/ConnectomeManager.ts +0 -178
  299. package/src/niivue/data/FileLoader.ts +0 -324
  300. package/src/niivue/data/MeshManager.ts +0 -305
  301. package/src/niivue/data/VolumeColormap.ts +0 -87
  302. package/src/niivue/data/VolumeLayerRenderer.ts +0 -590
  303. package/src/niivue/data/VolumeManager.ts +0 -292
  304. package/src/niivue/data/VolumeModulation.ts +0 -135
  305. package/src/niivue/data/VolumeTexture.ts +0 -203
  306. package/src/niivue/descriptives.ts +0 -252
  307. package/src/niivue/drawing/DrawingManager.ts +0 -462
  308. package/src/niivue/drawing/FloodFillTool.ts +0 -749
  309. package/src/niivue/drawing/PenTool.ts +0 -647
  310. package/src/niivue/drawing/ShapeTool.ts +0 -298
  311. package/src/niivue/index.ts +0 -12392
  312. package/src/niivue/interaction/DragModeManager.ts +0 -555
  313. package/src/niivue/interaction/DropHandler.ts +0 -255
  314. package/src/niivue/interaction/EventController.ts +0 -298
  315. package/src/niivue/interaction/KeyboardController.ts +0 -240
  316. package/src/niivue/interaction/MouseController.ts +0 -410
  317. package/src/niivue/interaction/TouchController.ts +0 -434
  318. package/src/niivue/interaction/WheelController.ts +0 -274
  319. package/src/niivue/interaction/index.ts +0 -11
  320. package/src/niivue/navigation/CameraController.ts +0 -129
  321. package/src/niivue/navigation/ClipPlaneManager.ts +0 -294
  322. package/src/niivue/navigation/LayoutManager.ts +0 -709
  323. package/src/niivue/navigation/SliceNavigation.ts +0 -482
  324. package/src/niivue/processing/ImageProcessing.ts +0 -1159
  325. package/src/niivue/rendering/MeshRenderer.ts +0 -521
  326. package/src/niivue/rendering/SceneRenderer.ts +0 -405
  327. package/src/niivue/rendering/SliceRenderer.ts +0 -450
  328. package/src/niivue/rendering/UIElementRenderer.ts +0 -772
  329. package/src/niivue/rendering/VolumeRenderer.ts +0 -530
  330. package/src/niivue/texture-constants.ts +0 -22
  331. package/src/niivue-object3D.ts +0 -382
  332. package/src/niivue.css +0 -105
  333. package/src/nvconnectome.ts +0 -454
  334. package/src/nvdocument.ts +0 -850
  335. package/src/nvimage/AffineProcessor.ts +0 -163
  336. package/src/nvimage/ColormapManager.ts +0 -84
  337. package/src/nvimage/CoordinateTransform.ts +0 -178
  338. package/src/nvimage/ImageDataProcessor.ts +0 -207
  339. package/src/nvimage/ImageFactory.ts +0 -354
  340. package/src/nvimage/ImageMetadata.ts +0 -82
  341. package/src/nvimage/ImageOrientation.ts +0 -391
  342. package/src/nvimage/ImageReaders/afni.ts +0 -260
  343. package/src/nvimage/ImageReaders/brainvoyager.ts +0 -138
  344. package/src/nvimage/ImageReaders/dsistudio.ts +0 -184
  345. package/src/nvimage/ImageReaders/ecat.ts +0 -119
  346. package/src/nvimage/ImageReaders/image.ts +0 -78
  347. package/src/nvimage/ImageReaders/index.ts +0 -22
  348. package/src/nvimage/ImageReaders/itk.ts +0 -163
  349. package/src/nvimage/ImageReaders/mgh.ts +0 -394
  350. package/src/nvimage/ImageReaders/mrtrix.ts +0 -323
  351. package/src/nvimage/ImageReaders/nii.ts +0 -56
  352. package/src/nvimage/ImageReaders/nrrd.ts +0 -318
  353. package/src/nvimage/ImageReaders/numpy.ts +0 -136
  354. package/src/nvimage/ImageReaders/zarr.ts +0 -93
  355. package/src/nvimage/ImageWriter.ts +0 -317
  356. package/src/nvimage/IntensityCalibration.ts +0 -280
  357. package/src/nvimage/RenderingUtils.ts +0 -158
  358. package/src/nvimage/StreamingLoader.ts +0 -143
  359. package/src/nvimage/TensorProcessing.ts +0 -108
  360. package/src/nvimage/VolumeUtils.ts +0 -331
  361. package/src/nvimage/ZarrProcessor.ts +0 -114
  362. package/src/nvimage/affineUtils.ts +0 -144
  363. package/src/nvimage/index.ts +0 -1399
  364. package/src/nvimage/utils.ts +0 -677
  365. package/src/nvimage/zarr/NVZarrHelper.ts +0 -1041
  366. package/src/nvimage/zarr/ZarrChunkCache.ts +0 -133
  367. package/src/nvimage/zarr/ZarrChunkClient.ts +0 -544
  368. package/src/nvimage/zarr/index.ts +0 -17
  369. package/src/nvlabel.ts +0 -106
  370. package/src/nvmesh-loaders.ts +0 -4043
  371. package/src/nvmesh-types.ts +0 -161
  372. package/src/nvmesh-utilities.ts +0 -454
  373. package/src/nvmesh.ts +0 -2084
  374. package/src/nvserializer.ts +0 -809
  375. package/src/nvutilities.ts +0 -680
  376. package/src/orientCube.ts +0 -32
  377. package/src/shader-srcs.ts +0 -2372
  378. package/src/shader.ts +0 -77
  379. package/src/types.ts +0 -294
  380. package/src/utils/file-utils.ts +0 -33
  381. package/src/utils/image-utils.ts +0 -91
  382. package/src/utils/index.ts +0 -5
  383. package/src/utils/legacy-migrate.ts +0 -408
  384. package/src/utils/math-utils.ts +0 -52
  385. package/src/utils/nice.ts +0 -27
  386. package/src/utils/webgl-utils.ts +0 -40
  387. /package/{src/matcaps → dist/assets}/Cortex.jpg +0 -0
  388. /package/{src/fonts → dist/assets}/Ubuntu.png +0 -0
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
+ }