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 | Enumerations
uwmf.h File Reference

Structures, definitions, and function prototypes for WMF files. More...

#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#include "uemf.h"
#include "uemf_utf.h"
#include "uwmf_endian.h"

Go to the source code of this file.

Data Structures

struct  U_BRUSH
 
struct  U_FONT
 
struct  U_PLTNTRY
 
struct  U_PALETTE
 
struct  U_PEN
 
struct  U_RECT16
 Coordinates of the upper left, lower right corner. Note that the coordinate system is 0,0 in the upper left corner of the screen an N,M in the lower right corner. Microsoft name: RECT Object COLLIDES with EMF Rect Object. More...
 
struct  U_REGION
 
struct  U_BITMAP16
 
struct  U_BITMAPCOREHEADER
 
struct  U_WLOGBRUSH
 
struct  U_POLYPOLYGON
 
struct  U_SCAN
 
struct  U_METARECORD
 
struct  U_WMRPLACEABLE
 
struct  U_WMRHEADER
 
struct  U_WMREOF
 
struct  U_WMRSETBKCOLOR
 
struct  U_WMRSETBKMODE
 
struct  U_WMRSETMAPMODE
 
struct  U_WMRSETTEXTJUSTIFICATION
 
struct  U_WMRSETWINDOWORG
 
struct  U_WMRSCALEWINDOWEXT
 
struct  U_WMREXCLUDECLIPRECT
 
struct  U_WMRARC
 
struct  U_WMRELLIPSE
 
struct  U_WMRFLOODFILL
 
struct  U_WMRPIE
 
struct  U_WMRROUNDRECT
 
struct  U_WMRPATBLT
 
struct  U_WMRSETPIXEL
 
struct  U_WMRTEXTOUT
 
struct  U_WMRBITBLT_NOPX
 
struct  U_WMRBITBLT_PX
 
struct  U_WMRSTRETCHBLT_NOPX
 
struct  U_WMRSTRETCHBLT_PX
 
struct  U_WMRPOLYGON
 
struct  U_WMRESCAPE
 
struct  U_WMRRESTOREDC
 
struct  U_WMRFILLREGION
 
struct  U_WMRFRAMEREGION
 
struct  U_WMRINVERTREGION
 
struct  U_WMRDRAWTEXT
 
struct  U_WMRSETMAPPERFLAGS
 
struct  U_WMREXTTEXTOUT
 
struct  U_WMRSETDIBTODEV
 
struct  U_WMRANIMATEPALETTE
 
struct  U_WMRPOLYPOLYGON
 
struct  U_WMRDIBBITBLT_NOPX
 
struct  U_WMRDIBBITBLT_PX
 
struct  U_WMRDIBSTRETCHBLT_NOPX
 
struct  U_WMRDIBSTRETCHBLT_PX
 
struct  U_WMRDIBCREATEPATTERNBRUSH
 
struct  U_WMRSTRETCHDIB
 
struct  U_WMRCREATEPATTERNBRUSH
 
struct  U_WMRCREATEPENINDIRECT
 
struct  U_WMRCREATEFONTINDIRECT
 
struct  U_WMRCREATEBRUSHINDIRECT
 
struct  U_WMRCREATEREGION
 
struct  WMFTRACK
 
struct  WMFHANDLES
 

Macros

#define U_WMR_MIN   0
 Minimum U_WMR_ value.
 
#define U_WMR_MAX   255
 Maximum U_WMR_ value.
 
#define U_WMR_MASK   0xFF
 Mask for enumerator (lower) byte.
 
#define U_WMR_INVALID   0xFFFFFFFF
 Indicates "Not a valid U_WMR_* value".
 
#define BI_BITCOUNT_0   U_BCBM_EXPLICIT
 Derived from JPG or PNG compressed image or ?
 
#define BI_BITCOUNT_1   U_BCBM_MONOCHROME
 2 colors. bmiColors array has two entries
 
#define BI_BITCOUNT_2   U_BCBM_COLOR4
 2^4 colors. bmiColors array has 16 entries
 
#define BI_BITCOUNT_3   U_BCBM_COLOR8
 2^8 colors. bmiColors array has 256 entries
 
#define BI_BITCOUNT_4   U_BCBM_COLOR16
 2^16 colors. bmiColors is not used. Pixels are 5 bits B,G,R with 1 unused bit
 
#define BI_BITCOUNT_5   U_BCBM_COLOR24
 2^24 colors. bmiColors is not used. Pixels are U_RGBTRIPLE.
 
#define BI_BITCOUNT_6   U_BCBM_COLOR32
 2^32 colors. bmiColors is not used. Pixels are U_RGBQUAD.
 
#define U_DIB_PAL_INDICES   2
 No color table, pixels are logical palette indices.
 
#define U_BI_CMYK   0x000B
 CMYK uncompressed.
 
#define U_BI_CMYKRLE8   0x000C
 CMYK RLE8 compression.
 
#define U_BI_CMYKRLE4   = 0x000D
 CMYK RLE4 compression.
 
#define U_MFE_NEWFRAME   0x0001
 NEWFRAME escape type.
 
#define U_MFE_ABORTDOC   0x0002
 ABORTDOC escape type.
 
#define U_MFE_NEXTBAND   0x0003
 NEXTBAND escape type.
 
#define U_MFE_SETCOLORTABLE   0x0004
 SETCOLORTABLE escape type.
 
#define U_MFE_GETCOLORTABLE   0x0005
 GETCOLORTABLE escape type.
 
#define U_MFE_FLUSHOUT   0x0006
 FLUSHOUT escape type.
 
#define U_MFE_DRAFTMODE   0x0007
 DRAFTMODE escape type.
 
#define U_MFE_QUERYESCSUPPORT   0x0008
 QUERYESCSUPPORT escape type.
 
#define U_MFE_SETABORTPROC   0x0009
 SETABORTPROC escape type.
 
#define U_MFE_STARTDOC   0x000A
 STARTDOC escape type.
 
#define U_MFE_ENDDOC   0x000B
 ENDDOC escape type.
 
#define U_MFE_GETPHYSPAGESIZE   0x000C
 GETPHYSPAGESIZE escape type.
 
#define U_MFE_GETPRINTINGOFFSET   0x000D
 GETPRINTINGOFFSET escape type.
 
#define U_MFE_GETSCALINGFACTOR   0x000E
 GETSCALINGFACTOR escape type.
 
#define U_MFE_META_ESCAPE_ENHANCED_METAFILE   0x000F
 META_ESCAPE_ENHANCED_METAFILE escape type.
 
#define U_MFE_SETPENWIDTH   0x0010
 SETPENWIDTH escape type.
 
