OSDN Git Service

Avoid an implication that the API is exclusively 32-bit.
[mingw/mingw-org-wsl.git] / wslapi / include / gdiplus / gdiplusmetaheader.h
1 /*\r
2  * gdiplusmetaheader.h\r
3  *\r
4  * GDI+ metafile header structure\r
5  *\r
6  * This file is part of the w32api package.\r
7  *\r
8  * Contributors:\r
9  *   Created by Markus Koenig <markus@stber-koenig.de>\r
10  *\r
11  * THIS SOFTWARE IS NOT COPYRIGHTED\r
12  *\r
13  * This source code is offered for use in the public domain. You may\r
14  * use, modify or distribute it freely.\r
15  *\r
16  * This code is distributed in the hope that it will be useful but\r
17  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY\r
18  * DISCLAIMED. This includes but is not limited to warranties of\r
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
20  *\r
21  */\r
22 \r
23 #ifndef __GDIPLUS_METAHEADER_H\r
24 #define __GDIPLUS_METAHEADER_H\r
25 #if __GNUC__ >=3\r
26 #pragma GCC system_header\r
27 #endif\r
28 \r
29 \r
30 /*\r
31  * FIXME: is 1 the correct value for GDIP_EMFPLUSFLAGS_DISPLAY? This number\r
32  * has been determined by calling Metafile::GetMetafileHeader() on a EMF+\r
33  * metafile which was recorded on a display device context (SampleMetafile.emf).\r
34  */\r
35 #ifdef __cplusplus\r
36 const UINT GDIP_EMFPLUSFLAGS_DISPLAY = 1;\r
37 #else\r
38 #define GDIP_EMFPLUSFLAGS_DISPLAY ((UINT) 1)\r
39 #endif\r
40 \r
41 typedef struct tagENHMETAHEADER3 {\r
42         DWORD iType;\r
43         DWORD nSize;\r
44         RECTL rclBounds;\r
45         RECTL rclFrame;\r
46         DWORD dSignature;\r
47         DWORD nVersion;\r
48         DWORD nBytes;\r
49         DWORD nRecords;\r
50         WORD nHandles;\r
51         WORD sReserved;\r
52         DWORD nDescription;\r
53         DWORD offDescription;\r
54         DWORD nPalEntries;\r
55         SIZEL szlDevice;\r
56         SIZEL szlMillimeters;\r
57 } ENHMETAHEADER3,*LPENHMETAHEADER3;\r
58 \r
59 typedef struct PWMFRect16 {\r
60         INT16 Left;\r
61         INT16 Top;\r
62         INT16 Right;\r
63         INT16 Bottom;\r
64 } PWMFRect16;\r
65 \r
66 typedef struct WmfPlaceableFileHeader {\r
67         UINT32 Key;\r
68         INT16 Hmf;\r
69         PWMFRect16 BoundingBox;\r
70         INT16 Inch;\r
71         UINT32 Reserved;\r
72         INT16 Checksum;\r
73 } WmfPlaceableFileHeader;\r
74 \r
75 typedef struct MetafileHeader {\r
76         MetafileType Type;\r
77         UINT Size;\r
78         UINT Version;\r
79         UINT EmfPlusFlags;\r
80         REAL DpiX;\r
81         REAL DpiY;\r
82         INT X;\r
83         INT Y;\r
84         INT Width;\r
85         INT Height;\r
86         __extension__ union {\r
87                 METAHEADER WmfHeader;\r
88                 ENHMETAHEADER3 EmfHeader;\r
89         };\r
90         INT EmfPlusHeaderSize;\r
91         INT LogicalDpiX;\r
92         INT LogicalDpiY;\r
93 \r
94         #ifdef __cplusplus\r
95         public:\r
96         void GetBounds(Rect *rect) const\r
97         {\r
98                 if (rect)\r
99                 {\r
100                         rect->X = X;\r
101                         rect->Y = Y;\r
102                         rect->Width = Width;\r
103                         rect->Height = Height;\r
104                 }\r
105         }\r
106         REAL GetDpiX() const\r
107         {\r
108                 return DpiX;\r
109         }\r
110         REAL GetDpiY() const\r
111         {\r
112                 return DpiY;\r
113         }\r
114         const ENHMETAHEADER3* GetEmfHeader() const\r
115         {\r
116                 if (Type == MetafileTypeEmf\r
117                                 || Type == MetafileTypeEmfPlusOnly\r
118                                 || Type == MetafileTypeEmfPlusDual)\r
119                 {\r
120                         return &EmfHeader;\r
121                 }\r
122                 else\r
123                 {\r
124                         return NULL;\r
125                 }\r
126         }\r
127         UINT GetEmfPlusFlags() const\r
128         {\r
129                 return EmfPlusFlags;\r
130         }\r
131         UINT GetMetafileSize() const\r
132         {\r
133                 return Size;\r
134         }\r
135         MetafileType GetType() const\r
136         {\r
137                 return Type;\r
138         }\r
139         UINT GetVersion() const\r
140         {\r
141                 return Version;\r
142         }\r
143         const METAHEADER* GetWmfHeader() const\r
144         {\r
145                 if (Type == MetafileTypeWmf || Type == MetafileTypeWmfPlaceable)\r
146                 {\r
147                         return &WmfHeader;\r
148                 }\r
149                 else\r
150                 {\r
151                         return NULL;\r
152                 }\r
153         }\r
154         BOOL IsDisplay() const\r
155         {\r
156                 return EmfPlusFlags == GDIP_EMFPLUSFLAGS_DISPLAY;\r
157         }\r
158         BOOL IsEmf() const\r
159         {\r
160                 return Type == MetafileTypeEmf;\r
161         }\r
162         BOOL IsEmfOrEmfPlus() const\r
163         {\r
164                 return Type == MetafileTypeEmf\r
165                         || Type == MetafileTypeEmfPlusOnly\r
166                         || Type == MetafileTypeEmfPlusDual;\r
167         }\r
168         BOOL IsEmfPlus() const\r
169         {\r
170                 return Type == MetafileTypeEmfPlusOnly\r
171                         || Type == MetafileTypeEmfPlusDual;\r
172         }\r
173         BOOL IsEmfPlusDual() const\r
174         {\r
175                 return Type == MetafileTypeEmfPlusDual;\r
176         }\r
177         BOOL IsEmfPlusOnly() const\r
178         {\r
179                 return Type == MetafileTypeEmfPlusOnly;\r
180         }\r
181         BOOL IsWmf() const\r
182         {\r
183                 return Type == MetafileTypeWmf\r
184                         || Type == MetafileTypeWmfPlaceable;\r
185         }\r
186         BOOL IsWmfPlaceable() const\r
187         {\r
188                 return Type == MetafileTypeWmfPlaceable;\r
189         }\r
190         #endif\r
191 } MetafileHeader;\r
192 \r
193 #endif /* __GDIPLUS_METAHEADER_H */\r