VirtualBox

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

Last change on this file since 7026 was 6973, checked in by vboxsync, 17 years ago

Initial commit of VRDP text cache (disabled).

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.2 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 _VRDPORDERBOUNDS
102{
103 VRDPORDERPOINT pt1;
104 VRDPORDERPOINT pt2;
105} VRDPORDERBOUNDS;
106
107typedef struct _VRDPORDERREPEAT
108{
109 VRDPORDERBOUNDS bounds;
110} VRDPORDERREPEAT;
111
112
113/* Header for bitmap bits in VBVA VRDP operations. */
114typedef struct _VRDPDATABITS
115{
116 /* Size of bitmap data without the header. */
117 uint32_t cb;
118 int16_t x;
119 int16_t y;
120 uint16_t cWidth;
121 uint16_t cHeight;
122 uint8_t cbPixel;
123} VRDPDATABITS;
124
125typedef struct _VRDPORDERSOLIDRECT
126{
127 int16_t x;
128 int16_t y;
129 uint16_t w;
130 uint16_t h;
131 uint32_t rgb;
132} VRDPORDERSOLIDRECT;
133
134typedef struct _VRDPORDERSOLIDBLT
135{
136 int16_t x;
137 int16_t y;
138 uint16_t w;
139 uint16_t h;
140 uint32_t rgb;
141 uint8_t rop;
142} VRDPORDERSOLIDBLT;
143
144typedef struct _VRDPORDERDSTBLT
145{
146 int16_t x;
147 int16_t y;
148 uint16_t w;
149 uint16_t h;
150 uint8_t rop;
151} VRDPORDERDSTBLT;
152
153typedef struct _VRDPORDERSCREENBLT
154{
155 int16_t x;
156 int16_t y;
157 uint16_t w;
158 uint16_t h;
159 int16_t xSrc;
160 int16_t ySrc;
161 uint8_t rop;
162} VRDPORDERSCREENBLT;
163
164typedef struct _VRDPORDERPATBLTBRUSH
165{
166 int16_t x;
167 int16_t y;
168 uint16_t w;
169 uint16_t h;
170 int8_t xSrc;
171 int8_t ySrc;
172 uint32_t rgbFG;
173 uint32_t rgbBG;
174 uint8_t rop;
175 uint8_t pattern[8];
176} VRDPORDERPATBLTBRUSH;
177
178typedef struct _VRDPORDERMEMBLT
179{
180 int16_t x;
181 int16_t y;
182 uint16_t w;
183 uint16_t h;
184 int16_t xSrc;
185 int16_t ySrc;
186 uint8_t rop;
187 VRDPBITMAPHASH hash;
188} VRDPORDERMEMBLT;
189
190typedef struct _VRDPORDERCACHEDBITMAP
191{
192 VRDPBITMAPHASH hash;
193 /* VRDPDATABITS and the bitmap data follows. */
194} VRDPORDERCACHEDBITMAP;
195
196typedef struct _VRDPORDERDELETEDBITMAP
197{
198 VRDPBITMAPHASH hash;
199} VRDPORDERDELETEDBITMAP;
200
201typedef struct _VRDPORDERLINE
202{
203 int16_t x1;
204 int16_t y1;
205 int16_t x2;
206 int16_t y2;
207 int16_t xBounds1;
208 int16_t yBounds1;
209 int16_t xBounds2;
210 int16_t yBounds2;
211 uint8_t mix;
212 uint32_t rgb;
213} VRDPORDERLINE;
214
215typedef struct _VRDPORDERPOLYLINE
216{
217 VRDPORDERPOINT ptStart;
218 uint8_t mix;
219 uint32_t rgb;
220 VRDPORDERPOLYPOINTS points;
221} VRDPORDERPOLYLINE;
222
223typedef struct _VRDPORDERELLIPSE
224{
225 VRDPORDERPOINT pt1;
226 VRDPORDERPOINT pt2;
227 uint8_t mix;
228 uint8_t fillMode;
229 uint32_t rgb;
230} VRDPORDERELLIPSE;
231
232typedef struct _VRDPORDERSAVESCREEN
233{
234 VRDPORDERPOINT pt1;
235 VRDPORDERPOINT pt2;
236 uint8_t ident;
237 uint8_t restore;
238} VRDPORDERSAVESCREEN;
239
240typedef struct _VRDPORDERGLYPH
241{
242 uint32_t o32NextGlyph;
243 uint64_t u64Handle;
244
245 /* The glyph origin position on the screen. */
246 int16_t x;
247 int16_t y;
248
249 /* The glyph bitmap dimensions. Note w == h == 0 for the space character. */
250 uint16_t w;
251 uint16_t h;
252
253 /* The character origin in the bitmap. */
254 int16_t xOrigin;
255 int16_t yOrigin;
256
257 /* 1BPP bitmap. Rows are byte aligned. Size is (((w + 7)/8) * h + 3) & ~3. */
258 uint8_t au8Bitmap[1];
259} VRDPORDERGLYPH;
260
261typedef struct _VRDPORDERTEXT
262{
263 uint32_t cbOrder;
264
265 int16_t xBkGround;
266 int16_t yBkGround;
267 uint16_t wBkGround;
268 uint16_t hBkGround;
269
270 int16_t xOpaque;
271 int16_t yOpaque;
272 uint16_t wOpaque;
273 uint16_t hOpaque;
274
275 uint16_t u16MaxGlyph;
276
277 uint8_t u8Glyphs;
278 uint8_t u8Flags;
279 uint16_t u8CharInc;
280 uint32_t u32FgRGB;
281 uint32_t u32BgRGB;
282
283 /* u8Glyphs glyphs follow. Size of each glyph structure may vary. */
284} VRDPORDERTEXT;
285#pragma pack()
286
287#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