source: trunk/contrib/gdiplus/include/GdiplusEnums.h @ 980

Last change on this file since 980 was 980, checked in by sam, 11 years ago

contrib: add GDI+ headers and static library for Linux cross-compilation.

  • Property svn:keywords set to Id
File size: 47.1 KB
Line 
1/**************************************************************************\
2*
3* Copyright (c) 1998-2001, Microsoft Corp.  All Rights Reserved.
4*
5* Module Name:
6*
7*   GdiplusEnums.h
8*
9* Abstract:
10*
11*   GDI+ Enumeration Types
12*
13\**************************************************************************/
14
15#ifndef _GDIPLUSENUMS_H
16#define _GDIPLUSENUMS_H
17
18//--------------------------------------------------------------------------
19// Default bezier flattening tolerance in device pixels.
20//--------------------------------------------------------------------------
21
22const float FlatnessDefault = 1.0f/4.0f;
23
24//--------------------------------------------------------------------------
25// Graphics and Container State cookies
26//--------------------------------------------------------------------------
27
28typedef UINT     GraphicsState;
29typedef UINT     GraphicsContainer;
30
31//--------------------------------------------------------------------------
32// Fill mode constants
33//--------------------------------------------------------------------------
34
35enum FillMode
36{
37    FillModeAlternate,        // 0
38    FillModeWinding           // 1
39};
40
41//--------------------------------------------------------------------------
42// Quality mode constants
43//--------------------------------------------------------------------------
44
45enum QualityMode
46{
47    QualityModeInvalid   = -1,
48    QualityModeDefault   = 0,
49    QualityModeLow       = 1, // Best performance
50    QualityModeHigh      = 2  // Best rendering quality
51};
52
53//--------------------------------------------------------------------------
54// Alpha Compositing mode constants
55//--------------------------------------------------------------------------
56
57enum CompositingMode
58{
59    CompositingModeSourceOver,    // 0
60    CompositingModeSourceCopy     // 1
61};
62
63//--------------------------------------------------------------------------
64// Alpha Compositing quality constants
65//--------------------------------------------------------------------------
66
67enum CompositingQuality
68{
69    CompositingQualityInvalid          = QualityModeInvalid,
70    CompositingQualityDefault          = QualityModeDefault,
71    CompositingQualityHighSpeed        = QualityModeLow,
72    CompositingQualityHighQuality      = QualityModeHigh,
73    CompositingQualityGammaCorrected,
74    CompositingQualityAssumeLinear
75};
76
77//--------------------------------------------------------------------------
78// Unit constants
79//--------------------------------------------------------------------------
80
81enum Unit
82{
83    UnitWorld,      // 0 -- World coordinate (non-physical unit)
84    UnitDisplay,    // 1 -- Variable -- for PageTransform only
85    UnitPixel,      // 2 -- Each unit is one device pixel.
86    UnitPoint,      // 3 -- Each unit is a printer's point, or 1/72 inch.
87    UnitInch,       // 4 -- Each unit is 1 inch.
88    UnitDocument,   // 5 -- Each unit is 1/300 inch.
89    UnitMillimeter  // 6 -- Each unit is 1 millimeter.
90};
91
92//--------------------------------------------------------------------------
93// MetafileFrameUnit
94//
95// The frameRect for creating a metafile can be specified in any of these
96// units.  There is an extra frame unit value (MetafileFrameUnitGdi) so
97// that units can be supplied in the same units that GDI expects for
98// frame rects -- these units are in .01 (1/100ths) millimeter units
99// as defined by GDI.
100//--------------------------------------------------------------------------
101
102enum MetafileFrameUnit
103{
104    MetafileFrameUnitPixel      = UnitPixel,
105    MetafileFrameUnitPoint      = UnitPoint,
106    MetafileFrameUnitInch       = UnitInch,
107    MetafileFrameUnitDocument   = UnitDocument,
108    MetafileFrameUnitMillimeter = UnitMillimeter,
109    MetafileFrameUnitGdi                        // GDI compatible .01 MM units
110};
111
112//--------------------------------------------------------------------------
113// Coordinate space identifiers
114//--------------------------------------------------------------------------
115
116enum CoordinateSpace
117{
118    CoordinateSpaceWorld,     // 0
119    CoordinateSpacePage,      // 1
120    CoordinateSpaceDevice     // 2
121};
122
123//--------------------------------------------------------------------------
124// Various wrap modes for brushes
125//--------------------------------------------------------------------------
126
127enum WrapMode
128{
129    WrapModeTile,        // 0
130    WrapModeTileFlipX,   // 1
131    WrapModeTileFlipY,   // 2
132    WrapModeTileFlipXY,  // 3
133    WrapModeClamp        // 4
134};
135
136//--------------------------------------------------------------------------
137// Various hatch styles
138//--------------------------------------------------------------------------
139
140enum HatchStyle
141{
142    HatchStyleHorizontal,                   // 0
143    HatchStyleVertical,                     // 1
144    HatchStyleForwardDiagonal,              // 2
145    HatchStyleBackwardDiagonal,             // 3
146    HatchStyleCross,                        // 4
147    HatchStyleDiagonalCross,                // 5
148    HatchStyle05Percent,                    // 6
149    HatchStyle10Percent,                    // 7
150    HatchStyle20Percent,                    // 8
151    HatchStyle25Percent,                    // 9
152    HatchStyle30Percent,                    // 10
153    HatchStyle40Percent,                    // 11
154    HatchStyle50Percent,                    // 12
155    HatchStyle60Percent,                    // 13
156    HatchStyle70Percent,                    // 14
157    HatchStyle75Percent,                    // 15
158    HatchStyle80Percent,                    // 16
159    HatchStyle90Percent,                    // 17
160    HatchStyleLightDownwardDiagonal,        // 18
161    HatchStyleLightUpwardDiagonal,          // 19
162    HatchStyleDarkDownwardDiagonal,         // 20
163    HatchStyleDarkUpwardDiagonal,           // 21
164    HatchStyleWideDownwardDiagonal,         // 22
165    HatchStyleWideUpwardDiagonal,           // 23
166    HatchStyleLightVertical,                // 24
167    HatchStyleLightHorizontal,              // 25
168    HatchStyleNarrowVertical,               // 26
169    HatchStyleNarrowHorizontal,             // 27
170    HatchStyleDarkVertical,                 // 28
171    HatchStyleDarkHorizontal,               // 29
172    HatchStyleDashedDownwardDiagonal,       // 30
173    HatchStyleDashedUpwardDiagonal,         // 31
174    HatchStyleDashedHorizontal,             // 32
175    HatchStyleDashedVertical,               // 33
176    HatchStyleSmallConfetti,                // 34
177    HatchStyleLargeConfetti,                // 35
178    HatchStyleZigZag,                       // 36
179    HatchStyleWave,                         // 37
180    HatchStyleDiagonalBrick,                // 38
181    HatchStyleHorizontalBrick,              // 39
182    HatchStyleWeave,                        // 40
183    HatchStylePlaid,                        // 41
184    HatchStyleDivot,                        // 42
185    HatchStyleDottedGrid,                   // 43
186    HatchStyleDottedDiamond,                // 44
187    HatchStyleShingle,                      // 45
188    HatchStyleTrellis,                      // 46
189    HatchStyleSphere,                       // 47
190    HatchStyleSmallGrid,                    // 48
191    HatchStyleSmallCheckerBoard,            // 49
192    HatchStyleLargeCheckerBoard,            // 50
193    HatchStyleOutlinedDiamond,              // 51
194    HatchStyleSolidDiamond,                 // 52
195
196    HatchStyleTotal,   
197    HatchStyleLargeGrid = HatchStyleCross,  // 4
198
199    HatchStyleMin       = HatchStyleHorizontal,
200    HatchStyleMax       = HatchStyleTotal - 1,
201};
202
203//--------------------------------------------------------------------------
204// Dash style constants
205//--------------------------------------------------------------------------
206
207enum DashStyle
208{
209    DashStyleSolid,          // 0
210    DashStyleDash,           // 1
211    DashStyleDot,            // 2
212    DashStyleDashDot,        // 3
213    DashStyleDashDotDot,     // 4
214    DashStyleCustom          // 5
215};
216
217//--------------------------------------------------------------------------
218// Dash cap constants
219//--------------------------------------------------------------------------
220
221enum DashCap
222{
223    DashCapFlat             = 0,
224    DashCapRound            = 2,
225    DashCapTriangle         = 3
226};
227
228//--------------------------------------------------------------------------
229// Line cap constants (only the lowest 8 bits are used).
230//--------------------------------------------------------------------------
231
232enum LineCap
233{
234    LineCapFlat             = 0,
235    LineCapSquare           = 1,
236    LineCapRound            = 2,
237    LineCapTriangle         = 3,
238
239    LineCapNoAnchor         = 0x10, // corresponds to flat cap
240    LineCapSquareAnchor     = 0x11, // corresponds to square cap
241    LineCapRoundAnchor      = 0x12, // corresponds to round cap
242    LineCapDiamondAnchor    = 0x13, // corresponds to triangle cap
243    LineCapArrowAnchor      = 0x14, // no correspondence
244
245    LineCapCustom           = 0xff, // custom cap
246
247    LineCapAnchorMask       = 0xf0  // mask to check for anchor or not.
248};
249
250//--------------------------------------------------------------------------
251// Custom Line cap type constants
252//--------------------------------------------------------------------------
253
254enum CustomLineCapType
255{
256    CustomLineCapTypeDefault         = 0,
257    CustomLineCapTypeAdjustableArrow = 1
258};
259
260//--------------------------------------------------------------------------
261// Line join constants
262//--------------------------------------------------------------------------
263
264enum LineJoin
265{
266    LineJoinMiter        = 0,
267    LineJoinBevel        = 1,
268    LineJoinRound        = 2,
269    LineJoinMiterClipped = 3
270};
271
272//--------------------------------------------------------------------------
273// Path point types (only the lowest 8 bits are used.)
274//  The lowest 3 bits are interpreted as point type
275//  The higher 5 bits are reserved for flags.
276//--------------------------------------------------------------------------
277
278enum PathPointType
279{
280    PathPointTypeStart           = 0,    // move
281    PathPointTypeLine            = 1,    // line
282    PathPointTypeBezier          = 3,    // default Bezier (= cubic Bezier)
283    PathPointTypePathTypeMask    = 0x07, // type mask (lowest 3 bits).
284    PathPointTypeDashMode        = 0x10, // currently in dash mode.
285    PathPointTypePathMarker      = 0x20, // a marker for the path.
286    PathPointTypeCloseSubpath    = 0x80, // closed flag
287
288    // Path types used for advanced path.
289
290    PathPointTypeBezier3    = 3,         // cubic Bezier
291};
292
293
294//--------------------------------------------------------------------------
295// WarpMode constants
296//--------------------------------------------------------------------------
297
298enum WarpMode
299{
300    WarpModePerspective,    // 0
301    WarpModeBilinear        // 1
302};
303
304//--------------------------------------------------------------------------
305// LineGradient Mode
306//--------------------------------------------------------------------------
307
308enum LinearGradientMode
309{
310    LinearGradientModeHorizontal,         // 0
311    LinearGradientModeVertical,           // 1
312    LinearGradientModeForwardDiagonal,    // 2
313    LinearGradientModeBackwardDiagonal    // 3
314};
315
316//--------------------------------------------------------------------------
317// Region Comine Modes
318//--------------------------------------------------------------------------
319
320enum CombineMode
321{
322    CombineModeReplace,     // 0
323    CombineModeIntersect,   // 1
324    CombineModeUnion,       // 2
325    CombineModeXor,         // 3
326    CombineModeExclude,     // 4
327    CombineModeComplement   // 5 (Exclude From)
328};
329
330//--------------------------------------------------------------------------
331 // Image types
332//--------------------------------------------------------------------------
333
334enum ImageType
335{
336    ImageTypeUnknown,   // 0
337    ImageTypeBitmap,    // 1
338    ImageTypeMetafile   // 2
339};
340
341//--------------------------------------------------------------------------
342// Interpolation modes
343//--------------------------------------------------------------------------
344
345enum InterpolationMode
346{
347    InterpolationModeInvalid          = QualityModeInvalid,
348    InterpolationModeDefault          = QualityModeDefault,
349    InterpolationModeLowQuality       = QualityModeLow,
350    InterpolationModeHighQuality      = QualityModeHigh,
351    InterpolationModeBilinear,
352    InterpolationModeBicubic,
353    InterpolationModeNearestNeighbor,
354    InterpolationModeHighQualityBilinear,
355    InterpolationModeHighQualityBicubic
356};
357
358//--------------------------------------------------------------------------
359// Pen types
360//--------------------------------------------------------------------------
361
362enum PenAlignment
363{
364    PenAlignmentCenter       = 0,
365    PenAlignmentInset        = 1
366};
367
368//--------------------------------------------------------------------------
369// Brush types
370//--------------------------------------------------------------------------
371
372enum BrushType
373{
374   BrushTypeSolidColor       = 0,
375   BrushTypeHatchFill        = 1,
376   BrushTypeTextureFill      = 2,
377   BrushTypePathGradient     = 3,
378   BrushTypeLinearGradient   = 4
379};
380
381//--------------------------------------------------------------------------
382// Pen's Fill types
383//--------------------------------------------------------------------------
384
385enum PenType
386{
387   PenTypeSolidColor       = BrushTypeSolidColor,
388   PenTypeHatchFill        = BrushTypeHatchFill,
389   PenTypeTextureFill      = BrushTypeTextureFill,
390   PenTypePathGradient     = BrushTypePathGradient,
391   PenTypeLinearGradient   = BrushTypeLinearGradient,
392   PenTypeUnknown          = -1
393};
394
395//--------------------------------------------------------------------------
396// Matrix Order
397//--------------------------------------------------------------------------
398
399enum MatrixOrder
400{
401    MatrixOrderPrepend    = 0,
402    MatrixOrderAppend     = 1
403};
404
405//--------------------------------------------------------------------------
406// Generic font families
407//--------------------------------------------------------------------------
408
409enum GenericFontFamily
410{
411    GenericFontFamilySerif,
412    GenericFontFamilySansSerif,
413    GenericFontFamilyMonospace
414
415};
416
417//--------------------------------------------------------------------------
418// FontStyle: face types and common styles
419//--------------------------------------------------------------------------
420
421enum FontStyle
422{
423    FontStyleRegular    = 0,
424    FontStyleBold       = 1,
425    FontStyleItalic     = 2,
426    FontStyleBoldItalic = 3,
427    FontStyleUnderline  = 4,
428    FontStyleStrikeout  = 8
429};
430
431//---------------------------------------------------------------------------
432// Smoothing Mode
433//---------------------------------------------------------------------------
434
435enum SmoothingMode
436{
437    SmoothingModeInvalid     = QualityModeInvalid,
438    SmoothingModeDefault     = QualityModeDefault,
439    SmoothingModeHighSpeed   = QualityModeLow,
440    SmoothingModeHighQuality = QualityModeHigh,
441    SmoothingModeNone,
442    SmoothingModeAntiAlias
443};
444
445//---------------------------------------------------------------------------
446// Pixel Format Mode
447//---------------------------------------------------------------------------
448
449enum PixelOffsetMode
450{
451    PixelOffsetModeInvalid     = QualityModeInvalid,
452    PixelOffsetModeDefault     = QualityModeDefault,
453    PixelOffsetModeHighSpeed   = QualityModeLow,
454    PixelOffsetModeHighQuality = QualityModeHigh,
455    PixelOffsetModeNone,    // No pixel offset
456    PixelOffsetModeHalf     // Offset by -0.5, -0.5 for fast anti-alias perf
457};
458
459//---------------------------------------------------------------------------
460// Text Rendering Hint
461//---------------------------------------------------------------------------
462
463enum TextRenderingHint
464{
465    TextRenderingHintSystemDefault = 0,            // Glyph with system default rendering hint
466    TextRenderingHintSingleBitPerPixelGridFit,     // Glyph bitmap with hinting
467    TextRenderingHintSingleBitPerPixel,            // Glyph bitmap without hinting
468    TextRenderingHintAntiAliasGridFit,             // Glyph anti-alias bitmap with hinting
469    TextRenderingHintAntiAlias,                    // Glyph anti-alias bitmap without hinting
470    TextRenderingHintClearTypeGridFit              // Glyph CT bitmap with hinting
471};
472
473//---------------------------------------------------------------------------
474// Metafile Types
475//---------------------------------------------------------------------------
476
477enum MetafileType
478{
479    MetafileTypeInvalid,            // Invalid metafile
480    MetafileTypeWmf,                // Standard WMF
481    MetafileTypeWmfPlaceable,       // Placeable WMF
482    MetafileTypeEmf,                // EMF (not EMF+)
483    MetafileTypeEmfPlusOnly,        // EMF+ without dual, down-level records
484    MetafileTypeEmfPlusDual         // EMF+ with dual, down-level records
485};
486
487//---------------------------------------------------------------------------
488// Specifies the type of EMF to record
489//---------------------------------------------------------------------------
490
491enum EmfType
492{
493    EmfTypeEmfOnly     = MetafileTypeEmf,          // no EMF+, only EMF
494    EmfTypeEmfPlusOnly = MetafileTypeEmfPlusOnly,  // no EMF, only EMF+
495    EmfTypeEmfPlusDual = MetafileTypeEmfPlusDual   // both EMF+ and EMF
496};
497
498//---------------------------------------------------------------------------
499// EMF+ Persistent object types
500//---------------------------------------------------------------------------
501
502enum ObjectType
503{
504    ObjectTypeInvalid,
505    ObjectTypeBrush,
506    ObjectTypePen,
507    ObjectTypePath,
508    ObjectTypeRegion,
509    ObjectTypeImage,
510    ObjectTypeFont,
511    ObjectTypeStringFormat,
512    ObjectTypeImageAttributes,
513    ObjectTypeCustomLineCap,
514
515    ObjectTypeMax = ObjectTypeCustomLineCap,
516    ObjectTypeMin = ObjectTypeBrush
517};
518
519inline BOOL
520ObjectTypeIsValid(
521    ObjectType      type
522    )
523{
524    return ((type >= ObjectTypeMin) && (type <= ObjectTypeMax));
525}
526
527//---------------------------------------------------------------------------
528// EMF+ Records
529//---------------------------------------------------------------------------
530
531// We have to change the WMF record numbers so that they don't conflict with
532// the EMF and EMF+ record numbers.
533
534//enum EmfPlusRecordType;
535
536#define GDIP_EMFPLUS_RECORD_BASE        0x00004000
537#define GDIP_WMF_RECORD_BASE            0x00010000
538#define GDIP_WMF_RECORD_TO_EMFPLUS(n)   (((n) | GDIP_WMF_RECORD_BASE))
539#define GDIP_EMFPLUS_RECORD_TO_WMF(n)   ((n) & (~GDIP_WMF_RECORD_BASE))
540#define GDIP_IS_WMF_RECORDTYPE(n)       (((n) & GDIP_WMF_RECORD_BASE) != 0)
541
542enum EmfPlusRecordType
543{
544   // Since we have to enumerate GDI records right along with GDI+ records,
545   // We list all the GDI records here so that they can be part of the
546   // same enumeration type which is used in the enumeration callback.
547
548    WmfRecordTypeSetBkColor              = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETBKCOLOR),
549    WmfRecordTypeSetBkMode               = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETBKMODE),
550    WmfRecordTypeSetMapMode              = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETMAPMODE),
551    WmfRecordTypeSetROP2                 = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETROP2),
552    WmfRecordTypeSetRelAbs               = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETRELABS),
553    WmfRecordTypeSetPolyFillMode         = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETPOLYFILLMODE),
554    WmfRecordTypeSetStretchBltMode       = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETSTRETCHBLTMODE),
555    WmfRecordTypeSetTextCharExtra        = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTCHAREXTRA),
556    WmfRecordTypeSetTextColor            = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTCOLOR),
557    WmfRecordTypeSetTextJustification    = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTJUSTIFICATION),
558    WmfRecordTypeSetWindowOrg            = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETWINDOWORG),
559    WmfRecordTypeSetWindowExt            = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETWINDOWEXT),
560    WmfRecordTypeSetViewportOrg          = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETVIEWPORTORG),
561    WmfRecordTypeSetViewportExt          = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETVIEWPORTEXT),
562    WmfRecordTypeOffsetWindowOrg         = GDIP_WMF_RECORD_TO_EMFPLUS(META_OFFSETWINDOWORG),
563    WmfRecordTypeScaleWindowExt          = GDIP_WMF_RECORD_TO_EMFPLUS(META_SCALEWINDOWEXT),
564    WmfRecordTypeOffsetViewportOrg       = GDIP_WMF_RECORD_TO_EMFPLUS(META_OFFSETVIEWPORTORG),
565    WmfRecordTypeScaleViewportExt        = GDIP_WMF_RECORD_TO_EMFPLUS(META_SCALEVIEWPORTEXT),
566    WmfRecordTypeLineTo                  = GDIP_WMF_RECORD_TO_EMFPLUS(META_LINETO),
567    WmfRecordTypeMoveTo                  = GDIP_WMF_RECORD_TO_EMFPLUS(META_MOVETO),
568    WmfRecordTypeExcludeClipRect         = GDIP_WMF_RECORD_TO_EMFPLUS(META_EXCLUDECLIPRECT),
569    WmfRecordTypeIntersectClipRect       = GDIP_WMF_RECORD_TO_EMFPLUS(META_INTERSECTCLIPRECT),
570    WmfRecordTypeArc                     = GDIP_WMF_RECORD_TO_EMFPLUS(META_ARC),
571    WmfRecordTypeEllipse                 = GDIP_WMF_RECORD_TO_EMFPLUS(META_ELLIPSE),
572    WmfRecordTypeFloodFill               = GDIP_WMF_RECORD_TO_EMFPLUS(META_FLOODFILL),
573    WmfRecordTypePie                     = GDIP_WMF_RECORD_TO_EMFPLUS(META_PIE),
574    WmfRecordTypeRectangle               = GDIP_WMF_RECORD_TO_EMFPLUS(META_RECTANGLE),
575    WmfRecordTypeRoundRect               = GDIP_WMF_RECORD_TO_EMFPLUS(META_ROUNDRECT),
576    WmfRecordTypePatBlt                  = GDIP_WMF_RECORD_TO_EMFPLUS(META_PATBLT),
577    WmfRecordTypeSaveDC                  = GDIP_WMF_RECORD_TO_EMFPLUS(META_SAVEDC),
578    WmfRecordTypeSetPixel                = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETPIXEL),
579    WmfRecordTypeOffsetClipRgn           = GDIP_WMF_RECORD_TO_EMFPLUS(META_OFFSETCLIPRGN),
580    WmfRecordTypeTextOut                 = GDIP_WMF_RECORD_TO_EMFPLUS(META_TEXTOUT),
581    WmfRecordTypeBitBlt                  = GDIP_WMF_RECORD_TO_EMFPLUS(META_BITBLT),
582    WmfRecordTypeStretchBlt              = GDIP_WMF_RECORD_TO_EMFPLUS(META_STRETCHBLT),
583    WmfRecordTypePolygon                 = GDIP_WMF_RECORD_TO_EMFPLUS(META_POLYGON),
584    WmfRecordTypePolyline                = GDIP_WMF_RECORD_TO_EMFPLUS(META_POLYLINE),
585    WmfRecordTypeEscape                  = GDIP_WMF_RECORD_TO_EMFPLUS(META_ESCAPE),
586    WmfRecordTypeRestoreDC               = GDIP_WMF_RECORD_TO_EMFPLUS(META_RESTOREDC),
587    WmfRecordTypeFillRegion              = GDIP_WMF_RECORD_TO_EMFPLUS(META_FILLREGION),
588    WmfRecordTypeFrameRegion             = GDIP_WMF_RECORD_TO_EMFPLUS(META_FRAMEREGION),
589    WmfRecordTypeInvertRegion            = GDIP_WMF_RECORD_TO_EMFPLUS(META_INVERTREGION),
590    WmfRecordTypePaintRegion             = GDIP_WMF_RECORD_TO_EMFPLUS(META_PAINTREGION),
591    WmfRecordTypeSelectClipRegion        = GDIP_WMF_RECORD_TO_EMFPLUS(META_SELECTCLIPREGION),
592    WmfRecordTypeSelectObject            = GDIP_WMF_RECORD_TO_EMFPLUS(META_SELECTOBJECT),
593    WmfRecordTypeSetTextAlign            = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTALIGN),
594    WmfRecordTypeDrawText                = GDIP_WMF_RECORD_TO_EMFPLUS(0x062F),  // META_DRAWTEXT
595    WmfRecordTypeChord                   = GDIP_WMF_RECORD_TO_EMFPLUS(META_CHORD),
596    WmfRecordTypeSetMapperFlags          = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETMAPPERFLAGS),
597    WmfRecordTypeExtTextOut              = GDIP_WMF_RECORD_TO_EMFPLUS(META_EXTTEXTOUT),
598    WmfRecordTypeSetDIBToDev             = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETDIBTODEV),
599    WmfRecordTypeSelectPalette           = GDIP_WMF_RECORD_TO_EMFPLUS(META_SELECTPALETTE),
600    WmfRecordTypeRealizePalette          = GDIP_WMF_RECORD_TO_EMFPLUS(META_REALIZEPALETTE),
601    WmfRecordTypeAnimatePalette          = GDIP_WMF_RECORD_TO_EMFPLUS(META_ANIMATEPALETTE),
602    WmfRecordTypeSetPalEntries           = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETPALENTRIES),
603    WmfRecordTypePolyPolygon             = GDIP_WMF_RECORD_TO_EMFPLUS(META_POLYPOLYGON),
604    WmfRecordTypeResizePalette           = GDIP_WMF_RECORD_TO_EMFPLUS(META_RESIZEPALETTE),
605    WmfRecordTypeDIBBitBlt               = GDIP_WMF_RECORD_TO_EMFPLUS(META_DIBBITBLT),
606    WmfRecordTypeDIBStretchBlt           = GDIP_WMF_RECORD_TO_EMFPLUS(META_DIBSTRETCHBLT),
607    WmfRecordTypeDIBCreatePatternBrush   = GDIP_WMF_RECORD_TO_EMFPLUS(META_DIBCREATEPATTERNBRUSH),
608    WmfRecordTypeStretchDIB              = GDIP_WMF_RECORD_TO_EMFPLUS(META_STRETCHDIB),
609    WmfRecordTypeExtFloodFill            = GDIP_WMF_RECORD_TO_EMFPLUS(META_EXTFLOODFILL),
610    WmfRecordTypeSetLayout               = GDIP_WMF_RECORD_TO_EMFPLUS(0x0149),  // META_SETLAYOUT
611    WmfRecordTypeResetDC                 = GDIP_WMF_RECORD_TO_EMFPLUS(0x014C),  // META_RESETDC
612    WmfRecordTypeStartDoc                = GDIP_WMF_RECORD_TO_EMFPLUS(0x014D),  // META_STARTDOC
613    WmfRecordTypeStartPage               = GDIP_WMF_RECORD_TO_EMFPLUS(0x004F),  // META_STARTPAGE
614    WmfRecordTypeEndPage                 = GDIP_WMF_RECORD_TO_EMFPLUS(0x0050),  // META_ENDPAGE
615    WmfRecordTypeAbortDoc                = GDIP_WMF_RECORD_TO_EMFPLUS(0x0052),  // META_ABORTDOC
616    WmfRecordTypeEndDoc                  = GDIP_WMF_RECORD_TO_EMFPLUS(0x005E),  // META_ENDDOC
617    WmfRecordTypeDeleteObject            = GDIP_WMF_RECORD_TO_EMFPLUS(META_DELETEOBJECT),
618    WmfRecordTypeCreatePalette           = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEPALETTE),
619    WmfRecordTypeCreateBrush             = GDIP_WMF_RECORD_TO_EMFPLUS(0x00F8),  // META_CREATEBRUSH
620    WmfRecordTypeCreatePatternBrush      = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEPATTERNBRUSH),
621    WmfRecordTypeCreatePenIndirect       = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEPENINDIRECT),
622    WmfRecordTypeCreateFontIndirect      = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEFONTINDIRECT),
623    WmfRecordTypeCreateBrushIndirect     = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEBRUSHINDIRECT),
624    WmfRecordTypeCreateBitmapIndirect    = GDIP_WMF_RECORD_TO_EMFPLUS(0x02FD),  // META_CREATEBITMAPINDIRECT
625    WmfRecordTypeCreateBitmap            = GDIP_WMF_RECORD_TO_EMFPLUS(0x06FE),  // META_CREATEBITMAP
626    WmfRecordTypeCreateRegion            = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEREGION),
627
628    EmfRecordTypeHeader                  = EMR_HEADER,
629    EmfRecordTypePolyBezier              = EMR_POLYBEZIER,
630    EmfRecordTypePolygon                 = EMR_POLYGON,
631    EmfRecordTypePolyline                = EMR_POLYLINE,
632    EmfRecordTypePolyBezierTo            = EMR_POLYBEZIERTO,
633    EmfRecordTypePolyLineTo              = EMR_POLYLINETO,
634    EmfRecordTypePolyPolyline            = EMR_POLYPOLYLINE,
635    EmfRecordTypePolyPolygon             = EMR_POLYPOLYGON,
636    EmfRecordTypeSetWindowExtEx          = EMR_SETWINDOWEXTEX,
637    EmfRecordTypeSetWindowOrgEx          = EMR_SETWINDOWORGEX,
638    EmfRecordTypeSetViewportExtEx        = EMR_SETVIEWPORTEXTEX,
639    EmfRecordTypeSetViewportOrgEx        = EMR_SETVIEWPORTORGEX,
640    EmfRecordTypeSetBrushOrgEx           = EMR_SETBRUSHORGEX,
641    EmfRecordTypeEOF                     = EMR_EOF,
642    EmfRecordTypeSetPixelV               = EMR_SETPIXELV,
643    EmfRecordTypeSetMapperFlags          = EMR_SETMAPPERFLAGS,
644    EmfRecordTypeSetMapMode              = EMR_SETMAPMODE,
645    EmfRecordTypeSetBkMode               = EMR_SETBKMODE,
646    EmfRecordTypeSetPolyFillMode         = EMR_SETPOLYFILLMODE,
647    EmfRecordTypeSetROP2                 = EMR_SETROP2,
648    EmfRecordTypeSetStretchBltMode       = EMR_SETSTRETCHBLTMODE,
649    EmfRecordTypeSetTextAlign            = EMR_SETTEXTALIGN,
650    EmfRecordTypeSetColorAdjustment      = EMR_SETCOLORADJUSTMENT,
651    EmfRecordTypeSetTextColor            = EMR_SETTEXTCOLOR,
652    EmfRecordTypeSetBkColor              = EMR_SETBKCOLOR,
653    EmfRecordTypeOffsetClipRgn           = EMR_OFFSETCLIPRGN,
654    EmfRecordTypeMoveToEx                = EMR_MOVETOEX,
655    EmfRecordTypeSetMetaRgn              = EMR_SETMETARGN,
656    EmfRecordTypeExcludeClipRect         = EMR_EXCLUDECLIPRECT,
657    EmfRecordTypeIntersectClipRect       = EMR_INTERSECTCLIPRECT,
658    EmfRecordTypeScaleViewportExtEx      = EMR_SCALEVIEWPORTEXTEX,
659    EmfRecordTypeScaleWindowExtEx        = EMR_SCALEWINDOWEXTEX,
660    EmfRecordTypeSaveDC                  = EMR_SAVEDC,
661    EmfRecordTypeRestoreDC               = EMR_RESTOREDC,
662    EmfRecordTypeSetWorldTransform       = EMR_SETWORLDTRANSFORM,
663    EmfRecordTypeModifyWorldTransform    = EMR_MODIFYWORLDTRANSFORM,
664    EmfRecordTypeSelectObject            = EMR_SELECTOBJECT,
665    EmfRecordTypeCreatePen               = EMR_CREATEPEN,
666    EmfRecordTypeCreateBrushIndirect     = EMR_CREATEBRUSHINDIRECT,
667    EmfRecordTypeDeleteObject            = EMR_DELETEOBJECT,
668    EmfRecordTypeAngleArc                = EMR_ANGLEARC,
669    EmfRecordTypeEllipse                 = EMR_ELLIPSE,
670    EmfRecordTypeRectangle               = EMR_RECTANGLE,
671    EmfRecordTypeRoundRect               = EMR_ROUNDRECT,
672    EmfRecordTypeArc                     = EMR_ARC,
673    EmfRecordTypeChord                   = EMR_CHORD,
674    EmfRecordTypePie                     = EMR_PIE,
675    EmfRecordTypeSelectPalette           = EMR_SELECTPALETTE,
676    EmfRecordTypeCreatePalette           = EMR_CREATEPALETTE,
677    EmfRecordTypeSetPaletteEntries       = EMR_SETPALETTEENTRIES,
678    EmfRecordTypeResizePalette           = EMR_RESIZEPALETTE,
679    EmfRecordTypeRealizePalette          = EMR_REALIZEPALETTE,
680    EmfRecordTypeExtFloodFill            = EMR_EXTFLOODFILL,
681    EmfRecordTypeLineTo                  = EMR_LINETO,
682    EmfRecordTypeArcTo                   = EMR_ARCTO,
683    EmfRecordTypePolyDraw                = EMR_POLYDRAW,
684    EmfRecordTypeSetArcDirection         = EMR_SETARCDIRECTION,
685    EmfRecordTypeSetMiterLimit           = EMR_SETMITERLIMIT,
686    EmfRecordTypeBeginPath               = EMR_BEGINPATH,
687    EmfRecordTypeEndPath                 = EMR_ENDPATH,
688    EmfRecordTypeCloseFigure             = EMR_CLOSEFIGURE,
689    EmfRecordTypeFillPath                = EMR_FILLPATH,
690    EmfRecordTypeStrokeAndFillPath       = EMR_STROKEANDFILLPATH,
691    EmfRecordTypeStrokePath              = EMR_STROKEPATH,
692    EmfRecordTypeFlattenPath             = EMR_FLATTENPATH,
693    EmfRecordTypeWidenPath               = EMR_WIDENPATH,
694    EmfRecordTypeSelectClipPath          = EMR_SELECTCLIPPATH,
695    EmfRecordTypeAbortPath               = EMR_ABORTPATH,
696    EmfRecordTypeReserved_069            = 69,  // Not Used
697    EmfRecordTypeGdiComment              = EMR_GDICOMMENT,
698    EmfRecordTypeFillRgn                 = EMR_FILLRGN,
699    EmfRecordTypeFrameRgn                = EMR_FRAMERGN,
700    EmfRecordTypeInvertRgn               = EMR_INVERTRGN,
701    EmfRecordTypePaintRgn                = EMR_PAINTRGN,
702    EmfRecordTypeExtSelectClipRgn        = EMR_EXTSELECTCLIPRGN,
703    EmfRecordTypeBitBlt                  = EMR_BITBLT,
704    EmfRecordTypeStretchBlt              = EMR_STRETCHBLT,
705    EmfRecordTypeMaskBlt                 = EMR_MASKBLT,
706    EmfRecordTypePlgBlt                  = EMR_PLGBLT,
707    EmfRecordTypeSetDIBitsToDevice       = EMR_SETDIBITSTODEVICE,
708    EmfRecordTypeStretchDIBits           = EMR_STRETCHDIBITS,
709    EmfRecordTypeExtCreateFontIndirect   = EMR_EXTCREATEFONTINDIRECTW,
710    EmfRecordTypeExtTextOutA             = EMR_EXTTEXTOUTA,
711    EmfRecordTypeExtTextOutW             = EMR_EXTTEXTOUTW,
712    EmfRecordTypePolyBezier16            = EMR_POLYBEZIER16,
713    EmfRecordTypePolygon16               = EMR_POLYGON16,
714    EmfRecordTypePolyline16              = EMR_POLYLINE16,
715    EmfRecordTypePolyBezierTo16          = EMR_POLYBEZIERTO16,
716    EmfRecordTypePolylineTo16            = EMR_POLYLINETO16,
717    EmfRecordTypePolyPolyline16          = EMR_POLYPOLYLINE16,
718    EmfRecordTypePolyPolygon16           = EMR_POLYPOLYGON16,
719    EmfRecordTypePolyDraw16              = EMR_POLYDRAW16,
720    EmfRecordTypeCreateMonoBrush         = EMR_CREATEMONOBRUSH,
721    EmfRecordTypeCreateDIBPatternBrushPt = EMR_CREATEDIBPATTERNBRUSHPT,
722    EmfRecordTypeExtCreatePen            = EMR_EXTCREATEPEN,
723    EmfRecordTypePolyTextOutA            = EMR_POLYTEXTOUTA,
724    EmfRecordTypePolyTextOutW            = EMR_POLYTEXTOUTW,
725    EmfRecordTypeSetICMMode              = 98,  // EMR_SETICMMODE,
726    EmfRecordTypeCreateColorSpace        = 99,  // EMR_CREATECOLORSPACE,
727    EmfRecordTypeSetColorSpace           = 100, // EMR_SETCOLORSPACE,
728    EmfRecordTypeDeleteColorSpace        = 101, // EMR_DELETECOLORSPACE,
729    EmfRecordTypeGLSRecord               = 102, // EMR_GLSRECORD,
730    EmfRecordTypeGLSBoundedRecord        = 103, // EMR_GLSBOUNDEDRECORD,
731    EmfRecordTypePixelFormat             = 104, // EMR_PIXELFORMAT,
732    EmfRecordTypeDrawEscape              = 105, // EMR_RESERVED_105,
733    EmfRecordTypeExtEscape               = 106, // EMR_RESERVED_106,
734    EmfRecordTypeStartDoc                = 107, // EMR_RESERVED_107,
735    EmfRecordTypeSmallTextOut            = 108, // EMR_RESERVED_108,
736    EmfRecordTypeForceUFIMapping         = 109, // EMR_RESERVED_109,
737    EmfRecordTypeNamedEscape             = 110, // EMR_RESERVED_110,
738    EmfRecordTypeColorCorrectPalette     = 111, // EMR_COLORCORRECTPALETTE,
739    EmfRecordTypeSetICMProfileA          = 112, // EMR_SETICMPROFILEA,
740    EmfRecordTypeSetICMProfileW          = 113, // EMR_SETICMPROFILEW,
741    EmfRecordTypeAlphaBlend              = 114, // EMR_ALPHABLEND,
742    EmfRecordTypeSetLayout               = 115, // EMR_SETLAYOUT,
743    EmfRecordTypeTransparentBlt          = 116, // EMR_TRANSPARENTBLT,
744    EmfRecordTypeReserved_117            = 117, // Not Used
745    EmfRecordTypeGradientFill            = 118, // EMR_GRADIENTFILL,
746    EmfRecordTypeSetLinkedUFIs           = 119, // EMR_RESERVED_119,
747    EmfRecordTypeSetTextJustification    = 120, // EMR_RESERVED_120,
748    EmfRecordTypeColorMatchToTargetW     = 121, // EMR_COLORMATCHTOTARGETW,
749    EmfRecordTypeCreateColorSpaceW       = 122, // EMR_CREATECOLORSPACEW,
750    EmfRecordTypeMax                     = 122,
751    EmfRecordTypeMin                     = 1,
752
753    // That is the END of the GDI EMF records.
754
755    // Now we start the list of EMF+ records.  We leave quite
756    // a bit of room here for the addition of any new GDI
757    // records that may be added later.
758
759    EmfPlusRecordTypeInvalid = GDIP_EMFPLUS_RECORD_BASE,
760    EmfPlusRecordTypeHeader,
761    EmfPlusRecordTypeEndOfFile,
762
763    EmfPlusRecordTypeComment,
764
765    EmfPlusRecordTypeGetDC,
766
767    EmfPlusRecordTypeMultiFormatStart,
768    EmfPlusRecordTypeMultiFormatSection,
769    EmfPlusRecordTypeMultiFormatEnd,
770
771    // For all persistent objects
772   
773    EmfPlusRecordTypeObject,
774
775    // Drawing Records
776   
777    EmfPlusRecordTypeClear,
778    EmfPlusRecordTypeFillRects,
779    EmfPlusRecordTypeDrawRects,
780    EmfPlusRecordTypeFillPolygon,
781    EmfPlusRecordTypeDrawLines,
782    EmfPlusRecordTypeFillEllipse,
783    EmfPlusRecordTypeDrawEllipse,
784    EmfPlusRecordTypeFillPie,
785    EmfPlusRecordTypeDrawPie,
786    EmfPlusRecordTypeDrawArc,
787    EmfPlusRecordTypeFillRegion,
788    EmfPlusRecordTypeFillPath,
789    EmfPlusRecordTypeDrawPath,
790    EmfPlusRecordTypeFillClosedCurve,
791    EmfPlusRecordTypeDrawClosedCurve,
792    EmfPlusRecordTypeDrawCurve,
793    EmfPlusRecordTypeDrawBeziers,
794    EmfPlusRecordTypeDrawImage,
795    EmfPlusRecordTypeDrawImagePoints,
796    EmfPlusRecordTypeDrawString,
797
798    // Graphics State Records
799   
800    EmfPlusRecordTypeSetRenderingOrigin,
801    EmfPlusRecordTypeSetAntiAliasMode,
802    EmfPlusRecordTypeSetTextRenderingHint,
803    EmfPlusRecordTypeSetTextContrast,
804    EmfPlusRecordTypeSetInterpolationMode,
805    EmfPlusRecordTypeSetPixelOffsetMode,
806    EmfPlusRecordTypeSetCompositingMode,
807    EmfPlusRecordTypeSetCompositingQuality,
808    EmfPlusRecordTypeSave,
809    EmfPlusRecordTypeRestore,
810    EmfPlusRecordTypeBeginContainer,
811    EmfPlusRecordTypeBeginContainerNoParams,
812    EmfPlusRecordTypeEndContainer,
813    EmfPlusRecordTypeSetWorldTransform,
814    EmfPlusRecordTypeResetWorldTransform,
815    EmfPlusRecordTypeMultiplyWorldTransform,
816    EmfPlusRecordTypeTranslateWorldTransform,
817    EmfPlusRecordTypeScaleWorldTransform,
818    EmfPlusRecordTypeRotateWorldTransform,
819    EmfPlusRecordTypeSetPageTransform,
820    EmfPlusRecordTypeResetClip,
821    EmfPlusRecordTypeSetClipRect,
822    EmfPlusRecordTypeSetClipPath,
823    EmfPlusRecordTypeSetClipRegion,
824    EmfPlusRecordTypeOffsetClip,
825
826    EmfPlusRecordTypeDrawDriverString,
827
828    EmfPlusRecordTotal,
829
830    EmfPlusRecordTypeMax = EmfPlusRecordTotal-1,
831    EmfPlusRecordTypeMin = EmfPlusRecordTypeHeader,
832};
833
834//---------------------------------------------------------------------------
835// StringFormatFlags
836//---------------------------------------------------------------------------
837
838//---------------------------------------------------------------------------
839// String format flags
840//
841//  DirectionRightToLeft          - For horizontal text, the reading order is
842//                                  right to left. This value is called
843//                                  the base embedding level by the Unicode
844//                                  bidirectional engine.
845//                                  For vertical text, columns are read from
846//                                  right to left.
847//                                  By default, horizontal or vertical text is
848//                                  read from left to right.
849//
850//  DirectionVertical             - Individual lines of text are vertical. In
851//                                  each line, characters progress from top to
852//                                  bottom.
853//                                  By default, lines of text are horizontal,
854//                                  each new line below the previous line.
855//
856//  NoFitBlackBox                 - Allows parts of glyphs to overhang the
857//                                  bounding rectangle.
858//                                  By default glyphs are first aligned
859//                                  inside the margines, then any glyphs which
860//                                  still overhang the bounding box are
861//                                  repositioned to avoid any overhang.
862//                                  For example when an italic
863//                                  lower case letter f in a font such as
864//                                  Garamond is aligned at the far left of a
865//                                  rectangle, the lower part of the f will
866//                                  reach slightly further left than the left
867//                                  edge of the rectangle. Setting this flag
868//                                  will ensure the character aligns visually
869//                                  with the lines above and below, but may
870//                                  cause some pixels outside the formatting
871//                                  rectangle to be clipped or painted.
872//
873//  DisplayFormatControl          - Causes control characters such as the
874//                                  left-to-right mark to be shown in the
875//                                  output with a representative glyph.
876//
877//  NoFontFallback                - Disables fallback to alternate fonts for
878//                                  characters not supported in the requested
879//                                  font. Any missing characters will be
880//                                  be displayed with the fonts missing glyph,
881//                                  usually an open square.
882//
883//  NoWrap                        - Disables wrapping of text between lines
884//                                  when formatting within a rectangle.
885//                                  NoWrap is implied when a point is passed
886//                                  instead of a rectangle, or when the
887//                                  specified rectangle has a zero line length.
888//
889//  NoClip                        - By default text is clipped to the
890//                                  formatting rectangle. Setting NoClip
891//                                  allows overhanging pixels to affect the
892//                                  device outside the formatting rectangle.
893//                                  Pixels at the end of the line may be
894//                                  affected if the glyphs overhang their
895//                                  cells, and either the NoFitBlackBox flag
896//                                  has been set, or the glyph extends to far
897//                                  to be fitted.
898//                                  Pixels above/before the first line or
899//                                  below/after the last line may be affected
900//                                  if the glyphs extend beyond their cell
901//                                  ascent / descent. This can occur rarely
902//                                  with unusual diacritic mark combinations.
903
904//---------------------------------------------------------------------------
905
906enum StringFormatFlags
907{
908    StringFormatFlagsDirectionRightToLeft        = 0x00000001,
909    StringFormatFlagsDirectionVertical           = 0x00000002,
910    StringFormatFlagsNoFitBlackBox               = 0x00000004,
911    StringFormatFlagsDisplayFormatControl        = 0x00000020,
912    StringFormatFlagsNoFontFallback              = 0x00000400,
913    StringFormatFlagsMeasureTrailingSpaces       = 0x00000800,
914    StringFormatFlagsNoWrap                      = 0x00001000,
915    StringFormatFlagsLineLimit                   = 0x00002000,
916
917    StringFormatFlagsNoClip                      = 0x00004000
918};
919
920//---------------------------------------------------------------------------
921// StringTrimming
922//---------------------------------------------------------------------------
923
924enum StringTrimming {
925    StringTrimmingNone              = 0,
926    StringTrimmingCharacter         = 1,
927    StringTrimmingWord              = 2,
928    StringTrimmingEllipsisCharacter = 3,
929    StringTrimmingEllipsisWord      = 4,
930    StringTrimmingEllipsisPath      = 5
931};
932
933//---------------------------------------------------------------------------
934// National language digit substitution
935//---------------------------------------------------------------------------
936
937enum StringDigitSubstitute
938{
939    StringDigitSubstituteUser        = 0,  // As NLS setting
940    StringDigitSubstituteNone        = 1,
941    StringDigitSubstituteNational    = 2,
942    StringDigitSubstituteTraditional = 3
943};
944
945//---------------------------------------------------------------------------
946// Hotkey prefix interpretation
947//---------------------------------------------------------------------------
948
949enum HotkeyPrefix
950{
951    HotkeyPrefixNone        = 0,
952    HotkeyPrefixShow        = 1,
953    HotkeyPrefixHide        = 2
954};
955
956//---------------------------------------------------------------------------
957// String alignment flags
958//---------------------------------------------------------------------------
959
960enum StringAlignment
961{
962    // Left edge for left-to-right text,
963    // right for right-to-left text,
964    // and top for vertical
965    StringAlignmentNear   = 0,
966    StringAlignmentCenter = 1,
967    StringAlignmentFar    = 2
968};
969
970//---------------------------------------------------------------------------
971// DriverStringOptions
972//---------------------------------------------------------------------------
973
974enum DriverStringOptions
975{
976    DriverStringOptionsCmapLookup             = 1,
977    DriverStringOptionsVertical               = 2,
978    DriverStringOptionsRealizedAdvance        = 4,
979    DriverStringOptionsLimitSubpixel          = 8
980};
981
982//---------------------------------------------------------------------------
983// Flush Intention flags
984//---------------------------------------------------------------------------
985
986enum FlushIntention
987{
988    FlushIntentionFlush = 0,        // Flush all batched rendering operations
989    FlushIntentionSync = 1          // Flush all batched rendering operations
990                                    // and wait for them to complete
991};
992
993//---------------------------------------------------------------------------
994// Image encoder parameter related types
995//---------------------------------------------------------------------------
996
997enum EncoderParameterValueType
998{
999    EncoderParameterValueTypeByte           = 1,    // 8-bit unsigned int
1000    EncoderParameterValueTypeASCII          = 2,    // 8-bit byte containing one 7-bit ASCII
1001                                                    // code. NULL terminated.
1002    EncoderParameterValueTypeShort          = 3,    // 16-bit unsigned int
1003    EncoderParameterValueTypeLong           = 4,    // 32-bit unsigned int
1004    EncoderParameterValueTypeRational       = 5,    // Two Longs. The first Long is the
1005                                                    // numerator, the second Long expresses the
1006                                                    // denomintor.
1007    EncoderParameterValueTypeLongRange      = 6,    // Two longs which specify a range of
1008                                                    // integer values. The first Long specifies
1009                                                    // the lower end and the second one
1010                                                    // specifies the higher end. All values
1011                                                    // are inclusive at both ends
1012    EncoderParameterValueTypeUndefined      = 7,    // 8-bit byte that can take any value
1013                                                    // depending on field definition
1014    EncoderParameterValueTypeRationalRange  = 8     // Two Rationals. The first Rational
1015                                                    // specifies the lower end and the second
1016                                                    // specifies the higher end. All values
1017                                                    // are inclusive at both ends
1018};
1019
1020//---------------------------------------------------------------------------
1021// Image encoder value types
1022//---------------------------------------------------------------------------
1023
1024enum EncoderValue
1025{
1026    EncoderValueColorTypeCMYK,
1027    EncoderValueColorTypeYCCK,
1028    EncoderValueCompressionLZW,
1029    EncoderValueCompressionCCITT3,
1030    EncoderValueCompressionCCITT4,
1031    EncoderValueCompressionRle,
1032    EncoderValueCompressionNone,
1033    EncoderValueScanMethodInterlaced,
1034    EncoderValueScanMethodNonInterlaced,
1035    EncoderValueVersionGif87,
1036    EncoderValueVersionGif89,
1037    EncoderValueRenderProgressive,
1038    EncoderValueRenderNonProgressive,
1039    EncoderValueTransformRotate90,
1040    EncoderValueTransformRotate180,
1041    EncoderValueTransformRotate270,
1042    EncoderValueTransformFlipHorizontal,
1043    EncoderValueTransformFlipVertical,
1044    EncoderValueMultiFrame,
1045    EncoderValueLastFrame,
1046    EncoderValueFlush,
1047    EncoderValueFrameDimensionTime,
1048    EncoderValueFrameDimensionResolution,
1049    EncoderValueFrameDimensionPage
1050};
1051
1052//---------------------------------------------------------------------------
1053// Conversion of Emf To WMF Bits flags
1054//---------------------------------------------------------------------------
1055
1056enum EmfToWmfBitsFlags
1057{
1058    EmfToWmfBitsFlagsDefault          = 0x00000000,
1059    EmfToWmfBitsFlagsEmbedEmf         = 0x00000001,
1060    EmfToWmfBitsFlagsIncludePlaceable = 0x00000002,
1061    EmfToWmfBitsFlagsNoXORClip        = 0x00000004
1062};
1063
1064//---------------------------------------------------------------------------
1065// Test Control flags
1066//---------------------------------------------------------------------------
1067
1068enum GpTestControlEnum
1069{
1070    TestControlForceBilinear = 0,
1071    TestControlNoICM = 1,
1072    TestControlGetBuildNumber = 2
1073};
1074
1075
1076
1077#endif // !_GDIPLUSENUMS_H
Note: See TracBrowser for help on using the repository browser.