#### new VisibleLayer(width, height)

Simple container for Guacamole.Layer, allowing layers to be easily
repositioned and nested. This allows certain operations to be accelerated
through DOM manipulation, rather than raster operations.

##### Parameters:

Name | Type | Description |
---|---|---|

`width` |
Number | The width of the Layer, in pixels. The canvas element backing this Layer will be given this width. |

`height` |
Number | The height of the Layer, in pixels. The canvas element backing this Layer will be given this height. |

- Source:

### Extends

### Members

#### alpha

The opacity of the layer container, where 255 is fully opaque and 0 is
fully transparent.

- Source:

#### autosize :Boolean

Set to true if this Layer should resize itself to accomodate the
dimensions of any drawing operation, and false (the default) otherwise.
Note that setting this property takes effect immediately, and thus may
take effect on operations that were started in the past but have not
yet completed. If you wish the setting of this flag to only modify
future operations, you will need to make the setting of this flag an
operation with sync().

##### Type:

- Boolean

- Inherited From:
- Default Value:
- false

- Source:

##### Example

```
// Set autosize to true for all future operations
layer.sync(function() {
layer.autosize = true;
});
```

#### children

Set of all children of this layer, indexed by layer index. This object
will have one property per child.

- Source:

#### height :Number

The current height of this layer.

##### Type:

- Number

- Inherited From:
- Source:

#### matrix :Array.<Number>

The affine transformation applied to this layer container. Each element
corresponds to a value from the transformation matrix, with the first
three values being the first row, and the last three values being the
second row. There are six values total.

##### Type:

- Array.<Number>

- Source:

#### parent :Guacamole.Display.VisibleLayer

The parent layer container of this layer, if any.

##### Type:

- Source:

#### width :Number

The current width of this layer.

##### Type:

- Number

- Inherited From:
- Source:

#### x :Number

X coordinate of the upper-left corner of this layer container within
its parent, in pixels.

##### Type:

- Number

- Source:

#### y :Number

Y coordinate of the upper-left corner of this layer container within
its parent, in pixels.

##### Type:

- Number

- Source:

#### z :Number

Z stacking order of this layer relative to other sibling layers.

##### Type:

- Number

- Source:

### Methods

#### arc(x, y, radius, startAngle, endAngle, negative)

Add the specified arc to the current path.

##### Parameters:

Name | Type | Description |
---|---|---|

`x` |
Number | The X coordinate of the center of the circle which will contain the arc. |

`y` |
Number | The Y coordinate of the center of the circle which will contain the arc. |

`radius` |
Number | The radius of the circle. |

`startAngle` |
Number | The starting angle of the arc, in radians. |

`endAngle` |
Number | The ending angle of the arc, in radians. |

`negative` |
Boolean | Whether the arc should be drawn in order of decreasing angle. |

- Inherited From:
- Source:

#### clip()

Clip all future drawing operations by the current path. The current path
is implicitly closed. The current path can continue to be reused
for other operations (such as fillColor()) but a new path will be started
once a path drawing operation (path() or rect()) is used.

- Inherited From:
- Source:

#### close()

Closes the current path by connecting the end point with the start
point (if any) with a straight line.

- Inherited From:
- Source:

#### copy(srcLayer, srcx, srcy, srcw, srch, x, y)

Copy a rectangle of image data from one Layer to this Layer. This
operation will copy exactly the image data that will be drawn once all
operations of the source Layer that were pending at the time this
function was called are complete. This operation will not alter the
size of the source Layer even if its autosize property is set to true.

##### Parameters:

Name | Type | Description |
---|---|---|

`srcLayer` |
Guacamole.Layer | The Layer to copy image data from. |

`srcx` |
Number | The X coordinate of the upper-left corner of the rectangle within the source Layer's coordinate space to copy data from. |

`srcy` |
Number | The Y coordinate of the upper-left corner of the rectangle within the source Layer's coordinate space to copy data from. |

