/[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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 10 - (show annotations)
Tue Aug 15 10:23:24 2000 UTC (23 years, 8 months ago) by matty
File MIME type: text/plain
File size: 4287 byte(s)
Major commit of work from laptop - done in various free moments.
Implemented encryption layer and some basic licensing negotiation.
Reorganised code somewhat. While this is not quite as clean, it is
a lot faster - our parser speed was becoming a bottle-neck.

1 /*
2 rdesktop: A Remote Desktop Protocol client.
3 RDP order processing
4 Copyright (C) Matthew Chapman 1999-2000
5
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 RDP_ORDER_RECT = 10,
37 RDP_ORDER_DESKSAVE = 11,
38 RDP_ORDER_MEMBLT = 13,
39 RDP_ORDER_TRIBLT = 14,
40 RDP_ORDER_TEXT2 = 27
41 };
42
43 enum RDP_SECONDARY_ORDER_TYPE
44 {
45 RDP_ORDER_RAW_BMPCACHE = 0,
46 RDP_ORDER_COLCACHE = 1,
47 RDP_ORDER_BMPCACHE = 2,
48 RDP_ORDER_FONTCACHE = 3
49 };
50
51 typedef struct _DESTBLT_ORDER
52 {
53 uint16 x;
54 uint16 y;
55 uint16 cx;
56 uint16 cy;
57 uint8 opcode;
58
59 } DESTBLT_ORDER;
60
61 typedef struct _PATBLT_ORDER
62 {
63 uint16 x;
64 uint16 y;
65 uint16 cx;
66 uint16 cy;
67 uint8 opcode;
68 uint8 bgcolour;
69 uint8 fgcolour;
70 BRUSH brush;
71
72 } PATBLT_ORDER;
73
74 typedef struct _SCREENBLT_ORDER
75 {
76 uint16 x;
77 uint16 y;
78 uint16 cx;
79 uint16 cy;
80 uint8 opcode;
81 uint16 srcx;
82 uint16 srcy;
83
84 } SCREENBLT_ORDER;
85
86 typedef struct _LINE_ORDER
87 {
88 uint16 mixmode;
89 uint16 startx;
90 uint16 starty;
91 uint16 endx;
92 uint16 endy;
93 uint8 bgcolour;
94 uint8 opcode;
95 PEN pen;
96
97 } LINE_ORDER;
98
99 typedef struct _RECT_ORDER
100 {
101 uint16 x;
102 uint16 y;
103 uint16 cx;
104 uint16 cy;
105 uint8 colour;
106
107 } RECT_ORDER;
108
109 typedef struct _DESKSAVE_ORDER
110 {
111 uint32 offset;
112 uint16 left;
113 uint16 top;
114 uint16 right;
115 uint16 bottom;
116 uint8 action;
117
118 } DESKSAVE_ORDER;
119
120 typedef struct _TRIBLT_ORDER
121 {
122 uint8 colour_table;
123 uint8 cache_id;
124 uint16 x;
125 uint16 y;
126 uint16 cx;
127 uint16 cy;
128 uint8 opcode;
129 uint16 srcx;
130 uint16 srcy;
131 uint8 bgcolour;
132 uint8 fgcolour;
133 BRUSH brush;
134 uint16 cache_idx;
135 uint16 unknown;
136
137 } TRIBLT_ORDER;
138
139 typedef struct _MEMBLT_ORDER
140 {
141 uint8 colour_table;
142 uint8 cache_id;
143 uint16 x;
144 uint16 y;
145 uint16 cx;
146 uint16 cy;
147 uint8 opcode;
148 uint16 srcx;
149 uint16 srcy;
150 uint16 cache_idx;
151
152 } MEMBLT_ORDER;
153
154 #define MAX_TEXT 256
155
156 typedef struct _TEXT2_ORDER
157 {
158 uint8 font;
159 uint8 flags;
160 uint8 mixmode;
161 uint8 unknown;
162 uint8 fgcolour;
163 uint8 bgcolour;
164 uint16 clipleft;
165 uint16 cliptop;
166 uint16 clipright;
167 uint16 clipbottom;
168 uint16 boxleft;
169 uint16 boxtop;
170 uint16 boxright;
171 uint16 boxbottom;
172 uint16 x;
173 uint16 y;
174 uint8 length;
175 uint8 text[MAX_TEXT];
176
177 } TEXT2_ORDER;
178
179 typedef struct _RDP_ORDER_STATE
180 {
181 uint8 order_type;
182 BOUNDS bounds;
183
184 DESTBLT_ORDER destblt;
185 PATBLT_ORDER patblt;
186 SCREENBLT_ORDER screenblt;
187 LINE_ORDER line;
188 RECT_ORDER rect;
189 DESKSAVE_ORDER desksave;
190 MEMBLT_ORDER memblt;
191 TRIBLT_ORDER triblt;
192 TEXT2_ORDER text2;
193
194 } RDP_ORDER_STATE;
195
196 typedef struct _RDP_RAW_BMPCACHE_ORDER
197 {
198 uint8 cache_id;
199 uint8 pad1;
200 uint8 width;
201 uint8 height;
202 uint8 bpp;
203 uint16 bufsize;
204 uint16 cache_idx;
205 uint8 *data;
206
207 } RDP_RAW_BMPCACHE_ORDER;
208
209 typedef struct _RDP_BMPCACHE_ORDER
210 {
211 uint8 cache_id;
212 uint8 pad1;
213 uint8 width;
214 uint8 height;
215 uint8 bpp;
216 uint16 bufsize;
217 uint16 cache_idx;
218 uint16 pad2;
219 uint16 size;
220 uint16 row_size;
221 uint16 final_size;
222 uint8 *data;
223
224 } RDP_BMPCACHE_ORDER;
225
226 #define MAX_GLYPH 32
227
228 typedef struct _RDP_FONT_GLYPH
229 {
230 uint16 character;
231 uint16 unknown;
232 uint16 baseline;
233 uint16 width;
234 uint16 height;
235 uint8 data[MAX_GLYPH];
236
237 } RDP_FONT_GLYPH;
238
239 #define MAX_GLYPHS 256
240
241 typedef struct _RDP_FONTCACHE_ORDER
242 {
243 uint8 font;
244 uint8 nglyphs;
245 RDP_FONT_GLYPH glyphs[MAX_GLYPHS];
246
247 } RDP_FONTCACHE_ORDER;
248
249 typedef struct _RDP_COLCACHE_ORDER
250 {
251 uint8 cache_id;
252 COLOURMAP map;
253
254 } RDP_COLCACHE_ORDER;

  ViewVC Help
Powered by ViewVC 1.1.26