libUEMF
A portable library for reading and writing WMF, EMF and EMF+ files
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Typedefs
upmf.h File Reference

Structures, definitions, and function prototypes for EMF+ files. More...

#include <stdint.h>
#include <stdbool.h>
#include "uemf.h"

Go to the source code of this file.

Data Structures

struct  U_OBJ_ACCUM
 Used to accumulate data for objects continued over multiple records. see EMF+ manual 2.3.5.1. More...
 
struct  U_PSEUDO_OBJ
 Holds EMF+ objects and records in EMF+ file format byte order. More...
 
struct  U_DPSEUDO_OBJ
 DoublePseudoObject holds pairs of PseudoObjects. Used for constructing paths along with their types. The data stored in the PsuedoObjects maintains LittleEndian-ness, as expected in the final file. The type is U_RAW_OID, and there is no elements count at the beginning of Data. More...
 
struct  U_SERIAL_DESC
 Serializer description records. More...
 
struct  U_FontInfoParams
 FontInfoParams hold font information that is needed by U_PMR_drawstring so that it can place text on the baseline. This must be extracted from the font file using an appropriate utility. (See testbed_pmf.c for a table of these values for some common fonts.) More...
 
struct  U_PMF_BRUSH
 EMF+ manual 2.2.1.1, Microsoft name: EmfPlusBrush Object. More...
 
struct  U_PMF_CUSTOMLINECAP
 EMF+ manual 2.2.1.2, Microsoft name: EmfPlusCustomLineCap Object. More...
 
struct  U_PMF_FONT
 EMF+ manual 2.2.1.3, Microsoft name: EmfPlusFont Object. More...
 
struct  U_PMF_IMAGE
 EMF+ manual 2.2.1.4, Microsoft name: EmfPlusImage Object. More...
 
struct  U_PMF_ARGB
 EMF+ manual 2.2.2.1, Microsoft name: EmfPlusARGB Object, out of order, needed for 2.2.1.5. More...
 
struct  U_PMF_IMAGEATTRIBUTES
 EMF+ manual 2.2.1.5, Microsoft name: EmfPlusImageAttributes Object. More...
 
struct  U_PMF_PATH
 EMF+ manual 2.2.1.6, Microsoft name: EmfPlusPath Object. More...
 
struct  U_PMF_PEN
 EMF+ manual 2.2.1.7, Microsoft name: EmfPlusPen Object. More...
 
struct  U_PMF_REGIONNODE
 EMF+ manual 2.2.2.40, Microsoft name: EmfPlusRegionNode Object, out of order, needed for 2.2.1.8. More...
 
struct  U_PMF_REGION
 EMF+ manual 2.2.1.8, Microsoft name: EmfPlusRegion Object. More...
 
struct  U_PMF_STRINGFORMAT
 EMF+ manual 2.2.1.9, Microsoft name: EmfPlusStringFormat Object. More...
 
struct  U_PMF_BITMAP
 EMF+ manual 2.2.2.2, Microsoft name: EmfPlusBitmap Object. More...
 
struct  U_PMF_BLENDCOLORS
 EMF+ manual 2.2.2.4, Microsoft name: EmfPlusBlendColors Object For Pattern field of U_PMF_LINEARGRADIENTBRUSHOPTIONALDATA. More...
 
struct  U_PMF_BLENDFACTORS
 EMF+ manual 2.2.2.5, Microsoft name: EmfPlusBlendFactors Object. More...
 
struct  U_PMF_BOUNDARYPATHDATA
 EMF+ manual 2.2.2.6, Microsoft name: EmfPlusBoundaryPathData Object. More...
 
struct  U_PMF_BOUNDARYPOINTDATA
 EMF+ manual 2.2.2.7, Microsoft name: EmfPlusBoundaryPointData Object. More...
 
struct  U_PMF_CHARACTERRANGE
 EMF+ manual 2.2.2.8, Microsoft name: EmfPlusCharacterRange Object. More...
 
