mirror of
				https://gitlab.com/freepascal.org/lazarus/lazarus.git
				synced 2025-10-31 16:41:48 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			564 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
			
		
		
	
	
			564 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
| { Declarations for Windows meta files
 | |
| 
 | |
|   Infos taken from
 | |
|   - http://msdn.microsoft.com/en-us/library/cc250370.aspx
 | |
|   - http://wvware.sourceforge.net/caolan/ora-wmf.html
 | |
|   - http://www.symantec.com/avcenter/reference/inside.the.windows.meta.file.format.pdf
 | |
| }
 | |
| 
 | |
| unit fpvWMF;
 | |
| 
 | |
| interface
 | |
| 
 | |
| type
 | |
|   TWMFHeader = packed record
 | |
|     FileType: Word;        // Type of metafile (0=memory, 1=disk)
 | |
|     HeaderSize: Word;      // Size of header in WORDS (always 9)
 | |
|     Version: Word;         // Version of Microsoft Windows used
 | |
|     FileSize: DWord;       // Total size of the metafile in WORDs
 | |
|     NumOfObjects: Word;    // Number of objects in the file
 | |
|     MaxRecordSize: DWord;  // The size of largest record in WORDs
 | |
|     NumOfParams: Word;     // Not Used (always 0)
 | |
|   end;
 | |
|   PWMFHeader = ^TWMFHeader;
 | |
| 
 | |
|  { Placeable Metafiles (file extension .APM) were created by Aldus Corporation
 | |
|   as a non-standard way of specifying how a metafile is mapped and scaled on an
 | |
|   output device. Placeable metafiles are quite wide-spread, but not directly
 | |
|   supported by the Windows API.
 | |
|   Placeable Metafiles are limited to 64K in length.
 | |
|   Each placeable metafile begins with a 22-byte header followed by a standard
 | |
|   metafile. }
 | |
|   TPlaceableMetaHeader = packed record
 | |
|     Key: DWord;               // Magic number (always 9AC6CDD7h)
 | |
|     Handle: Word;             // Metafile HANDLE number (always 0)
 | |
|     Left: SmallInt;           // Left coordinate in metafile units
 | |
|     Top: SmallInt;            // Top coordinate in metafile units
 | |
|     Right: SmallInt;          // Right coordinate in metafile units
 | |
|     Bottom: SmallInt;         // Bottom coordinate in metafile units
 | |
|     Inch: Word;               // Number of metafile units per inch
 | |
|     Reserved: DWord;          // Reserved (always 0)
 | |
|     Checksum: Word;           // Checksum value for previous 10 WORDs
 | |
|   end;
 | |
|   PPlaceableMetaHeader = ^TPlaceableMetaHeader;
 | |
| 
 | |
|   TEnhancedMetaHeader = packed record      // 80 bytes
 | |
|     RecordType: DWord;        // Record type, must be 00000001h for EMF
 | |
|     RecordSize: DWord;        // Size of the record in bytes
 | |
|     BoundsLeft: LongInt;      // Left inclusive bounds
 | |
|     BoundsRight: LongInt;     // Right inclusive bounds
 | |
|     BoundsTop: LongInt;       // Top inclusive bounds
 | |
|     BoundsBottom: LongInt;    // Bottom inclusive bounds
 | |
|     FrameLeft: LongInt;       // Left side of inclusive picture frame
 | |
|     FrameRight: LongInt;      // Right side of inclusive picture frame
 | |
|     FrameTop: LongInt;        // Top side of inclusive picture frame
 | |
|     FrameBottom: LongInt;     // Bottom side of inclusive picture frame
 | |
|     Signature: DWord;         // Signature ID (always $464D4520)
 | |
|     Version: DWord;           // Version of the metafile, always $00000100
 | |
|     Size: DWord;              // Size of the metafile in bytes
 | |
|     NumOfRecords: DWord;      // Number of records in the metafile
 | |
|     NumOfHandles: Word;       // Number of handles in the handle table
 | |
|     Reserved: Word;           // Not used (always 0)
 | |
|     SizeOfDescrip: DWord;     // Length of description string (16-bit chars) in WORDs, incl zero
 | |
