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 namestring 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 idstring Unique identifier for the shader
shaderShader 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 filterObject 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 nameObject 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 optionsObject <optional>
{} Options for the new layer
Properties
Name Type Argument Description shadersObject <optional>
Map of shaders for the new layer
defaultShaderstring <optional>
ID of shader to set as active
labelstring <optional>
Label for the new layer (defaults to original label)
zindexnumber <optional>
Z-index for the new layer (defaults to original + 1)
visibleboolean <optional>
Layer visibility (defaults to same as original)
transformTransform <optional>
Custom transform (defaults to copy of original)
mipmapBiasnumber <optional>
Custom mipmap bias (defaults to original value)
pixelSizenumber <optional>
Custom pixel size (defaults to original value)
debugboolean <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
nameParameters:
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 xnumber X coordinate in image space (0,0 at top-left)
ynumber 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 stateMaskObject <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 tileObject Tile specification object
Properties
Name Type Argument Description indexstring Unique tile identifier
urlstring Base URL for tile resource
startnumber <optional>
Start byte for partial content (for tarzoom)
endnumber <optional>
End byte for partial content (for tarzoom)
offsetsArray.<Object> <optional>
Byte offsets for interleaved formats
callbackfunction 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 idstring 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 nameObject 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 namestring Control identifier
value* New value
dtnumber <optional>
Animation duration in ms
easingstring <optional>
'linear' Easing function
Fires:
-
setMode(mode)
-
Sets shader visualization mode
Parameters:
Name Type Description modestring Mode to set
Fires:
-
setShader(id)
-
Sets the active shader
Parameters:
Name Type Description idstring 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 stateObject State object with controls and mode
dtnumber <optional>
Animation duration in ms
easingstring <optional>
'linear' Easing function ('linear'|'ease-out'|'ease-in-out')
-
setTransform(tx)
-
Sets the layer's transform
Parameters:
Name Type Description txTransform New transform
Fires:
- Layer#event:updateSize
-
setViewport(view)
-
Sets the layer's viewport
Parameters:
Name Type Description viewObject Viewport specification
Properties
Name Type Description xnumber X position
ynumber Y position
dxnumber Width
dynumber Height
Fires:
-
setVisible(visible)
-
Sets layer visibility
Parameters:
Name Type Description visibleboolean Whether layer should be visible
Fires:
-
setZindex(zindex)
-
Sets layer rendering order
Parameters:
Name Type Description zindexnumber Stack order value
Fires:
-
<static> computeLayersBBox(layers [, discardHidden])
-
Computes a bounding box encompassing all layers
Parameters:
Name Type Argument Default Description layersObject Collection of layers
discardHiddenboolean <optional>
false Whether to exclude hidden layers
Returns:
Bounding box encompassing all layers, or null if no valid layers
- Type
- BoundingBox | null
-
<static> computeLayersMinScale(layers, discardHidden)
-
Computes minimum scale across layers
Parameters:
Name Type Description layersObject.<string, Layer> Map of layers
discardHiddenboolean Whether to ignore hidden layers
Returns:
Minimum scale value
- Type
- number