Skip to content

Class: ImageLayer ​

Defined in: src/display/ImageLayer.ts:35

ImageLayer handles retrieving 2D slices from a VolStack and drawing them in a single container, each with a GPU transform so they align visually to the reference slice.

Implements ​

Constructors ​

Constructor ​

ts
new ImageLayer(volStack, alignmentOptions?): ImageLayer;

Defined in: src/display/ImageLayer.ts:60

Parameters ​

volStack ​

VolStack

alignmentOptions? ​

AlignmentManagerOptions

Returns ​

ImageLayer

Properties ​

neuroSpace ​

ts
neuroSpace: NeuroSpace;

Defined in: src/display/ImageLayer.ts:36

The NeuroSpace associated with the layer. Ensures spatial coherence with other layers in the viewer.

Implementation of ​

SliceLayer.neuroSpace


opacity ​

ts
opacity: number = 1;

Defined in: src/display/ImageLayer.ts:58

Methods ​

initialize() ​

ts
initialize(): void;

Defined in: src/display/ImageLayer.ts:117

Initializes the layer, loading any necessary data or resources. This method is called once when the layer is added to the SliceViewer. It can perform asynchronous operations if needed.

Returns ​

void

Implementation of ​

SliceLayer.initialize


addVolLayer() ​

ts
addVolLayer(volLayer): void;

Defined in: src/display/ImageLayer.ts:121

Parameters ​

volLayer ​

VolLayer

Returns ​

void


removeVolLayer() ​

ts
removeVolLayer(volLayer): void;

Defined in: src/display/ImageLayer.ts:127

Parameters ​

volLayer ​

VolLayer

Returns ​

void


createSprite() ​

ts
createSprite(
   imageData, 
   cacheKey, 
   scaleMode?): Sprite;

Defined in: src/display/ImageLayer.ts:138

Creates a PIXI.Sprite from ImageData by drawing onto a Canvas, then returning a Sprite. Uses TextureMemoryConsumer for intelligent caching and memory management. Uses sprite pool to reduce garbage collection pressure.

Parameters ​

imageData ​

ImageData

cacheKey ​

string

scaleMode? ​

"nearest" | "linear"

Returns ​

Sprite


renderSlice() ​

ts
renderSlice(
   sliceIndex, 
   coord, 
   viewAxes, 
   parentContainer): Container<ContainerChild> | null;

Defined in: src/display/ImageLayer.ts:205

