galavi / BaseLayer
Class: abstract BaseLayer
Defined in: layer/base.ts:100
Constructors
new BaseLayer()
new BaseLayer(
id?):BaseLayer
Defined in: layer/base.ts:102
Parameters
id?
string
Returns
Properties
id
readonlyid:string
Defined in: layer/base.ts:101
visible
visible:
boolean=true
Defined in: layer/base.ts:106
opacity
opacity:
number=1.0
Defined in: layer/base.ts:107
colormap
colormap:
string="gray"
Defined in: layer/base.ts:108
displayColor?
optionaldisplayColor:string
Defined in: layer/base.ts:109
blending
blending:
BlendingMode="translucent"
Defined in: layer/base.ts:110
geometryVersion
geometryVersion:
number=0
Defined in: layer/base.ts:131
Incremented when geometry changes (e.g. shape entries updated)
colormapVersion
colormapVersion:
number=0
Defined in: layer/base.ts:133
Incremented when colormap changes (triggers texture re-upload)
transformVersion
transformVersion:
number=0
Defined in: layer/base.ts:135
Incremented when model matrix changes
modelMatrix
modelMatrix:
Float32Array<ArrayBuffer>
Defined in: layer/base.ts:140
Model matrix (4×4, column-major Float32Array). Default = identity.
invModelMatrix
invModelMatrix:
Float32Array<ArrayBuffer>
Defined in: layer/base.ts:148
Inverse model matrix for ray transformations (volume raycasting)
shaderCode
protectedshaderCode:string=""
Defined in: layer/base.ts:205
WGSL source for this layer. Subclasses set this in their constructor (or as a class field) so the default getShader() returns { code: shaderCode, vertex: "vs_main", fragment: "fs_main" }. Layers with non-standard entry points (e.g. NetworkLayer's vs_node/fs_node, SurfaceLayer's per-shadingMode dispatch) override getShader() directly and may leave this as the default empty string.
levelRange?
readonlyoptionallevelRange: [number,number]
Defined in: layer/base.ts:254
Pyramid level range [min, max] for tiled layers (undefined for non-tiled).
dataVersion
dataVersion:
number=0
Defined in: layer/base.ts:262
Monotonic "data identity" version. Bumped by tiled layers when the underlying source / selection / slice index changes so the view-side LayerRenderer can drop its TilePool residency. Geometry changes use geometryVersion instead.
Accessors
isReady
Get Signature
get isReady():
boolean
Defined in: layer/base.ts:265
Whether data is ready for rendering
Returns
boolean
Methods
setColormap()
setColormap(
name):void
Defined in: layer/base.ts:112
Parameters
name
string
Returns
void
setDisplayColor()
setDisplayColor(
color?):void
Defined in: layer/base.ts:120
Set optional single-color ramp override
Parameters
color?
string
Returns
void
setTransform()
setTransform(
desc?):void
Defined in: layer/base.ts:156
Compute model matrix from a Transform. M = Affine × Translate × Rotate × Scale
Parameters
desc?
Transform
Returns
void
getGeometry()
abstractgetGeometry():Geometry
Defined in: layer/base.ts:194
Returns
Geometry
getParams()
abstractgetParams():LayerParams
Defined in: layer/base.ts:195
Returns
LayerParams
getShader()
getShader():
Shader
Defined in: layer/base.ts:208
Default shader descriptor — subclasses may override for non-standard entry points.
Returns
Shader
getStorageData()
getStorageData():
null| {data:Float32Array;label:string; }
Defined in: layer/base.ts:217
Get storage buffer data (e.g. point positions). Returns null if not applicable.
Returns
null | { data: Float32Array; label: string; }
getWorldAABB()
Defined in: layer/base.ts:227
Returns bounding box in world space. Layers without intrinsic geometry bounds (points / vectors / shapes / planes / segmentation / network / tracks / slice) return undefined so view scene-bounds logic skips them. Layers with real bounds (e.g. SurfaceLayer, VolumeLayer) override.
Returns
undefined | { min: Vec3; max: Vec3; }
requestRender()
protectedrequestRender():void
Defined in: layer/base.ts:239
Returns
void
attach()
attach(
ctx):void
Defined in: layer/base.ts:242
Attach to a render-request channel. Called by the view on layer registration.
Parameters
ctx
requestRender
() => void
Returns
void
detach()
detach():
void
Defined in: layer/base.ts:247
Detach the render-request channel. Called by the view on layer removal.
Returns
void
initAsync()
initAsync():
Promise<void>
Defined in: layer/base.ts:275
Async data initialization (e.g. fetch + parse a mesh). Called once by the view after the GPU device is ready. Default is a no-op; override in layers that need to load data before they can render. Resolves once the layer is ready; the view re-renders on resolution.
Returns
Promise<void>
getTileSpec()
getTileSpec():
null|TileSpec
Defined in: layer/base.ts:285
Tiled-image descriptor. Returns a TileSpec when this layer is a tiled image source ready for residency allocation; returns null for non-tiled layers, or for tiled layers whose source is not yet set.
GPU residency (the TilePool and its surrounding TileManager) is owned by the view-side LayerRenderer; the layer itself never touches the GPU.
Returns
null | TileSpec
planTiles()
planTiles(
_target,_effectiveScale,_options?):null|TileFramePlan<TilePlacement>
Defined in: layer/base.ts:296
Per-frame tile request. Returns the desired TilePlan (one tile per grid cell), the TileLoader to resolve each tile to bytes/region, and an optional in-bounds filter. Returns null when nothing should be loaded this frame (e.g. no source). The layer is also expected to update any internal state used by params (e.g. viewport) here.
Parameters
_target
number[]
_effectiveScale
number
_options?
unknown
Returns
null | TileFramePlan<TilePlacement>
getCurrentLevel()
getCurrentLevel():
number
Defined in: layer/base.ts:305
Get current pyramid level
Returns
number
setContrast()
setContrast(
_min,_max):void
Defined in: layer/base.ts:310
Set contrast range
Parameters
_min
number
_max
number
Returns
void
setSource()
setSource(
_source):void
Defined in: layer/base.ts:313
Update data source
Parameters
_source
Returns
void
setSelection()
setSelection(
_key,_value):void
Defined in: layer/base.ts:316
Set a non-spatial selection key (e.g. channel c, timepoint t).
Parameters
_key
string
_value
number
Returns
void
setTimepoint()
setTimepoint(
t):void
Defined in: layer/base.ts:319
Convenience: set timepoint via the t selection key.
Parameters
t
number
Returns
void
prepareFrame()
prepareFrame(
_state,_siblings):void
Defined in: layer/base.ts:336
Per-frame hook invoked by the View after applyConfig and before render. Override to update state that depends on the current camera / sibling layers (e.g. ShapesLayer recomputing entries for the current slice plane).
Default is a no-op. To request a render after async work completes, call this.requestRender() (the inherited render channel wired by attach).
Parameters
_state
_siblings
Map<string, { desc: LayerConfig; layer: BaseLayer; }>
Returns
void
applyConfig()
applyConfig(
desc,physical?):void
Defined in: layer/base.ts:362
Apply a LayerConfig to this layer's render/option state. Called each frame before rendering. Subclasses normally override one of the targeted hooks below (applyRenderConfig, applyTransformConfig, applyOptions, applyDataSource) instead of overriding this method.
Skips work when both desc and physical are reference-equal to the previous call — render-only triggers (e.g. tile uploads via Galavi.requestRender()) reuse the same state refs and need no re-apply.
G1 invariant: applyDataSource must call setSource(desc.data) exactly once when desc.data is present. Re-fetch is prevented downstream by sourceChanged() guards inside layers that fetch external resources (SurfaceLayer, ShapesLayer). Do NOT bypass this single dispatch path.
Parameters
desc
physical?
Returns
void
applyRenderConfig()
protectedapplyRenderConfig(desc):void
Defined in: layer/base.ts:373
Render-related properties: visible, opacity, blending, colormap, color, contrast.
Parameters
desc
Returns
void
applyTransformConfig()
protectedapplyTransformConfig(desc,physical?):void
Defined in: layer/base.ts:390
Model transform: explicit affine from data.transform, else physical.spatial.size.
Parameters
desc
physical?
Returns
void
applyOptions()
protectedapplyOptions(desc):void
Defined in: layer/base.ts:405
Generic options dispatch. Handles selection and timepoint (forwarded via setSelection / setTimepoint, no-ops on layers that do not implement them). Subclasses extend by calling super.applyOptions(desc) and then dispatching their type-specific keys (e.g. sliceIndex for SliceLayer, points/size/color for PointsLayer).
Parameters
desc
Returns
void
applyDataSource()
protectedapplyDataSource(desc):void
Defined in: layer/base.ts:420
Data source dispatch. G1: must call setSource(desc.data) exactly once when present. The sourceChanged() guard inside concrete setSource implementations is the only thing preventing per-frame re-fetches.
Parameters
desc
Returns
void