Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

orders.h

Go to the documentation of this file.
00001 /*
00002    rdesktop: A Remote Desktop Protocol client.
00003    RDP order processing
00004    Copyright (C) Matthew Chapman 1999-2002
00005    
00006    This program is free software; you can redistribute it and/or modify
00007    it under the terms of the GNU General Public License as published by
00008    the Free Software Foundation; either version 2 of the License, or
00009    (at your option) any later version.
00010 
00011    This program is distributed in the hope that it will be useful,
00012    but WITHOUT ANY WARRANTY; without even the implied warranty of
00013    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014    GNU General Public License for more details.
00015 
00016    You should have received a copy of the GNU General Public License
00017    along with this program; if not, write to the Free Software
00018    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00019 */
00020 
00021 #define RDP_ORDER_STANDARD   0x01
00022 #define RDP_ORDER_SECONDARY  0x02
00023 #define RDP_ORDER_BOUNDS     0x04
00024 #define RDP_ORDER_CHANGE     0x08
00025 #define RDP_ORDER_DELTA      0x10
00026 #define RDP_ORDER_LASTBOUNDS 0x20
00027 #define RDP_ORDER_SMALL      0x40
00028 #define RDP_ORDER_TINY       0x80
00029 
00030 enum RDP_ORDER_TYPE
00031 {
00032         RDP_ORDER_DESTBLT = 0,
00033         RDP_ORDER_PATBLT = 1,
00034         RDP_ORDER_SCREENBLT = 2,
00035         RDP_ORDER_LINE = 9,
00036         RDP_ORDER_RECT = 10,
00037         RDP_ORDER_DESKSAVE = 11,
00038         RDP_ORDER_MEMBLT = 13,
00039         RDP_ORDER_TRIBLT = 14,
00040         RDP_ORDER_POLYLINE = 22,
00041         RDP_ORDER_TEXT2 = 27
00042 };
00043 
00044 enum RDP_SECONDARY_ORDER_TYPE
00045 {
00046         RDP_ORDER_RAW_BMPCACHE = 0,
00047         RDP_ORDER_COLCACHE = 1,
00048         RDP_ORDER_BMPCACHE = 2,
00049         RDP_ORDER_FONTCACHE = 3
00050 };
00051 
00052 typedef struct _DESTBLT_ORDER
00053 {
00054         sint16 x;
00055         sint16 y;
00056         sint16 cx;
00057         sint16 cy;
00058         uint8 opcode;
00059 
00060 }
00061 DESTBLT_ORDER;
00062 
00063 typedef struct _PATBLT_ORDER
00064 {
00065         sint16 x;
00066         sint16 y;
00067         sint16 cx;
00068         sint16 cy;
00069         uint8 opcode;
00070         uint32 bgcolour;
00071         uint32 fgcolour;
00072         BRUSH brush;
00073 
00074 }
00075 PATBLT_ORDER;
00076 
00077 typedef struct _SCREENBLT_ORDER
00078 {
00079         sint16 x;
00080         sint16 y;
00081         sint16 cx;
00082         sint16 cy;
00083         uint8 opcode;
00084         sint16 srcx;
00085         sint16 srcy;
00086 
00087 }
00088 SCREENBLT_ORDER;
00089 
00090 typedef struct _LINE_ORDER
00091 {
00092         uint16 mixmode;
00093         sint16 startx;
00094         sint16 starty;
00095         sint16 endx;
00096         sint16 endy;
00097         uint32 bgcolour;
00098         uint8 opcode;
00099         PEN pen;
00100 
00101 }
00102 LINE_ORDER;
00103 
00104 typedef struct _RECT_ORDER
00105 {
00106         sint16 x;
00107         sint16 y;
00108         sint16 cx;
00109         sint16 cy;
00110         uint32 colour;
00111 
00112 }
00113 RECT_ORDER;
00114 
00115 typedef struct _DESKSAVE_ORDER
00116 {
00117         uint32 offset;
00118         sint16 left;
00119         sint16 top;
00120         sint16 right;
00121         sint16 bottom;
00122         uint8 action;
00123 
00124 }
00125 DESKSAVE_ORDER;
00126 
00127 typedef struct _TRIBLT_ORDER
00128 {
00129         uint8 colour_table;
00130         uint8 cache_id;
00131         sint16 x;
00132         sint16 y;
00133         sint16 cx;
00134         sint16 cy;
00135         uint8 opcode;
00136         sint16 srcx;
00137         sint16 srcy;
00138         uint32 bgcolour;
00139         uint32 fgcolour;
00140         BRUSH brush;
00141         uint16 cache_idx;
00142         uint16 unknown;
00143 
00144 }
00145 TRIBLT_ORDER;
00146 
00147 typedef struct _MEMBLT_ORDER
00148 {
00149         uint8 colour_table;
00150         uint8 cache_id;
00151         sint16 x;
00152         sint16 y;
00153         sint16 cx;
00154         sint16 cy;
00155         uint8 opcode;
00156         sint16 srcx;
00157         sint16 srcy;
00158         uint16 cache_idx;
00159 
00160 }
00161 MEMBLT_ORDER;
00162 
00163 #define MAX_DATA 256
00164 
00165 typedef struct _POLYLINE_ORDER
00166 {
00167         sint16 x;
00168         sint16 y;
00169         uint8 opcode;
00170         uint32 fgcolour;
00171         uint8 lines;
00172         uint8 datasize;
00173         uint8 data[MAX_DATA];
00174 
00175 }
00176 POLYLINE_ORDER;
00177 
00178 #define MAX_TEXT 256
00179 
00180 typedef struct _TEXT2_ORDER
00181 {
00182         uint8 font;
00183         uint8 flags;
00184         uint8 mixmode;
00185         uint8 unknown;
00186         uint32 fgcolour;
00187         uint32 bgcolour;
00188         sint16 clipleft;
00189         sint16 cliptop;
00190         sint16 clipright;
00191         sint16 clipbottom;
00192         sint16 boxleft;
00193         sint16 boxtop;
00194         sint16 boxright;
00195         sint16 boxbottom;
00196         sint16 x;
00197         sint16 y;
00198         uint8 length;
00199         uint8 text[MAX_TEXT];
00200 
00201 }
00202 TEXT2_ORDER;
00203 
00204 typedef struct _RDP_ORDER_STATE
00205 {
00206         uint8 order_type;
00207         BOUNDS bounds;
00208 
00209         DESTBLT_ORDER destblt;
00210         PATBLT_ORDER patblt;
00211         SCREENBLT_ORDER screenblt;
00212         LINE_ORDER line;
00213         RECT_ORDER rect;
00214         DESKSAVE_ORDER desksave;
00215         MEMBLT_ORDER memblt;
00216         TRIBLT_ORDER triblt;
00217         POLYLINE_ORDER polyline;
00218         TEXT2_ORDER text2;
00219 
00220 }
00221 RDP_ORDER_STATE;
00222 
00223 typedef struct _RDP_RAW_BMPCACHE_ORDER
00224 {
00225         uint8 cache_id;
00226         uint8 pad1;
00227         uint8 width;
00228         uint8 height;
00229         uint8 bpp;
00230         uint16 bufsize;
00231         uint16 cache_idx;
00232         uint8 *data;
00233 
00234 }
00235 RDP_RAW_BMPCACHE_ORDER;
00236 
00237 typedef struct _RDP_BMPCACHE_ORDER
00238 {
00239         uint8 cache_id;
00240         uint8 pad1;
00241         uint8 width;
00242         uint8 height;
00243         uint8 bpp;
00244         uint16 bufsize;
00245         uint16 cache_idx;
00246         uint16 pad2;
00247         uint16 size;
00248         uint16 row_size;
00249         uint16 final_size;
00250         uint8 *data;
00251 
00252 }
00253 RDP_BMPCACHE_ORDER;
00254 
00255 #define MAX_GLYPH 32
00256 
00257 typedef struct _RDP_FONT_GLYPH
00258 {
00259         uint16 character;
00260         uint16 unknown;
00261         uint16 baseline;
00262         uint16 width;
00263         uint16 height;
00264         uint8 data[MAX_GLYPH];
00265 
00266 }
00267 RDP_FONT_GLYPH;
00268 
00269 #define MAX_GLYPHS 256
00270 
00271 typedef struct _RDP_FONTCACHE_ORDER
00272 {
00273         uint8 font;
00274         uint8 nglyphs;
00275         RDP_FONT_GLYPH glyphs[MAX_GLYPHS];
00276 
00277 }
00278 RDP_FONTCACHE_ORDER;
00279 
00280 typedef struct _RDP_COLCACHE_ORDER
00281 {
00282         uint8 cache_id;
00283         COLOURMAP map;
00284 
00285 }
00286 RDP_COLCACHE_ORDER;

Generated on Sat Nov 5 16:17:42 2005 for OPIE by  doxygen 1.4.2