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

Annotation of /sourceforge.net/trunk/rdesktop/orders.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 831 - (hide annotations)
Tue Mar 8 00:43:10 2005 UTC (19 years, 3 months ago) by jdmeijer
File MIME type: text/plain
File size: 5808 byte(s)
Add support for ellipse and polygon orders

1 matty 10 /*
2     rdesktop: A Remote Desktop Protocol client.
3     RDP order processing
4 stargo 828 Copyright (C) Matthew Chapman 1999-2005
5 matty 10
6     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
8     the Free Software Foundation; either version 2 of the License, or
9     (at your option) any later version.
10    
11     This program is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14     GNU General Public License for more details.
15    
16     You should have received a copy of the GNU General Public License
17     along with this program; if not, write to the Free Software
18     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19     */
20    
21     #define RDP_ORDER_STANDARD 0x01
22     #define RDP_ORDER_SECONDARY 0x02
23     #define RDP_ORDER_BOUNDS 0x04
24     #define RDP_ORDER_CHANGE 0x08
25     #define RDP_ORDER_DELTA 0x10
26     #define RDP_ORDER_LASTBOUNDS 0x20
27     #define RDP_ORDER_SMALL 0x40
28     #define RDP_ORDER_TINY 0x80
29    
30     enum RDP_ORDER_TYPE
31     {
32     RDP_ORDER_DESTBLT = 0,
33     RDP_ORDER_PATBLT = 1,
34     RDP_ORDER_SCREENBLT = 2,
35     RDP_ORDER_LINE = 9,
36 matty 28 RDP_ORDER_RECT = 10,
37 matty 10 RDP_ORDER_DESKSAVE = 11,
38     RDP_ORDER_MEMBLT = 13,
39     RDP_ORDER_TRIBLT = 14,
40 jdmeijer 831 RDP_ORDER_POLYGON = 20,
41     RDP_ORDER_POLYGON2 = 21,
42 matty 15 RDP_ORDER_POLYLINE = 22,
43 jdmeijer 831 RDP_ORDER_ELLIPSE = 25,
44     RDP_ORDER_ELLIPSE2 = 26,
45 matty 10 RDP_ORDER_TEXT2 = 27
46     };
47    
48     enum RDP_SECONDARY_ORDER_TYPE
49     {
50     RDP_ORDER_RAW_BMPCACHE = 0,
51     RDP_ORDER_COLCACHE = 1,
52     RDP_ORDER_BMPCACHE = 2,
53 jsorg71 725 RDP_ORDER_FONTCACHE = 3,
54     RDP_ORDER_RAW_BMPCACHE2 = 4,
55 jdmeijer 831 RDP_ORDER_BMPCACHE2 = 5,
56     RDP_ORDER_BRUSHCACHE = 7
57 matty 10 };
58    
59     typedef struct _DESTBLT_ORDER
60     {
61 jsorg71 375 sint16 x;
62     sint16 y;
63     sint16 cx;
64     sint16 cy;
65 matty 10 uint8 opcode;
66    
67 astrand 64 }
68     DESTBLT_ORDER;
69 matty 10
70     typedef struct _PATBLT_ORDER
71     {
72 jsorg71 375 sint16 x;
73     sint16 y;
74     sint16 cx;
75     sint16 cy;
76 matty 10 uint8 opcode;
77 jsorg71 309 uint32 bgcolour;
78     uint32 fgcolour;
79 matty 10 BRUSH brush;
80    
81 astrand 64 }
82     PATBLT_ORDER;
83 matty 10
84     typedef struct _SCREENBLT_ORDER
85     {
86 jsorg71 375 sint16 x;
87     sint16 y;
88     sint16 cx;
89     sint16 cy;
90 matty 10 uint8 opcode;
91 jsorg71 375 sint16 srcx;
92     sint16 srcy;
93 matty 10
94 astrand 64 }
95     SCREENBLT_ORDER;
96 matty 10
97     typedef struct _LINE_ORDER
98     {
99     uint16 mixmode;
100 jsorg71 375 sint16 startx;
101     sint16 starty;
102     sint16 endx;
103     sint16 endy;
104 jsorg71 309 uint32 bgcolour;
105 matty 10 uint8 opcode;
106     PEN pen;
107    
108 astrand 64 }
109     LINE_ORDER;
110 matty 10
111     typedef struct _RECT_ORDER
112     {
113 jsorg71 375 sint16 x;
114     sint16 y;
115     sint16 cx;
116     sint16 cy;
117 jsorg71 309 uint32 colour;
118 matty 10
119 astrand 64 }
120     RECT_ORDER;
121 matty 10
122     typedef struct _DESKSAVE_ORDER
123     {
124     uint32 offset;
125 jsorg71 375 sint16 left;
126     sint16 top;
127     sint16 right;
128     sint16 bottom;
129 matty 10 uint8 action;
130    
131 astrand 64 }
132     DESKSAVE_ORDER;
133 matty 10
134     typedef struct _TRIBLT_ORDER
135     {
136     uint8 colour_table;
137     uint8 cache_id;
138 jsorg71 375 sint16 x;
139     sint16 y;
140     sint16 cx;
141     sint16 cy;
142 matty 10 uint8 opcode;
143 jsorg71 375 sint16 srcx;
144     sint16 srcy;
145 jsorg71 309 uint32 bgcolour;
146     uint32 fgcolour;
147 matty 10 BRUSH brush;
148     uint16 cache_idx;
149     uint16 unknown;
150    
151 astrand 64 }
152     TRIBLT_ORDER;
153 matty 10
154     typedef struct _MEMBLT_ORDER
155     {
156     uint8 colour_table;
157     uint8 cache_id;
158 jsorg71 375 sint16 x;
159     sint16 y;
160     sint16 cx;
161     sint16 cy;
162 matty 10 uint8 opcode;
163 jsorg71 375 sint16 srcx;
164     sint16 srcy;
165 matty 10 uint16 cache_idx;
166    
167 astrand 64 }
168     MEMBLT_ORDER;
169 matty 10
170 matty 15 #define MAX_DATA 256
171    
172 jdmeijer 831 typedef struct _POLYGON_ORDER
173     {
174     sint16 x;
175     sint16 y;
176     uint8 opcode;
177     uint8 fillmode;
178     uint32 fgcolour;
179     uint8 npoints;
180     uint8 datasize;
181     uint8 data[MAX_DATA];
182    
183     }
184     POLYGON_ORDER;
185    
186     typedef struct _POLYGON2_ORDER
187     {
188     sint16 x;
189     sint16 y;
190     uint8 opcode;
191     uint8 fillmode;
192     uint32 bgcolour;
193     uint32 fgcolour;
194     BRUSH brush;
195     uint8 npoints;
196     uint8 datasize;
197     uint8 data[MAX_DATA];
198    
199     }
200     POLYGON2_ORDER;
201    
202 matty 15 typedef struct _POLYLINE_ORDER
203     {
204 jsorg71 375 sint16 x;
205     sint16 y;
206 matthewc 168 uint8 opcode;
207 jsorg71 309 uint32 fgcolour;
208 matty 15 uint8 lines;
209     uint8 datasize;
210     uint8 data[MAX_DATA];
211    
212 astrand 64 }
213     POLYLINE_ORDER;
214 matty 15
215 jdmeijer 831 typedef struct _ELLIPSE_ORDER
216     {
217     sint16 left;
218     sint16 top;
219     sint16 right;
220     sint16 bottom;
221     uint8 opcode;
222     uint8 fillmode;
223     uint32 fgcolour;
224    
225     }
226     ELLIPSE_ORDER;
227    
228     typedef struct _ELLIPSE2_ORDER
229     {
230     sint16 left;
231     sint16 top;
232     sint16 right;
233     sint16 bottom;
234     uint8 opcode;
235     uint8 fillmode;
236     BRUSH brush;
237     uint32 bgcolour;
238     uint32 fgcolour;
239    
240     }
241     ELLIPSE2_ORDER;
242    
243 matty 10 #define MAX_TEXT 256
244    
245     typedef struct _TEXT2_ORDER
246     {
247     uint8 font;
248     uint8 flags;
249     uint8 mixmode;
250     uint8 unknown;
251 jsorg71 309 uint32 fgcolour;
252     uint32 bgcolour;
253 jsorg71 375 sint16 clipleft;
254     sint16 cliptop;
255     sint16 clipright;
256     sint16 clipbottom;
257     sint16 boxleft;
258     sint16 boxtop;
259     sint16 boxright;
260     sint16 boxbottom;
261     sint16 x;
262     sint16 y;
263 matty 10 uint8 length;
264     uint8 text[MAX_TEXT];
265    
266 astrand 64 }
267     TEXT2_ORDER;
268 matty 10
269     typedef struct _RDP_ORDER_STATE
270     {
271     uint8 order_type;
272     BOUNDS bounds;
273    
274     DESTBLT_ORDER destblt;
275     PATBLT_ORDER patblt;
276     SCREENBLT_ORDER screenblt;
277     LINE_ORDER line;
278     RECT_ORDER rect;
279     DESKSAVE_ORDER desksave;
280     MEMBLT_ORDER memblt;
281     TRIBLT_ORDER triblt;
282 jdmeijer 831 POLYGON_ORDER polygon;
283     POLYGON2_ORDER polygon2;
284 matty 15 POLYLINE_ORDER polyline;
285 jdmeijer 831 ELLIPSE_ORDER ellipse;
286     ELLIPSE2_ORDER ellipse2;
287 matty 10 TEXT2_ORDER text2;
288    
289 astrand 64 }
290     RDP_ORDER_STATE;
291 matty 10
292     typedef struct _RDP_RAW_BMPCACHE_ORDER
293     {
294     uint8 cache_id;
295     uint8 pad1;
296     uint8 width;
297     uint8 height;
298     uint8 bpp;
299     uint16 bufsize;
300     uint16 cache_idx;
301     uint8 *data;
302    
303 astrand 64 }
304     RDP_RAW_BMPCACHE_ORDER;
305 matty 10
306     typedef struct _RDP_BMPCACHE_ORDER
307     {
308     uint8 cache_id;
309     uint8 pad1;
310     uint8 width;
311     uint8 height;
312     uint8 bpp;
313     uint16 bufsize;
314     uint16 cache_idx;
315     uint16 pad2;
316     uint16 size;
317     uint16 row_size;
318     uint16 final_size;
319     uint8 *data;
320    
321 astrand 64 }
322     RDP_BMPCACHE_ORDER;
323 matty 10
324 jsorg71 725 /* RDP_BMPCACHE2_ORDER */
325     #define ID_MASK 0x0007
326     #define MODE_MASK 0x0038
327     #define SQUARE 0x0080
328     #define PERSIST 0x0100
329     #define FLAG_51_UNKNOWN 0x0800
330    
331     #define MODE_SHIFT 3
332    
333     #define LONG_FORMAT 0x80
334 astrand 738 #define BUFSIZE_MASK 0x3FFF /* or 0x1FFF? */
335 jsorg71 725
336 matty 10 #define MAX_GLYPH 32
337    
338     typedef struct _RDP_FONT_GLYPH
339     {
340     uint16 character;
341     uint16 unknown;
342     uint16 baseline;
343     uint16 width;
344     uint16 height;
345     uint8 data[MAX_GLYPH];
346    
347 astrand 64 }
348     RDP_FONT_GLYPH;
349 matty 10
350     #define MAX_GLYPHS 256
351    
352     typedef struct _RDP_FONTCACHE_ORDER
353     {
354     uint8 font;
355     uint8 nglyphs;
356     RDP_FONT_GLYPH glyphs[MAX_GLYPHS];
357    
358 astrand 64 }
359     RDP_FONTCACHE_ORDER;
360 matty 10
361     typedef struct _RDP_COLCACHE_ORDER
362     {
363     uint8 cache_id;
364     COLOURMAP map;
365    
366 astrand 64 }
367     RDP_COLCACHE_ORDER;

  ViewVC Help
Powered by ViewVC 1.1.26