#define U_MFE_SETCOPYCOUNT   0x0011
 SETCOPYCOUNT escape type.
 
#define U_MFE_SETPAPERSOURCE   0x0012
 SETPAPERSOURCE escape type.
 
#define U_MFE_PASSTHROUGH   0x0013
 PASSTHROUGH escape type.
 
#define U_MFE_GETTECHNOLOGY   0x0014
 GETTECHNOLOGY escape type.
 
#define U_MFE_SETLINECAP   0x0015
 SETLINECAP escape type.
 
#define U_MFE_SETLINEJOIN   0x0016
 SETLINEJOIN escape type.
 
#define U_MFE_SETMITERLIMIT   0x0017
 SETMITERLIMIT escape type.
 
#define U_MFE_BANDINFO   0x0018
 BANDINFO escape type.
 
#define U_MFE_DRAWPATTERNRECT   0x0019
 DRAWPATTERNRECT escape type.
 
#define U_MFE_GETVECTORPENSIZE   0x001A
 GETVECTORPENSIZE escape type.
 
#define U_MFE_GETVECTORBRUSHSIZE   0x001B
 GETVECTORBRUSHSIZE escape type.
 
#define U_MFE_ENABLEDUPLEX   0x001C
 ENABLEDUPLEX escape type.
 
#define U_MFE_GETSETPAPERBINS   0x001D
 GETSETPAPERBINS escape type.
 
#define U_MFE_GETSETPRINTORIENT   0x001E
 GETSETPRINTORIENT escape type.
 
#define U_MFE_ENUMPAPERBINS   0x001F
 ENUMPAPERBINS escape type.
 
#define U_MFE_SETDIBSCALING   0x0020
 SETDIBSCALING escape type.
 
#define U_MFE_EPSPRINTING   0x0021
 EPSPRINTING escape type.
 
#define U_MFE_ENUMPAPERMETRICS   0x0022
 ENUMPAPERMETRICS escape type.
 
#define U_MFE_GETSETPAPERMETRICS   0x0023
 GETSETPAPERMETRICS escape type.
 
#define U_MFE_POSTSCRIPT_DATA   0x0025
 POSTSCRIPT_DATA escape type.
 
#define U_MFE_POSTSCRIPT_IGNORE   0x0026
 POSTSCRIPT_IGNORE escape type.
 
#define U_MFE_GETDEVICEUNITS   0x002A
 GETDEVICEUNITS escape type.
 
#define U_MFE_GETEXTENDEDTEXTMETRICS   0x0100
 GETEXTENDEDTEXTMETRICS escape type.
 
#define U_MFE_GETPAIRKERNTABLE   0x0102
 GETPAIRKERNTABLE escape type.
 
#define U_MFE_EXTTEXTOUT   0x0200
 EXTTEXTOUT escape type.
 
#define U_MFE_GETFACENAME   0x0201
 GETFACENAME escape type.
 
#define U_MFE_DOWNLOADFACE   0x0202
 DOWNLOADFACE escape type.
 
#define U_MFE_METAFILE_DRIVER   0x0801
 METAFILE_DRIVER escape type.
 
#define U_MFE_QUERYDIBSUPPORT   0x0C01
 QUERYDIBSUPPORT escape type.
 
#define U_MFE_BEGIN_PATH   0x1000
 BEGIN_PATH escape type.
 
#define U_MFE_CLIP_TO_PATH   0x1001
 CLIP_TO_PATH escape type.
 
#define U_MFE_END_PATH   0x1002
 END_PATH escape type.
 
#define U_MFE_OPEN_CHANNEL   0x100E
 OPEN_CHANNEL escape type.
 
#define U_MFE_DOWNLOADHEADER   0x100F
 DOWNLOADHEADER escape type.
 
#define U_MFE_CLOSE_CHANNEL   0x1010
 CLOSE_CHANNEL escape type.
 
#define U_MFE_POSTSCRIPT_PASSTHROUGH   0x1013
 POSTSCRIPT_PASSTHROUGH escape type.
 
#define U_MFE_ENCAPSULATED_POSTSCRIPT   0x1014
 ENCAPSULATED_POSTSCRIPT escape type.
 
#define U_MFE_POSTSCRIPT_IDENTIFY   0x1015
 POSTSCRIPT_IDENTIFY escape type.
 
#define U_MFE_POSTSCRIPT_INJECTION   0x1016
 POSTSCRIPT_INJECTION escape type.
 
#define U_MFE_CHECKJPEGFORMAT   0x1017
 CHECKJPEGFORMAT escape type.
 
#define U_MFE_CHECKPNGFORMAT   0x1018
 CHECKPNGFORMAT escape type.
 
#define U_MFE_GET_PS_FEATURESETTING   0x1019
 GET_PS_FEATURESETTING escape type.
 
#define U_MFE_MXDC_ESCAPE   0x101A
 MXDC_ESCAPE escape type.
 
#define U_MFE_SPCLPASSTHROUGH2   0x11D8
 SPCLPASSTHROUGH2 escape type.
 
#define U_SIZE_PAIRF   8
 
#define U_SIZE_COLORREF   4
 
#define U_SIZE_BRUSH   8
 
#define U_SIZE_FONT   19
 
#define U_SIZE_FONT_CORE   18
 
#define U_SIZE_PLTNTRY   4
 
#define U_SIZE_PALETTE   8
 
#define U_SIZE_PEN   10
 
#define U_SIZE_POINT16   4
 
#define U_SIZE_RECT16   8
 
#define U_SIZE_REGION   20
 
#define U_SIZE_BITMAP16   10
 
#define U_SIZE_BITMAPCOREHEADER   12
 
#define U_SIZE_BITMAPINFOHEADER   40
 
#define U_SIZE_BITMAPV4HEADER   108
 
#define U_SIZE_BITMAPV5HEADER   124
 
#define U_SIZE_WLOGBRUSH   8
 
#define U_SIZE_POLYPOLYGON   4
 
#define U_SIZE_SCAN   8
 
#define U_SIZE_METARECORD   6
 
#define U_SIZE_WMRPLACEABLE   22
 
#define U_SIZE_WMRHEADER   18
 
#define U_SIZE_WMREOF   6
 
#define U_SIZE_WMRSETRELABS   6
 
#define U_SIZE_WMRSAVEDC   6
 
#define U_SIZE_WMRRESTOREDC   8
 
#define U_SIZE_WMRREALIZEPALETTE   6
 
#define U_SIZE_WMRSETBKCOLOR   10
 
#define U_SIZE_WMRSETTEXTCOLOR   10
 
#define U_SIZE_WMRSETBKMODE   8
 
#define U_SIZE_WMRSETROP2   8
 
#define U_SIZE_WMRSETPOLYFILLMODE   8
 
