|
|
/**************************************************************************\
* * Copyright (c) 1998-2000, Microsoft Corp. All Rights Reserved. * * Module Name: * * GdiplusEnums.hpp * * Abstract: * * Various enumeration types * * Revision History: * * 12/11/1998 davidx * Created it. * \**************************************************************************/
#ifndef _GDIPLUSENUMS_H
#define _GDIPLUSENUMS_H
//--------------------------------------------------------------------------
// Graphics and Container State cookies
//--------------------------------------------------------------------------
typedef UINT GraphicsState; typedef UINT GraphicsContainer;
//--------------------------------------------------------------------------
// Fill mode constants
//--------------------------------------------------------------------------
enum FillMode { FillModeAlternate, // 0
FillModeWinding // 1
};
//--------------------------------------------------------------------------
// Quality mode constants
//--------------------------------------------------------------------------
enum QualityMode { QualityModeInvalid = -1, QualityModeDefault = 0, QualityModeLow = 1, // for apps that need the best performance
QualityModeHigh = 2 // for apps that need the best rendering quality
};
//--------------------------------------------------------------------------
// Alpha compositing mode constants
//--------------------------------------------------------------------------
enum CompositingMode { CompositingModeSourceOver, // 0
CompositingModeSourceCopy // 1
};
//--------------------------------------------------------------------------
// Alpha compositing quality constants
//--------------------------------------------------------------------------
enum CompositingQuality { CompositingQualityInvalid = QualityModeInvalid, CompositingQualityDefault = QualityModeDefault, CompositingQualityHighSpeed = QualityModeLow, CompositingQualityHighQuality = QualityModeHigh, CompositingQualityGammaCorrected, CompositingQualityAssumeLinear };
//--------------------------------------------------------------------------
// Unit constants
//--------------------------------------------------------------------------
enum Unit { UnitWorld, // 0 -- World coordinate (non-physical unit)
UnitDisplay, // 1 -- Variable -- for PageTransform only
UnitPixel, // 2 -- Each unit is one device pixel.
UnitPoint, // 3 -- Each unit is a printer's point, or 1/72 inch.
UnitInch, // 4 -- Each unit is 1 inch.
UnitDocument, // 5 -- Each unit is 1/300 inch.
UnitMillimeter // 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 { MetafileFrameUnitPixel = UnitPixel, MetafileFrameUnitPoint = UnitPoint, MetafileFrameUnitInch = UnitInch, MetafileFrameUnitDocument = UnitDocument, MetafileFrameUnitMillimeter = UnitMillimeter, MetafileFrameUnitGdi // GDI compatible .01 MM units
};
//--------------------------------------------------------------------------
// Coordinate space identifiers
//--------------------------------------------------------------------------
enum CoordinateSpace { CoordinateSpaceWorld, // 0
CoordinateSpacePage, // 1
CoordinateSpaceDevice // 2
};
//--------------------------------------------------------------------------
// Various wrap modes for brushes
//--------------------------------------------------------------------------
enum WrapMode { WrapModeTile, // 0
WrapModeTileFlipX, // 1
WrapModeTileFlipY, // 2
WrapModeTileFlipXY, // 3
WrapModeClamp // 4
};
//--------------------------------------------------------------------------
// Various hatch styles
//--------------------------------------------------------------------------
enum HatchStyle { HatchStyleHorizontal, // 0
HatchStyleVertical, // 1
HatchStyleForwardDiagonal, // 2
HatchStyleBackwardDiagonal, // 3
HatchStyleCross, // 4
HatchStyleDiagonalCross // 5
};
//--------------------------------------------------------------------------
// Dash style constants
//--------------------------------------------------------------------------
enum DashStyle { DashStyleSolid, // 0
DashStyleDash, // 1
DashStyleDot, // 2
DashStyleDashDot, // 3
DashStyleDashDotDot, // 4
DashStyleCustom // 5
};
//--------------------------------------------------------------------------
// Line cap constants (only the lowest 8 bits are used).
//--------------------------------------------------------------------------
enum LineCap { LineCapFlat = 0, LineCapSquare = 1, LineCapRound = 2, LineCapTriangle = 3,
LineCapNoAnchor = 0x10, // corresponds to flat cap
LineCapSquareAnchor = 0x11, // corresponds to square cap
LineCapRoundAnchor = 0x12, // corresponds to round cap
LineCapDiamondAnchor = 0x13, // corresponds to triangle cap
LineCapArrowAnchor = 0x14, // no correspondence
LineCapCustom = 0xff, // custom cap
LineCapAnchorMask = 0xf0 // mask to check for anchor or not.
};
//--------------------------------------------------------------------------
// Custom Line cap type constants
//--------------------------------------------------------------------------
enum CustomLineCapType { CustomLineCapTypeDefault = 0, CustomLineCapTypeAdjustableArrow = 1 };
//--------------------------------------------------------------------------
// Line join constants
//--------------------------------------------------------------------------
enum LineJoin { LineJoinMiter = 0, LineJoinBevel = 1, LineJoinRound = 2 };
//--------------------------------------------------------------------------
// 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 { PathPointTypeStart = 0, // move
PathPointTypeLine = 1, // line
PathPointTypeBezier = 3, // default Beizer (= cubic Bezier)
PathPointTypePathTypeMask = 0x07, // type mask (lowest 3 bits).
PathPointTypeDashMode = 0x10, // currently in dash mode.
PathPointTypePathMarker = 0x20, // a marker for the path.
PathPointTypeCloseSubpath = 0x80, // closed flag
// Path types used for advanced path.
PathPointTypeBezier2 = 2, // quadratic Beizer
PathPointTypeBezier3 = 3, // cubic Bezier
PathPointTypeBezier4 = 4, // quartic (4th order) Beizer
PathPointTypeBezier5 = 5, // quintic (5th order) Bezier
PathPointTypeBezier6 = 6 // hexaic (6th order) Bezier
};
//--------------------------------------------------------------------------
// WarpMode constants
//--------------------------------------------------------------------------
enum WarpMode { WarpModePerspective, // 0
WarpModeBilinear // 1
};
//--------------------------------------------------------------------------
// LineGradient Mode
//--------------------------------------------------------------------------
enum LinearGradientMode { LinearGradientModeHorizontal, // 0
LinearGradientModeVertical, // 1
LinearGradientModeForwardDiagonal, // 2
LinearGradientModeBackwardDiagonal // 3
};
//--------------------------------------------------------------------------
// Region Comine Modes
//--------------------------------------------------------------------------
enum CombineMode { CombineModeReplace, // 0
CombineModeIntersect, // 1
CombineModeUnion, // 2
CombineModeXor, // 3
CombineModeExclude, // 4
CombineModeComplement // 5 (does exclude from)
};
//--------------------------------------------------------------------------
// Image types
//--------------------------------------------------------------------------
enum ImageType { ImageTypeUnknown, // 0
ImageTypeBitmap, // 1
ImageTypeMetafile // 2
};
//--------------------------------------------------------------------------
// Interpolation modes
//--------------------------------------------------------------------------
enum InterpolationMode { InterpolationModeInvalid = QualityModeInvalid, InterpolationModeDefault = QualityModeDefault, InterpolationModeLowQuality = QualityModeLow, InterpolationModeHighQuality = QualityModeHigh, InterpolationModeBilinear, InterpolationModeBicubic, InterpolationModeNearestNeighbor, InterpolationModeHighQualityBilinear, InterpolationModeHighQualityBicubic };
//--------------------------------------------------------------------------
// Pen types
//--------------------------------------------------------------------------
enum PenAlignment { PenAlignmentCenter = 0, PenAlignmentInset = 1, PenAlignmentOutset = 2, PenAlignmentLeft = 3, PenAlignmentRight = 4 };
//--------------------------------------------------------------------------
// Brush types
//--------------------------------------------------------------------------
enum BrushType { BrushTypeSolidColor = 0, BrushTypeHatchFill = 1, BrushTypeTextureFill = 2, BrushTypePathGradient = 3, BrushTypeLinearGradient = 4 };
//--------------------------------------------------------------------------
// Pen's Fill types
//--------------------------------------------------------------------------
enum PenType { PenTypeSolidColor = BrushTypeSolidColor, PenTypeHatchFill = BrushTypeHatchFill, PenTypeTextureFill = BrushTypeTextureFill, PenTypePathGradient = BrushTypePathGradient, PenTypeLinearGradient = BrushTypeLinearGradient, PenTypeUnknown = -1 };
//--------------------------------------------------------------------------
// Matrix Order
//--------------------------------------------------------------------------
enum MatrixOrder { MatrixOrderPrepend = 0, MatrixOrderAppend = 1 };
//--------------------------------------------------------------------------
// Generic font families
//--------------------------------------------------------------------------
enum GenericFontFamily { GenericFontFamilySerif, GenericFontFamilySansSerif, GenericFontFamilyMonospace
};
//--------------------------------------------------------------------------
// FontStyle: face types and common styles
//--------------------------------------------------------------------------
// These should probably be flags
// Must have:
// Regular = 0
// Bold = 1
// Italic = 2
// BoldItalic = 3
enum FontStyle { FontStyleRegular = 0, FontStyleBold = 1, FontStyleItalic = 2, FontStyleBoldItalic = 3, FontStyleUnderline = 4, FontStyleStrikeout = 8 };
//---------------------------------------------------------------------------
// Smoothing Mode
//---------------------------------------------------------------------------
enum SmoothingMode { SmoothingModeInvalid = QualityModeInvalid, SmoothingModeDefault = QualityModeDefault, SmoothingModeHighSpeed = QualityModeLow, SmoothingModeHighQuality = QualityModeHigh, SmoothingModeNone, SmoothingModeAntiAlias };
//---------------------------------------------------------------------------
// Pixel Format Mode
//---------------------------------------------------------------------------
enum PixelOffsetMode { PixelOffsetModeInvalid = QualityModeInvalid, PixelOffsetModeDefault = QualityModeDefault, PixelOffsetModeHighSpeed = QualityModeLow, PixelOffsetModeHighQuality = QualityModeHigh, PixelOffsetModeNone, // no pixel offset
PixelOffsetModeHalf // offset by -0.5, -0.5 for fast anti-alias perf
};
//---------------------------------------------------------------------------
// Text Rendering Hint
//---------------------------------------------------------------------------
enum TextRenderingHint { TextRenderingHintSingleBitPerPixelGridFit = 0, // Glyph bitmap with hinting
TextRenderingHintSingleBitPerPixel, // Glyph bitmap without hinting
TextRenderingHintAntiAliasGridFit, // Glyph anti-alias bitmap without hinting
TextRenderingHintAntiAlias, // Glyph anti-alias bitmap with hinting
TextRenderingHintClearTypeGridFit // Glyph CT bitmap with hinting
};
//---------------------------------------------------------------------------
// Metafile Types
//---------------------------------------------------------------------------
enum MetafileType { MetafileTypeInvalid, // Invalid metafile
MetafileTypeWmf, // Standard WMF
MetafileTypeWmfAldus, // Aldus Placeable Metafile format
MetafileTypeEmf, // EMF (not EMF+)
MetafileTypeEmfPlusOnly, // EMF+ without dual, down-level records
MetafileTypeEmfPlusDual // EMF+ with dual, down-level records
};
// Specifies the type of EMF to record
enum EmfType { EmfTypeEmfOnly = MetafileTypeEmf, // no EMF+, only EMF
EmfTypeEmfPlusOnly = MetafileTypeEmfPlusOnly, // no EMF, only EMF+
EmfTypeEmfPlusDual = MetafileTypeEmfPlusDual // both EMF+ and EMF
};
// All persistent objects must have a type listed here
enum ObjectType { ObjectTypeInvalid, ObjectTypeBrush, ObjectTypePen, ObjectTypePath, ObjectTypeRegion, ObjectTypeImage, ObjectTypeFont, ObjectTypeStringFormat, ObjectTypeImageAttributes, ObjectTypeMax = ObjectTypeImageAttributes, ObjectTypeMin = ObjectTypeBrush };
inline BOOL ObjectTypeIsValid( ObjectType type ) { return ((type >= ObjectTypeMin) && (type <= ObjectTypeMax)); }
//---------------------------------------------------------------------------
// EMF+ Records
//---------------------------------------------------------------------------
// We have to change the WMF record numbers so that they don't conflict with
// the EMF and EMF+ record numbers.
enum EmfPlusRecordType; #define GDIP_EMFPLUS_RECORD_BASE 0x00004000
#define GDIP_WMF_RECORD_BASE 0x00010000
#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)
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), WmfRecordTypeOffsetCilpRgn = 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), 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
WmfRecordTypeDeleteObject = GDIP_WMF_RECORD_TO_EMFPLUS(META_DELETEOBJECT), WmfRecordTypeCreatePalette = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEPALETTE), 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), 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, // the application grabbed the metafile dc
EmfPlusRecordTypeMultiFormatStart, EmfPlusRecordTypeMultiFormatSection, EmfPlusRecordTypeMultiFormatEnd,
// For all persistent objects
EmfPlusRecordTypeObject, // brush,pen,path,region,image,font,string-format
// 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, EmfPlusRecordTypeSetTextGammaValue, EmfPlusRecordTypeSetInterpolationMode, EmfPlusRecordTypeSetPixelOffsetMode, EmfPlusRecordTypeSetCompositingMode, EmfPlusRecordTypeSetCompositingQuality, EmfPlusRecordTypeSave, EmfPlusRecordTypeRestore, EmfPlusRecordTypeBeginContainer, EmfPlusRecordTypeBeginContainerNoParams, EmfPlusRecordTypeEndContainer, EmfPlusRecordTypeSetWorldTransform, EmfPlusRecordTypeResetWorldTransform, EmfPlusRecordTypeMultiplyWorldTransform, EmfPlusRecordTypeTranslateWorldTransform, EmfPlusRecordTypeScaleWorldTransform, EmfPlusRecordTypeRotateWorldTransform, EmfPlusRecordTypeSetPageTransform, EmfPlusRecordTypeResetClip, EmfPlusRecordTypeSetClipRect, EmfPlusRecordTypeSetClipPath, EmfPlusRecordTypeSetClipRegion, EmfPlusRecordTypeOffsetClip,
// New record types must be added here (at the end) -- do not add above,
// since that will invalidate previous metafiles!
EmfPlusRecordTypeDrawDriverString,
// Have this here so you don't need to keep changing the value of
// EmfPlusRecordTypeMax every time you add a new record.
EmfPlusRecordTotal,
EmfPlusRecordTypeMax = EmfPlusRecordTotal-1, 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.
//
// NumberContextArabic - Causes any initial numeric in the string to
// be analysed for bidirection layout as if
// it was preceeded by Arabic text.
//
// DisableKashidaJustification - Arabic text will not be justified by the
// insertion of kashidas (i.e. extending the
// joining line between characters). Instead
// Arabic script will be justified by the
// widening of the whitespace between words.
//
// DisplayFormatControl - Causes control characters such as the
// left-to-right mark to be shown in the
// output with a representative glyph.
//
// DisableKerning - Disables Truetype and OpenType kerning.
//
// DisableLigatures - Disables Truetype and OpenType ligatures.
//
// LayoutLegacyBidi - Causes the bidirection algorithm to use
// slightly different classifications for
// '+', '-' and '/' that make their layout
// much closer to that expected by files
// generated in Windows or by Windows
// applications.
//
// NoChanges - A text imager created with this flag set
// does not support those APIs that change
// it's contents or formatting, but for most
// simple text will be significantly faster in
// performing measurement and drawing
// functions.
//
// 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 { StringFormatFlagsDirectionRightToLeft = 0x00000001, StringFormatFlagsDirectionVertical = 0x00000002, StringFormatFlagsNoFitBlackBox = 0x00000004, StringFormatFlagsNumberContextArabic = 0x00000008, StringFormatFlagsDisableKashidaJustification = 0x00000010, StringFormatFlagsDisplayFormatControl = 0x00000020, StringFormatFlagsDisableKerning = 0x00000040, StringFormatFlagsDisableLigatures = 0x00000080, StringFormatFlagsLayoutLegacyBidi = 0x00000100, StringFormatFlagsNoChanges = 0x00000200, StringFormatFlagsNoFontFallback = 0x00000400, StringFormatFlagsMeasureTrailingSpaces = 0x00000800, StringFormatFlagsNoWrap = 0x00001000, StringFormatFlagsLineLimit = 0x00002000,
StringFormatFlagsNoClip = 0x00004000 };
//---------------------------------------------------------------------------
// StringTrimming
//---------------------------------------------------------------------------
enum StringTrimming { StringTrimmingNone = 0, StringTrimmingCharacter = 1, StringTrimmingWord = 2, StringTrimmingEllipsisCharacter = 3, StringTrimmingEllipsisWord = 4, StringTrimmingEllipsisPath = 5 };
//---------------------------------------------------------------------------
// String units
//
// String units are like length units in CSS, they may be absolute, or
// they may be relative to a font size.
//
//---------------------------------------------------------------------------
enum StringUnit { StringUnitWorld = UnitWorld, StringUnitDisplay = UnitDisplay, StringUnitPixel = UnitPixel, StringUnitPoint = UnitPoint, StringUnitInch = UnitInch, StringUnitDocument = UnitDocument, StringUnitMillimeter = UnitMillimeter, StringUnitEm = 32 };
//---------------------------------------------------------------------------
// Line spacing flags
//---------------------------------------------------------------------------
enum LineSpacing { LineSpacingWorld = UnitWorld, LineSpacingDisplay = UnitDisplay, LineSpacingPixel = UnitPixel, LineSpacingPoint = UnitPoint, LineSpacingInch = UnitInch, LineSpacingDocument = UnitDocument, LineSpacingMillimeter = UnitMillimeter,
LineSpacingRecommended = 32, LineSpacingAtLeast = 33, LineSpacingAtLeastMultiple = 34, LineSpacingCell = 35, LineSpacingCellAtLeast = 36, LineSpacingCellAtLeastMultiple = 37 };
/// The following methods of linespacing are relative to the font size
//
// =========== Method =========== =============== Relative to ===============
//
// LineSpacingRecommended recommended line spacing specified by font
// LineSpacingAtLeast max(recommended, tallest glyph cell)
// LineSpacingAtLeastMultiple smallest multiple of recommended big enough
// for all glyph cells on the line
// LineSpacingCell cell height
// LineSpacingCellAtLeast max(font cell height, tallest glyph cell)
// LineSpacingCellAtLeastMultiple smallest multiple of cell height big enough
// for all glyph cells on the line
//---------------------------------------------------------------------------
// National language digit substitution
//---------------------------------------------------------------------------
enum StringDigitSubstitute { StringDigitSubstituteUser = 0, // As NLS setting
StringDigitSubstituteNone = 1, StringDigitSubstituteNational = 2, StringDigitSubstituteTraditional = 3 };
//---------------------------------------------------------------------------
// Hotkey prefix interpretation
//---------------------------------------------------------------------------
enum HotkeyPrefix { HotkeyPrefixNone = 0, HotkeyPrefixShow = 1, HotkeyPrefixHide = 2 };
//---------------------------------------------------------------------------
// Text alignment flags
//---------------------------------------------------------------------------
enum StringAlignment { // Left edge for left-to-right text,
// right for right-to-left text,
// and top for vertical
StringAlignmentNear = 0, StringAlignmentCenter = 1, StringAlignmentFar = 2 };
//---------------------------------------------------------------------------
// DriverStringOptions
//---------------------------------------------------------------------------
enum DriverStringOptions { DriverStringOptionsCmapLookup = 1, DriverStringOptionsVertical = 2, DriverStringOptionsRealizedAdvance = 4, DriverStringOptionsCompensateResolution = 8 };
//---------------------------------------------------------------------------
// Flush Intention flags
//---------------------------------------------------------------------------
enum FlushIntention { FlushIntentionFlush = 0, // Flush all batched rendering operations
FlushIntentionSync = 1 // Flush all batched rendering operations
// and wait for them to complete
};
//---------------------------------------------------------------------------
// Window Change Notification types
//---------------------------------------------------------------------------
enum WindowNotifyEnum { WindowNotifyEnumEnable = 0, WindowNotifyEnumDisable, WindowNotifyEnumPalette, WindowNotifyEnumDisplay, WindowNotifyEnumSysColor };
//---------------------------------------------------------------------------
// Image encoder parameter related types
//---------------------------------------------------------------------------
#ifdef DCR_USE_NEW_145804
enum EncoderParameterValueType #else
enum ValueType #endif
{ ValueTypeByte = 1, // 8-bit unsigned int
ValueTypeASCII = 2, // 8-bit byte containing one 7-bit ASCII
// code. NULL terminated.
ValueTypeShort = 3, // 16-bit unsigned int
ValueTypeLong = 4, // 32-bit unsigned int
ValueTypeRational = 5, // Two Longs. The first Long is the
// numerator, the second Long expresses the
// denomintor.
ValueTypeLongRange = 6, // Two longs which specify a range of
// integer values. The first Long specifies
// the lower end and the second one
// specifies the higher end. All values
// are inclusive at both ends
ValueTypeUndefined = 7, // 8-bit byte that can take any value
// depending on field definition
ValueTypeRationalRange = 8 // Two Rationals. The first Rational
// specifies the lower end and the second
// specifies the higher end. All values
// are inclusive at both ends
};
//---------------------------------------------------------------------------
// Image encoder value types
//---------------------------------------------------------------------------
enum EncoderValue { EncoderValueColorTypeCMYK, EncoderValueColorTypeYCCK, EncoderValueCompressionLZW, EncoderValueCompressionCCITT3, EncoderValueCompressionCCITT4, EncoderValueCompressionRle, EncoderValueCompressionNone, EncoderValueScanMethodInterlaced, EncoderValueScanMethodNonInterlaced, EncoderValueVersionGif87, EncoderValueVersionGif89, EncoderValueRenderProgressive, EncoderValueRenderNonProgressive, EncoderValueTransformRotate90, EncoderValueTransformRotate180, EncoderValueTransformRotate270, EncoderValueTransformFlipHorizontal, EncoderValueTransformFlipVertical, #ifdef DCR_USE_NEW_140861
EncoderValueMultiFrame, #else
EncodeValueMultiFrame, #endif
EncoderValueLastFrame, EncoderValueFlush, #ifdef DCR_USE_NEW_140861
EncoderValueFrameDimensionTime, EncoderValueFrameDimensionResolution, EncoderValueFrameDimensionPage #else
EncodeValueFrameDimensionTime, EncodeValueFrameDimensionResolution, EncodeValueFrameDimensionPage #endif
};
//---------------------------------------------------------------------------
// Graphics layout values (support for Middle East localization)
//---------------------------------------------------------------------------
enum GraphicsLayout { GraphicsLayoutNormal, GraphicsLayoutMirrored, GraphicsLayoutMirroredIgnoreImages, GraphicsLayoutMirroredForceImages };
//---------------------------------------------------------------------------
// Image layout values (support for Middle East localization)
//---------------------------------------------------------------------------
enum ImageLayout { ImageLayoutNormal, ImageLayoutIgnoreMirrored };
#endif // !_GDIPLUSENUMS_H
|