`srcw` |
Number | The width of the rectangle within the source Layer's coordinate space to copy data from. |

`srch` |
Number | The height of the rectangle within the source Layer's coordinate space to copy data from. |

`x` |
Number | The destination X coordinate. |

`y` |
Number | The destination Y coordinate. |

- Inherited From:
- Source:

#### curveTo(cp1x, cp1y, cp2x, cp2y, x, y)

Starts a new path at the specified point.

##### Parameters:

Name | Type | Description |
---|---|---|

`cp1x` |
Number | The X coordinate of the first control point. |

`cp1y` |
Number | The Y coordinate of the first control point. |

`cp2x` |
Number | The X coordinate of the second control point. |

`cp2y` |
Number | The Y coordinate of the second control point. |

`x` |
Number | The X coordinate of the endpoint of the curve. |

`y` |
Number | The Y coordinate of the endpoint of the curve. |

- Inherited From:
- Source:

#### dispose()

Removes this layer container entirely, such that it is no longer
contained within its parent layer, if any.

- Source:

#### distort(a, b, c, d, e, f)

Applies the given affine transform (defined with six values from the
transform's matrix).

##### Parameters:

Name | Type | Description |
---|---|---|

`a` |
Number | The first value in the affine transform's matrix. |

`b` |
Number | The second value in the affine transform's matrix. |

`c` |
Number | The third value in the affine transform's matrix. |

`d` |
Number | The fourth value in the affine transform's matrix. |

`e` |
Number | The fifth value in the affine transform's matrix. |

`f` |
Number | The sixth value in the affine transform's matrix. |

- Source:

#### drawImage(x, y, image)

Draws the specified image at the given coordinates. The image specified
must already be loaded.

##### Parameters:

Name | Type | Description |
---|---|---|

`x` |
Number | The destination X coordinate. |

`y` |
Number | The destination Y coordinate. |

`image` |
Image | The image to draw. Note that this is an Image object - not a URL. |

- Inherited From:
- Source:

#### fillColor(r, g, b, a)

Fills the current path with the specified color. The current path
is implicitly closed. The current path can continue to be reused
for other operations (such as clip()) but a new path will be started
once a path drawing operation (path() or rect()) is used.

##### Parameters:

Name | Type | Description |
---|---|---|

`r` |
Number | The red component of the color to fill. |

`g` |
Number | The green component of the color to fill. |

`b` |
Number | The blue component of the color to fill. |

`a` |
Number | The alpha component of the color to fill. |

- Inherited From:
- Source:

#### fillLayer(srcLayer)

Fills the current path with the image within the specified layer. The
image data will be tiled infinitely within the stroke. The current path
is implicitly closed. The current path can continue to be reused
for other operations (such as clip()) but a new path will be started
once a path drawing operation (path() or rect()) is used.

##### Parameters:

Name | Type | Description |
---|---|---|

`srcLayer` |
Guacamole.Layer | The layer to use as a repeating pattern within the fill. |

- Inherited From:
- Source:

#### getCanvas() → {HTMLCanvasElement}

Returns the canvas element backing this Layer. Note that the dimensions
of the canvas may not exactly match those of the Layer, as resizing a
canvas while maintaining its state is an expensive operation.

- Inherited From:
- Source:

##### Returns:

The canvas element backing this Layer.

- Type
- HTMLCanvasElement

#### getElement() → {Element}

Returns the element containing the canvas and any other elements
associated with this layer.

- Source:

##### Returns:

The element containing this layer's canvas.

- Type
- Element

#### lineTo(x, y)

Add the specified line to the current path.

##### Parameters:

Name | Type | Description |
---|---|---|

`x` |
Number | The X coordinate of the endpoint of the line to draw. |

`y` |
Number | The Y coordinate of the endpoint of the line to draw. |

- Inherited From:
- Source:

#### move(parent, x, y, z)

Moves the upper-left corner of this VisibleLayer to the given X and Y
coordinate, sets the Z stacking order, and reparents this VisibleLayer
to the given VisibleLayer.

##### Parameters:

Name | Type | Description |
---|---|---|

`parent` |
Guacamole.Display.VisibleLayer | The parent to set. |

`x` |
Number | The X coordinate to move to. |

`y` |
Number | The Y coordinate to move to. |

`z` |
Number | The Z coordinate to move to. |

- Source:

#### moveTo(x, y)

Starts a new path at the specified point.

##### Parameters:

Name | Type | Description |
---|---|---|

`x` |
Number | The X coordinate of the point to draw. |

`y` |
Number | The Y coordinate of the point to draw. |

- Inherited From:
- Source:

#### pop()

Pop layer state off stack.

- Inherited From:
- Source:

#### push()

Push current layer state onto stack.

- Inherited From:
- Source:

#### put(srcLayer, srcx, srcy, srcw, srch, x, y)

Put a rectangle of image data from one Layer to this Layer directly
without performing any alpha blending. Simply copy the data.

##### Parameters:

Name | Type | Description |
---|---|---|

`srcLayer` |
Guacamole.Layer | The Layer to copy image data from. |

`srcx` |
Number | The X coordinate of the upper-left corner of the rectangle within the source Layer's coordinate space to copy data from. |

`srcy` |
Number | The Y coordinate of the upper-left corner of the rectangle within the source Layer's coordinate space to copy data from. |

`srcw` |
Number | The width of the rectangle within the source Layer's coordinate space to copy data from. |

`srch` |
Number | The height of the rectangle within the source Layer's coordinate space to copy data from. |

`x` |
Number | The destination X coordinate. |

`y` |
Number | The destination Y coordinate. |

- Inherited From:
- Source:

#### rect(x, y, w, h)

Add the specified rectangle to the current path.

##### Parameters:

Name | Type | Description |
---|---|---|

`x` |
Number | The X coordinate of the upper-left corner of the rectangle to draw. |

`y` |
Number | The Y coordinate of the upper-left corner of the rectangle to draw. |

`w` |
Number | The width of the rectangle to draw. |

`h` |
Number | The height of the rectangle to draw. |

- Inherited From:
- Source:

#### reset()

Reset the layer, clearing the stack, the current path, and any transform
matrix.

- Inherited From:
- Source:

#### resize(newWidth, newHeight)

Changes the size of this Layer to the given width and height. Resizing
is only attempted if the new size provided is actually different from
the current size.

##### Parameters:

Name | Type | Description |
---|---|---|

`newWidth` |
Number | The new width to assign to this Layer. |

`newHeight` |
Number | The new height to assign to this Layer. |

- Overrides:
- Source:

#### setChannelMask(mask)

Sets the channel mask for future operations on this Layer.
The channel mask is a Guacamole-specific compositing operation identifier
with a single bit representing each of four channels (in order): source
image where destination transparent, source where destination opaque,
destination where source transparent, and destination where source
opaque.

##### Parameters:

Name | Type | Description |
---|---|---|

`mask` |
Number | The channel mask for future operations on this Layer. |

- Inherited From:
- Source:

#### setMiterLimit(limit)

Sets the miter limit for stroke operations using the miter join. This
limit is the maximum ratio of the size of the miter join to the stroke
width. If this ratio is exceeded, the miter will not be drawn for that
joint of the path.

##### Parameters:

Name | Type | Description |
---|---|---|

`limit` |
Number | The miter limit for stroke operations using the miter join. |

- Inherited From:
- Source:

#### setTransform(a, b, c, d, e, f)

Sets the given affine transform (defined with six values from the
transform's matrix).

##### Parameters:

Name | Type | Description |
---|---|---|

`a` |
Number | The first value in the affine transform's matrix. |

`b` |
Number | The second value in the affine transform's matrix. |

`c` |
Number | The third value in the affine transform's matrix. |

`d` |
Number | The fourth value in the affine transform's matrix. |

`e` |
Number | The fifth value in the affine transform's matrix. |

`f` |
Number | The sixth value in the affine transform's matrix. |

- Inherited From:
- Source:

#### shade(a)

Sets the opacity of this layer to the given value, where 255 is fully
opaque and 0 is fully transparent.

##### Parameters:

Name | Type | Description |
---|---|---|

`a` |
Number | The opacity to set. |

- Source:

#### strokeColor(cap, join, thickness, r, g, b, a)

Stroke the current path with the specified color. The current path
is implicitly closed. The current path can continue to be reused
for other operations (such as clip()) but a new path will be started
once a path drawing operation (path() or rect()) is used.

##### Parameters:

Name | Type | Description |
---|---|---|

`cap` |
String | The line cap style. Can be "round", "square", or "butt". |

`join` |
String | The line join style. Can be "round", "bevel", or "miter". |

`thickness` |
Number | The line thickness in pixels. |

`r` |
Number | The red component of the color to fill. |

`g` |
Number | The green component of the color to fill. |

`b` |
Number | The blue component of the color to fill. |

`a` |
Number | The alpha component of the color to fill. |

- Inherited From:
- Source:

#### strokeLayer(cap, join, thickness, srcLayer)

Stroke the current path with the image within the specified layer. The
image data will be tiled infinitely within the stroke. The current path
is implicitly closed. The current path can continue to be reused
for other operations (such as clip()) but a new path will be started
once a path drawing operation (path() or rect()) is used.

##### Parameters:

Name | Type | Description |
---|---|---|

`cap` |
String | The line cap style. Can be "round", "square", or "butt". |

`join` |
String | The line join style. Can be "round", "bevel", or "miter". |

`thickness` |
Number | The line thickness in pixels. |

`srcLayer` |
Guacamole.Layer | The layer to use as a repeating pattern within the stroke. |

- Inherited From:
- Source:

#### toCanvas() → {HTMLCanvasElement}

Returns a new canvas element containing the same image as this Layer.
Unlike getCanvas(), the canvas element returned is guaranteed to have
the exact same dimensions as the Layer.

- Inherited From:
- Source:

##### Returns:

A new canvas element containing a copy of the image content this
Layer.

- Type
- HTMLCanvasElement

#### transfer(srcLayer, srcx, srcy, srcw, srch, x, y, transferFunction)

Transfer a rectangle of image data from one Layer to this Layer using the
specified transfer function.

##### Parameters:

Name | Type | Description |
---|---|---|

`srcLayer` |
Guacamole.Layer | The Layer to copy image data from. |

`srcx` |
Number | The X coordinate of the upper-left corner of the rectangle within the source Layer's coordinate space to copy data from. |

`srcy` |
Number | The Y coordinate of the upper-left corner of the rectangle within the source Layer's coordinate space to copy data from. |

`srcw` |
Number | The width of the rectangle within the source Layer's coordinate space to copy data from. |

`srch` |
Number | The height of the rectangle within the source Layer's coordinate space to copy data from. |

`x` |
Number | The destination X coordinate. |

`y` |
Number | The destination Y coordinate. |

`transferFunction` |
function | The transfer function to use to transfer data from source to destination. |

- Inherited From:
- Source:

#### transform(a, b, c, d, e, f)

Applies the given affine transform (defined with six values from the
transform's matrix).

##### Parameters:

Name | Type | Description |
---|---|---|

`a` |
Number | The first value in the affine transform's matrix. |

`b` |
Number | The second value in the affine transform's matrix. |

`c` |
Number | The third value in the affine transform's matrix. |

`d` |
Number | The fourth value in the affine transform's matrix. |

`e` |
Number | The fifth value in the affine transform's matrix. |

`f` |
Number | The sixth value in the affine transform's matrix. |

- Inherited From:
- Source:

#### translate(x, y)

Moves the upper-left corner of this layer to the given X and Y
coordinate.

##### Parameters:

Name | Type | Description |
---|---|---|

`x` |
Number | The X coordinate to move to. |

`y` |
Number | The Y coordinate to move to. |

- Source: