@niivue/niivue 0.48.1 → 0.50.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.
- package/build/index.d.ts +118 -79
- package/build/index.js +8357 -7568
- package/build/index.js.map +1 -1
- package/build/index.min.js +1 -1
- package/build/metafile-esm.json +1 -0
- package/dist/index.d.ts +118 -79
- package/dist/index.js +27957 -118486
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/metafile-esm.json +1 -0
- package/dist/niivue.umd.js +155 -182
- package/package.json +2 -4
- package/src/cmaps/batlow.json +7 -0
- package/src/cmaps/index.js +5 -0
- package/src/cmaps/kry.json +7 -0
- package/src/cmaps/lipari.json +7 -0
- package/src/cmaps/navia.json +7 -0
- package/src/cmaps/thermal.json +7 -0
- package/src/colortables.ts +3 -1
- package/src/index.html +216 -178
- package/src/niivue/index.ts +420 -128
- package/src/nvdocument.ts +49 -54
- package/src/nvimage/index.ts +706 -441
- package/src/nvimage/utils.ts +68 -1
- package/src/nvmesh-loaders.ts +120 -50
- package/src/nvmesh-utilities.ts +42 -7
- package/src/nvmesh.ts +174 -302
- package/src/nvutilities.ts +406 -26
- package/src/shader-srcs.ts +14 -2
- package/src/indexOK.html +0 -277
package/build/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { mat4, vec3, vec4, vec2 } from 'gl-matrix';
|
|
2
|
-
import
|
|
2
|
+
import { NIFTI1, NIFTI2 } from 'nifti-reader-js';
|
|
3
3
|
import { WebSocketSubject } from 'rxjs/webSocket';
|
|
4
4
|
|
|
5
5
|
type ColorMap = {
|
|
@@ -208,7 +208,8 @@ declare enum ImageType {
|
|
|
208
208
|
HEAD = 15,
|
|
209
209
|
DCM_FOLDER = 16,
|
|
210
210
|
SRC = 17,
|
|
211
|
-
FIB = 18
|
|
211
|
+
FIB = 18,
|
|
212
|
+
BMP = 19
|
|
212
213
|
}
|
|
213
214
|
type ImageFromUrlOptions = {
|
|
214
215
|
url: string;
|
|
@@ -320,7 +321,7 @@ declare class NVImage {
|
|
|
320
321
|
oblique_angle?: number;
|
|
321
322
|
maxShearDeg?: number;
|
|
322
323
|
useQFormNotSForm: boolean;
|
|
323
|
-
|
|
324
|
+
colormapType?: number;
|
|
324
325
|
pixDims?: number[];
|
|
325
326
|
matRAS?: mat4;
|
|
326
327
|
pixDimsRAS?: number[];
|
|
@@ -336,7 +337,7 @@ declare class NVImage {
|
|
|
336
337
|
extentsMinOrtho?: number[];
|
|
337
338
|
extentsMaxOrtho?: number[];
|
|
338
339
|
mm2ortho?: mat4;
|
|
339
|
-
hdr:
|
|
340
|
+
hdr: NIFTI1 | NIFTI2 | null;
|
|
340
341
|
imageType?: ImageType;
|
|
341
342
|
img?: TypedVoxelArray;
|
|
342
343
|
imaginary?: Float32Array;
|
|
@@ -385,26 +386,29 @@ declare class NVImage {
|
|
|
385
386
|
* @param colorbarVisible - TODO
|
|
386
387
|
* @param colormapLabel - TODO
|
|
387
388
|
*/
|
|
388
|
-
constructor(dataBuffer?: ArrayBuffer | ArrayBuffer[] | null, name?: string, colormap?: string, opacity?: number, pairedImgData?: ArrayBuffer | null, cal_min?: number, cal_max?: number, trustCalMinMax?: boolean, percentileFrac?: number, ignoreZeroVoxels?: boolean, useQFormNotSForm?: boolean, colormapNegative?: string, frame4D?: number, imageType?: ImageType, cal_minNeg?: number, cal_maxNeg?: number, colorbarVisible?: boolean, colormapLabel?: LUT | null);
|
|
389
|
+
constructor(dataBuffer?: ArrayBuffer | ArrayBuffer[] | null, name?: string, colormap?: string, opacity?: number, pairedImgData?: ArrayBuffer | null, cal_min?: number, cal_max?: number, trustCalMinMax?: boolean, percentileFrac?: number, ignoreZeroVoxels?: boolean, useQFormNotSForm?: boolean, colormapNegative?: string, frame4D?: number, imageType?: ImageType, cal_minNeg?: number, cal_maxNeg?: number, colorbarVisible?: boolean, colormapLabel?: LUT | null, colormapType?: number);
|
|
390
|
+
init(dataBuffer?: ArrayBuffer | ArrayBuffer[] | null, name?: string, colormap?: string, opacity?: number, _pairedImgData?: ArrayBuffer | null, cal_min?: number, cal_max?: number, trustCalMinMax?: boolean, percentileFrac?: number, ignoreZeroVoxels?: boolean, useQFormNotSForm?: boolean, colormapNegative?: string, frame4D?: number, imageType?: ImageType, cal_minNeg?: number, cal_maxNeg?: number, colorbarVisible?: boolean, colormapLabel?: LUT | null, colormapType?: number, imgRaw?: ArrayBuffer | null): void;
|
|
391
|
+
static new(dataBuffer?: ArrayBuffer | ArrayBuffer[] | null, name?: string, colormap?: string, opacity?: number, pairedImgData?: ArrayBuffer | null, cal_min?: number, cal_max?: number, trustCalMinMax?: boolean, percentileFrac?: number, ignoreZeroVoxels?: boolean, useQFormNotSForm?: boolean, colormapNegative?: string, frame4D?: number, imageType?: ImageType, cal_minNeg?: number, cal_maxNeg?: number, colorbarVisible?: boolean, colormapLabel?: LUT | null, colormapType?: number): Promise<NVImage>;
|
|
389
392
|
computeObliqueAngle(mtx44: mat4): number;
|
|
390
393
|
float32V1asRGBA(inImg: Float32Array): Uint8Array;
|
|
391
394
|
loadImgV1(isFlipX?: boolean, isFlipY?: boolean, isFlipZ?: boolean): boolean;
|
|
392
395
|
calculateOblique(): void;
|
|
393
396
|
THD_daxes_to_NIFTI(xyzDelta: number[], xyzOrigin: number[], orientSpecific: number[]): void;
|
|
394
397
|
SetPixDimFromSForm(): void;
|
|
395
|
-
readDICOM(buf: ArrayBuffer | ArrayBuffer[]): ArrayBuffer;
|
|
396
398
|
readECAT(buffer: ArrayBuffer): ArrayBuffer;
|
|
397
399
|
readV16(buffer: ArrayBuffer): ArrayBuffer;
|
|
400
|
+
imageDataFromArrayBuffer(buffer: ArrayBuffer): Promise<ImageData>;
|
|
401
|
+
readBMP(buffer: ArrayBuffer): Promise<Uint8Array>;
|
|
398
402
|
readVMR(buffer: ArrayBuffer): ArrayBuffer;
|
|
399
|
-
readMGH(buffer: ArrayBuffer): ArrayBuffer
|
|
400
|
-
readFIB(buffer: ArrayBuffer): [ArrayBuffer, Float32Array]
|
|
401
|
-
readSRC(buffer: ArrayBuffer): ArrayBuffer
|
|
402
|
-
readHEAD(dataBuffer: ArrayBuffer, pairedImgData: ArrayBuffer | null): ArrayBuffer
|
|
403
|
-
readMHA(buffer: ArrayBuffer, pairedImgData: ArrayBuffer | null): ArrayBuffer
|
|
404
|
-
readMIF(buffer: ArrayBuffer, pairedImgData: ArrayBuffer | null): ArrayBuffer
|
|
405
|
-
readNRRD(dataBuffer: ArrayBuffer, pairedImgData: ArrayBuffer | null): ArrayBuffer
|
|
403
|
+
readMGH(buffer: ArrayBuffer): Promise<ArrayBuffer>;
|
|
404
|
+
readFIB(buffer: ArrayBuffer): Promise<[ArrayBuffer, Float32Array]>;
|
|
405
|
+
readSRC(buffer: ArrayBuffer): Promise<ArrayBuffer>;
|
|
406
|
+
readHEAD(dataBuffer: ArrayBuffer, pairedImgData: ArrayBuffer | null): Promise<ArrayBuffer>;
|
|
407
|
+
readMHA(buffer: ArrayBuffer, pairedImgData: ArrayBuffer | null): Promise<ArrayBuffer>;
|
|
408
|
+
readMIF(buffer: ArrayBuffer, pairedImgData: ArrayBuffer | null): Promise<ArrayBuffer>;
|
|
409
|
+
readNRRD(dataBuffer: ArrayBuffer, pairedImgData: ArrayBuffer | null): Promise<ArrayBuffer>;
|
|
406
410
|
calculateRAS(): void;
|
|
407
|
-
hdr2RAS(nVolumes?: number):
|
|
411
|
+
hdr2RAS(nVolumes?: number): NIFTI1 | NIFTI2;
|
|
408
412
|
img2RAS(nVolume?: number): TypedVoxelArray;
|
|
409
413
|
vox2mm(XYZ: number[], mtx: mat4): vec3;
|
|
410
414
|
mm2vox(mm: number[], frac?: boolean): Float32Array | vec3;
|
|
@@ -421,15 +425,19 @@ declare class NVImage {
|
|
|
421
425
|
/**
|
|
422
426
|
* set contrast/brightness to robust range (2%..98%)
|
|
423
427
|
* @param vol - volume for estimate (use -1 to use estimate on all loaded volumes; use INFINITY for current volume)
|
|
428
|
+
* @param isBorder - if true (default) only center of volume used for estimate
|
|
424
429
|
* @sets volume brightness and returns array [pct2, pct98, mnScale, mxScale]
|
|
425
430
|
* @see {@link https://niivue.github.io/niivue/features/timeseries2.html | live demo usage}
|
|
426
431
|
*/
|
|
427
|
-
calMinMax(vol?: number): number[];
|
|
432
|
+
calMinMax(vol?: number, isBorder?: boolean): number[];
|
|
428
433
|
intensityRaw2Scaled(raw: number): number;
|
|
429
434
|
intensityScaled2Raw(scaled: number): number;
|
|
430
|
-
saveToUint8Array(fnm: string, drawing8?: Uint8Array | null): Uint8Array
|
|
431
|
-
saveToDisk(fnm?: string, drawing8?: Uint8Array | null): Uint8Array
|
|
432
|
-
static fetchDicomData(url: string, headers?: Record<string, string>): Promise<
|
|
435
|
+
saveToUint8Array(fnm: string, drawing8?: Uint8Array | null): Promise<Uint8Array>;
|
|
436
|
+
saveToDisk(fnm?: string, drawing8?: Uint8Array | null): Promise<Uint8Array>;
|
|
437
|
+
static fetchDicomData(url: string, headers?: Record<string, string>): Promise<Array<{
|
|
438
|
+
name: string;
|
|
439
|
+
data: ArrayBuffer;
|
|
440
|
+
}>>;
|
|
433
441
|
static fetchPartial(url: string, bytesToLoad: number, headers?: Record<string, string>): Promise<Response>;
|
|
434
442
|
/**
|
|
435
443
|
* factory function to load and return a new NVImage instance from a given URL
|
|
@@ -453,7 +461,7 @@ declare class NVImage {
|
|
|
453
461
|
*/
|
|
454
462
|
static createNiftiArray(dims?: number[], pixDims?: number[], affine?: number[], datatypeCode?: number, // DT_UINT8
|
|
455
463
|
img?: Uint8Array): Uint8Array;
|
|
456
|
-
static createNiftiHeader(dims?: number[], pixDims?: number[], affine?: number[], datatypeCode?: number):
|
|
464
|
+
static createNiftiHeader(dims?: number[], pixDims?: number[], affine?: number[], datatypeCode?: number): NIFTI1;
|
|
457
465
|
/**
|
|
458
466
|
* read a 3D slab of voxels from a volume
|
|
459
467
|
* @param voxStart - first row, column and slice (RAS order) for selection
|
|
@@ -478,7 +486,7 @@ declare class NVImage {
|
|
|
478
486
|
* @example
|
|
479
487
|
* myImage = NVImage.loadFromBase64('SomeBase64String')
|
|
480
488
|
*/
|
|
481
|
-
static loadFromBase64({ base64, name, colormap, opacity, cal_min, cal_max, trustCalMinMax, percentileFrac, ignoreZeroVoxels, useQFormNotSForm, colormapNegative, frame4D, imageType, cal_minNeg, cal_maxNeg, colorbarVisible, colormapLabel }: ImageFromBase64): NVImage
|
|
489
|
+
static loadFromBase64({ base64, name, colormap, opacity, cal_min, cal_max, trustCalMinMax, percentileFrac, ignoreZeroVoxels, useQFormNotSForm, colormapNegative, frame4D, imageType, cal_minNeg, cal_maxNeg, colorbarVisible, colormapLabel }: ImageFromBase64): Promise<NVImage>;
|
|
482
490
|
/**
|
|
483
491
|
* make a clone of a NVImage instance and return a new NVImage
|
|
484
492
|
* @returns NVImage instance
|
|
@@ -608,6 +616,24 @@ declare enum DRAG_MODE {
|
|
|
608
616
|
callbackOnly = 5,
|
|
609
617
|
roiSelection = 6
|
|
610
618
|
}
|
|
619
|
+
declare enum DRAG_MODE_SECONDARY {
|
|
620
|
+
none = 0,
|
|
621
|
+
contrast = 1,
|
|
622
|
+
measurement = 2,
|
|
623
|
+
pan = 3,
|
|
624
|
+
slicer3D = 4,
|
|
625
|
+
callbackOnly = 5,
|
|
626
|
+
roiSelection = 6
|
|
627
|
+
}
|
|
628
|
+
declare enum DRAG_MODE_PRIMARY {
|
|
629
|
+
crosshair = 0,
|
|
630
|
+
windowing = 1
|
|
631
|
+
}
|
|
632
|
+
declare enum COLORMAP_TYPE {
|
|
633
|
+
MIN_TO_MAX = 0,
|
|
634
|
+
ZERO_TO_MAX_TRANSPARENT_BELOW_MIN = 1,
|
|
635
|
+
ZERO_TO_MAX_TRANSLUCENT_BELOW_MIN = 2
|
|
636
|
+
}
|
|
611
637
|
/**
|
|
612
638
|
* NVConfigOptions
|
|
613
639
|
*/
|
|
@@ -647,7 +673,8 @@ type NVConfigOptions = {
|
|
|
647
673
|
multiplanarShowRender: SHOW_RENDER;
|
|
648
674
|
isRadiologicalConvention: boolean;
|
|
649
675
|
meshThicknessOn2D: number | string;
|
|
650
|
-
dragMode: DRAG_MODE;
|
|
676
|
+
dragMode: DRAG_MODE | DRAG_MODE_SECONDARY;
|
|
677
|
+
dragModePrimary: DRAG_MODE_PRIMARY;
|
|
651
678
|
yoke3Dto2DZoom: boolean;
|
|
652
679
|
isDepthPickMesh: boolean;
|
|
653
680
|
isCornerOrientationText: boolean;
|
|
@@ -680,6 +707,7 @@ type NVConfigOptions = {
|
|
|
680
707
|
renderOverlayBlend: number;
|
|
681
708
|
sliceMosaicString: string;
|
|
682
709
|
centerMosaic: boolean;
|
|
710
|
+
interactive: boolean;
|
|
683
711
|
penSize: number;
|
|
684
712
|
clickToSegment: boolean;
|
|
685
713
|
clickToSegmentRadius: number;
|
|
@@ -698,6 +726,7 @@ type NVConfigOptions = {
|
|
|
698
726
|
measureTextColor: number[];
|
|
699
727
|
measureLineColor: number[];
|
|
700
728
|
measureTextHeight: number;
|
|
729
|
+
isAlphaClipDark: boolean;
|
|
701
730
|
};
|
|
702
731
|
declare const DEFAULT_OPTIONS: NVConfigOptions;
|
|
703
732
|
type SceneData = {
|
|
@@ -1117,7 +1146,7 @@ type NVMeshLayer = {
|
|
|
1117
1146
|
values: AnyNumberArray;
|
|
1118
1147
|
outlineBorder?: number;
|
|
1119
1148
|
isTransparentBelowCalMin?: boolean;
|
|
1120
|
-
|
|
1149
|
+
colormapType?: number;
|
|
1121
1150
|
base64?: string;
|
|
1122
1151
|
colorbarVisible?: boolean;
|
|
1123
1152
|
};
|
|
@@ -1131,6 +1160,7 @@ declare const NVMeshLayerDefaults: {
|
|
|
1131
1160
|
cal_max: number;
|
|
1132
1161
|
cal_minNeg: number;
|
|
1133
1162
|
cal_maxNeg: number;
|
|
1163
|
+
colormapType: COLORMAP_TYPE;
|
|
1134
1164
|
values: number[];
|
|
1135
1165
|
};
|
|
1136
1166
|
declare class NVMeshFromUrlOptions {
|
|
@@ -1245,15 +1275,16 @@ declare class NVMesh {
|
|
|
1245
1275
|
updateFibers(gl: WebGL2RenderingContext): void;
|
|
1246
1276
|
indexNearestXYZmm(Xmm: number, Ymm: number, Zmm: number): number[];
|
|
1247
1277
|
unloadMesh(gl: WebGL2RenderingContext): void;
|
|
1278
|
+
blendColormap(u8: Uint8Array, additiveRGBA: Uint8Array, layer: NVMeshLayer, mn: number, mx: number, lut: Uint8ClampedArray, invert?: boolean): void;
|
|
1248
1279
|
updateMesh(gl: WebGL2RenderingContext): void;
|
|
1249
1280
|
reverseFaces(gl: WebGL2RenderingContext): void;
|
|
1250
1281
|
hierarchicalOrder(): number;
|
|
1251
1282
|
decimateFaces(n: number, ntarget: number): void;
|
|
1252
1283
|
decimateHierarchicalMesh(gl: WebGL2RenderingContext, order?: number): boolean;
|
|
1253
|
-
setLayerProperty(id: number, key: keyof NVMeshLayer, val: number | string | boolean, gl: WebGL2RenderingContext): void
|
|
1284
|
+
setLayerProperty(id: number, key: keyof NVMeshLayer, val: number | string | boolean, gl: WebGL2RenderingContext): Promise<void>;
|
|
1254
1285
|
setProperty(key: keyof this, val: unknown, gl: WebGL2RenderingContext): void;
|
|
1255
1286
|
generatePosNormClr(pts: Float32Array, tris: Uint32Array, rgba255: Uint8Array): Float32Array;
|
|
1256
|
-
static readMesh(buffer: ArrayBuffer, name: string, gl: WebGL2RenderingContext, opacity?: number, rgba255?: Uint8Array, visible?: boolean): NVMesh
|
|
1287
|
+
static readMesh(buffer: ArrayBuffer, name: string, gl: WebGL2RenderingContext, opacity?: number, rgba255?: Uint8Array, visible?: boolean): Promise<NVMesh>;
|
|
1257
1288
|
static loadLayer(layer: NVMeshLayer, nvmesh: NVMesh): Promise<void>;
|
|
1258
1289
|
/**
|
|
1259
1290
|
* factory function to load and return a new NVMesh instance from a given URL
|
|
@@ -1270,35 +1301,6 @@ declare class NVMesh {
|
|
|
1270
1301
|
* load and return a new NVMesh instance from a base64 encoded string
|
|
1271
1302
|
*/
|
|
1272
1303
|
loadFromBase64({ base64, gl, name, opacity, rgba255, visible, layers }?: Partial<LoadFromBase64Params>): Promise<NVMesh>;
|
|
1273
|
-
static readGII(buffer: ArrayBuffer): GII;
|
|
1274
|
-
static readX3D(buffer: ArrayBuffer): X3D;
|
|
1275
|
-
static readNII(buffer: ArrayBuffer, n_vert?: number): Uint8Array | Float32Array | Int32Array | Int16Array;
|
|
1276
|
-
static readNII2(buffer: ArrayBuffer, n_vert?: number): Uint8Array | Float32Array | Int32Array | Int16Array;
|
|
1277
|
-
static readMGH(buffer: ArrayBuffer): MGH;
|
|
1278
|
-
static readSTL(buffer: ArrayBuffer): DefaultMeshType;
|
|
1279
|
-
static readTxtSTL(buffer: ArrayBuffer): DefaultMeshType;
|
|
1280
|
-
static readSRF(buffer: ArrayBuffer): DefaultMeshType;
|
|
1281
|
-
static readFreeSurfer(buffer: ArrayBuffer): DefaultMeshType;
|
|
1282
|
-
static readOBJ(buffer: ArrayBuffer): DefaultMeshType;
|
|
1283
|
-
static readOFF(buffer: ArrayBuffer): DefaultMeshType;
|
|
1284
|
-
static readGEO(buffer: ArrayBuffer, isFlipWinding?: boolean): DefaultMeshType;
|
|
1285
|
-
static readICO(buffer: ArrayBuffer): DefaultMeshType;
|
|
1286
|
-
static readPLY(buffer: ArrayBuffer): DefaultMeshType;
|
|
1287
|
-
static readMZ3(buffer: ArrayBuffer, n_vert?: number): MZ3;
|
|
1288
|
-
static readVTK(buffer: ArrayBuffer): VTK;
|
|
1289
|
-
static readASC(buffer: ArrayBuffer): DefaultMeshType;
|
|
1290
|
-
static readNV(buffer: ArrayBuffer): DefaultMeshType;
|
|
1291
|
-
static readANNOT(buffer: ArrayBuffer, n_vert: number, isReadColortables?: boolean): ANNOT;
|
|
1292
|
-
static readCURV(buffer: ArrayBuffer, n_vert: number): Float32Array;
|
|
1293
|
-
static readSTC(buffer: ArrayBuffer, n_vert: number): Float32Array;
|
|
1294
|
-
static readSMP(buffer: ArrayBuffer, n_vert: number): Float32Array;
|
|
1295
|
-
static readTxtVTK(buffer: ArrayBuffer): VTK;
|
|
1296
|
-
static readTRK(buffer: ArrayBuffer): TRK;
|
|
1297
|
-
static readTCK(buffer: ArrayBuffer): TCK;
|
|
1298
|
-
static readTSF(buffer: ArrayBuffer): Float32Array;
|
|
1299
|
-
static readTT(buffer: ArrayBuffer): TT;
|
|
1300
|
-
static readTRX(buffer: ArrayBuffer): TRX;
|
|
1301
|
-
static readTRACT(buffer: ArrayBuffer): TRACT;
|
|
1302
1304
|
}
|
|
1303
1305
|
|
|
1304
1306
|
/**
|
|
@@ -1509,21 +1511,37 @@ declare class NVController {
|
|
|
1509
1511
|
}
|
|
1510
1512
|
|
|
1511
1513
|
type TypedNumberArray = Float64Array | Float32Array | Uint32Array | Uint16Array | Uint8Array | Int32Array | Int16Array | Int8Array;
|
|
1512
|
-
/**
|
|
1513
|
-
* Namespace for utility functions
|
|
1514
|
-
* @ignore
|
|
1515
|
-
*/
|
|
1516
1514
|
declare class NVUtilities {
|
|
1517
1515
|
static arrayBufferToBase64(arrayBuffer: ArrayBuffer): string;
|
|
1518
|
-
static
|
|
1516
|
+
static decompress(data: Uint8Array): Promise<Uint8Array>;
|
|
1517
|
+
static decompressToBuffer(data: Uint8Array): Promise<ArrayBuffer>;
|
|
1518
|
+
static readMatV4(buffer: ArrayBuffer): Promise<Record<string, TypedNumberArray>>;
|
|
1519
|
+
static b64toUint8(base64: string): Uint8Array;
|
|
1519
1520
|
static uint8tob64(bytes: Uint8Array): string;
|
|
1520
1521
|
static download(content: string | ArrayBuffer, fileName: string, contentType: string): void;
|
|
1521
1522
|
static readFileAsync(file: Blob): Promise<ArrayBuffer>;
|
|
1522
1523
|
static blobToBase64(blob: Blob): Promise<string>;
|
|
1523
1524
|
static decompressBase64String(base64: string): Promise<string>;
|
|
1524
1525
|
static compressToBase64String(string: string): Promise<string>;
|
|
1526
|
+
/**
|
|
1527
|
+
* Converts a string into a Uint8Array for use with compression/decompression methods (101arrowz/fflate: MIT License)
|
|
1528
|
+
* @param str The string to encode
|
|
1529
|
+
* @param latin1 Whether or not to interpret the data as Latin-1. This should
|
|
1530
|
+
* not need to be true unless decoding a binary string.
|
|
1531
|
+
* @returns The string encoded in UTF-8/Latin-1 binary
|
|
1532
|
+
*/
|
|
1533
|
+
static strToU8(str: string, latin1?: boolean): Uint8Array;
|
|
1534
|
+
static compress(data: Uint8Array, format?: CompressionFormat): Promise<ArrayBuffer>;
|
|
1525
1535
|
static compressStringToArrayBuffer(input: string): Promise<ArrayBuffer>;
|
|
1526
1536
|
static isArrayBufferCompressed(buffer: ArrayBuffer): boolean;
|
|
1537
|
+
/**
|
|
1538
|
+
* Converts a Uint8Array to a string (101arrowz/fflate: MIT License)
|
|
1539
|
+
* @param dat The data to decode to string
|
|
1540
|
+
* @param latin1 Whether or not to interpret the data as Latin-1. This should
|
|
1541
|
+
* not need to be true unless encoding to binary string.
|
|
1542
|
+
* @returns The original UTF-8/Latin-1 string
|
|
1543
|
+
*/
|
|
1544
|
+
static strFromU8(dat: Uint8Array, latin1?: boolean): string;
|
|
1527
1545
|
static decompressArrayBuffer(buffer: ArrayBuffer): Promise<string>;
|
|
1528
1546
|
static arraysAreEqual(a: unknown[], b: unknown[]): boolean;
|
|
1529
1547
|
/**
|
|
@@ -1553,14 +1571,14 @@ declare class NVUtilities {
|
|
|
1553
1571
|
*/
|
|
1554
1572
|
declare class NVMeshLoaders {
|
|
1555
1573
|
static readTRACT(buffer: ArrayBuffer): TRACT;
|
|
1556
|
-
static readTT(buffer: ArrayBuffer): TT
|
|
1557
|
-
static readTRX(buffer: ArrayBuffer): TRX
|
|
1574
|
+
static readTT(buffer: ArrayBuffer): Promise<TT>;
|
|
1575
|
+
static readTRX(buffer: ArrayBuffer): Promise<TRX>;
|
|
1558
1576
|
static readTSF(buffer: ArrayBuffer, n_vert?: number): Float32Array;
|
|
1559
1577
|
static readTCK(buffer: ArrayBuffer): TCK;
|
|
1560
|
-
static readTRK(buffer: ArrayBuffer): TRK
|
|
1578
|
+
static readTRK(buffer: ArrayBuffer): Promise<TRK>;
|
|
1561
1579
|
static readTxtVTK(buffer: ArrayBuffer): VTK;
|
|
1562
|
-
static readLayer(name: string, buffer: ArrayBuffer, nvmesh: NVMesh, opacity?: number, colormap?: string, colormapNegative?: string, useNegativeCmap?: boolean, cal_min?: number | null, cal_max?: number | null, outlineBorder?: number): NVMeshLayer | undefined
|
|
1563
|
-
static readSMP(buffer: ArrayBuffer, n_vert: number): Float32Array
|
|
1580
|
+
static readLayer(name: string, buffer: ArrayBuffer, nvmesh: NVMesh, opacity?: number, colormap?: string, colormapNegative?: string, useNegativeCmap?: boolean, cal_min?: number | null, cal_max?: number | null, outlineBorder?: number): Promise<NVMeshLayer | undefined>;
|
|
1581
|
+
static readSMP(buffer: ArrayBuffer, n_vert: number): Promise<Float32Array>;
|
|
1564
1582
|
static readSTC(buffer: ArrayBuffer, n_vert: number): Float32Array;
|
|
1565
1583
|
static isCurv(buffer: ArrayBuffer): boolean;
|
|
1566
1584
|
static readCURV(buffer: ArrayBuffer, n_vert: number): Float32Array;
|
|
@@ -1568,24 +1586,25 @@ declare class NVMeshLoaders {
|
|
|
1568
1586
|
static readNV(buffer: ArrayBuffer): DefaultMeshType;
|
|
1569
1587
|
static readASC(buffer: ArrayBuffer): DefaultMeshType;
|
|
1570
1588
|
static readVTK(buffer: ArrayBuffer): VTK;
|
|
1589
|
+
static readWRL(buffer: ArrayBuffer): DefaultMeshType;
|
|
1571
1590
|
static readDFS(buffer: ArrayBuffer): DefaultMeshType;
|
|
1572
|
-
static readMZ3(buffer: ArrayBuffer, n_vert?: number): MZ3
|
|
1591
|
+
static readMZ3(buffer: ArrayBuffer, n_vert?: number): Promise<MZ3>;
|
|
1573
1592
|
static readPLY(buffer: ArrayBuffer): DefaultMeshType;
|
|
1574
1593
|
static readICO(buffer: ArrayBuffer): DefaultMeshType;
|
|
1575
1594
|
static readGEO(buffer: ArrayBuffer, isFlipWinding?: boolean): DefaultMeshType;
|
|
1576
1595
|
static readOFF(buffer: ArrayBuffer): DefaultMeshType;
|
|
1577
1596
|
static readOBJMNI(buffer: ArrayBuffer): DefaultMeshType;
|
|
1578
|
-
static readOBJ(buffer: ArrayBuffer): DefaultMeshType
|
|
1597
|
+
static readOBJ(buffer: ArrayBuffer): Promise<DefaultMeshType>;
|
|
1579
1598
|
static readFreeSurfer(buffer: ArrayBuffer): DefaultMeshType;
|
|
1580
|
-
static readSRF(buffer: ArrayBuffer): DefaultMeshType
|
|
1599
|
+
static readSRF(buffer: ArrayBuffer): Promise<DefaultMeshType>;
|
|
1581
1600
|
static readTxtSTL(buffer: ArrayBuffer): DefaultMeshType;
|
|
1582
1601
|
static readSTL(buffer: ArrayBuffer): DefaultMeshType;
|
|
1583
1602
|
static decimateLayerVertices(nVertLayer: number, nVertMesh: number): number;
|
|
1584
|
-
static readNII2(buffer: ArrayBuffer, n_vert?: number, anatomicalStructurePrimary?: string): Int32Array | Float32Array | Int16Array | Uint8Array
|
|
1585
|
-
static readNII(buffer: ArrayBuffer, n_vert?: number, anatomicalStructurePrimary?: string): Float32Array | Uint8Array | Int32Array | Int16Array
|
|
1586
|
-
static readMGH(buffer: ArrayBuffer, n_vert?: number, isReadColortables?: boolean): MGH
|
|
1603
|
+
static readNII2(buffer: ArrayBuffer, n_vert?: number, anatomicalStructurePrimary?: string): Promise<Int32Array | Float32Array | Int16Array | Uint8Array>;
|
|
1604
|
+
static readNII(buffer: ArrayBuffer, n_vert?: number, anatomicalStructurePrimary?: string): Promise<Float32Array | Uint8Array | Int32Array | Int16Array>;
|
|
1605
|
+
static readMGH(buffer: ArrayBuffer, n_vert?: number, isReadColortables?: boolean): Promise<MGH>;
|
|
1587
1606
|
static readX3D(buffer: ArrayBuffer): X3D;
|
|
1588
|
-
static readGII(buffer: ArrayBuffer, n_vert?: number): GII
|
|
1607
|
+
static readGII(buffer: ArrayBuffer, n_vert?: number): Promise<GII>;
|
|
1589
1608
|
}
|
|
1590
1609
|
|
|
1591
1610
|
type Extents = {
|
|
@@ -1598,11 +1617,13 @@ type Extents = {
|
|
|
1598
1617
|
*/
|
|
1599
1618
|
declare class NVMeshUtilities {
|
|
1600
1619
|
static getClusterBoundaryU8(u8: Uint8Array, faces: number[] | Uint32Array): boolean[];
|
|
1601
|
-
static
|
|
1620
|
+
static gzip(data: Uint8Array): Promise<Uint8Array>;
|
|
1621
|
+
static createMZ3(vertices: Float32Array, indices: Uint32Array, compress?: boolean, colors?: Uint8Array | null): ArrayBuffer;
|
|
1622
|
+
static createMZ3Async(vertices: Float32Array, indices: Uint32Array, compress?: boolean, colors?: Uint8Array | null): Promise<ArrayBuffer>;
|
|
1602
1623
|
static createOBJ(vertices: Float32Array, indices: Uint32Array): ArrayBuffer;
|
|
1603
1624
|
static createSTL(vertices: Float32Array, indices: Uint32Array): ArrayBuffer;
|
|
1604
1625
|
static downloadArrayBuffer(buffer: ArrayBuffer, filename: string): void;
|
|
1605
|
-
static saveMesh(vertices: Float32Array, indices: Uint32Array, filename?: string, compress?: boolean): ArrayBuffer
|
|
1626
|
+
static saveMesh(vertices: Float32Array, indices: Uint32Array, filename?: string, compress?: boolean): Promise<ArrayBuffer>;
|
|
1606
1627
|
static getClusterBoundary(rgba8: Uint8Array, faces: number[] | Uint32Array): boolean[];
|
|
1607
1628
|
static getExtents(pts: number[] | Float32Array): Extents;
|
|
1608
1629
|
static generateNormals(pts: number[] | Float32Array, tris: number[] | Uint32Array): Float32Array;
|
|
@@ -1612,7 +1633,7 @@ type ColormapListEntry = {
|
|
|
1612
1633
|
name: string;
|
|
1613
1634
|
min: number;
|
|
1614
1635
|
max: number;
|
|
1615
|
-
|
|
1636
|
+
isColorbarFromZero: boolean;
|
|
1616
1637
|
negative: boolean;
|
|
1617
1638
|
visible: boolean;
|
|
1618
1639
|
invert: boolean;
|
|
@@ -1696,12 +1717,22 @@ type UIData = {
|
|
|
1696
1717
|
lastTwoTouchDistance: number;
|
|
1697
1718
|
multiTouchGesture: boolean;
|
|
1698
1719
|
dpr?: number;
|
|
1720
|
+
windowX: number;
|
|
1721
|
+
windowY: number;
|
|
1699
1722
|
};
|
|
1700
1723
|
type SaveImageOptions = {
|
|
1701
1724
|
filename: string;
|
|
1702
1725
|
isSaveDrawing: boolean;
|
|
1703
1726
|
volumeByIndex: number;
|
|
1704
1727
|
};
|
|
1728
|
+
type DicomLoaderInput = ArrayBuffer | ArrayBuffer[] | File[];
|
|
1729
|
+
type DicomLoader = {
|
|
1730
|
+
loader: (data: DicomLoaderInput) => Promise<Array<{
|
|
1731
|
+
name: string;
|
|
1732
|
+
data: ArrayBuffer;
|
|
1733
|
+
}>>;
|
|
1734
|
+
toExt: string;
|
|
1735
|
+
};
|
|
1705
1736
|
/**
|
|
1706
1737
|
* Niivue can be attached to a canvas. An instance of Niivue contains methods for
|
|
1707
1738
|
* loading and rendering NIFTI image data in a WebGL 2.0 context.
|
|
@@ -1711,6 +1742,7 @@ type SaveImageOptions = {
|
|
|
1711
1742
|
*/
|
|
1712
1743
|
declare class Niivue {
|
|
1713
1744
|
loaders: {};
|
|
1745
|
+
dicomLoader: DicomLoader | null;
|
|
1714
1746
|
canvas: HTMLCanvasElement | null;
|
|
1715
1747
|
_gl: WebGL2RenderingContext | null;
|
|
1716
1748
|
isBusy: boolean;
|
|
@@ -1780,7 +1812,6 @@ declare class Niivue {
|
|
|
1780
1812
|
backgroundMasksOverlays: number;
|
|
1781
1813
|
overlayOutlineWidth: number;
|
|
1782
1814
|
overlayAlphaShader: number;
|
|
1783
|
-
isAlphaClipDark: boolean;
|
|
1784
1815
|
position?: vec3;
|
|
1785
1816
|
extentsMin?: vec3;
|
|
1786
1817
|
extentsMax?: vec3;
|
|
@@ -1998,6 +2029,7 @@ declare class Niivue {
|
|
|
1998
2029
|
onCustomMeshShaderAdded: (fragmentShaderText: string, name: string) => void;
|
|
1999
2030
|
onMeshShaderChanged: (meshIndex: number, shaderIndex: number) => void;
|
|
2000
2031
|
onMeshPropertyChanged: (meshIndex: number, key: string, val: unknown) => void;
|
|
2032
|
+
onDicomLoaderFinishedWithImages: (files: NVImage[] | NVMesh[]) => void;
|
|
2001
2033
|
/**
|
|
2002
2034
|
* callback function to run when the user loads a new NiiVue document
|
|
2003
2035
|
* @example
|
|
@@ -2011,6 +2043,8 @@ declare class Niivue {
|
|
|
2011
2043
|
get opts(): NVConfigOptions;
|
|
2012
2044
|
get sliceMosaicString(): string;
|
|
2013
2045
|
set sliceMosaicString(newSliceMosaicString: string);
|
|
2046
|
+
get isAlphaClipDark(): boolean;
|
|
2047
|
+
set isAlphaClipDark(newVal: boolean);
|
|
2014
2048
|
mediaUrlMap: Map<NVImage | NVMesh, string>;
|
|
2015
2049
|
initialized: boolean;
|
|
2016
2050
|
currentDrawUndoBitmap: number;
|
|
@@ -2145,6 +2179,7 @@ declare class Niivue {
|
|
|
2145
2179
|
checkMultitouch(e: TouchEvent): void;
|
|
2146
2180
|
touchStartListener(e: TouchEvent): void;
|
|
2147
2181
|
touchEndListener(e: TouchEvent): void;
|
|
2182
|
+
windowingHandler(x: number, y: number, volIdx?: number): void;
|
|
2148
2183
|
mouseMoveListener(e: MouseEvent): void;
|
|
2149
2184
|
resetBriCon(msg?: TouchEvent | MouseEvent | null): void;
|
|
2150
2185
|
setDragStart(x: number, y: number): void;
|
|
@@ -2174,6 +2209,7 @@ declare class Niivue {
|
|
|
2174
2209
|
* @see {@link https://niivue.github.io/niivue/features/document.3d.html | live demo usage}
|
|
2175
2210
|
*/
|
|
2176
2211
|
removeVolumeByUrl(url: string): void;
|
|
2212
|
+
traverseFileTree(item: any, path: string, fileArray: any): Promise<File[]>;
|
|
2177
2213
|
readDirectory(directory: FileSystemDirectoryEntry): FileSystemEntry[];
|
|
2178
2214
|
/**
|
|
2179
2215
|
* Returns boolean: true if filename ends with mesh extension (TRK, pial, etc)
|
|
@@ -2193,7 +2229,9 @@ declare class Niivue {
|
|
|
2193
2229
|
*/
|
|
2194
2230
|
loadFromFile(file: File): Promise<void>;
|
|
2195
2231
|
useLoader(loader: unknown, fileExt: string, toExt: string): void;
|
|
2196
|
-
|
|
2232
|
+
useDicomLoader(loader: DicomLoader): void;
|
|
2233
|
+
getDicomLoader(): DicomLoader;
|
|
2234
|
+
dropListener(e: DragEvent): Promise<void>;
|
|
2197
2235
|
/**
|
|
2198
2236
|
* insert a gap between slices of a mutliplanar view.
|
|
2199
2237
|
* @param pixels - spacing between tiles of multiplanar view
|
|
@@ -2347,7 +2385,7 @@ declare class Niivue {
|
|
|
2347
2385
|
* @example niivue.saveImage({ filename: "myimage.nii.gz", isSaveDrawing: true });
|
|
2348
2386
|
* @see {@link https://niivue.github.io/niivue/features/draw.ui.html | live demo usage}
|
|
2349
2387
|
*/
|
|
2350
|
-
saveImage(options?: SaveImageOptions):
|
|
2388
|
+
saveImage(options?: SaveImageOptions): Promise<boolean | Uint8Array>;
|
|
2351
2389
|
getMeshIndexByID(id: string | number): number;
|
|
2352
2390
|
/**
|
|
2353
2391
|
* change property of mesh, tractogram or connectome
|
|
@@ -2394,7 +2432,7 @@ declare class Niivue {
|
|
|
2394
2432
|
* @example niivue.setMeshLayerProperty(niivue.meshes[0].id, 0, 'frame4D', 22)
|
|
2395
2433
|
* @see {@link https://niivue.github.io/niivue/features/mesh.4D.html | live demo usage}
|
|
2396
2434
|
*/
|
|
2397
|
-
setMeshLayerProperty(mesh: number, layer: number, key: keyof NVMeshLayer, val: number): void
|
|
2435
|
+
setMeshLayerProperty(mesh: number, layer: number, key: keyof NVMeshLayer, val: number): Promise<void>;
|
|
2398
2436
|
/**
|
|
2399
2437
|
* adjust offset position and scale of 2D sliceScale
|
|
2400
2438
|
* @param xyzmmZoom - first three components are spatial, fourth is scaling
|
|
@@ -2637,7 +2675,7 @@ declare class Niivue {
|
|
|
2637
2675
|
* @returns Niivue instance
|
|
2638
2676
|
* @see {@link https://niivue.github.io/niivue/features/document.load.html | live demo usage}
|
|
2639
2677
|
*/
|
|
2640
|
-
loadDocument(document: NVDocument): this
|
|
2678
|
+
loadDocument(document: NVDocument): Promise<this>;
|
|
2641
2679
|
/**
|
|
2642
2680
|
* generates JavaScript to load the current scene as a document
|
|
2643
2681
|
* @param canvasId - id of canvas NiiVue will be attached to
|
|
@@ -2680,6 +2718,7 @@ declare class Niivue {
|
|
|
2680
2718
|
*/
|
|
2681
2719
|
saveDocument(fileName?: string, compress?: boolean): Promise<void>;
|
|
2682
2720
|
loadImages(images: Array<ImageFromUrlOptions | LoadFromUrlParams>): Promise<this>;
|
|
2721
|
+
loadDicoms(dicomList: ImageFromUrlOptions[]): Promise<this>;
|
|
2683
2722
|
/**
|
|
2684
2723
|
* load an array of volume objects
|
|
2685
2724
|
* @param volumeList - the array of objects to load. each object must have a resolvable "url" property at a minimum
|
|
@@ -3157,4 +3196,4 @@ declare class Niivue {
|
|
|
3157
3196
|
set gl(gl: WebGL2RenderingContext | null);
|
|
3158
3197
|
}
|
|
3159
3198
|
|
|
3160
|
-
export { type Connectome, type ConnectomeOptions, DEFAULT_OPTIONS, DRAG_MODE, type DocumentData, type DragReleaseParams, type ExportDocumentData, INITIAL_SCENE_DATA, LabelAnchorPoint, 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 SyncOpts, type Volume, cmapper, ColorTables as colortables };
|
|
3199
|
+
export { COLORMAP_TYPE, type Connectome, type ConnectomeOptions, DEFAULT_OPTIONS, DRAG_MODE, DRAG_MODE_PRIMARY, DRAG_MODE_SECONDARY, type DicomLoader, type DicomLoaderInput, type DocumentData, type DragReleaseParams, type ExportDocumentData, INITIAL_SCENE_DATA, LabelAnchorPoint, 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 SyncOpts, type Volume, cmapper, ColorTables as colortables };
|