/**************************************************************************\ * * 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