/[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 28 by matty, Wed Jun 20 13:54:48 2001 UTC revision 30 by matty, Fri Sep 14 13:51:38 2001 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 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  }  }
# 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",
202                os->opcode, os->x, os->y, os->cx, os->cy,                 os->opcode, os->x, os->y, os->cx, os->cy,
203                os->brush.style, os->bgcolour, os->fgcolour);                 os->brush.style, os->bgcolour, os->fgcolour));
204    
205          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,
206                    &os->brush, os->bgcolour, os->fgcolour);                    &os->brush, os->bgcolour, os->fgcolour);
# Line 231  process_screenblt(STREAM s, SCREENBLT_OR Line 231  process_screenblt(STREAM s, SCREENBLT_OR
231          if (present & 0x0040)          if (present & 0x0040)
232                  rdp_in_coord(s, &os->srcy, delta);                  rdp_in_coord(s, &os->srcy, delta);
233    
234          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",
235                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));
236    
237          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,
238                       os->srcx, os->srcy);                       os->srcx, os->srcy);
# Line 265  process_line(STREAM s, LINE_ORDER *os, u Line 265  process_line(STREAM s, LINE_ORDER *os, u
265    
266          rdp_parse_pen(s, &os->pen, present >> 7);          rdp_parse_pen(s, &os->pen, present >> 7);
267    
268          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",
269                os->opcode, os->startx, os->starty, os->endx, os->endy,                 os->opcode, os->startx, os->starty, os->endx, os->endy,
270                os->pen.colour);                 os->pen.colour));
271    
272          if (os->opcode < 0x01 || os->opcode > 0x10)          if (os->opcode < 0x01 || os->opcode > 0x10)
273          {          {
274                  ERROR("bad ROP2 0x%x\n", os->opcode);                  error("bad ROP2 0x%x\n", os->opcode);
275                  return;                  return;
276          }          }
277    
# Line 298  process_rect(STREAM s, RECT_ORDER *os, u Line 298  process_rect(STREAM s, RECT_ORDER *os, u
298          if (present & 0x10)          if (present & 0x10)
299                  in_uint8(s, os->colour);                  in_uint8(s, os->colour);
300    
301          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",
302                os->x, os->y, os->cx, os->cy, os->colour);                 os->x, os->y, os->cx, os->cy, os->colour));
303    
304          ui_rect(os->x, os->y, os->cx, os->cy, os->colour);          ui_rect(os->x, os->y, os->cx, os->cy, os->colour);
305  }  }
# Line 328  process_desksave(STREAM s, DESKSAVE_ORDE Line 328  process_desksave(STREAM s, DESKSAVE_ORDE
328          if (present & 0x20)          if (present & 0x20)
329                  in_uint8(s, os->action);                  in_uint8(s, os->action);
330    
331          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",
332                os->left, os->top, os->right, os->bottom, os->offset,                 os->left, os->top, os->right, os->bottom, os->offset,
333                os->action);                 os->action));
334    
335          width = os->right - os->left + 1;          width = os->right - os->left + 1;
336          height = os->bottom - os->top + 1;          height = os->bottom - os->top + 1;
# Line 378  process_memblt(STREAM s, MEMBLT_ORDER *o Line 378  process_memblt(STREAM s, MEMBLT_ORDER *o
378          if (present & 0x0100)          if (present & 0x0100)
379                  in_uint16_le(s, os->cache_idx);                  in_uint16_le(s, os->cache_idx);
380    
381          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",
382                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,
383                os->cache_idx);                 os->cache_idx));
384    
385          bitmap = cache_get_bitmap(os->cache_id, os->cache_idx);          bitmap = cache_get_bitmap(os->cache_id, os->cache_idx);
386          if (bitmap == NULL)          if (bitmap == NULL)
# Line 437  process_triblt(STREAM s, TRIBLT_ORDER *o Line 437  process_triblt(STREAM s, TRIBLT_ORDER *o
437          if (present & 0x010000)          if (present & 0x010000)
438                  in_uint16_le(s, os->unknown);                  in_uint16_le(s, os->unknown);
439    
440          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",
441                  ("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,
442                   os->opcode, os->x, os->y, os->cx, os->cy, os->cache_id,                 os->cache_idx, os->brush.style, os->bgcolour, os->fgcolour));
                  os->cache_idx, os->brush.style, os->bgcolour, os->fgcolour);  
443    
444          bitmap = cache_get_bitmap(os->cache_id, os->cache_idx);          bitmap = cache_get_bitmap(os->cache_id, os->cache_idx);
445          if (bitmap == NULL)          if (bitmap == NULL)
# Line 499  process_polyline(STREAM s, POLYLINE_ORDE Line 498  process_polyline(STREAM s, POLYLINE_ORDE
498                  in_uint8a(s, os->data, os->datasize);                  in_uint8a(s, os->data, os->datasize);
499          }          }
500    
501          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",
502                os->x, os->y, os->flags, os->fgcolour, os->lines, os->datasize);                 os->x, os->y, os->flags, os->fgcolour, os->lines, os->datasize));
503    
504          DEBUG("Data: ");          DEBUG(("Data: "));
505    
506          for (index = 0; index < os->datasize; index++)          for (index = 0; index < os->datasize; index++)
507                  DEBUG("%02x ", os->data[index]);                  DEBUG(("%02x ", os->data[index]));
508    
509          DEBUG("\n");          DEBUG(("\n"));
510    
511          x = os->x;          x = os->x;
512          y = os->y;          y = os->y;
# Line 600  process_text2(STREAM s, TEXT2_ORDER *os, Line 599  process_text2(STREAM s, TEXT2_ORDER *os,
599                  in_uint8a(s, os->text, os->length);                  in_uint8a(s, os->text, os->length);
600          }          }
601    
602          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",
603                  ("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,
604                   os->x, os->y, os->clipleft, os->cliptop, os->clipright,                 os->clipbottom, os->boxleft, os->boxtop, os->boxright,
605                   os->clipbottom, os->boxleft, os->boxtop, os->boxright,                 os->boxbottom, os->fgcolour, os->bgcolour, os->font,
606                   os->boxbottom, os->fgcolour, os->bgcolour, os->font,                 os->flags, os->mixmode, os->unknown, os->length));
                  os->flags, os->mixmode, os->unknown, os->length);  
