Class: RLEVoxelMap<T>
RLE based implementation of a voxel map. This can be used as single or multi-plane, as the underlying indexes are mapped to rows and hte rows are indexed started at 0 and continuing incrementing for all rows in the multi-plane voxel.
Type Parameters
• T
Constructors
new RLEVoxelMap()
new RLEVoxelMap<
T
>(width
,height
,depth
):RLEVoxelMap
<T
>
Parameters
• width: number
• height: number
• depth: number
= 1
Returns
RLEVoxelMap
<T
>
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:117
Properties
defaultValue
defaultValue:
T
The default value returned for get. This allows treating the voxel map more like scalar data, returning the right default value for unset values. Set to 0 by default, but any maps where 0 not in T should update this value.
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:98
depth
depth:
number
=1
The number of image planes stored (the depth of the indices), with the k index going from 0...depth.
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:80
height
height:
number
=1
The height of the images stored in the voxel map (eg the height of each plane)
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:73
jMultiple
protected
jMultiple:number
=1
A multiplier value to go from j values to overall index values.
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:84
kMultiple
protected
kMultiple:number
=1
A multiplier value to go from k values to overall index values.
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:88
normalizer
normalizer:
PlaneNormalizer
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:62
numComps
protected
numComps:number
=1
Number of components in the value
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:90
pixelDataConstructor
pixelDataConstructor:
Uint8ArrayConstructor
=Uint8Array
The constructor for creating pixel data.
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:103
rows
protected
rows:Map
<number
,RLERun
<T
>[]>
The rows for the voxel map is a map from the j index location (or for
volumes, j + k*height
) to a list of RLE runs. That is, each entry in
the rows specifies the voxel data for a given row in the image.
Then, the RLE runs themselves specify the pixel values for given rows as
a pair of start/end indices, plus the value to apply.
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:71
updateScalarData()
updateScalarData: (
scalarData
) =>void
Update the scalar data with the current RLE state
Parameters
• scalarData: PixelDataTypedArray
old scalar data to update
Returns
void
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:139
width
width:
number
=1
The width of the image planes
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:75
getScalarData()
static
getScalarData: (ArrayType
) =>Uint8ClampedArray
This is a function on the voxel manager, to get the RLE scalar data.
Parameters
• ArrayType: Uint8ClampedArrayConstructor
= Uint8ClampedArray
Returns
Uint8ClampedArray
an array of the given type for the data.
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:129
Methods
clear()
clear():
void
Clears all entries.
Returns
void
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:413
delete()
delete(
index
):void
Delete any value at the given index;
Parameters
• index: number
Returns
void
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:204
fillFrom()
fillFrom(
getter
,boundsIJK
):void
Fills an RLE from a given getter result, skipping undefined values only.
Parameters
• getter
a function taking i,j,k values (indices) and returning the new value at the given point.
• boundsIJK: BoundsIJK
a set of boundary values to flood up to and including both values.
Returns
void
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:547
findAdjacents()
findAdjacents(
item
,options
):any
[]
Finds adjacent RLE runs, in all directions. The planar value (true by default) does plane at a time fills.
Parameters
• item: [RLERun
<T
>, number
, number
, Point3[]?
]
an RLE being sepecified to find adjacent values for
• options
see floodFill
• options.diagonals: boolean
= true
• options.planar: boolean
= true
• options.singlePlane: boolean
= false
Returns
any
[]
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:584
findIndex()
protected
findIndex(row
,i
):number
Finds the index in the row that i is contained in, OR that i would be
before. That is, the rle value for the returned index in that row
has i ε [start,end)
if a direct RLE is found, or i ε [end_-1,start)
if
in the prefix. If no RLE is found with that index, then
i ε [end_final,length)
Parameters
• row: RLERun
<T
>[]
• i: number
Returns
number
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:253
floodFill()
floodFill(
i
,j
,k
,value
,options
?):number
Performs a flood fill on the RLE values at the given position, replacing the current value with the new value (which must be different) Note that this is, by default, a planar fill, which will fill each plane given the starting point, in a true flood fill fashion, but then not re-fill the given plane.
Parameters
• i: number
• j: number
• k: number
• value: T
to replace the existing value with. Must be different from the starting value.
• options?
to control the flood.
- planar means to flood the current k plane entirely, and then use the points from the current plane as seed points in the k+1 and k-1 planes, but not returning to the current plane
- singlePlane is just a single k plane, not filling any other planes
- diagonals means to use the diagonally adjacent points.
• options.diagonals?: boolean
• options.planar?: boolean
• options.singlePlane?: boolean
Returns
number
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:488
forEach()
forEach(
callback
,options
?):void
For each RLE element, call the given callback
Parameters
• callback: any
• options?
• options.rowModified?: boolean
Returns
void
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:266
forEachRow()
forEachRow(
callback
):void
For each row, call the callback with the base index and the row data
Parameters
• callback: any
Returns
void
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:279
get()
get(
index
):T
Gets the value encoded in the map at the given index, which is
an integer [i,j,k]
voxel index, equal to index=i+(j+k*height)*width
value (eg a standard ScalarData index for stack/volume single component
indices.)
Returns defaultValue if the RLE value is not found.
Parameters
• index: number
Returns
T
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:158
getPixelData()
getPixelData(
k
,pixelData
?):PixelDataTypedArray
Gets the pixel data into the provided pixel data array, or creates one according to the assigned type.
Parameters
• k: number
= 0
• pixelData?: PixelDataTypedArray
Returns
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:429
getRLE()
protected
getRLE(i
,j
,k
):RLERun
<T
>
Gets a list of RLERun values which specify the data on the row j This allows applying or modifying the run directly. See CanvasActor for an example in the RLE rendering.
Parameters
• i: number
• j: number
• k: number
= 0
Returns
RLERun
<T
>
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:181
getRun()
getRun(
j
,k
):RLERun
<T
>[]
Gets the run for the given j,k indices. This is used to allow fast access to runs for data for things like rendering entire rows of data.
Parameters
• j: number
• k: number
Returns
RLERun
<T
>[]
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:289
has()
has(
index
):boolean
Indicate if the map has the given value
Parameters
• index: number
Returns
boolean
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:194
keys()
keys():
number
[]
Gets the set of key entries - that is j values. This may include
j>=height
, where j = key % height
, and k = Math.floor(j / height)
Returns
number
[]
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:421
set()
set(
index
,value
):void
Adds to the RLE at the given position. This is unfortunately fairly complex since it is desirable to minimize the number of runs, but to still allow it to be efficient.
Parameters
• index: number
• value: T
Returns
void
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:299
toIJK()
toIJK(
index
):Point3
Parameters
• index: number
Returns
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:165
toIndex()
toIndex(
__namedParameters
):number
Parameters
• __namedParameters: Point3
Returns
number
Defined in
packages/core/src/utilities/RLEVoxelMap.ts:172
copyMap()
static
copyMap<T
>(destination
,source
):void
Copies the data in source into the map.
Type Parameters
• T
Parameters
• destination: RLEVoxelMap
<T
>
• source: RLEVoxelMap
<T
>
Returns
void