1 /**
2  * WinPR: Windows Portable Runtime
3  * User Environment
4  *
5  * Copyright 2014 Marc-Andre Moreau <marcandre.moreau@gmail.com>
6  * Copyright 2015 DI (FH) Martin Haimberger <martin.haimberger@thincast.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *     http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  */
20 
21 #ifndef WINPR_USER_H
22 #define WINPR_USER_H
23 
24 #include <winpr/wtypes.h>
25 
26 /**
27  * Standard Clipboard Formats
28  */
29 
30 #ifndef _WIN32
31 
32 #define MB_OK 0x00000000L
33 #define MB_OKCANCEL 0x00000001L
34 #define MB_ABORTRETRYIGNORE 0x00000002L
35 #define MB_YESNOCANCEL 0x00000003L
36 #define MB_YESNO 0x00000004L
37 #define MB_RETRYCANCEL 0x00000005L
38 #define MB_CANCELTRYCONTINUE 0x00000006L
39 
40 #define IDOK 1
41 #define IDCANCEL 2
42 #define IDABORT 3
43 #define IDRETRY 4
44 #define IDIGNORE 5
45 #define IDYES 6
46 #define IDNO 7
47 #define IDTRYAGAIN 10
48 #define IDCONTINUE 11
49 #define IDTIMEOUT 32000
50 #define IDASYNC 32001
51 
52 #define CF_RAW 0
53 #define CF_TEXT 1
54 #define CF_BITMAP 2
55 #define CF_METAFILEPICT 3
56 #define CF_SYLK 4
57 #define CF_DIF 5
58 #define CF_TIFF 6
59 #define CF_OEMTEXT 7
60 #define CF_DIB 8
61 #define CF_PALETTE 9
62 #define CF_PENDATA 10
63 #define CF_RIFF 11
64 #define CF_WAVE 12
65 #define CF_UNICODETEXT 13
66 #define CF_ENHMETAFILE 14
67 #define CF_HDROP 15
68 #define CF_LOCALE 16
69 #define CF_DIBV5 17
70 #define CF_MAX 18
71 
72 #define CF_OWNERDISPLAY 0x0080
73 #define CF_DSPTEXT 0x0081
74 #define CF_DSPBITMAP 0x0082
75 #define CF_DSPMETAFILEPICT 0x0083
76 #define CF_DSPENHMETAFILE 0x008E
77 
78 #define CF_PRIVATEFIRST 0x0200
79 #define CF_PRIVATELAST 0x02FF
80 
81 #define CF_GDIOBJFIRST 0x0300
82 #define CF_GDIOBJLAST 0x03FF
83 
84 /* Windows Metafile Picture Format */
85 
86 #define MM_TEXT 1
87 #define MM_LOMETRIC 2
88 #define MM_HIMETRIC 3
89 #define MM_LOENGLISH 4
90 #define MM_HIENGLISH 5
91 #define MM_TWIPS 6
92 #define MM_ISOTROPIC 7
93 #define MM_ANISOTROPIC 8
94 
95 #define MM_MIN MM_TEXT
96 #define MM_MAX MM_ANISOTROPIC
97 #define MM_MAX_FIXEDSCALE MM_TWIPS
98 
99 #endif
100 
101 /**
102  * Bitmap Definitions
103  */
104 
105 #if !defined(_WIN32)
106 
107 #pragma pack(push, 1)
108 
109 typedef LONG FXPT16DOT16, FAR *LPFXPT16DOT16;
110 typedef LONG FXPT2DOT30, FAR *LPFXPT2DOT30;
111 
112 typedef struct tagCIEXYZ
113 {
114 	FXPT2DOT30 ciexyzX;
115 	FXPT2DOT30 ciexyzY;
116 	FXPT2DOT30 ciexyzZ;
117 } CIEXYZ;
118 
119 typedef CIEXYZ FAR* LPCIEXYZ;
120 
121 typedef struct tagICEXYZTRIPLE
122 {
123 	CIEXYZ ciexyzRed;
124 	CIEXYZ ciexyzGreen;
125 	CIEXYZ ciexyzBlue;
126 } CIEXYZTRIPLE;
127 
128 typedef CIEXYZTRIPLE FAR* LPCIEXYZTRIPLE;
129 
130 typedef struct tagBITMAP
131 {
132 	LONG bmType;
133 	LONG bmWidth;
134 	LONG bmHeight;
135 	LONG bmWidthBytes;
136 	WORD bmPlanes;
137 	WORD bmBitsPixel;
138 	LPVOID bmBits;
139 } BITMAP, *PBITMAP, NEAR *NPBITMAP, FAR *LPBITMAP;
140 
141 typedef struct tagRGBTRIPLE
142 {
143 	BYTE rgbtBlue;
144 	BYTE rgbtGreen;
145 	BYTE rgbtRed;
146 } RGBTRIPLE, *PRGBTRIPLE, NEAR *NPRGBTRIPLE, FAR *LPRGBTRIPLE;
147 
148 typedef struct tagRGBQUAD
149 {
150 	BYTE rgbBlue;
151 	BYTE rgbGreen;
152 	BYTE rgbRed;
153 	BYTE rgbReserved;
154 } RGBQUAD;
155 
156 typedef RGBQUAD FAR* LPRGBQUAD;
157 
158 #define BI_RGB 0
159 #define BI_RLE8 1
160 #define BI_RLE4 2
161 #define BI_BITFIELDS 3
162 #define BI_JPEG 4
163 #define BI_PNG 5
164 
165 #define PROFILE_LINKED 'LINK'
166 #define PROFILE_EMBEDDED 'MBED'
167 
168 typedef struct tagBITMAPINFOHEADER
169 {
170 	DWORD biSize;
171 	LONG biWidth;
172 	LONG biHeight;
173 	WORD biPlanes;
174 	WORD biBitCount;
175 	DWORD biCompression;
176 	DWORD biSizeImage;
177 	LONG biXPelsPerMeter;
178 	LONG biYPelsPerMeter;
179 	DWORD biClrUsed;
180 	DWORD biClrImportant;
181 } BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER;
182 
183 typedef struct tagBITMAPINFO
184 {
185 	BITMAPINFOHEADER bmiHeader;
186 	RGBQUAD bmiColors[1];
187 } BITMAPINFO, FAR *LPBITMAPINFO, *PBITMAPINFO;
188 
189 typedef enum _ORIENTATION_PREFERENCE
190 {
191 	ORIENTATION_PREFERENCE_NONE = 0x0,
192 	ORIENTATION_PREFERENCE_LANDSCAPE = 0x1,
193 
194 	ORIENTATION_PREFERENCE_PORTRAIT = 0x2,
195 	ORIENTATION_PREFERENCE_LANDSCAPE_FLIPPED = 0x4,
196 	ORIENTATION_PREFERENCE_PORTRAIT_FLIPPED = 0x8
197 } ORIENTATION_PREFERENCE;
198 
199 #pragma pack(pop)
200 
201 #endif
202 
203 #if !defined(_WIN32) || defined(_UWP)
204 
205 #pragma pack(push, 1)
206 
207 typedef struct tagBITMAPCOREHEADER
208 {
209 	DWORD bcSize;
210 	WORD bcWidth;
211 	WORD bcHeight;
212 	WORD bcPlanes;
213 	WORD bcBitCount;
214 } BITMAPCOREHEADER, FAR *LPBITMAPCOREHEADER, *PBITMAPCOREHEADER;
215 
216 typedef struct
217 {
218 	DWORD bV4Size;
219 	LONG bV4Width;
220 	LONG bV4Height;
221 	WORD bV4Planes;
222 	WORD bV4BitCount;
223 	DWORD bV4V4Compression;
224 	DWORD bV4SizeImage;
225 	LONG bV4XPelsPerMeter;
226 	LONG bV4YPelsPerMeter;
227 	DWORD bV4ClrUsed;
228 	DWORD bV4ClrImportant;
229 	DWORD bV4RedMask;
230 	DWORD bV4GreenMask;
231 	DWORD bV4BlueMask;
232 	DWORD bV4AlphaMask;
233 	DWORD bV4CSType;
234 	CIEXYZTRIPLE bV4Endpoints;
235 	DWORD bV4GammaRed;
236 	DWORD bV4GammaGreen;
237 	DWORD bV4GammaBlue;
238 } BITMAPV4HEADER, FAR *LPBITMAPV4HEADER, *PBITMAPV4HEADER;
239 
240 typedef struct
241 {
242 	DWORD bV5Size;
243 	LONG bV5Width;
244 	LONG bV5Height;
245 	WORD bV5Planes;
246 	WORD bV5BitCount;
247 	DWORD bV5Compression;
248 	DWORD bV5SizeImage;
249 	LONG bV5XPelsPerMeter;
250 	LONG bV5YPelsPerMeter;
251 	DWORD bV5ClrUsed;
252 	DWORD bV5ClrImportant;
253 	DWORD bV5RedMask;
254 	DWORD bV5GreenMask;
255 	DWORD bV5BlueMask;
256 	DWORD bV5AlphaMask;
257 	DWORD bV5CSType;
258 	CIEXYZTRIPLE bV5Endpoints;
259 	DWORD bV5GammaRed;
260 	DWORD bV5GammaGreen;
261 	DWORD bV5GammaBlue;
262 	DWORD bV5Intent;
263 	DWORD bV5ProfileData;
264 	DWORD bV5ProfileSize;
265 	DWORD bV5Reserved;
266 } BITMAPV5HEADER, FAR *LPBITMAPV5HEADER, *PBITMAPV5HEADER;
267 
268 typedef struct tagBITMAPCOREINFO
269 {
270 	BITMAPCOREHEADER bmciHeader;
271 	RGBTRIPLE bmciColors[1];
272 } BITMAPCOREINFO, FAR *LPBITMAPCOREINFO, *PBITMAPCOREINFO;
273 
274 typedef struct tagBITMAPFILEHEADER
275 {
276 	WORD bfType;
277 	DWORD bfSize;
278 	WORD bfReserved1;
279 	WORD bfReserved2;
280 	DWORD bfOffBits;
281 } BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;
282 
283 #pragma pack(pop)
284 
285 #endif
286 
287 #ifdef __cplusplus
288 extern "C"
289 {
290 #endif
291 
292 #ifdef __cplusplus
293 }
294 #endif
295 
296 #endif /* WINPR_USER_H */
297