#define U_SIZE_WMRSETSTRETCHBLTMODE   8
 
#define U_SIZE_WMRSETTEXTALIGN   8
 
#define U_SIZE_WMRSETMAPMODE   8
 
#define U_SIZE_WMRSETTEXTCHAREXTRA   8
 
#define U_SIZE_WMRSETTEXTJUSTIFICATION   10
 
#define U_SIZE_WMRSETWINDOWORG   10
 
#define U_SIZE_WMRSETWINDOWEXT   10
 
#define U_SIZE_WMRSETVIEWPORTORG   10
 
#define U_SIZE_WMRSETVIEWPORTEXT   10
 
#define U_SIZE_WMROFFSETWINDOWORG   10
 
#define U_SIZE_WMROFFSETVIEWPORTORG   10
 
#define U_SIZE_WMRLINETO   10
 
#define U_SIZE_WMRMOVETO   10
 
#define U_SIZE_WMROFFSETCLIPRGN   10
 
#define U_SIZE_WMRSCALEWINDOWEXT   14
 
#define U_SIZE_WMRSCALEVIEWPORTEXT   14
 
#define U_SIZE_WMREXCLUDECLIPRECT   14
 
#define U_SIZE_WMRINTERSECTCLIPRECT   14
 
#define U_SIZE_WMRARC   22
 
#define U_SIZE_WMRELLIPSE   14
 
#define U_SIZE_WMRRECTANGLE   14
 
#define U_SIZE_WMRFLOODFILL   16
 
#define U_SIZE_WMREXTFLOODFILL   16
 
#define U_SIZE_WMRSETPIXEL   14
 
#define U_SIZE_WMRPIE   22
 
#define U_SIZE_WMRCHORD   22
 
#define U_SIZE_WMRROUNDRECT   18
 
#define U_SIZE_WMRPATBLT   18
 
#define U_SIZE_WMRTEXTOUT   8
 
#define U_SIZE_WMRBITBLT_NOPX   24
 
#define U_SIZE_WMRBITBLT_PX   22
 
#define U_SIZE_WMRSTRETCHBLT_NOPX   28
 
#define U_SIZE_WMRSTRETCHBLT_PX   26
 
#define U_SIZE_WMRPOLYGON   10
 
#define U_SIZE_WMRPOLYLINE   10
 
#define U_SIZE_WMRESCAPE   10
 
#define U_SIZE_WMRFILLREGION   10
 
#define U_SIZE_WMRFRAMEREGION   14
 
#define U_SIZE_WMRINVERTREGION   8
 
#define U_SIZE_WMRPAINTREGION   8
 
#define U_SIZE_WMRSELECTCLIPREGION   8
 
#define U_SIZE_WMRSELECTOBJECT   8
 
#define U_SIZE_WMRSELECTPALETTE   8
 
#define U_SIZE_WMRRESIZEPALETTE   8
 
#define U_SIZE_WMRDELETEOBJECT   8
 
#define U_SIZE_WMRDRAWTEXT   6
 
#define U_SIZE_WMRCREATEBITMAPINDIRECT   6
 
#define U_SIZE_WMRCREATEBITMAP   6
 
#define U_SIZE_WMRSETMAPPERFLAGS   10
 
#define U_SIZE_WMREXTTEXTOUT   14
 
#define U_SIZE_WMRSETDIBTODEV   22
 
#define U_SIZE_WMRANIMATEPALETTE   14
 
#define U_SIZE_WMRSETPALENTRIES   14
 
#define U_SIZE_WMRCREATEPALETTE   14
 
#define U_SIZE_WMRPOLYPOLYGON   10
 
#define U_SIZE_WMRDIBBITBLT_NOPX   24
 
#define U_SIZE_WMRDIBBITBLT_PX   22
 
#define U_SIZE_WMRDIBSTRETCHBLT_NOPX   28
 
#define U_SIZE_WMRDIBSTRETCHBLT_PX   26
 
#define U_SIZE_WMRDIBCREATEPATTERNBRUSH   10
 
#define U_SIZE_WMRSTRETCHDIB   28
 
#define U_SIZE_WMRCREATEPATTERNBRUSH   6
 
#define U_SIZE_WMRCREATEPENINDIRECT   16
 
#define U_SIZE_WMRCREATEFONTINDIRECT   26
 
#define U_SIZE_WMRCREATEBRUSHINDIRECT   14
 
#define U_SIZE_WMRCREATEREGION   26
 
#define U_TEST_NOPX2(A, B)   (A == (uint32_t) (B + 3))
 A is Size16_4 (extracted and aligned), B = xb true if no bitmap associated with the structure, used with some BLT records.
 
#define U_TEST_NOPXB(A, B)   (A/2 == (uint32_t) (B + 3))
 A is Size16_4 (extracted and aligned)*2, B = xb, true if no bitmap associated with the structure, used with some BLT records.
 
#define U_WMRTYPE(A)   (((U_METARECORD *)A)->iType)
 Get iType from U_WMR* record.
 
#define U_WMRXB(A)   (((U_METARECORD *)A)->xb)
 Get xb from U_WMR* record.
 
#define U_WMR_XB_FROM_TYPE(A)   ((uint8_t) (U_wmr_values(A)>>8))
 Get xb from type value.
 
#define U_U16(A)   (*(uint16_t *)&A)
 interpret a 16 bit type as uint16_t.
 
#define U_P16(A)   ( (uint16_t *)&A)
 pass any 16 bit type as a pointer to a uint16_t.
 
#define U_PP16(A)   ( (uint16_t *) A)
 pass any pointer to a 16 bit type as a pointer to a uint16_t.
 
#define U_RCL16_DEF   (U_RECT16){0,0,-1,-1}
 Use this when no bounds are needed.
 
#define U_LCS_sRGB   0x73524742
 ASCII for "sRGB". More...
 
#define U_LCS_WINDOWS_COLOR_SPACE   0x57696E20
 ASCII for "Win ".
 
#define U_MEMORYMETAFILE   0x0001
 memory metafile (never used by libUWMF) More...
 
#define U_DISKMETAFILE   0x0002
 disk metafile (always used by libUWMF)
 
#define U_METAVERSION100   0x0100
 DIBs not allowed. More...
 
#define U_METAVERSION300   0x0300
 DIBs allowed.
 
#define U_PC_RESERVED   0x01
 used for animation More...
 
#define U_PC_EXPLICIT   0x02
 low order word is palette index
 
#define U_PC_NOCOLLAPSE   0x04
 store as new color in palette, do not match to existing color
 
#define U_WPS_CAP_NOTSET   -2
 
#define U_WPS_CAP_FLAT   0
 
#define U_WPS_CAP_ROUND   1
 
