libguac  0.9.1
 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 
180 int guac_protocol_send_set(guac_socket* socket, const guac_layer* layer,
181  const char* name, const char* value);
182 
193 int guac_protocol_send_select(guac_socket* socket, const char* protocol);
194 
206 int guac_protocol_send_sync(guac_socket* socket, guac_timestamp timestamp);
207 
208 /* MEDIA INSTRUCTIONS */
209 
223 int guac_protocol_send_audio(guac_socket* socket, const guac_stream* stream,
224  int channel, const char* mimetype, double duration);
225 
238 int guac_protocol_send_file(guac_socket* socket, const guac_stream* stream,
239  const char* mimetype, const char* name);
240 
253 int guac_protocol_send_pipe(guac_socket* socket, const guac_stream* stream,
254  const char* mimetype, const char* name);
255 
270 int guac_protocol_send_blob(guac_socket* socket, const guac_stream* stream,
271  void* data, int count);
272 
283 int guac_protocol_send_end(guac_socket* socket, const guac_stream* stream);
284 
298 int guac_protocol_send_video(guac_socket* socket, const guac_stream* stream,
299  const guac_layer* layer, const char* mimetype, double duration);
300 
301 /* DRAWING INSTRUCTIONS */
302 
320 int guac_protocol_send_arc(guac_socket* socket, const guac_layer* layer,
321  int x, int y, int radius, double startAngle, double endAngle,
322  int negative);
323 
340  guac_composite_mode mode, const guac_layer* layer,
341  int r, int g, int b, int a);
342 
353 int guac_protocol_send_clip(guac_socket* socket, const guac_layer* layer);
354 
365 int guac_protocol_send_close(guac_socket* socket, const guac_layer* layer);
366 
388  const guac_layer* srcl, int srcx, int srcy, int w, int h,
389  guac_composite_mode mode, const guac_layer* dstl, int dstx, int dsty);
390 
410  guac_composite_mode mode, const guac_layer* layer,
411  guac_line_cap_style cap, guac_line_join_style join, int thickness,
412  int r, int g, int b, int a);
413 
430 int guac_protocol_send_cursor(guac_socket* socket, int x, int y,
431  const guac_layer* srcl, int srcx, int srcy, int w, int h);
432 
449 int guac_protocol_send_curve(guac_socket* socket, const guac_layer* layer,
450  int cp1x, int cp1y, int cp2x, int cp2y, int x, int y);
451 
462 int guac_protocol_send_identity(guac_socket* socket, const guac_layer* layer);
463 
477  guac_composite_mode mode, const guac_layer* layer,
478  const guac_layer* srcl);
479 
492 int guac_protocol_send_line(guac_socket* socket, const guac_layer* layer,
493  int x, int y);
494 
511  guac_composite_mode mode, const guac_layer* layer,
512  guac_line_cap_style cap, guac_line_join_style join, int thickness,
513  const guac_layer* srcl);
514 
531  const guac_layer* layer, int x, int y, cairo_surface_t* surface);
532 
543 int guac_protocol_send_pop(guac_socket* socket, const guac_layer* layer);
544 
555 int guac_protocol_send_push(guac_socket* socket, const guac_layer* layer);
556 
571 int guac_protocol_send_rect(guac_socket* socket, const guac_layer* layer,
572  int x, int y, int width, int height);
573 
584 int guac_protocol_send_reset(guac_socket* socket, const guac_layer* layer);
585 
598 int guac_protocol_send_start(guac_socket* socket, const guac_layer* layer,
599  int x, int y);
600 
622  const guac_layer* srcl, int srcx, int srcy, int w, int h,
623  guac_transfer_function fn, const guac_layer* dstl, int dstx, int dsty);
624 
642  const guac_layer* layer,
643  double a, double b, double c,
644  double d, double e, double f);
645 
646 /* LAYER INSTRUCTIONS */
647 
658 int guac_protocol_send_dispose(guac_socket* socket, const guac_layer* layer);
659 
677  const guac_layer* layer,
678  double a, double b, double c,
679  double d, double e, double f);
680 
696 int guac_protocol_send_move(guac_socket* socket, const guac_layer* layer,
697  const guac_layer* parent, int x, int y, int z);
698 
710 int guac_protocol_send_shade(guac_socket* socket, const guac_layer* layer,
711  int a);
712 
725 int guac_protocol_send_size(guac_socket* socket, const guac_layer* layer,
726  int w, int h);
727 
728 /* TEXT INSTRUCTIONS */
729 
741 int guac_protocol_send_clipboard(guac_socket* socket, const guac_stream* stream,
742  const char* mimetype);
743 
751 int guac_protocol_send_name(guac_socket* socket, const char* name);
752 
760 int guac_protocol_decode_base64(char* base64);
761 
762 #endif
763