Fix for metafile ExtTextOut that only includes the rectangle if either
[wine] / include / wtypes.h
1 /*
2  * Defines the basic types used by COM interfaces.
3  *
4  * Copyright (C) the Wine project
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  */
20
21 #ifndef __WINE_WTYPES_H
22 #define __WINE_WTYPES_H
23
24 #include "basetsd.h"
25 #include "guiddef.h"
26 #include "rpc.h"
27 #include "rpcndr.h"
28
29 typedef void* HMETAFILEPICT;
30
31 typedef WORD CLIPFORMAT, *LPCLIPFORMAT;
32
33 /* FIXME: does not belong here */
34 typedef CHAR            OLECHAR16;
35 typedef LPSTR           LPOLESTR16;
36 typedef LPCSTR          LPCOLESTR16;
37 typedef OLECHAR16       *BSTR16;
38 typedef BSTR16          *LPBSTR16;
39 #define OLESTR16(x) x
40
41 typedef WCHAR           OLECHAR;
42 typedef LPWSTR          LPOLESTR;
43 typedef LPCWSTR         LPCOLESTR;
44 typedef OLECHAR        *BSTR;
45 typedef BSTR           *LPBSTR;
46 #ifndef __WINE__
47 #define OLESTR(str)     WINE_UNICODE_TEXT(str)
48 #endif
49
50 #ifndef _DWORDLONG_
51 #define _DWORDLONG_
52 typedef __uint64 DWORDLONG, *PDWORDLONG;
53 #endif
54
55 #ifndef _ULONGLONG_
56 #define _ULONGLONG_
57 typedef __int64 LONGLONG, *PLONGLONG;
58 typedef __uint64 ULONGLONG, *PULONGLONG;
59 #endif
60
61 typedef enum tagDVASPECT
62 {
63        DVASPECT_CONTENT   = 1,
64        DVASPECT_THUMBNAIL = 2,
65        DVASPECT_ICON      = 4,
66        DVASPECT_DOCPRINT  = 8
67 } DVASPECT;
68
69 typedef enum tagSTGC
70 {
71         STGC_DEFAULT = 0,
72         STGC_OVERWRITE = 1,
73         STGC_ONLYIFCURRENT = 2,
74         STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4,
75         STGC_CONSOLIDATE = 8
76 } STGC;
77
78 typedef enum tagSTGMOVE
79 {
80         STGMOVE_MOVE = 0,
81         STGMOVE_COPY = 1,
82         STGMOVE_SHALLOWCOPY = 2
83 } STGMOVE;
84
85
86 typedef struct _COAUTHIDENTITY
87 {
88     USHORT* User;
89     ULONG UserLength;
90     USHORT* Domain;
91     ULONG DomainLength;
92     USHORT* Password;
93     ULONG PasswordLength;
94     ULONG Flags;
95 } COAUTHIDENTITY;
96
97 typedef struct _COAUTHINFO
98 {
99     DWORD dwAuthnSvc;
100     DWORD dwAuthzSvc;
101     LPWSTR pwszServerPrincName;
102     DWORD dwAuthnLevel;
103     DWORD dwImpersonationLevel;
104     COAUTHIDENTITY* pAuthIdentityData;
105     DWORD dwCapabilities;
106 } COAUTHINFO;
107
108 typedef struct _COSERVERINFO
109 {
110     DWORD dwReserved1;
111     LPWSTR pwszName;
112     COAUTHINFO* pAuthInfo;
113     DWORD dwReserved2;
114 } COSERVERINFO;
115
116 typedef enum tagCLSCTX
117 {
118     CLSCTX_INPROC_SERVER     = 0x1,
119     CLSCTX_INPROC_HANDLER    = 0x2,
120     CLSCTX_LOCAL_SERVER      = 0x4,
121     CLSCTX_INPROC_SERVER16   = 0x8,
122     CLSCTX_REMOTE_SERVER     = 0x10,
123     CLSCTX_INPROC_HANDLER16  = 0x20,
124     CLSCTX_INPROC_SERVERX86  = 0x40,
125     CLSCTX_INPROC_HANDLERX86 = 0x80,
126     CLSCTX_ESERVER_HANDLER   = 0x100,
127     CLSCTX_NO_CODE_DOWNLOAD  = 0x400,
128     CLSCTX_NO_CUSTOM_MARSHAL = 0x1000,
129     CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000,
130     CLSCTX_NO_FAILURE_LOG   = 0x4000,
131     CLSCTX_DISABLE_AAA      = 0x8000,
132     CLSCTX_ENABLE_AAA       = 0x10000,
133     CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000
134 } CLSCTX;
135
136 #define CLSCTX_INPROC           (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER)
137 #define CLSCTX_ALL              (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)
138 #define CLSCTX_SERVER           (CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)
139
140 typedef enum tagMSHLFLAGS
141 {
142     MSHLFLAGS_NORMAL        = 0,
143     MSHLFLAGS_TABLESTRONG   = 1,
144     MSHLFLAGS_TABLEWEAK     = 2,
145     MSHLFLAGS_NOPING        = 4
146 } MSHLFLAGS;
147
148 typedef enum tagMSHCTX
149 {
150     MSHCTX_LOCAL            = 0,
151     MSHCTX_NOSHAREDMEM      = 1,
152     MSHCTX_DIFFERENTMACHINE = 2,
153     MSHCTX_INPROC           = 3,
154     MSHCTX_CROSSCTX         = 4
155 } MSHCTX;
156
157 typedef unsigned short VARTYPE;
158
159 typedef ULONG PROPID;
160
161 #ifndef _tagBLOB_DEFINED
162 #define _tagBLOB_DEFINED
163 #define _BLOB_DEFINED
164 #define _LPBLOB_DEFINED
165 typedef struct tagBLOB
166 {
167     ULONG cbSize;
168     BYTE *pBlobData;
169 } BLOB, *LPBLOB;
170 #endif
171
172 #ifndef _tagCY_DEFINED
173 #define _tagCY_DEFINED
174
175 typedef union tagCY {
176     struct {
177 #ifdef WORDS_BIGENDIAN
178         LONG  Hi;
179         ULONG Lo;
180 #else
181         ULONG Lo;
182         LONG  Hi;
183 #endif
184     } DUMMYSTRUCTNAME;
185     LONGLONG int64;
186 } CY;
187
188 #endif /* _tagCY_DEFINED */
189
190 typedef struct tagDEC {
191     USHORT wReserved;
192     union {
193         struct {
194             BYTE scale;
195             BYTE sign;
196         } DUMMYSTRUCTNAME1;
197         USHORT signscale;
198     } DUMMYUNIONNAME1;
199     ULONG Hi32;
200     union {
201         struct {
202 #ifdef WORDS_BIGENDIAN
203             ULONG Mid32;
204             ULONG Lo32;
205 #else
206             ULONG Lo32;
207             ULONG Mid32;
208 #endif
209         } DUMMYSTRUCTNAME2;
210         ULONGLONG Lo64;
211     } DUMMYUNIONNAME2;
212 } DECIMAL;
213
214 #define DECIMAL_NEG ((BYTE)0x80)
215 #ifndef NONAMELESSUNION
216 #define DECIMAL_SETZERO(d) \
217         do {(d).Lo64 = 0; (d).Hi32 = 0; (d).signscale = 0;} while (0)
218 #else
219 #define DECIMAL_SETZERO(d) \
220         do {(d).u2.Lo64 = 0; (d).Hi32 = 0; (d).u1.signscale = 0;} while (0)
221 #endif
222
223 /*
224  * 0 == FALSE and -1 == TRUE
225  */
226 #define VARIANT_TRUE     ((VARIANT_BOOL)0xFFFF)
227 #define VARIANT_FALSE    ((VARIANT_BOOL)0x0000)
228 typedef short VARIANT_BOOL,_VARIANT_BOOL;
229
230 typedef struct tagCLIPDATA
231 {
232     ULONG cbSize;
233     long ulClipFmt;
234     BYTE *pClipData;
235 } CLIPDATA;
236
237 /* Macro to calculate the size of the above pClipData */
238 #define CBPCLIPDATA(clipdata)    ( (clipdata).cbSize - sizeof((clipdata).ulClipFmt) )
239
240 typedef LONG SCODE;
241
242 #ifndef _FILETIME_
243 #define _FILETIME_
244 /* 64 bit number of 100 nanoseconds intervals since January 1, 1601 */
245 typedef struct
246 {
247   DWORD  dwLowDateTime;
248   DWORD  dwHighDateTime;
249 } FILETIME, *LPFILETIME;
250 #endif /* _FILETIME_ */
251
252 #ifndef _SECURITY_DEFINED
253 #define _SECURITY_DEFINED
254
255 typedef struct {
256     BYTE Value[6];
257 } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY;
258
259 typedef struct _SID {
260     BYTE Revision;
261     BYTE SubAuthorityCount;
262     SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
263     DWORD SubAuthority[1];
264 } SID,*PSID;
265
266 /*
267  * ACL
268  */
269
270 typedef struct _ACL {
271     BYTE AclRevision;
272     BYTE Sbz1;
273     WORD AclSize;
274     WORD AceCount;
275     WORD Sbz2;
276 } ACL, *PACL;
277
278 typedef USHORT SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
279
280 /* The security descriptor structure */
281 typedef struct {
282     BYTE Revision;
283     BYTE Sbz1;
284     SECURITY_DESCRIPTOR_CONTROL Control;
285     PSID Owner;
286     PSID Group;
287     PACL Sacl;
288     PACL Dacl;
289 } SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR;
290
291 #endif /* _SECURITY_DEFINED */
292
293 #ifndef _ROTFLAGS_DEFINED
294 #define _ROTFLAGS_DEFINED
295 #define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1
296 #define ROTFLAGS_ALLOWANYCLIENT 0x2
297 #endif /* !defined(_ROTFLAGS_DEFINED) */
298
299 #endif /* __WINE_WTYPES_H */