new Layer( [options])
Creates a Layer. Additionally, an object literal with Layer options
can be specified.
Signals are triggered when:
ready: the size and layout of the layer is known
update: some new tile is available, or some visualization parameters has changed
loaded: is fired when all the images needed have been downloaded
Parameters:
Name | Type | Argument | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object |
<optional> |
Properties
|
Fires:
- Layer#event:ready - Fired when layer is initialized
- Layer#event:update - Fired when redraw is needed
- Layer#event:loaded - Fired when all tiles are loaded
- Layer#event:updateSize - Fired when layer size changes
Example
```javascript // Create a basic image layer const layer = new OpenLIME.Layer({ layout: 'deepzoom', type: 'image', url: 'path/to/image.dzi', label: 'Main Image' }); // Add to viewer viewer.addLayer('main', layer); // Listen for events layer.addEvent('ready', () => { console.log('Layer initialized'); }); ```
Methods
-
addControl(name, value)
-
Adds a shader parameter control
Parameters:
Name Type Description name
string Control identifier
value
* Initial value
Throws:
-
If control already exists
- Type
- Error
-
-
addShader(id, shader)
-
Adds a shader to the layer's available shaders
Parameters:
Name Type Description id
string Unique identifier for the shader
shader
Shader Shader instance to add
Throws:
-
If shader with the same id already exists
- Type
- Error
Returns:
This layer instance for method chaining
- Type
- Layer
Example
```javascript const customShader = new OpenLIME.Shader({...}); layer.addShader('custom', customShader); layer.setShader('custom'); ```
-
-
addShaderFilter(filter)
-
Adds a filter to the current shader
Parameters:
Name Type Description filter
Object Filter specification
Throws:
-
If no shader is set
- Type
- Error
-
-
boundingBox()
-
Gets layer bounding box in scene coordinates
Returns:
Bounding box
- Type
- BoundingBox
-
clearShaderFilters(name)
-
Removes all filters from the current shader
Parameters:
Name Type Description name
Object Filter name
Throws:
-
If no shader is set
- Type
- Error
-
-
derive( [options])
-
Creates a new Layer that shares tiles with this layer but uses a different shader. This method allows efficient creation of derivative layers that share the same source textures, which is useful for applying different visual effects to the same image data without duplicating resources.
Parameters:
Name Type Argument Default Description options
Object <optional>
{} Options for the new layer
Properties
Name Type Argument Description shaders
Object <optional>
Map of shaders for the new layer
defaultShader
string <optional>
ID of shader to set as active
label
string <optional>
Label for the new layer (defaults to original label)
zindex
number <optional>
Z-index for the new layer (defaults to original + 1)
visible
boolean <optional>
Layer visibility (defaults to same as original)
transform
Transform <optional>
Custom transform (defaults to copy of original)
mipmapBias
number <optional>
Custom mipmap bias (defaults to original value)
pixelSize
number <optional>
Custom pixel size (defaults to original value)
debug
boolean <optional>
Debug mode flag (defaults to original value)
Returns:
A new layer sharing textures with this one
- Type
- Layer
Example
```javascript // Create a derived layer with edge detection shader const enhancedShader = new OpenLIME.ShaderEdgeDetection(); const derivedLayer = originalLayer.derive({ label: 'Edge Detection', shaders: { 'edge': enhancedShader }, defaultShader: 'edge', zindex: 10 }); viewer.addLayer('edges', derivedLayer); ``` or ```javascript const enhancedShader = new OpenLIME.ShaderEdgeDetection(); const derivedLayer = layer.derive({ label: 'Enhanced Image' }); derivedLayer.addShader('enhanced', enhancedShader); derivedLayer.setShader('enhanced'); viewer.addLayer('Enhanced Image', derivedLayer); ```
-
getControl(name)
-
Gets the shader parameter control corresponding to
name
Parameters:
Name Type Description name
* The name of the control. return {*} The control
-
getMode()
-
Gets the current shader visualization mode
Returns:
Current mode or null if no shader
- Type
- string | null
-
getModes()
-
Gets available shader modes
Returns:
Array of available modes
- Type
- Array.<string>
-
getPixelValues(x, y)
-
Gets pixel values for a specific pixel location Works with both single images and tiled formats
Parameters:
Name Type Description x
number X coordinate in image space (0,0 at top-left)
y
number Y coordinate in image space (0,0 at top-left)
Returns:
Array containing RGBA values for each raster at the specified pixel
- Type
- Array.<Uint8Array>
-
getState( [stateMask])
-
Gets the current layer state
Parameters:
Name Type Argument Default Description stateMask
Object <optional>
null Optional mask to filter returned state properties
Returns:
Current state object
- Type
- Object
-
interpolateControls()
-
Updates control interpolation
Returns:
Whether all interpolations are complete
- Type
- boolean
-
<async> loadTile(tile, callback)
-
Loads and processes a single image tile with optimized resource management. Implements request batching, concurrent loading, and proper error handling.
Parameters:
Name Type Description tile
Object Tile specification object
Properties
Name Type Argument Description index
string Unique tile identifier
url
string Base URL for tile resource
start
number <optional>
Start byte for partial content (for tarzoom)
end
number <optional>
End byte for partial content (for tarzoom)
offsets
Array.<Object> <optional>
Byte offsets for interleaved formats
callback
function Completion callback(error, size)
Throws:
-
If tile is already in processing queue
- Type
- Error
Returns:
- Type
- Promise.<void>
-
-
pixelSizePerMM()
-
Gets pixel size in millimeters
Returns:
Size of one pixel in mm
- Type
- number
-
removeShader(id)
-
Removes a shader from the layer's available shaders
Parameters:
Name Type Description id
string Identifier of the shader to remove
Throws:
-
If shader with the specified id doesn't exist
- Type
- Error
Returns:
This layer instance for method chaining
- Type
- Layer
Example
```javascript // Remove a shader that's no longer needed layer.removeShader('oldEffect'); ```
-
-
removeShaderFilter(name)
-
Removes a filter from the current shader
Parameters:
Name Type Description name
Object Filter name
Throws:
-
If no shader is set
- Type
- Error
-
-
scale()
-
Gets layer scale
Returns:
Current scale value
- Type
- number
-
setControl(name, value [, dt] [, easing])
-
Sets a shader control value with optional animation
Parameters:
Name Type Argument Default Description name
string Control identifier
value
* New value
dt
number <optional>
Animation duration in ms
easing
string <optional>
'linear' Easing function
Fires:
-
setMode(mode)
-
Sets shader visualization mode
Parameters:
Name Type Description mode
string Mode to set
Fires:
-
setShader(id)
-
Sets the active shader
Parameters:
Name Type Description id
string Shader identifier from registered shaders
Fires:
Throws:
-
If shader ID is not found
- Type
- Error
-
-
setState(state [, dt] [, easing])
-
Sets the layer state with optional animation
Parameters:
Name Type Argument Default Description state
Object State object with controls and mode
dt
number <optional>
Animation duration in ms
easing
string <optional>
'linear' Easing function ('linear'|'ease-out'|'ease-in-out')
-
setTransform(tx)
-
Sets the layer's transform
Parameters:
Name Type Description tx
Transform New transform
Fires:
- Layer#event:updateSize
-
setViewport(view)
-
Sets the layer's viewport
Parameters:
Name Type Description view
Object Viewport specification
Properties
Name Type Description x
number X position
y
number Y position
dx
number Width
dy
number Height
Fires:
-
setVisible(visible)
-
Sets layer visibility
Parameters:
Name Type Description visible
boolean Whether layer should be visible
Fires:
-
setZindex(zindex)
-
Sets layer rendering order
Parameters:
Name Type Description zindex
number Stack order value
Fires:
-
<static> computeLayersBBox(layers, discardHidden)
-
Computes combined bounding box of multiple layers
Parameters:
Name Type Description layers
Object.<string, Layer> Map of layers
discardHidden
boolean Whether to ignore hidden layers
Returns:
Combined bounding box
- Type
- BoundingBox
-
<static> computeLayersMinScale(layers, discardHidden)
-
Computes minimum scale across layers
Parameters:
Name Type Description layers
Object.<string, Layer> Map of layers
discardHidden
boolean Whether to ignore hidden layers
Returns:
Minimum scale value
- Type
- number