VirtualBox

source: vbox/trunk/include/VBox/RemoteDesktop/VRDEOrders.h@ 73768

Last change on this file since 73768 was 69107, checked in by vboxsync, 7 years ago

include/VBox/: (C) year

  • 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 Extension (VRDE) - Graphics Orders Structures.
3 */
4
5/*
6 * Copyright (C) 2006-2017 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_RemoteDesktop_VRDEOrders_h
27#define ___VBox_RemoteDesktop_VRDEOrders_h
28
29#include <iprt/types.h>
30
31/*
32 * VRDE 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 * VRDEORDERHDR - Describes the affected rectangle.
36 * Then VRDE orders follow:
37 * VRDEORDERCODE;
38 * a VRDEORDER* structure.
39 *
40 * If size of the memory block is equal to the VRDEORDERHDR, then a bitmap
41 * update is assumed.
42 */
43
44/* VRDE order codes. Must be >= 0, because the VRDE internally
45 * uses negative values to mark some operations.
46 */
47#define VRDE_ORDER_DIRTY_RECT (0)
48#define VRDE_ORDER_SOLIDRECT (1)
49#define VRDE_ORDER_SOLIDBLT (2)
50#define VRDE_ORDER_DSTBLT (3)
51#define VRDE_ORDER_SCREENBLT (4)
52#define VRDE_ORDER_PATBLTBRUSH (5)
53#define VRDE_ORDER_MEMBLT (6)
54#define VRDE_ORDER_CACHED_BITMAP (7)
55#define VRDE_ORDER_DELETED_BITMAP (8)
56#define VRDE_ORDER_LINE (9)
57#define VRDE_ORDER_BOUNDS (10)
58#define VRDE_ORDER_REPEAT (11)
59#define VRDE_ORDER_POLYLINE (12)
60#define VRDE_ORDER_ELLIPSE (13)
61#define VRDE_ORDER_SAVESCREEN (14)
62#define VRDE_ORDER_TEXT (15)
63
64/* 128 bit bitmap hash. */
65typedef uint8_t VRDEBITMAPHASH[16];
66
67#pragma pack(1)
68typedef struct _VRDEORDERHDR
69{
70 /** Coordinates of the affected rectangle. */
71 int16_t x;
72 int16_t y;
73 uint16_t w;
74 uint16_t h;
75} VRDEORDERHDR;
76
77typedef struct _VRDEORDERCODE
78{
79 uint32_t u32Code;
80} VRDEORDERCODE;
81
82typedef struct _VRDEORDERPOINT
83{
84 int16_t x;
85 int16_t y;
86} VRDEORDERPOINT;
87
88typedef struct _VRDEORDERPOLYPOINTS
89{
90 uint8_t c;
91 VRDEORDERPOINT a[16];
92} VRDEORDERPOLYPOINTS;
93
94typedef struct _VRDEORDERAREA
95{
96 int16_t x;
97 int16_t y;
98 uint16_t w;
99 uint16_t h;
100} VRDEORDERAREA;
101
102typedef struct _VRDEORDERRECT
103{
104 int16_t left;
105 int16_t top;
106 int16_t right;
107 int16_t bottom;
108} VRDEORDERRECT;
109
110
111typedef struct _VRDEORDERBOUNDS
112{
113 VRDEORDERPOINT pt1;
114 VRDEORDERPOINT pt2;
115} VRDEORDERBOUNDS;
116
117typedef struct _VRDEORDERREPEAT
118{
119 VRDEORDERBOUNDS bounds;
120} VRDEORDERREPEAT;
121
122
123/* Header for bitmap bits. */
124typedef struct _VRDEDATABITS
125{
126 uint32_t cb; /* Size of bitmap data without the header. */
127 int16_t x;
128 int16_t y;
129 uint16_t cWidth;
130 uint16_t cHeight;
131 uint8_t cbPixel;
132 /* Bitmap data follow. */
133} VRDEDATABITS;
134
135typedef struct _VRDEORDERSOLIDRECT
136{
137 int16_t x;
138 int16_t y;
139 uint16_t w;
140 uint16_t h;
141 uint32_t rgb;
142} VRDEORDERSOLIDRECT;
143
144typedef struct _VRDEORDERSOLIDBLT
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} VRDEORDERSOLIDBLT;
153
154typedef struct _VRDEORDERDSTBLT
155{
156 int16_t x;
157 int16_t y;
158 uint16_t w;
159 uint16_t h;
160 uint8_t rop;
161} VRDEORDERDSTBLT;
162
163typedef struct _VRDEORDERSCREENBLT
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} VRDEORDERSCREENBLT;
173
174typedef struct _VRDEORDERPATBLTBRUSH
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} VRDEORDERPATBLTBRUSH;
187
188typedef struct _VRDEORDERMEMBLT
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 VRDEBITMAPHASH hash;
198} VRDEORDERMEMBLT;
199
200typedef struct _VRDEORDERCACHEDBITMAP
201{
202 VRDEBITMAPHASH hash;
203 /* VRDEDATABITS and the bitmap data follow. */
204} VRDEORDERCACHEDBITMAP;
205
206typedef struct _VRDEORDERDELETEDBITMAP
207{
208 VRDEBITMAPHASH hash;
209} VRDEORDERDELETEDBITMAP;
210
211typedef struct _VRDEORDERLINE
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} VRDEORDERLINE;
224
225typedef struct _VRDEORDERPOLYLINE
226{
227 VRDEORDERPOINT ptStart;
228 uint8_t mix;
229 uint32_t rgb;
230 VRDEORDERPOLYPOINTS points;
231} VRDEORDERPOLYLINE;
232
233typedef struct _VRDEORDERELLIPSE
234{
235 VRDEORDERPOINT pt1;
236 VRDEORDERPOINT pt2;
237 uint8_t mix;
238 uint8_t fillMode;
239 uint32_t rgb;
240} VRDEORDERELLIPSE;
241
242typedef struct _VRDEORDERSAVESCREEN
243{
244 VRDEORDERPOINT pt1;
245 VRDEORDERPOINT pt2;
246 uint8_t ident;
247 uint8_t restore;
248} VRDEORDERSAVESCREEN;
249
250typedef struct _VRDEORDERGLYPH
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} VRDEORDERGLYPH;
270
271typedef struct _VRDEORDERTEXT
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} VRDEORDERTEXT;
295#pragma pack()
296
297#endif
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use