/[rdesktop]/sourceforge.net/trunk/rdesktop/orders.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /sourceforge.net/trunk/rdesktop/orders.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 25 by matty, Sat Jan 6 03:47:04 2001 UTC revision 64 by astrand, Thu Jul 18 16:38:31 2002 UTC
# Line 1  Line 1 
1  /*  /*
2     rdesktop: A Remote Desktop Protocol client.     rdesktop: A Remote Desktop Protocol client.
3     RDP order processing     RDP order processing
4     Copyright (C) Matthew Chapman 1999-2000     Copyright (C) Matthew Chapman 1999-2001
5    
6     This program is free software; you can redistribute it and/or modify     This program is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by     it under the terms of the GNU General Public License as published by
# Line 21  Line 21 
21  #include "rdesktop.h"  #include "rdesktop.h"
22  #include "orders.h"  #include "orders.h"
23    
24  extern unsigned char *next_packet;  extern uint8 *next_packet;
25  static RDP_ORDER_STATE order_state;  static RDP_ORDER_STATE order_state;
26    
27  /* Read field indicating which parameters are present */  /* Read field indicating which parameters are present */
28  static void  static void
29  rdp_in_present(STREAM s, uint32 *present, uint8 flags, int size)  rdp_in_present(STREAM s, uint32 * present, uint8 flags, int size)
30  {  {
31          uint8 bits;          uint8 bits;
32          int i;          int i;
# Line 54  rdp_in_present(STREAM s, uint32 *present Line 54  rdp_in_present(STREAM s, uint32 *present
54    
55  /* Read a co-ordinate (16-bit, or 8-bit delta) */  /* Read a co-ordinate (16-bit, or 8-bit delta) */
56  static void  static void
57  rdp_in_coord(STREAM s, uint16 *coord, BOOL delta)  rdp_in_coord(STREAM s, uint16 * coord, BOOL delta)
58  {  {
59          uint8 change;          uint8 change;
60    
61          if (delta)          if (delta)
62          {          {
63                  in_uint8(s, change);                  in_uint8(s, change);
64                  *coord += (char) change;                  *coord += (signed char) change;
65          }          }
66          else          else
67          {          {
# Line 71  rdp_in_coord(STREAM s, uint16 *coord, BO Line 71  rdp_in_coord(STREAM s, uint16 *coord, BO
71    
72  /* Read a colour entry */  /* Read a colour entry */
73  static void  static void
74  rdp_in_colour(STREAM s, uint8 *colour)  rdp_in_colour(STREAM s, uint8 * colour)
75  {  {
76          in_uint8(s, *colour);          in_uint8(s, *colour);
77          s->p += 2;          s->p += 2;
# Line 79  rdp_in_colour(STREAM s, uint8 *colour) Line 79  rdp_in_colour(STREAM s, uint8 *colour)
79    
80  /* Parse bounds information */  /* Parse bounds information */
81  static BOOL  static BOOL
82  rdp_parse_bounds(STREAM s, BOUNDS *bounds)  rdp_parse_bounds(STREAM s, BOUNDS * bounds)
83  {  {
84          uint8 present;          uint8 present;
85    
# Line 110  rdp_parse_bounds(STREAM s, BOUNDS *bound Line 110  rdp_parse_bounds(STREAM s, BOUNDS *bound
110    
111  /* Parse a pen */  /* Parse a pen */
112  static BOOL  static BOOL
113  rdp_parse_pen(STREAM s, PEN *pen, uint32 present)  rdp_parse_pen(STREAM s, PEN * pen, uint32 present)
114  {  {
115          if (present & 1)          if (present & 1)
116                  in_uint8(s, pen->style);                  in_uint8(s, pen->style);
# Line 126  rdp_parse_pen(STREAM s, PEN *pen, uint32 Line 126  rdp_parse_pen(STREAM s, PEN *pen, uint32
126    
127  /* Parse a brush */  /* Parse a brush */
128  static BOOL  static BOOL
129  rdp_parse_brush(STREAM s, BRUSH *brush, uint32 present)  rdp_parse_brush(STREAM s, BRUSH * brush, uint32 present)
130  {  {
131          if (present & 1)          if (present & 1)
132                  in_uint8(s, brush->xorigin);                  in_uint8(s, brush->xorigin);
# Line 148  rdp_parse_brush(STREAM s, BRUSH *brush, Line 148  rdp_parse_brush(STREAM s, BRUSH *brush,
148    
149  /* Process a destination blt order */  /* Process a destination blt order */
150  static void  static void
151  process_destblt(STREAM s, DESTBLT_ORDER *os, uint32 present, BOOL delta)  process_destblt(STREAM s, DESTBLT_ORDER * os, uint32 present, BOOL delta)
152  {  {
153          if (present & 0x01)          if (present & 0x01)
154                  rdp_in_coord(s, &os->x, delta);                  rdp_in_coord(s, &os->x, delta);
# Line 165  process_destblt(STREAM s, DESTBLT_ORDER Line 165  process_destblt(STREAM s, DESTBLT_ORDER
165          if (present & 0x10)          if (present & 0x10)
166                  in_uint8(s, os->opcode);                  in_uint8(s, os->opcode);
167    
168          DEBUG("DESTBLT(op=0x%x,x=%d,y=%d,cx=%d,cy=%d)\n",          DEBUG(("DESTBLT(op=0x%x,x=%d,y=%d,cx=%d,cy=%d)\n",
169                os->opcode, os->x, os->y, os->cx, os->cy);                 os->opcode, os->x, os->y, os->cx, os->cy));
170    
171          ui_destblt(ROP2_S(os->opcode), os->x, os->y, os->cx, os->cy);          ui_destblt(ROP2_S(os->opcode), os->x, os->y, os->cx, os->cy);
172  }  }
173    
174  /* Process a pattern blt order */  /* Process a pattern blt order */
175  static void  static void
176  process_patblt(STREAM s, PATBLT_ORDER *os, uint32 present, BOOL delta)  process_patblt(STREAM s, PATBLT_ORDER * os, uint32 present, BOOL delta)
177  {  {
178          if (present & 0x0001)          if (present & 0x0001)
179                  rdp_in_coord(s, &os->x, delta);                  rdp_in_coord(s, &os->x, delta);
# Line 198  process_patblt(STREAM s, PATBLT_ORDER *o Line 198  process_patblt(STREAM s, PATBLT_ORDER *o
198    
199          rdp_parse_brush(s, &os->brush, present >> 7);          rdp_parse_brush(s, &os->brush, present >> 7);
200    
201          DEBUG("PATBLT(op=0x%x,x=%d,y=%d,cx=%d,cy=%d,bs=%d,bg=0x%x,fg=0x%x)\n",          DEBUG(("PATBLT(op=0x%x,x=%d,y=%d,cx=%d,cy=%d,bs=%d,bg=0x%x,fg=0x%x)\n", os->opcode, os->x, os->y, os->cx, os->cy, os->brush.style, os->bgcolour, os->fgcolour));
               os->opcode, os->x, os->y, os->cx, os->cy,  
               os->brush.style, os->bgcolour, os->fgcolour);  
202    
203          ui_patblt(ROP2_P(os->opcode), os->x, os->y, os->cx, os->cy,          ui_patblt(ROP2_P(os->opcode), os->x, os->y, os->cx, os->cy,
204                    &os->brush, os->bgcolour, os->fgcolour);                    &os->brush, os->bgcolour, os->fgcolour);
# Line 208  process_patblt(STREAM s, PATBLT_ORDER *o Line 206  process_patblt(STREAM s, PATBLT_ORDER *o
206    
207  /* Process a screen blt order */  /* Process a screen blt order */
208  static void  static void
209  process_screenblt(STREAM s, SCREENBLT_ORDER *os, uint32 present, BOOL delta)  process_screenblt(STREAM s, SCREENBLT_ORDER * os, uint32 present, BOOL delta)
210  {  {
211          if (present & 0x0001)          if (present & 0x0001)
212                  rdp_in_coord(s, &os->x, delta);                  rdp_in_coord(s, &os->x, delta);
# Line 231  process_screenblt(STREAM s, SCREENBLT_OR Line 229  process_screenblt(STREAM s, SCREENBLT_OR
229          if (present & 0x0040)          if (present & 0x0040)
230                  rdp_in_coord(s, &os->srcy, delta);                  rdp_in_coord(s, &os->srcy, delta);
231    
232          DEBUG("SCREENBLT(op=0x%x,x=%d,y=%d,cx=%d,cy=%d,srcx=%d,srcy=%d)\n",          DEBUG(("SCREENBLT(op=0x%x,x=%d,y=%d,cx=%d,cy=%d,srcx=%d,srcy=%d)\n",
233                os->opcode, os->x, os->y, os->cx, os->cy, os->srcx, os->srcy);                 os->opcode, os->x, os->y, os->cx, os->cy, os->srcx, os->srcy));
234    
235          ui_screenblt(ROP2_S(os->opcode), os->x, os->y, os->cx, os->cy,          ui_screenblt(ROP2_S(os->opcode), os->x, os->y, os->cx, os->cy,
236                       os->srcx, os->srcy);                       os->srcx, os->srcy);
# Line 240  process_screenblt(STREAM s, SCREENBLT_OR Line 238  process_screenblt(STREAM s, SCREENBLT_OR
238    
239  /* Process a line order */  /* Process a line order */
240  static void  static void
241  process_line(STREAM s, LINE_ORDER *os, uint32 present, BOOL delta)  process_line(STREAM s, LINE_ORDER * os, uint32 present, BOOL delta)
242  {  {
243          if (present & 0x0001)          if (present & 0x0001)
244                  in_uint16_le(s, os->mixmode);                  in_uint16_le(s, os->mixmode);
# Line 265  process_line(STREAM s, LINE_ORDER *os, u Line 263  process_line(STREAM s, LINE_ORDER *os, u
263    
264          rdp_parse_pen(s, &os->pen, present >> 7);          rdp_parse_pen(s, &os->pen, present >> 7);
265    
266          DEBUG("LINE(op=0x%x,sx=%d,sy=%d,dx=%d,dx=%d,fg=0x%x)\n",          DEBUG(("LINE(op=0x%x,sx=%d,sy=%d,dx=%d,dx=%d,fg=0x%x)\n",
267                os->opcode, os->startx, os->starty, os->endx, os->endy,                 os->opcode, os->startx, os->starty, os->endx, os->endy,
268                os->pen.colour);                 os->pen.colour));
269    
270          if (os->opcode < 0x01 || os->opcode > 0x10)          if (os->opcode < 0x01 || os->opcode > 0x10)
271          {          {
272                  ERROR("bad ROP2 0x%x\n", os->opcode);                  error("bad ROP2 0x%x\n", os->opcode);
273                  return;                  return;
274          }          }
275    
# Line 281  process_line(STREAM s, LINE_ORDER *os, u Line 279  process_line(STREAM s, LINE_ORDER *os, u
279    
280  /* Process an opaque rectangle order */  /* Process an opaque rectangle order */
281  static void  static void
282  process_rect(STREAM s, RECT_ORDER *os, uint32 present, BOOL delta)  process_rect(STREAM s, RECT_ORDER * os, uint32 present, BOOL delta)
283  {  {
284          if (present & 0x01)          if (present & 0x01)
285                  rdp_in_coord(s, &os->x, delta);                  rdp_in_coord(s, &os->x, delta);
# Line 298  process_rect(STREAM s, RECT_ORDER *os, u Line 296  process_rect(STREAM s, RECT_ORDER *os, u
296          if (present & 0x10)          if (present & 0x10)
297                  in_uint8(s, os->colour);                  in_uint8(s, os->colour);
298    
299          DEBUG("RECT(x=%d,y=%d,cx=%d,cy=%d,fg=0x%x)\n",          DEBUG(("RECT(x=%d,y=%d,cx=%d,cy=%d,fg=0x%x)\n",
300                os->x, os->y, os->cx, os->cy, os->colour);                 os->x, os->y, os->cx, os->cy, os->colour));
301    
302          ui_rect(os->x, os->y, os->cx, os->cy, os->colour);          ui_rect(os->x, os->y, os->cx, os->cy, os->colour);
303  }  }
304    
305  /* Process a desktop save order */  /* Process a desktop save order */
306  static void  static void
307  process_desksave(STREAM s, DESKSAVE_ORDER *os, uint32 present, BOOL delta)  process_desksave(STREAM s, DESKSAVE_ORDER * os, uint32 present, BOOL delta)
308  {  {
309          int width, height;          int width, height;
310    
# Line 328  process_desksave(STREAM s, DESKSAVE_ORDE Line 326  process_desksave(STREAM s, DESKSAVE_ORDE
326          if (present & 0x20)          if (present & 0x20)
327                  in_uint8(s, os->action);                  in_uint8(s, os->action);
328    
329          DEBUG("DESKSAVE(l=%d,t=%d,r=%d,b=%d,off=%d,op=%d)\n",          DEBUG(("DESKSAVE(l=%d,t=%d,r=%d,b=%d,off=%d,op=%d)\n",
330                os->left, os->top, os->right, os->bottom, os->offset,                 os->left, os->top, os->right, os->bottom, os->offset,
331                os->action);                 os->action));
332    
333          width = os->right - os->left + 1;          width = os->right - os->left + 1;
334          height = os->bottom - os->top + 1;          height = os->bottom - os->top + 1;
# Line 344  process_desksave(STREAM s, DESKSAVE_ORDE Line 342  process_desksave(STREAM s, DESKSAVE_ORDE
342    
343  /* Process a memory blt order */  /* Process a memory blt order */
344  static void  static void
345  process_memblt(STREAM s, MEMBLT_ORDER *os, uint32 present, BOOL delta)  process_memblt(STREAM s, MEMBLT_ORDER * os, uint32 present, BOOL delta)
346  {  {
347          HBITMAP bitmap;          HBITMAP bitmap;
348    
# Line 378  process_memblt(STREAM s, MEMBLT_ORDER *o Line 376  process_memblt(STREAM s, MEMBLT_ORDER *o
376          if (present & 0x0100)          if (present & 0x0100)
377                  in_uint16_le(s, os->cache_idx);                  in_uint16_le(s, os->cache_idx);
378    
379          DEBUG("MEMBLT(op=0x%x,x=%d,y=%d,cx=%d,cy=%d,id=%d,idx=%d)\n",          DEBUG(("MEMBLT(op=0x%x,x=%d,y=%d,cx=%d,cy=%d,id=%d,idx=%d)\n",
380                os->opcode, os->x, os->y, os->cx, os->cy, os->cache_id,                 os->opcode, os->x, os->y, os->cx, os->cy, os->cache_id,
381                os->cache_idx);                 os->cache_idx));
382    
383          bitmap = cache_get_bitmap(os->cache_id, os->cache_idx);          bitmap = cache_get_bitmap(os->cache_id, os->cache_idx);
384          if (bitmap == NULL)          if (bitmap == NULL)
# Line 392  process_memblt(STREAM s, MEMBLT_ORDER *o Line 390  process_memblt(STREAM s, MEMBLT_ORDER *o
390    
391  /* Process a 3-way blt order */  /* Process a 3-way blt order */
392  static void  static void
393  process_triblt(STREAM s, TRIBLT_ORDER *os, uint32 present, BOOL delta)  process_triblt(STREAM s, TRIBLT_ORDER * os, uint32 present, BOOL delta)
394  {  {
395          HBITMAP bitmap;          HBITMAP bitmap;
396    
# Line 437  process_triblt(STREAM s, TRIBLT_ORDER *o Line 435  process_triblt(STREAM s, TRIBLT_ORDER *o
435          if (present & 0x010000)          if (present & 0x010000)
436                  in_uint16_le(s, os->unknown);                  in_uint16_le(s, os->unknown);
437    
438          DEBUG          DEBUG(("TRIBLT(op=0x%x,x=%d,y=%d,cx=%d,cy=%d,id=%d,idx=%d,bs=%d,bg=0x%x,fg=0x%x)\n", os->opcode, os->x, os->y, os->cx, os->cy, os->cache_id, os->cache_idx, os->brush.style, os->bgcolour, os->fgcolour));
                 ("TRIBLT(op=0x%x,x=%d,y=%d,cx=%d,cy=%d,id=%d,idx=%d,bs=%d,bg=0x%x,fg=0x%x)\n",  
                  os->opcode, os->x, os->y, os->cx, os->cy, os->cache_id,  
                  os->cache_idx, os->brush.style, os->bgcolour, os->fgcolour);  
439    
440          bitmap = cache_get_bitmap(os->cache_id, os->cache_idx);          bitmap = cache_get_bitmap(os->cache_id, os->cache_idx);
441          if (bitmap == NULL)          if (bitmap == NULL)
# Line 453  process_triblt(STREAM s, TRIBLT_ORDER *o Line 448  process_triblt(STREAM s, TRIBLT_ORDER *o
448    
449  /* Parse a delta co-ordinate in polyline order form */  /* Parse a delta co-ordinate in polyline order form */
450  static int  static int
451  parse_delta(uint8 *buffer, int *offset)  parse_delta(uint8 * buffer, int *offset)
452  {  {
453          int value = buffer[(*offset)++];          int value = buffer[(*offset)++];
454          int two_byte = value & 0x80;          int two_byte = value & 0x80;
# Line 471  parse_delta(uint8 *buffer, int *offset) Line 466  parse_delta(uint8 *buffer, int *offset)
466    
467  /* Process a polyline order */  /* Process a polyline order */
468  static void  static void
469  process_polyline(STREAM s, POLYLINE_ORDER *os, uint32 present, BOOL delta)  process_polyline(STREAM s, POLYLINE_ORDER * os, uint32 present, BOOL delta)
470  {  {
471          int index, line, data;          int index, line, data;
472          int x, y, xfrom, yfrom;          int x, y, xfrom, yfrom;
473          uint8 flags = 0;          uint8 flags = 0;
474          PEN pen;          PEN pen;
475            uint8 opcode;
476    
477          if (present & 0x01)          if (present & 0x01)
478                  rdp_in_coord(s, &os->x, delta);                  rdp_in_coord(s, &os->x, delta);
# Line 498  process_polyline(STREAM s, POLYLINE_ORDE Line 494  process_polyline(STREAM s, POLYLINE_ORDE
494                  in_uint8(s, os->datasize);                  in_uint8(s, os->datasize);
495                  in_uint8a(s, os->data, os->datasize);                  in_uint8a(s, os->data, os->datasize);
496          }          }
497            if (os->flags & 1)
498                    opcode = ROP2_COPY;
499            else
500                    opcode = ROP2_NXOR;
501    
502          DEBUG("POLYLINE(x=%d,y=%d,fl=0x%x,fg=0x%x,n=%d,sz=%d)\n",          DEBUG(("POLYLINE(x=%d,y=%d,fl=0x%x,fg=0x%x,n=%d,sz=%d)\n",
503                os->x, os->y, os->flags, os->fgcolour, os->lines, os->datasize);                 os->x, os->y, os->flags, os->fgcolour, os->lines,
504                   os->datasize));
505    
506          DEBUG("Data: ");          DEBUG(("Data: "));
507    
508          for (index = 0; index < os->datasize; index++)          for (index = 0; index < os->datasize; index++)
509                  DEBUG("%02x ", os->data[index]);                  DEBUG(("%02x ", os->data[index]));
510    
511          DEBUG("\n");          DEBUG(("\n"));
512    
513          x = os->x;          x = os->x;
514          y = os->y;          y = os->y;
# Line 533  process_polyline(STREAM s, POLYLINE_ORDE Line 534  process_polyline(STREAM s, POLYLINE_ORDE
534                  if (flags & 0x80)                  if (flags & 0x80)
535                          y += parse_delta(os->data, &data);                          y += parse_delta(os->data, &data);
536    
537                  ui_line(ROP2_COPY, xfrom, yfrom, x, y, &pen);                  ui_line(opcode, xfrom, yfrom, x, y, &pen);
538    
539                  flags <<= 2;                  flags <<= 2;
540          }          }
# Line 541  process_polyline(STREAM s, POLYLINE_ORDE Line 542  process_polyline(STREAM s, POLYLINE_ORDE
542    
543  /* Process a text order */  /* Process a text order */
544  static void  static void
545  process_text2(STREAM s, TEXT2_ORDER *os, uint32 present, BOOL delta)  process_text2(STREAM s, TEXT2_ORDER * os, uint32 present, BOOL delta)
546  {  {
         DATABLOB *entry;  
547          int i;          int i;
548    
549          if (present & 0x000001)          if (present & 0x000001)
# Line 600  process_text2(STREAM s, TEXT2_ORDER *os, Line 600  process_text2(STREAM s, TEXT2_ORDER *os,
600                  in_uint8a(s, os->text, os->length);                  in_uint8a(s, os->text, os->length);
601          }          }
602    
603          DEBUG          DEBUG(("TEXT2(x=%d,y=%d,cl=%d,ct=%d,cr=%d,cb=%d,bl=%d,bt=%d,bb=%d,br=%d,fg=0x%x,bg=0x%x,font=%d,fl=0x%x,mix=%d,unk=0x%x,n=%d)\n", os->x, os->y, os->clipleft, os->cliptop, os->clipright, os->clipbottom, os->boxleft, os->boxtop, os->boxright, os->boxbottom, os->fgcolour, os->bgcolour, os->font, os->flags, os->mixmode, os->unknown, os->length));
                 ("TEXT2(x=%d,y=%d,cl=%d,ct=%d,cr=%d,cb=%d,bl=%d,bt=%d,bb=%d,br=%d,fg=0x%x,bg=0x%x,font=%d,fl=0x%x,mix=%d,unk=0x%x,n=%d)\n",  
                  os->x, os->y, os->clipleft, os->cliptop, os->clipright,  
                  os->clipbottom, os->boxleft, os->boxtop, os->boxright,  
                  os->boxbottom, os->fgcolour, os->bgcolour, os->font,  
                  os->flags, os->mixmode, os->unknown, os->length);  
604    
605          DEBUG("Text: ");          DEBUG(("Text: "));
606    
607          for (i = 0; i < os->length; i++)          for (i = 0; i < os->length; i++)
608                  DEBUG("%02x ", os->text[i]);                  DEBUG(("%02x ", os->text[i]));
   
         DEBUG("\n");  
   
         /* Process special cache strings */  
         if ((os->length >= 2) && (os->text[0] == 0xfe))  
         {  
                 entry = cache_get_text(os->text[1]);  
609    
610                  if (entry == NULL)          DEBUG(("\n"));
                         return;  
   
                 memcpy(os->text, entry->data, entry->size);  
                 os->length = entry->size;  
         }  
         else if ((os->length >= 3) && (os->text[os->length - 3] == 0xff))  
         {  
                 os->length -= 3;  
                 cache_put_text(os->text[os->length + 1], os->text,  
                                os->length);  
         }  
611    
612          ui_draw_text(os->font, os->flags, os->mixmode, os->x, os->y,          ui_draw_text(os->font, os->flags, os->mixmode, os->x, os->y,
613                       os->clipleft, os->cliptop,                       os->clipleft, os->cliptop,
# Line 649  process_raw_bmpcache(STREAM s) Line 626  process_raw_bmpcache(STREAM s)
626          HBITMAP bitmap;          HBITMAP bitmap;
627          uint16 cache_idx, bufsize;          uint16 cache_idx, bufsize;
628          uint8 cache_id, width, height, bpp;          uint8 cache_id, width, height, bpp;
629          uint8 *data;          uint8 *data, *inverted;
630            int y;
631    
632          in_uint8(s, cache_id);          in_uint8(s, cache_id);
633          in_uint8s(s, 1);        /* pad */          in_uint8s(s, 1);        /* pad */
# Line 660  process_raw_bmpcache(STREAM s) Line 638  process_raw_bmpcache(STREAM s)
638          in_uint16_le(s, cache_idx);          in_uint16_le(s, cache_idx);
639          in_uint8p(s, data, bufsize);          in_uint8p(s, data, bufsize);
640    
641          DEBUG("RAW_BMPCACHE(cx=%d,cy=%d,id=%d,idx=%d)\n",          DEBUG(("RAW_BMPCACHE(cx=%d,cy=%d,id=%d,idx=%d)\n",
642                width, height, cache_id, cache_idx);                 width, height, cache_id, cache_idx));
643            inverted = xmalloc(width * height);
644            for (y = 0; y < height; y++)
645            {
646                    memcpy(&inverted[(height - y - 1) * width], &data[y * width],
647                           width);
648            }
649    
650          bitmap = ui_create_bitmap(width, height, data);          bitmap = ui_create_bitmap(width, height, inverted);
651            xfree(inverted);
652          cache_put_bitmap(cache_id, cache_idx, bitmap);          cache_put_bitmap(cache_id, cache_idx, bitmap);
653  }  }
654    
# Line 688  process_bmpcache(STREAM s) Line 673  process_bmpcache(STREAM s)
673          in_uint8s(s, 4);        /* row_size, final_size */          in_uint8s(s, 4);        /* row_size, final_size */
674          in_uint8p(s, data, size);          in_uint8p(s, data, size);
675    
676          DEBUG("BMPCACHE(cx=%d,cy=%d,id=%d,idx=%d)\n",          DEBUG(("BMPCACHE(cx=%d,cy=%d,id=%d,idx=%d)\n",
677                width, height, cache_id, cache_idx);                 width, height, cache_id, cache_idx));
678    
679          bmpdata = xmalloc(width * height);          bmpdata = xmalloc(width * height);
680    
# Line 726  process_colcache(STREAM s) Line 711  process_colcache(STREAM s)
711                  in_uint8s(s, 1);        /* pad */                  in_uint8s(s, 1);        /* pad */
712          }          }
713    
714          DEBUG("COLCACHE(id=%d,n=%d)\n", cache_id, map.ncolours);          DEBUG(("COLCACHE(id=%d,n=%d)\n", cache_id, map.ncolours));
715    
716          hmap = ui_create_colourmap(&map);          hmap = ui_create_colourmap(&map);
717          ui_set_colourmap(hmap);          ui_set_colourmap(hmap);
# Line 747  process_fontcache(STREAM s) Line 732  process_fontcache(STREAM s)
732          in_uint8(s, font);          in_uint8(s, font);
733          in_uint8(s, nglyphs);          in_uint8(s, nglyphs);
734    
735          DEBUG("FONTCACHE(font=%d,n=%d)\n", font, nglyphs);          DEBUG(("FONTCACHE(font=%d,n=%d)\n", font, nglyphs));
736    
737          for (i = 0; i < nglyphs; i++)          for (i = 0; i < nglyphs; i++)
738          {          {
# Line 799  process_secondary_order(STREAM s) Line 784  process_secondary_order(STREAM s)
784                          break;                          break;
785    
786                  default:                  default:
787                          NOTIMP("secondary order %d\n", type);                          unimpl("secondary order %d\n", type);
788          }          }
789    
790          s->p = next_order;          s->p = next_order;
# Line 826  process_orders(STREAM s) Line 811  process_orders(STREAM s)
811    
812                  if (!(order_flags & RDP_ORDER_STANDARD))                  if (!(order_flags & RDP_ORDER_STANDARD))
813                  {                  {
814                          ERROR("order parsing failed\n");                          error("order parsing failed\n");
815                          break;                          break;
816                  }                  }
817    
# Line 928  process_orders(STREAM s) Line 913  process_orders(STREAM s)
913                                          break;                                          break;
914    
915                                  default:                                  default:
916                                          NOTIMP("order %d\n", os->order_type);                                          unimpl("order %d\n", os->order_type);
917                                          return;                                          return;
918                          }                          }
919    
# Line 940  process_orders(STREAM s) Line 925  process_orders(STREAM s)
925          }          }
926    
927          if (s->p != next_packet)          if (s->p != next_packet)
928                  WARN("%d bytes remaining\n", (int) (next_packet - s->p));                  error("%d bytes remaining\n", (int) (next_packet - s->p));
929  }  }
930    
931  /* Reset order state */  /* Reset order state */
# Line 948  void Line 933  void
933  reset_order_state()  reset_order_state()
934  {  {
935          memset(&order_state, 0, sizeof(order_state));          memset(&order_state, 0, sizeof(order_state));
936            order_state.order_type = RDP_ORDER_PATBLT;
937  }  }

Legend:
Removed from v.25  
changed lines
  Added in v.64

  ViewVC Help
Powered by ViewVC 1.1.26