libguac  0.9.5
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
protocol.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2013 Glyptodon LLC
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a copy
5  * of this software and associated documentation files (the "Software"), to deal
6  * in the Software without restriction, including without limitation the rights
7  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8  * copies of the Software, and to permit persons to whom the Software is
9  * furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice shall be included in
12  * all copies or substantial portions of the Software.
13  *
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20  * THE SOFTWARE.
21  */
22 
23 #ifndef _GUAC_PROTOCOL_H
24 #define _GUAC_PROTOCOL_H
25 
34 #include "layer-types.h"
35 #include "protocol-types.h"
36 #include "socket-types.h"
37 #include "stream-types.h"
38 #include "timestamp-types.h"
39 
40 #include <cairo/cairo.h>
41 #include <stdarg.h>
42 
43 /* CONTROL INSTRUCTIONS */
44 
60  const char* error, guac_protocol_status status);
61 
72 int guac_protocol_send_args(guac_socket* socket, const char** args);
73 
84 int guac_protocol_send_connect(guac_socket* socket, const char** args);
85 
96 
108 int guac_protocol_send_error(guac_socket* socket, const char* error,
109  guac_protocol_status status);
110 
123 int guac_protocol_send_log(guac_socket* socket, const char* format, ...);
124 
137 int vguac_protocol_send_log(guac_socket* socket, const char* format,
138  va_list args);
139 
153 int guac_protocol_send_nest(guac_socket* socket, int index,
154  const char* data);
155 
167 
178 int guac_protocol_send_ready(guac_socket* socket, const char* id);
179 
192 int guac_protocol_send_set(guac_socket* socket, const guac_layer* layer,
193  const char* name, const char* value);
194 
205 int guac_protocol_send_select(guac_socket* socket, const char* protocol);
206 
218 int guac_protocol_send_sync(guac_socket* socket, guac_timestamp timestamp);
219 
220 /* MEDIA INSTRUCTIONS */
221 
235 int guac_protocol_send_audio(guac_socket* socket, const guac_stream* stream,
236  int channel, const char* mimetype, double duration);
237 
250 int guac_protocol_send_file(guac_socket* socket, const guac_stream* stream,
251  const char* mimetype, const char* name);
252 
265 int guac_protocol_send_pipe(guac_socket* socket, const guac_stream* stream,
266  const char* mimetype, const char* name);
267 
282 int guac_protocol_send_blob(guac_socket* socket, const guac_stream* stream,
283  void* data, int count);
284 
295 int guac_protocol_send_end(guac_socket* socket, const guac_stream* stream);
296 
310 int guac_protocol_send_video(guac_socket* socket, const guac_stream* stream,
311  const guac_layer* layer, const char* mimetype, double duration);
312 
313 /* DRAWING INSTRUCTIONS */
314 
332 int guac_protocol_send_arc(guac_socket* socket, const guac_layer* layer,
333  int x, int y, int radius, double startAngle, double endAngle,
334  int negative);
335 
352  guac_composite_mode mode, const guac_layer* layer,
353  int r, int g, int b, int a);
354 
365 int guac_protocol_send_clip(guac_socket* socket, const guac_layer* layer);
366 
377 int guac_protocol_send_close(guac_socket* socket, const guac_layer* layer);
378 
400  const guac_layer* srcl, int srcx, int srcy, int w, int h,
401  guac_composite_mode mode, const guac_layer* dstl, int dstx, int dsty);
402 
422  guac_composite_mode mode, const guac_layer* layer,
423  guac_line_cap_style cap, guac_line_join_style join, int thickness,
424  int r, int g, int b, int a);
425 
442 int guac_protocol_send_cursor(guac_socket* socket, int x, int y,
443  const guac_layer* srcl, int srcx, int srcy, int w, int h);
444 
461 int guac_protocol_send_curve(guac_socket* socket, const guac_layer* layer,
462  int cp1x, int cp1y, int cp2x, int cp2y, int x, int y);
463 
474 int guac_protocol_send_identity(guac_socket* socket, const guac_layer* layer);
475 
489  guac_composite_mode mode, const guac_layer* layer,
490  const guac_layer* srcl);
491 
504 int guac_protocol_send_line(guac_socket* socket, const guac_layer* layer,
505  int x, int y);
506 
523  guac_composite_mode mode, const guac_layer* layer,
524  guac_line_cap_style cap, guac_line_join_style join, int thickness,
525  const guac_layer* srcl);
526 
543  const guac_layer* layer, int x, int y, cairo_surface_t* surface);
544 
555 int guac_protocol_send_pop(guac_socket* socket, const guac_layer* layer);
556 
567 int guac_protocol_send_push(guac_socket* socket, const guac_layer* layer);
568 
583 int guac_protocol_send_rect(guac_socket* socket, const guac_layer* layer,
584  int x, int y, int width, int height);
585 
596 int guac_protocol_send_reset(guac_socket* socket, const guac_layer* layer);
597 
610 int guac_protocol_send_start(guac_socket* socket, const guac_layer* layer,
611  int x, int y);
612 
634  const guac_layer* srcl, int srcx, int srcy, int w, int h,
635  guac_transfer_function fn, const guac_layer* dstl, int dstx, int dsty);
636 
654  const guac_layer* layer,
655  double a, double b, double c,
656  double d, double e, double f);
657 
658 /* LAYER INSTRUCTIONS */
659 
670 int guac_protocol_send_dispose(guac_socket* socket, const guac_layer* layer);
671 
689  const guac_layer* layer,
690  double a, double b, double c,
691  double d, double e, double f);
692 
708 int guac_protocol_send_move(guac_socket* socket, const guac_layer* layer,
709  const guac_layer* parent, int x, int y, int z);
710 
722 int guac_protocol_send_shade(guac_socket* socket, const guac_layer* layer,
723  int a);
724 
737 int guac_protocol_send_size(guac_socket* socket, const guac_layer* layer,
738  int w, int h);
739 
740 /* TEXT INSTRUCTIONS */
741 
753 int guac_protocol_send_clipboard(guac_socket* socket, const guac_stream* stream,
754  const char* mimetype);
755 
763 int guac_protocol_send_name(guac_socket* socket, const char* name);
764 
772 int guac_protocol_decode_base64(char* base64);
773 
774 #endif
775 
int guac_protocol_send_set(guac_socket *socket, const guac_layer *layer, const char *name, const char *value)
Sends a set instruction over the given guac_socket connection.
int guac_protocol_send_args(guac_socket *socket, const char **args)
Sends an args instruction over the given guac_socket connection.
int guac_protocol_send_end(guac_socket *socket, const guac_stream *stream)
Sends an end instruction over the given guac_socket connection.
int guac_protocol_send_distort(guac_socket *socket, const guac_layer *layer, double a, double b, double c, double d, double e, double f)
Sends a distort instruction over the given guac_socket connection.
int guac_protocol_send_select(guac_socket *socket, const char *protocol)
Sends a select instruction over the given guac_socket connection.
int guac_protocol_send_png(guac_socket *socket, guac_composite_mode mode, const guac_layer *layer, int x, int y, cairo_surface_t *surface)
Sends a png instruction over the given guac_socket connection.
int guac_protocol_send_lstroke(guac_socket *socket, guac_composite_mode mode, const guac_layer *layer, guac_line_cap_style cap, guac_line_join_style join, int thickness, const guac_layer *srcl)
Sends an lstroke instruction over the given guac_socket connection.
int guac_protocol_send_clipboard(guac_socket *socket, const guac_stream *stream, const char *mimetype)
Sends a clipboard instruction over the given guac_socket connection.
int guac_protocol_send_ready(guac_socket *socket, const char *id)
Sends a ready instruction over the given guac_socket connection.
Type definitions related to the guac_socket object.
int guac_protocol_send_cstroke(guac_socket *socket, guac_composite_mode mode, const guac_layer *layer, guac_line_cap_style cap, guac_line_join_style join, int thickness, int r, int g, int b, int a)
Sends a cstroke instruction over the given guac_socket connection.
int guac_protocol_send_reset(guac_socket *socket, const guac_layer *layer)
Sends a reset instruction over the given guac_socket connection.
int guac_protocol_decode_base64(char *base64)
Decodes the given base64-encoded string in-place.
Type definitions related to Guacamole protocol streams.
The core I/O object of Guacamole.
Definition: socket.h:41
int guac_protocol_send_nop(guac_socket *socket)
Sends a nop instruction (null-operation) over the given guac_socket connection.
int guac_protocol_send_name(guac_socket *socket, const char *name)
Sends a name instruction over the given guac_socket connection.
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 transfer instruction over the given guac_socket connection.
int guac_protocol_send_blob(guac_socket *socket, const guac_stream *stream, void *data, int count)
Writes a block of data to the currently in-progress blob which was already created.
guac_line_join_style
Supported line join styles.
Definition: protocol-types.h:241
int guac_protocol_send_disconnect(guac_socket *socket)
Sends a disconnect instruction over the given guac_socket connection.
int guac_protocol_send_arc(guac_socket *socket, const guac_layer *layer, int x, int y, int radius, double startAngle, double endAngle, int negative)
Sends an arc instruction over the given guac_socket connection.
int vguac_protocol_send_log(guac_socket *socket, const char *format, va_list args)
Sends a log instruction over the given guac_socket connection.
int guac_protocol_send_move(guac_socket *socket, const guac_layer *layer, const guac_layer *parent, int x, int y, int z)
Sends a move instruction over the given guac_socket connection.
int guac_protocol_send_rect(guac_socket *socket, const guac_layer *layer, int x, int y, int width, int height)
Sends a rect instruction over the given guac_socket connection.
int guac_protocol_send_cursor(guac_socket *socket, int x, int y, const guac_layer *srcl, int srcx, int srcy, int w, int h)
Sends a cursor instruction over the given guac_socket connection.
int guac_protocol_send_log(guac_socket *socket, const char *format,...)
Sends a log instruction over the given guac_socket connection.
int guac_protocol_send_identity(guac_socket *socket, const guac_layer *layer)
Sends an identity instruction over the given guac_socket connection.
int guac_protocol_send_curve(guac_socket *socket, const guac_layer *layer, int cp1x, int cp1y, int cp2x, int cp2y, int x, int y)
Sends a curve instruction over the given guac_socket connection.
int guac_protocol_send_close(guac_socket *socket, const guac_layer *layer)
Sends a close instruction over the given guac_socket connection.
int guac_protocol_send_audio(guac_socket *socket, const guac_stream *stream, int channel, const char *mimetype, double duration)
Sends an audio instruction over the given guac_socket connection.
guac_transfer_function
Default transfer functions.
Definition: protocol-types.h:187
int guac_protocol_send_dispose(guac_socket *socket, const guac_layer *layer)
Sends a dispose instruction over the given guac_socket connection.
int guac_protocol_send_start(guac_socket *socket, const guac_layer *layer, int x, int y)
Sends a start instruction over the given guac_socket connection.
int guac_protocol_send_sync(guac_socket *socket, guac_timestamp timestamp)
Sends a sync instruction over the given guac_socket connection.
int guac_protocol_send_lfill(guac_socket *socket, guac_composite_mode mode, const guac_layer *layer, const guac_layer *srcl)
Sends an lfill instruction over the given guac_socket connection.
guac_line_cap_style
Supported line cap styles.
Definition: protocol-types.h:232
int guac_protocol_send_nest(guac_socket *socket, int index, const char *data)
Sends a nest instruction over the given guac_socket connection.
int guac_protocol_send_line(guac_socket *socket, const guac_layer *layer, int x, int y)
Sends a line instruction over the given guac_socket connection.
Type definitions related to the Guacamole protocol.
int guac_protocol_send_copy(guac_socket *socket, const guac_layer *srcl, int srcx, int srcy, int w, int h, guac_composite_mode mode, const guac_layer *dstl, int dstx, int dsty)
Sends a copy instruction over the given guac_socket connection.
int guac_protocol_send_push(guac_socket *socket, const guac_layer *layer)
Sends a push instruction over the given guac_socket connection.
int guac_protocol_send_video(guac_socket *socket, const guac_stream *stream, const guac_layer *layer, const char *mimetype, double duration)
Sends a video instruction over the given guac_socket connection.
int64_t guac_timestamp
An arbitrary timestamp denoting a relative time value in milliseconds.
Definition: timestamp-types.h:37
int guac_protocol_send_shade(guac_socket *socket, const guac_layer *layer, int a)
Sends a shade instruction over the given guac_socket connection.
int guac_protocol_send_clip(guac_socket *socket, const guac_layer *layer)
Sends a clip instruction over the given guac_socket connection.
int guac_protocol_send_file(guac_socket *socket, const guac_stream *stream, const char *mimetype, const char *name)
Sends a file instruction over the given guac_socket connection.
int guac_protocol_send_pop(guac_socket *socket, const guac_layer *layer)
Sends a pop instruction over the given guac_socket connection.
int guac_protocol_send_transform(guac_socket *socket, const guac_layer *layer, double a, double b, double c, double d, double e, double f)
Sends a transform instruction over the given guac_socket connection.
int guac_protocol_send_size(guac_socket *socket, const guac_layer *layer, int w, int h)
Sends a size instruction over the given guac_socket connection.
Type definitions related to Guacamole layers.
guac_composite_mode
Composite modes used by Guacamole draw instructions.
Definition: protocol-types.h:138
int guac_protocol_send_pipe(guac_socket *socket, const guac_stream *stream, const char *mimetype, const char *name)
Sends a pipe instruction over the given guac_socket connection.
guac_protocol_status
Set of all possible status codes returned by protocol operations.
Definition: protocol-types.h:47
Represents a single layer within the Guacamole protocol.
Definition: layer.h:37
Represents a single stream within the Guacamole protocol.
Definition: stream.h:35
int guac_protocol_send_connect(guac_socket *socket, const char **args)
Sends a connect instruction over the given guac_socket connection.
int guac_protocol_send_error(guac_socket *socket, const char *error, guac_protocol_status status)
Sends an error instruction over the given guac_socket connection.
int guac_protocol_send_ack(guac_socket *socket, guac_stream *stream, const char *error, guac_protocol_status status)
Sends an ack instruction over the given guac_socket connection.
int guac_protocol_send_cfill(guac_socket *socket, guac_composite_mode mode, const guac_layer *layer, int r, int g, int b, int a)
Sends a cfill instruction over the given guac_socket connection.
Type definitions related to Guacamole protocol timestamps.