The crucial method: for each VolLayer, we get the slice, create a sprite, and position/scale it in image-content space (the reference slice's grid).

Layer 0 is the reference: it fixes the slice index, image-content space, crosshair and navigation. A layer on the reference grid shares its transform. With the 'world' alignment strategy, a layer on any other grid whose axes are parallel to the reference's (e.g. a 2 mm statistical map over a 1 mm template) is sliced on its own grid at the plane nearest the reference plane and drawn at its true world position; it is omitted where the reference plane lies outside its slab. Other layers, and every layer under the remaining strategies, use the heuristic alignment strategies.

Parameters ​

sliceIndex ​

number

coord ​

number[]

viewAxes ​

AxisSet3D

parentContainer ​

Container

Returns ​

Container<ContainerChild> | null

Implementation of ​

SliceLayer.renderSlice


releaseContainer() ​

ts
releaseContainer(container): void;

Defined in: src/display/ImageLayer.ts:412

Releases a container and its sprites back to the pool

Parameters ​

container ​

Container

The container to release

Returns ​

void


setPosition() ​

ts
setPosition(coord): void;

Defined in: src/display/ImageLayer.ts:440

Updates the layer's state based on the new volume coordinates. This method is called whenever the SliceViewer's position changes, ensuring that the layer remains in sync with the current view.

Parameters ​

coord ​

number[]

The new volume coordinates [x, y, z].

Returns ​

void

Implementation of ​

SliceLayer.setPosition


onPointerMove() ​

ts
onPointerMove(e): boolean;

Defined in: src/display/ImageLayer.ts:444

Handles pointer (mouse or touch) move events. Layers can implement this method to provide interactive behaviors, such as displaying tooltips or highlighting regions.

Parameters ​

e ​

SlicePointerEvent

Returns ​

boolean

A boolean indicating whether the event has been fully handled. If true, the event propagation stops, preventing other layers from handling it.

Implementation of ​

SliceLayer.onPointerMove


onPointerDown() ​

ts
onPointerDown(e): boolean;

Defined in: src/display/ImageLayer.ts:447

Handles pointer (mouse or touch) down events. Layers can implement this method to provide interactive behaviors, such as selecting regions or initiating drag operations.

Parameters ​

e ​

SlicePointerEvent

Returns ​

boolean

A boolean indicating whether the event has been fully handled. If true, the event propagation stops, preventing other layers from handling it.

Implementation of ​

SliceLayer.onPointerDown


dispose() ​

ts
dispose(): void;

Defined in: src/display/ImageLayer.ts:450

Disposes of the layer, cleaning up any resources or event listeners. This method is called when the layer is removed from the SliceViewer or when the SliceViewer itself is disposed.

Returns ​

void

Implementation of ​

SliceLayer.dispose


getVolStack() ​

ts
getVolStack(): VolStack;

Defined in: src/display/ImageLayer.ts:476

Returns ​

VolStack


getLayer() ​

ts
getLayer(index): VolLayer;

Defined in: src/display/ImageLayer.ts:479

Parameters ​

index ​

number

Returns ​

VolLayer


getLayerIds() ​

ts
getLayerIds(): string[];

Defined in: src/display/ImageLayer.ts:482

Returns ​

string[]


updateLayer() ​

ts
updateLayer(layerId, params): void;

Defined in: src/display/ImageLayer.ts:486

Parameters ​

layerId ​

string

params ​

LayerUpdateParams

Returns ​

void


replaceVolume() ​

ts
replaceVolume(
   layerId, 
   newVolume, 
   opts?): void;

Defined in: src/display/ImageLayer.ts:509

Replace the underlying volume data for a specific layer without changing its id. Useful for fast overlay updates (e.g., sigma changes) without add/remove churn.

Parameters ​

layerId ​

string

newVolume ​

NeuroVol

opts? ​
range? ​

[number, number] | null

threshold? ​

[number, number]

alpha? ​

number

colormap? ​

ColorMap

Returns ​

void


update() ​

ts
update(params): void;

Defined in: src/display/ImageLayer.ts:528

Optional method to handle layer-specific updates.

Parameters ​

params ​

ViewerUpdateParams

Returns ​

void

Implementation of ​

SliceLayer.update


getValidSliceRange() ​

ts
getValidSliceRange(axis): [number, number];

Defined in: src/display/ImageLayer.ts:542

Get valid slice range for a given axis

Parameters ​

axis ​

AxisSet3D

Returns ​

[number, number]


validateSliceAccess() ​

ts
validateSliceAccess(sliceIndex, axis): SliceAccessResult;

Defined in: src/display/ImageLayer.ts:549

Validate slice access and get adjusted indices

Parameters ​

sliceIndex ​

number

axis ​

AxisSet3D

Returns ​

SliceAccessResult


getSafeSliceIndices() ​

ts
getSafeSliceIndices(axis, count?): number[];

Defined in: src/display/ImageLayer.ts:556

Get safe slice indices for testing

Parameters ​

axis ​

AxisSet3D

count? ​

number = 3

Returns ​

number[]


setSliceAccessConfig() ​

ts
setSliceAccessConfig(config): void;

Defined in: src/display/ImageLayer.ts:563

Set slice access configuration

Parameters ​

config ​

Partial<SliceAccessConfig>

Returns ​

void


getSliceAccessConfig() ​

ts
getSliceAccessConfig(): SliceAccessConfig;

Defined in: src/display/ImageLayer.ts:571

Get current slice access configuration

Returns ​

SliceAccessConfig


getPoolStats() ​

ts
getPoolStats(): object;

Defined in: src/display/ImageLayer.ts:584

Gets pool statistics for monitoring performance

Returns ​

object

spritePool ​
ts
spritePool: object;
spritePool.poolSize ​
ts
poolSize: number;
spritePool.activeCount ​
ts
activeCount: number;
spritePool.createCount ​
ts
createCount: number;
spritePool.reuseCount ​
ts
reuseCount: number;
spritePool.reuseRatio ​
ts
reuseRatio: number;
containerPool ​
ts
containerPool: object;
containerPool.poolSize ​
ts
poolSize: number;
containerPool.activeCount ​
ts
activeCount: number;
containerPool.createCount ​
ts
createCount: number;
containerPool.reuseCount ​
ts
reuseCount: number;
containerPool.reuseRatio ​
ts
reuseRatio: number;

setAlignmentOptions() ​

ts
setAlignmentOptions(options): void;

Defined in: src/display/ImageLayer.ts:597

Set alignment options

Parameters ​

options ​

Partial<AlignmentManagerOptions>

Returns ​

void


getAlignmentOptions() ​

ts
getAlignmentOptions(): AlignmentManagerOptions;

Defined in: src/display/ImageLayer.ts:605

Get current alignment options

Returns ​

AlignmentManagerOptions


setAlignmentStrategy() ​

ts
setAlignmentStrategy(strategy): void;

Defined in: src/display/ImageLayer.ts:612

Set alignment strategy

Parameters ​

strategy ​

AlignmentStrategyType

Returns ​

void


getAlignmentCacheStats() ​

ts
getAlignmentCacheStats(): object;

Defined in: src/display/ImageLayer.ts:620

Get alignment cache statistics

Returns ​

object

size ​
ts
size: number;
enabled ​
ts
enabled: boolean;

clearAlignmentCache() ​

ts
clearAlignmentCache(): void;

Defined in: src/display/ImageLayer.ts:627

Clear alignment cache

Returns ​

void


getTextureMemoryStats() ​

ts
getTextureMemoryStats(): object;

Defined in: src/display/ImageLayer.ts:634

Get texture memory statistics

Returns ​

object

count ​
ts
count: number;
size ​
ts
size: number;
maxSize ​
ts
maxSize: number;
usage ​
ts
usage: number;

setTextureCacheSize() ​

ts
setTextureCacheSize(bytes): void;

Defined in: src/display/ImageLayer.ts:646

Set maximum texture cache size

Parameters ​

bytes ​

number

Returns ​

void


getMemoryStats() ​

ts
getMemoryStats(): object;

Defined in: src/display/ImageLayer.ts:653

Get combined memory statistics

Returns ​

object

textureMemory ​
ts
textureMemory: object;
textureMemory.count ​
ts
count: number;
textureMemory.size ​
ts
size: number;
textureMemory.maxSize ​
ts
maxSize: number;
textureMemory.usage ​
ts
usage: number;
pools ​
ts
pools: object;
pools.spritePool ​
ts
spritePool: object;
pools.spritePool.poolSize ​
ts
poolSize: number;
pools.spritePool.activeCount ​
ts
activeCount: number;
pools.spritePool.createCount ​
ts
createCount: number;
pools.spritePool.reuseCount ​
ts
reuseCount: number;
pools.spritePool.reuseRatio ​
ts
reuseRatio: number;
pools.containerPool ​
ts
containerPool: object;
pools.containerPool.poolSize ​
ts
poolSize: number;
pools.containerPool.activeCount ​
ts
activeCount: number;
pools.containerPool.createCount ​
ts
createCount: number;
pools.containerPool.reuseCount ​
ts
reuseCount: number;
pools.containerPool.reuseRatio ​
ts
reuseRatio: number;
alignment ​
ts
alignment: object;
alignment.size ​
ts
size: number;
alignment.enabled ​
ts
enabled: boolean;

Released under the MIT License.