copper3d / Modules / Utils/segmentation/NrrdTools / NrrdTools
Class: NrrdTools
Utils/segmentation/NrrdTools.NrrdTools
Core NRRD annotation tool for medical image segmentation.
Acts as a Facade that delegates to composed modules:
- CanvasState — pure state container
- DrawToolCore — tool orchestration, event routing
- LayerChannelManager — layer/channel/sphere-type management
- SliceRenderPipeline — slice rendering, canvas flip, mask reload
- DataLoader — NRRD slice loading, legacy mask loading, NIfTI loading
No longer extends DrawToolCore — uses composition instead.
Example
// Default 3 layers: layer1, layer2, layer3
const tools = new NrrdTools(container);
// Custom layers
const tools = new NrrdTools(container, { layers: ["layer1", "layer2"] });// Default 3 layers: layer1, layer2, layer3
const tools = new NrrdTools(container);
// Custom layers
const tools = new NrrdTools(container, { layers: ["layer1", "layer2"] });Table of contents
Constructors
Properties
- _aiAssistActive
- _aiPrevVisibility
- _calculatorActive
- _pendingSliceStep
- _sliceRAFId
- container
- dataLoader
- dragOperator
- drawCore
- guiCallbacks
- guiParameterSettings
- layerChannelManager
- notifyUser
- preTimer
- sliceRenderPipeline
- state
Accessors
Methods
- addSkip
- adjustContrast
- aiApplyMask
- aiCancelLasso
- aiClearPrompts
- aiClearSegment
- aiCommitRegion
- aiCommitToLayer
- aiCommitToLayerMapped
- aiDiscard
- aiFinishLasso
- aiGetScratchSegments
- aiGetScratchSlices
- aiHasData
- aiIsLassoEditing
- aiLassoRedo
- aiLassoUndo
- aiLassoVertCount
- aiNewSegment
- aiOnLassoChange
- aiOnPrompt
- aiSetActiveSegment
- aiSetPolarity
- aiSetPromptTool
- aiSetScribbleSize
- aiSetSegmentColor
- appendLoadingbar
- clearActiveLayer
- clearChannel
- clearDictionary
- commitSeriesLoad
- commitSkipsAndContrast
- configMouseSliceWheel
- copyLayerData
- drag
- draw
- drawCalculatorSphereOnEachViews
- enableContrastDragEvents
- enterAiAssistMode
- enterKeyboardConfig
- enterSphereMode
- executeAction
- exitAiAssistMode
- exitKeyboardConfig
- exitSphereMode
- finishWindowAdjustment
- flipDisplayImageByAxis
- getActiveChannel
- getActiveLayer
- getActiveSphereType
- getBrushSize
- getChannelColor
- getChannelCssColor
- getChannelHexColor
- getChannelVisibility
- getContainer
- getCurrentImageDimension
- getCurrentSliceIndex
- getCurrentSlicesNumAndContrastNum
- getDrawingCanvas
- getIsShowContrastState
- getKeyboardSettings
- getLayerOpacity
- getLayerOpacityMap
- getLayerVisibility
- getMaskData
- getMaskRenderMode
- getMaxSliceNum
- getMode
- getNrrdToolsSettings
- getOpacity
- getPencilColor
- getSliderMeta
- getSpaceOrigin
- getSphereBrushRadius
- getVoxelSpacing
- hasLayerData
- init
- initNrrdToolsModules
- isAiAssistActive
- isAnnotationSuspended
- isCalculatorActive
- isChannelVisible
- isContrastShortcutEnabled
- isLayerVisible
- redo
- redrawDisplayCanvas
- redrawMianPreOnDisplayCanvas
- refreshSphereOverlay
- reloadMasksFromVolume
- removeSkip
- replaceLayerVolume
- reset
- resetChannelColors
- resetLayerCanvas
- resetPaintAreaUIPosition
- resizePaintArea
- setActiveChannel
- setActiveLayer
- setActiveSphereType
- setAllLayersChannelColor
- setAllSlices
- setAnnotationSuspended
- setBaseDrawDisplayCanvasesSize
- setBrushSize
- setCalculateDistanceSphere
- setChannelColor
- setChannelColors
- setChannelVisible
- setContrastIndex
- setContrastShortcutEnabled
- setDisplaySliceIndexPanel
- setEmptyCanvasSize
- setIsDrawFalse
- setKeyboardSettings
- setLayerOpacity
- setLayerVisible
- setMainAreaSize
- setMaskRenderMode
- setMasksData
- setMasksFromNIfTI
- setMode
- setOpacity
- setPencilColor
- setPencilIconUrls
- setShowInMainArea
- setSkips
- setSliceMoving
- setSliceOrientation
- setSphereBrushRadius
- setSyncsliceNum
- setWindowHigh
- setWindowLow
- setupGUI
- switchAllSlicesArrayData
- switchSlicesPreservingView
- syncGuiParameterSettings
- undo
- updateMouseWheelEvent
- updateOriginAndChangedWH
- wireDrawCoreMethods
Constructors
constructor
• new NrrdTools(container, options?)
Parameters
| Name | Type |
|---|---|
container | HTMLDivElement |
options? | Object |
options.layers? | string[] |
Defined in
src/Utils/segmentation/NrrdTools.ts:113
Properties
_aiAssistActive
• Private _aiAssistActive: boolean = false
Whether AI-assist mode is currently active.
Defined in
src/Utils/segmentation/NrrdTools.ts:1266
_aiPrevVisibility
• Private _aiPrevVisibility: null | Record<string, boolean> = null
Layer visibility snapshot taken on enter, restored on exit.
Defined in
src/Utils/segmentation/NrrdTools.ts:1268
_calculatorActive
• Private _calculatorActive: boolean = false
Whether calculator mode is active (not part of gui_states interface)
Defined in
src/Utils/segmentation/NrrdTools.ts:73
_pendingSliceStep
• Private _pendingSliceStep: number = 0
Defined in
src/Utils/segmentation/NrrdTools.ts:70
_sliceRAFId
• Private _sliceRAFId: null | number = null
Defined in
src/Utils/segmentation/NrrdTools.ts:69
container
• container: HTMLDivElement
Defined in
src/Utils/segmentation/NrrdTools.ts:58
dataLoader
• Private dataLoader: DataLoader
Data loading (extracted module)
Defined in
src/Utils/segmentation/NrrdTools.ts:82
dragOperator
• dragOperator: DragOperator
Drag operator for slice navigation.
Defined in
src/Utils/segmentation/NrrdTools.ts:65
drawCore
• Private drawCore: DrawToolCore
Core drawing tool orchestrator.
Defined in
src/Utils/segmentation/NrrdTools.ts:63
guiCallbacks
• Private guiCallbacks: null | { finishContrastAdjustment: () => void ; updateCalDistance: (val: "tumour" | "skin" | "nipple" | "ribcage") => void ; updateEraserState: () => void ; updatePencilState: () => void ; updateSphereState: () => void ; updateWindowHigh: (value: number) => void ; updateWindowLow: (value: number) => void } = null
Stored closure callbacks from gui.ts setupGui()
Defined in
src/Utils/segmentation/NrrdTools.ts:99
guiParameterSettings
• Private guiParameterSettings: undefined | IGuiParameterSettings
Defined in
src/Utils/segmentation/NrrdTools.ts:68
layerChannelManager
• Private layerChannelManager: LayerChannelManager
Layer/channel management (extracted module)
Defined in
src/Utils/segmentation/NrrdTools.ts:76
notifyUser
• notifyUser: (message: string, level: "error" | "warning" | "info") => void
Type declaration
▸ (message, level): void
How a message reaches the reader. Defaults to the console: this package ships without a UI and must not import the host application's, or it cannot be built on its own. A host that has a toast or a banner assigns this after construction.
Parameters
| Name | Type |
|---|---|
message | string |
level | "error" | "warning" | "info" |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:89
preTimer
• Private preTimer: any
Defined in
src/Utils/segmentation/NrrdTools.ts:67
sliceRenderPipeline
• Private sliceRenderPipeline: SliceRenderPipeline
Slice rendering pipeline (extracted module)
Defined in
src/Utils/segmentation/NrrdTools.ts:79
state
• Private state: CanvasState
Shared state container.
Defined in
src/Utils/segmentation/NrrdTools.ts:61
Accessors
start
• get start(): () => void
Get the DrawToolCore's start() render loop callback. This is called by DragSliceTool's requestAnimationFrame loop.
Returns
fn
▸ (): void
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1584
Methods
addSkip
▸ addSkip(index): void
Parameters
| Name | Type |
|---|---|
index | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:890
adjustContrast
▸ adjustContrast(type, delta): void
Parameters
| Name | Type |
|---|---|
type | "windowLow" | "windowHigh" |
delta | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:447
aiApplyMask
▸ aiApplyMask(result): void
Apply a backend mask result into the scratch volume (overlay repaints next frame).
Parameters
| Name | Type |
|---|---|
result | AiMaskResult |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1352
aiCancelLasso
▸ aiCancelLasso(): void
Abandon the in-progress lasso (Esc).
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1363
aiClearPrompts
▸ aiClearPrompts(): void
Clear the in-progress prompt set (e.g. slice change).
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1354
aiClearSegment
▸ aiClearSegment(label): void
Delete a Segmentation: erase all its label's voxels from scratch + committed.
Parameters
| Name | Type |
|---|---|
label | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1344
aiCommitRegion
▸ aiCommitRegion(): void
"New region": freeze current regions (they persist) + start a fresh prompt set.
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1369
aiCommitToLayer
▸ aiCommitToLayer(targetLayer?): void
Back-compat shim: merge with an IDENTITY mapping (each AI label → the same channel number) via the mapped path above. Newer callers should use aiCommitToLayerMapped with an explicit per-segmentation mapping.
Parameters
| Name | Type | Default value |
|---|---|---|
targetLayer | string | "layer1" |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1443
aiCommitToLayerMapped
▸ aiCommitToLayerMapped(targetLayer, mapping): void
Merge the AI scratch into a target layer with an explicit per-segmentation mapping, as a single undoable group (sandbox merge — non-destructive + one Ctrl+Z). mapping is { AI scratch label -> target channel(1-8) }; any label absent from the mapping (or mapped to 0) is DISCARDED (not merged). Several AI labels MAY map to the SAME channel — after merge the channel is the identity (CLAUDE.md decision M2), so the merged voxels take that channel's fixed colour.
UNION semantics (M4): an AI voxel only fills a target voxel that is currently EMPTY (0) — existing manual annotation is NEVER erased. Where two AI labels map to different channels and overlap the same voxel, the first one written wins (iteration order), an accepted edge case for a single-value-per-voxel mask. Scans all z-slices, so voxels painted from any view are caught.
Parameters
| Name | Type |
|---|---|
targetLayer | string |
mapping | Record<number, number> |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1398
aiDiscard
▸ aiDiscard(): void
Discard all AI scratch painting since enter (sandbox discard).
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1371
aiFinishLasso
▸ aiFinishLasso(): void
Close + send the in-progress lasso to the backend (needs ≥3 vertices).
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1357
aiGetScratchSegments
▸ aiGetScratchSegments(): null | { axis: "z" ; height: number ; segments: { label: number ; slices: { rle: number[] ; sliceIndex: number }[] }[] ; width: number }
Per-segmentation serialization (one binary RLE per label per z-slice) for the multi-label / per-colour 3D build.
Returns
null | { axis: "z" ; height: number ; segments: { label: number ; slices: { rle: number[] ; sliceIndex: number }[] }[] ; width: number }
Defined in
src/Utils/segmentation/NrrdTools.ts:1380
aiGetScratchSlices
▸ aiGetScratchSlices(): null | { axis: "z" ; height: number ; slices: { rle: number[] ; sliceIndex: number }[] ; width: number }
Serialize the AI scratch as per-slice RLE for persisting to ai_generated_nii_LPS.
Returns
null | { axis: "z" ; height: number ; slices: { rle: number[] ; sliceIndex: number }[] ; width: number }
Defined in
src/Utils/segmentation/NrrdTools.ts:1375
aiHasData
▸ aiHasData(): boolean
True if the scratch volume holds any predicted voxels.
Returns
boolean
Defined in
src/Utils/segmentation/NrrdTools.ts:1373
aiIsLassoEditing
▸ aiIsLassoEditing(): boolean
True while the user is placing lasso vertices.
Returns
boolean
Defined in
src/Utils/segmentation/NrrdTools.ts:1365
aiLassoRedo
▸ aiLassoRedo(): void
Redo the last undone lasso vertex change.
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1361
aiLassoUndo
▸ aiLassoUndo(): void
Undo the last lasso vertex add/delete.
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1359
aiLassoVertCount
▸ aiLassoVertCount(): number
Number of placed lasso vertices (drives the Finish button).
Returns
number
Defined in
src/Utils/segmentation/NrrdTools.ts:1367
aiNewSegment
▸ aiNewSegment(label): void
"New segmentation": freeze current regions + switch to a new label.
Parameters
| Name | Type |
|---|---|
label | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1342
aiOnLassoChange
▸ aiOnLassoChange(cb): void
Register the callback fired when the lasso vertex set changes (drives the Finish button).
Parameters
| Name | Type |
|---|---|
cb | (count: number, editing: boolean) => void |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1350
aiOnPrompt
▸ aiOnPrompt(cb): void
Register the callback invoked when a prompt gesture completes (app → backend).
Parameters
| Name | Type |
|---|---|
cb | (payload: AiPromptPayload) => void |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1348
aiSetActiveSegment
▸ aiSetActiveSegment(label): void
Select the active Segmentation by its label value (the AI paints into it).
Parameters
| Name | Type |
|---|---|
label | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1336
aiSetPolarity
▸ aiSetPolarity(label): void
Parameters
| Name | Type |
|---|---|
label | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1334
aiSetPromptTool
▸ aiSetPromptTool(tool): void
Parameters
| Name | Type |
|---|---|
tool | AiPromptTool |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1333
aiSetScribbleSize
▸ aiSetScribbleSize(size): void
Set the scribble brush radius (px).
Parameters
| Name | Type |
|---|---|
size | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1346
aiSetSegmentColor
▸ aiSetSegmentColor(label, color): void
Set a Segmentation's colour (its label's colorMap entry; 2D overlay repaints).
Parameters
| Name | Type |
|---|---|
label | number |
color | Object |
color.a | number |
color.b | number |
color.g | number |
color.r | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1338
appendLoadingbar
▸ appendLoadingbar(loadingbar): void
Parameters
| Name | Type |
|---|---|
loadingbar | HTMLDivElement |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1049
clearActiveLayer
▸ clearActiveLayer(): void
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1454
clearChannel
▸ clearChannel(layerId, channel): void
Erase one channel's mask on one layer, undoably.
The missing third of the clear family that executeAction exposes: clearActiveSliceMask takes one slice, clearActiveLayerMask takes a whole layer, and neither can take a single label. Deleting one annotation needs exactly that — its mask is one label inside a volume shared with every other annotation on the layer.
Not folded into executeAction: that signature is an action name plus an options bag, and this needs two required arguments.
Deltas go onto the engine's own undo stack, so a mistaken clear is recoverable for as long as the case stays open. That is the whole reason this lives here rather than in the app: writing zeros from outside and forcing a repaint by stepping the slice would bypass the stack, and an accidental clear would be permanent.
Only slices that actually carry the label are touched, so a small annotation in a deep volume costs a scan and a handful of callbacks rather than one per slice.
Parameters
| Name | Type | Description |
|---|---|---|
layerId | string | Layer whose mask to edit. |
channel | number | Label to erase, 1-255. |
Returns
void
Throws
If layerId names no layer. Deliberately NOT routed through getVolumeForLayer, which warns and falls back to the first layer — for a destructive call that would quietly erase a different layer's annotation.
Throws
If channel is outside [1, 255] (from MaskVolume).
Defined in
src/Utils/segmentation/NrrdTools.ts:624
clearDictionary
▸ Private clearDictionary(dic): void
Parameters
| Name | Type |
|---|---|
dic | ISkipSlicesDictType |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1574
commitSeriesLoad
▸ commitSeriesLoad(allSlices, skipEntries, contrastIndex): void
Case-load completion, fully batched: swap in the acquisition-ordered slice array, reconcile skip state, and land on the target contrast -- one resetDisplaySlicesStatus() instead of three (switchAllSlicesArrayData + setSkips + setContrastIndex used to each pay their own full refresh here; see commitSkipsAndContrast above for why only the batched form's single refresh is needed).
Parameters
| Name | Type |
|---|---|
allSlices | nrrdSliceType[] |
skipEntries | { index: number ; skip: boolean }[] |
contrastIndex | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1029
commitSkipsAndContrast
▸ commitSkipsAndContrast(skipEntries, contrastIndex): void
Batched form of setSkips + setContrastIndex for a load that ends by reconciling skip state and landing on a phase in the same turn (see useCaseManagement.handleAllImagesLoaded). Calling them separately is correct but wasteful: each pays resetDisplaySlicesStatus()'s full display/canvas/mask refresh, and with nothing reading the display in between, only the second call's paint was ever visible -- measured at two ~300ms refreshes back-to-back once setSkips had already absorbed the earlier per-phase addSkip/removeSkip loop cost.
contrastIndex is set before the single resetDisplaySlicesStatus() call, not after: the resulting displaySlices length/order depends only on skipSlicesDic, which is already written by the time it runs, so the callbacks inside that one refresh (repraintCurrentContrastSlice etc.) paint the target contrast directly. The clamp below still runs after, against the freshly rebuilt displaySlices, for parity with setContrastIndex's own bounds check.
Parameters
| Name | Type |
|---|---|
skipEntries | { index: number ; skip: boolean }[] |
contrastIndex | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1005
configMouseSliceWheel
▸ configMouseSliceWheel(): (e: WheelEvent) => void
Returns
fn
▸ (e): void
Parameters
| Name | Type |
|---|---|
e | WheelEvent |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1514
copyLayerData
▸ copyLayerData(sourceLayerId, targetLayerId): void
Copy all voxel data from one layer's MaskVolume to another.
After the copy the target layer's display is refreshed so the UI shows the updated data immediately. The target layer's color map is preserved — only the raw voxel buffer is overwritten.
Use case: when editing layer2 cascades to layer3 on the backend, call this to keep the frontend in sync without a network round-trip.
Parameters
| Name | Type | Description |
|---|---|---|
sourceLayerId | string | Layer to copy from (e.g. "layer2"). |
targetLayerId | string | Layer to copy into (e.g. "layer3"). |
Returns
void
Example
nrrdTools.copyLayerData("layer2", "layer3");nrrdTools.copyLayerData("layer2", "layer3");Defined in
src/Utils/segmentation/NrrdTools.ts:1613
drag
▸ drag(opts?): void
Parameters
| Name | Type |
|---|---|
opts? | IDragOpts |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:716
draw
▸ draw(opts?): void
Core drawing entry point.
Parameters
| Name | Type |
|---|---|
opts? | any |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:723
drawCalculatorSphereOnEachViews
▸ drawCalculatorSphereOnEachViews(axis): void
Expose drawCalculatorSphereOnEachViews for external use.
Parameters
| Name | Type |
|---|---|
axis | "x" | "y" | "z" |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1591
enableContrastDragEvents
▸ enableContrastDragEvents(callback): void
Parameters
| Name | Type |
|---|---|
callback | (step: number, towards: "horizental" | "vertical") => void |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:744
enterAiAssistMode
▸ enterAiAssistMode(): void
Enter AI-assist mode (sandbox): hides the existing layer masks so ONLY the AI overlay is shown, takes canvas ownership (left-click = prompt), and creates the scratch volume. Right-drag still pans; wheel/slider still scrub slices. The hidden masks are restored on exit (merge writes into them first if asked).
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1296
enterKeyboardConfig
▸ enterKeyboardConfig(): void
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:680
enterSphereMode
▸ enterSphereMode(): void
Enter sphere mode.
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1229
executeAction
▸ executeAction(action, opts?): void
Parameters
| Name | Type |
|---|---|
action | "undo" | "redo" | "resetZoom" | "downloadCurrentMask" | "clearActiveSliceMask" | "clearActiveLayerMask" | "gaussianSmooth" |
opts? | Object |
opts.sigma? | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:506
exitAiAssistMode
▸ exitAiAssistMode(): void
Exit AI-assist mode: drop the scratch volume, restore normal tooling AND the layer-mask visibility hidden on enter. If the caller merged first, the merged result is now part of the layer volume and reappears with the restored masks.
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1316
exitKeyboardConfig
▸ exitKeyboardConfig(): void
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:684
exitSphereMode
▸ exitSphereMode(): void
Exit sphere mode.
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1248
finishWindowAdjustment
▸ finishWindowAdjustment(): void
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:443
flipDisplayImageByAxis
▸ flipDisplayImageByAxis(): void
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1175
getActiveChannel
▸ getActiveChannel(): number
Returns
number
Defined in
src/Utils/segmentation/NrrdTools.ts:1123
getActiveLayer
▸ getActiveLayer(): string
Returns
string
Defined in
src/Utils/segmentation/NrrdTools.ts:1121
getActiveSphereType
▸ getActiveSphereType(): SphereType
Returns
Defined in
src/Utils/segmentation/NrrdTools.ts:1125
getBrushSize
▸ getBrushSize(): number
Returns
number
Defined in
src/Utils/segmentation/NrrdTools.ts:421
getChannelColor
▸ getChannelColor(layerId, channel): RGBAColor
Parameters
| Name | Type |
|---|---|
layerId | string |
channel | number |
Returns
Defined in
src/Utils/segmentation/NrrdTools.ts:1136
getChannelCssColor
▸ getChannelCssColor(layerId, channel): string
Parameters
| Name | Type |
|---|---|
layerId | string |
channel | number |
Returns
string
Defined in
src/Utils/segmentation/NrrdTools.ts:1138
getChannelHexColor
▸ getChannelHexColor(layerId, channel): string
Parameters
| Name | Type |
|---|---|
layerId | string |
channel | number |
Returns
string
Defined in
src/Utils/segmentation/NrrdTools.ts:1137
getChannelVisibility
▸ getChannelVisibility(): Record<string, Record<number, boolean>>
Returns
Record<string, Record<number, boolean>>
Defined in
src/Utils/segmentation/NrrdTools.ts:1132
getContainer
▸ getContainer(): HTMLElement
Returns
HTMLElement
Defined in
src/Utils/segmentation/NrrdTools.ts:1073
getCurrentImageDimension
▸ getCurrentImageDimension(): number[]
Returns
number[]
Defined in
src/Utils/segmentation/NrrdTools.ts:1057
getCurrentSliceIndex
▸ getCurrentSliceIndex(): number
Returns
number
Defined in
src/Utils/segmentation/NrrdTools.ts:1103
getCurrentSlicesNumAndContrastNum
▸ getCurrentSlicesNumAndContrastNum(): Object
Returns
Object
| Name | Type |
|---|---|
contrastIndex | number |
currentSliceIndex | number |
Defined in
src/Utils/segmentation/NrrdTools.ts:1096
getDrawingCanvas
▸ getDrawingCanvas(): HTMLCanvasElement
Returns
HTMLCanvasElement
Defined in
src/Utils/segmentation/NrrdTools.ts:1077
getIsShowContrastState
▸ getIsShowContrastState(): boolean
Returns
boolean
Defined in
src/Utils/segmentation/NrrdTools.ts:1109
getKeyboardSettings
▸ getKeyboardSettings(): IKeyBoardSettings
Returns
Defined in
src/Utils/segmentation/NrrdTools.ts:708
getLayerOpacity
▸ getLayerOpacity(layerId): number
Parameters
| Name | Type |
|---|---|
layerId | string |
Returns
number
Defined in
src/Utils/segmentation/NrrdTools.ts:1145
getLayerOpacityMap
▸ getLayerOpacityMap(): Record<string, number>
Returns
Record<string, number>
Defined in
src/Utils/segmentation/NrrdTools.ts:1146
getLayerVisibility
▸ getLayerVisibility(): Record<string, boolean>
Returns
Record<string, boolean>
Defined in
src/Utils/segmentation/NrrdTools.ts:1131
getMaskData
▸ getMaskData(): IMaskData
Returns
Defined in
src/Utils/segmentation/NrrdTools.ts:1069
getMaskRenderMode
▸ getMaskRenderMode(): MaskRenderMode
Returns
Defined in
src/Utils/segmentation/NrrdTools.ts:1163
getMaxSliceNum
▸ getMaxSliceNum(): number[]
Returns
number[]
Defined in
src/Utils/segmentation/NrrdTools.ts:1085
getMode
▸ getMode(): ToolMode
Returns
Defined in
src/Utils/segmentation/NrrdTools.ts:393
getNrrdToolsSettings
▸ getNrrdToolsSettings(): NrrdState
Returns
Defined in
src/Utils/segmentation/NrrdTools.ts:1081
getOpacity
▸ getOpacity(): number
Returns
number
Defined in
src/Utils/segmentation/NrrdTools.ts:411
getPencilColor
▸ getPencilColor(): string
Returns
string
Defined in
src/Utils/segmentation/NrrdTools.ts:502
getSliderMeta
▸ getSliderMeta(key): null | IGuiMeta
Parameters
| Name | Type |
|---|---|
key | string |
Returns
null | IGuiMeta
Defined in
src/Utils/segmentation/NrrdTools.ts:464
getSpaceOrigin
▸ getSpaceOrigin(): number[]
Returns
number[]
Defined in
src/Utils/segmentation/NrrdTools.ts:1065
getSphereBrushRadius
▸ getSphereBrushRadius(): number
Returns
number
Defined in
src/Utils/segmentation/NrrdTools.ts:429
getVoxelSpacing
▸ getVoxelSpacing(): number[]
Returns
number[]
Defined in
src/Utils/segmentation/NrrdTools.ts:1061
hasLayerData
▸ hasLayerData(layerId): boolean
Parameters
| Name | Type |
|---|---|
layerId | string |
Returns
boolean
Defined in
src/Utils/segmentation/NrrdTools.ts:1133
init
▸ Private init(): void
A initialise function for nrrd_tools
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:181
initNrrdToolsModules
▸ Private initNrrdToolsModules(): void
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:191
isAiAssistActive
▸ isAiAssistActive(): boolean
Returns
boolean
Defined in
src/Utils/segmentation/NrrdTools.ts:1270
isAnnotationSuspended
▸ isAnnotationSuspended(): boolean
Returns
boolean
Defined in
src/Utils/segmentation/NrrdTools.ts:1286
isCalculatorActive
▸ isCalculatorActive(): boolean
Returns
boolean
Defined in
src/Utils/segmentation/NrrdTools.ts:403
isChannelVisible
▸ isChannelVisible(layerId, channel): boolean
Parameters
| Name | Type |
|---|---|
layerId | string |
channel | number |
Returns
boolean
Defined in
src/Utils/segmentation/NrrdTools.ts:1130
isContrastShortcutEnabled
▸ isContrastShortcutEnabled(): boolean
Returns
boolean
Defined in
src/Utils/segmentation/NrrdTools.ts:692
isLayerVisible
▸ isLayerVisible(layerId): boolean
Parameters
| Name | Type |
|---|---|
layerId | string |
Returns
boolean
Defined in
src/Utils/segmentation/NrrdTools.ts:1128
redo
▸ redo(): void
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:676
redrawDisplayCanvas
▸ redrawDisplayCanvas(): void
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1177
redrawMianPreOnDisplayCanvas
▸ redrawMianPreOnDisplayCanvas(): void
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1173
refreshSphereOverlay
▸ Private refreshSphereOverlay(): void
Refresh sphere canvas from sphereMaskVolume for the current slice/axis.
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1222
reloadMasksFromVolume
▸ Private reloadMasksFromVolume(): void
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1178
removeSkip
▸ removeSkip(index): void
Parameters
| Name | Type |
|---|---|
index | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:902
replaceLayerVolume
▸ replaceLayerVolume(layerId, data, opts?): void
Replace a layer's entire voxel buffer.
This call itself does NOT fire onLayerVolumeReplaced - callers (e.g. the mask upload flow) must persist the new volume themselves. The callback fires only later, if the clinician undoes or redoes this replacement, because at that point the backend still holds the newer volume and needs to be told to fall back to the old one.
Parameters
| Name | Type | Description |
|---|---|---|
layerId | string | Layer to overwrite. |
data | Uint8Array | Voxels, exactly the layer volume's length. |
opts | Object | undoable: true records one Ctrl+Z step for the whole volume. |
opts.undoable? | boolean | - |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1653
reset
▸ reset(): void
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1468
resetChannelColors
▸ resetChannelColors(layerId?, channel?): void
Parameters
| Name | Type |
|---|---|
layerId? | string |
channel? | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1141
resetLayerCanvas
▸ resetLayerCanvas(): void
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1172
resetPaintAreaUIPosition
▸ resetPaintAreaUIPosition(l?, t?): void
Parameters
| Name | Type |
|---|---|
l? | number |
t? | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1171
resizePaintArea
▸ resizePaintArea(factor): void
Parameters
| Name | Type |
|---|---|
factor | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1174
setActiveChannel
▸ setActiveChannel(channel): void
Parameters
| Name | Type |
|---|---|
channel | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1122
setActiveLayer
▸ setActiveLayer(layerId): void
Parameters
| Name | Type |
|---|---|
layerId | string |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1117
setActiveSphereType
▸ setActiveSphereType(type): void
Parameters
| Name | Type |
|---|---|
type | SphereType |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1124
setAllLayersChannelColor
▸ setAllLayersChannelColor(channel, color): void
Parameters
| Name | Type |
|---|---|
channel | number |
color | RGBAColor |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1140
setAllSlices
▸ setAllSlices(allSlices): void
Parameters
| Name | Type |
|---|---|
allSlices | nrrdSliceType[] |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1184
setAnnotationSuspended
▸ setAnnotationSuspended(suspended): void
Suspend or resume annotation input.
While suspended the reader may still scrub slices, zoom, pan and place the crosshair, but no input can write into a mask. This is the enforcement behind "during loading you may preview, not annotate": greying the Operation panel's buttons does not achieve it, because a tool selected before the load began stays armed on the canvas -- and a stroke made then cannot even be undone, since afterLoadSlice clears the undo stack each time a slice arrives.
Parameters
| Name | Type |
|---|---|
suspended | boolean |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1282
setBaseDrawDisplayCanvasesSize
▸ setBaseDrawDisplayCanvasesSize(size): void
Set the Draw Display Canvas base size
Parameters
| Name | Type |
|---|---|
size | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:730
setBrushSize
▸ setBrushSize(size): void
Parameters
| Name | Type |
|---|---|
size | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:415
setCalculateDistanceSphere
▸ setCalculateDistanceSphere(x, y, sliceIndex, cal_position): void
Parameters
| Name | Type |
|---|---|
x | number |
y | number |
sliceIndex | number |
cal_position | "tumour" | "skin" | "nipple" | "ribcage" |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1192
setChannelColor
▸ setChannelColor(layerId, channel, color): void
Parameters
| Name | Type |
|---|---|
layerId | string |
channel | number |
color | RGBAColor |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1135
setChannelColors
▸ setChannelColors(layerId, colorMap): void
Parameters
| Name | Type |
|---|---|
layerId | string |
colorMap | Partial<ChannelColorMap> |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1139
setChannelVisible
▸ setChannelVisible(layerId, channel, visible): void
Parameters
| Name | Type |
|---|---|
layerId | string |
channel | number |
visible | boolean |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1129
setContrastIndex
▸ setContrastIndex(index): void
Move to a specific contrast without moving the slice.
index addresses displaySlices — the SELECTED subset — not the full contrast list. With three of five phases selected, valid values are 0..2. Callers that think in phase names must convert first.
Parameters
| Name | Type |
|---|---|
index | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:945
setContrastShortcutEnabled
▸ setContrastShortcutEnabled(enabled): void
Parameters
| Name | Type |
|---|---|
enabled | boolean |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:688
setDisplaySliceIndexPanel
▸ setDisplaySliceIndexPanel(panel): void
Parameters
| Name | Type |
|---|---|
panel | HTMLDivElement |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:740
setEmptyCanvasSize
▸ setEmptyCanvasSize(axis?): void
Parameters
| Name | Type |
|---|---|
axis? | "x" | "y" | "z" |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1176
setIsDrawFalse
▸ setIsDrawFalse(target): void
Parameters
| Name | Type |
|---|---|
target | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1560
setKeyboardSettings
▸ setKeyboardSettings(settings): void
Parameters
| Name | Type |
|---|---|
settings | Partial<IKeyBoardSettings> |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:696
setLayerOpacity
▸ setLayerOpacity(layerId, opacity): void
Parameters
| Name | Type |
|---|---|
layerId | string |
opacity | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1144
setLayerVisible
▸ setLayerVisible(layerId, visible): void
Parameters
| Name | Type |
|---|---|
layerId | string |
visible | boolean |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1127
setMainAreaSize
▸ setMainAreaSize(factor): void
Parameters
| Name | Type |
|---|---|
factor | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:971
setMaskRenderMode
▸ setMaskRenderMode(mode): void
Fill every mask, or stroke only its boundary — for every layer and channel at once.
A display decision, and nothing but: MaskVolume is not read differently and not written at all, so what is stored, uploaded, exported and undone is the complete mask either way.
Repaints immediately, the same way setChannelVisible does, because there is no other event that would bring the change to the screen — a clinician who switched the mode and then had to scrub a slice to see it would reasonably call that broken.
Parameters
| Name | Type |
|---|---|
mode | MaskRenderMode |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1158
setMasksData
▸ setMasksData(masksData, loadingBar?): void
Parameters
| Name | Type |
|---|---|
masksData | storeExportPaintImageType |
loadingBar? | loadingBarType |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1185
setMasksFromNIfTI
▸ setMasksFromNIfTI(layerVoxels, loadingBar?): void
Parameters
| Name | Type |
|---|---|
layerVoxels | Map<string, Uint8Array> |
loadingBar? | loadingBarType |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1186
setMode
▸ setMode(mode): void
Set the current tool mode.
Parameters
| Name | Type |
|---|---|
mode | ToolMode |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:314
setOpacity
▸ setOpacity(value): void
Parameters
| Name | Type |
|---|---|
value | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:407
setPencilColor
▸ setPencilColor(hex): void
Parameters
| Name | Type |
|---|---|
hex | string |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:498
setPencilIconUrls
▸ setPencilIconUrls(urls): void
Parameters
| Name | Type |
|---|---|
urls | string[] |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:748
setShowInMainArea
▸ Private setShowInMainArea(): void
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1570
setSkips
▸ setSkips(entries): void
Batched form of addSkip/removeSkip for reconciling many positions at once (e.g. a case load's initial phase selection, see useCaseManagement.reconcileSkips) without paying resetDisplaySlicesStatus()'s full display/canvas/mask refresh once per position.
Calling addSkip/removeSkip in a loop is correct but wasteful here: every entry but the last is immediately superseded (this always runs synchronously, with nothing reading the display in between, and the caller's own follow-up -- landOn's setContrastIndex -- overwrites contrastNum again right after). Measured at over 1 second of main-thread time for a 5-phase series once per-volume extraction stopped dominating the case-load block (narrower axes, see copperNrrdLoader) -- this was always there, just smaller than the cost it used to sit next to.
Parameters
| Name | Type |
|---|---|
entries | { index: number ; skip: boolean }[] |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:921
setSliceMoving
▸ setSliceMoving(step): void
Parameters
| Name | Type |
|---|---|
step | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:952
setSliceOrientation
▸ setSliceOrientation(axisTo): void
Switch all contrast slices' orientation
Parameters
| Name | Type |
|---|---|
axisTo | "x" | "y" | "z" |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:755
setSphereBrushRadius
▸ setSphereBrushRadius(radius): void
Parameters
| Name | Type |
|---|---|
radius | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:425
setSyncsliceNum
▸ setSyncsliceNum(): void
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1170
setWindowHigh
▸ setWindowHigh(value): void
Parameters
| Name | Type |
|---|---|
value | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:433
setWindowLow
▸ setWindowLow(value): void
Parameters
| Name | Type |
|---|---|
value | number |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:438
setupGUI
▸ setupGUI(gui): void
Set up GUI for drawing panel
Parameters
| Name | Type | Description |
|---|---|---|
gui | GUI | GUI |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:238
switchAllSlicesArrayData
▸ switchAllSlicesArrayData(allSlices): void
Parameters
| Name | Type |
|---|---|
allSlices | nrrdSliceType[] |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:983
switchSlicesPreservingView
▸ switchSlicesPreservingView(allSlices): void
Swap slice data while preserving current slice index, zoom, and pan position. Used for register/origin image switching where the view state should persist.
Parameters
| Name | Type |
|---|---|
allSlices | nrrdSliceType[] |
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1043
syncGuiParameterSettings
▸ Private syncGuiParameterSettings(): void
Sync guiParameterSettings with current volume metadata.
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:299
undo
▸ undo(): void
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:672
updateMouseWheelEvent
▸ updateMouseWheelEvent(): void
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1534
updateOriginAndChangedWH
▸ updateOriginAndChangedWH(): void
Returns
void
Defined in
src/Utils/segmentation/NrrdTools.ts:1169
wireDrawCoreMethods
▸ Private wireDrawCoreMethods(): void
Wire DrawToolCore's overridable methods to NrrdTools implementations. This replaces the old inheritance approach.
Returns
void