@niivue/niivue 0.51.0 → 0.53.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 +112 -39
- package/build/index.js +2579 -1522
- package/build/index.js.map +1 -1
- package/build/index.min.js +1 -1
- package/build/metafile-esm.json +1 -1
- package/dist/index.d.ts +112 -39
- package/dist/index.js +2335 -1212
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/niivue.umd.js +207 -89
- package/package.json +3 -2
- package/src/index.html +1 -1
- package/src/index_magic.html +223 -0
- package/src/niivue/index.ts +863 -393
- package/src/niivue/utils.ts +34 -0
- package/src/nvdocument.ts +10 -4
- package/src/nvimage/ImageReaders/index.ts +13 -0
- package/src/nvimage/ImageReaders/mgh.ts +161 -0
- package/src/nvimage/ImageReaders/nii.ts +53 -0
- package/src/nvimage/ImageReaders/nrrd.ts +338 -0
- package/src/nvimage/ImageWriter.ts +298 -0
- package/src/nvimage/RenderingUtils.ts +158 -0
- package/src/nvimage/VolumeUtils.ts +348 -0
- package/src/nvimage/index.ts +504 -1048
- package/src/nvimage/utils.ts +16 -1
- package/src/nvmesh.ts +8 -5
- package/src/nvutilities.ts +11 -3
- package/src/shader-srcs.ts +143 -9
- package/src/types.ts +1 -1
package/build/index.d.ts
CHANGED
|
@@ -208,7 +208,10 @@ declare enum ImageType {
|
|
|
208
208
|
DCM_FOLDER = 16,
|
|
209
209
|
SRC = 17,
|
|
210
210
|
FIB = 18,
|
|
211
|
-
BMP = 19
|
|
211
|
+
BMP = 19,
|
|
212
|
+
ZARR = 20,
|
|
213
|
+
NPY = 21,
|
|
214
|
+
NPZ = 22
|
|
212
215
|
}
|
|
213
216
|
type ImageFromUrlOptions = {
|
|
214
217
|
url: string;
|
|
@@ -385,9 +388,9 @@ declare class NVImage {
|
|
|
385
388
|
* @param colorbarVisible - TODO
|
|
386
389
|
* @param colormapLabel - TODO
|
|
387
390
|
*/
|
|
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, colormapType?: number);
|
|
389
|
-
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;
|
|
390
|
-
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>;
|
|
391
|
+
constructor(dataBuffer?: ArrayBuffer | ArrayBuffer[] | ArrayBufferLike | 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);
|
|
392
|
+
init(dataBuffer?: ArrayBuffer | ArrayBuffer[] | ArrayBufferLike | 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 | ArrayBufferLike | null): void;
|
|
393
|
+
static new(dataBuffer?: ArrayBuffer | ArrayBuffer[] | ArrayBufferLike | 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>;
|
|
391
394
|
computeObliqueAngle(mtx44: mat4): number;
|
|
392
395
|
float32V1asRGBA(inImg: Float32Array): Uint8Array;
|
|
393
396
|
loadImgV1(isFlipX?: boolean, isFlipY?: boolean, isFlipZ?: boolean): boolean;
|
|
@@ -396,16 +399,16 @@ declare class NVImage {
|
|
|
396
399
|
SetPixDimFromSForm(): void;
|
|
397
400
|
readECAT(buffer: ArrayBuffer): ArrayBuffer;
|
|
398
401
|
readV16(buffer: ArrayBuffer): ArrayBuffer;
|
|
402
|
+
readNPY(buffer: ArrayBuffer): Promise<ArrayBuffer>;
|
|
403
|
+
readNPZ(buffer: ArrayBuffer): Promise<ArrayBuffer>;
|
|
399
404
|
imageDataFromArrayBuffer(buffer: ArrayBuffer): Promise<ImageData>;
|
|
400
|
-
readBMP(buffer: ArrayBuffer): Promise<
|
|
405
|
+
readBMP(buffer: ArrayBuffer): Promise<ArrayBuffer>;
|
|
401
406
|
readVMR(buffer: ArrayBuffer): ArrayBuffer;
|
|
402
|
-
readMGH(buffer: ArrayBuffer): Promise<ArrayBuffer>;
|
|
403
407
|
readFIB(buffer: ArrayBuffer): Promise<[ArrayBuffer, Float32Array]>;
|
|
404
408
|
readSRC(buffer: ArrayBuffer): Promise<ArrayBuffer>;
|
|
405
409
|
readHEAD(dataBuffer: ArrayBuffer, pairedImgData: ArrayBuffer | null): Promise<ArrayBuffer>;
|
|
406
410
|
readMHA(buffer: ArrayBuffer, pairedImgData: ArrayBuffer | null): Promise<ArrayBuffer>;
|
|
407
411
|
readMIF(buffer: ArrayBuffer, pairedImgData: ArrayBuffer | null): Promise<ArrayBuffer>;
|
|
408
|
-
readNRRD(dataBuffer: ArrayBuffer, pairedImgData: ArrayBuffer | null): Promise<ArrayBuffer>;
|
|
409
412
|
calculateRAS(): void;
|
|
410
413
|
hdr2RAS(nVolumes?: number): Promise<NIFTI1 | NIFTI2>;
|
|
411
414
|
img2RAS(nVolume?: number): TypedVoxelArray;
|
|
@@ -431,13 +434,30 @@ declare class NVImage {
|
|
|
431
434
|
calMinMax(vol?: number, isBorder?: boolean): number[];
|
|
432
435
|
intensityRaw2Scaled(raw: number): number;
|
|
433
436
|
intensityScaled2Raw(scaled: number): number;
|
|
437
|
+
/**
|
|
438
|
+
* Converts NVImage to NIfTI compliant byte array, potentially compressed.
|
|
439
|
+
* Delegates to ImageWriter.saveToUint8Array.
|
|
440
|
+
* @param fnm - Filename (determines if compression is needed via .gz suffix)
|
|
441
|
+
* @param drawing8 - Optional Uint8Array drawing overlay
|
|
442
|
+
* @returns Promise<Uint8Array>
|
|
443
|
+
*/
|
|
434
444
|
saveToUint8Array(fnm: string, drawing8?: Uint8Array | null): Promise<Uint8Array>;
|
|
445
|
+
/**
|
|
446
|
+
* save image as NIfTI volume and trigger download.
|
|
447
|
+
* Delegates to ImageWriter.saveToDisk.
|
|
448
|
+
* @param fnm - Filename for download. If empty, returns data without download.
|
|
449
|
+
* @param drawing8 - Optional Uint8Array drawing overlay
|
|
450
|
+
* @returns Promise<Uint8Array>
|
|
451
|
+
*/
|
|
435
452
|
saveToDisk(fnm?: string, drawing8?: Uint8Array | null): Promise<Uint8Array>;
|
|
436
453
|
static fetchDicomData(url: string, headers?: Record<string, string>): Promise<Array<{
|
|
437
454
|
name: string;
|
|
438
455
|
data: ArrayBuffer;
|
|
439
456
|
}>>;
|
|
440
|
-
static
|
|
457
|
+
static readFirstDecompressedBytes(stream: ReadableStream<Uint8Array>, minBytes: number): Promise<Uint8Array>;
|
|
458
|
+
static extractFilenameFromUrl(url: string): string | null;
|
|
459
|
+
static loadInitialVolumesGz(url?: string, headers?: {}, limitFrames4D?: number): Promise<ArrayBuffer | null>;
|
|
460
|
+
static loadInitialVolumes(url?: string, headers?: {}, limitFrames4D?: number): Promise<ArrayBuffer | null>;
|
|
441
461
|
/**
|
|
442
462
|
* factory function to load and return a new NVImage instance from a given URL
|
|
443
463
|
* @returns NVImage instance
|
|
@@ -452,15 +472,15 @@ declare class NVImage {
|
|
|
452
472
|
static loadFromFile({ file, // file can be an array of file objects or a single file object
|
|
453
473
|
name, colormap, opacity, urlImgData, cal_min, cal_max, trustCalMinMax, percentileFrac, ignoreZeroVoxels, useQFormNotSForm, colormapNegative, frame4D, limitFrames4D, imageType }: ImageFromFileOptions): Promise<NVImage>;
|
|
454
474
|
/**
|
|
455
|
-
*
|
|
456
|
-
*
|
|
457
|
-
* @returns NVImage instance
|
|
458
|
-
* @example
|
|
459
|
-
* myImage = NVImage.loadFromBase64('SomeBase64String')
|
|
475
|
+
* Creates a Uint8Array representing a NIFTI file (header + optional image data).
|
|
476
|
+
* Delegates to ImageWriter.createNiftiArray.
|
|
460
477
|
*/
|
|
461
|
-
static createNiftiArray(dims?: number[], pixDims?: number[], affine?: number[], datatypeCode?:
|
|
462
|
-
|
|
463
|
-
|
|
478
|
+
static createNiftiArray(dims?: number[], pixDims?: number[], affine?: number[], datatypeCode?: NiiDataType, img?: TypedVoxelArray | Uint8Array): Uint8Array;
|
|
479
|
+
/**
|
|
480
|
+
* Creates a NIFTI1 header object with basic properties.
|
|
481
|
+
* Delegates to ImageWriter.createNiftiHeader.
|
|
482
|
+
*/
|
|
483
|
+
static createNiftiHeader(dims?: number[], pixDims?: number[], affine?: number[], datatypeCode?: NiiDataType): NIFTI1;
|
|
464
484
|
/**
|
|
465
485
|
* read a 3D slab of voxels from a volume
|
|
466
486
|
* @param voxStart - first row, column and slice (RAS order) for selection
|
|
@@ -469,6 +489,14 @@ declare class NVImage {
|
|
|
469
489
|
* @returns the an array where ret[0] is the voxel values and ret[1] is dimension of selection
|
|
470
490
|
* @see {@link https://niivue.github.io/niivue/features/slab_selection.html | live demo usage}
|
|
471
491
|
*/
|
|
492
|
+
/**
|
|
493
|
+
* read a 3D slab of voxels from a volume, specified in RAS coordinates.
|
|
494
|
+
* Delegates to VolumeUtils.getVolumeData.
|
|
495
|
+
* @param voxStart - first row, column and slice (RAS order) for selection
|
|
496
|
+
* @param voxEnd - final row, column and slice (RAS order) for selection
|
|
497
|
+
* @param dataType - array data type. Options: 'same' (default), 'uint8', 'float32', 'scaled', 'normalized', 'windowed'
|
|
498
|
+
* @returns the an array where ret[0] is the voxel values and ret[1] is dimension of selection
|
|
499
|
+
*/
|
|
472
500
|
getVolumeData(voxStart?: number[], voxEnd?: number[], dataType?: string): [TypedVoxelArray, number[]];
|
|
473
501
|
/**
|
|
474
502
|
* write a 3D slab of voxels from a volume
|
|
@@ -477,6 +505,14 @@ declare class NVImage {
|
|
|
477
505
|
* @param img - array of voxel values to insert (RAS order)
|
|
478
506
|
* @see {@link https://niivue.github.io/niivue/features/slab_selection.html | live demo usage}
|
|
479
507
|
*/
|
|
508
|
+
/**
|
|
509
|
+
* write a 3D slab of voxels from a volume, specified in RAS coordinates.
|
|
510
|
+
* Delegates to VolumeUtils.setVolumeData.
|
|
511
|
+
* Input slabData is assumed to be in the correct raw data type for the target image.
|
|
512
|
+
* @param voxStart - first row, column and slice (RAS order) for selection
|
|
513
|
+
* @param voxEnd - final row, column and slice (RAS order) for selection
|
|
514
|
+
* @param img - array of voxel values to insert (RAS order, raw data type)
|
|
515
|
+
*/
|
|
480
516
|
setVolumeData(voxStart?: number[], voxEnd?: number[], img?: TypedVoxelArray): void;
|
|
481
517
|
/**
|
|
482
518
|
* factory function to load and return a new NVImage instance from a base64 encoded string
|
|
@@ -515,20 +551,28 @@ declare class NVImage {
|
|
|
515
551
|
* newZeroImage = NVImage.zerosLike(myImage)
|
|
516
552
|
*/
|
|
517
553
|
static zerosLike(nvImage: NVImage, dataType?: string): NVImage;
|
|
518
|
-
getValue(x: number, y: number, z: number, frame4D?: number, isReadImaginary?: boolean): number;
|
|
519
554
|
/**
|
|
520
|
-
*
|
|
521
|
-
*
|
|
522
|
-
* @
|
|
555
|
+
* Returns voxel intensity at specific native coordinates.
|
|
556
|
+
* Delegates to VolumeUtils.getValue.
|
|
557
|
+
* @param x - Native X coordinate (0-indexed)
|
|
558
|
+
* @param y - Native Y coordinate (0-indexed)
|
|
559
|
+
* @param z - Native Z coordinate (0-indexed)
|
|
560
|
+
* @param frame4D - 4D frame index (0-indexed)
|
|
561
|
+
* @param isReadImaginary - Flag to read from imaginary data array
|
|
562
|
+
* @returns Scaled voxel intensity
|
|
523
563
|
*/
|
|
524
|
-
|
|
564
|
+
getValue(x: number, y: number, z: number, frame4D?: number, isReadImaginary?: boolean): number;
|
|
525
565
|
/**
|
|
526
566
|
* Update options for image
|
|
527
567
|
*/
|
|
528
568
|
applyOptionsUpdate(options: ImageFromUrlOptions): void;
|
|
529
569
|
getImageOptions(): ImageFromUrlOptions;
|
|
530
570
|
/**
|
|
531
|
-
* Converts NVImage to NIfTI compliant byte array
|
|
571
|
+
* Converts NVImage to NIfTI compliant byte array.
|
|
572
|
+
* Handles potential re-orientation of drawing data.
|
|
573
|
+
* Delegates to ImageWriter.toUint8Array.
|
|
574
|
+
* @param drawingBytes - Optional Uint8Array drawing overlay
|
|
575
|
+
* @returns Uint8Array
|
|
532
576
|
*/
|
|
533
577
|
toUint8Array(drawingBytes?: Uint8Array | null): Uint8Array;
|
|
534
578
|
convertVox2Frac(vox: vec3): vec3;
|
|
@@ -682,7 +726,7 @@ type NVConfigOptions = {
|
|
|
682
726
|
sagittalNoseLeft: boolean;
|
|
683
727
|
isSliceMM: boolean;
|
|
684
728
|
isV1SliceShader: boolean;
|
|
685
|
-
|
|
729
|
+
forceDevicePixelRatio: number;
|
|
686
730
|
logLevel: 'debug' | 'info' | 'warn' | 'error' | 'fatal' | 'silent';
|
|
687
731
|
loadingText: string;
|
|
688
732
|
isForceMouseClickToVoxelCenters: boolean;
|
|
@@ -726,6 +770,9 @@ type NVConfigOptions = {
|
|
|
726
770
|
measureLineColor: number[];
|
|
727
771
|
measureTextHeight: number;
|
|
728
772
|
isAlphaClipDark: boolean;
|
|
773
|
+
gradientOrder: number;
|
|
774
|
+
gradientOpacity: number;
|
|
775
|
+
invertScrollDirection: boolean;
|
|
729
776
|
};
|
|
730
777
|
declare const DEFAULT_OPTIONS: NVConfigOptions;
|
|
731
778
|
type SceneData = {
|
|
@@ -951,7 +998,7 @@ type Point = {
|
|
|
951
998
|
};
|
|
952
999
|
};
|
|
953
1000
|
/**
|
|
954
|
-
*
|
|
1001
|
+
* Represents the vertices of a connectome
|
|
955
1002
|
* @ignore
|
|
956
1003
|
*/
|
|
957
1004
|
type NVConnectomeNode = {
|
|
@@ -1286,7 +1333,7 @@ declare class NVMesh {
|
|
|
1286
1333
|
decimateFaces(n: number, ntarget: number): void;
|
|
1287
1334
|
decimateHierarchicalMesh(gl: WebGL2RenderingContext, order?: number): boolean;
|
|
1288
1335
|
setLayerProperty(id: number, key: keyof NVMeshLayer, val: number | string | boolean, gl: WebGL2RenderingContext): Promise<void>;
|
|
1289
|
-
setProperty(key: keyof this, val:
|
|
1336
|
+
setProperty(key: keyof this, val: number | string | boolean, gl: WebGL2RenderingContext): void;
|
|
1290
1337
|
generatePosNormClr(pts: Float32Array, tris: Uint32Array, rgba255: Uint8Array): Float32Array;
|
|
1291
1338
|
static readMesh(buffer: ArrayBuffer, name: string, gl: WebGL2RenderingContext, opacity?: number, rgba255?: Uint8Array, visible?: boolean): Promise<NVMesh>;
|
|
1292
1339
|
static loadLayer(layer: NVMeshLayer, nvmesh: NVMesh): Promise<void>;
|
|
@@ -1312,7 +1359,7 @@ declare class NVUtilities {
|
|
|
1312
1359
|
static arrayBufferToBase64(arrayBuffer: ArrayBuffer): string;
|
|
1313
1360
|
static decompress(data: Uint8Array): Promise<Uint8Array>;
|
|
1314
1361
|
static decompressToBuffer(data: Uint8Array): Promise<ArrayBuffer>;
|
|
1315
|
-
static readMatV4(buffer: ArrayBuffer): Promise<Record<string, TypedNumberArray>>;
|
|
1362
|
+
static readMatV4(buffer: ArrayBuffer, isReplaceDots?: boolean): Promise<Record<string, TypedNumberArray>>;
|
|
1316
1363
|
static b64toUint8(base64: string): Uint8Array;
|
|
1317
1364
|
static uint8tob64(bytes: Uint8Array): string;
|
|
1318
1365
|
static download(content: string | ArrayBuffer, fileName: string, contentType: string): void;
|
|
@@ -1549,6 +1596,7 @@ declare class Niivue {
|
|
|
1549
1596
|
volumeTexture: WebGLTexture | null;
|
|
1550
1597
|
gradientTexture: WebGLTexture | null;
|
|
1551
1598
|
gradientTextureAmount: number;
|
|
1599
|
+
renderGradientValues: boolean;
|
|
1552
1600
|
drawTexture: WebGLTexture | null;
|
|
1553
1601
|
drawUndoBitmaps: Uint8Array[];
|
|
1554
1602
|
drawLut: LUT;
|
|
@@ -1575,6 +1623,7 @@ declare class Niivue {
|
|
|
1575
1623
|
line3DShader?: Shader;
|
|
1576
1624
|
passThroughShader?: Shader;
|
|
1577
1625
|
renderGradientShader?: Shader;
|
|
1626
|
+
renderGradientValuesShader?: Shader;
|
|
1578
1627
|
renderSliceShader?: Shader;
|
|
1579
1628
|
renderVolumeShader?: Shader;
|
|
1580
1629
|
pickingMeshShader?: Shader;
|
|
@@ -1598,7 +1647,9 @@ declare class Niivue {
|
|
|
1598
1647
|
orientShaderRGBU: Shader | null;
|
|
1599
1648
|
surfaceShader: Shader | null;
|
|
1600
1649
|
blurShader: Shader | null;
|
|
1601
|
-
|
|
1650
|
+
sobelBlurShader: Shader | null;
|
|
1651
|
+
sobelFirstOrderShader: Shader | null;
|
|
1652
|
+
sobelSecondOrderShader: Shader | null;
|
|
1602
1653
|
genericVAO: WebGLVertexArrayObject | null;
|
|
1603
1654
|
unusedVAO: any;
|
|
1604
1655
|
crosshairs3D: NiivueObject3D | null;
|
|
@@ -1613,6 +1664,8 @@ declare class Niivue {
|
|
|
1613
1664
|
extentsMin?: vec3;
|
|
1614
1665
|
extentsMax?: vec3;
|
|
1615
1666
|
private resizeObserver;
|
|
1667
|
+
private resizeEventListener;
|
|
1668
|
+
private canvasObserver;
|
|
1616
1669
|
syncOpts: SyncOpts;
|
|
1617
1670
|
readyForSync: boolean;
|
|
1618
1671
|
uiData: UIData;
|
|
@@ -1849,6 +1902,13 @@ declare class Niivue {
|
|
|
1849
1902
|
* @param options - options object to set modifiable Niivue properties
|
|
1850
1903
|
*/
|
|
1851
1904
|
constructor(options?: Partial<NVConfigOptions>);
|
|
1905
|
+
/**
|
|
1906
|
+
* Clean up event listeners and observers
|
|
1907
|
+
* Call this when the Niivue instance is no longer needed.
|
|
1908
|
+
* This will be called when the canvas is detached from the DOM
|
|
1909
|
+
* @example niivue.cleanup();
|
|
1910
|
+
*/
|
|
1911
|
+
cleanup(): void;
|
|
1852
1912
|
get volumes(): NVImage[];
|
|
1853
1913
|
set volumes(volumes: NVImage[]);
|
|
1854
1914
|
get meshes(): NVMesh[];
|
|
@@ -1869,7 +1929,7 @@ declare class Niivue {
|
|
|
1869
1929
|
* @param id - the id of an html canvas element
|
|
1870
1930
|
* @param isAntiAlias - determines if anti-aliasing is requested (if not specified, AA usage depends on hardware)
|
|
1871
1931
|
* @example niivue = new Niivue().attachTo('gl')
|
|
1872
|
-
* @example niivue.attachTo('gl')
|
|
1932
|
+
* @example await niivue.attachTo('gl')
|
|
1873
1933
|
* @see {@link https://niivue.github.io/niivue/features/basic.multiplanar.html | live demo usage}
|
|
1874
1934
|
*/
|
|
1875
1935
|
attachTo(id: string, isAntiAlias?: any): Promise<this>;
|
|
@@ -1878,7 +1938,7 @@ declare class Niivue {
|
|
|
1878
1938
|
* @param canvas - the canvas element reference
|
|
1879
1939
|
* @example
|
|
1880
1940
|
* niivue = new Niivue()
|
|
1881
|
-
* niivue.attachToCanvas(document.getElementById(id))
|
|
1941
|
+
* await niivue.attachToCanvas(document.getElementById(id))
|
|
1882
1942
|
*/
|
|
1883
1943
|
attachToCanvas(canvas: HTMLCanvasElement, isAntiAlias?: boolean | null): Promise<this>;
|
|
1884
1944
|
/**
|
|
@@ -1976,6 +2036,7 @@ declare class Niivue {
|
|
|
1976
2036
|
touchStartListener(e: TouchEvent): void;
|
|
1977
2037
|
touchEndListener(e: TouchEvent): void;
|
|
1978
2038
|
windowingHandler(x: number, y: number, volIdx?: number): void;
|
|
2039
|
+
mouseLeaveListener(): void;
|
|
1979
2040
|
mouseMoveListener(e: MouseEvent): void;
|
|
1980
2041
|
resetBriCon(msg?: TouchEvent | MouseEvent | null): void;
|
|
1981
2042
|
setDragStart(x: number, y: number): void;
|
|
@@ -2107,11 +2168,11 @@ declare class Niivue {
|
|
|
2107
2168
|
getRadiologicalConvention(): boolean;
|
|
2108
2169
|
/**
|
|
2109
2170
|
* Force WebGL canvas to use high resolution display, regardless of browser defaults.
|
|
2110
|
-
* @param
|
|
2171
|
+
* @param forceDevicePixelRatio - -1: block high DPI; 0= allow high DPI: >0 use specified pixel ratio
|
|
2111
2172
|
* @example niivue.setHighResolutionCapable(true);
|
|
2112
2173
|
* @see {@link https://niivue.github.io/niivue/features/sync.mesh.html | live demo usage}
|
|
2113
2174
|
*/
|
|
2114
|
-
setHighResolutionCapable(
|
|
2175
|
+
setHighResolutionCapable(forceDevicePixelRatio: number | boolean): void;
|
|
2115
2176
|
/**
|
|
2116
2177
|
* add a new volume to the canvas
|
|
2117
2178
|
* @param volume - the new volume to add to the canvas
|
|
@@ -2191,7 +2252,7 @@ declare class Niivue {
|
|
|
2191
2252
|
* @example niivue.setMeshProperty(niivue.meshes[0].id, 'fiberLength', 42)
|
|
2192
2253
|
* @see {@link https://niivue.github.io/niivue/features/meshes.html | live demo usage}
|
|
2193
2254
|
*/
|
|
2194
|
-
setMeshProperty(id: number, key: keyof NVMesh, val: number): void;
|
|
2255
|
+
setMeshProperty(id: number, key: keyof NVMesh, val: number | string | boolean): void;
|
|
2195
2256
|
/**
|
|
2196
2257
|
* returns the index of the mesh vertex that is closest to the provided coordinates
|
|
2197
2258
|
* @param id - identity of mesh to change
|
|
@@ -2280,7 +2341,7 @@ declare class Niivue {
|
|
|
2280
2341
|
* @example
|
|
2281
2342
|
* niivue = new Niivue()
|
|
2282
2343
|
* niivue.removeMesh(this.meshes[3])
|
|
2283
|
-
* @see {@link https://niivue.github.io/niivue/features/
|
|
2344
|
+
* @see {@link https://niivue.github.io/niivue/features/connectome.html | live demo usage}
|
|
2284
2345
|
*/
|
|
2285
2346
|
removeMesh(mesh: NVMesh): void;
|
|
2286
2347
|
/**
|
|
@@ -2444,12 +2505,21 @@ declare class Niivue {
|
|
|
2444
2505
|
setClipVolume(low: number[], high: number[]): void;
|
|
2445
2506
|
/**
|
|
2446
2507
|
* set proportion of volume rendering influenced by selected matcap.
|
|
2447
|
-
* @param gradientAmount - amount of matcap (0..1), default 0 (matte, surface normal does not influence color)
|
|
2508
|
+
* @param gradientAmount - amount of matcap (NaN or 0..1), default 0 (matte, surface normal does not influence color). NaN renders the gradients.
|
|
2448
2509
|
* @example
|
|
2449
2510
|
* niivue.setVolumeRenderIllumination(0.6);
|
|
2450
2511
|
* @see {@link https://niivue.github.io/niivue/features/shiny.volumes.html | live demo usage}
|
|
2512
|
+
* @see {@link https://niivue.github.io/niivue/features/gradient.order.html | live demo usage}
|
|
2451
2513
|
*/
|
|
2452
2514
|
setVolumeRenderIllumination(gradientAmount?: number): Promise<void>;
|
|
2515
|
+
/**
|
|
2516
|
+
* set volume rendering opacity influence of the gradient magnitude
|
|
2517
|
+
* @param gradientOpacity - amount of gradient magnitude influence on opacity (0..1), default 0 (no-influence)
|
|
2518
|
+
* @example
|
|
2519
|
+
* niivue.setGradientOpacity(0.6);
|
|
2520
|
+
* @see {@link https://niivue.github.io/niivue/features/gradient.opacity.html | live demo usage}
|
|
2521
|
+
*/
|
|
2522
|
+
setGradientOpacity(gradientOpacity?: number): Promise<void>;
|
|
2453
2523
|
overlayRGBA(volume: NVImage): Uint8ClampedArray;
|
|
2454
2524
|
vox2mm(XYZ: number[], mtx: mat4): vec3;
|
|
2455
2525
|
/**
|
|
@@ -2527,12 +2597,10 @@ declare class Niivue {
|
|
|
2527
2597
|
loadVolumes(volumeList: ImageFromUrlOptions[]): Promise<this>;
|
|
2528
2598
|
/**
|
|
2529
2599
|
* Add mesh and notify subscribers
|
|
2530
|
-
* @see {@link https://niivue.github.io/niivue/features/multiuser.meshes.html | live demo usage}
|
|
2531
2600
|
*/
|
|
2532
2601
|
addMeshFromUrl(meshOptions: LoadFromUrlParams): Promise<NVMesh>;
|
|
2533
2602
|
/**
|
|
2534
2603
|
* Add mesh and notify subscribers
|
|
2535
|
-
* @see {@link https://niivue.github.io/niivue/features/multiuser.meshes.html | live demo usage}
|
|
2536
2604
|
*/
|
|
2537
2605
|
addMeshesFromUrl(meshOptions: LoadFromUrlParams[]): Promise<NVMesh[]>;
|
|
2538
2606
|
/**
|
|
@@ -2591,7 +2659,7 @@ declare class Niivue {
|
|
|
2591
2659
|
* @see {@link https://niivue.github.io/niivue/features/draw2.html | live demo usage}
|
|
2592
2660
|
*/
|
|
2593
2661
|
drawGrowCut(): void;
|
|
2594
|
-
drawPt(x: number, y: number, z: number, penValue: number): void;
|
|
2662
|
+
drawPt(x: number, y: number, z: number, penValue: number, drawBitmap?: Uint8Array | null): void;
|
|
2595
2663
|
drawPenLine(ptA: number[], ptB: number[], penValue: number): void;
|
|
2596
2664
|
/**
|
|
2597
2665
|
* Performs a 1-voxel binary dilation on a connected cluster within the drawing mask using the drawFloodFillCore function.
|
|
@@ -2602,8 +2670,7 @@ declare class Niivue {
|
|
|
2602
2670
|
drawingBinaryDilationWithSeed(seedXYZ: number[], // seed voxel x,y,z
|
|
2603
2671
|
neighbors?: 6 | 18 | 26): void;
|
|
2604
2672
|
drawFloodFillCore(img: Uint8Array, seedVx: number, neighbors?: number): void;
|
|
2605
|
-
drawFloodFill(seedXYZ: number[], newColor?: number, growSelectedCluster?: number,
|
|
2606
|
-
forceMin?: number, forceMax?: number, neighbors?: number, maxDistanceMM?: number, is2D?: boolean): void;
|
|
2673
|
+
drawFloodFill(seedXYZ: number[], newColor?: number, growSelectedCluster?: number, forceMin?: number, forceMax?: number, neighbors?: number, maxDistanceMM?: number, is2D?: boolean, targetBitmap?: Uint8Array | null, isGrowClusterTool?: boolean): void;
|
|
2607
2674
|
drawPenFilled(): void;
|
|
2608
2675
|
/**
|
|
2609
2676
|
* close drawing: make sure you have saved any changes before calling this!
|
|
@@ -2620,6 +2687,7 @@ declare class Niivue {
|
|
|
2620
2687
|
refreshDrawing(isForceRedraw?: boolean, useClickToSegmentBitmap?: boolean): void;
|
|
2621
2688
|
r8Tex(texID: WebGLTexture | null, activeID: number, dims: number[], isInit?: boolean): WebGLTexture | null;
|
|
2622
2689
|
rgbaTex(texID: WebGLTexture | null, activeID: number, dims: number[], isInit?: boolean): WebGLTexture | null;
|
|
2690
|
+
rgba16Tex(texID: WebGLTexture | null, activeID: number, dims: number[], isInit?: boolean): WebGLTexture | null;
|
|
2623
2691
|
requestCORSIfNotSameOrigin(img: HTMLImageElement, url: string): void;
|
|
2624
2692
|
loadPngAsTexture(pngUrl: string, textureNum: number): Promise<WebGLTexture | null>;
|
|
2625
2693
|
loadFontTexture(fontUrl: string): Promise<WebGLTexture | null>;
|
|
@@ -2878,6 +2946,11 @@ declare class Niivue {
|
|
|
2878
2946
|
inGraphTile(x: number, y: number): boolean;
|
|
2879
2947
|
updateBitmapFromClickToSegment(): void;
|
|
2880
2948
|
sumBitmap(img: Uint8Array): number;
|
|
2949
|
+
doClickToSegment(options: {
|
|
2950
|
+
x: number;
|
|
2951
|
+
y: number;
|
|
2952
|
+
tileIndex: number;
|
|
2953
|
+
}): void;
|
|
2881
2954
|
mouseClick(x: number, y: number, posChange?: number, isDelta?: boolean): void;
|
|
2882
2955
|
drawRuler(): void;
|
|
2883
2956
|
drawRuler10cm(startXYendXY: number[], rulerColor: number[], rulerWidth?: number): void;
|