#define _GUAC_RDP_CLIENT_H
#include <freerdp/freerdp.h>
+#include <freerdp/codec/color.h>
#include <guacamole/client.h>
-#define RDP_DEFAULT_PORT 3389
+#include "rdp_keymap.h"
-typedef struct guac_rdp_color {
- int red;
- int green;
- int blue;
-} guac_rdp_color;
+#define RDP_DEFAULT_PORT 3389
typedef struct rdp_guac_client_data {
freerdp* rdp_inst;
- rdpSettings* settings;
+ rdpSettings* settings;
int mouse_button_mask;
- guac_rdp_color foreground;
- guac_rdp_color background;
+ /**
+ * Cairo surface which will receive all TRANSPARENT glyphs.
+ */
+ cairo_surface_t* trans_glyph_surface;
+
+ /**
+ * Cairo surface which will receive all OPAQUE glyphs.
+ */
+ cairo_surface_t* opaque_glyph_surface;
+
+ /**
+ * The current Cairo surface which will receive all drawn glyphs,
+ * depending on whether we are currently drawing transparent or
+ * opaque glyphs.
+ */
+ cairo_surface_t* glyph_surface;
+
+ /**
+ * Cairo instance for drawing to the current glyph surface.
+ */
+ cairo_t* glyph_cairo;
const guac_layer* current_surface;
+ guac_rdp_static_keymap keymap;
+
+ guac_rdp_keysym_state_map keysym_state;
+
+ char* clipboard;
+
} rdp_guac_client_data;
typedef struct rdp_freerdp_context {
rdpContext _p;
guac_client* client;
+ CLRCONV* clrconv;
} rdp_freerdp_context;