#define U_WPS_CAP_SQUARE   2
 
#define U_WPS_JOIN_NOTSET   -2
 
#define U_WPS_JOIN_MITER   0
 
#define U_WPS_JOIN_ROUND   1
 
#define U_WPS_JOIN_BEVEL   2
 

Typedefs

typedef struct U_WMREOF U_WMRSETRELABS
 WMF manual 2.3.5.21.
 
typedef struct U_WMREOF U_WMRSAVEDC
 WMF manual 2.3.5.11.
 
typedef struct U_WMREOF U_WMRREALIZEPALETTE
 WMF manual 2.3.5.8.
 
typedef struct U_WMRSETBKCOLOR U_WMRSETTEXTCOLOR
 WMF manual 2.3.5.26.
 
typedef struct U_WMRSETBKMODE U_WMRSETPOLYFILLMODE
 WMF manual 2.3.5.20 Mode = PolyFillMode Enumeration.
 
typedef struct U_WMRSETBKMODE U_WMRSETROP2
 WMF manual 2.3.5.22 Binary Raster Operation Enumeration.
 
typedef struct U_WMRSETBKMODE U_WMRSETSTRETCHBLTMODE
 WMF manual 2.3.5.23 Mode = StretchMode Enumeration.
 
typedef struct U_WMRSETBKMODE U_WMRSETTEXTALIGN
 WMF manual 2.3.5.24 Mode = TextAlignment Enumeration.
 
typedef struct U_WMRSETMAPMODE U_WMRSETTEXTCHAREXTRA
 WMF manual 2.3.5.25, Mode = Extra space in logical units to add to each character.
 
typedef struct U_WMRSETWINDOWORG U_WMRSETWINDOWEXT
 WMF manual 2.3.5.30, Window X,Y extent.
 
typedef struct U_WMRSETWINDOWORG U_WMRSETVIEWPORTORG
 WMF manual 2.3.5.29, Viewport X,Y origin.
 
typedef struct U_WMRSETWINDOWORG U_WMRSETVIEWPORTEXT
 WMF manual 2.3.5.28, Viewport X,Y extent.
 
typedef struct U_WMRSETWINDOWORG U_WMROFFSETWINDOWORG
 WMF manual 2.3.5.7, Window X,Y offset in device units.
 
typedef struct U_WMRSETWINDOWORG U_WMROFFSETVIEWPORTORG
 WMF manual 2.3.5.6, Viewport X,Y offset in device units.
 
typedef struct U_WMRSETWINDOWORG U_WMRLINETO
 WMF manual 2.3.3.10, Endpoint X,Y in logical units.
 
typedef struct U_WMRSETWINDOWORG U_WMRMOVETO
 WMF manual 2.3.3.4, Destination X,Y in logical units.
 
typedef struct U_WMRSETWINDOWORG U_WMROFFSETCLIPRGN
 WMF manual 2.3.5.5, Y offset in logical units.
 
typedef struct U_WMRSCALEWINDOWEXT U_WMRSCALEVIEWPORTEXT
 WMF manual 2.3.5.12.
 
typedef struct U_WMREXCLUDECLIPRECT U_WMRINTERSECTCLIPRECT
 WMF manual 2.3.5.3.
 
typedef struct U_WMRELLIPSE U_WMRRECTANGLE
 WMF manual 2.3.3.17.
 
typedef struct U_WMRFLOODFILL U_WMREXTFLOODFILL
 WMF manual 2.3.3.7.
 
typedef struct U_WMRPIE U_WMRCHORD
 WMF manual 2.3.3.2.
 
typedef struct U_WMRPOLYGON U_WMRPOLYLINE
 WMF manual 2.3.3.14.
 
typedef struct U_WMRINVERTREGION U_WMRPAINTREGION
 WMF manual 2.3.3.11, paint region.
 
typedef struct U_WMRINVERTREGION U_WMRSELECTCLIPREGION
 WMF manual 2.3.4.9, select as clip region.
 
typedef struct U_WMRINVERTREGION U_WMRSELECTOBJECT
 WMF manual 2.3.4.10, select object.
 
typedef struct U_WMRINVERTREGION U_WMRSELECTPALETTE
 WMF manual 2.3.4.11, select palette object.
 
typedef struct U_WMRINVERTREGION U_WMRRESIZEPALETTE
 WMF manual 2.3.5.9, resize the system palette to "index".
 
typedef struct U_WMRINVERTREGION U_WMRDELETEOBJECT
 WMF manual 2.3.4.7, delete object.
 
typedef struct U_WMRDRAWTEXT U_WMRCREATEBITMAPINDIRECT
 in GDI and Wine, not documented in WMF manual.
 
typedef struct U_WMRDRAWTEXT U_WMRCREATEBITMAP
 in GDI and Wine, not documented in WMF manual.
 
typedef struct U_WMRANIMATEPALETTE U_WMRSETPALENTRIES
 WMF manual 2.3.5.19.
 
typedef struct U_WMRANIMATEPALETTE U_WMRCREATEPALETTE
 WMF manual 2.3.4.3.
 

Enumerations

