00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
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;