@niivue/niivue
Version:
minimal webgl2 nifti image viewer
168 lines (153 loc) • 3.27 kB
text/typescript
import { vec3, vec4 } from 'gl-matrix'
import { NVLabel3D } from './nvlabel.js'
import { SLICE_TYPE } from './nvdocument.js'
export type NiftiHeader = {
littleEndian: boolean
dim_info: number
dims: number[]
pixDims: number[]
intent_p1: number
intent_p2: number
intent_p3: number
intent_code: number
datatypeCode: number
numBitsPerVoxel: number
slice_start: number
vox_offset: number
scl_slope: number
scl_inter: number
slice_end: number
slice_code: number
xyzt_units: number
cal_max: number
cal_min: number
slice_duration: number
toffset: number
description: string
aux_file: string
qform_code: number
sform_code: number
quatern_b: number
quatern_c: number
quatern_d: number
qoffset_x: number
qoffset_y: number
qoffset_z: number
affine: number[][]
intent_name: string
magic: string
}
// TODO: add volume type
// TODO: this seems to be simply NVImage
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export type Volume = Record<string, any>
export type Point = {
comments: Array<{
text: string
prefilled?: string
}>
coordinates: {
x: number
y: number
z: number
}
}
/**
* Represents the vertices of a connectome
* @ignore
*/
export type NVConnectomeNode = {
// name of node
name: string
x: number
y: number
z: number
// color value of node (actual color determined by colormap)
colorValue: number
// size value of node (actual size determined by node scale times this value in mms)
sizeValue: number
label?: NVLabel3D
}
/**
* Represents edges between connectome nodes
* @ignore
*/
export type NVConnectomeEdge = {
// index of first node
first: number
// index of second node
second: number
// color value to determine color of edge based on color map
colorValue: number
}
export type ConnectomeOptions = {
name: string
nodeColormap: string
nodeColormapNegative: string
nodeMinColor: number
nodeMaxColor: number
// scale factor for node, e.g. if 2 and a node has size 3, a 6mm ball is drawn
nodeScale: number
edgeColormap: string
edgeColormapNegative: string
edgeMin: number
edgeMax: number
edgeScale: number
legendLineThickness?: number
}
export type Connectome = ConnectomeOptions & {
nodes: NVConnectomeNode[]
edges: NVConnectomeEdge[]
}
export type LegacyNodes = {
names: string[]
prefilled: unknown[]
X: number[]
Y: number[]
Z: number[]
Color: number[]
Size: number[]
}
export type LegacyConnectome = Partial<ConnectomeOptions> & {
nodes: LegacyNodes
edges: number[]
}
export type DragReleaseParams = {
fracStart: vec3
fracEnd: vec3
voxStart: vec3
voxEnd: vec3
mmStart: vec4
mmEnd: vec4
mmLength: number
tileIdx: number
axCorSag: SLICE_TYPE
}
export type NiiVueLocationValue = {
id: string
mm: vec4
name: string
value: number
vox: vec3
}
export type NiiVueLocation = {
axCorSag: number
frac: vec3
mm: vec4
string: string
values: NiiVueLocationValue[]
vox: vec3
xy: [number, number]
}
export type SyncOpts = {
'3d'?: boolean
'2d'?: boolean
zoomPan?: boolean
cal_min?: boolean
cal_max?: boolean
gamma?: boolean
useSliceOffset?: boolean
sliceType?: boolean
crosshair?: boolean
clipPlane?: boolean
}