VirtualBox

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

Last change on this file since 30040 was 28800, checked in by vboxsync, 15 years ago

Automated rebranding to Oracle copyright/license strings via filemuncher

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