VirtualBox

source: vbox/trunk/include/VBox/VRDPOrders.h@ 7124

Last change on this file since 7124 was 7028, checked in by vboxsync, 17 years ago

Updates to the VRDP text cache (disabled).

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.3 KB
Line 
1/** @file
2 * VBox Remote Desktop Protocol:
3 * VRDP orders structures.
4 */
5
6/*
7 * Copyright (C) 2006-2008 innotek GmbH
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 *
17 * The contents of this file may alternatively be used under the terms
18 * of the Common Development and Distribution License Version 1.0
19 * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
20 * VirtualBox OSE distribution, in which case the provisions of the
21 * CDDL are applicable instead of those of the GPL.
22 *
23 * You may elect to license modified versions of this file under the
24 * terms and conditions of either the GPL or the CDDL or both.
25 */
26
27#ifndef ___VBox_vrdporders_h
28#define ___VBox_vrdporders_h
29
30/*
31 * The VRDP server gets an information about a graphical update as a pointer
32 * to a memory block and the size of the memory block.
33 * The memory block layout is:
34 * VRDPORDERHDR - Describes the affected rectangle.
35 * Then VRDP orders follow:
36 * VRDPORDERCODE
37 * A VRDPORDER* structure.
38 *
39 * If size of the memory block is equal to the VRDPORDERHDR, then a bitmap
40 * update is assumed.
41 */
42
43/* 128 bit bitmap hash. */
44typedef uint8_t VRDPBITMAPHASH[16];
45
46#pragma pack(1)
47typedef struct _VRDPORDERHDR
48{
49 /** Coordinates of the affected rectangle. */
50 int16_t x;
51 int16_t y;
52 uint16_t w;
53 uint16_t h;
54} VRDPORDERHDR;
55
56typedef struct _VRDPORDERCODE
57{
58 uint32_t u32Code;
59} VRDPORDERCODE;
60
61/* VRDP order codes. Must be >= 0, because the VRDP server internally
62 * uses negative values to mark some operations.
63 */
64#define VRDP_ORDER_DIRTY_RECT (0)
65#define VRDP_ORDER_SOLIDRECT (1)
66#define VRDP_ORDER_SOLIDBLT (2)
67#define VRDP_ORDER_DSTBLT (3)
68#define VRDP_ORDER_SCREENBLT (4)
69#define VRDP_ORDER_PATBLTBRUSH (5)
70#define VRDP_ORDER_MEMBLT (6)
71#define VRDP_ORDER_CACHED_BITMAP (7)
72#define VRDP_ORDER_DELETED_BITMAP (8)
73#define VRDP_ORDER_LINE (9)
74#define VRDP_ORDER_BOUNDS (10)
75#define VRDP_ORDER_REPEAT (11)
76#define VRDP_ORDER_POLYLINE (12)
77#define VRDP_ORDER_ELLIPSE (13)
78#define VRDP_ORDER_SAVESCREEN (14)
79#define VRDP_ORDER_TEXT (15)
80
81typedef struct _VRDPORDERPOINT
82{
83 int16_t x;
84 int16_t y;
85} VRDPORDERPOINT;
86
87typedef struct _VRDPORDERPOLYPOINTS
88{
89 uint8_t c;
90 VRDPORDERPOINT a[16];
91} VRDPORDERPOLYPOINTS;
92
93typedef struct _VRDPORDERAREA
94{
95 int16_t x;
96 int16_t y;
97 uint16_t w;
98 uint16_t h;
99} VRDPORDERAREA;
100
101typedef struct _VRDPORDERRECT
102{
103 int16_t left;
104 int16_t top;
105 int16_t right;
106 int16_t bottom;
107} VRDPORDERRECT;
108
109
110typedef struct _VRDPORDERBOUNDS
111{
112 VRDPORDERPOINT pt1;
113 VRDPORDERPOINT pt2;
114} VRDPORDERBOUNDS;
115
116typedef struct _VRDPORDERREPEAT
117{
118 VRDPORDERBOUNDS bounds;
119} VRDPORDERREPEAT;
120
121
122/* Header for bitmap bits in VBVA VRDP operations. */
123typedef struct _VRDPDATABITS
124{
125 /* Size of bitmap data without the header. */
126 uint32_t cb;
127 int16_t x;
128 int16_t y;
129 uint16_t cWidth;
130 uint16_t cHeight;
131 uint8_t cbPixel;
132} VRDPDATABITS;
133
134typedef struct _VRDPORDERSOLIDRECT
135{
136 int16_t x;
137 int16_t y;
138 uint16_t w;
139 uint16_t h;
140 uint32_t rgb;
141} VRDPORDERSOLIDRECT;
142
143typedef struct _VRDPORDERSOLIDBLT
144{
145 int16_t x;
146 int16_t y;
147 uint16_t w;
148 uint16_t h;
149 uint32_t rgb;
150 uint8_t rop;
151} VRDPORDERSOLIDBLT;
152
153typedef struct _VRDPORDERDSTBLT
154{
155 int16_t x;
156 int16_t y;
157 uint16_t w;
158 uint16_t h;
159 uint8_t rop;
160} VRDPORDERDSTBLT;
161
162typedef struct _VRDPORDERSCREENBLT
163{
164 int16_t x;
165 int16_t y;
166 uint16_t w;
167 uint16_t h;
168 int16_t xSrc;
169 int16_t ySrc;
170 uint8_t rop;
171} VRDPORDERSCREENBLT;
172
173typedef struct _VRDPORDERPATBLTBRUSH
174{
175 int16_t x;
176 int16_t y;
177 uint16_t w;
178 uint16_t h;
179 int8_t xSrc;
180 int8_t ySrc;
181 uint32_t rgbFG;
182 uint32_t rgbBG;
183 uint8_t rop;
184 uint8_t pattern[8];
185} VRDPORDERPATBLTBRUSH;
186
187typedef struct _VRDPORDERMEMBLT
188{
189 int16_t x;
190 int16_t y;
191 uint16_t w;
192 uint16_t h;
193 int16_t xSrc;
194 int16_t ySrc;
195 uint8_t rop;
196 VRDPBITMAPHASH hash;
197} VRDPORDERMEMBLT;
198
199typedef struct _VRDPORDERCACHEDBITMAP
200{
201 VRDPBITMAPHASH hash;
202 /* VRDPDATABITS and the bitmap data follows. */
203} VRDPORDERCACHEDBITMAP;
204
205typedef struct _VRDPORDERDELETEDBITMAP
206{
207 VRDPBITMAPHASH hash;
208} VRDPORDERDELETEDBITMAP;
209
210typedef struct _VRDPORDERLINE
211{
212 int16_t x1;
213 int16_t y1;
214 int16_t x2;
215 int16_t y2;
216 int16_t xBounds1;
217 int16_t yBounds1;
218 int16_t xBounds2;
219 int16_t yBounds2;
220 uint8_t mix;
221 uint32_t rgb;
222} VRDPORDERLINE;
223
224typedef struct _VRDPORDERPOLYLINE
225{
226 VRDPORDERPOINT ptStart;
227 uint8_t mix;
228 uint32_t rgb;
229 VRDPORDERPOLYPOINTS points;
230} VRDPORDERPOLYLINE;
231
232typedef struct _VRDPORDERELLIPSE
233{
234 VRDPORDERPOINT pt1;
235 VRDPORDERPOINT pt2;
236 uint8_t mix;
237 uint8_t fillMode;
238 uint32_t rgb;
239} VRDPORDERELLIPSE;
240
241typedef struct _VRDPORDERSAVESCREEN
242{
243 VRDPORDERPOINT pt1;
244 VRDPORDERPOINT pt2;
245 uint8_t ident;
246 uint8_t restore;
247} VRDPORDERSAVESCREEN;
248
249typedef struct _VRDPORDERGLYPH
250{
251 uint32_t o32NextGlyph;
252 uint64_t u64Handle;
253
254 /* The glyph origin position on the screen. */
255 int16_t x;
256 int16_t y;
257
258 /* The glyph bitmap dimensions. Note w == h == 0 for the space character. */
259 uint16_t w;
260 uint16_t h;
261
262 /* The character origin in the bitmap. */
263 int16_t xOrigin;
264 int16_t yOrigin;
265
266 /* 1BPP bitmap. Rows are byte aligned. Size is (((w + 7)/8) * h + 3) & ~3. */
267 uint8_t au8Bitmap[1];
268} VRDPORDERGLYPH;
269
270typedef struct _VRDPORDERTEXT
271{
272 uint32_t cbOrder;
273
274 int16_t xBkGround;
275 int16_t yBkGround;
276 uint16_t wBkGround;
277 uint16_t hBkGround;
278
279 int16_t xOpaque;
280 int16_t yOpaque;
281 uint16_t wOpaque;
282 uint16_t hOpaque;
283
284 uint16_t u16MaxGlyph;
285
286 uint8_t u8Glyphs;
287 uint8_t u8Flags;
288 uint16_t u8CharInc;
289 uint32_t u32FgRGB;
290 uint32_t u32BgRGB;
291
292 /* u8Glyphs glyphs follow. Size of each glyph structure may vary. */
293} VRDPORDERTEXT;
294#pragma pack()
295
296#endif
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette