' ########################################################################################
' Microsoft Windows
' File: GdiPlusEnums.inc
' Contents: GDI+ Enumeration Types
' Copyright (c) 2011 Jos? Roca
' Portions Copyright (c) Microsoft Corporation.
' All Rights Reserved.
' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
' EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
' MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
' ########################################################################################
#IF NOT %DEF(PBX_GdiPlusEnums_PBI)
#DEFINE PBX_GdiPlusEnums_PBI
%EQUATE `GDIPLUSENUMS_INC = 1
'//--------------------------------------------------------------------------
'// Default bezier flattening tolerance in device pixels.
'//--------------------------------------------------------------------------
'const float FlatnessDefault = 1.0f/4.0f;
MACRO FlatnessDefault = 0.25!
'//--------------------------------------------------------------------------
'// Graphics and Container State cookies
'//--------------------------------------------------------------------------
'typedef UINT GraphicsState;
'typedef UINT GraphicsContainer;
'//--------------------------------------------------------------------------
'// Fill mode constants
'//--------------------------------------------------------------------------
' enum FillMode
%EQUATE `FillModeAlternate = 0
%EQUATE `FillModeWinding = 1
'//--------------------------------------------------------------------------
'// Quality mode constants
'//--------------------------------------------------------------------------
' enum QualityMode
%EQUATE `QualityModeInvalid = -1
%EQUATE `QualityModeDefault = 0
%EQUATE `QualityModeLow = 1 ' // Best performance
%EQUATE `QualityModeHigh = 2 ' // Best rendering quality
'//--------------------------------------------------------------------------
'// Alpha Compositing mode constants
'//--------------------------------------------------------------------------
' enum CompositingMode
%EQUATE `CompositingModeSourceOver = 0
%EQUATE `CompositingModeSourceCopy = 1
'//--------------------------------------------------------------------------
'// Alpha Compositing quality constants
'//--------------------------------------------------------------------------
' enum CompositingQuality
%EQUATE `CompositingQualityInvalid = %QualityModeInvalid
%EQUATE `CompositingQualityDefault = %QualityModeDefault
%EQUATE `CompositingQualityHighSpeed = %QualityModeLow
%EQUATE `CompositingQualityHighQuality = %QualityModeHigh
%EQUATE `CompositingQualityGammaCorrected = 3
%EQUATE `CompositingQualityAssumeLinear = 4
'//--------------------------------------------------------------------------
'// Unit constants
'//--------------------------------------------------------------------------
' enum Unit
%EQUATE `UnitWorld = 0 ' // 0 -- World coordinate (non-physical unit)
%EQUATE `UnitDisplay = 1 ' // 1 -- Variable -- for PageTransform only
%EQUATE `UnitPixel = 2 ' // 2 -- Each unit is one device pixel.
%EQUATE `UnitPoint = 3 ' // 3 -- Each unit is a printer's point, or 1/72 inch.
%EQUATE `UnitInch = 4 ' // 4 -- Each unit is 1 inch.
%EQUATE `UnitDocument = 5 ' // 5 -- Each unit is 1/300 inch.
%EQUATE `UnitMillimeter = 6 ' // 6 -- Each unit is 1 millimeter.
'//--------------------------------------------------------------------------
'// MetafileFrameUnit
'//
'// The frameRect for creating a metafile can be specified in any of these
'// units. There is an extra frame unit value (MetafileFrameUnitGdi) so
'// that units can be supplied in the same units that GDI expects for
'// frame rects -- these units are in .01 (1/100ths) millimeter units
'// as defined by GDI.
'//--------------------------------------------------------------------------
' enum MetafileFrameUnit
%EQUATE `MetafileFrameUnitPixel = %UnitPixel
%EQUATE `MetafileFrameUnitPoint = %UnitPoint
%EQUATE `MetafileFrameUnitInch = %UnitInch
%EQUATE `MetafileFrameUnitDocument = %UnitDocument
%EQUATE `MetafileFrameUnitMillimeter = %UnitMillimeter
%EQUATE `MetafileFrameUnitGdi = 7 ' // GDI compatible .01 MM units
'//--------------------------------------------------------------------------
'// Coordinate space identifiers
'//--------------------------------------------------------------------------
' enum CoordinateSpace
%EQUATE `CoordinateSpaceWorld = 0
%EQUATE `CoordinateSpacePage = 1
%EQUATE `CoordinateSpaceDevice = 2
'//--------------------------------------------------------------------------
'// Various wrap modes for brushes
'//--------------------------------------------------------------------------
' enum WrapMode
%EQUATE `WrapModeTile = 0
%EQUATE `WrapModeTileFlipX = 1
%EQUATE `WrapModeTileFlipY = 2
%EQUATE `WrapModeTileFlipXY = 3
%EQUATE `WrapModeClamp = 4
'//--------------------------------------------------------------------------
'// Various hatch styles
'//--------------------------------------------------------------------------
' enum HatchStyle
%EQUATE `HatchStyleHorizontal = 0
%EQUATE `HatchStyleVertical = 1
%EQUATE `HatchStyleForwardDiagonal = 2
%EQUATE `HatchStyleBackwardDiagonal = 3
%EQUATE `HatchStyleCross = 4
%EQUATE `HatchStyleDiagonalCross = 5
%EQUATE `HatchStyle05Percent = 6
%EQUATE `HatchStyle10Percent = 7
%EQUATE `HatchStyle20Percent = 8
%EQUATE `HatchStyle25Percent = 9
%EQUATE `HatchStyle30Percent = 10
%EQUATE `HatchStyle40Percent = 11
%EQUATE `HatchStyle50Percent = 12
%EQUATE `HatchStyle60Percent = 13
%EQUATE `HatchStyle70Percent = 14
%EQUATE `HatchStyle75Percent = 15
%EQUATE `HatchStyle80Percent = 16
%EQUATE `HatchStyle90Percent = 17
%EQUATE `HatchStyleLightDownwardDiagonal = 18
%EQUATE `HatchStyleLightUpwardDiagonal = 19
%EQUATE `HatchStyleDarkDownwardDiagonal = 20
%EQUATE `HatchStyleDarkUpwardDiagonal = 21
%EQUATE `HatchStyleWideDownwardDiagonal = 22
%EQUATE `HatchStyleWideUpwardDiagonal = 23
%EQUATE `HatchStyleLightVertical = 24
%EQUATE `HatchStyleLightHorizontal = 25
%EQUATE `HatchStyleNarrowVertical = 26
%EQUATE `HatchStyleNarrowHorizontal = 27
%EQUATE `HatchStyleDarkVertical = 28
%EQUATE `HatchStyleDarkHorizontal = 29
%EQUATE `HatchStyleDashedDownwardDiagonal = 30
%EQUATE `HatchStyleDashedUpwardDiagonal = 31
%EQUATE `HatchStyleDashedHorizontal = 32
%EQUATE `HatchStyleDashedVertical = 33
%EQUATE `HatchStyleSmallConfetti = 34
%EQUATE `HatchStyleLargeConfetti = 35
%EQUATE `HatchStyleZigZag = 36
%EQUATE `HatchStyleWave = 37
%EQUATE `HatchStyleDiagonalBrick = 38
%EQUATE `HatchStyleHorizontalBrick = 39
%EQUATE `HatchStyleWeave = 40
%EQUATE `HatchStylePlaid = 41
%EQUATE `HatchStyleDivot = 42
%EQUATE `HatchStyleDottedGrid = 43
%EQUATE `HatchStyleDottedDiamond = 44
%EQUATE `HatchStyleShingle = 45
%EQUATE `HatchStyleTrellis = 46
%EQUATE `HatchStyleSphere = 47
%EQUATE `HatchStyleSmallGrid = 48
%EQUATE `HatchStyleSmallCheckerBoard = 49
%EQUATE `HatchStyleLargeCheckerBoard = 50
%EQUATE `HatchStyleOutlinedDiamond = 51
%EQUATE `HatchStyleSolidDiamond = 52
%EQUATE `HatchStyleTotal = 53
%EQUATE `HatchStyleLargeGrid = %HatchStyleCross
%EQUATE `HatchStyleMin = %HatchStyleHorizontal
%EQUATE `HatchStyleMax = %HatchStyleTotal - 1
'//--------------------------------------------------------------------------
'// Dash style constants
'//--------------------------------------------------------------------------
' enum DashStyle
%EQUATE `DashStyleSolid = 0
%EQUATE `DashStyleDash = 1
%EQUATE `DashStyleDot = 2
%EQUATE `DashStyleDashDot = 3
%EQUATE `DashStyleDashDotDot = 4
%EQUATE `DashStyleCustom = 5
'//--------------------------------------------------------------------------
'// Dash cap constants
'//--------------------------------------------------------------------------
' enum DashCap
%EQUATE `DashCapFlat = 0
%EQUATE `DashCapRound = 2
%EQUATE `DashCapTriangle = 3
'//--------------------------------------------------------------------------
'// Line cap constants (only the lowest 8 bits are used).
'//--------------------------------------------------------------------------
' enum LineCap
%EQUATE `LineCapFlat = 0
%EQUATE `LineCapSquare = 1
%EQUATE `LineCapRound = 2
%EQUATE `LineCapTriangle = 3
%EQUATE `LineCapNoAnchor = &H10 ' corresponds to flat cap
%EQUATE `LineCapSquareAnchor = &H11 ' corresponds to square cap
%EQUATE `LineCapRoundAnchor = &H12 ' corresponds to round cap
%EQUATE `LineCapDiamondAnchor = &H13 ' corresponds to triangle cap
%EQUATE `LineCapArrowAnchor = &H14 ' no correspondence
%EQUATE `LineCapCustom = &HFF ' custom cap
%EQUATE `LineCapAnchorMask = &HF0 ' mask to check for anchor or not.
'//--------------------------------------------------------------------------
'// Custom Line cap type constants
'//--------------------------------------------------------------------------
' enum CustomLineCapType
%EQUATE `CustomLineCapTypeDefault = 0
%EQUATE `CustomLineCapTypeAdjustableArrow = 1
'//--------------------------------------------------------------------------
'// Line join constants
'//--------------------------------------------------------------------------
' enum LineJoin
%EQUATE `LineJoinMiter = 0
%EQUATE `LineJoinBevel = 1
%EQUATE `LineJoinRound = 2
%EQUATE `LineJoinMiterClipped = 3
'//--------------------------------------------------------------------------
'// Path point types (only the lowest 8 bits are used.)
'// The lowest 3 bits are interpreted as point type
'// The higher 5 bits are reserved for flags.
'//--------------------------------------------------------------------------
' enum PathPointType
%EQUATE `PathPointTypeStart = 0 ' // move
%EQUATE `PathPointTypeLine = 1 ' // line
%EQUATE `PathPointTypeBezier = 3 ' // default Bezier (= cubic Bezier)
%EQUATE `PathPointTypePathTypeMask = &H07 ' // type mask (lowest 3 bits).
%EQUATE `PathPointTypeDashMode = &H10 ' // currently in dash mode.
%EQUATE `PathPointTypePathMarker = &H20 ' // a marker for the path.
%EQUATE `PathPointTypeCloseSubpath = &H80 ' // closed flag
' // Path types used for advanced path.
%EQUATE `PathPointTypeBezier3 = 3 ' // cubic Bezier
'//--------------------------------------------------------------------------
'// WarpMode constants
'//--------------------------------------------------------------------------
' enum WarpMode
%EQUATE `WarpModePerspective = 0
%EQUATE `WarpModeBilinear = 1
'//--------------------------------------------------------------------------
'// LineGradient Mode
'//--------------------------------------------------------------------------
' enum LinearGradientMode
%EQUATE `LinearGradientModeHorizontal = 0
%EQUATE `LinearGradientModeVertical = 1
%EQUATE `LinearGradientModeForwardDiagonal = 2
%EQUATE `LinearGradientModeBackwardDiagonal = 3
'//--------------------------------------------------------------------------
'// Region Comine Modes
'//--------------------------------------------------------------------------
' enum CombineMode
%EQUATE `CombineModeReplace = 0
%EQUATE `CombineModeIntersect = 1
%EQUATE `CombineModeUnion = 2
%EQUATE `CombineModeXor = 3
%EQUATE `CombineModeExclude = 4
%EQUATE `CombineModeComplement = 5 ' (Exclude From)
'//--------------------------------------------------------------------------
'// Image types
'//--------------------------------------------------------------------------
' enum ImageType
%EQUATE `ImageTypeUnknown = 0
%EQUATE `ImageTypeBitmap = 1
%EQUATE `ImageTypeMetafile = 2
'//--------------------------------------------------------------------------
'// Interpolation modes
'//--------------------------------------------------------------------------
' enum InterpolationMode
%EQUATE `InterpolationModeInvalid = %QualityModeInvalid
%EQUATE `InterpolationModeDefault = %QualityModeDefault
%EQUATE `InterpolationModeLowQuality = %QualityModeLow
%EQUATE `InterpolationModeHighQuality = %QualityModeHigh
%EQUATE `InterpolationModeBilinear = 3
%EQUATE `InterpolationModeBicubic = 4
%EQUATE `InterpolationModeNearestNeighbor = 5
%EQUATE `InterpolationModeHighQualityBilinear = 6
%EQUATE `InterpolationModeHighQualityBicubic = 7
'//--------------------------------------------------------------------------
'// Pen types
'//--------------------------------------------------------------------------
' enum PenAlignment
%EQUATE `PenAlignmentCenter = 0
%EQUATE `PenAlignmentInset = 1
'//--------------------------------------------------------------------------
'// Brush types
'//--------------------------------------------------------------------------
' enum BrushType
%EQUATE `BrushTypeSolidColor = 0
%EQUATE `BrushTypeHatchFill = 1
%EQUATE `BrushTypeTextureFill = 2
%EQUATE `BrushTypePathGradient = 3
%EQUATE `BrushTypeLinearGradient = 4
'//--------------------------------------------------------------------------
'// Pen's Fill types
'//--------------------------------------------------------------------------
' enum PenType
%EQUATE `PenTypeSolidColor = %BrushTypeSolidColor
%EQUATE `PenTypeHatchFill = %BrushTypeHatchFill
%EQUATE `PenTypeTextureFill = %BrushTypeTextureFill
%EQUATE `PenTypePathGradient = %BrushTypePathGradient
%EQUATE `PenTypeLinearGradient = %BrushTypeLinearGradient
%EQUATE `PenTypeUnknown = -1
'//--------------------------------------------------------------------------
'// Matrix Order
'//--------------------------------------------------------------------------
' enum MatrixOrder
%EQUATE `MatrixOrderPrepend = 0
%EQUATE `MatrixOrderAppend = 1
'//--------------------------------------------------------------------------
'// Generic font families
'//--------------------------------------------------------------------------
' enum GenericFontFamily
%EQUATE `GenericFontFamilySerif = 0
%EQUATE `GenericFontFamilySansSerif = 1
%EQUATE `GenericFontFamilyMonospace = 2
'//--------------------------------------------------------------------------
'// FontStyle: face types and common styles
'//--------------------------------------------------------------------------
' enum FontStyle
%EQUATE `FontStyleRegular = 0
%EQUATE `FontStyleBold = 1
%EQUATE `FontStyleItalic = 2
%EQUATE `FontStyleBoldItalic = 3
%EQUATE `FontStyleUnderline = 4
%EQUATE `FontStyleStrikeout = 8
'//---------------------------------------------------------------------------
'// Smoothing Mode
'//---------------------------------------------------------------------------
' enum SmoothingMode
%EQUATE `SmoothingModeInvalid = %QualityModeInvalid
%EQUATE `SmoothingModeDefault = %QualityModeDefault
%EQUATE `SmoothingModeHighSpeed = %QualityModeLow
%EQUATE `SmoothingModeHighQuality = %QualityModeHigh
%EQUATE `SmoothingModeNone = 3
%EQUATE `SmoothingModeAntiAlias = 4
'//---------------------------------------------------------------------------
'// Pixel Format Mode
'//---------------------------------------------------------------------------
' enum PixelOffsetMode
%EQUATE `PixelOffsetModeInvalid = %QualityModeInvalid
%EQUATE `PixelOffsetModeDefault = %QualityModeDefault
%EQUATE `PixelOffsetModeHighSpeed = %QualityModeLow
%EQUATE `PixelOffsetModeHighQuality = %QualityModeHigh
%EQUATE `PixelOffsetModeNone = 3 ' No pixel offset
%EQUATE `PixelOffsetModeHalf = 4 ' Offset by -0.5 -0.5 for fast anti-alias perf
'//---------------------------------------------------------------------------
'// Text Rendering Hint
'//---------------------------------------------------------------------------
' enum TextRenderingHint
%EQUATE `TextRenderingHintSystemDefault = 0 ' Glyph with system default rendering hint
%EQUATE `TextRenderingHintSingleBitPerPixelGridFit = 1 ' Glyph bitmap with hinting
%EQUATE `TextRenderingHintSingleBitPerPixel = 2 ' Glyph bitmap without hinting
%EQUATE `TextRenderingHintAntiAliasGridFit = 3 ' Glyph anti-alias bitmap with hinting
%EQUATE `TextRenderingHintAntiAlias = 4 ' Glyph anti-alias bitmap without hinting
%EQUATE `TextRenderingHintClearTypeGridFit = 5 ' Glyph CT bitmap with hinting
'//---------------------------------------------------------------------------
'// Metafile Types
'//---------------------------------------------------------------------------
' enum MetafileType
%EQUATE `MetafileTypeInvalid = 0 ' Invalid metafile
%EQUATE `MetafileTypeWmf = 1 ' Standard WMF
%EQUATE `MetafileTypeWmfPlaceable = 2 ' Placeable WMF
%EQUATE `MetafileTypeEmf = 3 ' EMF (not EMF+)
%EQUATE `MetafileTypeEmfPlusOnly = 4 ' EMF+ without dual down-level records
%EQUATE `MetafileTypeEmfPlusDual = 5 ' EMF+ with dual down-level records
'//---------------------------------------------------------------------------
'// Specifies the type of EMF to record
'//---------------------------------------------------------------------------
' enum EmfType
%EQUATE `EmfTypeEmfOnly = %MetafileTypeEmf ' no EMF+ only EMF
%EQUATE `EmfTypeEmfPlusOnly = %MetafileTypeEmfPlusOnly ' no EMF only EMF+
%EQUATE `EmfTypeEmfPlusDual = %MetafileTypeEmfPlusDual ' both EMF+ and EMF
'//---------------------------------------------------------------------------
'// EMF+ Persistent object types
'//---------------------------------------------------------------------------
' enum ObjectType
%EQUATE `ObjectTypeInvalid = 0
%EQUATE `ObjectTypeBrush = 1
%EQUATE `ObjectTypePen = 2
%EQUATE `ObjectTypePath = 3
%EQUATE `ObjectTypeRegion = 4
%EQUATE `ObjectTypeImage = 5
%EQUATE `ObjectTypeFont = 6
%EQUATE `ObjectTypeStringFormat = 7
%EQUATE `ObjectTypeImageAttributes = 8
%EQUATE `ObjectTypeCustomLineCap = 9
#IF (%GDIPVER >= &H0110)
%EQUATE `ObjectTypeGraphics = 10
%EQUATE `ObjectTypeMax = %ObjectTypeGraphics
#ELSE
%EQUATE `ObjectTypeMax = %ObjectTypeCustomLineCap
#ENDIF ' //(%GDIPVER >= &H0110)
%EQUATE `ObjectTypeMin = %ObjectTypeBrush
'inline BOOL
'ObjectTypeIsValid(
' ObjectType type
' )
'{
' return ((type >= ObjectTypeMin) && (type <= ObjectTypeMax));
'}
FUNCTION ObjectTypeIsValid (BYVAL ntype AS LONG) AS LONG
 FUNCTION = (ntype >= %ObjectTypeMin) AND (ntype <= %ObjectTypeMax)
END FUNCTION
'//---------------------------------------------------------------------------
'// EMF+ Records
'//---------------------------------------------------------------------------
'// We have to change the WMF record numbers so that they don't conflict with
'// the EMF and EMF+ record numbers.
%EQUATE `GDIP_EMFPLUS_RECORD_BASE = &H00004000
%EQUATE `GDIP_WMF_RECORD_BASE = &H00010000
'#define GDIP_WMF_RECORD_TO_EMFPLUS(n) ((EmfPlusRecordType)((n) | GDIP_WMF_RECORD_BASE))
'#define GDIP_EMFPLUS_RECORD_TO_WMF(n) ((n) & (~GDIP_WMF_RECORD_BASE))
'#define GDIP_IS_WMF_RECORDTYPE(n) (((n) & GDIP_WMF_RECORD_BASE) != 0)
MACRO GDIP_WMF_RECORD_TO_EMFPLUS(n) = (n OR %GDIP_WMF_RECORD_BASE)
MACRO GDIP_EMFPLUS_RECORD_TO_WMF(n) = (n AND (NOT %GDIP_WMF_RECORD_BASE))
MACRO GDIP_IS_WMF_RECORDTYPE(n) = ((n AND %GDIP_WMF_RECORD_BASE) <> 0)
'enum EmfPlusRecordType
'{
' // Since we have to enumerate GDI records right along with GDI+ records,
' // We list all the GDI records here so that they can be part of the
' // same enumeration type which is used in the enumeration callback.
' WmfRecordTypeSetBkColor = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETBKCOLOR),
' WmfRecordTypeSetBkMode = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETBKMODE),
' WmfRecordTypeSetMapMode = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETMAPMODE),
' WmfRecordTypeSetROP2 = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETROP2),
' WmfRecordTypeSetRelAbs = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETRELABS),
' WmfRecordTypeSetPolyFillMode = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETPOLYFILLMODE),
' WmfRecordTypeSetStretchBltMode = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETSTRETCHBLTMODE),
' WmfRecordTypeSetTextCharExtra = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTCHAREXTRA),
' WmfRecordTypeSetTextColor = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTCOLOR),
' WmfRecordTypeSetTextJustification = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTJUSTIFICATION),
' WmfRecordTypeSetWindowOrg = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETWINDOWORG),
' WmfRecordTypeSetWindowExt = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETWINDOWEXT),
' WmfRecordTypeSetViewportOrg = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETVIEWPORTORG),
' WmfRecordTypeSetViewportExt = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETVIEWPORTEXT),
' WmfRecordTypeOffsetWindowOrg = GDIP_WMF_RECORD_TO_EMFPLUS(META_OFFSETWINDOWORG),
' WmfRecordTypeScaleWindowExt = GDIP_WMF_RECORD_TO_EMFPLUS(META_SCALEWINDOWEXT),
' WmfRecordTypeOffsetViewportOrg = GDIP_WMF_RECORD_TO_EMFPLUS(META_OFFSETVIEWPORTORG),
' WmfRecordTypeScaleViewportExt = GDIP_WMF_RECORD_TO_EMFPLUS(META_SCALEVIEWPORTEXT),
' WmfRecordTypeLineTo = GDIP_WMF_RECORD_TO_EMFPLUS(META_LINETO),
' WmfRecordTypeMoveTo = GDIP_WMF_RECORD_TO_EMFPLUS(META_MOVETO),
' WmfRecordTypeExcludeClipRect = GDIP_WMF_RECORD_TO_EMFPLUS(META_EXCLUDECLIPRECT),
' WmfRecordTypeIntersectClipRect = GDIP_WMF_RECORD_TO_EMFPLUS(META_INTERSECTCLIPRECT),
' WmfRecordTypeArc = GDIP_WMF_RECORD_TO_EMFPLUS(META_ARC),
' WmfRecordTypeEllipse = GDIP_WMF_RECORD_TO_EMFPLUS(META_ELLIPSE),
' WmfRecordTypeFloodFill = GDIP_WMF_RECORD_TO_EMFPLUS(META_FLOODFILL),
' WmfRecordTypePie = GDIP_WMF_RECORD_TO_EMFPLUS(META_PIE),
' WmfRecordTypeRectangle = GDIP_WMF_RECORD_TO_EMFPLUS(META_RECTANGLE),
' WmfRecordTypeRoundRect = GDIP_WMF_RECORD_TO_EMFPLUS(META_ROUNDRECT),
' WmfRecordTypePatBlt = GDIP_WMF_RECORD_TO_EMFPLUS(META_PATBLT),
' WmfRecordTypeSaveDC = GDIP_WMF_RECORD_TO_EMFPLUS(META_SAVEDC),
' WmfRecordTypeSetPixel = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETPIXEL),
' WmfRecordTypeOffsetClipRgn = GDIP_WMF_RECORD_TO_EMFPLUS(META_OFFSETCLIPRGN),
' WmfRecordTypeTextOut = GDIP_WMF_RECORD_TO_EMFPLUS(META_TEXTOUT),
' WmfRecordTypeBitBlt = GDIP_WMF_RECORD_TO_EMFPLUS(META_BITBLT),
' WmfRecordTypeStretchBlt = GDIP_WMF_RECORD_TO_EMFPLUS(META_STRETCHBLT),
' WmfRecordTypePolygon = GDIP_WMF_RECORD_TO_EMFPLUS(META_POLYGON),
' WmfRecordTypePolyline = GDIP_WMF_RECORD_TO_EMFPLUS(META_POLYLINE),
' WmfRecordTypeEscape = GDIP_WMF_RECORD_TO_EMFPLUS(META_ESCAPE),
' WmfRecordTypeRestoreDC = GDIP_WMF_RECORD_TO_EMFPLUS(META_RESTOREDC),
' WmfRecordTypeFillRegion = GDIP_WMF_RECORD_TO_EMFPLUS(META_FILLREGION),
' WmfRecordTypeFrameRegion = GDIP_WMF_RECORD_TO_EMFPLUS(META_FRAMEREGION),
' WmfRecordTypeInvertRegion = GDIP_WMF_RECORD_TO_EMFPLUS(META_INVERTREGION),
' WmfRecordTypePaintRegion = GDIP_WMF_RECORD_TO_EMFPLUS(META_PAINTREGION),
' WmfRecordTypeSelectClipRegion = GDIP_WMF_RECORD_TO_EMFPLUS(META_SELECTCLIPREGION),
' WmfRecordTypeSelectObject = GDIP_WMF_RECORD_TO_EMFPLUS(META_SELECTOBJECT),
' WmfRecordTypeSetTextAlign = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTALIGN),
' WmfRecordTypeDrawText = GDIP_WMF_RECORD_TO_EMFPLUS(0x062F), // META_DRAWTEXT
' WmfRecordTypeChord = GDIP_WMF_RECORD_TO_EMFPLUS(META_CHORD),
' WmfRecordTypeSetMapperFlags = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETMAPPERFLAGS),
' WmfRecordTypeExtTextOut = GDIP_WMF_RECORD_TO_EMFPLUS(META_EXTTEXTOUT),
' WmfRecordTypeSetDIBToDev = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETDIBTODEV),
' WmfRecordTypeSelectPalette = GDIP_WMF_RECORD_TO_EMFPLUS(META_SELECTPALETTE),
' WmfRecordTypeRealizePalette = GDIP_WMF_RECORD_TO_EMFPLUS(META_REALIZEPALETTE),
' WmfRecordTypeAnimatePalette = GDIP_WMF_RECORD_TO_EMFPLUS(META_ANIMATEPALETTE),
' WmfRecordTypeSetPalEntries = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETPALENTRIES),
' WmfRecordTypePolyPolygon = GDIP_WMF_RECORD_TO_EMFPLUS(META_POLYPOLYGON),
' WmfRecordTypeResizePalette = GDIP_WMF_RECORD_TO_EMFPLUS(META_RESIZEPALETTE),
' WmfRecordTypeDIBBitBlt = GDIP_WMF_RECORD_TO_EMFPLUS(META_DIBBITBLT),
' WmfRecordTypeDIBStretchBlt = GDIP_WMF_RECORD_TO_EMFPLUS(META_DIBSTRETCHBLT),
' WmfRecordTypeDIBCreatePatternBrush = GDIP_WMF_RECORD_TO_EMFPLUS(META_DIBCREATEPATTERNBRUSH),
' WmfRecordTypeStretchDIB = GDIP_WMF_RECORD_TO_EMFPLUS(META_STRETCHDIB),
' WmfRecordTypeExtFloodFill = GDIP_WMF_RECORD_TO_EMFPLUS(META_EXTFLOODFILL),
' WmfRecordTypeSetLayout = GDIP_WMF_RECORD_TO_EMFPLUS(0x0149), // META_SETLAYOUT
' WmfRecordTypeResetDC = GDIP_WMF_RECORD_TO_EMFPLUS(0x014C), // META_RESETDC
' WmfRecordTypeStartDoc = GDIP_WMF_RECORD_TO_EMFPLUS(0x014D), // META_STARTDOC
' WmfRecordTypeStartPage = GDIP_WMF_RECORD_TO_EMFPLUS(0x004F), // META_STARTPAGE
' WmfRecordTypeEndPage = GDIP_WMF_RECORD_TO_EMFPLUS(0x0050), // META_ENDPAGE
' WmfRecordTypeAbortDoc = GDIP_WMF_RECORD_TO_EMFPLUS(0x0052), // META_ABORTDOC
' WmfRecordTypeEndDoc = GDIP_WMF_RECORD_TO_EMFPLUS(0x005E), // META_ENDDOC
' WmfRecordTypeDeleteObject = GDIP_WMF_RECORD_TO_EMFPLUS(META_DELETEOBJECT),
' WmfRecordTypeCreatePalette = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEPALETTE),
' WmfRecordTypeCreateBrush = GDIP_WMF_RECORD_TO_EMFPLUS(0x00F8), // META_CREATEBRUSH
' WmfRecordTypeCreatePatternBrush = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEPATTERNBRUSH),
' WmfRecordTypeCreatePenIndirect = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEPENINDIRECT),
' WmfRecordTypeCreateFontIndirect = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEFONTINDIRECT),
' WmfRecordTypeCreateBrushIndirect = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEBRUSHINDIRECT),
' WmfRecordTypeCreateBitmapIndirect = GDIP_WMF_RECORD_TO_EMFPLUS(0x02FD), // META_CREATEBITMAPINDIRECT
' WmfRecordTypeCreateBitmap = GDIP_WMF_RECORD_TO_EMFPLUS(0x06FE), // META_CREATEBITMAP
' WmfRecordTypeCreateRegion = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEREGION),
' EmfRecordTypeHeader = EMR_HEADER,
' EmfRecordTypePolyBezier = EMR_POLYBEZIER,
' EmfRecordTypePolygon = EMR_POLYGON,
' EmfRecordTypePolyline = EMR_POLYLINE,
' EmfRecordTypePolyBezierTo = EMR_POLYBEZIERTO,
' EmfRecordTypePolyLineTo = EMR_POLYLINETO,
' EmfRecordTypePolyPolyline = EMR_POLYPOLYLINE,
' EmfRecordTypePolyPolygon = EMR_POLYPOLYGON,
' EmfRecordTypeSetWindowExtEx = EMR_SETWINDOWEXTEX,
' EmfRecordTypeSetWindowOrgEx = EMR_SETWINDOWORGEX,
' EmfRecordTypeSetViewportExtEx = EMR_SETVIEWPORTEXTEX,
' EmfRecordTypeSetViewportOrgEx = EMR_SETVIEWPORTORGEX,
' EmfRecordTypeSetBrushOrgEx = EMR_SETBRUSHORGEX,
' EmfRecordTypeEOF = EMR_EOF,
' EmfRecordTypeSetPixelV = EMR_SETPIXELV,
' EmfRecordTypeSetMapperFlags = EMR_SETMAPPERFLAGS,
' EmfRecordTypeSetMapMode = EMR_SETMAPMODE,
' EmfRecordTypeSetBkMode = EMR_SETBKMODE,
' EmfRecordTypeSetPolyFillMode = EMR_SETPOLYFILLMODE,
' EmfRecordTypeSetROP2 = EMR_SETROP2,
' EmfRecordTypeSetStretchBltMode = EMR_SETSTRETCHBLTMODE,
' EmfRecordTypeSetTextAlign = EMR_SETTEXTALIGN,
' EmfRecordTypeSetColorAdjustment = EMR_SETCOLORADJUSTMENT,
' EmfRecordTypeSetTextColor = EMR_SETTEXTCOLOR,
' EmfRecordTypeSetBkColor = EMR_SETBKCOLOR,
' EmfRecordTypeOffsetClipRgn = EMR_OFFSETCLIPRGN,
' EmfRecordTypeMoveToEx = EMR_MOVETOEX,
' EmfRecordTypeSetMetaRgn = EMR_SETMETARGN,
' EmfRecordTypeExcludeClipRect = EMR_EXCLUDECLIPRECT,
' EmfRecordTypeIntersectClipRect = EMR_INTERSECTCLIPRECT,
' EmfRecordTypeScaleViewportExtEx = EMR_SCALEVIEWPORTEXTEX,
' EmfRecordTypeScaleWindowExtEx = EMR_SCALEWINDOWEXTEX,
' EmfRecordTypeSaveDC = EMR_SAVEDC,
' EmfRecordTypeRestoreDC = EMR_RESTOREDC,
' EmfRecordTypeSetWorldTransform = EMR_SETWORLDTRANSFORM,
' EmfRecordTypeModifyWorldTransform = EMR_MODIFYWORLDTRANSFORM,
' EmfRecordTypeSelectObject = EMR_SELECTOBJECT,
' EmfRecordTypeCreatePen = EMR_CREATEPEN,
' EmfRecordTypeCreateBrushIndirect = EMR_CREATEBRUSHINDIRECT,
' EmfRecordTypeDeleteObject = EMR_DELETEOBJECT,
' EmfRecordTypeAngleArc = EMR_ANGLEARC,
' EmfRecordTypeEllipse = EMR_ELLIPSE,
' EmfRecordTypeRectangle = EMR_RECTANGLE,
' EmfRecordTypeRoundRect = EMR_ROUNDRECT,
' EmfRecordTypeArc = EMR_ARC,
' EmfRecordTypeChord = EMR_CHORD,
' EmfRecordTypePie = EMR_PIE,
' EmfRecordTypeSelectPalette = EMR_SELECTPALETTE,
' EmfRecordTypeCreatePalette = EMR_CREATEPALETTE,
' EmfRecordTypeSetPaletteEntries = EMR_SETPALETTEENTRIES,
' EmfRecordTypeResizePalette = EMR_RESIZEPALETTE,
' EmfRecordTypeRealizePalette = EMR_REALIZEPALETTE,
' EmfRecordTypeExtFloodFill = EMR_EXTFLOODFILL,
' EmfRecordTypeLineTo = EMR_LINETO,
' EmfRecordTypeArcTo = EMR_ARCTO,
' EmfRecordTypePolyDraw = EMR_POLYDRAW,
' EmfRecordTypeSetArcDirection = EMR_SETARCDIRECTION,
' EmfRecordTypeSetMiterLimit = EMR_SETMITERLIMIT,
' EmfRecordTypeBeginPath = EMR_BEGINPATH,
' EmfRecordTypeEndPath = EMR_ENDPATH,
' EmfRecordTypeCloseFigure = EMR_CLOSEFIGURE,
' EmfRecordTypeFillPath = EMR_FILLPATH,
' EmfRecordTypeStrokeAndFillPath = EMR_STROKEANDFILLPATH,
' EmfRecordTypeStrokePath = EMR_STROKEPATH,
' EmfRecordTypeFlattenPath = EMR_FLATTENPATH,
' EmfRecordTypeWidenPath = EMR_WIDENPATH,
' EmfRecordTypeSelectClipPath = EMR_SELECTCLIPPATH,
' EmfRecordTypeAbortPath = EMR_ABORTPATH,
' EmfRecordTypeReserved_069 = 69, // Not Used
' EmfRecordTypeGdiComment = EMR_GDICOMMENT,
' EmfRecordTypeFillRgn = EMR_FILLRGN,
' EmfRecordTypeFrameRgn = EMR_FRAMERGN,
' EmfRecordTypeInvertRgn = EMR_INVERTRGN,
' EmfRecordTypePaintRgn = EMR_PAINTRGN,
' EmfRecordTypeExtSelectClipRgn = EMR_EXTSELECTCLIPRGN,
' EmfRecordTypeBitBlt = EMR_BITBLT,
' EmfRecordTypeStretchBlt = EMR_STRETCHBLT,
' EmfRecordTypeMaskBlt = EMR_MASKBLT,
' EmfRecordTypePlgBlt = EMR_PLGBLT,
' EmfRecordTypeSetDIBitsToDevice = EMR_SETDIBITSTODEVICE,
' EmfRecordTypeStretchDIBits = EMR_STRETCHDIBITS,
' EmfRecordTypeExtCreateFontIndirect = EMR_EXTCREATEFONTINDIRECTW,
' EmfRecordTypeExtTextOutA = EMR_EXTTEXTOUTA,
' EmfRecordTypeExtTextOutW = EMR_EXTTEXTOUTW,
' EmfRecordTypePolyBezier16 = EMR_POLYBEZIER16,
' EmfRecordTypePolygon16 = EMR_POLYGON16,
' EmfRecordTypePolyline16 = EMR_POLYLINE16,
' EmfRecordTypePolyBezierTo16 = EMR_POLYBEZIERTO16,
' EmfRecordTypePolylineTo16 = EMR_POLYLINETO16,
' EmfRecordTypePolyPolyline16 = EMR_POLYPOLYLINE16,
' EmfRecordTypePolyPolygon16 = EMR_POLYPOLYGON16,
' EmfRecordTypePolyDraw16 = EMR_POLYDRAW16,
' EmfRecordTypeCreateMonoBrush = EMR_CREATEMONOBRUSH,
' EmfRecordTypeCreateDIBPatternBrushPt = EMR_CREATEDIBPATTERNBRUSHPT,
' EmfRecordTypeExtCreatePen = EMR_EXTCREATEPEN,
' EmfRecordTypePolyTextOutA = EMR_POLYTEXTOUTA,
' EmfRecordTypePolyTextOutW = EMR_POLYTEXTOUTW,
' EmfRecordTypeSetICMMode = 98, // EMR_SETICMMODE,
' EmfRecordTypeCreateColorSpace = 99, // EMR_CREATECOLORSPACE,
' EmfRecordTypeSetColorSpace = 100, // EMR_SETCOLORSPACE,
' EmfRecordTypeDeleteColorSpace = 101, // EMR_DELETECOLORSPACE,
' EmfRecordTypeGLSRecord = 102, // EMR_GLSRECORD,
' EmfRecordTypeGLSBoundedRecord = 103, // EMR_GLSBOUNDEDRECORD,
' EmfRecordTypePixelFormat = 104, // EMR_PIXELFORMAT,
' EmfRecordTypeDrawEscape = 105, // EMR_RESERVED_105,
' EmfRecordTypeExtEscape = 106, // EMR_RESERVED_106,
' EmfRecordTypeStartDoc = 107, // EMR_RESERVED_107,
' EmfRecordTypeSmallTextOut = 108, // EMR_RESERVED_108,
' EmfRecordTypeForceUFIMapping = 109, // EMR_RESERVED_109,
' EmfRecordTypeNamedEscape = 110, // EMR_RESERVED_110,
' EmfRecordTypeColorCorrectPalette = 111, // EMR_COLORCORRECTPALETTE,
' EmfRecordTypeSetICMProfileA = 112, // EMR_SETICMPROFILEA,
' EmfRecordTypeSetICMProfileW = 113, // EMR_SETICMPROFILEW,
' EmfRecordTypeAlphaBlend = 114, // EMR_ALPHABLEND,
' EmfRecordTypeSetLayout = 115, // EMR_SETLAYOUT,
' EmfRecordTypeTransparentBlt = 116, // EMR_TRANSPARENTBLT,
' EmfRecordTypeReserved_117 = 117, // Not Used
' EmfRecordTypeGradientFill = 118, // EMR_GRADIENTFILL,
' EmfRecordTypeSetLinkedUFIs = 119, // EMR_RESERVED_119,
' EmfRecordTypeSetTextJustification = 120, // EMR_RESERVED_120,
' EmfRecordTypeColorMatchToTargetW = 121, // EMR_COLORMATCHTOTARGETW,
' EmfRecordTypeCreateColorSpaceW = 122, // EMR_CREATECOLORSPACEW,
' EmfRecordTypeMax = 122,
' EmfRecordTypeMin = 1,
' // That is the END of the GDI EMF records.
' // Now we start the list of EMF+ records. We leave quite
' // a bit of room here for the addition of any new GDI
' // records that may be added later.
' EmfPlusRecordTypeInvalid = GDIP_EMFPLUS_RECORD_BASE,
' EmfPlusRecordTypeHeader,
' EmfPlusRecordTypeEndOfFile,
' EmfPlusRecordTypeComment,
' EmfPlusRecordTypeGetDC,
' EmfPlusRecordTypeMultiFormatStart,
' EmfPlusRecordTypeMultiFormatSection,
' EmfPlusRecordTypeMultiFormatEnd,
' // For all persistent objects
' EmfPlusRecordTypeObject,
' // Drawing Records
' EmfPlusRecordTypeClear,
' EmfPlusRecordTypeFillRects,
' EmfPlusRecordTypeDrawRects,
' EmfPlusRecordTypeFillPolygon,
' EmfPlusRecordTypeDrawLines,
' EmfPlusRecordTypeFillEllipse,
' EmfPlusRecordTypeDrawEllipse,
' EmfPlusRecordTypeFillPie,
' EmfPlusRecordTypeDrawPie,
' EmfPlusRecordTypeDrawArc,
' EmfPlusRecordTypeFillRegion,
' EmfPlusRecordTypeFillPath,
' EmfPlusRecordTypeDrawPath,
' EmfPlusRecordTypeFillClosedCurve,
' EmfPlusRecordTypeDrawClosedCurve,
' EmfPlusRecordTypeDrawCurve,
' EmfPlusRecordTypeDrawBeziers,
' EmfPlusRecordTypeDrawImage,
' EmfPlusRecordTypeDrawImagePoints,
' EmfPlusRecordTypeDrawString,
' // Graphics State Records
' EmfPlusRecordTypeSetRenderingOrigin,
' EmfPlusRecordTypeSetAntiAliasMode,
' EmfPlusRecordTypeSetTextRenderingHint,
' EmfPlusRecordTypeSetTextContrast,
' EmfPlusRecordTypeSetInterpolationMode,
' EmfPlusRecordTypeSetPixelOffsetMode,
' EmfPlusRecordTypeSetCompositingMode,
' EmfPlusRecordTypeSetCompositingQuality,
' EmfPlusRecordTypeSave,
' EmfPlusRecordTypeRestore,
' EmfPlusRecordTypeBeginContainer,
' EmfPlusRecordTypeBeginContainerNoParams,
' EmfPlusRecordTypeEndContainer,
' EmfPlusRecordTypeSetWorldTransform,
' EmfPlusRecordTypeResetWorldTransform,
' EmfPlusRecordTypeMultiplyWorldTransform,
' EmfPlusRecordTypeTranslateWorldTransform,
' EmfPlusRecordTypeScaleWorldTransform,
' EmfPlusRecordTypeRotateWorldTransform,
' EmfPlusRecordTypeSetPageTransform,
' EmfPlusRecordTypeResetClip,
' EmfPlusRecordTypeSetClipRect,
' EmfPlusRecordTypeSetClipPath,
' EmfPlusRecordTypeSetClipRegion,
' EmfPlusRecordTypeOffsetClip,
' EmfPlusRecordTypeDrawDriverString,
' EmfPlusRecordTotal,
' EmfPlusRecordTypeMax = EmfPlusRecordTotal-1,
' EmfPlusRecordTypeMin = EmfPlusRecordTypeHeader,
'};
%EQUATE `WmfRecordTypeSetBkColor = 66049
%EQUATE `WmfRecordTypeSetBkMode = 65794
%EQUATE `WmfRecordTypeSetMapMode = 5795
%EQUATE `WmfRecordTypeSetROP2 = 65796
%EQUATE `WmfRecordTypeSetRelAbs = 65797
%EQUATE `WmfRecordTypeSetPolyFillMode = 65798
%EQUATE `WmfRecordTypeSetStretchBltMode = 65799
%EQUATE `WmfRecordTypeSetTextCharExtra = 65800
%EQUATE `WmfRecordTypeSetTextColor = 66057
%EQUATE `WmfRecordTypeSetTextJustification = 66058
%EQUATE `WmfRecordTypeSetWindowOrg = 66059
%EQUATE `WmfRecordTypeSetWindowExt = 66060
%EQUATE `WmfRecordTypeSetViewportOrg = 6061
%EQUATE `WmfRecordTypeSetViewportExt = 66062
%EQUATE `WmfRecordTypeOffsetWindowOrg = 66063
%EQUATE `WmfRecordTypeScaleWindowExt = 6576
%EQUATE `WmfRecordTypeOffsetViewportOrg = 6065
%EQUATE `WmfRecordTypeScaleViewportExt = 66578
%EQUATE `WmfRecordTypeLineTo = 66067
%EQUATE `WmfRecordTypeMoveTo = 6068
%EQUATE `WmfRecordTypeExcludeClipRect = 66581
%EQUATE `WmfRecordTypeIntersectClipRect = 66582
%EQUATE `WmfRecordTypeArc = 67607
%EQUATE `WmfRecordTypeEllipse = 66584
%EQUATE `WmfRecordTypeFloodFill = 66585
%EQUATE `WmfRecordTypePie = 67610
%EQUATE `WmfRecordTypeRectangle = 66587
%EQUATE `WmfRecordTypeRoundRect = 67100
%EQUATE `WmfRecordTypePatBlt = 67101
%EQUATE `WmfRecordTypeSaveDC = 5566
%EQUATE `WmfRecordTypeSetPixel = 66591
%EQUATE `WmfRecordTypeOffsetClipRgn = 66080
%EQUATE `WmfRecordTypeTextOut = 66849
%EQUATE `WmfRecordTypeBitBlt = 67874
%EQUATE `WmfRecordTypeStretchBlt = 68387
%EQUATE `WmfRecordTypePolygon = 66340
%EQUATE `WmfRecordTypePolyline = 66341
%EQUATE `WmfRecordTypeEscape = 67110
%EQUATE `WmfRecordTypeRestoreDC = 65831
%EQUATE `WmfRecordTypeFillRegion = 66088
%EQUATE `WmfRecordTypeFrameRegion = 66601
%EQUATE `WmfRecordTypeInvertRegion = 65834
%EQUATE `WmfRecordTypePaintRegion = 65835
%EQUATE `WmfRecordTypeSelectClipRegion = 65836
%EQUATE `WmfRecordTypeSelectObject = 65837
%EQUATE `WmfRecordTypeSetTextAlign = 65838
%EQUATE `WmfRecordTypeDrawText = 67119
%EQUATE `WmfRecordTypeChord = 67632
%EQUATE `WmfRecordTypeSetMapperFlags = 6097
%EQUATE `WmfRecordTypeExtTextOut = 68146
%EQUATE `WmfRecordTypeSetDIBToDev = 68915
%EQUATE `WmfRecordTypeSelectPalette = 66100
%EQUATE `WmfRecordTypeRealizePalette = 65589
%EQUATE `WmfRecordTypeAnimatePalette = 66614
%EQUATE `WmfRecordTypeSetPalEntries = 65591
%EQUATE `WmfRecordTypePolyPolygon = 66872
%EQUATE `WmfRecordTypeResizePalette = 65849
%EQUATE `WmfRecordTypeDIBBitBlt = 67904
%EQUATE `WmfRecordTypeDIBStretchBlt = 68417
%EQUATE `WmfRecordTypeDIBCreatePatternBrush = 65858
%EQUATE `WmfRecordTypeStretchDIB = 69443
%EQUATE `WmfRecordTypeExtFloodFill = 66888
%EQUATE `WmfRecordTypeSetLayout = 65865
%EQUATE `WmfRecordTypeResetDC = 65868
%EQUATE `WmfRecordTypeStartDoc = 65869
%EQUATE `WmfRecordTypeStartPage = 65615
%EQUATE `WmfRecordTypeEndPage = 65616
%EQUATE `WmfRecordTypeAbortDoc = 65618
%EQUATE `WmfRecordTypeEndDoc = 65630
%EQUATE `WmfRecordTypeDeleteObject = 66032
%EQUATE `WmfRecordTypeCreatePalette = 65783
%EQUATE `WmfRecordTypeCreateBrush = 65784
%EQUATE `WmfRecordTypeCreatePatternBrush = 66041
%EQUATE `WmfRecordTypeCreatePenIndirect = 66298
%EQUATE `WmfRecordTypeCreateFontIndirect = 66299
%EQUATE `WmfRecordTypeCreateBrushIndirect = 66300
%EQUATE `WmfRecordTypeCreateBitmapIndirect = 66301
%EQUATE `WmfRecordTypeCreateRegion = 67327
%EQUATE `EmfRecordTypeHeader = 1
%EQUATE `EmfRecordTypePolyBezier = 2
%EQUATE `EmfRecordTypePolygon = 3
%EQUATE `EmfRecordTypePolyline = 4
%EQUATE `EmfRecordTypePolyBezierTo = 5
%EQUATE `EmfRecordTypePolyLineTo = 6
%EQUATE `EmfRecordTypePolyPolyline = 7
%EQUATE `EmfRecordTypePolyPolygon = 8
%EQUATE `EmfRecordTypeSetWindowExtEx = 9
%EQUATE `EmfRecordTypeSetWindowOrgEx = 10
%EQUATE `EmfRecordTypeSetViewportExtEx = 11
%EQUATE `EmfRecordTypeSetViewportOrgEx = 12
%EQUATE `EmfRecordTypeSetBrushOrgEx = 13
%EQUATE `EmfRecordTypeEOF = 14
%EQUATE `EmfRecordTypeSetPixelV = 15
%EQUATE `EmfRecordTypeSetMapperFlags = 16
%EQUATE `EmfRecordTypeSetMapMode = 17
%EQUATE `EmfRecordTypeSetBkMode = 18
%EQUATE `EmfRecordTypeSetPolyFillMode = 19
%EQUATE `EmfRecordTypeSetROP2 = 20
%EQUATE `EmfRecordTypeSetStretchBltMode = 21
%EQUATE `EmfRecordTypeSetTextAlign = 22
%EQUATE `EmfRecordTypeSetColorAdjustment = 23
%EQUATE `EmfRecordTypeSetTextColor = 24
%EQUATE `EmfRecordTypeSetBkColor = 25
%EQUATE `EmfRecordTypeOffsetClipRgn = 26
%EQUATE `EmfRecordTypeMoveToEx = 27
%EQUATE `EmfRecordTypeSetMetaRgn = 28
%EQUATE `EmfRecordTypeExcludeClipRect = 29
%EQUATE `EmfRecordTypeIntersectClipRect = 30
%EQUATE `EmfRecordTypeScaleViewportExtEx = 31
%EQUATE `EmfRecordTypeScaleWindowExtEx = 32
%EQUATE `EmfRecordTypeSaveDC = 33
%EQUATE `EmfRecordTypeRestoreDC = 34
%EQUATE `EmfRecordTypeSetWorldTransform = 35
%EQUATE `EmfRecordTypeModifyWorldTransform = 36
%EQUATE `EmfRecordTypeSelectObject = 37
%EQUATE `EmfRecordTypeCreatePen = 38
%EQUATE `EmfRecordTypeCreateBrushIndirect = 39
%EQUATE `EmfRecordTypeDeleteObject = 40
%EQUATE `EmfRecordTypeAngleArc = 41
%EQUATE `EmfRecordTypeEllipse = 42
%EQUATE `EmfRecordTypeRectangle = 43
%EQUATE `EmfRecordTypeRoundRect = 44
%EQUATE `EmfRecordTypeArc = 45
%EQUATE `EmfRecordTypeChord = 46
%EQUATE `EmfRecordTypePie = 47
%EQUATE `EmfRecordTypeSelectPalette = 48
%EQUATE `EmfRecordTypeCreatePalette = 49
%EQUATE `EmfRecordTypeSetPaletteEntries = 50
%EQUATE `EmfRecordTypeResizePalette = 51
%EQUATE `EmfRecordTypeRealizePalette = 52
%EQUATE `EmfRecordTypeExtFloodFill = 53
%EQUATE `EmfRecordTypeLineTo = 54
%EQUATE `EmfRecordTypeArcTo = 55
%EQUATE `EmfRecordTypePolyDraw = 56
%EQUATE `EmfRecordTypeSetArcDirection = 57
%EQUATE `EmfRecordTypeSetMiterLimit = 58
%EQUATE `EmfRecordTypeBeginPath = 59
%EQUATE `EmfRecordTypeEndPath = 60
%EQUATE `EmfRecordTypeCloseFigure = 61
%EQUATE `EmfRecordTypeFillPath = 62
%EQUATE `EmfRecordTypeStrokeAndFillPath = 63
%EQUATE `EmfRecordTypeStrokePath = 64
%EQUATE `EmfRecordTypeFlattenPath = 65
%EQUATE `EmfRecordTypeWidenPath = 66
%EQUATE `EmfRecordTypeSelectClipPath = 67
%EQUATE `EmfRecordTypeAbortPath = 68
%EQUATE `EmfRecordTypeReserved_069 = 69
%EQUATE `EmfRecordTypeGdiComment = 70
%EQUATE `EmfRecordTypeFillRgn = 71
%EQUATE `EmfRecordTypeFrameRgn = 72
%EQUATE `EmfRecordTypeInvertRgn = 73
%EQUATE `EmfRecordTypePaintRgn = 74
%EQUATE `EmfRecordTypeExtSelectClipRgn = 75
%EQUATE `EmfRecordTypeBitBlt = 76
%EQUATE `EmfRecordTypeStretchBlt = 77
%EQUATE `EmfRecordTypeMaskBlt = 78
%EQUATE `EmfRecordTypePlgBlt = 79
%EQUATE `EmfRecordTypeSetDIBitsToDevice = 80
%EQUATE `EmfRecordTypeStretchDIBits = 81
%EQUATE `EmfRecordTypeExtCreateFontIndirect = 82
%EQUATE `EmfRecordTypeExtTextOutA = 83
%EQUATE `EmfRecordTypeExtTextOutW = 84
%EQUATE `EmfRecordTypePolyBezier16 = 85
%EQUATE `EmfRecordTypePolygon16 = 86
%EQUATE `EmfRecordTypePolyline16 = 87
%EQUATE `EmfRecordTypePolyBezierTo16 = 88
%EQUATE `EmfRecordTypePolylineTo16 = 89
%EQUATE `EmfRecordTypePolyPolyline16 = 90
%EQUATE `EmfRecordTypePolyPolygon16 = 91
%EQUATE `EmfRecordTypePolyDraw16 = 92
%EQUATE `EmfRecordTypeCreateMonoBrush = 93
%EQUATE `EmfRecordTypeCreateDIBPatternBrushPt = 94
%EQUATE `EmfRecordTypeExtCreatePen = 95
%EQUATE `EmfRecordTypePolyTextOutA = 96
%EQUATE `EmfRecordTypePolyTextOutW = 97
%EQUATE `EmfRecordTypeSetICMMode = 98
%EQUATE `EmfRecordTypeCreateColorSpace = 99
%EQUATE `EmfRecordTypeSetColorSpace = 100
%EQUATE `EmfRecordTypeDeleteColorSpace = 101
%EQUATE `EmfRecordTypeGLSRecord = 102
%EQUATE `EmfRecordTypeGLSBoundedRecord = 103
%EQUATE `EmfRecordTypePixelFormat = 104
%EQUATE `EmfRecordTypeDrawEscape = 105
%EQUATE `EmfRecordTypeExtEscape = 106
%EQUATE `EmfRecordTypeStartDoc = 107
%EQUATE `EmfRecordTypeSmallTextOut = 108
%EQUATE `EmfRecordTypeForceUFIMapping = 109
%EQUATE `EmfRecordTypeNamedEscape = 110
%EQUATE `EmfRecordTypeColorCorrectPalette = 111
%EQUATE `EmfRecordTypeSetICMProfileA = 112
%EQUATE `EmfRecordTypeSetICMProfileW = 113
%EQUATE `EmfRecordTypeAlphaBlend = 114
%EQUATE `EmfRecordTypeSetLayout = 115
%EQUATE `EmfRecordTypeTransparentBlt = 116
%EQUATE `EmfRecordTypeReserved_117 = 117
%EQUATE `EmfRecordTypeGradientFill = 118
%EQUATE `EmfRecordTypeSetLinkedUFIs = 119
%EQUATE `EmfRecordTypeSetTextJustification = 120
%EQUATE `EmfRecordTypeColorMatchToTargetW = 121
%EQUATE `EmfRecordTypeCreateColorSpaceW = 122
%EQUATE `EmfRecordTypeMax = 122
%EQUATE `EmfRecordTypeMin = 1
%EQUATE `EmfPlusRecordTypeInvalid = 16384
%EQUATE `EmfPlusRecordTypeHeader = 16385
%EQUATE `EmfPlusRecordTypeEndOfFile = 16386
%EQUATE `EmfPlusRecordTypeComment = 16387
%EQUATE `EmfPlusRecordTypeGetDC = 16388
%EQUATE `EmfPlusRecordTypeMultiFormatStart = 16389
%EQUATE `EmfPlusRecordTypeMultiFormatSection = 16390
%EQUATE `EmfPlusRecordTypeMultiFormatEnd = 16391
%EQUATE `EmfPlusRecordTypeObject = 16392
%EQUATE `EmfPlusRecordTypeClear = 16393
%EQUATE `EmfPlusRecordTypeFillRects = 16394
%EQUATE `EmfPlusRecordTypeDrawRects = 16395
%EQUATE `EmfPlusRecordTypeFillPolygon = 16396
%EQUATE `EmfPlusRecordTypeDrawLines = 16397
%EQUATE `EmfPlusRecordTypeFillEllipse = 16398
%EQUATE `EmfPlusRecordTypeDrawEllipse = 16399
%EQUATE `EmfPlusRecordTypeFillPie = 16400
%EQUATE `EmfPlusRecordTypeDrawPie = 16401
%EQUATE `EmfPlusRecordTypeDrawArc = 16402
%EQUATE `EmfPlusRecordTypeFillRegion = 16403
%EQUATE `EmfPlusRecordTypeFillPath = 16404
%EQUATE `EmfPlusRecordTypeDrawPath = 16405
%EQUATE `EmfPlusRecordTypeFillClosedCurve = 16406
%EQUATE `EmfPlusRecordTypeDrawClosedCurve = 16407
%EQUATE `EmfPlusRecordTypeDrawCurve = 16408
%EQUATE `EmfPlusRecordTypeDrawBeziers = 16409
%EQUATE `EmfPlusRecordTypeDrawImage = 16410
%EQUATE `EmfPlusRecordTypeDrawImagePoints = 16411
%EQUATE `EmfPlusRecordTypeDrawString = 16412
%EQUATE `EmfPlusRecordTypeSetRenderingOrigin = 16413
%EQUATE `EmfPlusRecordTypeSetAntiAliasMode = 16414
%EQUATE `EmfPlusRecordTypeSetTextRenderingHint = 16415
%EQUATE `EmfPlusRecordTypeSetTextContrast = 16416
%EQUATE `EmfPlusRecordTypeSetInterpolationMode = 16417
%EQUATE `EmfPlusRecordTypeSetPixelOffsetMode = 16418
%EQUATE `EmfPlusRecordTypeSetCompositingMode = 16419
%EQUATE `EmfPlusRecordTypeSetCompositingQuality = 16420
%EQUATE `EmfPlusRecordTypeSave = 16421
%EQUATE `EmfPlusRecordTypeRestore = 16422
%EQUATE `EmfPlusRecordTypeBeginContainer = 16423
%EQUATE `EmfPlusRecordTypeBeginContainerNoParams = 16424
%EQUATE `EmfPlusRecordTypeEndContainer = 16425
%EQUATE `EmfPlusRecordTypeSetWorldTransform = 16426
%EQUATE `EmfPlusRecordTypeResetWorldTransform = 16427
%EQUATE `EmfPlusRecordTypeMultiplyWorldTransform = 16428
%EQUATE `EmfPlusRecordTypeTranslateWorldTransform = 16429
%EQUATE `EmfPlusRecordTypeScaleWorldTransform = 16430
%EQUATE `EmfPlusRecordTypeRotateWorldTransform = 16431
%EQUATE `EmfPlusRecordTypeSetPageTransform = 16432
%EQUATE `EmfPlusRecordTypeResetClip = 16433
%EQUATE `EmfPlusRecordTypeSetClipRect = 16434
%EQUATE `EmfPlusRecordTypeSetClipPath = 16435
%EQUATE `EmfPlusRecordTypeSetClipRegion = 16436
%EQUATE `EmfPlusRecordTypeOffsetClip = 16437
%EQUATE `EmfPlusRecordTypeDrawDriverString = 16438
#IF (%GDIPVER >= &H0110)
%EQUATE `EmfPlusRecordTypeStrokeFillPath = 16439
%EQUATE `EmfPlusRecordTypeSerializableObject = 16440
%EQUATE `EmfPlusRecordTypeSetTSGraphics = 16441
%EQUATE `EmfPlusRecordTypeSetTSClip = 16442
#ENDIF
'// NOTE: New records *must* be added immediately before this line.
%EQUATE `EmfPlusRecordTotal = 16443
%EQUATE `EmfPlusRecordTypeMax = %EmfPlusRecordTotal-1
%EQUATE `EmfPlusRecordTypeMin = %EmfPlusRecordTypeHeader
'//---------------------------------------------------------------------------
'// StringFormatFlags
'//---------------------------------------------------------------------------
'//---------------------------------------------------------------------------
'// String format flags
'//
'// DirectionRightToLeft - For horizontal text, the reading order is
'// right to left. This value is called
'// the base embedding level by the Unicode
'// bidirectional engine.
'// For vertical text, columns are read from
'// right to left.
'// By default, horizontal or vertical text is
'// read from left to right.
'//
'// DirectionVertical - Individual lines of text are vertical. In
'// each line, characters progress from top to
'// bottom.
'// By default, lines of text are horizontal,
'// each new line below the previous line.
'//
'// NoFitBlackBox - Allows parts of glyphs to overhang the
'// bounding rectangle.
'// By default glyphs are first aligned
'// inside the margines, then any glyphs which
'// still overhang the bounding box are
'// repositioned to avoid any overhang.
'// For example when an italic
'// lower case letter f in a font such as
'// Garamond is aligned at the far left of a
'// rectangle, the lower part of the f will
'// reach slightly further left than the left
'// edge of the rectangle. Setting this flag
'// will ensure the character aligns visually
'// with the lines above and below, but may
'// cause some pixels outside the formatting
'// rectangle to be clipped or painted.
'//
'// DisplayFormatControl - Causes control characters such as the
'// left-to-right mark to be shown in the
'// output with a representative glyph.
'//
'// NoFontFallback - Disables fallback to alternate fonts for
'// characters not supported in the requested
'// font. Any missing characters will be
'// be displayed with the fonts missing glyph,
'// usually an open square.
'//
'// NoWrap - Disables wrapping of text between lines
'// when formatting within a rectangle.
'// NoWrap is implied when a point is passed
'// instead of a rectangle, or when the
'// specified rectangle has a zero line length.
'//
'// NoClip - By default text is clipped to the
'// formatting rectangle. Setting NoClip
'// allows overhanging pixels to affect the
'// device outside the formatting rectangle.
'// Pixels at the end of the line may be
'// affected if the glyphs overhang their
'// cells, and either the NoFitBlackBox flag
'// has been set, or the glyph extends to far
'// to be fitted.
'// Pixels above/before the first line or
'// below/after the last line may be affected
'// if the glyphs extend beyond their cell
'// ascent / descent. This can occur rarely
'// with unusual diacritic mark combinations.
'//---------------------------------------------------------------------------
' enum StringFormatFlags
%EQUATE `StringFormatFlagsDirectionRightToLeft = &H00000001
%EQUATE `StringFormatFlagsDirectionVertical = &H00000002
%EQUATE `StringFormatFlagsNoFitBlackBox = &H00000004
%EQUATE `StringFormatFlagsDisplayFormatControl = &H00000020
%EQUATE `StringFormatFlagsNoFontFallback = &H00000400
%EQUATE `StringFormatFlagsMeasureTrailingSpaces = &H00000800
%EQUATE `StringFormatFlagsNoWrap = &H00001000
%EQUATE `StringFormatFlagsLineLimit = &H00002000
%EQUATE `StringFormatFlagsNoClip = &H00004000
%EQUATE `StringFormatFlagsBypassGDI = &H80000000
'//---------------------------------------------------------------------------
'// StringTrimming
'//---------------------------------------------------------------------------
' enum StringTrimming {
%EQUATE `StringTrimmingNone = 0
%EQUATE `StringTrimmingCharacter = 1
%EQUATE `StringTrimmingWord = 2
%EQUATE `StringTrimmingEllipsisCharacter = 3
%EQUATE `StringTrimmingEllipsisWord = 4
%EQUATE `StringTrimmingEllipsisPath = 5
'//---------------------------------------------------------------------------
'// National language digit substitution
'//---------------------------------------------------------------------------
' enum StringDigitSubstitute
%EQUATE `StringDigitSubstituteUser = 0 ' As NLS setting
%EQUATE `StringDigitSubstituteNone = 1
%EQUATE `StringDigitSubstituteNational = 2
%EQUATE `StringDigitSubstituteTraditional = 3
'//---------------------------------------------------------------------------
'// Hotkey prefix interpretation
'//---------------------------------------------------------------------------
' enum HotkeyPrefix
%EQUATE `HotkeyPrefixNone = 0
%EQUATE `HotkeyPrefixShow = 1
%EQUATE `HotkeyPrefixHide = 2
'//---------------------------------------------------------------------------
'// String alignment flags
'//---------------------------------------------------------------------------
' enum StringAlignment
' // Left edge for left-to-right text,
' // right for right-to-left text,
' // and top for vertical
%EQUATE `StringAlignmentNear = 0
%EQUATE `StringAlignmentCenter = 1
%EQUATE `StringAlignmentFar = 2
'//---------------------------------------------------------------------------
'// DriverStringOptions
'//---------------------------------------------------------------------------
' enum DriverStringOptions
%EQUATE `DriverStringOptionsCmapLookup = 1
%EQUATE `DriverStringOptionsVertical = 2
%EQUATE `DriverStringOptionsRealizedAdvance = 4
%EQUATE `DriverStringOptionsLimitSubpixel = 8
'//---------------------------------------------------------------------------
'// Flush Intention flags
'//---------------------------------------------------------------------------
' enum FlushIntention
%EQUATE `FlushIntentionFlush = 0 ' // Flush all batched rendering operations
%EQUATE `FlushIntentionSync = 1 ' // Flush all batched rendering operations
 ' // and wait for them to complete
'//---------------------------------------------------------------------------
'// Image encoder parameter related types
'//---------------------------------------------------------------------------
' enum EncoderParameterValueType
%EQUATE `EncoderParameterValueTypeByte = 1 ' 8-bit unsigned int
%EQUATE `EncoderParameterValueTypeASCII = 2 ' 8-bit byte containing one 7-bit ASCII
 ' code. NULL terminated.
%EQUATE `EncoderParameterValueTypeShort = 3 ' 16-bit unsigned int
%EQUATE `EncoderParameterValueTypeLong = 4 ' 32-bit unsigned int
%EQUATE `EncoderParameterValueTypeRational = 5 ' Two Longs. The first Long is the
 ' numerator the second Long expresses the
 ' denomintor.
%EQUATE `EncoderParameterValueTypeLongRange = 6 ' Two longs which specify a range of
 ' INT eger values. The first Long specifies
 ' the lower end and the second one
 ' specifies the higher end. All values
 ' are inclusive at both ends
%EQUATE `EncoderParameterValueTypeUndefined = 7 ' 8-bit byte that can take any value
 ' depending on field definition
%EQUATE `EncoderParameterValueTypeRationalRange = 8 ' Two Rationals. The first Rational
 ' specifies the lower end and the second
 ' specifies the higher end. All values
 ' are inclusive at both ends
