From 7d0dfd44257e21c6591d04143583fb706386c0c6 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Mon, 13 May 2013 17:58:19 -0700 Subject: [PATCH] #250: Implement DSTBLT. --- protocols/rdp/src/rdp_gdi.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/protocols/rdp/src/rdp_gdi.c b/protocols/rdp/src/rdp_gdi.c index 54af3bc9..8fc587e1 100644 --- a/protocols/rdp/src/rdp_gdi.c +++ b/protocols/rdp/src/rdp_gdi.c @@ -168,10 +168,34 @@ void guac_rdp_gdi_dstblt(rdpContext* context, DSTBLT_ORDER* dstblt) { break; + /* DSTINVERT */ + case 0x55: + + /* Invert */ + guac_protocol_send_transfer(client->socket, + current_layer, x, y, w, h, + GUAC_TRANSFER_BINARY_NDEST, + current_layer, x, y); + + break; + + /* NOP */ + case 0xAA: + break; + + /* Whiteness */ + case 0xFF: + guac_protocol_send_rect(client->socket, current_layer, x, y, w, h); + + guac_protocol_send_cfill(client->socket, + GUAC_COMP_OVER, current_layer, + 0xFF, 0xFF, 0xFF, 0xFF); + break; + /* Unsupported ROP3 */ default: guac_client_log_info(client, - "guac_rdp_gdi_dstblt(rop3=%i)", dstblt->bRop); + "guac_rdp_gdi_dstblt(rop3=0x%x)", dstblt->bRop); } @@ -179,6 +203,7 @@ void guac_rdp_gdi_dstblt(rdpContext* context, DSTBLT_ORDER* dstblt) { } + void guac_rdp_gdi_patblt(rdpContext* context, PATBLT_ORDER* patblt) { /*