enum  U_WMR_TYPES {
  U_WMR_EOF, U_WMR_SETBKCOLOR, U_WMR_SETBKMODE, U_WMR_SETMAPMODE,
  U_WMR_SETROP2, U_WMR_SETRELABS, U_WMR_SETPOLYFILLMODE, U_WMR_SETSTRETCHBLTMODE,
  U_WMR_SETTEXTCHAREXTRA, U_WMR_SETTEXTCOLOR, U_WMR_SETTEXTJUSTIFICATION, U_WMR_SETWINDOWORG,
  U_WMR_SETWINDOWEXT, U_WMR_SETVIEWPORTORG, U_WMR_SETVIEWPORTEXT, U_WMR_OFFSETWINDOWORG,
  U_WMR_SCALEWINDOWEXT, U_WMR_OFFSETVIEWPORTORG, U_WMR_SCALEVIEWPORTEXT, U_WMR_LINETO,
  U_WMR_MOVETO, U_WMR_EXCLUDECLIPRECT, U_WMR_INTERSECTCLIPRECT, U_WMR_ARC,
  U_WMR_ELLIPSE, U_WMR_FLOODFILL, U_WMR_PIE, U_WMR_RECTANGLE,
  U_WMR_ROUNDRECT, U_WMR_PATBLT, U_WMR_SAVEDC, U_WMR_SETPIXEL,
  U_WMR_OFFSETCLIPRGN, U_WMR_TEXTOUT, U_WMR_BITBLT, U_WMR_STRETCHBLT,
  U_WMR_POLYGON, U_WMR_POLYLINE, U_WMR_ESCAPE, U_WMR_RESTOREDC,
  U_WMR_FILLREGION, U_WMR_FRAMEREGION, U_WMR_INVERTREGION, U_WMR_PAINTREGION,
  U_WMR_SELECTCLIPREGION, U_WMR_SELECTOBJECT, U_WMR_SETTEXTALIGN, U_WMR_DRAWTEXT,
  U_WMR_CHORD, U_WMR_SETMAPPERFLAGS, U_WMR_EXTTEXTOUT, U_WMR_SETDIBTODEV,
  U_WMR_SELECTPALETTE, U_WMR_REALIZEPALETTE, U_WMR_ANIMATEPALETTE, U_WMR_SETPALENTRIES,
  U_WMR_POLYPOLYGON, U_WMR_RESIZEPALETTE, U_WMR_3A, U_WMR_3B,
  U_WMR_3C, U_WMR_3D, U_WMR_3E, U_WMR_3F,
  U_WMR_DIBBITBLT, U_WMR_DIBSTRETCHBLT, U_WMR_DIBCREATEPATTERNBRUSH, U_WMR_STRETCHDIB,
  U_WMR_44, U_WMR_45, U_WMR_46, U_WMR_47,
  U_WMR_EXTFLOODFILL, U_WMR_49, U_WMR_4A, U_WMR_4B,
  U_WMR_4C, U_WMR_4D, U_WMR_4E, U_WMR_4F,
  U_WMR_50, U_WMR_51, U_WMR_52, U_WMR_53,
  U_WMR_54, U_WMR_55, U_WMR_56, U_WMR_57,
  U_WMR_58, U_WMR_59, U_WMR_5A, U_WMR_5B,
  U_WMR_5C, U_WMR_5D, U_WMR_5E, U_WMR_5F,
  U_WMR_60, U_WMR_61, U_WMR_62, U_WMR_63,
  U_WMR_64, U_WMR_65, U_WMR_66, U_WMR_67,
  U_WMR_68, U_WMR_69, U_WMR_6A, U_WMR_6B,
  U_WMR_6C, U_WMR_6D, U_WMR_6E, U_WMR_6F,
  U_WMR_70, U_WMR_71, U_WMR_72, U_WMR_73,
  U_WMR_74, U_WMR_75, U_WMR_76, U_WMR_77,
  U_WMR_78, U_WMR_79, U_WMR_7A, U_WMR_7B,
  U_WMR_7C, U_WMR_7D, U_WMR_7E, U_WMR_7F,
  U_WMR_80, U_WMR_81, U_WMR_82, U_WMR_83,
  U_WMR_84, U_WMR_85, U_WMR_86, U_WMR_87,
  U_WMR_88, U_WMR_89, U_WMR_8A, U_WMR_8B,
  U_WMR_8C, U_WMR_8D, U_WMR_8E, U_WMR_8F,
  U_WMR_90, U_WMR_91, U_WMR_92, U_WMR_93,
  U_WMR_94, U_WMR_95, U_WMR_96, U_WMR_97,
  U_WMR_98, U_WMR_99, U_WMR_9A, U_WMR_9B,
  U_WMR_9C, U_WMR_9D, U_WMR_9E, U_WMR_9F,
  U_WMR_A0, U_WMR_A1, U_WMR_A2, U_WMR_A3,
  U_WMR_A4, U_WMR_A5, U_WMR_A6, U_WMR_A7,
  U_WMR_A8, U_WMR_A9, U_WMR_AA, U_WMR_AB,
  U_WMR_AC, U_WMR_AD, U_WMR_AE, U_WMR_AF,
  U_WMR_B0, U_WMR_B1, U_WMR_B2, U_WMR_B3,
  U_WMR_B4, U_WMR_B5, U_WMR_B6, U_WMR_B7,
  U_WMR_B8, U_WMR_B9, U_WMR_BA, U_WMR_BB,
  U_WMR_BC, U_WMR_BD, U_WMR_BE, U_WMR_BF,
  U_WMR_C0, U_WMR_C1, U_WMR_C2, U_WMR_C3,
  U_WMR_C4, U_WMR_C5, U_WMR_C6, U_WMR_C7,
  U_WMR_C8, U_WMR_C9, U_WMR_CA, U_WMR_CB,
  U_WMR_CC, U_WMR_CD, U_WMR_CE, U_WMR_CF,
  U_WMR_D0, U_WMR_D1, U_WMR_D2, U_WMR_D3,
  U_WMR_D4, U_WMR_D5, U_WMR_D6, U_WMR_D7,
  U_WMR_D8, U_WMR_D9, U_WMR_DA, U_WMR_DB,
  U_WMR_DC, U_WMR_DD, U_WMR_DE, U_WMR_DF,
  U_WMR_E0, U_WMR_E1, U_WMR_E2, U_WMR_E3,
  U_WMR_E4, U_WMR_E5, U_WMR_E6, U_WMR_E7,
  U_WMR_E8, U_WMR_E9, U_WMR_EA, U_WMR_EB,
  U_WMR_EC, U_WMR_ED, U_WMR_EE, U_WMR_EF,
  U_WMR_DELETEOBJECT, U_WMR_F1, U_WMR_F2, U_WMR_F3,
  U_WMR_F4, U_WMR_F5, U_WMR_F6, U_WMR_CREATEPALETTE,
  U_WMR_F8, U_WMR_CREATEPATTERNBRUSH, U_WMR_CREATEPENINDIRECT, U_WMR_CREATEFONTINDIRECT,
  U_WMR_CREATEBRUSHINDIRECT, U_WMR_CREATEBITMAPINDIRECT, U_WMR_CREATEBITMAP, U_WMR_CREATEREGION
}
 WMR Record types. More...
 

Detailed Description

Structures, definitions, and function prototypes for WMF files.

WMF file Record structure information has been derived from Mingw and Wine header files, and from Microsoft's WMF Information pdf, release date July 5,2012, link from here:

http://msdn2.microsoft.com/en-us/library/cc250370.aspx

If the direct link fails the document may be found by searching for: "[MS-WMF]: Windows Metafile Format"

                                IMPORTANT!!!  **********************************************

WMF is a 16 bit file type that has some 32 bit integers embedded in it. In a few cases these 32 bit fields are not aligned in the structures defined in uwmf.h, but in most cases they are. So when creating the individual WMF records the functions in uwmf.c can usually use a regular assignment operation for the 32 bit fields. However, once the records are part of a WMF file in memory there is no guaranty that any 32 bit type will be correctly aligned. Similarly, many WMF structures contain embedded other structures which would "naturally" be passed by pointer, but since their alignment may not be what malloc() would have created for that type, the outcome of that operation is not defined by the C standard. (Per Eric Sosman, section 6.3.2.3p7 of the standard.)

For this reason, the _print, _swap and any read operations must pass structures with unknown alignment as a (char *), and pull out the data using memcpy() or some equivalent that will not segfault when it tries to read a 32 bit value that is not aligned on a 4 byte boundary. Failure to do so will result in nonportable code. You have been warned!

Problem areas: The Size16_4 field of all WMF records may NOT be assumed to 4 byte aligned. DIB's U_BITMAPINFOHEADER 32 bit fields may not be aligned. IMPORTANT!!! **********************************************

Macro Definition Documentation

#define U_LCS_sRGB   0x73524742

ASCII for "sRGB".

LogicalColorSpace Enumeration WMF manual 2.1.1.14 Not used presently, applies in BitmapV4Header

#define U_MEMORYMETAFILE   0x0001

memory metafile (never used by libUWMF)

MetafileType Enumeration WMF manual 2.1.1.18

#define U_METAVERSION100   0x0100

DIBs not allowed.

MetafileVersion Enumeration WMF manual 2.1.1.19

#define U_PC_RESERVED   0x01

used for animation

PaletteEntryFlag Enumeration WMF manual 2.1.1.22

#define U_WPS_CAP_NOTSET   -2

PenStyle Enumeration WMF manual 2.1.1.23 Same as "EMF PenStyle Enumeration" in uemf.h, EXCEPT no values >0xFFFF are used, in particular there is no U_PS_GEOMETRIC (ie, all are U_PS_COSMETIC). Apparently because there is no U_PS_GEOMETRIC, U_PS_JOIN* and U_PS_ENDCAP* are also ignored by XP SP3 Preview (which defaults to a rounded cap) and PowerPoint 2003 (which defaults to square cap). The behavior was the same when escape records for JOIN and ENDCAP are used. Bottom line, WMF line formatting seems to be very hit and miss from application to application. PostScriptCap Enumeration WMF manual 2.1.1.26 These are used in Escape Cap

#define U_WPS_JOIN_NOTSET   -2
 PostScrioptJoin Enumeration            WMF manual 2.1.1.29

These are used in Escape Cap

Enumeration Type Documentation

WMR Record types.

WMF manual 2.1.1.1

Enumerator
U_WMR_EOF 

0x0000 U_WMREOF record

U_WMR_SETBKCOLOR 

0x0201 U_WMRSETBKCOLOR record

U_WMR_SETBKMODE 

0x0102 U_WMRSETBKMODE record

U_WMR_SETMAPMODE 

0x0103 U_WMRSETMAPMODE record

U_WMR_SETROP2 

0x0104 U_WMRSETROP2 record

U_WMR_SETRELABS 

0x0105 U_WMRSETRELABS record

U_WMR_SETPOLYFILLMODE 

0x0106 U_WMRSETPOLYFILLMODE record

U_WMR_SETSTRETCHBLTMODE 

0x0107 U_WMRSETSTRETCHBLTMODE record

U_WMR_SETTEXTCHAREXTRA 

0x0108 U_WMRSETTEXTCHAREXTRA record

U_WMR_SETTEXTCOLOR 

0x0209 U_WMRSETTEXTCOLOR record

U_WMR_SETTEXTJUSTIFICATION 

0x020A U_WMRSETTEXTJUSTIFICATION record

U_WMR_SETWINDOWORG 

0x020B U_WMRSETWINDOWORG record

U_WMR_SETWINDOWEXT 

0x020C U_WMRSETWINDOWEXT record

U_WMR_SETVIEWPORTORG 

0x020D U_WMRSETVIEWPORTORG record

U_WMR_SETVIEWPORTEXT 

0x020E U_WMRSETVIEWPORTEXT record

U_WMR_OFFSETWINDOWORG 

0x020F U_WMROFFSETWINDOWORG record

U_WMR_SCALEWINDOWEXT 

0x0410 U_WMRSCALEWINDOWEXT record

U_WMR_OFFSETVIEWPORTORG 

0x0211 U_WMROFFSETVIEWPORTORG record

U_WMR_SCALEVIEWPORTEXT 

0x0412 U_WMRSCALEVIEWPORTEXT record

U_WMR_LINETO 

0x0213 U_WMRLINETO record

U_WMR_MOVETO 

0x0214 U_WMRMOVETO record

U_WMR_EXCLUDECLIPRECT 

0x0415 U_WMREXCLUDECLIPRECT record

U_WMR_INTERSECTCLIPRECT 

0x0416 U_WMRINTERSECTCLIPRECT record

U_WMR_ARC 

0x0817 U_WMRARC record

U_WMR_ELLIPSE 

0x0418 U_WMRELLIPSE record

U_WMR_FLOODFILL 

0x0419 U_WMRFLOODFILL record

U_WMR_PIE 

0x081A U_WMRPIE record

U_WMR_RECTANGLE 

0x041B U_WMRRECTANGLE record

U_WMR_ROUNDRECT 

0x061C U_WMRROUNDRECT record

U_WMR_PATBLT 

0x061D U_WMRPATBLT record

U_WMR_SAVEDC 

0x001E U_WMRSAVEDC record

U_WMR_SETPIXEL 

0x041F U_WMRSETPIXEL record

U_WMR_OFFSETCLIPRGN 

0x0220 U_WMROFFSETCLIPRGN record

U_WMR_TEXTOUT 

0x0521 U_WMRTEXTOUT record

U_WMR_BITBLT 

0x0922 U_WMRBITBLT record

U_WMR_STRETCHBLT 

0x0B23 U_WMRSTRETCHBLT record

U_WMR_POLYGON 

0x0324 U_WMRPOLYGON record

U_WMR_POLYLINE 

0x0325 U_WMRPOLYLINE record

U_WMR_ESCAPE 

0x0626 U_WMRESCAPE record

U_WMR_RESTOREDC 

0x0127 U_WMRRESTOREDC record

U_WMR_FILLREGION 

0x0228 U_WMRFILLREGION record

U_WMR_FRAMEREGION 

0x0429 U_WMRFRAMEREGION record

U_WMR_INVERTREGION 

0x012A U_WMRINVERTREGION record

U_WMR_PAINTREGION 

0x012B U_WMRPAINTREGION record

U_WMR_SELECTCLIPREGION 

0x012C U_WMRSELECTCLIPREGION record

U_WMR_SELECTOBJECT 

0x012D U_WMRSELECTOBJECT record

U_WMR_SETTEXTALIGN 

0x012E U_WMRSETTEXTALIGN record

U_WMR_DRAWTEXT 

0x062F U_WMRDRAWTEXT record

U_WMR_CHORD 

0x0830 U_WMRCHORD record

U_WMR_SETMAPPERFLAGS 