|     OffsOfDescrip: DWord;     // Offset of description string in metafile (from beginning)
 | |
|     NumPalEntries: DWord;     // Number of color palette entries
 | |
|     WidthDevPixels: LongInt;  // Width of display device in pixels
 | |
|     HeightDevPixels: LongInt; // Height of display device in pixels
 | |
|     WidthDevMM: LongInt;      // Width of display device in millimeters
 | |
|     HeightDevMM: LongInt;     // Height of display device in millimeters
 | |
|   end;
 | |
| 
 | |
|   {Clipboard metafiles are also based on the standard metafile format, but are
 | |
|    preceded by an additional 8- or 16-byte header that allows the position of
 | |
|    the metafile on the Clipboard viewer. If the Clipboard metafile was created
 | |
|    using a 16-bit version of Windows (Windows and Windows for Workgroups) this
 | |
|    header will contain 2-byte fields arranged in the following structure. If the
 | |
|    clipboard metafile was created under a 32-bit Windows environment (Windows NT
 | |
|    and Windows 95) this header will contain the same fields as the Win16 WMF
 | |
|    header, but the fields are 32 bytes in length. }
 | |
|   TWMFClipboard16MetaHeader = packed record
 | |
|     MappingMode: SmallInt;    // see MM_XXXX constants
 | |
|     Width: SmallInt;          // Width in units of MappingMode
 | |
|     Height: SmallInt;         // Height in units of MappingMode
 | |
|     Handle: Word;             // Handle to the metafile in memory
 | |
|   end;
 | |
| 
 | |
|   TWMFClipboard32MetaHeader = packed record
 | |
|     MappingMode: LongInt;     // see MM_XXXX constants
 | |
|     Width: LongInt;           // Width in units of MappingMode
 | |
|     Height: LongInt;          // Height in units of MappingMode
 | |
|     Handle: DWord;            // Handle to the metafile in memory
 | |
|   end;
 | |
| 
 | |
|   TWMFRecord = packed record
 | |
|     Size: DWord;              // Total size of the record in WORDs
 | |
|     Func: Word;               // Function number (defined in WINDOWS.H)
 | |
|     // Parameters[]: Word;    // Parameter values passed to function - will be read separately
 | |
|   end;
 | |
| 
 | |
|   TWMFArcRecord = packed record
 | |
|     YEndArc: SmallInt;        // y coordinate of end pt of radial line to arc end point
 | |
|     XEndArc: SmallInt;        // x coordinate of end pt of radial line to arc end point
 | |
|     YStartArc: SmallInt;      // y coordinate of end pt of radial line to arc start point
 | |
|     XStartArc: SmallInt;      // x coordinate of end pt of radial line to arc start point
 | |
|     Bottom: SmallInt;         // y coordinate of bottom of bounding rectangle
 | |
|     Right: SmallInt;          // x coordinate of right edge of bounding rectangle
 | |
|     Top: SmallInt;            // y coordinate of top of bounding rectangle
 | |
|     Left: SmallInt;           // x coordinate of left of bounding rectangle
 | |
|   end;
 | |
|   PWMFArcRecord = ^TWMFArcRecord;
 | |
| 
 | |
|   TWMFBrushRecord = packed record
 | |
|     Style: Word;
 | |
|     ColorRED: Byte;
 | |
|     ColorGREEN: Byte;
 | |
|     ColorBLUE: Byte;
 | |
|     Reserved: Byte;
 | |
|     // Brush hatch/pattern data of variable length follow
 | |
|     case integer of
 | |
|       0: (Hatch: Word);
 | |
|       // pattern not yet implemented here...
 | |
|   end;
 | |
|   PWMFBrushRecord = ^TWMFBrushRecord;
 | |
| 
 | |
|   TWMFColorRecord = packed record
 | |
|     ColorRED: Byte;
 | |
|     ColorGREEN: Byte;
 | |
|     ColorBLUE: Byte;
 | |
|     Reserved: Byte;
 | |
|   end;
 | |
|   PWMFColorRecord = ^TWMFColorRecord;
 | |
| 
 | |
|   TWMFPaletteColorRecord = packed record
 | |