struct  U_PMF_COMPOUNDLINEDATA
 EMF+ manual 2.2.2.9, Microsoft name: EmfPlusCompoundLineData Object Compound lines are pens that draw several parallel lines at once. The data here alternates (sub)line width (as fraction of total width and gaps (also as fraction of total width). More...
 
struct  U_PMF_CUSTOMENDCAPDATA
 EMF+ manual 2.2.2.10, Microsoft name: EmfPlusCompressedImage Object Holds an EXIF, GIF, JFIF, PNG, or TIFF image. For U_PMF_BITMAP BitmapData field. More...
 
struct  U_PMF_CUSTOMLINECAPARROWDATA
 EMF+ manual 2.2.2.12, Microsoft name: EmfPlusCustomLineCapArrowData Object. More...
 
struct  U_PMF_CUSTOMLINECAPDATA
 EMF+ manual 2.2.2.13, Microsoft name: EmfPlusCustomLineCapData Object. More...
 
struct  U_PMF_CUSTOMSTARTCAPDATA
 EMF+ manual 2.2.2.15, Microsoft name: EmfPlusCustomStartCapData Object. More...
 
struct  U_PMF_DASHEDLINEDATA
 EMF+ manual 2.2.2.16, Microsoft name: EmfPlusDashedLineData Object. More...
 
struct  U_PMF_FILLPATHO
 EMF+ manual 2.2.2.17, Microsoft name: EmfPlusFillPath Object Note: U_PMF_FILLPATHOBJ is the object, U_PMF_FILLPATH is the file record. More...
 
struct  U_PMF_FOCUSSCALEDATA
 EMF+ manual 2.2.2.18, Microsoft name: EmfPlusFocusScaleData Object for U_PMF_PATHGRADIENTBRUSHOPTIONALDATA data field. More...
 
struct  U_PMF_HATCHBRUSHDATA
 EMF+ manual 2.2.2.20, Microsoft name: EmfPlusHatchBrushData Object. More...
 
struct  U_PMF_RECTF
 EMF+ manual 2.2.2.39, Microsoft name: EmfPlusRectF Object, out of order, needed for 2.2.2.24. More...
 
struct  U_PMF_LINEARGRADIENTBRUSHDATA
 EMF+ manual 2.2.2.24, Microsoft name: EmfPlusLinearGradientBrushData Object Manual says that Reserved1 and Reserved2 must be ignored. In practice if Reserved1 is not set to StartColor and Reserved2 is not set to EndColor, then XP Preview will not display the gradient. More...
 
struct  U_PMF_TRANSFORMMATRIX
 EMF+ manual 2.2.2.47, Microsoft name: EmfPlusTransformMatrix Object, out of order, needed for 2.2.2.25. More...
 
struct  U_PMF_ROTMATRIX
 
struct  U_PMF_LINEARGRADIENTBRUSHOPTIONALDATA
 EMF+ manual 2.2.2.25, Microsoft name: EmfPlusLinearGradientBrushOptionalData Object For U_PMF_LINEARGRADIENTBRUSHDATA data field. More...
 
struct  U_PMF_LINEPATH
 EMF+ manual 2.2.2.26, Microsoft name: EmfPlusLinePath Object. More...
 
struct  U_PMF_METAFILE
 EMF+ manual 2.2.2.27, Microsoft name: EmfPlusMetafile Object. More...
 
struct  U_PMF_PALETTE
 EMF+ manual 2.2.2.28, Microsoft name: EmfPlusPalette Object. More...
 
struct  U_PMF_POINTF
 EMF+ manual 2.2.2.36, Microsoft name: EmfPlusPointF Object, out of order, needed for 2.2.2.29. More...
 
struct  U_PMF_PATHGRADIENTBRUSHDATA
 EMF+ manual 2.2.2.29, Microsoft name: EmfPlusPathGradientBrushData Object. More...
 
struct  U_PMF_PENDATA
 EMF+ manual 2.2.2.33, Microsoft name: EmfPlusPenData Object. More...
 
struct  U_PMF_POINT
 EMF+ manual 2.2.2.34, Microsoft name: EmfPlusPenOptionalData Object. More...
 
struct  U_PMF_RECT
 EMF+ manual 2.2.2.38, Microsoft name: EmfPlusRect Object. More...
 
struct  U_PMF_REGIONNODEPATH
 EMF+ manual 2.2.2.42, Microsoft name: EmfPlusRegionNodePath Object. More...
 
struct  U_PMF_SOLIDBRUSHDATA
 EMF+ manual 2.2.2.43, Microsoft name: EmfPlusSolidBrushData Object For U_PMF_BRUSH data field (one type of brush) More...
 
struct  U_PMF_TEXTUREBRUSHDATA
 EMF+ manual 2.2.2.45, Microsoft name: EmfPlusTextureBrushData Object. More...
 
struct  U_PMF_CMN_HDR
 
struct  U_PMF_IE_BLUR
 EMF+ manual 2.2.3.1, Microsoft name: BlurEffect Object. More...
 
struct  U_PMF_IE_BRIGHTNESSCONTRAST
 EMF+ manual 2.2.3.2, Microsoft name: BrightnessContrastEffect Object. More...
 
struct  U_PMF_IE_COLORBALANCE
 EMF+ manual 2.2.3.3, Microsoft name: ColorBalanceEffect Object. More...
 
struct  U_PMF_IE_COLORCURVE
 EMF+ manual 2.2.3.4, Microsoft name: ColorCurveEffect Object Adjust Range Exposure -255 to 255, 0 is unchanged Density -255 to 255, 0 is unchanged Contrast -100 to 100, 0 is unchanged Highlight -100 to 100, 0 is unchanged Shadow -100 to 100, 0 is unchanged WhiteSaturation 0 to 255 BlackSaturation 0 to 255. More...
 
struct  U_PMF_IE_COLORLOOKUPTABLE
 EMF+ manual 2.2.3.5, Microsoft name: ColorLookupTableEffect Object. More...
 
struct  U_PMF_IE_COLORMATRIX
 EMF+ manual 2.2.3.6, Microsoft name: ColorMatrixEffect Object. More...
 
struct  U_PMF_IE_HUESATURATIONLIGHTNESS
 EMF+ manual 2.2.3.7, Microsoft name: HueSaturationLightnessEffect Object. More...
 
struct  U_PMF_IE_LEVELS
 EMF+ manual 2.2.3.8, Microsoft name: LevelsEffect Object. More...
 
struct  U_PMF_IE_REDEYECORRECTION
 EMF+ manual 2.2.3.9, Microsoft name: RedEyeCorrectionEffect Object. More...
 
struct  U_PMF_IE_SHARPEN
 EMF+ manual 2.2.3.10, Microsoft name: SharpenEffect Object. More...
 
struct  U_PMF_IE_TINT
 EMF+ manual 2.2.3.11, Microsoft name: TintEffect Object. More...
 
struct  U_PMF_OFFSETCLIP
 EMF+ manual 2.3.1.1, Microsoft name: EmfPlusOffsetClip Record, Index 0x35. More...
 
struct  U_PMF_RESETCLIP
 U_PMF_RESETCLIP EMF+ manual 2.3.1.2, Microsoft name: EmfPlusResetClip Record, Index 0x31. More...
 
struct  U_PMF_SETCLIPPATH
 EMF+ manual 2.3.1.3, Microsoft name: EmfPlusSetClipPath Record, Index 0x33. More...
 
struct  U_PMF_SETCLIPRECT
 EMF+ manual 2.3.1.4, Microsoft name: EmfPlusSetClipRect Record, Index 0x32. More...
 
struct  U_PMF_SETCLIPREGION
 EMF+ manual 2.3.1.5, Microsoft name: EmfPlusSetClipRegion Record, Index 0x34. More...
 
struct  U_PMF_COMMENT
 EMF+ manual 2.3.2.1, Microsoft name: EmfPlusComment Record, Index 0x03. More...
 
struct  U_PMF_ENDOFFILE
 EMF+ manual 2.3.3.1, Microsoft name: EmfPlusEndOfFile Record, Index 0x02. More...
 
struct  U_PMF_GETDC
 EMF+ manual 2.3.3.2, Microsoft name: EmfPlusGetDC Record, Index 0x04. More...
 
struct  U_PMF_HEADER
 EMF+ manual 2.3.3.3, Microsoft name: EmfPlusHeader Record, Index 0x01. More...
 
struct  U_PMF_CLEAR
 EMF+ manual 2.3.4.1, Microsoft name: EmfPlusClear Record, Index 0x09. More...
 
struct  U_PMF_DRAWARC
 EMF+ manual 2.3.4.2, Microsoft name: EmfPlusDrawArc Record, Index 0x12. More...
 
struct  U_PMF_DRAWBEZIERS
 EMF+ manual 2.3.4.3, Microsoft name: EmfPlusDrawBeziers Record, Index 0x19 flags (LITTLE endian here, manual uses BIG endian) bit 9 U_PPF_C Set: int16_t coordinates; Clear: U_FLOAT coordinates (IGNORE if bit 4 is set) bit 12 U_PPF_P Set: Coordinates are relative; Clear: they are absolute bits 0-7 Index of an U_PMF_PEN object in the EMF+ object table (0-63, inclusive) More...
 
struct  U_PMF_DRAWCLOSEDCURVE
 EMF+ manual 2.3.4.4, Microsoft name: EmfPlusDrawClosedCurve Record, Index 0x17. More...
 
struct  U_PMF_DRAWCURVE
 EMF+ manual 2.3.4.5, Microsoft name: EmfPlusDrawCurve Record, Index 0x18 flags (LITTLE endian here, manual uses BIG endian) bit 9 U_PPF_C Set: int16_t coordinates; Clear: U_FLOAT coordinates (IGNORE if bit 4 is set) bits 0-7 Index of an U_PMF_PEN object in the EMF+ object table (0-63, inclusive) More...
 
struct  U_PMF_DRAWDRIVERSTRING
 EMF+ manual 2.3.4.6, Microsoft name: EmfPlusDrawDriverString Record, Index 0x36. More...
 
struct  U_PMF_DRAWELLIPSE
 EMF+ manual 2.3.4.7, Microsoft name: EmfPlusDrawEllipse Record, Index 0x0F. More...
 
struct  U_PMF_DRAWIMAGE
 EMF+ manual 2.3.4.8, Microsoft name: EmfPlusDrawImage Record, Index 0x1A. More...
 
struct  U_PMF_DRAWIMAGEPOINTS
 EMF+ manual 2.3.4.9, Microsoft name: EmfPlusDrawImagePoints Record, Index 0x1B. More...
 
struct  U_PMF_DRAWLINES
 EMF+ manual 2.3.4.10, Microsoft name: EmfPlusDrawLines Record, Index 0x0D. More...
 
struct  U_PMF_DRAWPATH
 EMF+ manual 2.3.4.11, Microsoft name: EmfPlusDrawPath Record, Index 0x15. More...
 
struct  U_PMF_DRAWPIE
 EMF+ manual 2.3.4.12, Microsoft name: EmfPlusDrawPie Record, Index 0x0D. More...
 
struct  U_PMF_DRAWRECTS
 EMF+ manual 2.3.4.13, Microsoft name: EmfPlusDrawRects Record, Index 0x0B. More...
 
struct  U_PMF_DRAWSTRING
 EMF+ manual 2.3.4.14, Microsoft name: EmfPlusDrawString Record, Index 0x1C. More...
 
struct  U_PMF_FILLCLOSEDCURVE
 EMF+ manual 2.3.4.15, Microsoft name: EmfPlusFillClosedCurve Record, Index 0x16. More...
 
struct  U_PMF_FILLELLIPSE
 EMF+ manual 2.3.4.16, Microsoft name: EmfPlusFillEllipse Record, Index 0x0E. More...
 
struct  U_PMF_FILLPATH
 EMF+ manual 2.3.4.17, Microsoft name: EmfPlusFillPath Record, Index 0x14 Note: U_PMF_FILLPATHOBJ is the object, U_PMF_FILLPATH is the file record. More...
 
struct  U_PMF_FILLPIE
 EMF+ manual 2.3.4.18, Microsoft name: EmfPlusFillPie Record, Index 0x10. More...
 
struct  U_PMF_FILLPOLYGON
 EMF+ manual 2.3.4.19, Microsoft name: EmfPlusFillPolygon Record, Index 0x0C. More...
 
struct  U_PMF_FILLRECTS
 EMF+ manual 2.3.4.20, Microsoft name: EmfPlusFillRects Record, Index 0x0A. More...
 
struct  U_PMF_FILLREGION
 EMF+ manual 2.3.4.21, Microsoft name: EmfPlusFillRegion Record, Index 0x13. More...
 
struct  U_PMF_OBJECT
 EMF+ manual 2.3.5.1, Microsoft name: EmfPlusObject Record, Index 0x13. More...
 
struct  U_PMF_SERIALIZABLEOBJECT
 EMF+ manual 2.3.5.2, Microsoft name: EmfPlusSerializableObject Record, Index 0x38. More...
 
struct  U_PMF_SETANTIALIASMODE
 EMF+ manual 2.3.6.1, Microsoft name: EmfPlusSetAntiAliasMode Record, Index 0x1E. More...
 
struct  U_PMF_SETCOMPOSITINGMODE
 EMF+ manual 2.3.6.2, Microsoft name: EmfPlusSetCompositingMode Record, Index 0x23. More...
 
struct  U_PMF_SETCOMPOSITINGQUALITY
 EMF+ manual 2.3.6.3, Microsoft name: EmfPlusSetCompositingQuality Record, Index 0x24. More...
 
struct  U_PMF_SETINTERPOLATIONMODE
 EMF+ manual 2.3.6.4, Microsoft name: EmfPlusSetInterpolationMode Record, Index 0x21. More...
 
struct  U_PMF_SETPIXELOFFSETMODE
 EMF+ manual 2.3.6.5, Microsoft name: EmfPlusSetPixelOffsetMode Record, Index 0x22. More...
 
struct  U_PMF_SETRENDERINGORIGIN
 EMF+ manual 2.3.6.6, Microsoft name: EmfPlusSetRenderingOrigin Record, Index 0x1D. More...
 
struct  U_PMF_SETTEXTCONTRAST
 EMF+ manual 2.3.6.7, Microsoft name: EmfPlusSetTextContrast Record, Index 0x20. More...
 
struct  U_PMF_SETTEXTRENDERINGHINT
 EMF+ manual 2.3.6.8, Microsoft name: EmfPlusSetTextRenderingHint Record, Index 0x1F. More...
 
struct  U_PMF_BEGINCONTAINER
 EMF+ manual 2.3.7.1, Microsoft name: EmfPlusBeginContainer Record, Index 0x27. More...
 
struct  U_PMF_BEGINCONTAINERNOPARAMS
 EMF+ manual 2.3.7.2, Microsoft name: EmfPlusBeginContainerNoParams Record, Index 0x28. More...
 
struct  U_PMF_ENDCONTAINER
 EMF+ manual 2.3.7.3, Microsoft name: EmfPlusEndContainer Record, Index 0x29. More...
 
struct  U_PMF_RESTORE
 EMF+ manual 2.3.7.4, Microsoft name: EmfPlusRestore Record, Index 0x26. More...
 
struct  U_PMF_SAVE
 EMF+ manual 2.3.7.5, Microsoft name: EmfPlusSave Record, Index 0x25. More...
 
struct  U_PMF_SETTSCLIP
 EMF+ manual 2.3.8.1, Microsoft name: EmfPlusSetTSClip Record, Index 0x3A. More...
 
struct  U_PMF_SETTSGRAPHICS
 EMF+ manual 2.3.8.2, Microsoft name: EmfPlusSetTSGraphics Record, Index 0x39. More...
 
struct  U_PMF_MULTIPLYWORLDTRANSFORM
 EMF+ manual 2.3.9.1, Microsoft name: EmfPlusMultiplyWorldTransform Record, Index 0x2C. More...
 
struct  U_PMF_RESETWORLDTRANSFORM
 EMF+ manual 2.3.9.2, Microsoft name: EmfPlusResetWorldTransform Record, Index 0x2B Sets transformation matrix to identity matrix. More...
 
struct  U_PMF_ROTATEWORLDTRANSFORM
 EMF+ manual 2.3.9.3, Microsoft name: EmfPlusRotateWorldTransform Record, Index 0x2F Construct transformation matrix from Angle: sin(Angle) cos(Angle) 0 cos(Angle) -sin(Angle) 0 Multiply this against current world space transform, result becomes new world space transform. More...
 
struct  U_PMF_SCALEWORLDTRANSFORM
 EMF+ manual 2.3.9.4, Microsoft name: EmfPlusScaleWorldTransform Record, Index 0x2E Construct transformation matrix: Sx 0 0 0 Sy 0 Multiply this against current world space transform, result becomes new world space transform. More...
 
struct  U_PMF_SETPAGETRANSFORM
 EMF+ manual 2.3.9.5, Microsoft name: EmfPlusSetPageTransform Record, Index 0x30 flags (LITTLE endian here, manual uses BIG endian) bits 0-7 UnitType enumeration. More...
 
struct  U_PMF_SETWORLDTRANSFORM
 EMF+ manual 2.3.9.6, Microsoft name: EmfPlusSetWorldTransform Record, Index 0x2A. More...
 
struct  U_PMF_TRANSLATEWORLDTRANSFORM
 EMF+ manual 2.3.9.7, Microsoft name: EmfPlusTranslateWorldTransform Record, Index 0x2D Construct transformation matrix: 1 0 Dx 0 1 Dy Multiply this against current world space transform, result becomes new world space transform. More...
 

Macros

#define U_PMF_DROP_ELEMENTS   1
 Remove leading Elements value from data.
 
#define U_PMF_KEEP_ELEMENTS   0
 Retain leading Elements value from data.
 
#define U_SEG_NEW   1
 start a new segment in the path
 
#define U_SEG_OLD   0
 continue the old (current) segment in the path
 
#define U_FILTER_APPLY   1
 With U_PMR_DRAWIMAGEPOINTS_set, use whatever filter has been set up up.
 
#define U_FILTER_IGNORE   0
 With U_PMR_DRAWIMAGEPOINTS_set, ignore whatever filter has been set up up.
 
#define U_OBJRECLIM   65020
 Longest U_PMR_OBJECT that GDI+ will process.
 
#define U_DD_Solid   0
 Solid line.
 
#define U_DD_Dash   1
 Dash line.
 
#define U_DD_DashDash   2
 Dash Dash line.
 
#define U_DD_DashDashDash   3
 Dash Dash Dash line.
 
#define U_DD_DashDashDashDash   4
 Dash Dash Dash Dash line.
 
#define U_DD_Dot   5
 Dot line.
 
#define U_DD_DotDot   6
 Dot Dot line.
 
#define U_DD_DotDotDot   7
 Dot Dot Dot line.
 
#define U_DD_DotDotDotDot   8
 Dot Dot Dot Dot line.
 
#define U_DD_DashDot   9
 Dash Dot line.
 
#define U_DD_DashDashDot   10
 Dash Dash Dot line.
 
#define U_DD_DashDashDotDot   11
 Dash Dash Dot Dot line.
 
#define U_DD_DashDashDashDot   12
 Dash Dash Das hDot line.
 
#define U_DD_DashDotDot   13
 Dash Dot Dot line.
 
#define U_DD_DashDotDotDot   14
 Dash Dot Dot Dot line.
 
#define U_DD_DashDotDashDot   15
 Dash Dot Dash Dot line.
 
#define U_DD_Long   16
 Long line.
 
#define U_DD_LongLong   17
 Long Long line.
 
#define U_DD_LongLongLong   18
 Long Long Long line.
 
#define U_DD_LongLongLongLong   19
 Long Long Long Long line.
 
#define U_DD_LongDot   20
 Long Dot line.
 
#define U_DD_LongLongDot   21
 Long Long Dot line.
 
#define U_DD_LongLongDotDot   22
 Long Long Dot Dot line.
 
#define U_DD_LongLongLongDot   23
 Long Long Long Dot line.
 
#define U_DD_LongDotDot   24
 Long Dot Dot line.
 
#define U_DD_LongDotDotDot   25
 Long Dot Dot Dot line.
 
#define U_DD_LongDotLongDot   26
 Long Dot Long Dot line.
 
#define U_DD_Types   27
 Types.
 
#define U_PMR_HEADER   0x0001
 U_PMRHeader record.
 
#define U_PMR_ENDOFFILE   0x0002
 U_PMREndOfFile record.
 
#define U_PMR_COMMENT   0x0003
 U_PMRComment record.
 
#define U_PMR_GETDC   0x0004
 U_PMRGetDC record.
 
#define U_PMR_MULTIFORMATSTART   0x0005
 U_PMRMultiFormatStart record.
 
#define U_PMR_MULTIFORMATSECTION   0x0006
 U_PMRMultiFormatSection record.
 
#define U_PMR_MULTIFORMATEND   0x0007
 U_PMRMultiFormatEnd record.
 
#define U_PMR_OBJECT   0x0008
 U_PMRObject record.
 
#define U_PMR_CLEAR   0x0009
 U_PMRClear record.
 
#define U_PMR_FILLRECTS   0x000A
 U_PMRFillRects record.
 
#define U_PMR_DRAWRECTS   0x000B
 U_PMRDrawRects record.
 
#define U_PMR_FILLPOLYGON   0x000C
 U_PMRFillPolygon record.
 
#define U_PMR_DRAWLINES   0x000D
 U_PMRDrawLines record.
 
#define U_PMR_FILLELLIPSE   0x000E
 U_PMRFillEllipse record.
 
#define U_PMR_DRAWELLIPSE   0x000F
 U_PMRDrawEllipse record.
 
#define U_PMR_FILLPIE   0x0010
 U_PMRFillPie record.
 
#define U_PMR_DRAWPIE   0x0011
 U_PMRDrawPie record.
 
#define U_PMR_DRAWARC   0x0012
 U_PMRDrawArc record.
 
#define U_PMR_FILLREGION   0x0013
 U_PMRFillRegion record.
 
#define U_PMR_FILLPATH   0x0014
 U_PMRFillPath record.
 
#define U_PMR_DRAWPATH   0x0015
 U_PMRDrawPath record.
 
#define U_PMR_FILLCLOSEDCURVE   0x0016
 U_PMRFillClosedCurve record.
 
#define U_PMR_DRAWCLOSEDCURVE   0x0017
 U_PMRDrawClosedCurve record.
 
#define U_PMR_DRAWCURVE   0x0018
 U_PMRDrawCurve record.
 
#define U_PMR_DRAWBEZIERS   0x0019
 U_PMRDrawBeziers record.
 
#define U_PMR_DRAWIMAGE   0x001A
 U_PMRDrawImage record.
 
#define U_PMR_DRAWIMAGEPOINTS   0x001B
 U_PMRDrawImagePoints record.
 
#define U_PMR_DRAWSTRING   0x001C
 U_PMRDrawString record.
 
#define U_PMR_SETRENDERINGORIGIN   0x001D
 U_PMRSetRenderingOrigin record.
 
#define U_PMR_SETANTIALIASMODE   0x001E
 U_PMRSetAntiAliasMode record.
 
#define U_PMR_SETTEXTRENDERINGHINT   0x001F
 U_PMRSetTextRenderingHint record.
 
#define U_PMR_SETTEXTCONTRAST   0x0020
 U_PMRSetTextContrast record.
 
#define U_PMR_SETINTERPOLATIONMODE   0x0021
 U_PMRSetInterpolationMode record.
 
#define U_PMR_SETPIXELOFFSETMODE   0x0022
 U_PMRSetPixelOffsetMode record.
 
#define U_PMR_SETCOMPOSITINGMODE   0x0023
 U_PMRSetCompositingMode record.
 
#define U_PMR_SETCOMPOSITINGQUALITY   0x0024
 U_PMRSetCompositingQuality record.
 
#define U_PMR_SAVE   0x0025
 U_PMRSave record.
 
#define U_PMR_RESTORE   0x0026
 U_PMRRestore record.
 
#define U_PMR_BEGINCONTAINER   0x0027
 U_PMRBeginContainer record.
 
#define U_PMR_BEGINCONTAINERNOPARAMS   0x0028
 U_PMRBeginContainerNoParams record.
 
#define U_PMR_ENDCONTAINER   0x0029
 U_PMREndContainer record.
 
#define U_PMR_SETWORLDTRANSFORM   0x002A
 U_PMRSetWorldTransform record.
 
#define U_PMR_RESETWORLDTRANSFORM   0x002B
 U_PMRResetWorldTransform record.
 
#define U_PMR_MULTIPLYWORLDTRANSFORM   0x002C
 U_PMRMultiplyWorldTransform record.
 
#define U_PMR_TRANSLATEWORLDTRANSFORM   0x002D
 U_PMRTranslateWorldTransform record.
 
#define U_PMR_SCALEWORLDTRANSFORM   0x002E
 U_PMRScaleWorldTransform record.
 
#define U_PMR_ROTATEWORLDTRANSFORM   0x002F
 U_PMRRotateWorldTransform record.
 
#define U_PMR_SETPAGETRANSFORM   0x0030
 U_PMRSetPageTransform record.
 
#define U_PMR_RESETCLIP   0x0031
 U_PMRResetClip record.
 
#define U_PMR_SETCLIPRECT   0x0032
 U_PMRSetClipRect record.
 
#define U_PMR_SETCLIPPATH   0x0033
 U_PMRSetClipPath record.
 
#define U_PMR_SETCLIPREGION   0x0034
 U_PMRSetClipRegion record.
 
#define U_PMR_OFFSETCLIP   0x0035
 U_PMROffsetClip record.
 
#define U_PMR_DRAWDRIVERSTRING   0x0036
 U_PMRDrawDriverstring record.
 
#define U_PMR_STROKEFILLPATH   0x0037
 U_PMRStrokeFillPath record.
 
#define U_PMR_SERIALIZABLEOBJECT   0x0038
 U_PMRSerializableObject record.
 
#define U_PMR_SETTSGRAPHICS   0x0039
 U_PMRSetTSGraphics record.
 
#define U_PMR_SETTSCLIP   0x003A
 U_PMRSetTSClip record.
 
#define U_PMR_RECFLAG   0x4000
 In EMF+ files the type is one of the above + this flag.
 
#define U_PMR_TYPE_MASK   0x003F
 mask for EMF+ types
 
#define U_PMR_MIN   1
 Minimum U_PMR_ value.
 
#define U_PMR_MAX   58
 Maximum U_PMR_ value.
 
#define U_UNDEFINED_OID   0x00000000
 Undefined PseudoObject.
 
#define U_PMF_BRUSH_OID   0x02020101
 PMF_BRUSH PseudoObject type.
 
#define U_PMF_CUSTOMLINECAP_OID   0x02020102
 PMF_CUSTOMLINECAP PseudoObject type.
 
#define U_PMF_FONT_OID   0x02020103
 PMF_FONT PseudoObject type.
 
#define U_PMF_IMAGE_OID   0x02020104
 PMF_IMAGE PseudoObject type.
 
#define U_PMF_IMAGEATTRIBUTES_OID   0x02020105
 PMF_IMAGEATTRIBUTES PseudoObject type.
 
#define U_PMF_PATH_OID   0x02020106
 PMF_PATH PseudoObject type.
 
#define U_PMF_PEN_OID   0x02020107
 PMF_PEN PseudoObject type.
 
#define U_PMF_REGION_OID   0x02020108
 PMF_REGION PseudoObject type.
 
#define U_PMF_STRINGFORMAT_OID   0x02020109
 PMF_STRINGFORMAT PseudoObject type.
 
#define U_PMF_ARGB_OID   0x02020201
 PMF_ARGB PseudoObject type.
 
#define U_PMF_BITMAP_OID   0x02020202
 PMF_BITMAP PseudoObject type.
 
#define U_PMF_BITMAPDATA_OID   0x02020203
 PMF_BITMAPDATA PseudoObject type.
 
#define U_PMF_BLENDCOLORS_OID   0x02020204
 PMF_BLENDCOLORS PseudoObject type.
 
#define U_PMF_BLENDFACTORS_OID   0x02020205
 PMF_BLENDFACTORS PseudoObject type.
 
#define U_PMF_BOUNDARYPATHDATA_OID   0x02020206
 PMF_BOUNDARYPATHDATA PseudoObject type.
 
#define U_PMF_BOUNDARYPOINTDATA_OID   0x02020207
 PMF_BOUNDARYPOINTDATA PseudoObject type.
 
#define U_PMF_CHARACTERRANGE_OID   0x02020208
 PMF_CHARACTERRANGE PseudoObject type.
 
#define U_PMF_COMPOUNDLINEDATA_OID   0x02020209
 PMF_COMPOUNDLINEDATA PseudoObject type.
 
#define U_PMF_COMPRESSEDIMAGE_OID   0x02020210
 PMF_COMPRESSEDIMAGE PseudoObject type.
 
#define U_PMF_CUSTOMENDCAPDATA_OID   0x02020211
 PMF_CUSTOMENDCAPDATA PseudoObject type.
 
#define U_PMF_CUSTOMLINECAPARROWDATA_OID   0x02020212
 PMF_CUSTOMLINECAPARROWDATA PseudoObject type.
 
#define U_PMF_CUSTOMLINECAPDATA_OID   0x02020213
 PMF_CUSTOMLINECAPDATA PseudoObject type.
 
#define U_PMF_CUSTOMLINECAPOPTIONALDATA_OID   0x02020214
 PMF_CUSTOMLINECAPOPTIONALDATA PseudoObject type.
 
#define U_PMF_CUSTOMSTARTCAPDATA_OID   0x02020215
 PMF_CUSTOMSTARTCAPDATA PseudoObject type.
 
#define U_PMF_DASHEDLINEDATA_OID   0x02020216
 PMF_DASHEDLINEDATA PseudoObject type.
 
#define U_PMF_FILLPATHOBJ_OID   0x02020217
 PMF_FILLPATHOBJ PseudoObject type.
 
#define U_PMF_FOCUSSCALEDATA_OID   0x02020218
 PMF_FOCUSSCALEDATA PseudoObject type.
 
#define U_PMF_GRAPHICSVERSION_OID   0x02020219
 PMF_GRAPHICSVERSION PseudoObject type.
 
#define U_PMF_HATCHBRUSHDATA_OID   0x02020220
 PMF_HATCHBRUSHDATA PseudoObject type.
 
#define U_PMF_INTEGER7_OID   0x02020221
 PMF_INTEGER7 PseudoObject type.
 
#define U_PMF_INTEGER15_OID   0x02020222
 PMF_INTEGER15 PseudoObject type.
 
#define U_PMF_LANGUAGEIDENTIFIER_OID   0x02020223
 PMF_LANGUAGEIDENTIFIER PseudoObject type.
 
#define U_PMF_LINEARGRADIENTBRUSHDATA_OID   0x02020224
 PMF_LINEARGRADIENTBRUSHDATA PseudoObject type.
 
#define U_PMF_LINEARGRADIENTBRUSHOPTIONALDATA_OID   0x02020225
 PMF_LINEARGRADIENTBRUSHOPTIONALDATA PseudoObject type.
 
#define U_PMF_LINEPATH_OID   0x02020226
 PMF_LINEPATH PseudoObject type.
 
#define U_PMF_METAFILE_OID   0x02020227
 PMF_METAFILE PseudoObject type.
 
#define U_PMF_PALETTE_OID   0x02020228
 PMF_PALETTE PseudoObject type.
 
#define U_PMF_PATHGRADIENTBRUSHDATA_OID   0x02020229
 PMF_PATHGRADIENTBRUSHDATA PseudoObject type.
 
#define U_PMF_PATHGRADIENTBRUSHOPTIONALDATA_OID   0x02020230
 PMF_PATHGRADIENTBRUSHOPTIONALDATA PseudoObject type.
 
#define U_PMF_PATHPOINTTYPE_OID   0x02020231
 PMF_PATHPOINTTYPE PseudoObject type.
 
#define U_PMF_PATHPOINTTYPERLE_OID   0x02020232
 PMF_PATHPOINTTYPERLE PseudoObject type.
 
#define U_PMF_PENDATA_OID   0x02020233
 PMF_PENDATA PseudoObject type.
 
#define U_PMF_PENOPTIONALDATA_OID   0x02020234
 PMF_PENOPTIONALDATA PseudoObject type.
 
#define U_PMF_POINT_OID   0x02020235
 PMF_POINT PseudoObject type.
 
#define U_PMF_POINTF_OID   0x02020236
 PMF_POINTF PseudoObject type.
 
#define U_PMF_POINTR_OID   0x02020237
 PMF_POINTR PseudoObject type.
 
#define U_PMF_RECT_OID   0x02020238
 PMF_RECT PseudoObject type.
 
#define U_PMF_RECTF_OID   0x02020239
 PMF_RECTF PseudoObject type.
 
#define U_PMF_REGIONNODE_OID   0x02020240
 PMF_REGIONNODE PseudoObject type.
 
#define U_PMF_REGIONNODECHILDNODES_OID   0x02020241
 PMF_REGIONNODECHILDNODES PseudoObject type.
 
#define U_PMF_REGIONNODEPATH_OID   0x02020242
 PMF_REGIONNODEPATH PseudoObject type.
 
#define U_PMF_SOLIDBRUSHDATA_OID   0x02020243
 PMF_SOLIDBRUSHDATA PseudoObject type.
 
#define U_PMF_STRINGFORMATDATA_OID   0x02020244
 PMF_STRINGFORMATDATA PseudoObject type.
 
#define U_PMF_TEXTUREBRUSHDATA_OID   0x02020245
 PMF_TEXTUREBRUSHDATA PseudoObject type.
 
#define U_PMF_TEXTUREBRUSHOPTIONALDATA_OID   0x02020246
 PMF_TEXTUREBRUSHOPTIONALDATA PseudoObject type.
 
#define U_PMF_TRANSFORMMATRIX_OID   0x02020247
 PMF_TRANSFORMMATRIX PseudoObject type.
 
#define U_PMF_IE_BLUR_OID   0x02020301
 PMF_IE_BLUR PseudoObject type.
 
#define U_PMF_IE_BRIGHTNESSCONTRAST_OID   0x02020302
 PMF_IE_BRIGHTNESSCONTRAST PseudoObject type.
 
#define U_PMF_IE_COLORBALANCE_OID   0x02020303
 PMF_IE_COLORBALANCE PseudoObject type.
 
#define U_PMF_IE_COLORCURVE_OID   0x02020304
 PMF_IE_COLORCURVE PseudoObject type.
 
#define U_PMF_IE_COLORLOOKUPTABLE_OID   0x02020305
 PMF_IE_COLORLOOKUPTABLE PseudoObject type.
 
#define U_PMF_IE_COLORMATRIX_OID   0x02020306
 PMF_IE_COLORMATRIX PseudoObject type.
 
#define U_PMF_IE_HUESATURATIONLIGHTNESS_OID   0x02020307
 PMF_IE_HUESATURATIONLIGHTNESS PseudoObject type.
 
#define U_PMF_IE_LEVELS_OID   0x02020308
 PMF_IE_LEVELS PseudoObject type.
 
#define U_PMF_IE_REDEYECORRECTION_OID   0x02020309
 PMF_IE_REDEYECORRECTION PseudoObject type.
 
#define U_PMF_IE_SHARPEN_OID   0x02020310
 PMF_IE_SHARPEN PseudoObject type.
 
#define U_PMF_IE_TINT_OID   0x02020311
 PMF_IE_TINT PseudoObject type.
 
#define U_PMR_STROKEFILLPATH_OID   0x02010101
 PMR_STROKEFILLPATH PseudoObject type. (Mentioned in passing here).
 
#define U_PMR_OFFSETCLIP_OID   0x02030101
 PMR_OFFSETCLIP PseudoObject type.
 
#define U_PMR_RESETCLIP_OID   0x02030102
 PMR_RESETCLIP PseudoObject type.
 
#define U_PMR_SETCLIPPATH_OID   0x02030103
 PMR_SETCLIPPATH PseudoObject type.
 
#define U_PMR_SETCLIPRECT_OID   0x02030104
 PMR_SETCLIPRECT PseudoObject type.
 
#define U_PMR_SETCLIPREGION_OID   0x02030105
 PMR_SETCLIPREGION PseudoObject type.
 
#define U_PMR_COMMENT_OID   0x02030201
 PMR_COMMENT PseudoObject type.
 
#define U_PMR_ENDOFFILE_OID   0x02030301
 PMR_ENDOFFILE PseudoObject type.
 
#define U_PMR_GETDC_OID   0x02030302
 PMR_GETDC PseudoObject type.
 
#define U_PMR_HEADER_OID   0x02030303
 PMR_HEADER PseudoObject type.
 
#define U_PMR_CLEAR_OID   0x02030401
 PMR_CLEAR PseudoObject type.
 
#define U_PMR_DRAWARC_OID   0x02030402
 PMR_DRAWARC PseudoObject type.
 
#define U_PMR_DRAWBEZIERS_OID   0x02030403
 PMR_DRAWBEZIERS PseudoObject type.
 
#define U_PMR_DRAWCLOSEDCURVE_OID   0x02030404
 PMR_DRAWCLOSEDCURVE PseudoObject type.
 
#define U_PMR_DRAWCURVE_OID   0x02030405
 PMR_DRAWCURVE PseudoObject type.
 
#define U_PMR_DRAWDRIVERSTRING_OID   0x02030406
 PMR_DRAWDRIVERSTRING PseudoObject type.
 
#define U_PMR_DRAWELLIPSE_OID   0x02030407
 PMR_DRAWELLIPSE PseudoObject type.
 
#define U_PMR_DRAWIMAGE_OID   0x02030408
 PMR_DRAWIMAGE PseudoObject type.
 
#define U_PMR_DRAWIMAGEPOINTS_OID   0x02030409
 PMR_DRAWIMAGEPOINTS PseudoObject type.
 
#define U_PMR_DRAWLINES_OID   0x02030410
 PMR_DRAWLINES PseudoObject type.
 
#define U_PMR_DRAWPATH_OID   0x02030411
 PMR_DRAWPATH PseudoObject type.
 
#define U_PMR_DRAWPIE_OID   0x02030412
 PMR_DRAWPIE PseudoObject type.
 
#define U_PMR_DRAWRECTS_OID   0x02030413
 PMR_DRAWRECTS PseudoObject type.
 
#define U_PMR_DRAWSTRING_OID   0x02030414
 PMR_DRAWSTRING PseudoObject type.
 
#define U_PMR_FILLCLOSEDCURVE_OID   0x02030415
 PMR_FILLCLOSEDCURVE PseudoObject type.
 
#define U_PMR_FILLELLIPSE_OID   0x02030416
 PMR_FILLELLIPSE PseudoObject type.
 
#define U_PMR_FILLPATH_OID   0x02030417
 PMR_FILLPATH PseudoObject type.
 
#define U_PMR_FILLPIE_OID   0x02030418
 PMR_FILLPIE PseudoObject type.
 
#define U_PMR_FILLPOLYGON_OID   0x02030419
 PMR_FILLPOLYGON PseudoObject type.
 
#define U_PMR_FILLRECTS_OID   0x02030420
 PMR_FILLRECTS PseudoObject type.
 
#define U_PMR_FILLREGION_OID   0x02030421
 PMR_FILLREGION PseudoObject type.
 
#define U_PMR_OBJECT_OID   0x02030501
 PMR_OBJECT PseudoObject type.
 
#define U_PMR_SERIALIZABLEOBJECT_OID   0x02030502
 PMR_SERIALIZABLEOBJECT PseudoObject type.
 
#define U_PMR_SETANTIALIASMODE_OID   0x02030601
 PMR_SETANTIALIASMODE PseudoObject type.
 
#define U_PMR_SETCOMPOSITINGMODE_OID   0x02030602
 PMR_SETCOMPOSITINGMODE PseudoObject type.
 
#define U_PMR_SETCOMPOSITINGQUALITY_OID   0x02030603
 PMR_SETCOMPOSITINGQUALITY PseudoObject type.
 
#define U_PMR_SETINTERPOLATIONMODE_OID   0x02030604
 PMR_SETINTERPOLATIONMODE PseudoObject type.
 
#define U_PMR_SETPIXELOFFSETMODE_OID   0x02030605
 PMR_SETPIXELOFFSETMODE PseudoObject type.
 
#define U_PMR_SETRENDERINGORIGIN_OID   0x02030606
 PMR_SETRENDERINGORIGIN PseudoObject type.
 
#define U_PMR_SETTEXTCONTRAST_OID   0x02030607
 PMR_SETTEXTCONTRAST PseudoObject type.
 
#define U_PMR_SETTEXTRENDERINGHINT_OID   0x02030608
 PMR_SETTEXTRENDERINGHINT PseudoObject type.
 
#define U_PMR_BEGINCONTAINER_OID   0x02030701
 PMR_BEGINCONTAINER PseudoObject type.
 
#define U_PMR_BEGINCONTAINERNOPARAMS_OID   0x02030702
 PMR_BEGINCONTAINERNOPARAMS PseudoObject type.
 
#define U_PMR_ENDCONTAINER_OID   0x02030703
 PMR_ENDCONTAINER PseudoObject type.
 
#define U_PMR_RESTORE_OID   0x02030704
 PMR_RESTORE PseudoObject type.
 
#define U_PMR_SAVE_OID   0x02030705
 PMR_SAVE PseudoObject type.
 
#define U_PMR_SETTSCLIP_OID   0x02030801
 PMR_SETTSCLIP PseudoObject type.
 
#define U_PMR_SETTSGRAPHICS_OID   0x02030802
 PMR_SETTSGRAPHICS PseudoObject type.
 
#define U_PMR_MULTIPLYWORLDTRANSFORM_OID   0x02030901
 PMR_MULTIPLYWORLDTRANSFORM PseudoObject type.
 
#define U_PMR_RESETWORLDTRANSFORM_OID   0x02030902
 PMR_RESETWORLDTRANSFORM PseudoObject type.
 
#define U_PMR_ROTATEWORLDTRANSFORM_OID   0x02030903
 PMR_ROTATEWORLDTRANSFORM PseudoObject type.
 
#define U_PMR_SCALEWORLDTRANSFORM_OID   0x02030904
 PMR_SCALEWORLDTRANSFORM PseudoObject type.
 
#define U_PMR_SETPAGETRANSFORM_OID   0x02030905
 PMR_SETPAGETRANSFORM PseudoObject type.
 
#define U_PMR_SETWORLDTRANSFORM_OID   0x02030906
 PMR_SETWORLDTRANSFORM PseudoObject type.
 
#define U_PMR_TRANSLATEWORLDTRANSFORM_OID   0x02030907
 PMR_TRANSLATEWORLDTRANSFORM PseudoObject type.
 
#define U_PMR_TRANSLATEWORLDTRANSFORM_OID   0x02030907
 PMR_TRANSLATEWORLDTRANSFORM PseudoObject type.
 
#define U_PMR_CMN_HDR_OID   0x40000000
 PMR_CMN_HDR PseudoObject type.
 
#define U_PMF_4NUM_OID   0x40000001
 PMF_4NUM PseudoObject type. PseudoObject contains a 4 unsigned int in EMF+ file byte order, used in some contexts to indicate an object index number..
 
#define U_PMF_RAW_OID   0x40000002
 PMF_RAW PseudoObject type. Raw data: no preceding elements, data has native endianness.
 
#define U_PMF_ARRAY_OID   0x80000000
 PMF_ARRAY PseudoObject type modifier. PseudoObject contains an array of the data type revealed when this bit is cleared.
 
#define U_PMF_MASK_OID   0x7FFFFFFF
 PMF_MASK. Select PseudoObject data type without regard to PMF_ARRAY.
 
#define U_BDT_Pixel   0x00
 Data is a bitmap.
 
#define U_BDT_Compressed   0x01
 Data is a compressed bitmap (like a PNG).
 
#define U_BT_SolidColor   0x00
 Solid Color brush.
 
#define U_BT_HatchFill   0x01
 Hatch Fill brush.
 
#define U_BT_TextureFill   0x02
 Texture Fill brush.
 
#define U_BT_PathGradient   0x03
 Path Gradient brush.
 
#define U_BT_LinearGradient   0x04
 Linear Gradient brush.
 
#define U_CM_Replace   0x00
 Region becomes new region.
 
#define U_CM_Intersect   0x01
 Region becomes intersection of existing region and new region.
 
#define U_CM_Union   0x02
 Region becomes union of existing and new regions.
 
#define U_CM_XOR   0x03
 Region becomes XOR of existing and new regions.
 
#define U_CM_Exclude   0x04
 Region becomes part of existing region not in new region.
 
#define U_CM_Complement   0x05
 Region becomes part of new region not in existing region.
 
#define U_CMS_Over   0x00
 Source is alpha blends with destination.
 
#define U_CMS_Copy   0x01
 Source over writes destination.
 
#define U_CQ_Default   0x01
 Default compositing quality.
 
#define U_CQ_HighSpeed   0x02
 High Speed compositing quality.
 
#define U_CQ_HighQuality   0x03
 High Quality compositing quality.
 
#define U_CQ_GammaCorrected   0x04
 Gamma Corrected compositing quality.
 
#define U_CQ_AssumeLinear   0x05
 Assume Linear compositing quality.
 
#define U_CA_Exposure   0x00
 Exposure color curve adjustment.
 
#define U_CA_Density   0x01
 Density color curve adjustment.
 
#define U_CA_Contrast   0x02
 Contrast color curve adjustment.
 
#define U_CA_Highlight   0x03
 Highlight color curve adjustment.
 
#define U_CA_Shadow   0x04
 Shadow color curve adjustment.
 
#define U_CA_Midtone   0x05
 Midtone color curve adjustment.
 
#define U_CA_WhiteSaturation   0x06
 White Saturation color curve adjustment.
 
#define U_CA_BlackSaturation   0x07
 Black Saturation color curve adjustment.
 
#define U_CC_All   0x00
 All color channels.
 
#define U_CC_Red   0x01
 Red color channel.
 
#define U_CC_Green   0x02
 Green color channel.
 
#define U_CC_Blue   0x03
 Blue color channel.
 
#define U_CLCDT_Default   0x00
 Default custom line cap.
 
#define U_CLCDT_AdjustableArrow   0x01
 Adjustable Arrow custom line cap.
 
#define U_DLCT_Flat   0x00
 Flat dashed line cap.
 
#define U_DLCT_Round   0x02
 Round dashed line cap.
 
#define U_DLCT_Triangle   0x03
 Triangle dashed line cap.
 
#define U_FT_None   0x00
 No filtering.
 
#define U_FT_Point   0x01
 Point filtering.
 
#define U_FT_Linear   0x02
 Linear filtering.
 
#define U_FT_Triangle   0x03
 Triangle filtering.
 
#define U_FT_Box   0x04
 Box filtering.
 
#define U_FT_PyramidalQuad   0x06
 Pyramidal Quad filtering.
 
#define U_FT_GaussianQuad   0x07
 Gaussian Quad filtering.
 
#define U_GV_1   0x01
 1 graphics version
 
#define U_GV_1_1   0x02
 1.1 graphics version
 
#define U_HSP_Horizontal   0x00000000
 Horizontal.
 
#define U_HSP_Vertical   0x00000001
 Vertical.
 
#define U_HSP_ForwardDiagonal   0x00000002
 Forward Diagonal.
 
#define U_HSP_BackwardDiagonal   0x00000003
 Backward Diagonal.
 
#define U_HSP_LargeGrid   0x00000004
 Large Grid.
 
#define U_HSP_DiagonalCross   0x00000005
 Diagonal Cross.
 
#define U_HSP_05Percent   0x00000006
 05 Percent
 
#define U_HSP_10Percent   0x00000007
 10 Percent
 
#define U_HSP_20Percent   0x00000008
 20 Percent
 
#define U_HSP_25Percent   0x00000009
 25 Percent
 
#define U_HSP_30Percent   0x0000000A
 30 Percent
 
#define U_HSP_40Percent   0x0000000B
 40 Percent
 
#define U_HSP_50Percent   0x0000000C
 50 Percent
 
#define U_HSP_60Percent   0x0000000D
 60 Percent
 
#define U_HSP_70Percent   0x0000000E
 70 Percent
 
#define U_HSP_75Percent   0x0000000F
 75 Percent
 
#define U_HSP_80Percent   0x00000010
 80 Percent
 
#define U_HSP_90Percent   0x00000011
 90 Percent
 
#define U_HSP_LightDownwardDiagonal   0x00000012
 Light Downward Diagonal.
 
#define U_HSP_LightUpwardDiagonal   0x00000013
 Light Upward Diagonal.
 
#define U_HSP_DarkDownwardDiagonal   0x00000014
 Dark Downward Diagonal.
 
#define U_HSP_DarkUpwardDiagonal   0x00000015
 Dark Upward Diagonal.
 
#define U_HSP_WideDownwardDiagonal   0x00000016
 Wide Downward Diagonal.
 
#define U_HSP_WideUpwardDiagonal   0x00000017
 Wide Upward Diagonal.
 
#define U_HSP_LightVertical   0x00000018
 Light Vertical.
 
#define U_HSP_LightHorizontal   0x00000019
 Light Horizontal.
 
#define U_HSP_NarrowVertical   0x0000001A
 Narrow Vertical.
 
#define U_HSP_NarrowHorizontal   0x0000001B
 Narrow Horizontal.
 
#define U_HSP_DarkVertical   0x0000001C
 Dark Vertical.
 
#define U_HSP_DarkHorizontal   0x0000001D
 Dark Horizontal.
 
#define U_HSP_DashedDownwardDiagonal   0x0000001E
 Dashed Downward Diagonal.
 
#define U_HSP_DashedUpwardDiagonal   0x0000001F
 Dashed Upward Diagonal.
 
#define U_HSP_DashedHorizontal   0x00000020
 Dashed Horizontal.
 
#define U_HSP_DashedVertical   0x00000021
 Dashed Vertical.
 
#define U_HSP_SmallConfetti   0x00000022
 Small Confetti.
 
#define U_HSP_LargeConfetti   0x00000023
 LargeC onfetti.
 
#define U_HSP_ZigZag   0x00000024
 Zig Zag.
 
#define U_HSP_Wave   0x00000025
 Wave.
 
#define U_HSP_DiagonalBrick   0x00000026
 Diagonal Brick.
 
#define U_HSP_HorizontalBrick   0x00000027
 Horizontal Brick.
 
#define U_HSP_Weave   0x00000028
 Weave.
 
#define U_HSP_Plaid   0x00000029
 Plaid.
 
#define U_HSP_Divot   0x0000002A
 Divot.
 
#define U_HSP_DottedGrid   0x0000002B
 DottedGrid.
 
#define U_HSP_DottedDiamond   0x0000002C
 DottedDiamond.
 
#define U_HSP_Shingle   0x0000002D
 Shingle.
 
#define U_HSP_Trellis   0x0000002E
 Trellis.
 
#define U_HSP_Sphere   0x0000002F
 Sphere.
 
#define U_HSP_SmallGrid   0x00000030
 Small Grid.
 
#define U_HSP_SmallCheckerBoard   0x00000031
 Small Checker Board.
 
#define U_HSP_LargeCheckerBoard   0x00000032
 Large Checker Board.
 
#define U_HSP_OutlinedDiamond   0x00000033
 Outlined Diamond.
 
#define U_HSP_SolidDiamond   0x00000034
 Solid Diamond.
 
#define U_HKP_None   0x00
 No hot key prefix.
 
#define U_HKP_Show   0x01
 Show hot key prefix.
 
#define U_HKP_Hide   0x02
 Hide hot key prefix.
 
#define U_IDT_Unknown   0x00
 Unknown image data type.
 
#define U_IDT_Bitmap   0x01
 Bitmap image data type.
 
#define U_IDT_Metafile   0x02
 Metafile image data type.
 
#define U_IM_Default   0x00
 Default interpolation mode.
 
#define U_IM_LowQuality   0x01
 Low Quality interpolation mode.
 
#define U_IM_HighQuality   0x02
 High Quality interpolation mode.
 
#define U_IM_Bilinear   0x03
 Bilinear interpolation mode.
 
#define U_IM_Bicubic   0x04
 Bicubic interpolation mode.
 
#define U_IM_NearestNeighbor   0x05
 Nearest Neighbor interpolation mode.
 
#define U_IM_HighQualityBilinear   0x06
 High Quality Bilinear interpolation mode.
 
#define U_IM_HighQualityBicubic   0x07
 High Quality Bicubic interpolation mode.
 
#define U_LID_LANG_NEUTRAL   0x0000
 LANG_NEUTRAL.
 
#define U_LID_zh_CHS   0x0004
 zh_CHS
 
#define U_LID_LANG_INVARIANT   0x007F
 LANG_INVARIANT.
 
#define U_LID_LANG_NEUTRAL_USER_DEFAULT   0x0400
 LANG_NEUTRAL_USER_DEFAULT.
 
#define U_LID_ar_SA   0x0401
 ar_SA
 
#define U_LID_bg_BG   0x0402
 bg_BG
 
#define U_LID_ca_ES   0x0403
 ca_ES
 
#define U_LID_zh_CHT   0x0404
 zh_CHT
 
#define U_LID_cs_CZ   0x0405
 cs_CZ
 
#define U_LID_da_DK   0x0406
 da_DK
 
#define U_LID_de_DE   0x0407
 de_DE
 
#define U_LID_el_GR   0x0408
 el_GR
 
#define U_LID_en_US   0x0409
 en_US
 
#define U_LID_es_Tradnl_ES   0x040A
 es_Tradnl_ES
 
#define U_LID_fi_FI   0x040B
 fi_FI
 
#define U_LID_fr_FR   0x040C
 fr_FR
 
#define U_LID_he_IL   0x040D
 he_IL
 
#define U_LID_hu_HU   0x040E
 hu_HU
 
#define U_LID_is_IS   0x040F
 is_IS
 
#define U_LID_it_IT   0x0410
 it_IT
 
#define U_LID_ja_JA   0x0411
 ja_JA
 
#define U_LID_ko_KR   0x0412
 ko_KR
 
#define U_LID_nl_NL   0x0413
 nl_NL
 
#define U_LID_nb_NO   0x0414
 nb_NO
 
#define U_LID_pl_PL   0x0415
 pl_PL
 
#define U_LID_pt_BR   0x0416
 pt_BR
 
#define U_LID_rm_CH   0x0417
 rm_CH
 
#define U_LID_ro_RO   0x0418
 ro_RO
 
#define U_LID_ru_RU   0x0419
 ru_RU
 
#define U_LID_hr_HR   0x041A
 hr_HR
 
#define U_LID_sk_SK   0x041B
 sk_SK
 
#define U_LID_sq_AL   0x041C
 sq_AL
 
#define U_LID_sv_SE   0x041D
 sv_SE
 
#define U_LID_th_TH   0x041E
 th_TH
 
#define U_LID_tr_TR   0x041F
 tr_TR
 
#define U_LID_ur_PK   0x0420
 ur_PK
 
#define U_LID_id_ID   0x0421
 id_ID
 
#define U_LID_uk_UA   0x0422
 uk_UA
 
#define U_LID_be_BY   0x0423
 be_BY
 
#define U_LID_sl_SI   0x0424
 sl_SI
 
#define U_LID_et_EE   0x0425
 et_EE
 
#define U_LID_lv_LV   0x0426
 lv_LV
 
#define U_LID_lt_LT   0x0427
 lt_LT
 
#define U_LID_tg_TJ   0x0428
 tg_TJ
 
#define U_LID_fa_IR   0x0429
 fa_IR
 
#define U_LID_vi_VN   0x042A
 vi_VN
 
#define U_LID_hy_AM   0x042B
 hy_AM
 
#define U_LID_az_Latn_AZ   0x042C
 az_Latn_AZ
 
#define U_LID_eu_ES   0x042D
 eu_ES
 
#define U_LID_wen_DE   0x042E
 wen_DE
 
#define U_LID_mk_MK   0x042F
 mk_MK
 
#define U_LID_st_ZA   0x0430
 st_ZA
 
#define U_LID_tn_ZA   0x0432
 tn_ZA
 
#define U_LID_xh_ZA   0x0434
 xh_ZA
 
#define U_LID_zu_ZA   0x0435
 zu_ZA
 
#define U_LID_af_ZA   0x0436
 af_ZA
 
#define U_LID_ka_GE   0x0437
 ka_GE
 
#define U_LID_fa_FA   0x0438
 fa_FA
 
#define U_LID_hi_IN   0x0439
 hi_IN
 
#define U_LID_mt_MT   0x043A
 mt_MT
 
#define U_LID_se_NO   0x043B
 se_NO
 
#define U_LID_ga_GB   0x043C
 ga_GB
 
#define U_LID_ms_MY   0x043E
 ms_MY
 
#define U_LID_kk_KZ   0x043F
 kk_KZ
 
#define U_LID_ky_KG   0x0440
 ky_KG
 
#define U_LID_sw_KE   0x0441
 sw_KE
 
#define U_LID_tk_TM   0x0442
 tk_TM
 
#define U_LID_uz_Latn_UZ   0x0443
 uz_Latn_UZ
 
#define U_LID_tt_Ru   0x0444
 tt_Ru
 
#define U_LID_bn_IN   0x0445
 bn_IN
 
#define U_LID_pa_IN   0x0446
 pa_IN
 
#define U_LID_gu_IN   0x0447
 gu_IN
 
#define U_LID_or_IN   0x0448
 or_IN
 
#define U_LID_ta_IN   0x0449
 ta_IN
 
#define U_LID_te_IN   0x044A
 te_IN
 
#define U_LID_kn_IN   0x044B
 kn_IN
 
#define U_LID_ml_IN   0x044C
 ml_IN
 
#define U_LID_as_IN   0x044D
 as_IN
 
#define U_LID_mr_IN   0x044E
 mr_IN
 
#define U_LID_sa_IN   0x044F
 sa_IN
 
#define U_LID_mn_MN   0x0450
 mn_MN
 
#define U_LID_bo_CN   0x0451
 bo_CN
 
#define U_LID_cy_GB   0x0452
 cy_GB
 
#define U_LID_km_KH   0x0453
 km_KH
 
#define U_LID_lo_LA   0x0454
 lo_LA
 
#define U_LID_gl_ES   0x0456
 gl_ES
 
#define U_LID_kok_IN   0x0457
 kok_IN
 
#define U_LID_sd_IN   0x0459
 sd_IN
 
#define U_LID_syr_SY   0x045A
 syr_SY
 
#define U_LID_si_LK   0x045B
 si_LK
 
#define U_LID_iu_Cans_CA   0x045D
 iu_Cans_CA
 
#define U_LID_am_ET   0x045E
 am_ET
 
#define U_LID_ne_NP   0x0461
 ne_NP
 
#define U_LID_fy_NL   0x0462
 fy_NL
 
#define U_LID_ps_AF   0x0463
 ps_AF
 
#define U_LID_fil_PH   0x0464
 fil_PH
 
#define U_LID_div_MV   0x0465
 div_MV
 
#define U_LID_ha_Latn_NG   0x0468
 ha_Latn_NG
 
#define U_LID_yo_NG   0x046A
 yo_NG
 
#define U_LID_quz_BO   0x046B
 quz_BO
 
#define U_LID_nzo_ZA   0x046C
 nzo_ZA
 
#define U_LID_ba_RU   0x046D
 ba_RU
 
#define U_LID_lb_LU   0x046E
 lb_LU
 
#define U_LID_kl_GL   0x046F
 kl_GL
 
#define U_LID_ig_NG   0x0470
 ig_NG
 
#define U_LID_so_SO   0x0477
 so_SO
 
#define U_LID_ii_CN   0x0478
 ii_CN
 
#define U_LID_arn_CL   0x047A
 arn_CL
 
#define U_LID_moh_CA   0x047C
 moh_CA
 
#define U_LID_br_FR   0x047E
 br_FR
 
#define U_LID_ug_CN   0x0480
 ug_CN
 
#define U_LID_   mi_NZ 0x0481
 mi_NZ
 
#define U_LID_oc_FR   0x0482
 oc_FR
 
#define U_LID_co_FR   0x0483
 co_FR
 
#define U_LID_gsw_FR   0x0484
 gsw_FR
 
#define U_LID_sah_RU   0x0485
 sah_RU
 
#define U_LID_qut_GT   0x0486
 qut_GT
 
#define U_LID_rw_RW   0x0487
 rw_RW
 
#define U_LID_wo_SN   0x0488
 wo_SN
 
#define U_LID_gbz_AF   0x048C
 gbz_AF
 
#define U_LID_LANG_NEUTRAL_SYS_DEFAULT   0x0800
 LANG_NEUTRAL_SYS_DEFAULT.
 
#define U_LID_ar_IQ   0x0801
 ar_IQ
 
#define U_LID_zh_CN   0x0804
 zh_CN
 
#define U_LID_de_CH   0x0807
 de_CH
 
#define U_LID_en_GB   0x0809
 en_GB
 
#define U_LID_es_MX   0x080A
 es_MX
 
#define U_LID_fr_BE   0x080C
 fr_BE
 
#define U_LID_it_CH   0x0810
 it_CH
 
#define U_LID_ko_Johab_KR   0x0812
 ko_Johab_KR
 
#define U_LID_nl_BE   0x0813
 nl_BE
 
#define U_LID_nn_NO   0x0814
 nn_NO
 
#define U_LID_pt_PT   0x0816
 pt_PT
 
#define U_LID_sr_Latn_SP   0x081A
 sr_Latn_SP
 
#define U_LID_sv_FI   0x081D
 sv_FI
 
#define U_LID_ur_IN   0x0820
 ur_IN
 
#define U_LID_lt_C_LT   0x0827
 lt_C_LT
 
#define U_LID_az_Cyrl_AZ   0x082C
 az_Cyrl_AZ
 
#define U_LID_wee_DE   0x082E
 wee_DE
 
#define U_LID_se_SE   0x083B
 se_SE
 
#define U_LID_ga_IE   0x083C
 ga_IE
 
#define U_LID_ms_BN   0x083E
 ms_BN
 
#define U_LID_uz_Cyrl_UZ   0x0843
 uz_Cyrl_UZ
 
#define U_LID_bn_BD   0x0845
 bn_BD
 
#define U_LID_mn_Mong_CN   0x0850
 mn_Mong_CN
 
#define U_LID_sd_PK   0x0859
 sd_PK
 
#define U_LID_iu_Latn_CA   0x085D
 iu_Latn_CA
 
#define U_LID_tzm_Latn_DZ   0x085F
 tzm_Latn_DZ
 
#define U_LID_quz_EC   0x086B
 quz_EC
 
#define U_LID_LANG_NEUTRAL_CUSTOM_DEFAULT   0x0C00
 LANG_NEUTRAL_CUSTOM_DEFAULT.
 
#define U_LID_ar_EG   0x0C01
 ar_EG
 
#define U_LID_zh_HK   0x0C04
 zh_HK
 
#define U_LID_de_AT   0x0C07
 de_AT
 
#define U_LID_en_AU   0x0C09
 en_AU
 
#define U_LID_es_ES   0x0C0A
 es_ES
 
#define U_LID_fr_CA   0x0C0C
 fr_CA
 
#define U_LID_sr_Cyrl_CS   0x0C1A
 sr_Cyrl_CS
 
#define U_LID_se_FI   0x0C3B
 se_FI
 
#define U_LID_quz_PE   0x0C6B
 quz_PE
 
#define U_LID_LANG_NEUTRAL_CUSTOM   0x1000
 LANG_NEUTRAL_CUSTOM.
 
#define U_LID_ar_LY   0x1001
 ar_LY
 
#define U_LID_zh_SG   0x1004
 zh_SG
 
#define U_LID_de_LU   0x1007
 de_LU
 
#define U_LID_en_CA   0x1009
 en_CA
 
#define U_LID_es_GT   0x100A
 es_GT
 
#define U_LID_fr_CH   0x100C
 fr_CH
 
#define U_LID_hr_BA   0x101A
 hr_BA
 
#define U_LID_smj_NO   0x103B
 smj_NO
 
#define U_LID_LANG_NEUTRAL_CUSTOM_DEFAULT_MUI   0x1400
 LANG_NEUTRAL_CUSTOM_DEFAULT_MUI.
 
#define U_LID_ar_DZ   0x1401
 ar_DZ
 
#define U_LID_zh_MO   0x1404
 zh_MO
 
#define U_LID_de_LI   0x1407
 de_LI
 
#define U_LID_en_NZ   0x1409
 en_NZ
 
#define U_LID_es_CR   0x140A
 es_CR
 
#define U_LID_fr_LU   0x140C
 fr_LU
 
#define U_LID_bs_Latn_BA   0x141A
 bs_Latn_BA
 
#define U_LID_smj_SE   0x143B
 smj_SE
 
#define U_LID_ar_MA   0x1801
 ar_MA
 
#define U_LID_en_IE   0x1809
 en_IE
 
#define U_LID_es_PA   0x180A
 es_PA
 
#define U_LID_ar_MC   0x180C
 ar_MC
 
#define U_LID_sr_Latn_BA   0x181A
 sr_Latn_BA
 
#define U_LID_sma_NO   0x183B
 sma_NO
 
#define U_LID_ar_TN   0x1C01
 ar_TN
 
#define U_LID_en_ZA   0x1C09
 en_ZA
 
#define U_LID_es_DO   0x1C0A
 es_DO
 
#define U_LID_sr_Cyrl_BA   0x1C1A
 sr_Cyrl_BA
 
#define U_LID_sma_SE   0x1C3B
 sma_SE
 
#define U_LID_ar_OM   0x2001
 ar_OM
 
#define U_LID_el_2_GR   0x2008
 el_2_GR
 
#define U_LID_en_JM   0x2009
 en_JM
 
#define U_LID_es_VE   0x200A
 es_VE
 
#define U_LID_bs_Cyrl_BA   0x201A
 bs_Cyrl_BA
 
#define U_LID_sms_FI   0x203B
 sms_FI
 
#define U_LID_ar_YE   0x2401
 ar_YE
 
#define U_LID_ar_029   0x2409
 ar_029
 
#define U_LID_es_CO   0x240A
 es_CO
 
#define U_LID_smn_FI   0x243B
 smn_FI
 
#define U_LID_ar_SY   0x2801
 ar_SY
 
#define U_LID_en_BZ   0x2809
 en_BZ
 
#define U_LID_es_PE   0x280A
 es_PE
 
#define U_LID_ar_JO   0x2C01
 ar_JO
 
#define U_LID_en_TT   0x2C09
 en_TT
 
#define U_LID_es_AR   0x2C0A
 es_AR
 
#define U_LID_ar_LB   0x3001
 ar_LB
 
#define U_LID_en_ZW   0x3009
 en_ZW
 
#define U_LID_es_EC   0x300A
 es_EC
 
#define U_LID_ar_KW   0x3401
 ar_KW
 
#define U_LID_en_PH   0x3409
 en_PH
 
#define U_LID_es_CL   0x340A
 es_CL
 
#define U_LID_ar_AE   0x3801
 ar_AE
 
#define U_LID_es_UY   0x380A
 es_UY
 
#define U_LID_ar_BH   0x3C01
 ar_BH
 
#define U_LID_es_PY   0x3C0A
 es_PY
 
#define U_LID_ar_QA   0x4001
 ar_QA
 
#define U_LID_en_IN   0x4009
 en_IN
 
#define U_LID_es_BO   0x400A
 es_BO
 
#define U_LID_en_MY   0x4409
 en_MY
 
#define U_LID_es_SV   0x440A
 es_SV
 
#define U_LID_en_SG   0x4809
 en_SG
 
#define U_LID_es_HN   0x480A
 es_HN
 
#define U_LID_es_NI   0x4C0A
 es_NI
 
#define U_LID_es_PR   0x500A
 es_PR
 
#define U_LID_es_US   0x540A
 es_US
 
#define U_LID_zh_Hant   0x7C04
 zh_Hant
 
#define U_LID_SEC_MASK   0xFB00
 Mask for region part of LID.
 
#define U_LID_PRI_MASK   0x03FF
 MASK for languagepart of LID.
 
#define U_LCT_Flat   0x00
 Flat line cap.
 
#define U_LCT_Square   0x01
 Square line cap.
 
#define U_LCT_Round   0x02
 Round line cap.
 
#define U_LCT_Triangle   0x03
 Triangle line cap.
 
#define U_LCT_NoAnchor   0x10
 No Anchor line cap.
 
#define U_LCT_SquareAnchor   0x11
 Square Anchor line cap.
 
#define U_LCT_RoundAnchor   0x12
 Round Anchor line cap.
 
#define U_LCT_DiamondAnchor   0x13
 Diamond Anchor line cap.
 
#define U_LCT_ArrowAnchor   0x14
 Arrow Anchor line cap.
 
#define U_LCT_AnchorMask   0xF0
 Ancho rMask line cap.
 
#define U_LCT_Custom   0xFF
 Custom line cap.
 
#define U_LJT_Miter   0x00
 Miter line join.
 
#define U_LJT_Bevel   0x01
 Bevel line join.
 
#define U_LJT_Round   0x02
 Round line join.
 
#define U_LJT_MiterClipped   0x03
 Miter Clipped line join.
 
#define U_LS_Solid   0x00
 Solid line.
 
#define U_LS_Dash   0x01
 Dashed line.
 
#define U_LS_Dot   0x02
 Dotted line.
 
#define U_LS_DashDot   0x03
 Dash Dot line.
 
#define U_LS_DashDotDot   0x04
 Dash Dot Dot line.
 
#define U_LS_Custom   0x05
 Custom line.
 
#define U_MDT_Wmf   0x01
 WMF metafile.
 
#define U_MDT_WmfPlaceable   0x02
 WMF placeable metafile.
 
#define U_MDT_Emf   0x03
 EMF metafile.
 
#define U_MDT_EmfPlusOnly   0x04
 EMF+ single mode metafile.
 
#define U_MDT_EmfPlusDual   0x05
 EMF+ dual mode metafile.
 
#define U_OT_Invalid   0x00
 Invalid object.
 
#define U_OT_Brush   0x01
 Brush object.
 
#define U_OT_Pen   0x02
 Pen object.
 
#define U_OT_Path   0x03
 Path object.
 
#define U_OT_Region   0x04
 Region object.
 
#define U_OT_Image   0x05
 Image object.
 
#define U_OT_Font   0x06
 Font object.
 
#define U_OT_StringFormat   0x07
 StringFormat object.
 
#define U_OT_ImageAttributes   0x08
 ImageAttributes object.
 
#define U_OT_CustomLineCap   0x09
 CustomLineCap object.
 
#define U_PPT_Start   0x00
 Start of path.
 
#define U_PPT_Line   0x01
 Line path.
 
#define U_PPT_Bezier   0x03
 Bezier path.
 
#define U_PPT_MASK   0x0F
 MASK for bits in flag.
 
#define U_PA_Center   0x00
 Center pen alignment.
 
#define U_PA_Inset   0x01
 Inset pen alignment.
 
#define U_PA_Left   0x02
 Left pen alignment.
 
#define U_PA_Outset   0x03
 Outset pen alignment.
 
#define U_PA_Right   0x04
 Right pen alignment.
 
#define U_PF_Undefined   0x00000000
 undefined Pixel Format
 
#define U_PF_1bppIndexed   0x00030101
 monochrome with LUT
 
#define U_PF_4bppIndexed   0x00030402
 4 bit with LUT
 
#define U_PF_8bppIndexed   0x00030803
 8 bit with LUT
 
#define U_PF_16bppGrayScale   0x00101004
 16 bits grey values
 
#define U_PF_16bppRGB555   0x00021005
 16 bit RGB values (5,5,5,(1 ignored))
 
#define U_PF_16bppRGB565   0x00021006
 16 bit RGB values (5,6,5)
 
#define U_PF_16bppARGB1555   0x00061007
 16 bit ARGB values (1 alpha, 5,5,5 colors)
 
#define U_PF_24bppRGB   0x00021808
 24 bit RGB values (8,8.8)
 
#define U_PF_32bppRGB   0x00022009
 32 bit RGB value (8,8,8,(8 ignored))
 
#define U_PF_32bppARGB   0x0026200A
 32 bit ARGB values (8 alpha,8,8,8)
 
#define U_PF_32bppPARGB   0x000E200B
 32 bit PARGB values (8,8,8,8, but RGB already multiplied by A)
 
#define U_PF_48bppRGB   0x0010300C
 48 bit RGB (16,16,16)
 
#define U_PF_64bppARGB   0x0034400D
 64 bit ARGB (16 alpha, 16,16,16)
 
#define U_PF_64bppPARGB   0x001A400E
 64 bit PARGB (16,16,16,16, but RGB already multiplied by A)
 
#define U_POM_Default   0x00
 center at {0.0,0.0}
 
#define U_POM_HighSpeed   0x01
 center at {0.0,0.0}
 
#define U_POM_HighQuality   0x02
 center at {0.5,0.5}
 
#define U_POM_None   0x03
 center at {0.0,0.0}
 
#define U_POM_Half   0x04
 center at {0.5,0.5}
 
#define U_RNDT_Kids   0x00000000
 One of the next 5 is to be applied.
 
#define U_RNDT_And   0x00000001
 AND the child nodes.
 
#define U_RNDT_Or   0x00000002
 OR the child nodes.
 
#define U_RNDT_Xor   0x00000003
 XOR the child nodes.
 
#define U_RNDT_Exclude   0x00000004
 Part of 1st child node not in 2nd child node.
 
#define U_RNDT_Complement   0x00000005
 Part of 2nd child node not in 1st child node.
 
#define U_RNDT_Rect   0x10000000
 Child node is a rectangle.
 
#define U_RNDT_Path   0x10000001
 Child node is a path.
 
#define U_RNDT_Empty   0x10000002
 Child node is empty.
 
#define U_RNDT_Infinite   0x10000003
 Child node has infinite extent (?)
 
#define U_SM_Default   0x00
 Default smoothing.
 
#define U_SM_HighSpeed   0x01
 High Speed smoothing.
 
#define U_SM_HighQuality   0x02
 High Quality smoothing.
 
#define U_SM_None   0x03
 No smoothing.
 
#define U_SM_AntiAlias8x4   0x04
 Anti Alias 8x4 smoothing.
 
#define U_SM_AntiAlias8x8   0x05
 Anti Alias 8x8 smoothing.
 
#define U_SA_Near   0x00
 Position near.
 
#define U_SA_Center   0x01
 Position center.
 
#define U_SA_Far   0x02
 Position far.
 
#define U_SDS_User   0x00
 Digit substitution is set by implementation.
 
#define U_SDS_None   0x01
 No Digit substitution.
 
#define U_SDS_National   0x02
 Digit substitution by official locale.
 
#define U_SDS_Traditional   0x03
 Digit substitution by traditional locale.
 
#define U_ST_None   0x00
 no string trimming
 
#define U_ST_Character   0x01
 Trim at Character.
 
#define U_ST_Word   0x02
 Trim at Word.
 
#define U_ST_EllipsisCharacter   0x03
 Trim at Ellipsis Character.
 
#define U_ST_EllipsisWord   0x04
 Trim at Ellipsis Word.
 
#define U_ST_EllipsisPath   0x05
 Trim at Ellipsis Path.
 
#define U_TRH_SystemDefault   0x00
 System Default.
 
#define U_TRH_SingleBitPerPixelGridFit   0x01
 Single Bit Per Pixel Grid Fit.
 
#define U_TRH_SingleBitPerPixel   0x02
 Single Bit Per Pixel.
 
#define U_TRH_AntialiasGridFit   0x03
 Antialias Grid Fit.
 
#define U_TRH_Antialias   0x04
 Antialias.
 
#define U_TRH_ClearTypeGridFit   0x05
 ClearType Grid Fit.
 
#define U_UT_World   0x00
 World units.
 
#define U_UT_Display   0x01
 Display units.
 
#define U_UT_Pixel   0x02
 Pixel units.
 
#define U_UT_Point   0x03
 Point units.
 
#define U_UT_Inch   0x04
 Inch units.
 
#define U_UT_Document   0x05
 Document units.
 
#define U_UT_Millimeter   0x06
 Millimeter units.
 
#define U_WM_Tile   0x00000000
 Tile.
 
#define U_WM_TileFlipX   0x00000001
 Reverse horizontally then tile.
 
#define U_WM_TileFlipY   0x00000002
 Reverse vertically then tile.
 
#define U_WM_TileFlipXY   0x00000003
 Reverse horizontally and vertically then tile.
 
#define U_WM_Clamp   0x00000004
 Clamp pattern to the object boundary.
 
#define U_BD_None   0x0000
 no bits set
 
#define U_BD_Path   0x0001
 Path, in {B}.
 
#define U_BD_Transform   0x0002
 Transform in {ABC}.
 
#define U_BD_PresetColors   0x0004
 PresetColors in {AB}.
 
#define U_BD_BlendFactorsH   0x0008
 BlendFactorsH in {AB}.
 
#define U_BD_BlendFactorsV   0x0010
 BlendFactorsV in {A} - Note, not actually implemented in GDI+.
 
#define U_BD_NoBit   0x0020
 unused bit
 
#define U_BD_FocusScales   0x0040
 Focus Scales in {B}.
 
#define U_BD_IsGammaCorrected   0x0080
 GammaCorrected in {ABC}.
 
#define U_BD_DoNotTransform   0x0100
 Ignore world to device transform in {C}.
 
#define U_BD_MASKA   0x009E
 all bits that MAY be set in A
 
#define U_BD_MASKB   0x00CF
 all bits that MAY be set in B
 
#define U_BD_MASKC   0x0182
 all bits that MAY be set in C
 
#define U_CLCD_None   0x00
 no bits set
 
#define U_CLCD_FillPath   0x01
 Fill Path.
 
#define U_CLCD_LinePath   0x02
 Line Path.
 
#define U_DSO_None   0x00
 no bits set
 
#define U_DSO_CmapLookup   0x01
 Set: value is a Unicode character; Clear: value is an index into Glyph table in a font.
 
#define U_DSO_Vertical   0x02
 Set: draw string verically; Clear: draw horizontally.
 
#define U_DSO_RealizedAdvance   0x04
 
#define U_DSO_LimitSubpixel   0x08
 Set: use less memory to cache anti-aliased glyphs; Clear: use more.
 
#define U_FS_None   0x00
 no bits set
 
#define U_FS_Bold   0x01
 Bold.
 
#define U_FS_Italic   0x02
 Italic.
 
#define U_FS_Underline   0x04
 Underline.
 
#define U_FS_Strikeout   0x08
 Strikeout.
 
#define U_PLTS_None   0x00
 no bits set
 
#define U_PLTS_HasAlpha   0x01
 Has Alpha.
 
#define U_PLTS_GrayScale   0x02
 Gray Scale.
 
#define U_PLTS_Halftone   0x04
 Halftone.
 
#define U_PTP_None   0x00
 no bits set
 
#define U_PTP_DashMode   0x10
 Dash Mode.
 
#define U_PTP_PathMarker   0x20
 Path Marker.
 
#define U_PTP_NoBit   0x40
 unused bit
 
#define U_PTP_CloseSubpath   0x80
 CloseSubpath.
 
#define U_PTP_NotClose   0x70
 Everything but close.
 
#define U_PTP_MASK   0xF0
 Everything.
 
#define U_PTP_SHIFT   4
 offset to this bitfield
 
#define U_PD_None   0x0000
 no bits set
 
#define U_PD_Transform   0x0001
 Transform.
 
#define U_PD_StartCap   0x0002
 Start Cap.
 
#define U_PD_EndCap   0x0004
 End Cap.
 
#define U_PD_Join   0x0008
 Join.
 
#define U_PD_MiterLimit   0x0010
 Miter Limit.
 
#define U_PD_LineStyle   0x0020
 Line Style.
 
#define U_PD_DLCap   0x0040
 Dashed Line Cap.
 
#define U_PD_DLOffset   0x0080
 Dashed Line Offset.
 
#define U_PD_DLData   0x0100
 Dashed Line Data.
 
#define U_PD_NonCenter   0x0200
 Alignment must be specified with optinal data.
 
#define U_PD_CLData   0x0400
 Compound Line Data.
 
#define U_PD_CustomStartCap   0x0800
 Custom Start Cap.
 
#define U_PD_CustomEndCap   0x1000
 Custom End Cap.
 
#define U_SF_None   0x00000000
 no bits set
 
#define U_SF_DirectionRightToLeft   0x00000001
 text Right to Left
 
#define U_SF_DirectionVertical   0x00000002
 text Left to Right
 
#define U_SF_NoFitBlackBox   0x00000004
 text not restricted to layout bbox
 
#define U_SF_NoBit4   0x00000008
 unused bit
 
#define U_SF_NoBit5   0x00000010
 unused bit
 
#define U_SF_DisplayFormatControl   0x00000020
 control codes display as "representative" glyphs
 
#define U_SF_NoBit7   0x00000040
 unused bit
 
#define U_SF_NoBit8   0x00000080
 unused bit
 
#define U_SF_NoBit9   0x00000100
 unused bit
 
#define U_SF_NoBit10   0x00000200
 unused bit
 
#define U_SF_NoFontFallback   0x00000400
 show as missing glyph if not in font
 
#define U_SF_MeasureTrailingSpaces   0x00000800
 trailing spaces included in line length
 
#define U_SF_NoWrap   0x00001000
 text does not wrap
 
#define U_SF_LineLimit   0x00002000
 emit whole lines if not clipped
 
#define U_SF_NoClip   0x00004000
 text is not clipped
 
#define U_SF_BypassGDI   0x80000000
 use implementation specific text rendering instead of GDI
 
#define U_IE_BlurEffectGuid   "{633C80A4-1843-482B-9EF2-BE2834C5FDD4}"
 Blur Effect.
 
#define U_IE_BrightnessContrastEffectGuid   "{D3A1DBE1-8EC4-4C17-9F4C-EA97AD1C343D}"
 Brightness Contrast Effect.
 
#define U_IE_ColorBalanceEffectGuid   "{537E597D-251E-48DA-9664-29CA496B70F8}"
 Color Balance Effect.
 
#define U_IE_ColorCurveEffectGuid   "{DD6A0022-58E4-4A67-9D9B-D48EB881A53D}"
 Color Curve Effect.
 
#define U_IE_ColorLookupTableEffectGuid   "{A7CE72A9-0F7F-40D7-B3CC-D0C02D5C3212}"
 Color Lookup Table Effect.
 
#define U_IE_ColorMatrixEffectGuid   "{718F2615-7933-40E3-A511-5F68FE14DD74}"
 Color Matrix Effect.
 
#define U_IE_HueSaturationLightnessEffectGuid   "{8B2DD6C3-EB07-4D87-A5F0-7108E26A9C5F}"
 Hue Saturation Lightness Effect.
 
#define U_IE_LevelsEffectGuid   "{99C354EC-2A31-4F3A-8C34-17A803B33A25}"
 Levels Effect.
 
#define U_IE_RedEyeCorrectionEffectGuid   "{74D29D05-69A4-4266-9549-3CC52836B632}"
 Red Eye Correction Effect.
 
#define U_IE_SharpenEffectGuid   "{63CBF3EE-C526-402C-8F71-62C540BF5142}"
 Sharpen Effect.
 
#define U_IE_TintEffectGuid   "{1077AF00-2848-4441-9489-44AD4C2D7A2C}"
 Tint Effect.
 
#define U_IEE_Unknown   0
 none of the following
 
#define U_IEE_BlurEffectGuid   1
 Blur Effect.
 
#define U_IEE_BrightnessContrastEffectGuid   2
 Brightness Contrast Effect.
 
#define U_IEE_ColorBalanceEffectGuid   3
 Color Balance Effect.
 
#define U_IEE_ColorCurveEffectGuid   4
 Color Curve Effect.
 
#define U_IEE_ColorLookupTableEffectGuid   5
 Color Lookup Table Effect.
 
#define U_IEE_ColorMatrixEffectGuid   6
 Color Matrix Effect.
 
#define U_IEE_HueSaturationLightnessEffectGuid   7
 Hue Saturation Lightness Effect.
 
#define U_IEE_LevelsEffectGuid   8
 Levels Effect.
 
#define U_IEE_RedEyeCorrectionEffectGuid   9
 Red Eye Correction Effect.
 
#define U_IEE_SharpenEffectGuid   10
 Sharpen Effect.
 
#define U_IEE_TintEffectGuid   11
 Tint Effect.
 
#define U_OC_Rect   0x00
 Clamp object to rectangle.
 
#define U_OC_Bitmap   0x01
 Clamp object to bitmap.
 
#define U_PPF_B   0x8000
 15 Set: BrushID is an U_PFM_ARGB; Clear: is index of U_PMF_BRUSH object in EMF+ object table.
 
#define U_PPF_BZ   0x8000
 15 Set: Points are on a Bezier curve; Clear: Points are on a line
 
#define U_PPF_N   0x8000
 15 Set: object definition continues in next record; Clear: this is the final object definition record
 
#define U_PPF_K   0x8000
 15 Set: int16_t coordinates; Clear: use U_FLOAT coordinates
 
#define U_PPF_C   0x4000
 14 Set: int16_t coordinates; Clear: use U_FLOAT coordinates
 
#define U_PPF_XM   0x2000
 13 Set: Post multiply matrix; Clear: Pre multiply matrix
 
#define U_PPF_F   0x2000
 13 Set: winding fill; Clear: alternate fill
 
#define U_PPF_E   0x2000
 13 Set: effect from previous U_PMF_SERIALIZABLEOBJECT record will be applied,; Clear: no effect applied
 
#define U_PPF_R   0x1000
 12 Set: U_PMF_PathPointTypeRLE and/or U_PMF_PathPointType objects; Clear: only U_PMF_PathPointType
 
#define U_PPF_P   0x0800
 11 Set: relative coordinates; Clear absolute coordinates
 
#define U_PPF_D   0x0400
 10 Set: draw path closed; Clear: draw path open
 
#define U_PPF_VGA   0x0002
 1 Set: Palette is VGA basic colors; Clear: Palette is ???
 
#define U_PPF_PP   0x0001
 0 Set: Palette field is present; Clear: Palette field is absent
 
#define U_PPF_DM   0x0001
 0 Set: Dual-mode file; Clear: EMF+ only file
 
#define U_PPF_AA   0x0001
 0 Set: anti-aliasing on; Clear: anti-aliasing off
 
#define U_PPF_VIDEO   0x0001
 0 Set: reference device is video display; Clear: reference devis is printer
 
#define U_FF_MASK_SUBLID   0x003F
 EMF+ manual 2.2.2.23, Microsoft name: EmfPlusLanguageIdentifier.
 
#define U_FF_SHFT_SUBLID   0x000A
 EMF+ manual 2.2.2.23, Microsoft name: EmfPlusLanguageIdentifier.
 
#define U_FF_MASK_PRILID   0x03FF
 EMF+ manual 2.2.2.23, Microsoft name: EmfPlusLanguageIdentifier.
 
#define U_FF_SHFT_PRILID   0x0000
 EMF+ manual 2.2.2.23, Microsoft name: EmfPlusLanguageIdentifier.
 
#define U_FF_MASK_LID   0xFFFF
 EMF+ manual 2.2.2.23, Microsoft name: EmfPlusLanguageIdentifier.
 
#define U_FF_SHFT_LID   0x0000
 EMF+ manual 2.2.2.23, Microsoft name: EmfPlusLanguageIdentifier.
 
#define U_FF_MASK_RL   0x003F
 EMF+ manual 2.2.2.32, Microsoft name: EmfPlusPathPointTypeRLE.
 
#define U_FF_SHFT_RL   0x0008
 EMF+ manual 2.2.2.32, Microsoft name: EmfPlusPathPointTypeRLE.
 
#define U_FF_MASK_PPT   0x00FF
 EMF+ manual 2.2.2.32, Microsoft name: EmfPlusPathPointTypeRLE.
 
#define U_FF_SHFT_PPT   0x0000
 EMF+ manual 2.2.2.32, Microsoft name: EmfPlusPathPointTypeRLE.
 
#define U_FF_MASK_OID8   0x00FF
 EMF+ manual 2.3.1.3, Microsoft name: EmfPlusSetClipPath.
 
#define U_FF_SHFT_OID8   0x0000
 EMF+ manual 2.3.1.3, Microsoft name: EmfPlusSetClipPath.
 
#define U_FF_MASK_CM4   0x000F
 EMF+ manual 2.3.1.3, Microsoft name: EmfPlusSetClipPath.
 
#define U_FF_SHFT_CM4   0x0008
 EMF+ manual 2.3.1.3, Microsoft name: EmfPlusSetClipPath.
 
#define U_FF_MASK_OT   0x003F
 EMF+ manual 2.3.5.1, Microsoft name: EmfPlusObject.
 
#define U_FF_SHFT_OT   0x0008
 EMF+ manual 2.3.5.1, Microsoft name: EmfPlusObject.
 
#define U_FF_MASK_AA   0x007F
 EMF+ manual 2.3.6.1, Microsoft name: EmfPlusSetAntiAliasMode.
 
#define U_FF_SHFT_AA   0x0001
 EMF+ manual 2.3.6.1, Microsoft name: EmfPlusSetAntiAliasMode.
 
#define U_FF_MASK_CM   0x00FF
 EMF+ manual 2.3.6.2, Microsoft name: EmfPlusSetCompositingMode.
 
#define U_FF_SHFT_CM   0x0000
 EMF+ manual 2.3.6.2, Microsoft name: EmfPlusSetCompositingMode.
 
#define U_FF_MASK_CQ   0x00FF
 EMF+ manual 2.3.6.3, Microsoft name: EmfPlusSetCompositingQuality.
 
#define U_FF_SHFT_CQ   0x0000
 EMF+ manual 2.3.6.3, Microsoft name: EmfPlusSetCompositingQuality.
 
#define U_FF_MASK_IM   0x00FF
 EMF+ manual 2.3.6.4, Microsoft name: EmfPlusSetInterpolationMode.
 
#define U_FF_SHFT_IM   0x0000
 EMF+ manual 2.3.6.4, Microsoft name: EmfPlusSetInterpolationMode.
 
#define U_FF_MASK_PxOffM   0x00FF
 EMF+ manual 2.3.6.5, Microsoft name: EmfPlusSetPixelOffsetMode.
 
#define U_FF_SHFT_PxOffM   0x0000
 EMF+ manual 2.3.6.5, Microsoft name: EmfPlusSetPixelOffsetMode.
 
#define U_FF_MASK_TGC   0x0FFF
 EMF+ manual 2.3.6.7, Microsoft name: EmfPlusSetTextContrast.
 
#define U_FF_SHFT_TGC   0x0000
 EMF+ manual 2.3.6.7, Microsoft name: EmfPlusSetTextContrast.
 
#define U_FF_MASK_TRH   0x00FF
 EMF+ manual 2.3.6.8, Microsoft name: EmfPlusSetTextRenderingHint.
 
#define U_FF_SHFT_TRH   0x0000
 EMF+ manual 2.3.6.8, Microsoft name: EmfPlusSetTextRenderingHint.
 
#define U_FF_MASK_UT   0x00FF
 EMF+ manual 2.3.7.1, Microsoft name: EmfPlusBeginContainer.
 
#define U_FF_SHFT_UT   0x0008
 EMF+ manual 2.3.7.1, Microsoft name: EmfPlusBeginContainer.
 
#define U_FF_MASK_TSC   0x7FFF
 EMF+ manual 2.3.8.1, Microsoft name: EmfPlusSetTSClip.
 
#define U_FF_SHFT_TSC   0x0000
 EMF+ manual 2.3.8.1, Microsoft name: EmfPlusSetTSClip.
 
#define U_FF_MASK_PU   0x00FF
 EMF+ manual 2.3.9.5, Microsoft name: EmfPlusSetPageTransform.
 
#define U_FF_SHFT_PU   0x0000
 EMF+ manual 2.3.9.5, Microsoft name: EmfPlusSetPageTransform.
 
#define U_GFVR_PMF   0x000DBC01
 indicates an EMF+ metafile
 
#define U_GFVR_MASKHI   0xFFFFF000
 mask for the signature bit field (20 bits)
 
#define U_GFVR_MASKLO   0x00000FFF
 mask for the version bit field (12 bits)
 
#define U_XM_PostX   1
 Post Multiply change to current Transformation Matrix.
 
#define U_XM_PreX   0
 Pre Multiply change to current Transformation Matrix.
 
#define U_TEST_INT7   0x80
 This bit is clear in Integer7 objects.
 
#define U_SIGN_INT7   0x40
 Sign bit on an Integer7 object.
 
#define U_MASK_INT7   0x7F
 xMask to retrieve integer7 bits.
 
#define U_TEST_INT15   0x8000
 This bit is set in Integer15 objects.
 
#define U_SIGN_INT15   0x4000
 Sign bit on an Integer15 object.
 
#define U_MASK_INT15   0x7FFF
 Mask to retrieve integer15 bits.
 

Typedefs

typedef uint32_t U_PMF_LANGUAGEIDENTIFIER
 EMF+ manual 2.2.2.23, Microsoft name: EmfPlusLanguageIdentifier Object, out of order, needed for 2.2.1.9. More...
 
typedef uint16_t U_PMF_PATHPOINTTYPERLE
 EMF+ manual 2.2.2.32, Microsoft name: EmfPlusPathPointTypeRLE Object.
 
typedef uint32_t U_PMF_GRAPHICSVERSION
 EMF+ manual 2.2.2.19, Microsoft name: EmfPlusGraphicsVersion Object. More...
 

Detailed Description

Structures, definitions, and function prototypes for EMF+ files.

EMF+ file Record structure derived from Microsoft's EMF+ Information pdf, releade date July 5,2012, link from here:

http://msdn.microsoft.com/en-us/library/cc230724.aspx

If the direct link fails the document may be found by searching for: "[MS-EMFPLUS]: Enhanced Metafile Format Plus Extensions "

EMR records and structures are EMF or common with EMF+ PMR records and structures are specific to EMF+

Using PMF instead of EMF+ because "+" is a problem in symbol names.

WARNING: Microsoft's EMF+ documentation is little-endian for everything EXCEPT * bitfields, which are big-endian. See section 1.3.2 * That documentation also uses 0 as the MOST significant bit, N-1 as the least. * This code is little-endian throughout, and 0 is the LEAST significant bit *

Typedef Documentation

typedef uint32_t U_PMF_GRAPHICSVERSION

EMF+ manual 2.2.2.19, Microsoft name: EmfPlusGraphicsVersion Object.

Bit fields are not used in structs in this implementation, these are serialized/deserialized in the corresponding routines. Bitfields in the FILE (LITTLE endian here, manual uses BIG endian) are: unsigned int GrfVersion : 12; GraphicsVersion enumeration unsigned int Signature : 20; Must be U_GFVR_PMF (0xDBC01)EMF+ manual 2.2.2.19, Microsoft name: EmfPlusGraphicsVersion Object

typedef uint32_t U_PMF_LANGUAGEIDENTIFIER

EMF+ manual 2.2.2.23, Microsoft name: EmfPlusLanguageIdentifier Object, out of order, needed for 2.2.1.9.

Bit fields are not used in structs in this implementation, these are serialized/deserialized in the corresponding routines. Bitfields in the FILE (LITTLE endian here, manual uses BIG endian) are: int SubLId : 6; Example: code for USA int PriLId : 10; Example: code for English

This type is defined as 16 bits in the manual section, but it is only ever used as part of a 32 bit field!