0x0231 U_WMRSETMAPPERFLAGS record

U_WMR_EXTTEXTOUT 

0x0A32 U_WMREXTTEXTOUT record

U_WMR_SETDIBTODEV 

0x0D33 U_WMRSETDIBTODEV record

U_WMR_SELECTPALETTE 

0x0234 U_WMRSELECTPALETTE record

U_WMR_REALIZEPALETTE 

0x0035 U_WMRREALIZEPALETTE record

U_WMR_ANIMATEPALETTE 

0x0436 U_WMRANIMATEPALETTE record

U_WMR_SETPALENTRIES 

0x0037 U_WMRSETPALENTRIES record

U_WMR_POLYPOLYGON 

0x0538 U_WMRPOLYPOLYGON record

U_WMR_RESIZEPALETTE 

0x0139 U_WMRRESIZEPALETTE record

U_WMR_3A 

0x003A U_WMR3A record

U_WMR_3B 

0x003B U_WMR3B record

U_WMR_3C 

0x003C U_WMR3C record

U_WMR_3D 

0x003D U_WMR3D record

U_WMR_3E 

0x003E U_WMR3E record

U_WMR_3F 

0x003F U_WMR3F record

U_WMR_DIBBITBLT 

0x0940 U_WMRDIBBITBLT record

U_WMR_DIBSTRETCHBLT 

0x0B41 U_WMRDIBSTRETCHBLT record

U_WMR_DIBCREATEPATTERNBRUSH 

0x0142 U_WMRDIBCREATEPATTERNBRUSH record

U_WMR_STRETCHDIB 

0x0F43 U_WMRSTRETCHDIB record

U_WMR_44 

0x0044 U_WMR44 record

U_WMR_45 

0x0045 U_WMR45 record

U_WMR_46 

0x0046 U_WMR46 record

U_WMR_47 

0x0047 U_WMR47 record

U_WMR_EXTFLOODFILL 

0x0548 U_WMREXTFLOODFILL record

U_WMR_49 

0x0049 U_WMR49 record

U_WMR_4A 

0x004A U_WMR4A record

U_WMR_4B 

0x004B U_WMR4B record

U_WMR_4C 

0x014C U_WMR4C record

U_WMR_4D 

0x014D U_WMR4D record

U_WMR_4E 

0x004E U_WMR4E record

U_WMR_4F 

0x004F U_WMR4F record

U_WMR_50 

0x0050 U_WMR50 record

U_WMR_51 

0x0051 U_WMR51 record

U_WMR_52 

0x0052 U_WMR52 record

U_WMR_53 

0x0053 U_WMR53 record

U_WMR_54 

0x0054 U_WMR54 record

U_WMR_55 

0x0055 U_WMR55 record

U_WMR_56 

0x0056 U_WMR56 record

U_WMR_57 

0x0057 U_WMR57 record

U_WMR_58 

0x0058 U_WMR58 record

U_WMR_59 

0x0059 U_WMR59 record

U_WMR_5A 

0x005A U_WMR5A record

U_WMR_5B 

0x005B U_WMR5B record

U_WMR_5C 

0x005C U_WMR5C record

U_WMR_5D 

0x005D U_WMR5D record

U_WMR_5E 

0x005E U_WMR5E record

U_WMR_5F 

0x005F U_WMR5F record

U_WMR_60 

0x0060 U_WMR60 record

U_WMR_61 

0x0061 U_WMR61 record

U_WMR_62 

0x0062 U_WMR62 record

U_WMR_63 

0x0063 U_WMR63 record

U_WMR_64 

0x0064 U_WMR64 record

U_WMR_65 

0x0065 U_WMR65 record

U_WMR_66 

0x0066 U_WMR66 record

U_WMR_67 

0x0067 U_WMR67 record

U_WMR_68 

0x0068 U_WMR68 record

U_WMR_69 

0x0069 U_WMR69 record

U_WMR_6A 

0x006A U_WMR6A record

U_WMR_6B 

0x006B U_WMR6B record

U_WMR_6C 

0x006C U_WMR6C record

U_WMR_6D 

0x006D U_WMR6D record

U_WMR_6E 

0x006E U_WMR6E record

U_WMR_6F 

0x006F U_WMR6F record

U_WMR_70 

0x0070 U_WMR70 record

U_WMR_71 

0x0071 U_WMR71 record

U_WMR_72 

0x0072 U_WMR72 record

U_WMR_73 

0x0073 U_WMR73 record

U_WMR_74 

0x0074 U_WMR74 record

U_WMR_75 

0x0075 U_WMR75 record

U_WMR_76 

0x0076 U_WMR76 record

U_WMR_77 

0x0077 U_WMR77 record

U_WMR_78 

0x0078 U_WMR78 record

U_WMR_79 

0x0079 U_WMR79 record

U_WMR_7A 

0x007A U_WMR7A record

U_WMR_7B 

0x007B U_WMR7B record

U_WMR_7C 

0x007C U_WMR7C record

U_WMR_7D 

0x007D U_WMR7D record

U_WMR_7E 

0x007E U_WMR7E record

U_WMR_7F 

0x007F U_WMR7F record

U_WMR_80 

0x0080 U_WMR80 record

U_WMR_81 

0x0081 U_WMR81 record

U_WMR_82 

0x0082 U_WMR82 record

U_WMR_83 

0x0083 U_WMR83 record

U_WMR_84 

0x0084 U_WMR84 record

U_WMR_85 

0x0085 U_WMR85 record

U_WMR_86 

0x0086 U_WMR86 record

U_WMR_87 

0x0087 U_WMR87 record

U_WMR_88 

0x0088 U_WMR88 record

U_WMR_89 

0x0089 U_WMR89 record

U_WMR_8A 

0x008A U_WMR8A record

U_WMR_8B 

0x008B U_WMR8B record

U_WMR_8C 

0x008C U_WMR8C record

U_WMR_8D 

0x008D U_WMR8D record

U_WMR_8E 

0x008E U_WMR8E record

U_WMR_8F 

0x008F U_WMR8F record

U_WMR_90 

0x0090 U_WMR90 record

U_WMR_91 

0x0091 U_WMR91 record

U_WMR_92 

0x0092 U_WMR92 record

U_WMR_93 

0x0093 U_WMR93 record

U_WMR_94 

0x0094 U_WMR94 record

U_WMR_95 

0x0095 U_WMR95 record

U_WMR_96 

0x0096 U_WMR96 record

U_WMR_97 

0x0097 U_WMR97 record

U_WMR_98 

0x0098 U_WMR98 record

U_WMR_99 

0x0099 U_WMR99 record

U_WMR_9A 

0x009A U_WMR9A record

U_WMR_9B 

0x009B U_WMR9B record