607    
608          DEBUG("Text: ");          DEBUG(("Text: "));
609    
610          for (i = 0; i < os->length; i++)          for (i = 0; i < os->length; i++)
611                  DEBUG("%02x ", os->text[i]);                  DEBUG(("%02x ", os->text[i]));
612    
613          DEBUG("\n");          DEBUG(("\n"));
614    
615          /* Process special cache strings */          /* Process special cache strings */
616          if ((os->length >= 2) && (os->text[0] == 0xfe))          if ((os->length >= 2) && (os->text[0] == 0xfe))
# Line 661  process_raw_bmpcache(STREAM s) Line 659  process_raw_bmpcache(STREAM s)
659          in_uint16_le(s, cache_idx);          in_uint16_le(s, cache_idx);
660          in_uint8p(s, data, bufsize);          in_uint8p(s, data, bufsize);
661    
662          DEBUG("RAW_BMPCACHE(cx=%d,cy=%d,id=%d,idx=%d)\n",          DEBUG(("RAW_BMPCACHE(cx=%d,cy=%d,id=%d,idx=%d)\n",
663                width, height, cache_id, cache_idx);                 width, height, cache_id, cache_idx));
664          inverted = xmalloc(width * height);          inverted = xmalloc(width * height);
665          for (y = 0; y < height; y++)          for (y = 0; y < height; y++)
666          {          {
# Line 696  process_bmpcache(STREAM s) Line 694  process_bmpcache(STREAM s)
694          in_uint8s(s, 4);        /* row_size, final_size */          in_uint8s(s, 4);        /* row_size, final_size */
695          in_uint8p(s, data, size);          in_uint8p(s, data, size);
696    
697          DEBUG("BMPCACHE(cx=%d,cy=%d,id=%d,idx=%d)\n",          DEBUG(("BMPCACHE(cx=%d,cy=%d,id=%d,idx=%d)\n",
698                width, height, cache_id, cache_idx);                 width, height, cache_id, cache_idx));
699    
700          bmpdata = xmalloc(width * height);          bmpdata = xmalloc(width * height);
701    
# Line 734  process_colcache(STREAM s) Line 732  process_colcache(STREAM s)
732                  in_uint8s(s, 1);        /* pad */                  in_uint8s(s, 1);        /* pad */
733          }          }
734    
735          DEBUG("COLCACHE(id=%d,n=%d)\n", cache_id, map.ncolours);          DEBUG(("COLCACHE(id=%d,n=%d)\n", cache_id, map.ncolours));
736    
737          hmap = ui_create_colourmap(&map);          hmap = ui_create_colourmap(&map);
738          ui_set_colourmap(hmap);          ui_set_colourmap(hmap);
# Line 755  process_fontcache(STREAM s) Line 753  process_fontcache(STREAM s)
753          in_uint8(s, font);          in_uint8(s, font);
754          in_uint8(s, nglyphs);          in_uint8(s, nglyphs);
755    
756          DEBUG("FONTCACHE(font=%d,n=%d)\n", font, nglyphs);          DEBUG(("FONTCACHE(font=%d,n=%d)\n", font, nglyphs));
757    
758          for (i = 0; i < nglyphs; i++)          for (i = 0; i < nglyphs; i++)
759          {          {
# Line 807  process_secondary_order(STREAM s) Line 805  process_secondary_order(STREAM s)
805                          break;                          break;
806    
807                  default:                  default:
808                          NOTIMP("secondary order %d\n", type);                          unimpl("secondary order %d\n", type);
809          }          }
810    
811          s->p = next_order;          s->p = next_order;
# Line 834  process_orders(STREAM s) Line 832  process_orders(STREAM s)
832    
833                  if (!(order_flags & RDP_ORDER_STANDARD))                  if (!(order_flags & RDP_ORDER_STANDARD))
834                  {                  {
835                          ERROR("order parsing failed\n");                          error("order parsing failed\n");
836                          break;                          break;
837                  }                  }
838    
# Line 936  process_orders(STREAM s) Line 934  process_orders(STREAM s)
934                                          break;                                          break;
935    
936                                  default:                                  default:
937                                          NOTIMP("order %d\n", os->order_type);                                          unimpl("order %d\n", os->order_type);
938                                          return;                                          return;
939                          }                          }
940    
# Line 948  process_orders(STREAM s) Line 946  process_orders(STREAM s)
946          }          }
947    
948          if (s->p != next_packet)          if (s->p != next_packet)
949                  WARN("%d bytes remaining\n", (int) (next_packet - s->p));                  error("%d bytes remaining\n", (int) (next_packet - s->p));
950  }  }
951    
952  /* Reset order state */  /* Reset order state */

Legend:
Removed from v.28  
changed lines
  Added in v.30

  ViewVC Help
Powered by ViewVC 1.1.26