|     Values: Byte;                    // NOTE: reverse order!
 | |
|     ColorBLUE: Byte;
 | |
|     ColorGREEN: Byte;
 | |
|     ColorRED: Byte;
 | |
|   end;
 | |
|   PWMFPaletteColorRecord = ^TWMFPaletteColorRecord;
 | |
| 
 | |
|   TWMFRectRecord = packed record
 | |
|     Bottom: SmallInt;
 | |
|     Right: SmallInt;
 | |
|     Top: SmallInt;
 | |
|     Left: SmallInt;
 | |
|   end;
 | |
|   PWMFRectRecord = ^TWMFRectRecord;
 | |
| 
 | |
|   TWMFExtTextRecord = packed record
 | |
|     Y: SmallInt;
 | |
|     X: SmallInt;
 | |
|     Len: SmallInt;
 | |
|     Options: Word;
 | |
|     // Optional bounding rect and text follow
 | |
|   end;
 | |
|   PWMFExtTextRecord = ^TWMFExtTextRecord;
 | |
| 
 | |
|   TWMFFontRecord = packed record
 | |
|     Height: SmallInt;    // signed int!
 | |
|     Width: SmallInt;
 | |
|     Escapement: SmallInt;
 | |
|     Orientation: SmallInt;
 | |
|     Weight: SmallInt;
 | |
|     Italic: Byte;
 | |
|     UnderLine: Byte;
 | |
|     Strikeout: Byte;
 | |
|     CharSet: Byte;
 | |
|     OutPrecision: Byte;
 | |
|     ClipPrecision: Byte;
 | |
|     Quality: Byte;
 | |
|     PitchAndFamily: byte;
 | |
|     // FaceName will be handled separately
 | |
|   end;
 | |
|   PWMFFontRecord = ^TWMFFontRecord;
 | |
| 
 | |
|   TWMFPenRecord = packed record
 | |
|     Style: Word;
 | |
|     Width: Word;
 | |
|     Ignored1: Word;
 | |
|     ColorRED: Byte;
 | |
|     ColorGREEN: Byte;
 | |
|     ColorBLUE: Byte;
 | |
|     Ignored2: Byte;
 | |
|   end;
 | |
|   PWMFPenRecord = ^TWMFPenRecord;
 | |
| 
 | |
|   TWMFPointRecord = packed record
 | |
|     Y, X: SmallInt;             // reverse order as through-out wmf
 | |
|   end;
 | |
|   PWMFPointRecord = ^TWMFPointRecord;
 | |
| 
 | |
|   TWMFPointXYRecord = packed record
 | |
|     X, Y: SmallInt;             // Regular order (x,y) as needed by polygons
 | |
|   end;
 | |
|   PWMFPointXYRecord = ^TWMFPointXYRecord;
 | |
| 
 | |
|   TWMFStretchDIBRecord = packed record
 | |
|     RasterOperation: DWord;
 | |
|     ColorUsage: Word;
 | |
|     SrcHeight: SmallInt;
 | |
|     SrcWidth: SmallInt;
 | |
|     SrcY: SmallInt;
 | |
|     SrcX: SmallInt;
 | |
|     DestHeight: SmallInt;
 | |
|     DestWidth: SmallInt;
 | |
|     DestX: SmallInt;
 | |
|     DestY: SmallInt;
 | |
|     // the remainder is handled separately:
 | |
|     // - TWMFBitmapCoreHeader or TWMFBitmapInfoHeader
 | |
|     // - optional: Colors
 | |
|     // - BitmapBuffer
 | |
|     //
 | |
|   end;
 | |
|   PWMFStretchDIBRecord = ^TWMFStretchDIBRecord;
 | |
| 
 | |
|   TWMFBitmapCoreHeader = packed record
 | |
|     HeaderSize: DWord;
 | |
|     Width: Word;
 | |
|     Height: Word;
 | |
|     Planes: Word;
 | |
|     BitCount: Word;
 | |
|   end;
 | |
|   PWMFBitmapCoreHeader = ^TWMFBitmapCoreHeader;
 | |
| 
 | |
