s->p += len;
}
-void rdp_send_bitmap_update(unsigned x, unsigned y)
+void rdp_send_bitmap_update(unsigned x, unsigned y, unsigned width, unsigned height, unsigned char *data)
{
STREAM s;
- s = rdp_init_data(11*2 + 2*2*3);
+ s = rdp_init_data(11*2 + width*height*3);
out_uint16_le(s, RDP_UPDATE_BITMAP);
out_uint16_le(s, 1); // one update
out_uint16_le(s, x); // left, top, right, bottom
out_uint16_le(s, y);
- out_uint16_le(s, x+2);
- out_uint16_le(s, y+2);
- out_uint16_le(s, 2); // width, height
- out_uint16_le(s, 2);
+ out_uint16_le(s, x+width);
+ out_uint16_le(s, y+height);
+ out_uint16_le(s, width); // width, height
+ out_uint16_le(s, height);
out_uint16_le(s, 24); // bpp
out_uint16_le(s, 0); // no compression
- out_uint16_le(s, 2*2*3); // bufsize
+ out_uint16_le(s, width*height*3); // bufsize
- out_uint8(s, 255);
- out_uint8(s, 0);
- out_uint8(s, 0);
-
- out_uint8(s, 0);
- out_uint8(s, 255);
- out_uint8(s, 0);
-
- out_uint8(s, 0);
- out_uint8(s, 0);
- out_uint8(s, 255);
-
- out_uint8(s, 255);
- out_uint8(s, 255);
- out_uint8(s, 255);
+ out_uint8p(s, data, width*height*3);
s_mark_end(s);
rdp_send_data(s, RDP_DATA_PDU_UPDATE);