Using embedded bitmap rather than raster-drawn cursor.
[libguac-client-rdp.git] / src / rdp_pointer.c
index b8b1f11..be2d5ea 100644 (file)
@@ -42,6 +42,7 @@
 
 #include "client.h"
 #include "rdp_pointer.h"
+#include "default_pointer.h"
 
 void guac_rdp_pointer_new(rdpContext* context, rdpPointer* pointer) {
 
@@ -106,26 +107,14 @@ void guac_rdp_pointer_set_default(guac_client* client) {
 
     /* Draw to buffer */
     guac_layer* cursor = guac_client_alloc_buffer(client);
-    guac_protocol_send_size(socket, cursor, 110, 160);
-
-    /* Draw cursor */
-    guac_protocol_send_start(socket, cursor,  0,  0);
-    guac_protocol_send_line(socket, cursor,  10, 10);
-    guac_protocol_send_line(socket, cursor,   6, 10);
-    guac_protocol_send_line(socket, cursor,   8, 15);
-    guac_protocol_send_line(socket, cursor,   5, 15);
-    guac_protocol_send_line(socket, cursor,   3, 11);
-    guac_protocol_send_line(socket, cursor,   0, 14);
-    guac_protocol_send_close(socket, cursor);
-
-    /* Fill */
-    guac_protocol_send_cfill(socket, GUAC_COMP_OVER, cursor,
-            0x00, 0x00, 0x00, 0xFF);
-
-    /* Stroke */
-    guac_protocol_send_cstroke(socket, GUAC_COMP_OVER, cursor,
-            GUAC_LINE_CAP_SQUARE, GUAC_LINE_JOIN_BEVEL, 1,
-            0xFF, 0xFF, 0xFF, 0xFF);
+
+    cairo_surface_t* graphic = cairo_image_surface_create_for_data(
+            guac_rdp_default_pointer,
+            CAIRO_FORMAT_ARGB32,
+            11, 16, 11*4);
+
+    guac_protocol_send_png(socket, GUAC_COMP_OVER, cursor, 0, 0, graphic);
+    cairo_surface_destroy(graphic);
 
     /* Set cursor */
     guac_protocol_send_cursor(socket, 0, 0, cursor, 0, 0, 11, 16);