|   TWMFBitmapInfoHeader = packed record
 | |
|     HeaderSize: DWord;
 | |
|     Width: LongInt;
 | |
|     Height: LongInt;
 | |
|     Planes: Word;
 | |
|     BitCount: Word;
 | |
|     Compression: DWord;
 | |
|     ImageSize: DWord;
 | |
|     XPelsPerMeter: DWord;
 | |
|     YPelsPerMeter: DWord;
 | |
|     ColorsUsed: DWord;
 | |
|     ColorImporant: DWord;
 | |
|   end;
 | |
|   PWMFBitmapInfoHeader = ^TWMFBitmapInfoHeader;
 | |
| 
 | |
| const
 | |
|   // WMF Magic number in Placeable Meta Header
 | |
|   WMF_MAGIC_NUMBER = $9AC6CDD7;
 | |
| 
 | |
|   // WMF Record types
 | |
|   META_EOF = $0000;
 | |
|   META_REALIZEPALETTE = $0035;
 | |
|   META_SETPALENTRIES = $0037;
 | |
|   META_SETBKMODE = $0102;
 | |
|   META_SETMAPMODE = $0103;
 | |
|   META_SETROP2 = $0104;
 | |
|   META_SETRELABS = $0105;
 | |
|   META_SETPOLYFILLMODE = $0106;
 | |
|   META_SETSTRETCHBLTMODE = $0107;
 | |
|   META_SETTEXTCHAREXTRA = $0108;
 | |
|   META_RESTOREDC = $0127;
 | |
|   META_RESIZEPALETTE = $0139;
 | |
|   META_DIBCREATEPATTERNBRUSH = $0142;
 | |
|   META_SETLAYOUT = $0149;
 | |
|   META_SETBKCOLOR = $0201;
 | |
|   META_SETTEXTCOLOR = $0209;
 | |
|   META_OFFSETVIEWPORTORG = $0211;
 | |
|   META_LINETO = $0213;
 | |
|   META_MOVETO = $0214;
 | |
|   META_OFFSETCLIPRGN = $0220;
 | |
|   META_FILLREGION = $0228;
 | |
|   META_SETMAPPERFLAGS = $0231;
 | |
|   META_SELECTPALETTE = $0234;
 | |
|   META_POLYGON = $0324;
 | |
|   META_POLYLINE = $0325;
 | |
|   META_SETTEXTJUSTIFICATION = $020A;
 | |
|   META_SETWINDOWORG = $020B;
 | |
|   META_SETWINDOWEXT = $020C;
 | |
|   META_SETVIEWPORTORG = $020D;
 | |
|   META_SETVIEWPORTEXT = $020E;
 | |
|   META_OFFSETWINDOWORG = $020F;
 | |
|   META_SCALEWINDOWEXT = $0410;
 | |
|   META_SCALEVIEWPORTEXT = $0412;
 | |
|   META_EXCLUDECLIPRECT = $0415;
 | |
|   META_INTERSECTCLIPRECT = $0416;
 | |
|   META_ELLIPSE = $0418;
 | |
|   META_FLOODFILL = $0419;
 | |
|   META_FRAMEREGION = $0429;
 | |
|   META_ANIMATEPALETTE = $0436;
 | |
|   META_TEXTOUT = $0521;
 | |
|   META_POLYPOLYGON = $0538;
 | |
|   META_EXTFLOODFILL = $0548;
 | |
|   META_RECTANGLE = $041B;
 | |
|   META_SETPIXEL = $041F;
 | |
|   META_ROUNDRECT = $061C;
 | |
|   META_PATBLT = $061D;
 | |
| 
 | |
|   META_SAVEDC = $001E;
 | |
|   META_PIE = $081A;
 | |
|   META_STRETCHBLT = $0B23;
 | |
|   META_ESCAPE = $0626;
 | |
|   META_INVERTREGION = $012A;
 | |
|   META_PAINTREGION = $012B;
 | |
|   META_SELECTCLIPREGION = $012C;
 | |
|   META_SELECTOBJECT = $012D;
 | |
|   META_SETTEXTALIGN = $012E;
 | |
|   META_ARC = $0817;
 | |
