guacamole-client-typedefs
Version:
Work in progress typescript definitions based on http://guacamole.apache.org/doc/guacamole-common-js/
428 lines (382 loc) • 17.5 kB
TypeScript
declare module 'guacamole-client' {
export namespace Layer {
type LineCap = 'round' | 'square' | 'butt';
type LineJoin = 'round' | 'bevel' | 'mitter';
/**
* Represents a single pixel of image data. All components have a minimum value
* of 0 and a maximum value of 255.
* @param r The red component of this pixel.
* @param g The green component of this pixel.
* @param b The blue component of this pixel.
* @param a The alpha component of this pixel.
*/
export class Pixel {
constructor(r: number, g: number, b: number, a: number);
/**
* The red component of this pixel, where 0 is the minimum value,
* and 255 is the maximum.
*/
red: number;
/**
* The green component of this pixel, where 0 is the minimum value,
* and 255 is the maximum.
*/
green: number;
/**
* The blue component of this pixel, where 0 is the minimum value,
* and 255 is the maximum.
*/
blue: number;
/**
* The alpha component of this pixel, where 0 is the minimum value,
* and 255 is the maximum.
*/
alpha: number;
}
}
/**
* Abstract ordered drawing surface. Each Layer contains a canvas element and
* provides simple drawing instructions for drawing to that canvas element,
* however unlike the canvas element itself, drawing operations on a Layer are
* guaranteed to run in order, even if such an operation must wait for an image
* to load before completing.
* @param width The width of the Layer, in pixels. The canvas element
* backing this Layer will be given this width.
* @param height The height of the Layer, in pixels. The canvas element
* backing this Layer will be given this height.
*/
export class Layer {
/**
* Channel mask for the composite operation "rout".
*/
static readonly ROUT = 0x2;
/**
* Channel mask for the composite operation "atop".
*/
static readonly ATOP = 0x6;
/**
* Channel mask for the composite operation "xor".
*/
static readonly XOR = 0xA;
/**
* Channel mask for the composite operation "rover".
*/
static readonly ROVER = 0xB;
/**
* Channel mask for the composite operation "over".
*/
static readonly OVER = 0xE;
/**
* Channel mask for the composite operation "plus".
*/
static readonly PLUS = 0xF;
/**
* Channel mask for the composite operation "rin".
* Beware that WebKit-based browsers may leave the contents of the destionation
* layer where the source layer is transparent, despite the definition of this
* operation.
*/
static readonly RIN = 0x1;
/**
* Channel mask for the composite operation "in".
* Beware that WebKit-based browsers may leave the contents of the destionation
* layer where the source layer is transparent, despite the definition of this
* operation.
*/
static readonly IN = 0x4;
/**
* Channel mask for the composite operation "out".
* Beware that WebKit-based browsers may leave the contents of the destionation
* layer where the source layer is transparent, despite the definition of this
* operation.
*/
static readonly OUT = 0x8;
/**
* Channel mask for the composite operation "ratop".
* Beware that WebKit-based browsers may leave the contents of the destionation
* layer where the source layer is transparent, despite the definition of this
* operation.
*/
static readonly RATOP = 0x9;
/**
* Channel mask for the composite operation "src".
* Beware that WebKit-based browsers may leave the contents of the destionation
* layer where the source layer is transparent, despite the definition of this
* operation.
*/
static readonly SRC = 0xC;
constructor(width: number, height: number);
/**
* 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().
* @example
* // Set autosize to true for all future operations
* layer.sync(function() {
* layer.autosize = true;
* });
* @default false
*/
autoresize: boolean;
/**
* The current width of this layer.
*/
width: number;
/**
* The current height of this layer.
*/
height: number;
/**
* 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.
* @returns The canvas element backing this Layer.
*/
getCanvas(): 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.
* @returns A new canvas element containing a copy of the image content this Layer.
*/
toCanvas(): HTMLCanvasElement;
/**
* 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.
* @param newWidth The new width to assign to this Layer.
* @param newHeight The new height to assign to this Layer.
*/
resize(newWidth: number, newHeight: number): void;
/**
* Draws the specified image at the given coordinates. The image specified
* must already be loaded.
* @param x The destination X coordinate.
* @param y The destination Y coordinate.
* @param image The image to draw. Note that this is an Image object - not a URL.
*/
drawImage(x: number, y: number, image: HTMLImageElement): void;
/**
* Transfer a rectangle of image data from one Layer to this Layer using the
* specified transfer function.
* @param {Guacamole.Layer} srcLayer The Layer to copy image data from.
* @param {Number} srcx The X coordinate of the upper-left corner of the
* rectangle within the source Layer's coordinate
* space to copy data from.
* @param {Number} srcy The Y coordinate of the upper-left corner of the
* rectangle within the source Layer's coordinate
* space to copy data from.
* @param {Number} srcw The width of the rectangle within the source Layer's
* coordinate space to copy data from.
* @param {Number} srch The height of the rectangle within the source
* Layer's coordinate space to copy data from.
* @param {Number} x The destination X coordinate.
* @param {Number} y The destination Y coordinate.
* @param {Function} transferFunction The transfer function to use to
* transfer data from source to destination.
*/
transfer(srcLayer: Layer, srcx: number, srcy: number, srcw: number, srch: number, x: number, y: number, transferFunction: Function): void;
/**
* Put a rectangle of image data from one Layer to this Layer directly
* without performing any alpha blending. Simply copy the data.
* @param srcLayer The Layer to copy image data from.
* @param srcx The X coordinate of the upper-left corner of the
* rectangle within the source Layer's coordinate space to copy data from.
* @param srcy The Y coordinate of the upper-left corner of the
* rectangle within the source Layer's coordinate space to copy data from.
* @param srcw The width of the rectangle within the source Layer's
* coordinate space to copy data from.
* @param srch The height of the rectangle within the source
* coordinate space to copy data from.
* @param x The destination X coordinate.
* @param y The destination Y coordinate.
*/
put(srcLayer: Layer, srcx: number, srcy: number, srcw: number, srch: number, x: number, y: number): void;
/**
* 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.
* @param srcLayer The Layer to copy image data from.
* @param srcx The X coordinate of the upper-left corner of the
* rectangle within the source Layer's coordinate space to copy data from.
* @param srcy The Y coordinate of the upper-left corner of the
* rectangle within the source Layer's coordinate space to copy data from.
* @param srcw The width of the rectangle within the source Layer's
* coordinate space to copy data from.
* @param srch The height of the rectangle within the source
* Layer's coordinate space to copy data from.
* @param x The destination X coordinate.
* @param y The destination Y coordinate.
*/
copy(srcLayer: Layer, srcx: number, srcy: number, srcw: number, srch: number, x: number, y: number): void;
distort(a: number, b: number, c: number, d: number, e: number, f: number): void;
/**
* Starts a new path at the specified point.
* @param cp1x The X coordinate of the first control point.
* @param cp1y The Y coordinate of the first control point.
* @param cp2x The X coordinate of the second control point.
* @param cp2y The Y coordinate of the second control point.
* @param x The X coordinate of the endpoint of the curve.
* @param y The Y coordinate of the endpoint of the curve.
*/
curveTo: CanvasRenderingContext2D['bezierCurveTo'];
/**
* Add the specified rectangle to the current path.
* @param x The X coordinate of the upper-left corner of the rectangle to draw.
* @param y The Y coordinate of the upper-left corner of the rectangle to draw.
* @param w The width of the rectangle to draw.
* @param h The height of the rectangle to draw.
*/
rect: CanvasRenderingContext2D['rect'];
/**
* Starts a new path at the specified point.
* @param x The X coordinate of the point to draw.
* @param y The Y coordinate of the point to draw.
*/
moveTo: CanvasRenderingContext2D['moveTo'];
/**
* Add the specified line to the current path.
* @param x The X coordinate of the endpoint of the line to draw.
* @param y The Y coordinate of the endpoint of the line to draw.
*/
lineTo: CanvasRenderingContext2D['lineTo'];
/**
* Add the specified arc to the current path.
* @param {Number} x The X coordinate of the center of the circle which
* will contain the arc.
* @param {Number} y The Y coordinate of the center of the circle which
* will contain the arc.
* @param {Number} radius The radius of the circle.
* @param {Number} startAngle The starting angle of the arc, in radians.
* @param {Number} endAngle The ending angle of the arc, in radians.
* @param {Boolean} negative Whether the arc should be drawn in order of
* decreasing angle.
*/
arc: CanvasRenderingContext2D['arc'];
/**
* Closes the current path by connecting the end point with the start
* point (if any) with a straight line.
*/
close: CanvasRenderingContext2D['closePath'];
/**
* 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.
*/
clip: CanvasRenderingContext2D['clip'];
/**
* 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.
* @param cap The line cap style. Can be "round", "square", or "butt".
* @param join The line join style. Can be "round", "bevel", miter".
* @param thickness The line thickness in pixels.
* @param r The red component of the color to fill.
* @param g The green component of the color to fill.
* @param b The blue component of the color to fill.
* @param a The alpha component of the color to fill.
*/
strokeColor(
cap: Layer.LineCap,
join: Layer.LineJoin,
thickness: number,
r: number,
g: number,
b: number,
a: number
): void;
/**
* 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.
* @param r The red component of the color to fill.
* @param g The green component of the color to fill.
* @param b The blue component of the color to fill.
* @param a The alpha component of the color to fill.
*/
fillColor(r: number, g: number, b: number, a: number): void;
/**
* 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.
* @param cap The line cap style. Can be "round", "square", or "butt".
* @param join The line join style. Can be "round", "bevel", or "miter".
* @param thickness The line thickness in pixels.
* @param r The red component of the color to fill.
* @param g The green component of the color to fill.
* @param b The blue component of the color to fill.
* @param a The alpha component of the color to fill.
*/
strokeLayer(cap: Layer.LineCap, join: Layer.LineJoin, thickness: number, layer: Layer): void;
/**
* Fills the current path with the image within the specified layer. The
* 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.
* @param srcLayer The layer to use as a repeating pattern within the fill.
*/
fillLayer(srcLayer: Layer): void;
/**
* Push current layer state onto stack.
*/
push(): void;
/**
* Pop layer state off stack.
*/
pop(): void;
/**
* Reset the layer, clearing the stack, the current path, and any transform
* matrix.
*/
reset(): void;
/**
* Sets the given affine transform (defined with six values from the
* transform's matrix).
* @param a The first value in the affine transform's matrix.
* @param b The second value in the affine transform's matrix.
* @param c The third value in the affine transform's matrix.
* @param d The fourth value in the affine transform's matrix.
* @param e The fifth value in the affine transform's matrix.
* @param f The sixth value in the affine transform's matrix.
*/
setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void;
/**
* Applies the given affine transform (defined with six values from the
* transform's matrix).
* @param a The first value in the affine transform's matrix.
* @param b The second value in the affine transform's matrix.
* @param c The third value in the affine transform's matrix.
* @param d The fourth value in the affine transform's matrix.
* @param e The fifth value in the affine transform's matrix.
* @param f The sixth value in the affine transform's matrix.
*/
transform(a: number, b: number, c: number, d: number, e: number, f: number): void;
/**
* 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.
* @param {Number} mask The channel mask for future operations on this Layer.
*/
setChannelMask(mask: number): void;
/**
* 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.
* @param limit The miter limit for stroke operations using the miter join.
*/
setMiterLimit(limit: number): void;
}
}