23 |
|
|
24 |
extern uint8 *g_next_packet; |
extern uint8 *g_next_packet; |
25 |
static RDP_ORDER_STATE g_order_state; |
static RDP_ORDER_STATE g_order_state; |
26 |
extern BOOL g_use_rdp5; |
extern RD_BOOL g_use_rdp5; |
27 |
|
|
28 |
/* Read field indicating which parameters are present */ |
/* Read field indicating which parameters are present */ |
29 |
static void |
static void |
55 |
|
|
56 |
/* Read a co-ordinate (16-bit, or 8-bit delta) */ |
/* Read a co-ordinate (16-bit, or 8-bit delta) */ |
57 |
static void |
static void |
58 |
rdp_in_coord(STREAM s, sint16 * coord, BOOL delta) |
rdp_in_coord(STREAM s, sint16 * coord, RD_BOOL delta) |
59 |
{ |
{ |
60 |
sint8 change; |
sint8 change; |
61 |
|
|
102 |
} |
} |
103 |
|
|
104 |
/* Parse bounds information */ |
/* Parse bounds information */ |
105 |
static BOOL |
static RD_BOOL |
106 |
rdp_parse_bounds(STREAM s, BOUNDS * bounds) |
rdp_parse_bounds(STREAM s, BOUNDS * bounds) |
107 |
{ |
{ |
108 |
uint8 present; |
uint8 present; |
133 |
} |
} |
134 |
|
|
135 |
/* Parse a pen */ |
/* Parse a pen */ |
136 |
static BOOL |
static RD_BOOL |
137 |
rdp_parse_pen(STREAM s, PEN * pen, uint32 present) |
rdp_parse_pen(STREAM s, PEN * pen, uint32 present) |
138 |
{ |
{ |
139 |
if (present & 1) |
if (present & 1) |
149 |
} |
} |
150 |
|
|
151 |
/* Parse a brush */ |
/* Parse a brush */ |
152 |
static BOOL |
static RD_BOOL |
153 |
rdp_parse_brush(STREAM s, BRUSH * brush, uint32 present) |
rdp_parse_brush(STREAM s, BRUSH * brush, uint32 present) |
154 |
{ |
{ |
155 |
if (present & 1) |
if (present & 1) |
172 |
|
|
173 |
/* Process a destination blt order */ |
/* Process a destination blt order */ |
174 |
static void |
static void |
175 |
process_destblt(STREAM s, DESTBLT_ORDER * os, uint32 present, BOOL delta) |
process_destblt(STREAM s, DESTBLT_ORDER * os, uint32 present, RD_BOOL delta) |
176 |
{ |
{ |
177 |
if (present & 0x01) |
if (present & 0x01) |
178 |
rdp_in_coord(s, &os->x, delta); |
rdp_in_coord(s, &os->x, delta); |
197 |
|
|
198 |
/* Process a pattern blt order */ |
/* Process a pattern blt order */ |
199 |
static void |
static void |
200 |
process_patblt(STREAM s, PATBLT_ORDER * os, uint32 present, BOOL delta) |
process_patblt(STREAM s, PATBLT_ORDER * os, uint32 present, RD_BOOL delta) |
201 |
{ |
{ |
202 |
if (present & 0x0001) |
if (present & 0x0001) |
203 |
rdp_in_coord(s, &os->x, delta); |
rdp_in_coord(s, &os->x, delta); |
231 |
|
|
232 |
/* Process a screen blt order */ |
/* Process a screen blt order */ |
233 |
static void |
static void |
234 |
process_screenblt(STREAM s, SCREENBLT_ORDER * os, uint32 present, BOOL delta) |
process_screenblt(STREAM s, SCREENBLT_ORDER * os, uint32 present, RD_BOOL delta) |
235 |
{ |
{ |
236 |
if (present & 0x0001) |
if (present & 0x0001) |
237 |
rdp_in_coord(s, &os->x, delta); |
rdp_in_coord(s, &os->x, delta); |
262 |
|
|
263 |
/* Process a line order */ |
/* Process a line order */ |
264 |
static void |
static void |
265 |
process_line(STREAM s, LINE_ORDER * os, uint32 present, BOOL delta) |
process_line(STREAM s, LINE_ORDER * os, uint32 present, RD_BOOL delta) |
266 |
{ |
{ |
267 |
if (present & 0x0001) |
if (present & 0x0001) |
268 |
in_uint16_le(s, os->mixmode); |
in_uint16_le(s, os->mixmode); |
301 |
|
|
302 |
/* Process an opaque rectangle order */ |
/* Process an opaque rectangle order */ |
303 |
static void |
static void |
304 |
process_rect(STREAM s, RECT_ORDER * os, uint32 present, BOOL delta) |
process_rect(STREAM s, RECT_ORDER * os, uint32 present, RD_BOOL delta) |
305 |
{ |
{ |
306 |
uint32 i; |
uint32 i; |
307 |
if (present & 0x01) |
if (present & 0x01) |
341 |
|
|
342 |
/* Process a desktop save order */ |
/* Process a desktop save order */ |
343 |
static void |
static void |
344 |
process_desksave(STREAM s, DESKSAVE_ORDER * os, uint32 present, BOOL delta) |
process_desksave(STREAM s, DESKSAVE_ORDER * os, uint32 present, RD_BOOL delta) |
345 |
{ |
{ |
346 |
int width, height; |
int width, height; |
347 |
|
|
377 |
|
|
378 |
/* Process a memory blt order */ |
/* Process a memory blt order */ |
379 |
static void |
static void |
380 |
process_memblt(STREAM s, MEMBLT_ORDER * os, uint32 present, BOOL delta) |
process_memblt(STREAM s, MEMBLT_ORDER * os, uint32 present, RD_BOOL delta) |
381 |
{ |
{ |
382 |
RD_HBITMAP bitmap; |
RD_HBITMAP bitmap; |
383 |
|
|
423 |
|
|
424 |
/* Process a 3-way blt order */ |
/* Process a 3-way blt order */ |
425 |
static void |
static void |
426 |
process_triblt(STREAM s, TRIBLT_ORDER * os, uint32 present, BOOL delta) |
process_triblt(STREAM s, TRIBLT_ORDER * os, uint32 present, RD_BOOL delta) |
427 |
{ |
{ |
428 |
RD_HBITMAP bitmap; |
RD_HBITMAP bitmap; |
429 |
|
|
482 |
|
|
483 |
/* Process a polygon order */ |
/* Process a polygon order */ |
484 |
static void |
static void |
485 |
process_polygon(STREAM s, POLYGON_ORDER * os, uint32 present, BOOL delta) |
process_polygon(STREAM s, POLYGON_ORDER * os, uint32 present, RD_BOOL delta) |
486 |
{ |
{ |
487 |
int index, data, next; |
int index, data, next; |
488 |
uint8 flags = 0; |
uint8 flags = 0; |
561 |
|
|
562 |
/* Process a polygon2 order */ |
/* Process a polygon2 order */ |
563 |
static void |
static void |
564 |
process_polygon2(STREAM s, POLYGON2_ORDER * os, uint32 present, BOOL delta) |
process_polygon2(STREAM s, POLYGON2_ORDER * os, uint32 present, RD_BOOL delta) |
565 |
{ |
{ |
566 |
int index, data, next; |
int index, data, next; |
567 |
uint8 flags = 0; |
uint8 flags = 0; |
646 |
|
|
647 |
/* Process a polyline order */ |
/* Process a polyline order */ |
648 |
static void |
static void |
649 |
process_polyline(STREAM s, POLYLINE_ORDER * os, uint32 present, BOOL delta) |
process_polyline(STREAM s, POLYLINE_ORDER * os, uint32 present, RD_BOOL delta) |
650 |
{ |
{ |
651 |
int index, next, data; |
int index, next, data; |
652 |
uint8 flags = 0; |
uint8 flags = 0; |
724 |
|
|
725 |
/* Process an ellipse order */ |
/* Process an ellipse order */ |
726 |
static void |
static void |
727 |
process_ellipse(STREAM s, ELLIPSE_ORDER * os, uint32 present, BOOL delta) |
process_ellipse(STREAM s, ELLIPSE_ORDER * os, uint32 present, RD_BOOL delta) |
728 |
{ |
{ |
729 |
if (present & 0x01) |
if (present & 0x01) |
730 |
rdp_in_coord(s, &os->left, delta); |
rdp_in_coord(s, &os->left, delta); |
756 |
|
|
757 |
/* Process an ellipse2 order */ |
/* Process an ellipse2 order */ |
758 |
static void |
static void |
759 |
process_ellipse2(STREAM s, ELLIPSE2_ORDER * os, uint32 present, BOOL delta) |
process_ellipse2(STREAM s, ELLIPSE2_ORDER * os, uint32 present, RD_BOOL delta) |
760 |
{ |
{ |
761 |
if (present & 0x0001) |
if (present & 0x0001) |
762 |
rdp_in_coord(s, &os->left, delta); |
rdp_in_coord(s, &os->left, delta); |
794 |
|
|
795 |
/* Process a text order */ |
/* Process a text order */ |
796 |
static void |
static void |
797 |
process_text2(STREAM s, TEXT2_ORDER * os, uint32 present, BOOL delta) |
process_text2(STREAM s, TEXT2_ORDER * os, uint32 present, RD_BOOL delta) |
798 |
{ |
{ |
799 |
int i; |
int i; |
800 |
|
|
961 |
|
|
962 |
/* Process a bitmap cache v2 order */ |
/* Process a bitmap cache v2 order */ |
963 |
static void |
static void |
964 |
process_bmpcache2(STREAM s, uint16 flags, BOOL compressed) |
process_bmpcache2(STREAM s, uint16 flags, RD_BOOL compressed) |
965 |
{ |
{ |
966 |
RD_HBITMAP bitmap; |
RD_HBITMAP bitmap; |
967 |
int y; |
int y; |
1163 |
uint32 present; |
uint32 present; |
1164 |
uint8 order_flags; |
uint8 order_flags; |
1165 |
int size, processed = 0; |
int size, processed = 0; |
1166 |
BOOL delta; |
RD_BOOL delta; |
1167 |
|
|
1168 |
while (processed < num_orders) |
while (processed < num_orders) |
1169 |
{ |
{ |