|   META_CHORD = $0830;
 | |
|   META_BITBLT = $0922;
 | |
|   META_EXTTEXTOUT = $0a32;
 | |
|   META_SETDIBTODEV = $0d33;
 | |
|   META_DIBBITBLT = $0940;
 | |
|   META_DIBSTRETCHBLT = $0b41;
 | |
|   META_STRETCHDIB = $0f43;
 | |
|   META_DELETEOBJECT = $01f0;
 | |
|   META_CREATEPALETTE = $00f7;
 | |
|   META_CREATEPATTERNBRUSH = $01F9;
 | |
|   META_CREATEPENINDIRECT = $02FA;
 | |
|   META_CREATEFONTINDIRECT = $02FB;
 | |
|   META_CREATEBRUSHINDIRECT = $02FC;
 | |
|   META_CREATEREGION = $06FF;
 | |
| 
 | |
|   // Brush styles
 | |
|   BS_SOLID = $0000;
 | |
|   BS_NULL = $0001;
 | |
|   BS_HATCHED = $0002;
 | |
|   BS_PATTERN = $0003;
 | |
|   BS_INDEXED = $0004;
 | |
|   BS_DIBPATTERN = $0005;
 | |
|   BS_DIBPATTERNPT = $0006;
 | |
|   BS_PATTERN8X8 = $0007;
 | |
|   BS_DIBPATTERN8X8 = $0008;
 | |
|   BS_MONOPATTERN = $0009;
 | |
| 
 | |
|   // Character sets
 | |
|   ANSI_CHARSET = $00000000;
 | |
|   DEFAULT_CHARSET = $00000001;
 | |
|   SYMBOL_CHARSET = $00000002;
 | |
|   MAC_CHARSET = $0000004D;
 | |
|   SHIFTJIS_CHARSET = $00000080;
 | |
|   HANGUL_CHARSET = $00000081;
 | |
|   JOHAB_CHARSET = $00000082;
 | |
|   GB2312_CHARSET = $00000086;
 | |
|   CHINESEBIG5_CHARSET = $00000088;
 | |
|   GREEK_CHARSET = $000000A1;
 | |
|   TURKISH_CHARSET = $000000A2;
 | |
|   VIETNAMESE_CHARSET = $000000A3;
 | |
|   HEBREW_CHARSET = $000000B1;
 | |
|   ARABIC_CHARSET = $000000B2;
 | |
|   BALTIC_CHARSET = $000000BA;
 | |
|   RUSSIAN_CHARSET = $000000CC;
 | |
|   THAI_CHARSET = $000000DE;
 | |
|   EASTEUROPE_CHARSET = $000000EE;
 | |
|   OEM_CHARSET = $000000FF;
 | |
| 
 | |
|   // ExtTextOutOptions flags
 | |
|   ETO_OPAQUE = $0002;
 | |
|   ETO_CLIPPED = $0004;
 | |
|   ETO_GLYPHINDEX = $0010;
 | |
|   ETO_RTLREADING = $0080;
 | |
|   ETO_NUMERICSLOCAL = $0400;
 | |
|   ETO_NUMERICSLATIN = $0800;
 | |
|   ETO_PDY = $2000;
 | |
| 
 | |
|   // Family font
 | |
|   FF_DONTCARE = $00;
 | |
|   FF_ROMAN = $01;
 | |
|   FF_SWISS = $02;
 | |
|   FF_MODERN = $03;
 | |
|   FF_SCRIPT = $04;
 | |
|   FF_DECORATIVE = $05;
 | |
| 
 | |
|   // Flood fill
 | |
|   FLOODFILLBORDER = $0000;
 | |
|   FLOODFILLSURFACE = $0001;
 | |
| 
 | |
|   // Font quality
 | |
|   DEFAULT_QUALITY = $00;
 | |
|   DRAFT_QUALITY = $01;
 | |
|   PROOF_QUALITY = $02;
 | |
|   NONANTIALIASED_QUALITY = $03;
 | |
|   ANTIALIASED_QUALITY = $04;
 | |
|   CLEARTYPE_QUALITY = $05;
 | |
| 
 | |
|   // Hatch style
 | |
