VirtualBox

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

Last change on this file since 23746 was 21217, checked in by vboxsync, 15 years ago

include/VBox/*.h: Mark which components the header files relate to.

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