%EQUATE `EncoderParameterValueTypePointer = 9 ' Specifies that the parameter is a pointer
 ' to a block of custom metadata.
'//---------------------------------------------------------------------------
'// Image encoder value types
'//---------------------------------------------------------------------------
' enum EncoderValue
%EQUATE `EncoderValueColorTypeCMYK = 0
%EQUATE `EncoderValueColorTypeYCCK = 1
%EQUATE `EncoderValueCompressionLZW = 2
%EQUATE `EncoderValueCompressionCCITT3 = 3
%EQUATE `EncoderValueCompressionCCITT4 = 4
%EQUATE `EncoderValueCompressionRle = 5
%EQUATE `EncoderValueCompressionNone = 6
%EQUATE `EncoderValueScanMethodInterlaced = 7
%EQUATE `EncoderValueScanMethodNonInterlaced = 8
%EQUATE `EncoderValueVersionGif87 = 9
%EQUATE `EncoderValueVersionGif89 = 10
%EQUATE `EncoderValueRenderProgressive = 11
%EQUATE `EncoderValueRenderNonProgressive = 12
%EQUATE `EncoderValueTransformRotate90 = 13
%EQUATE `EncoderValueTransformRotate180 = 14
%EQUATE `EncoderValueTransformRotate270 = 15
%EQUATE `EncoderValueTransformFlipHorizontal = 16
%EQUATE `EncoderValueTransformFlipVertical = 17
%EQUATE `EncoderValueMultiFrame = 18
%EQUATE `EncoderValueLastFrame = 19
%EQUATE `EncoderValueFlush = 20
%EQUATE `EncoderValueFrameDimensionTime = 21
%EQUATE `EncoderValueFrameDimensionResolution = 22
%EQUATE `EncoderValueFrameDimensionPage = 23
#IF (%GDIPVER >= &H0110)
%EQUATE `EncoderValueColorTypeGray = 24
%EQUATE `EncoderValueColorTypeRGB = 25
#ENDIF
'//---------------------------------------------------------------------------
'// Conversion of Emf To WMF Bits flags
'//---------------------------------------------------------------------------
'enum EmfToWmfBitsFlags
%EQUATE `EmfToWmfBitsFlagsDefault = &H00000000
%EQUATE `EmfToWmfBitsFlagsEmbedEmf = &H00000001
%EQUATE `EmfToWmfBitsFlagsIncludePlaceable = &H00000002
%EQUATE `EmfToWmfBitsFlagsNoXORClip = &H00000004
#IF (%GDIPVER >= &H0110)
'//---------------------------------------------------------------------------
'// Conversion of Emf To Emf+ Bits flags
'//---------------------------------------------------------------------------
' enum ConvertToEmfPlusFlags
%EQUATE `ConvertToEmfPlusFlagsDefault = &H00000000
%EQUATE `ConvertToEmfPlusFlagsRopUsed = &H00000001
%EQUATE `ConvertToEmfPlusFlagsText = &H00000002
%EQUATE `ConvertToEmfPlusFlagsInvalidRecord = &H00000004
#ENDIF
'//---------------------------------------------------------------------------
'// Test Control flags
'//---------------------------------------------------------------------------
' enum GpTestControlEnum
%EQUATE `TestControlForceBilinear = 0
%EQUATE `TestControlNoICM = 1
%EQUATE `TestControlGetBuildNumber = 2
#ENDIF