|   HS_HORIZONTAL = $0000;
 | |
|   HS_VERTICAL = $0001;
 | |
|   HS_FDIAGONAL = $0002; // \\\
 | |
|   HS_BDIAGONAL = $0003; // ///
 | |
|   HS_CROSS = $0004;     // +++
 | |
|   HS_DIAGCROSS = $0005; // xxxx
 | |
| 
 | |
|   // Map mode
 | |
|   MM_TEXT = $0001;         // 1 logical unit = 1 device pixel. +x right, +y down
 | |
|   MM_LOMETRIC = $0002;     // 1 logical unit = 0.1 mm. +x right, +y up
 | |
|   MM_HIMETRIC = $0003;     // 1 logical unit = 0.01 mm. +x right, +y up
 | |
|   MM_LOENGLISH = $0004;    // 1 logical unit = 0.01 inch. +x right, +y up
 | |
|   MM_HIENGLISH = $0005;    // 1 logical unit = 0.001 inch. +x right, +y up
 | |
|   MM_TWIPS = $0006;        // 1 logical unit = 1/20 point = 1/1440 inch (twip). +x right, +y up
 | |
|   MM_ISOTROPIC = $0007;    // arbitrary units, equally scaled axes. --> META_SETWINDOWEXT, META_SETWINDOWORG
 | |
|   MM_ANISOTROPIC = $0008;  // arbitrary units, arbitrarily scaled axes.
 | |
| 
 | |
|   // Metafile enumeration
 | |
|   MEMORYMETAFILE = $0001;  // Metafile is stored in memory
 | |
|   DISKMETAFILE = $0002;    // ... on disk.
 | |
| 
 | |
|   // Background MixMode for text, hatched brushes and other nonsolid pen styles
 | |
|   BM_TRANSPARENT = $0001;
 | |
|   BM_OPAQUE = $0002;
 | |
| 
 | |
|   // Pen styles
 | |
|   PS_COSMETIC = $0000;
 | |
|   PS_ENDCAP_ROUND = $0000;
 | |
|   PS_JOIN_ROUND = $0000;
 | |
|   PS_SOLID = $0000;
 | |
|   PS_DASH = $0001;
 | |
|   PS_DOT = $0002;
 | |
|   PS_DASHDOT = $0003;
 | |
|   PS_DASHDOTDOT = $0004;
 | |
|   PS_NULL = $0005;
 | |
|   PS_INSIDEFRAME = $0006;
 | |
|   PS_USERSTYLE = $0007;
 | |
|   PS_ALTERNATE = $0008;
 | |
|   PS_ENDCAP_SQUARE = $0100;
 | |
|   PS_ENDCAP_FLAT = $0200;
 | |
|   PS_JOIN_BEVEL = $1000;
 | |
|   PS_JOIN_MITER = $2000;
 | |
| 
 | |
|   // PitchFont
 | |
|   DEFAULT_PITCH = 0;
 | |
|   FIXED_PITCH = 1;
 | |
|   VARIABLE_PITCH = 2;
 | |
| 
 | |
|   // PolyFillMode
 | |
|   ALTERNATE = $0001;
 | |
|   WINDING = $0002;
 | |
| 
 | |
|   // TextAlignment flags
 | |
|   TA_NOUPDATECP = $0000;
 | |
|   TA_LEFT = $0000;
 | |
|   TA_TOP = $0000;
 | |
|   TA_UPDATECP = $0001;
 | |
|   TA_RIGHT = $0002;
 | |
|   TA_CENTER = $0006;   // Value is correct ($0004 looks more reasonable, though)
 | |
|   TA_BOTTOM = $0008;
 | |
|   TA_BASELINE = $0018;
 | |
|   TA_RTLREADING = $0100;
 | |
| 
 | |
|   // Vertical text alignment flags
 | |
|   // Used if font has vertical baseline, such as Kanji.
 | |
|   VTA_TOP = $0000;
 | |
|   VTA_RIGHT = $0000;
 | |
|   VTA_BOTTOM = $0002;
 | |
|   VTA_CENTER = $0006;  // why not $0004?
 | |
