libguac  0.9.2
 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