OSDN Git Service

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