|   VTA_BASELINE = $0018;
 | |
| 
 | |
|   // Ternary Raster Operations
 | |
|   BLACKNESS = $00;
 | |
|   NOTSRCERASE = $11;
 | |
|   NOTSRCCOPY = $33;
 | |
|   SRCERASE = $44;
 | |
|   DSTINVERT = $55;
 | |
|   SRCINVERT = $66;
 | |
|   MERGEPAINT = $BB;
 | |
|   MERGECOPY = $C0;
 | |
|   SRCCOPY = $CC;
 | |
|   SRCPAINT = $FF;
 | |
|   PATCOPY = $F0;
 | |
|   PATPAINT = $FB;
 | |
|   WHITENESS = $FF;
 | |
|   // ... plus many more...
 | |
| 
 | |
|   // Color usage
 | |
|   DIB_RGB_COLORS = $0000;
 | |
|   DIB_PAL_COLORS = $0001;
 | |
|   DIB_PAL_INDICES = $0002;
 | |
| 
 | |
|   // Compression
 | |
|   BI_RGB = $0000;
 | |
|   BI_RLE8 = $0001;
 | |
|   BI_RLE4 = $0002;
 | |
|   BI_BITFIELDS = $0003;
 | |
|   BI_JPEG = $0004;
 | |
|   BI_PNG = $0005;
 | |
|   BI_CMYK = $000B;
 | |
|   BI_CMYKRLE8 = $000C;
 | |
|   BI_CMYKRLE4 = $000D;
 | |
| 
 | |
| function WMF_GetRecordTypeName(ARecordType: Word): String;
 | |
| 
 | |
| implementation
 | |
| 
 | |
| function WMF_GetRecordTypeName(ARecordType: Word): String;
 | |
| begin
 | |
|   Result := '';
 | |
|   case ARecordType of
 | |
|     META_EOF : Result := 'META_EOF';
 | |
|     META_REALIZEPALETTE: Result := 'META_REALIZEPALETTE';
 | |
|     META_SETPALENTRIES: Result := 'META_SETPALENTRIES';
 | |
|     META_SETBKMODE: Result := 'META_SETBKMODE';
 | |
|     META_SETMAPMODE: Result := 'META_SETMAPMODE';
 | |
|     META_SETROP2: Result := 'META_SETROP2';
 | |
|     META_SETRELABS: Result := 'META_SETRELABS';
 | |
|     META_SETPOLYFILLMODE: Result := 'META_SETPOLYFILLMODE';
 | |
|     META_SETSTRETCHBLTMODE: Result := 'META_SETSTRETCHBLTMODE';
 | |
|     META_SETTEXTCHAREXTRA: Result := 'META_SETTEXTCHAREXTRA';
 | |
|     META_RESTOREDC: Result := 'META_RESTOREDC';
 | |
|     META_RESIZEPALETTE: Result := 'META_RESIZEPALETTE';
 | |
|     META_DIBCREATEPATTERNBRUSH: Result := 'META_DIBCREATEPATTERNBRUSH';
 | |
|     META_SETLAYOUT: Result := 'META_SETLAYOUT';
 | |
|     META_SETBKCOLOR: Result := 'META_SETBKCOLOR';
 | |
|     META_SETTEXTCOLOR: Result := 'META_SETTEXTCOLOR';
 | |
|     META_OFFSETVIEWPORTORG: Result := 'META_OFFSETVIEWPORTORG';
 | |
|     META_LINETO: Result := 'META_LINETO';
 | |
|     META_MOVETO: Result := 'META_MOVETO';
 | |
|     META_OFFSETCLIPRGN: Result := 'META_OFFSETCLIPRGN';
 | |
|     META_FILLREGION: Result := 'META_FILLREGION';
 | |
|     META_SETMAPPERFLAGS: Result := 'META_SETMAPPERFLAGS';
 | |
|     META_SELECTPALETTE: Result := 'META_SELECTPALETTE';
 | |
|     META_POLYGON: Result := 'META_POLYGON';
 | |
|     META_POLYLINE: Result := 'META_POLYLINE';
 | |
|     META_SETTEXTJUSTIFICATION: Result := 'META_SETTEXTJUSTIFICATION';
 | |