U_WMR_9C 

0x009C U_WMR9C record

U_WMR_9D 

0x009D U_WMR9D record

U_WMR_9E 

0x009E U_WMR9E record

U_WMR_9F 

0x009F U_WMR9F record

U_WMR_A0 

0x00A0 U_WMRA0 record

U_WMR_A1 

0x00A1 U_WMRA1 record

U_WMR_A2 

0x00A2 U_WMRA2 record

U_WMR_A3 

0x00A3 U_WMRA3 record

U_WMR_A4 

0x00A4 U_WMRA4 record

U_WMR_A5 

0x00A5 U_WMRA5 record

U_WMR_A6 

0x00A6 U_WMRA6 record

U_WMR_A7 

0x00A7 U_WMRA7 record

U_WMR_A8 

0x00A8 U_WMRA8 record

U_WMR_A9 

0x00A9 U_WMRA9 record

U_WMR_AA 

0x00AA U_WMRAA record

U_WMR_AB 

0x00AB U_WMRAB record

U_WMR_AC 

0x00AC U_WMRAC record

U_WMR_AD 

0x00AD U_WMRAD record

U_WMR_AE 

0x00AE U_WMRAE record

U_WMR_AF 

0x00AF U_WMRAF record

U_WMR_B0 

0x00B0 U_WMRB0 record

U_WMR_B1 

0x00B1 U_WMRB1 record

U_WMR_B2 

0x00B2 U_WMRB2 record

U_WMR_B3 

0x00B3 U_WMRB3 record

U_WMR_B4 

0x00B4 U_WMRB4 record

U_WMR_B5 

0x00B5 U_WMRB5 record

U_WMR_B6 

0x00B6 U_WMRB6 record

U_WMR_B7 

0x00B7 U_WMRB7 record

U_WMR_B8 

0x00B8 U_WMRB8 record

U_WMR_B9 

0x00B9 U_WMRB9 record

U_WMR_BA 

0x00BA U_WMRBA record

U_WMR_BB 

0x00BB U_WMRBB record

U_WMR_BC 

0x00BC U_WMRBC record

U_WMR_BD 

0x00BD U_WMRBD record

U_WMR_BE 

0x00BE U_WMRBE record

U_WMR_BF 

0x00BF U_WMRBF record

U_WMR_C0 

0x00C0 U_WMRC0 record

U_WMR_C1 

0x00C1 U_WMRC1 record

U_WMR_C2 

0x00C2 U_WMRC2 record

U_WMR_C3 

0x00C3 U_WMRC3 record

U_WMR_C4 

0x00C4 U_WMRC4 record

U_WMR_C5 

0x00C5 U_WMRC5 record

U_WMR_C6 

0x00C6 U_WMRC6 record

U_WMR_C7 

0x00C7 U_WMRC7 record

U_WMR_C8 

0x00C8 U_WMRC8 record

U_WMR_C9 

0x00C9 U_WMRC9 record

U_WMR_CA 

0x00CA U_WMRCA record

U_WMR_CB 

0x00CB U_WMRCB record

U_WMR_CC 

0x00CC U_WMRCC record

U_WMR_CD 

0x00CD U_WMRCD record

U_WMR_CE 

0x00CE U_WMRCE record

U_WMR_CF 

0x00CF U_WMRCF record

U_WMR_D0 

0x00D0 U_WMRD0 record

U_WMR_D1 

0x00D1 U_WMRD1 record

U_WMR_D2 

0x00D2 U_WMRD2 record

U_WMR_D3 

0x00D3 U_WMRD3 record

U_WMR_D4 

0x00D4 U_WMRD4 record

U_WMR_D5 

0x00D5 U_WMRD5 record

U_WMR_D6 

0x00D6 U_WMRD6 record

U_WMR_D7 

0x00D7 U_WMRD7 record

U_WMR_D8 

0x00D8 U_WMRD8 record

U_WMR_D9 

0x00D9 U_WMRD9 record

U_WMR_DA 

0x00DA U_WMRDA record

U_WMR_DB 

0x00DB U_WMRDB record

U_WMR_DC 

0x00DC U_WMRDC record

U_WMR_DD 

0x00DD U_WMRDD record

U_WMR_DE 

0x00DE U_WMRDE record

U_WMR_DF 

0x00DF U_WMRDF record

U_WMR_E0 

0x00E0 U_WMRE0 record

U_WMR_E1 

0x00E1 U_WMRE1 record

U_WMR_E2 

0x00E2 U_WMRE2 record

U_WMR_E3 

0x00E3 U_WMRE3 record

U_WMR_E4 

0x00E4 U_WMRE4 record

U_WMR_E5 

0x00E5 U_WMRE5 record

U_WMR_E6 

0x00E6 U_WMRE6 record

U_WMR_E7 

0x00E7 U_WMRE7 record

U_WMR_E8 

0x00E8 U_WMRE8 record

U_WMR_E9 

0x00E9 U_WMRE9 record

U_WMR_EA 

0x00EA U_WMREA record

U_WMR_EB 

0x00EB U_WMREB record

U_WMR_EC 

0x00EC U_WMREC record

U_WMR_ED 

0x00ED U_WMRED record

U_WMR_EE 

0x00EE U_WMREE record

U_WMR_EF 

0x00EF U_WMREF record

U_WMR_DELETEOBJECT 

0x01F0 U_WMRDELETEOBJECT record

U_WMR_F1 

0x00F1 U_WMRF1 record

U_WMR_F2 

0x00F2 U_WMRF2 record

U_WMR_F3 

0x00F3 U_WMRF3 record

U_WMR_F4 

0x00F4 U_WMRF4 record

U_WMR_F5 

0x00F5 U_WMRF5 record

U_WMR_F6 

0x00F6 U_WMRF6 record

U_WMR_CREATEPALETTE 

0x00F7 U_WMRCREATEPALETTE record

U_WMR_F8 

0x00F8 U_WMRF8 record

U_WMR_CREATEPATTERNBRUSH 

0x01F9 U_WMRCREATEPATTERNBRUSH record

U_WMR_CREATEPENINDIRECT 

0x02FA U_WMRCREATEPENINDIRECT record

U_WMR_CREATEFONTINDIRECT 

0x02FB U_WMRCREATEFONTINDIRECT record

U_WMR_CREATEBRUSHINDIRECT 

0x02FC U_WMRCREATEBRUSHINDIRECT record

U_WMR_CREATEBITMAPINDIRECT 

0x02FD U_WMRCREATEBITMAPINDIRECT record

U_WMR_CREATEBITMAP 

0x06FE U_WMRCREATEBITMAP record

U_WMR_CREATEREGION 

0x06FF U_WMRCREATEREGION record