1 /**
2  * @file gdiplusenums.h
3  * Copyright 2012, 2013 MinGW.org project
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation
8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9  * and/or sell copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice (including the next
13  * paragraph) shall be included in all copies or substantial portions of the
14  * Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22  * DEALINGS IN THE SOFTWARE.
23  */
24 /* Created by Markus Koenig <markus@stber-koenig.de> */
25 #ifndef __GDIPLUS_ENUMS_H
26 #define __GDIPLUS_ENUMS_H
27 #pragma GCC system_header
28 #include <_mingw.h>
29 
30 /*
31  * GDI+ enumerations
32  */
33 
34 typedef enum BrushType {
35 	BrushTypeSolidColor = 0,
36 	BrushTypeHatchFill = 1,
37 	BrushTypeTextureFill = 2,
38 	BrushTypePathGradient = 3,
39 	BrushTypeLinearGradient = 4
40 } BrushType;
41 
42 typedef enum CombineMode {
43 	CombineModeReplace = 0,
44 	CombineModeIntersect = 1,
45 	CombineModeUnion = 2,
46 	CombineModeXor = 3,
47 	CombineModeExclude = 4,
48 	CombineModeComplement = 5
49 } CombineMode;
50 
51 typedef enum CompositingMode {
52 	CompositingModeSourceOver = 0,
53 	CompositingModeSourceCopy = 1
54 } CompositingMode;
55 
56 typedef enum CompositingQuality {
57 	CompositingQualityDefault = 0,
58 	CompositingQualityHighSpeed = 1,
59 	CompositingQualityHighQuality = 2,
60 	CompositingQualityGammaCorrected = 3,
61 	CompositingQualityAssumeLinear = 4
62 } CompositingQuality;
63 
64 typedef enum CoordinateSpace {
65 	CoordinateSpaceWorld = 0,
66 	CoordinateSpacePage = 1,
67 	CoordinateSpaceDevice = 2
68 } CoordinateSpace;
69 
70 typedef enum CustomLineCapType {
71 	CustomLineCapTypeDefault = 0,
72 	CustomLineCapTypeAdjustableArrow = 1
73 } CustomLineCapType;
74 
75 typedef enum DashCap {
76 	DashCapFlat = 0,
77 	DashCapRound = 2,
78 	DashCapTriangle = 3
79 } DashCap;
80 
81 typedef enum DashStyle {
82 	DashStyleSolid = 0,
83 	DashStyleDash = 1,
84 	DashStyleDot = 2,
85 	DashStyleDashDot = 3,
86 	DashStyleDashDotDot = 4,
87 	DashStyleCustom = 5
88 } DashStyle;
89 
90 typedef enum DitherType {
91 	DitherTypeNone = 0,
92 	DitherTypeSolid = 1,
93 	DitherTypeOrdered4x4 = 2,
94 	DitherTypeOrdered8x8 = 3,
95 	DitherTypeOrdered16x16 = 4,
96 	DitherTypeOrdered91x91 = 5,
97 	DitherTypeSpiral4x4 = 6,
98 	DitherTypeSpiral8x8 = 7,
99 	DitherTypeDualSpiral4x4 = 8,
100 	DitherTypeDualSpiral8x8 = 9,
101 	DitherTypeErrorDiffusion = 10
102 } DitherType;
103 
104 typedef enum DriverStringOptions {
105 	DriverStringOptionsCmapLookup = 1,
106 	DriverStringOptionsVertical = 2,
107 	DriverStringOptionsRealizedAdvance = 4,
108 	DriverStringOptionsLimitSubpixel = 8
109 } DriverStringOptions;
110 
111 #define GDIP_WMF_RECORD_TO_EMFPLUS(meta) ((meta) | 0x10000)
112 #define GDIP_EMFPLUS_RECORD_BASE (0x4000)
113 typedef enum EmfPlusRecordType {
114 	WmfRecordTypeSetBkColor                    = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETBKCOLOR),
115 	WmfRecordTypeSetBkMode                     = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETBKMODE),
116 	WmfRecordTypeSetMapMode                    = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETMAPMODE),
117 	WmfRecordTypeSetROP2                       = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETROP2),
118 	WmfRecordTypeSetRelAbs                     = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETRELABS),
119 	WmfRecordTypeSetPolyFillMode               = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETPOLYFILLMODE),
120 	WmfRecordTypeSetStretchBltMode             = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETSTRETCHBLTMODE),
121 	WmfRecordTypeSetTextCharExtra              = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTCHAREXTRA),
122 	WmfRecordTypeSetTextColor                  = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTCOLOR),
123 	WmfRecordTypeSetTextJustification          = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTJUSTIFICATION),
124 	WmfRecordTypeSetWindowOrg                  = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETWINDOWORG),
125 	WmfRecordTypeSetWindowExt                  = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETWINDOWEXT),
126 	WmfRecordTypeSetViewportOrg                = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETVIEWPORTORG),
127 	WmfRecordTypeSetViewportExt                = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETVIEWPORTEXT),
128 	WmfRecordTypeOffsetWindowOrg               = GDIP_WMF_RECORD_TO_EMFPLUS(META_OFFSETWINDOWORG),
129 	WmfRecordTypeScaleWindowExt                = GDIP_WMF_RECORD_TO_EMFPLUS(META_SCALEWINDOWEXT),
130 	WmfRecordTypeOffsetViewportOrg             = GDIP_WMF_RECORD_TO_EMFPLUS(META_OFFSETVIEWPORTORG),
131 	WmfRecordTypeScaleViewportExt              = GDIP_WMF_RECORD_TO_EMFPLUS(META_SCALEVIEWPORTEXT),
132 	WmfRecordTypeLineTo                        = GDIP_WMF_RECORD_TO_EMFPLUS(META_LINETO),
133 	WmfRecordTypeMoveTo                        = GDIP_WMF_RECORD_TO_EMFPLUS(META_MOVETO),
134 	WmfRecordTypeExcludeClipRect               = GDIP_WMF_RECORD_TO_EMFPLUS(META_EXCLUDECLIPRECT),
135 	WmfRecordTypeIntersectClipRect             = GDIP_WMF_RECORD_TO_EMFPLUS(META_INTERSECTCLIPRECT),
136 	WmfRecordTypeArc                           = GDIP_WMF_RECORD_TO_EMFPLUS(META_ARC),
137 	WmfRecordTypeEllipse                       = GDIP_WMF_RECORD_TO_EMFPLUS(META_ELLIPSE),
138 	WmfRecordTypeFloodFill                     = GDIP_WMF_RECORD_TO_EMFPLUS(META_FLOODFILL),
139 	WmfRecordTypePie                           = GDIP_WMF_RECORD_TO_EMFPLUS(META_PIE),
140 	WmfRecordTypeRectangle                     = GDIP_WMF_RECORD_TO_EMFPLUS(META_RECTANGLE),
141 	WmfRecordTypeRoundRect                     = GDIP_WMF_RECORD_TO_EMFPLUS(META_ROUNDRECT),
142 	WmfRecordTypePatBlt                        = GDIP_WMF_RECORD_TO_EMFPLUS(META_PATBLT),
143 	WmfRecordTypeSaveDC                        = GDIP_WMF_RECORD_TO_EMFPLUS(META_SAVEDC),
144 	WmfRecordTypeSetPixel                      = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETPIXEL),
145 	WmfRecordTypeOffsetClipRgn                 = GDIP_WMF_RECORD_TO_EMFPLUS(META_OFFSETCLIPRGN),
146 	WmfRecordTypeTextOut                       = GDIP_WMF_RECORD_TO_EMFPLUS(META_TEXTOUT),
147 	WmfRecordTypeBitBlt                        = GDIP_WMF_RECORD_TO_EMFPLUS(META_BITBLT),
148 	WmfRecordTypeStretchBlt                    = GDIP_WMF_RECORD_TO_EMFPLUS(META_STRETCHBLT),
149 	WmfRecordTypePolygon                       = GDIP_WMF_RECORD_TO_EMFPLUS(META_POLYGON),
150 	WmfRecordTypePolyline                      = GDIP_WMF_RECORD_TO_EMFPLUS(META_POLYLINE),
151 	WmfRecordTypeEscape                        = GDIP_WMF_RECORD_TO_EMFPLUS(META_ESCAPE),
152 	WmfRecordTypeRestoreDC                     = GDIP_WMF_RECORD_TO_EMFPLUS(META_RESTOREDC),
153 	WmfRecordTypeFillRegion                    = GDIP_WMF_RECORD_TO_EMFPLUS(META_FILLREGION),
154 	WmfRecordTypeFrameRegion                   = GDIP_WMF_RECORD_TO_EMFPLUS(META_FRAMEREGION),
155 	WmfRecordTypeInvertRegion                  = GDIP_WMF_RECORD_TO_EMFPLUS(META_INVERTREGION),
156 	WmfRecordTypePaintRegion                   = GDIP_WMF_RECORD_TO_EMFPLUS(META_PAINTREGION),
157 	WmfRecordTypeSelectClipRegion              = GDIP_WMF_RECORD_TO_EMFPLUS(META_SELECTCLIPREGION),
158 	WmfRecordTypeSelectObject                  = GDIP_WMF_RECORD_TO_EMFPLUS(META_SELECTOBJECT),
159 	WmfRecordTypeSetTextAlign                  = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTALIGN),
160 	WmfRecordTypeDrawText                      = GDIP_WMF_RECORD_TO_EMFPLUS(0x062F),
161 	WmfRecordTypeChord                         = GDIP_WMF_RECORD_TO_EMFPLUS(META_CHORD),
162 	WmfRecordTypeSetMapperFlags                = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETMAPPERFLAGS),
163 	WmfRecordTypeExtTextOut                    = GDIP_WMF_RECORD_TO_EMFPLUS(META_EXTTEXTOUT),
164 	WmfRecordTypeSetDIBToDev                   = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETDIBTODEV),
165 	WmfRecordTypeSelectPalette                 = GDIP_WMF_RECORD_TO_EMFPLUS(META_SELECTPALETTE),
166 	WmfRecordTypeRealizePalette                = GDIP_WMF_RECORD_TO_EMFPLUS(META_REALIZEPALETTE),
167 	WmfRecordTypeAnimatePalette                = GDIP_WMF_RECORD_TO_EMFPLUS(META_ANIMATEPALETTE),
168 	WmfRecordTypeSetPalEntries                 = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETPALENTRIES),
169 	WmfRecordTypePolyPolygon                   = GDIP_WMF_RECORD_TO_EMFPLUS(META_POLYPOLYGON),
170 	WmfRecordTypeResizePalette                 = GDIP_WMF_RECORD_TO_EMFPLUS(META_RESIZEPALETTE),
171 	WmfRecordTypeDIBBitBlt                     = GDIP_WMF_RECORD_TO_EMFPLUS(META_DIBBITBLT),
172 	WmfRecordTypeDIBStretchBlt                 = GDIP_WMF_RECORD_TO_EMFPLUS(META_DIBSTRETCHBLT),
173 	WmfRecordTypeDIBCreatePatternBrush         = GDIP_WMF_RECORD_TO_EMFPLUS(META_DIBCREATEPATTERNBRUSH),
174 	WmfRecordTypeStretchDIB                    = GDIP_WMF_RECORD_TO_EMFPLUS(META_STRETCHDIB),
175 	WmfRecordTypeExtFloodFill                  = GDIP_WMF_RECORD_TO_EMFPLUS(META_EXTFLOODFILL),
176 	WmfRecordTypeSetLayout                     = GDIP_WMF_RECORD_TO_EMFPLUS(0x0149),
177 	WmfRecordTypeResetDC                       = GDIP_WMF_RECORD_TO_EMFPLUS(0x014C),
178 	WmfRecordTypeStartDoc                      = GDIP_WMF_RECORD_TO_EMFPLUS(0x014D),
179 	WmfRecordTypeStartPage                     = GDIP_WMF_RECORD_TO_EMFPLUS(0x004F),
180 	WmfRecordTypeEndPage                       = GDIP_WMF_RECORD_TO_EMFPLUS(0x0050),
181 	WmfRecordTypeAbortDoc                      = GDIP_WMF_RECORD_TO_EMFPLUS(0x0052),
182 	WmfRecordTypeEndDoc                        = GDIP_WMF_RECORD_TO_EMFPLUS(0x005E),
183 	WmfRecordTypeDeleteObject                  = GDIP_WMF_RECORD_TO_EMFPLUS(META_DELETEOBJECT),
184 	WmfRecordTypeCreatePalette                 = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEPALETTE),
185 	WmfRecordTypeCreateBrush                   = GDIP_WMF_RECORD_TO_EMFPLUS(0x00F8),
186 	WmfRecordTypeCreatePatternBrush            = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEPATTERNBRUSH),
187 	WmfRecordTypeCreatePenIndirect             = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEPENINDIRECT),
188 	WmfRecordTypeCreateFontIndirect            = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEFONTINDIRECT),
189 	WmfRecordTypeCreateBrushIndirect           = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEBRUSHINDIRECT),
190 	WmfRecordTypeCreateBitmapIndirect          = GDIP_WMF_RECORD_TO_EMFPLUS(0x02FD),
191 	WmfRecordTypeCreateBitmap                  = GDIP_WMF_RECORD_TO_EMFPLUS(0x06FE),
192 	WmfRecordTypeCreateRegion                  = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEREGION),
193 	EmfRecordTypeHeader                        = EMR_HEADER,
194 	EmfRecordTypePolyBezier                    = EMR_POLYBEZIER,
195 	EmfRecordTypePolygon                       = EMR_POLYGON,
196 	EmfRecordTypePolyline                      = EMR_POLYLINE,
197 	EmfRecordTypePolyBezierTo                  = EMR_POLYBEZIERTO,
198 	EmfRecordTypePolyLineTo                    = EMR_POLYLINETO,
199 	EmfRecordTypePolyPolyline                  = EMR_POLYPOLYLINE,
200 	EmfRecordTypePolyPolygon                   = EMR_POLYPOLYGON,
201 	EmfRecordTypeSetWindowExtEx                = EMR_SETWINDOWEXTEX,
202 	EmfRecordTypeSetWindowOrgEx                = EMR_SETWINDOWORGEX,
203 	EmfRecordTypeSetViewportExtEx              = EMR_SETVIEWPORTEXTEX,
204 	EmfRecordTypeSetViewportOrgEx              = EMR_SETVIEWPORTORGEX,
205 	EmfRecordTypeSetBrushOrgEx                 = EMR_SETBRUSHORGEX,
206 	EmfRecordTypeEOF                           = EMR_EOF,
207 	EmfRecordTypeSetPixelV                     = EMR_SETPIXELV,
208 	EmfRecordTypeSetMapperFlags                = EMR_SETMAPPERFLAGS,
209 	EmfRecordTypeSetMapMode                    = EMR_SETMAPMODE,
210 	EmfRecordTypeSetBkMode                     = EMR_SETBKMODE,
211 	EmfRecordTypeSetPolyFillMode               = EMR_SETPOLYFILLMODE,
212 	EmfRecordTypeSetROP2                       = EMR_SETROP2,
213 	EmfRecordTypeSetStretchBltMode             = EMR_SETSTRETCHBLTMODE,
214 	EmfRecordTypeSetTextAlign                  = EMR_SETTEXTALIGN,
215 	EmfRecordTypeSetColorAdjustment            = EMR_SETCOLORADJUSTMENT,
216 	EmfRecordTypeSetTextColor                  = EMR_SETTEXTCOLOR,
217 	EmfRecordTypeSetBkColor                    = EMR_SETBKCOLOR,
218 	EmfRecordTypeOffsetClipRgn                 = EMR_OFFSETCLIPRGN,
219 	EmfRecordTypeMoveToEx                      = EMR_MOVETOEX,
220 	EmfRecordTypeSetMetaRgn                    = EMR_SETMETARGN,
221 	EmfRecordTypeExcludeClipRect               = EMR_EXCLUDECLIPRECT,
222 	EmfRecordTypeIntersectClipRect             = EMR_INTERSECTCLIPRECT,
223 	EmfRecordTypeScaleViewportExtEx            = EMR_SCALEVIEWPORTEXTEX,
224 	EmfRecordTypeScaleWindowExtEx              = EMR_SCALEWINDOWEXTEX,
225 	EmfRecordTypeSaveDC                        = EMR_SAVEDC,
226 	EmfRecordTypeRestoreDC                     = EMR_RESTOREDC,
227 	EmfRecordTypeSetWorldTransform             = EMR_SETWORLDTRANSFORM,
228 	EmfRecordTypeModifyWorldTransform          = EMR_MODIFYWORLDTRANSFORM,
229 	EmfRecordTypeSelectObject                  = EMR_SELECTOBJECT,
230 	EmfRecordTypeCreatePen                     = EMR_CREATEPEN,
231 	EmfRecordTypeCreateBrushIndirect           = EMR_CREATEBRUSHINDIRECT,
232 	EmfRecordTypeDeleteObject                  = EMR_DELETEOBJECT,
233 	EmfRecordTypeAngleArc                      = EMR_ANGLEARC,
234 	EmfRecordTypeEllipse                       = EMR_ELLIPSE,
235 	EmfRecordTypeRectangle                     = EMR_RECTANGLE,
236 	EmfRecordTypeRoundRect                     = EMR_ROUNDRECT,
237 	EmfRecordTypeArc                           = EMR_ARC,
238 	EmfRecordTypeChord                         = EMR_CHORD,
239 	EmfRecordTypePie                           = EMR_PIE,
240 	EmfRecordTypeSelectPalette                 = EMR_SELECTPALETTE,
241 	EmfRecordTypeCreatePalette                 = EMR_CREATEPALETTE,
242 	EmfRecordTypeSetPaletteEntries             = EMR_SETPALETTEENTRIES,
243 	EmfRecordTypeResizePalette                 = EMR_RESIZEPALETTE,
244 	EmfRecordTypeRealizePalette                = EMR_REALIZEPALETTE,
245 	EmfRecordTypeExtFloodFill                  = EMR_EXTFLOODFILL,
246 	EmfRecordTypeLineTo                        = EMR_LINETO,
247 	EmfRecordTypeArcTo                         = EMR_ARCTO,
248 	EmfRecordTypePolyDraw                      = EMR_POLYDRAW,
249 	EmfRecordTypeSetArcDirection               = EMR_SETARCDIRECTION,
250 	EmfRecordTypeSetMiterLimit                 = EMR_SETMITERLIMIT,
251 	EmfRecordTypeBeginPath                     = EMR_BEGINPATH,
252 	EmfRecordTypeEndPath                       = EMR_ENDPATH,
253 	EmfRecordTypeCloseFigure                   = EMR_CLOSEFIGURE,
254 	EmfRecordTypeFillPath                      = EMR_FILLPATH,
255 	EmfRecordTypeStrokeAndFillPath             = EMR_STROKEANDFILLPATH,
256 	EmfRecordTypeStrokePath                    = EMR_STROKEPATH,
257 	EmfRecordTypeFlattenPath                   = EMR_FLATTENPATH,
258 	EmfRecordTypeWidenPath                     = EMR_WIDENPATH,
259 	EmfRecordTypeSelectClipPath                = EMR_SELECTCLIPPATH,
260 	EmfRecordTypeAbortPath                     = EMR_ABORTPATH,
261 	EmfRecordTypeReserved_069                  = 69,
262 	EmfRecordTypeGdiComment                    = EMR_GDICOMMENT,
263 	EmfRecordTypeFillRgn                       = EMR_FILLRGN,
264 	EmfRecordTypeFrameRgn                      = EMR_FRAMERGN,
265 	EmfRecordTypeInvertRgn                     = EMR_INVERTRGN,
266 	EmfRecordTypePaintRgn                      = EMR_PAINTRGN,
267 	EmfRecordTypeExtSelectClipRgn              = EMR_EXTSELECTCLIPRGN,
268 	EmfRecordTypeBitBlt                        = EMR_BITBLT,
269 	EmfRecordTypeStretchBlt                    = EMR_STRETCHBLT,
270 	EmfRecordTypeMaskBlt                       = EMR_MASKBLT,
271 	EmfRecordTypePlgBlt                        = EMR_PLGBLT,
272 	EmfRecordTypeSetDIBitsToDevice             = EMR_SETDIBITSTODEVICE,
273 	EmfRecordTypeStretchDIBits                 = EMR_STRETCHDIBITS,
274 	EmfRecordTypeExtCreateFontIndirect         = EMR_EXTCREATEFONTINDIRECTW,
275 	EmfRecordTypeExtTextOutA                   = EMR_EXTTEXTOUTA,
276 	EmfRecordTypeExtTextOutW                   = EMR_EXTTEXTOUTW,
277 	EmfRecordTypePolyBezier16                  = EMR_POLYBEZIER16,
278 	EmfRecordTypePolygon16                     = EMR_POLYGON16,
279 	EmfRecordTypePolyline16                    = EMR_POLYLINE16,
280 	EmfRecordTypePolyBezierTo16                = EMR_POLYBEZIERTO16,
281 	EmfRecordTypePolylineTo16                  = EMR_POLYLINETO16,
282 	EmfRecordTypePolyPolyline16                = EMR_POLYPOLYLINE16,
283 	EmfRecordTypePolyPolygon16                 = EMR_POLYPOLYGON16,
284 	EmfRecordTypePolyDraw16                    = EMR_POLYDRAW16,
285 	EmfRecordTypeCreateMonoBrush               = EMR_CREATEMONOBRUSH,
286 	EmfRecordTypeCreateDIBPatternBrushPt       = EMR_CREATEDIBPATTERNBRUSHPT,
287 	EmfRecordTypeExtCreatePen                  = EMR_EXTCREATEPEN,
288 	EmfRecordTypePolyTextOutA                  = EMR_POLYTEXTOUTA,
289 	EmfRecordTypePolyTextOutW                  = EMR_POLYTEXTOUTW,
290 	EmfRecordTypeSetICMMode                    = 98,
291 	EmfRecordTypeCreateColorSpace              = 99,
292 	EmfRecordTypeSetColorSpace                 = 100,
293 	EmfRecordTypeDeleteColorSpace              = 101,
294 	EmfRecordTypeGLSRecord                     = 102,
295 	EmfRecordTypeGLSBoundedRecord              = 103,
296 	EmfRecordTypePixelFormat                   = 104,
297 	EmfRecordTypeDrawEscape                    = 105,
298 	EmfRecordTypeExtEscape                     = 106,
299 	EmfRecordTypeStartDoc                      = 107,
300 	EmfRecordTypeSmallTextOut                  = 108,
301 	EmfRecordTypeForceUFIMapping               = 109,
302 	EmfRecordTypeNamedEscape                   = 110,
303 	EmfRecordTypeColorCorrectPalette           = 111,
304 	EmfRecordTypeSetICMProfileA                = 112,
305 	EmfRecordTypeSetICMProfileW                = 113,
306 	EmfRecordTypeAlphaBlend                    = 114,
307 	EmfRecordTypeSetLayout                     = 115,
308 	EmfRecordTypeTransparentBlt                = 116,
309 	EmfRecordTypeReserved_117                  = 117,
310 	EmfRecordTypeGradientFill                  = 118,
311 	EmfRecordTypeSetLinkedUFIs                 = 119,
312 	EmfRecordTypeSetTextJustification          = 120,
313 	EmfRecordTypeColorMatchToTargetW           = 121,
314 	EmfRecordTypeCreateColorSpaceW             = 122,
315 	EmfRecordTypeMax                           = 122,
316 	EmfRecordTypeMin                           = 1,
317 	EmfPlusRecordTypeInvalid                   = GDIP_EMFPLUS_RECORD_BASE,
318 	EmfPlusRecordTypeHeader,
319 	EmfPlusRecordTypeEndOfFile,
320 	EmfPlusRecordTypeComment,
321 	EmfPlusRecordTypeGetDC,
322 	EmfPlusRecordTypeMultiFormatStart,
323 	EmfPlusRecordTypeMultiFormatSection,
324 	EmfPlusRecordTypeMultiFormatEnd,
325 	EmfPlusRecordTypeObject,
326 	EmfPlusRecordTypeClear,
327 	EmfPlusRecordTypeFillRects,
328 	EmfPlusRecordTypeDrawRects,
329 	EmfPlusRecordTypeFillPolygon,
330 	EmfPlusRecordTypeDrawLines,
331 	EmfPlusRecordTypeFillEllipse,
332 	EmfPlusRecordTypeDrawEllipse,
333 	EmfPlusRecordTypeFillPie,
334 	EmfPlusRecordTypeDrawPie,
335 	EmfPlusRecordTypeDrawArc,
336 	EmfPlusRecordTypeFillRegion,
337 	EmfPlusRecordTypeFillPath,
338 	EmfPlusRecordTypeDrawPath,
339 	EmfPlusRecordTypeFillClosedCurve,
340 	EmfPlusRecordTypeDrawClosedCurve,
341 	EmfPlusRecordTypeDrawCurve,
342 	EmfPlusRecordTypeDrawBeziers,
343 	EmfPlusRecordTypeDrawImage,
344 	EmfPlusRecordTypeDrawImagePoints,
345 	EmfPlusRecordTypeDrawString,
346 	EmfPlusRecordTypeSetRenderingOrigin,
347 	EmfPlusRecordTypeSetAntiAliasMode,
348 	EmfPlusRecordTypeSetTextRenderingHint,
349 	EmfPlusRecordTypeSetTextContrast,
350 	EmfPlusRecordTypeSetGammaValue,
351 	EmfPlusRecordTypeSetInterpolationMode,
352 	EmfPlusRecordTypeSetPixelOffsetMode,
353 	EmfPlusRecordTypeSetCompositingMode,
354 	EmfPlusRecordTypeSetCompositingQuality,
355 	EmfPlusRecordTypeSave,
356 	EmfPlusRecordTypeRestore,
357 	EmfPlusRecordTypeBeginContainer,
358 	EmfPlusRecordTypeBeginContainerNoParams,
359 	EmfPlusRecordTypeEndContainer,
360 	EmfPlusRecordTypeSetWorldTransform,
361 	EmfPlusRecordTypeResetWorldTransform,
362 	EmfPlusRecordTypeMultiplyWorldTransform,
363 	EmfPlusRecordTypeTranslateWorldTransform,
364 	EmfPlusRecordTypeScaleWorldTransform,
365 	EmfPlusRecordTypeRotateWorldTransform,
366 	EmfPlusRecordTypeSetPageTransform,
367 	EmfPlusRecordTypeResetClip,
368 	EmfPlusRecordTypeSetClipRect,
369 	EmfPlusRecordTypeSetClipPath,
370 	EmfPlusRecordTypeSetClipRegion,
371 	EmfPlusRecordTypeOffsetClip,
372 	EmfPlusRecordTypeDrawDriverString,
373 	EmfPlusRecordTypeStrokeFillPath,
374 	EmfPlusRecordTypeSerializableObject,
375 	EmfPlusRecordTypeSetTSGraphics,
376 	EmfPlusRecordTypeSetTSClip,
377 	EmfPlusRecordTotal,
378 	EmfPlusRecordTypeMax = EmfPlusRecordTotal-1,
379 	EmfPlusRecordTypeMin = EmfPlusRecordTypeHeader
380 } EmfPlusRecordType;
381 
382 typedef enum EmfToWmfBitsFlags {
383 	EmfToWmfBitsFlagsDefault = 0,
384 	EmfToWmfBitsFlagsEmbedEmf = 1,
385 	EmfToWmfBitsFlagsIncludePlaceable = 2,
386 	EmfToWmfBitsFlagsNoXORClip = 4
387 } EmfToWmfBitsFlags;
388 
389 typedef enum EmfType {
390 	EmfTypeEmfOnly = 3,
391 	EmfTypeEmfPlusOnly = 4,
392 	EmfTypeEmfPlusDual = 5
393 } EmfType;
394 
395 typedef enum EncoderParameterValueType {
396 	EncoderParameterValueTypeByte = 1,
397 	EncoderParameterValueTypeASCII = 2,
398 	EncoderParameterValueTypeShort = 3,
399 	EncoderParameterValueTypeLong = 4,
400 	EncoderParameterValueTypeRational = 5,
401 	EncoderParameterValueTypeLongRange = 6,
402 	EncoderParameterValueTypeUndefined = 7,
403 	EncoderParameterValueTypeRationalRange = 8,
404 	EncoderParameterValueTypePointer = 9
405 } EncoderParameterValueType;
406 
407 typedef enum EncoderValue {
408 	EncoderValueColorTypeCMYK = 0,
409 	EncoderValueColorTypeYCCK = 1,
410 	EncoderValueCompressionLZW = 2,
411 	EncoderValueCompressionCCITT3 = 3,
412 	EncoderValueCompressionCCITT4 = 4,
413 	EncoderValueCompressionRle = 5,
414 	EncoderValueCompressionNone = 6,
415 	EncoderValueScanMethodInterlaced = 7,
416 	EncoderValueScanMethodNonInterlaced = 8,
417 	EncoderValueVersionGif87 = 9,
418 	EncoderValueVersionGif89 = 10,
419 	EncoderValueRenderProgressive = 11,
420 	EncoderValueRenderNonProgressive = 12,
421 	EncoderValueTransformRotate90 = 13,
422 	EncoderValueTransformRotate180 = 14,
423 	EncoderValueTransformRotate270 = 15,
424 	EncoderValueTransformFlipHorizontal = 16,
425 	EncoderValueTransformFlipVertical = 17,
426 	EncoderValueMultiFrame = 18,
427 	EncoderValueLastFrame = 19,
428 	EncoderValueFlush = 20,
429 	EncoderValueFrameDimensionTime = 21,
430 	EncoderValueFrameDimensionResolution = 22,
431 	EncoderValueFrameDimensionPage = 23
432 } EncoderValue;
433 
434 typedef enum FillMode {
435 	FillModeAlternate = 0,
436 	FillModeWinding = 1
437 } FillMode;
438 
439 typedef enum FlushIntention {
440 	FlushIntentionFlush = 0,
441 	FlushIntentionSync = 1
442 } FlushIntention;
443 
444 typedef enum FontStyle {
445 	FontStyleRegular = 0,
446 	FontStyleBold = 1,
447 	FontStyleItalic = 2,
448 	FontStyleBoldItalic = 3,
449 	FontStyleUnderline = 4,
450 	FontStyleStrikeout = 8
451 } FontStyle;
452 
453 typedef enum HatchStyle {
454 	HatchStyleHorizontal = 0,
455 	HatchStyleVertical = 1,
456 	HatchStyleForwardDiagonal = 2,
457 	HatchStyleBackwardDiagonal = 3,
458 	HatchStyleCross = 4,
459 	HatchStyleLargeGrid = 4,
460 	HatchStyleDiagonalCross = 5,
461 	HatchStyle05Percent = 6,
462 	HatchStyle10Percent = 7,
463 	HatchStyle20Percent = 8,
464 	HatchStyle25Percent = 9,
465 	HatchStyle30Percent = 10,
466 	HatchStyle40Percent = 11,
467 	HatchStyle50Percent = 12,
468 	HatchStyle60Percent = 13,
469 	HatchStyle70Percent = 14,
470 	HatchStyle75Percent = 15,
471 	HatchStyle80Percent = 16,
472 	HatchStyle90Percent = 17,
473 	HatchStyleLightDownwardDiagonal = 18,
474 	HatchStyleLightUpwardDiagonal = 19,
475 	HatchStyleDarkDownwardDiagonal = 20,
476 	HatchStyleDarkUpwardDiagonal = 21,
477 	HatchStyleWideDownwardDiagonal = 22,
478 	HatchStyleWideUpwardDiagonal = 23,
479 	HatchStyleLightVertical = 24,
480 	HatchStyleLightHorizontal = 25,
481 	HatchStyleNarrowVertical = 26,
482 	HatchStyleNarrowHorizontal = 27,
483 	HatchStyleDarkVertical = 28,
484 	HatchStyleDarkHorizontal = 29,
485 	HatchStyleDashedDownwardDiagonal = 30,
486 	HatchStyleDashedUpwardDiagonal = 31,
487 	HatchStyleDashedHorizontal = 32,
488 	HatchStyleDashedVertical = 33,
489 	HatchStyleSmallConfetti = 34,
490 	HatchStyleLargeConfetti = 35,
491 	HatchStyleZigZag = 36,
492 	HatchStyleWave = 37,
493 	HatchStyleDiagonalBrick = 38,
494 	HatchStyleHorizontalBrick = 39,
495 	HatchStyleWeave = 40,
496 	HatchStylePlaid = 41,
497 	HatchStyleDivot = 42,
498 	HatchStyleDottedGrid = 43,
499 	HatchStyleDottedDiamond = 44,
500 	HatchStyleShingle = 45,
501 	HatchStyleTrellis = 46,
502 	HatchStyleSphere = 47,
503 	HatchStyleSmallGrid = 48,
504 	HatchStyleSmallCheckerBoard = 49,
505 	HatchStyleLargeCheckerBoard = 50,
506 	HatchStyleOutlinedDiamond = 51,
507 	HatchStyleSolidDiamond = 52,
508 	HatchStyleTotal = 53,
509 	HatchStyleMin = HatchStyleHorizontal,
510 	HatchStyleMax = HatchStyleTotal - 1
511 } HatchStyle;
512 
513 typedef enum HotkeyPrefix {
514 	HotkeyPrefixNone = 0,
515 	HotkeyPrefixShow = 1,
516 	HotkeyPrefixHide = 2
517 } HotkeyPrefix;
518 
519 typedef enum ImageType {
520 	ImageTypeUnknown = 0,
521 	ImageTypeBitmap = 1,
522 	ImageTypeMetafile = 2
523 } ImageType;
524 
525 /* TODO: InterpolationMode */
526 typedef enum InterpolationMode {
527 	/*InterpolationModeInvalid = QualityModeInvalid,*/
528 	InterpolationModeDefault = 0,
529 	InterpolationModeLowQuality = 1,
530 	InterpolationModeHighQuality = 2,
531 	InterpolationModeBilinear = 3,
532 	InterpolationModeBicubic = 4,
533 	InterpolationModeNearestNeighbor = 5,
534 	InterpolationModeHighQualityBilinear = 6,
535 	InterpolationModeHighQualityBicubic = 7
536 } InterpolationMode;
537 
538 typedef enum LinearGradientMode {
539 	LinearGradientModeHorizontal = 0,
540 	LinearGradientModeVertical = 1,
541 	LinearGradientModeForwardDiagonal = 2,
542 	LinearGradientModeBackwardDiagonal = 3
543 } LinearGradientMode;
544 
545 typedef enum LineCap {
546 	LineCapFlat = 0,
547 	LineCapSquare = 1,
548 	LineCapRound = 2,
549 	LineCapTriangle = 3,
550 	LineCapNoAnchor = 16,
551 	LineCapSquareAnchor = 17,
552 	LineCapRoundAnchor = 18,
553 	LineCapDiamondAnchor = 19,
554 	LineCapArrowAnchor = 20,
555 	LineCapCustom = 255
556 } LineCap;
557 
558 typedef enum LineJoin {
559 	LineJoinMiter = 0,
560 	LineJoinBevel = 1,
561 	LineJoinRound = 2,
562 	LineJoinMiterClipped = 3
563 } LineJoin;
564 
565 typedef enum MatrixOrder {
566 	MatrixOrderPrepend = 0,
567 	MatrixOrderAppend = 1
568 } MatrixOrder;
569 
570 typedef enum MetafileFrameUnit {
571 	MetafileFrameUnitPixel = 2,
572 	MetafileFrameUnitPoint = 3,
573 	MetafileFrameUnitInch = 4,
574 	MetafileFrameUnitDocument = 5,
575 	MetafileFrameUnitMillimeter = 6,
576 	MetafileFrameUnitGdi = 7
577 } MetafileFrameUnit;
578 
579 typedef enum MetafileType {
580 	MetafileTypeInvalid = 0,
581 	MetafileTypeWmf = 1,
582 	MetafileTypeWmfPlaceable = 2,
583 	MetafileTypeEmf = 3,
584 	MetafileTypeEmfPlusOnly = 4,
585 	MetafileTypeEmfPlusDual = 5
586 } MetafileType;
587 
588 typedef enum ObjectType {
589 	ObjectTypeInvalid = 0,
590 	ObjectTypeBrush = 1,
591 	ObjectTypePen = 2,
592 	ObjectTypePath = 3,
593 	ObjectTypeRegion = 4,
594 	ObjectTypeFont = 5,
595 	ObjectTypeStringFormat = 6,
596 	ObjectTypeImageAttributes = 7,
597 	ObjectTypeCustomLineCap = 8,
598 	ObjectTypeGraphics = 9,
599 	ObjectTypeMin = ObjectTypeBrush,
600 	ObjectTypeMax = ObjectTypeGraphics
601 } ObjectType;
602 
603 typedef enum PathPointType {
604 	PathPointTypeStart = 0x00,
605 	PathPointTypeLine = 0x01,
606 	PathPointTypeBezier = 0x03,
607 	PathPointTypeBezier3 = 0x03,
608 	PathPointTypePathTypeMask = 0x07,
609 	PathPointTypePathDashMode = 0x10,
610 	PathPointTypePathMarker = 0x20,
611 	PathPointTypeCloseSubpath = 0x80
612 } PathPointType;
613 
614 typedef enum PenAlignment {
615 	PenAlignmentCenter = 0,
616 	PenAlignmentInset = 1
617 } PenAlignment;
618 
619 typedef enum PenType {
620 	PenTypeUnknown = -1,
621 	PenTypeSolidColor = 0,
622 	PenTypeHatchFill = 1,
623 	PenTypeTextureFill = 2,
624 	PenTypePathGradient = 3,
625 	PenTypeLinearGradient = 4
626 } PenType;
627 
628 /* TODO: PixelOffsetMode */
629 typedef enum PixelOffsetMode {
630 	/*PixelOffsetModeInvalid = QualityModeInvalid,*/
631 	PixelOffsetModeDefault = 0,
632 	PixelOffsetModeHighSpeed = 1,
633 	PixelOffsetModeHighQuality = 2,
634 	PixelOffsetModeNone = 3,
635 	PixelOffsetModeHalf = 4
636 } PixelOffsetMode;
637 
638 /* TODO: QualityMode */
639 typedef enum QualityMode {
640 	/*QualityModeInvalid = ?,*/
641 	QualityModeDefault = 0,
642 	QualityModeLow = 1,
643 	QualityModeHigh = 2
644 } QualityMode;
645 
646 /* TODO: SmoothingMode */
647 typedef enum SmoothingMode {
648 	/*SmoothingModeInvalid = QualityModeInvalid,*/
649 	SmoothingModeDefault = 0,
650 	SmoothingModeHighSpeed = 1,
651 	SmoothingModeHighQuality = 2,
652 	SmoothingModeNone = 3,
653 	SmoothingModeAntiAlias8x4 = 4,
654 	SmoothingModeAntiAlias = 4,
655 	SmoothingModeAntiAlias8x8 = 5
656 } SmoothingMode;
657 
658 typedef enum StringAlignment {
659 	StringAlignmentNear = 0,
660 	StringAlignmentCenter = 1,
661 	StringAlignmentFar = 2
662 } StringAlignment;
663 
664 typedef enum StringDigitSubstitute {
665 	StringDigitSubstituteUser = 0,
666 	StringDigitSubstituteNone = 1,
667 	StringDigitSubstituteNational = 2,
668 	StringDigitSubstituteTraditional = 3
669 } StringDigitSubstitute;
670 
671 typedef enum StringFormatFlags {
672 	StringFormatFlagsDirectionRightToLeft = 0x00000001,
673 	StringFormatFlagsDirectionVertical = 0x00000002,
674 	StringFormatFlagsNoFitBlackBox = 0x00000004,
675 	StringFormatFlagsDisplayFormatControl = 0x00000020,
676 	StringFormatFlagsNoFontFallback = 0x00000400,
677 	StringFormatFlagsMeasureTrailingSpaces = 0x00000800,
678 	StringFormatFlagsNoWrap = 0x00001000,
679 	StringFormatFlagsLineLimit = 0x00002000,
680 	StringFormatFlagsNoClip = 0x00004000
681 } StringFormatFlags;
682 
683 typedef enum StringTrimming {
684 	StringTrimmingNone = 0,
685 	StringTrimmingCharacter = 1,
686 	StringTrimmingWord = 2,
687 	StringTrimmingEllipsisCharacter = 3,
688 	StringTrimmingEllipsisWord = 4,
689 	StringTrimmingEllipsisPath = 5
690 } StringTrimming;
691 
692 typedef enum TextRenderingHint {
693 	TextRenderingHintSystemDefault = 0,
694 	TextRenderingHintSingleBitPerPixelGridFit = 1,
695 	TextRenderingHintSingleBitPerPixel = 2,
696 	TextRenderingHintAntiAliasGridFit = 3,
697 	TextRenderingHintAntiAlias = 4,
698 	TextRenderingHintClearTypeGridFit = 5
699 } TextRenderingHint;
700 
701 typedef enum Unit {
702 	UnitWorld = 0,
703 	UnitDisplay = 1,
704 	UnitPixel = 2,
705 	UnitPoint = 3,
706 	UnitInch = 4,
707 	UnitDocument = 5,
708 	UnitMillimeter = 6
709 } Unit;
710 
711 typedef enum WarpMode {
712 	WarpModePerspective = 0,
713 	WarpModeBilinear = 1
714 } WarpMode;
715 
716 typedef enum WrapMode {
717 	WrapModeTile = 0,
718 	WrapModeTileFlipX = 1,
719 	WrapModeTileFlipY = 2,
720 	WrapModeTileFlipXY = 3,
721 	WrapModeClamp = 4
722 } WrapMode;
723 
724 typedef enum GpTestControlEnum {
725 	TestControlForceBilinear = 0,
726 	TestControlForceNoICM = 1,
727 	TestControlGetBuildNumber = 2
728 } GpTestControlEnum;
729 
730 /* Opaque handles to information blocks on an internal GDI+ stack. */
731 typedef DWORD GraphicsContainer;
732 typedef DWORD GraphicsState;
733 
734 /* Default flatness for GraphicsPath methods Flatten, Outline, Warp, Widen */
735 /* FIXME: Is FlatnessDefault = 0.25f correct? */
736 #ifdef __cplusplus
737 const REAL FlatnessDefault = 0.25f;
738 #else
739 #define FlatnessDefault ((REAL) 0.25f)
740 #endif
741 
ObjectTypeIsValid(ObjectType type)742 static __inline__ BOOL ObjectTypeIsValid(ObjectType type)
743 {
744 	switch (type) {
745 		case ObjectTypeBrush:
746 		case ObjectTypePen:
747 		case ObjectTypePath:
748 		case ObjectTypeRegion:
749 		case ObjectTypeFont:
750 		case ObjectTypeStringFormat:
751 		case ObjectTypeImageAttributes:
752 		case ObjectTypeCustomLineCap:
753 		case ObjectTypeGraphics:
754 			return TRUE;
755 		default:
756 			return FALSE;
757 	}
758 }
759 
760 #endif /* __GDIPLUS_ENUMS_H */
761