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