@niivue/niivue 0.43.7 → 0.44.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.
package/build/index.d.ts CHANGED
@@ -211,6 +211,7 @@ type ImageFromUrlOptions = {
211
211
  useQFormNotSForm?: boolean;
212
212
  alphaThreshold?: boolean;
213
213
  colormapNegative?: string;
214
+ colorMapNegative?: string;
214
215
  cal_minNeg?: number;
215
216
  cal_maxNeg?: number;
216
217
  colorbarVisible?: boolean;
@@ -436,7 +437,7 @@ declare class NVImage {
436
437
  * read a 3D slab of voxels from a volume
437
438
  * @param voxStart - first row, column and slice (RAS order) for selection
438
439
  * @param voxEnd - final row, column and slice (RAS order) for selection
439
- * @param dataType - array data type. Options: 'same' (default), 'uint8', 'float32'
440
+ * @param dataType - array data type. Options: 'same' (default), 'uint8', 'float32', 'scaled', 'normalized', 'windowed'
440
441
  * @returns the an array where ret[0] is the voxel values and ret[1] is dimension of selection
441
442
  * @see {@link https://niivue.github.io/niivue/features/slab_selection.html | live demo usage}
442
443
  */
@@ -558,6 +559,11 @@ declare enum SLICE_TYPE {
558
559
  MULTIPLANAR = 3,
559
560
  RENDER = 4
560
561
  }
562
+ declare enum SHOW_RENDER {
563
+ NEVER = 0,
564
+ ALWAYS = 1,
565
+ AUTO = 2
566
+ }
561
567
  /**
562
568
  * Multi-planar layout
563
569
  * @ignore
@@ -613,6 +619,7 @@ type NVConfigOptions = {
613
619
  isOrientCube: boolean;
614
620
  multiplanarPadPixels: number;
615
621
  multiplanarForceRender: boolean;
622
+ multiplanarShowRender: SHOW_RENDER;
616
623
  isRadiologicalConvention: boolean;
617
624
  meshThicknessOn2D: number | string;
618
625
  dragMode: DRAG_MODE;
@@ -1184,6 +1191,9 @@ declare class NVMesh {
1184
1191
  unloadMesh(gl: WebGL2RenderingContext): void;
1185
1192
  updateMesh(gl: WebGL2RenderingContext): void;
1186
1193
  reverseFaces(gl: WebGL2RenderingContext): void;
1194
+ hierarchicalOrder(): number;
1195
+ decimateFaces(n: number, ntarget: number): void;
1196
+ decimateHierarchicalMesh(gl: WebGL2RenderingContext, order?: number): boolean;
1187
1197
  setLayerProperty(id: number, key: keyof NVMeshLayer, val: number | string | boolean, gl: WebGL2RenderingContext): void;
1188
1198
  setProperty(key: keyof this, val: unknown, gl: WebGL2RenderingContext): void;
1189
1199
  generatePosNormClr(pts: Float32Array, tris: Uint32Array, rgba255: Uint8Array): Float32Array;
@@ -1513,6 +1523,7 @@ declare class NVMeshLoaders {
1513
1523
  static readSRF(buffer: ArrayBuffer): DefaultMeshType;
1514
1524
  static readTxtSTL(buffer: ArrayBuffer): DefaultMeshType;
1515
1525
  static readSTL(buffer: ArrayBuffer): DefaultMeshType;
1526
+ static decimateLayerVertices(nVertLayer: number, nVertMesh: number): number;
1516
1527
  static readNII2(buffer: ArrayBuffer, n_vert?: number, anatomicalStructurePrimary?: string): Int32Array | Float32Array | Int16Array | Uint8Array;
1517
1528
  static readNII(buffer: ArrayBuffer, n_vert?: number, anatomicalStructurePrimary?: string): Float32Array | Uint8Array | Int32Array | Int16Array;
1518
1529
  static readMGH(buffer: ArrayBuffer, n_vert?: number, isReadColortables?: boolean): MGH;
@@ -1520,6 +1531,26 @@ declare class NVMeshLoaders {
1520
1531
  static readGII(buffer: ArrayBuffer, n_vert?: number): GII;
1521
1532
  }
1522
1533
 
1534
+ type Extents = {
1535
+ mxDx: number;
1536
+ extentsMin: number | number[];
1537
+ extentsMax: number | number[];
1538
+ };
1539
+ /**
1540
+ * Utilities class for common mesh functions
1541
+ */
1542
+ declare class NVMeshUtilities {
1543
+ static getClusterBoundaryU8(u8: Uint8Array, faces: number[] | Uint32Array): boolean[];
1544
+ static createMZ3(vertices: Float32Array, indices: Uint32Array, compress?: boolean): ArrayBuffer;
1545
+ static createOBJ(vertices: Float32Array, indices: Uint32Array): ArrayBuffer;
1546
+ static createSTL(vertices: Float32Array, indices: Uint32Array): ArrayBuffer;
1547
+ static downloadArrayBuffer(buffer: ArrayBuffer, filename: string): void;
1548
+ static saveMesh(vertices: Float32Array, indices: Uint32Array, filename?: string, compress?: boolean): ArrayBuffer;
1549
+ static getClusterBoundary(rgba8: Uint8Array, faces: number[] | Uint32Array): boolean[];
1550
+ static getExtents(pts: number[] | Float32Array): Extents;
1551
+ static generateNormals(pts: number[] | Float32Array, tris: number[] | Uint32Array): Float32Array;
1552
+ }
1553
+
1523
1554
  type ColormapListEntry = {
1524
1555
  name: string;
1525
1556
  min: number;
@@ -2059,6 +2090,7 @@ declare class Niivue {
2059
2090
  * @see {@link https://niivue.github.io/niivue/features/document.3d.html | live demo usage}
2060
2091
  */
2061
2092
  addVolumeFromUrl(imageOptions: ImageFromUrlOptions): Promise<NVImage>;
2093
+ addVolumesFromUrl(imageOptionsArray: ImageFromUrlOptions[]): Promise<NVImage[]>;
2062
2094
  /**
2063
2095
  * Find media by url
2064
2096
  */
@@ -2256,6 +2288,15 @@ declare class Niivue {
2256
2288
  * @see {@link https://niivue.github.io/niivue/features/clipplanes.html | live demo usage}
2257
2289
  */
2258
2290
  indexNearestXYZmm(mesh: number, Xmm: number, Ymm: number, Zmm: number): number[];
2291
+ /**
2292
+ * reduce complexity of FreeSurfer mesh
2293
+ * @param mesh - identity of mesh to change
2294
+ * @param order - decimation order 0..6
2295
+ * @example niivue.decimateHierarchicalMesh(niivue.meshes[0].id, 4)
2296
+ * @returns boolean false if mesh is not hierarchical or of lower order
2297
+ * @see {@link https://niivue.github.io/niivue/features/meshes.html | live demo usage}
2298
+ */
2299
+ decimateHierarchicalMesh(mesh: number, order?: number): boolean;
2259
2300
  /**
2260
2301
  * reverse triangle winding of mesh (swap front and back faces)
2261
2302
  * @param id - identity of mesh to change
@@ -2572,6 +2613,11 @@ declare class Niivue {
2572
2613
  * @see {@link https://niivue.github.io/niivue/features/multiuser.meshes.html | live demo usage}
2573
2614
  */
2574
2615
  addMeshFromUrl(meshOptions: LoadFromUrlParams): Promise<NVMesh>;
2616
+ /**
2617
+ * Add mesh and notify subscribers
2618
+ * @see {@link https://niivue.github.io/niivue/features/multiuser.meshes.html | live demo usage}
2619
+ */
2620
+ addMeshesFromUrl(meshOptions: LoadFromUrlParams[]): Promise<NVMesh[]>;
2575
2621
  /**
2576
2622
  * load an array of meshes
2577
2623
  * @param meshList - the array of objects to load. each object must have a resolvable "url" property at a minimum
@@ -2996,4 +3042,4 @@ declare class Niivue {
2996
3042
  set gl(gl: WebGL2RenderingContext | null);
2997
3043
  }
2998
3044
 
2999
- export { type Connectome, type ConnectomeOptions, DEFAULT_OPTIONS, DRAG_MODE, type DocumentData, type DragReleaseParams, type ExportDocumentData, INITIAL_SCENE_DATA, LabelLineTerminator, LabelTextAlignment, type LegacyConnectome, type LegacyNodes, MULTIPLANAR_TYPE, type NVConfigOptions, type NVConnectomeEdge, type NVConnectomeNode, NVController, NVDocument, NVImage, NVImageFromUrlOptions, NVLabel3D, NVLabel3DStyle, NVMesh, NVMeshFromUrlOptions, NVMeshLayerDefaults, NVMeshLoaders, NVUtilities, type NiftiHeader, type NiiVueLocation, type NiiVueLocationValue, Niivue, type Point, SLICE_TYPE, type Scene, type Volume, cmapper, ColorTables as colortables };
3045
+ export { type Connectome, type ConnectomeOptions, DEFAULT_OPTIONS, DRAG_MODE, type DocumentData, type DragReleaseParams, type ExportDocumentData, INITIAL_SCENE_DATA, LabelLineTerminator, LabelTextAlignment, type LegacyConnectome, type LegacyNodes, MULTIPLANAR_TYPE, type NVConfigOptions, type NVConnectomeEdge, type NVConnectomeNode, NVController, NVDocument, NVImage, NVImageFromUrlOptions, NVLabel3D, NVLabel3DStyle, NVMesh, NVMeshFromUrlOptions, NVMeshLayerDefaults, NVMeshLoaders, NVMeshUtilities, NVUtilities, type NiftiHeader, type NiiVueLocation, type NiiVueLocationValue, Niivue, type Point, SHOW_RENDER, SLICE_TYPE, type Scene, type Volume, cmapper, ColorTables as colortables };