|     META_SETWINDOWORG: Result := 'META_SETWINDOWORG';
 | |
|     META_SETWINDOWEXT: Result := 'META_SETWINDOWEXT';
 | |
|     META_SETVIEWPORTORG: Result := 'META_SETVIEWPORTORG';
 | |
|     META_SETVIEWPORTEXT: Result := 'META_SETVIEWPORTEXT';
 | |
|     META_OFFSETWINDOWORG: Result := 'META_OFFSETWINDOWORG';
 | |
|     META_SCALEWINDOWEXT: Result := 'META_SCALEWINDOWEXT';
 | |
|     META_SCALEVIEWPORTEXT: Result := 'META_SCALEVIEWPORTEXT';
 | |
|     META_EXCLUDECLIPRECT: Result := 'META_EXCLUDECLIPRECT';
 | |
|     META_INTERSECTCLIPRECT: Result := 'META_INTERSECTCLIPRECT';
 | |
|     META_ELLIPSE: Result := 'META_ELLIPSE';
 | |
|     META_FLOODFILL: Result := 'META_FLOODFILL';
 | |
|     META_FRAMEREGION: Result := 'META_FRAMEREGION';
 | |
|     META_ANIMATEPALETTE: Result := 'META_ANIMATEPALETTE';
 | |
|     META_TEXTOUT: Result := 'META_TEXTOUT';
 | |
|     META_POLYPOLYGON: Result := 'META_POLYPOLYGON';
 | |
|     META_EXTFLOODFILL: Result := 'META_EXTFLOODFILL';
 | |
|     META_RECTANGLE: Result := 'META_RECTANGLE';
 | |
|     META_SETPIXEL: Result := 'META_SETPIXEL';
 | |
|     META_ROUNDRECT: Result := 'META_ROUNDRECT';
 | |
|     META_PATBLT: Result := 'META_PATBLT';
 | |
|     META_SAVEDC: Result := 'META_SAVEDC';
 | |
|     META_PIE: Result := 'META_PIE';
 | |
|     META_STRETCHBLT: Result := 'META_STRETCHBLT';
 | |
|     META_ESCAPE: Result := 'META_ESCAPE';
 | |
|     META_INVERTREGION: Result := 'META_INVERTREGION';
 | |
|     META_PAINTREGION: Result := 'META_PAINTREGION';
 | |
|     META_SELECTCLIPREGION: Result := 'META_SELECTCLIPREGION';
 | |
|     META_SELECTOBJECT: Result := 'META_SELECTOBJECT';
 | |
|     META_SETTEXTALIGN: Result := 'META_SETTEXTALIGN';
 | |
|     META_ARC: Result := 'META_ARC';
 | |
|     META_CHORD: Result := 'META_CHORD';
 | |
|     META_BITBLT: Result := 'META_BITBLT';
 | |
|     META_EXTTEXTOUT: Result := 'META_EXTTEXTOUT';
 | |
|     META_SETDIBTODEV: Result := 'META_SETDIBTODEV';
 | |
|     META_DIBBITBLT: Result := 'META_DIBBITBLT';
 | |
|     META_DIBSTRETCHBLT: Result := 'META_DIBSTRETCHBLT';
 | |
|     META_STRETCHDIB: Result := 'META_STRETCHDIB';
 | |
|     META_DELETEOBJECT: Result := 'META_DELETEOBJECT';
 | |
|     META_CREATEPALETTE: Result := 'META_CREATEPALETTE';
 | |
|     META_CREATEPATTERNBRUSH: Result := 'META_CREATEPATTERNBRUSH';
 | |
|     META_CREATEPENINDIRECT: Result := 'META_CREATEPENINDIRECT';
 | |
|     META_CREATEFONTINDIRECT: Result := 'META_CREATEFONTINDIRECT';
 | |
|     META_CREATEBRUSHINDIRECT: Result := 'META_CREATEBRUSHINDIRECT';
 | |
|     META_CREATEREGION: Result := 'META_CREATEREGION';
 | |
|   end;
 | |
| end;
 | |
| 
 | |
| end.
 | 
