Merge branch 'unstable' into drawing-instructions
This commit is contained in:
commit
f6659c5264
@ -48,3 +48,5 @@ libguac_la_SOURCES = src/client.c src/socket.c src/protocol.c src/client-handler
|
|||||||
|
|
||||||
libguac_la_LDFLAGS = -version-info 3:0:0
|
libguac_la_LDFLAGS = -version-info 3:0:0
|
||||||
|
|
||||||
|
EXTRA_DIST = LICENSE doc/Doxyfile
|
||||||
|
|
||||||
|
@ -90,10 +90,68 @@ typedef enum guac_composite_mode {
|
|||||||
GUAC_COMP_IN = 0x4, /* 0100 */
|
GUAC_COMP_IN = 0x4, /* 0100 */
|
||||||
GUAC_COMP_OUT = 0x8, /* 1000 */
|
GUAC_COMP_OUT = 0x8, /* 1000 */
|
||||||
GUAC_COMP_RATOP = 0x9, /* 1001 */
|
GUAC_COMP_RATOP = 0x9, /* 1001 */
|
||||||
GUAC_COMP_SRC = 0xC /* 1100 */
|
GUAC_COMP_SRC = 0xC, /* 1100 */
|
||||||
|
|
||||||
|
/* Bitwise composite operations (binary) */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A: S' & D'
|
||||||
|
* B: S' & D
|
||||||
|
* C: S & D'
|
||||||
|
* D: S & D
|
||||||
|
*
|
||||||
|
* 0 = Active, 1 = Inactive
|
||||||
|
*/
|
||||||
|
|
||||||
} guac_composite_mode;
|
} guac_composite_mode;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default transfer functions. There is no current facility in the
|
||||||
|
* Guacamole protocol to define custom transfer functions.
|
||||||
|
*/
|
||||||
|
typedef enum guac_transfer_function {
|
||||||
|
|
||||||
|
/* Constant functions */ /* ABCD */
|
||||||
|
GUAC_TRANSFER_BINARY_BLACK = 0x0, /* 0000 */
|
||||||
|
GUAC_TRANSFER_BINARY_WHITE = 0xF, /* 1111 */
|
||||||
|
|
||||||
|
/* Copy functions */
|
||||||
|
GUAC_TRANSFER_BINARY_SRC = 0x3, /* 0011 */
|
||||||
|
GUAC_TRANSFER_BINARY_DEST = 0x5, /* 0101 */
|
||||||
|
GUAC_TRANSFER_BINARY_NSRC = 0xC, /* 1100 */
|
||||||
|
GUAC_TRANSFER_BINARY_NDEST = 0xA, /* 1010 */
|
||||||
|
|
||||||
|
/* AND / NAND */
|
||||||
|
GUAC_TRANSFER_BINARY_AND = 0x1, /* 0001 */
|
||||||
|
GUAC_TRANSFER_BINARY_NAND = 0xE, /* 1110 */
|
||||||
|
|
||||||
|
/* OR / NOR */
|
||||||
|
GUAC_TRANSFER_BINARY_OR = 0x7, /* 0111 */
|
||||||
|
GUAC_TRANSFER_BINARY_NOR = 0x8, /* 1000 */
|
||||||
|
|
||||||
|
/* XOR / XNOR */
|
||||||
|
GUAC_TRANSFER_BINARY_XOR = 0x6, /* 0110 */
|
||||||
|
GUAC_TRANSFER_BINARY_XNOR = 0x9, /* 1001 */
|
||||||
|
|
||||||
|
/* AND / NAND with inverted source */
|
||||||
|
GUAC_TRANSFER_BINARY_NSRC_AND = 0x4, /* 0100 */
|
||||||
|
GUAC_TRANSFER_BINARY_NSRC_NAND = 0xB, /* 1011 */
|
||||||
|
|
||||||
|
/* OR / NOR with inverted source */
|
||||||
|
GUAC_TRANSFER_BINARY_NSRC_OR = 0xD, /* 1101 */
|
||||||
|
GUAC_TRANSFER_BINARY_NSRC_NOR = 0x2, /* 0010 */
|
||||||
|
|
||||||
|
/* AND / NAND with inverted destination */
|
||||||
|
GUAC_TRANSFER_BINARY_NDEST_AND = 0x2, /* 0010 */
|
||||||
|
GUAC_TRANSFER_BINARY_NDEST_NAND = 0xD, /* 1101 */
|
||||||
|
|
||||||
|
/* OR / NOR with inverted destination */
|
||||||
|
GUAC_TRANSFER_BINARY_NDEST_OR = 0xB, /* 1011 */
|
||||||
|
GUAC_TRANSFER_BINARY_NDEST_NOR = 0x4 /* 0100 */
|
||||||
|
|
||||||
|
} guac_transfer_function;
|
||||||
|
|
||||||
typedef struct guac_layer guac_layer;
|
typedef struct guac_layer guac_layer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -276,6 +334,30 @@ int guac_protocol_send_copy(guac_socket* socket,
|
|||||||
const guac_layer* srcl, int srcx, int srcy, int w, int h,
|
const guac_layer* srcl, int srcx, int srcy, int w, int h,
|
||||||
guac_composite_mode mode, const guac_layer* dstl, int dstx, int dsty);
|
guac_composite_mode mode, const guac_layer* dstl, int dstx, int dsty);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sends a transfer instruction over the given guac_socket connection.
|
||||||
|
*
|
||||||
|
* If an error occurs sending the instruction, a non-zero value is
|
||||||
|
* returned, and guac_error is set appropriately.
|
||||||
|
*
|
||||||
|
* @param socket The guac_socket connection to use.
|
||||||
|
* @param srcl The source layer.
|
||||||
|
* @param srcx The X coordinate of the source rectangle.
|
||||||
|
* @param srcy The Y coordinate of the source rectangle.
|
||||||
|
* @param w The width of the source rectangle.
|
||||||
|
* @param h The height of the source rectangle.
|
||||||
|
* @param fn The transfer function to use.
|
||||||
|
* @param dstl The destination layer.
|
||||||
|
* @param dstx The X coordinate of the destination, where the source rectangle
|
||||||
|
* should be copied.
|
||||||
|
* @param dsty The Y coordinate of the destination, where the source rectangle
|
||||||
|
* should be copied.
|
||||||
|
* @return Zero on success, non-zero on error.
|
||||||
|
*/
|
||||||
|
int guac_protocol_send_transfer(guac_socket* socket,
|
||||||
|
const guac_layer* srcl, int srcx, int srcy, int w, int h,
|
||||||
|
guac_transfer_function fn, const guac_layer* dstl, int dstx, int dsty);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends a rect instruction over the given guac_socket connection.
|
* Sends a rect instruction over the given guac_socket connection.
|
||||||
*
|
*
|
||||||
|
@ -204,6 +204,33 @@ int guac_protocol_send_copy(guac_socket* socket,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int guac_protocol_send_transfer(guac_socket* socket,
|
||||||
|
const guac_layer* srcl, int srcx, int srcy, int w, int h,
|
||||||
|
guac_transfer_function fn, const guac_layer* dstl, int dstx, int dsty) {
|
||||||
|
|
||||||
|
return
|
||||||
|
guac_socket_write_string(socket, "8.transfer,")
|
||||||
|
|| __guac_socket_write_length_int(socket, srcl->index)
|
||||||
|
|| guac_socket_write_string(socket, ",")
|
||||||
|
|| __guac_socket_write_length_int(socket, srcx)
|
||||||
|
|| guac_socket_write_string(socket, ",")
|
||||||
|
|| __guac_socket_write_length_int(socket, srcy)
|
||||||
|
|| guac_socket_write_string(socket, ",")
|
||||||
|
|| __guac_socket_write_length_int(socket, w)
|
||||||
|
|| guac_socket_write_string(socket, ",")
|
||||||
|
|| __guac_socket_write_length_int(socket, h)
|
||||||
|
|| guac_socket_write_string(socket, ",")
|
||||||
|
|| __guac_socket_write_length_int(socket, fn)
|
||||||
|
|| guac_socket_write_string(socket, ",")
|
||||||
|
|| __guac_socket_write_length_int(socket, dstl->index)
|
||||||
|
|| guac_socket_write_string(socket, ",")
|
||||||
|
|| __guac_socket_write_length_int(socket, dstx)
|
||||||
|
|| guac_socket_write_string(socket, ",")
|
||||||
|
|| __guac_socket_write_length_int(socket, dsty)
|
||||||
|
|| guac_socket_write_string(socket, ";");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
int guac_protocol_send_rect(guac_socket* socket,
|
int guac_protocol_send_rect(guac_socket* socket,
|
||||||
guac_composite_mode mode, const guac_layer* layer,
|
guac_composite_mode mode, const guac_layer* layer,
|
||||||
int x, int y, int width, int height,
|
int x, int y, int width, int height,
|
||||||
|
Loading…
Reference in New Issue
Block a user