1 { Declarations for Windows meta files
2 
3   Infos taken from
4   - http://msdn.microsoft.com/en-us/library/cc250370.aspx
5   - http://wvware.sourceforge.net/caolan/ora-wmf.html
6   - http://www.symantec.com/avcenter/reference/inside.the.windows.meta.file.format.pdf
7 }
8 
9 unit fpvWMF;
10 
11 interface
12 
13 type
14   TWMFHeader = packed record
15     FileType: Word;        // Type of metafile (0=memory, 1=disk)
16     HeaderSize: Word;      // Size of header in WORDS (always 9)
17     Version: Word;         // Version of Microsoft Windows used
18     FileSize: DWord;       // Total size of the metafile in WORDs
19     NumOfObjects: Word;    // Number of objects in the file
20     MaxRecordSize: DWord;  // The size of largest record in WORDs
21     NumOfParams: Word;     // Not Used (always 0)
22   end;
23   PWMFHeader = ^TWMFHeader;
24 
25  { Placeable Metafiles (file extension .APM) were created by Aldus Corporation
26   as a non-standard way of specifying how a metafile is mapped and scaled on an
27   output device. Placeable metafiles are quite wide-spread, but not directly
28   supported by the Windows API.
29   Placeable Metafiles are limited to 64K in length.
30   Each placeable metafile begins with a 22-byte header followed by a standard
31   metafile. }
32   TPlaceableMetaHeader = packed record
33     Key: DWord;               // Magic number (always 9AC6CDD7h)
34     Handle: Word;             // Metafile HANDLE number (always 0)
35     Left: SmallInt;           // Left coordinate in metafile units
36     Top: SmallInt;            // Top coordinate in metafile units
37     Right: SmallInt;          // Right coordinate in metafile units
38     Bottom: SmallInt;         // Bottom coordinate in metafile units
39     Inch: Word;               // Number of metafile units per inch
40     Reserved: DWord;          // Reserved (always 0)
41     Checksum: Word;           // Checksum value for previous 10 WORDs
42   end;
43   PPlaceableMetaHeader = ^TPlaceableMetaHeader;
44 
45   TEnhancedMetaHeader = packed record      // 80 bytes
46     RecordType: DWord;        // Record type, must be 00000001h for EMF
47     RecordSize: DWord;        // Size of the record in bytes
48     BoundsLeft: LongInt;      // Left inclusive bounds
49     BoundsRight: LongInt;     // Right inclusive bounds
50     BoundsTop: LongInt;       // Top inclusive bounds
51     BoundsBottom: LongInt;    // Bottom inclusive bounds
52     FrameLeft: LongInt;       // Left side of inclusive picture frame
53     FrameRight: LongInt;      // Right side of inclusive picture frame
54     FrameTop: LongInt;        // Top side of inclusive picture frame
55     FrameBottom: LongInt;     // Bottom side of inclusive picture frame
56     Signature: DWord;         // Signature ID (always $464D4520)
57     Version: DWord;           // Version of the metafile, always $00000100
58     Size: DWord;              // Size of the metafile in bytes
59     NumOfRecords: DWord;      // Number of records in the metafile
60     NumOfHandles: Word;       // Number of handles in the handle table
61     Reserved: Word;           // Not used (always 0)
62     SizeOfDescrip: DWord;     // Length of description string (16-bit chars) in WORDs, incl zero
63     OffsOfDescrip: DWord;     // Offset of description string in metafile (from beginning)
64     NumPalEntries: DWord;     // Number of color palette entries
65     WidthDevPixels: LongInt;  // Width of display device in pixels
66     HeightDevPixels: LongInt; // Height of display device in pixels
67     WidthDevMM: LongInt;      // Width of display device in millimeters
68     HeightDevMM: LongInt;     // Height of display device in millimeters
69   end;
70 
71   {Clipboard metafiles are also based on the standard metafile format, but are
72    preceded by an additional 8- or 16-byte header that allows the position of
73    the metafile on the Clipboard viewer. If the Clipboard metafile was created
74    using a 16-bit version of Windows (Windows and Windows for Workgroups) this
75    header will contain 2-byte fields arranged in the following structure. If the
76    clipboard metafile was created under a 32-bit Windows environment (Windows NT
77    and Windows 95) this header will contain the same fields as the Win16 WMF
78    header, but the fields are 32 bytes in length. }
79   TWMFClipboard16MetaHeader = packed record
80     MappingMode: SmallInt;    // see MM_XXXX constants
81     Width: SmallInt;          // Width in units of MappingMode
82     Height: SmallInt;         // Height in units of MappingMode
83     Handle: Word;             // Handle to the metafile in memory
84   end;
85 
86   TWMFClipboard32MetaHeader = packed record
87     MappingMode: LongInt;     // see MM_XXXX constants
88     Width: LongInt;           // Width in units of MappingMode
89     Height: LongInt;          // Height in units of MappingMode
90     Handle: DWord;            // Handle to the metafile in memory
91   end;
92 
93   TWMFRecord = packed record
94     Size: DWord;              // Total size of the record in WORDs
numbernull95     Func: Word;               // Function number (defined in WINDOWS.H)
96     // Parameters[]: Word;    // Parameter values passed to function - will be read separately
97   end;
98 
99   TWMFArcRecord = packed record
100     YEndArc: SmallInt;        // y coordinate of end pt of radial line to arc end point
101     XEndArc: SmallInt;        // x coordinate of end pt of radial line to arc end point
102     YStartArc: SmallInt;      // y coordinate of end pt of radial line to arc start point
103     XStartArc: SmallInt;      // x coordinate of end pt of radial line to arc start point
104     Bottom: SmallInt;         // y coordinate of bottom of bounding rectangle
105     Right: SmallInt;          // x coordinate of right edge of bounding rectangle
106     Top: SmallInt;            // y coordinate of top of bounding rectangle
107     Left: SmallInt;           // x coordinate of left of bounding rectangle
108   end;
109   PWMFArcRecord = ^TWMFArcRecord;
110 
111   TWMFBrushRecord = packed record
112     Style: Word;
113     ColorRED: Byte;
114     ColorGREEN: Byte;
115     ColorBLUE: Byte;
116     Reserved: Byte;
117     // Brush hatch/pattern data of variable length follow
118     case integer of
119       0: (Hatch: Word);
120       // pattern not yet implemented here...
121   end;
122   PWMFBrushRecord = ^TWMFBrushRecord;
123 
124   TWMFColorRecord = packed record
125     ColorRED: Byte;
126     ColorGREEN: Byte;
127     ColorBLUE: Byte;
128     Reserved: Byte;
129   end;
130   PWMFColorRecord = ^TWMFColorRecord;
131 
132   TWMFPaletteColorRecord = packed record
133     Values: Byte;                    // NOTE: reverse order!
134     ColorBLUE: Byte;
135     ColorGREEN: Byte;
136     ColorRED: Byte;
137   end;
138   PWMFPaletteColorRecord = ^TWMFPaletteColorRecord;
139 
140   TWMFRectRecord = packed record
141     Bottom: SmallInt;
142     Right: SmallInt;
143     Top: SmallInt;
144     Left: SmallInt;
145   end;
146   PWMFRectRecord = ^TWMFRectRecord;
147 
148   TWMFExtTextRecord = packed record
149     Y: SmallInt;
150     X: SmallInt;
151     Len: SmallInt;
152     Options: Word;
153     // Optional bounding rect and text follow
154   end;
155   PWMFExtTextRecord = ^TWMFExtTextRecord;
156 
157   TWMFFontRecord = packed record
158     Height: SmallInt;    // signed int!
159     Width: SmallInt;
160     Escapement: SmallInt;
161     Orientation: SmallInt;
162     Weight: SmallInt;
163     Italic: Byte;
164     UnderLine: Byte;
165     Strikeout: Byte;
166     CharSet: Byte;
167     OutPrecision: Byte;
168     ClipPrecision: Byte;
169     Quality: Byte;
170     PitchAndFamily: byte;
171     // FaceName will be handled separately
172   end;
173   PWMFFontRecord = ^TWMFFontRecord;
174 
175   TWMFPenRecord = packed record
176     Style: Word;
177     Width: Word;
178     Ignored1: Word;
179     ColorRED: Byte;
180     ColorGREEN: Byte;
181     ColorBLUE: Byte;
182     Ignored2: Byte;
183   end;
184   PWMFPenRecord = ^TWMFPenRecord;
185 
186   TWMFPointRecord = packed record
187     Y, X: SmallInt;             // reverse order as through-out wmf
188   end;
189   PWMFPointRecord = ^TWMFPointRecord;
190 
191   TWMFPointXYRecord = packed record
192     X, Y: SmallInt;             // Regular order (x,y) as needed by polygons
193   end;
194   PWMFPointXYRecord = ^TWMFPointXYRecord;
195 
196   TWMFStretchDIBRecord = packed record
197     RasterOperation: DWord;
198     ColorUsage: Word;
199     SrcHeight: SmallInt;
200     SrcWidth: SmallInt;
201     SrcY: SmallInt;
202     SrcX: SmallInt;
203     DestHeight: SmallInt;
204     DestWidth: SmallInt;
205     DestX: SmallInt;
206     DestY: SmallInt;
207     // the remainder is handled separately:
208     // - TWMFBitmapCoreHeader or TWMFBitmapInfoHeader
209     // - optional: Colors
210     // - BitmapBuffer
211     //
212   end;
213   PWMFStretchDIBRecord = ^TWMFStretchDIBRecord;
214 
215   TWMFBitmapCoreHeader = packed record
216     HeaderSize: DWord;
217     Width: Word;
218     Height: Word;
219     Planes: Word;
220     BitCount: Word;
221   end;
222   PWMFBitmapCoreHeader = ^TWMFBitmapCoreHeader;
223 
224   TWMFBitmapInfoHeader = packed record
225     HeaderSize: DWord;
226     Width: LongInt;
227     Height: LongInt;
228     Planes: Word;
229     BitCount: Word;
230     Compression: DWord;
231     ImageSize: DWord;
232     XPelsPerMeter: DWord;
233     YPelsPerMeter: DWord;
234     ColorsUsed: DWord;
235     ColorImporant: DWord;
236   end;
237   PWMFBitmapInfoHeader = ^TWMFBitmapInfoHeader;
238 
239 const
240   // WMF Magic number in Placeable Meta Header
241   WMF_MAGIC_NUMBER = $9AC6CDD7;
242 
243   // WMF Record types
244   META_EOF = $0000;
245   META_REALIZEPALETTE = $0035;
246   META_SETPALENTRIES = $0037;
247   META_SETBKMODE = $0102;
248   META_SETMAPMODE = $0103;
249   META_SETROP2 = $0104;
250   META_SETRELABS = $0105;
251   META_SETPOLYFILLMODE = $0106;
252   META_SETSTRETCHBLTMODE = $0107;
253   META_SETTEXTCHAREXTRA = $0108;
254   META_RESTOREDC = $0127;
255   META_RESIZEPALETTE = $0139;
256   META_DIBCREATEPATTERNBRUSH = $0142;
257   META_SETLAYOUT = $0149;
258   META_SETBKCOLOR = $0201;
259   META_SETTEXTCOLOR = $0209;
260   META_OFFSETVIEWPORTORG = $0211;
261   META_LINETO = $0213;
262   META_MOVETO = $0214;
263   META_OFFSETCLIPRGN = $0220;
264   META_FILLREGION = $0228;
265   META_SETMAPPERFLAGS = $0231;
266   META_SELECTPALETTE = $0234;
267   META_POLYGON = $0324;
268   META_POLYLINE = $0325;
269   META_SETTEXTJUSTIFICATION = $020A;
270   META_SETWINDOWORG = $020B;
271   META_SETWINDOWEXT = $020C;
272   META_SETVIEWPORTORG = $020D;
273   META_SETVIEWPORTEXT = $020E;
274   META_OFFSETWINDOWORG = $020F;
275   META_SCALEWINDOWEXT = $0410;
276   META_SCALEVIEWPORTEXT = $0412;
277   META_EXCLUDECLIPRECT = $0415;
278   META_INTERSECTCLIPRECT = $0416;
279   META_ELLIPSE = $0418;
280   META_FLOODFILL = $0419;
281   META_FRAMEREGION = $0429;
282   META_ANIMATEPALETTE = $0436;
283   META_TEXTOUT = $0521;
284   META_POLYPOLYGON = $0538;
285   META_EXTFLOODFILL = $0548;
286   META_RECTANGLE = $041B;
287   META_SETPIXEL = $041F;
288   META_ROUNDRECT = $061C;
289   META_PATBLT = $061D;
290 
291   META_SAVEDC = $001E;
292   META_PIE = $081A;
293   META_STRETCHBLT = $0B23;
294   META_ESCAPE = $0626;
295   META_INVERTREGION = $012A;
296   META_PAINTREGION = $012B;
297   META_SELECTCLIPREGION = $012C;
298   META_SELECTOBJECT = $012D;
299   META_SETTEXTALIGN = $012E;
300   META_ARC = $0817;
301   META_CHORD = $0830;
302   META_BITBLT = $0922;
303   META_EXTTEXTOUT = $0a32;
304   META_SETDIBTODEV = $0d33;
305   META_DIBBITBLT = $0940;
306   META_DIBSTRETCHBLT = $0b41;
307   META_STRETCHDIB = $0f43;
308   META_DELETEOBJECT = $01f0;
309   META_CREATEPALETTE = $00f7;
310   META_CREATEPATTERNBRUSH = $01F9;
311   META_CREATEPENINDIRECT = $02FA;
312   META_CREATEFONTINDIRECT = $02FB;
313   META_CREATEBRUSHINDIRECT = $02FC;
314   META_CREATEREGION = $06FF;
315 
316   // Brush styles
317   BS_SOLID = $0000;
318   BS_NULL = $0001;
319   BS_HATCHED = $0002;
320   BS_PATTERN = $0003;
321   BS_INDEXED = $0004;
322   BS_DIBPATTERN = $0005;
323   BS_DIBPATTERNPT = $0006;
324   BS_PATTERN8X8 = $0007;
325   BS_DIBPATTERN8X8 = $0008;
326   BS_MONOPATTERN = $0009;
327 
328   // Character sets
329   ANSI_CHARSET = $00000000;
330   DEFAULT_CHARSET = $00000001;
331   SYMBOL_CHARSET = $00000002;
332   MAC_CHARSET = $0000004D;
333   SHIFTJIS_CHARSET = $00000080;
334   HANGUL_CHARSET = $00000081;
335   JOHAB_CHARSET = $00000082;
336   GB2312_CHARSET = $00000086;
337   CHINESEBIG5_CHARSET = $00000088;
338   GREEK_CHARSET = $000000A1;
339   TURKISH_CHARSET = $000000A2;
340   VIETNAMESE_CHARSET = $000000A3;
341   HEBREW_CHARSET = $000000B1;
342   ARABIC_CHARSET = $000000B2;
343   BALTIC_CHARSET = $000000BA;
344   RUSSIAN_CHARSET = $000000CC;
345   THAI_CHARSET = $000000DE;
346   EASTEUROPE_CHARSET = $000000EE;
347   OEM_CHARSET = $000000FF;
348 
349   // ExtTextOutOptions flags
350   ETO_OPAQUE = $0002;
351   ETO_CLIPPED = $0004;
352   ETO_GLYPHINDEX = $0010;
353   ETO_RTLREADING = $0080;
354   ETO_NUMERICSLOCAL = $0400;
355   ETO_NUMERICSLATIN = $0800;
356   ETO_PDY = $2000;
357 
358   // Family font
359   FF_DONTCARE = $00;
360   FF_ROMAN = $01;
361   FF_SWISS = $02;
362   FF_MODERN = $03;
363   FF_SCRIPT = $04;
364   FF_DECORATIVE = $05;
365 
366   // Flood fill
367   FLOODFILLBORDER = $0000;
368   FLOODFILLSURFACE = $0001;
369 
370   // Font quality
371   DEFAULT_QUALITY = $00;
372   DRAFT_QUALITY = $01;
373   PROOF_QUALITY = $02;
374   NONANTIALIASED_QUALITY = $03;
375   ANTIALIASED_QUALITY = $04;
376   CLEARTYPE_QUALITY = $05;
377 
378   // Hatch style
379   HS_HORIZONTAL = $0000;
380   HS_VERTICAL = $0001;
381   HS_FDIAGONAL = $0002; // \\\
382   HS_BDIAGONAL = $0003; // ///
383   HS_CROSS = $0004;     // +++
384   HS_DIAGCROSS = $0005; // xxxx
385 
386   // Map mode
387   MM_TEXT = $0001;         // 1 logical unit = 1 device pixel. +x right, +y down
388   MM_LOMETRIC = $0002;     // 1 logical unit = 0.1 mm. +x right, +y up
389   MM_HIMETRIC = $0003;     // 1 logical unit = 0.01 mm. +x right, +y up
390   MM_LOENGLISH = $0004;    // 1 logical unit = 0.01 inch. +x right, +y up
391   MM_HIENGLISH = $0005;    // 1 logical unit = 0.001 inch. +x right, +y up
392   MM_TWIPS = $0006;        // 1 logical unit = 1/20 point = 1/1440 inch (twip). +x right, +y up
393   MM_ISOTROPIC = $0007;    // arbitrary units, equally scaled axes. --> META_SETWINDOWEXT, META_SETWINDOWORG
394   MM_ANISOTROPIC = $0008;  // arbitrary units, arbitrarily scaled axes.
395 
396   // Metafile enumeration
397   MEMORYMETAFILE = $0001;  // Metafile is stored in memory
398   DISKMETAFILE = $0002;    // ... on disk.
399 
400   // Background MixMode for text, hatched brushes and other nonsolid pen styles
401   BM_TRANSPARENT = $0001;
402   BM_OPAQUE = $0002;
403 
404   // Pen styles
405   PS_COSMETIC = $0000;
406   PS_ENDCAP_ROUND = $0000;
407   PS_JOIN_ROUND = $0000;
408   PS_SOLID = $0000;
409   PS_DASH = $0001;
410   PS_DOT = $0002;
411   PS_DASHDOT = $0003;
412   PS_DASHDOTDOT = $0004;
413   PS_NULL = $0005;
414   PS_INSIDEFRAME = $0006;
415   PS_USERSTYLE = $0007;
416   PS_ALTERNATE = $0008;
417   PS_ENDCAP_SQUARE = $0100;
418   PS_ENDCAP_FLAT = $0200;
419   PS_JOIN_BEVEL = $1000;
420   PS_JOIN_MITER = $2000;
421 
422   // PitchFont
423   DEFAULT_PITCH = 0;
424   FIXED_PITCH = 1;
425   VARIABLE_PITCH = 2;
426 
427   // PolyFillMode
428   ALTERNATE = $0001;
429   WINDING = $0002;
430 
431   // TextAlignment flags
432   TA_NOUPDATECP = $0000;
433   TA_LEFT = $0000;
434   TA_TOP = $0000;
435   TA_UPDATECP = $0001;
436   TA_RIGHT = $0002;
437   TA_CENTER = $0006;   // Value is correct ($0004 looks more reasonable, though)
438   TA_BOTTOM = $0008;
439   TA_BASELINE = $0018;
440   TA_RTLREADING = $0100;
441 
442   // Vertical text alignment flags
443   // Used if font has vertical baseline, such as Kanji.
444   VTA_TOP = $0000;
445   VTA_RIGHT = $0000;
446   VTA_BOTTOM = $0002;
447   VTA_CENTER = $0006;  // why not $0004?
448   VTA_BASELINE = $0018;
449 
450   // Ternary Raster Operations
451   BLACKNESS = $00;
452   NOTSRCERASE = $11;
453   NOTSRCCOPY = $33;
454   SRCERASE = $44;
455   DSTINVERT = $55;
456   SRCINVERT = $66;
457   MERGEPAINT = $BB;
458   MERGECOPY = $C0;
459   SRCCOPY = $CC;
460   SRCPAINT = $FF;
461   PATCOPY = $F0;
462   PATPAINT = $FB;
463   WHITENESS = $FF;
464   // ... plus many more...
465 
466   // Color usage
467   DIB_RGB_COLORS = $0000;
468   DIB_PAL_COLORS = $0001;
469   DIB_PAL_INDICES = $0002;
470 
471   // Compression
472   BI_RGB = $0000;
473   BI_RLE8 = $0001;
474   BI_RLE4 = $0002;
475   BI_BITFIELDS = $0003;
476   BI_JPEG = $0004;
477   BI_PNG = $0005;
478   BI_CMYK = $000B;
479   BI_CMYKRLE8 = $000C;
480   BI_CMYKRLE4 = $000D;
481 
WMF_GetRecordTypeNamenull482 function WMF_GetRecordTypeName(ARecordType: Word): String;
483 
484 implementation
485 
WMF_GetRecordTypeNamenull486 function WMF_GetRecordTypeName(ARecordType: Word): String;
487 begin
488   Result := '';
489   case ARecordType of
490     META_EOF : Result := 'META_EOF';
491     META_REALIZEPALETTE: Result := 'META_REALIZEPALETTE';
492     META_SETPALENTRIES: Result := 'META_SETPALENTRIES';
493     META_SETBKMODE: Result := 'META_SETBKMODE';
494     META_SETMAPMODE: Result := 'META_SETMAPMODE';
495     META_SETROP2: Result := 'META_SETROP2';
496     META_SETRELABS: Result := 'META_SETRELABS';
497     META_SETPOLYFILLMODE: Result := 'META_SETPOLYFILLMODE';
498     META_SETSTRETCHBLTMODE: Result := 'META_SETSTRETCHBLTMODE';
499     META_SETTEXTCHAREXTRA: Result := 'META_SETTEXTCHAREXTRA';
500     META_RESTOREDC: Result := 'META_RESTOREDC';
501     META_RESIZEPALETTE: Result := 'META_RESIZEPALETTE';
502     META_DIBCREATEPATTERNBRUSH: Result := 'META_DIBCREATEPATTERNBRUSH';
503     META_SETLAYOUT: Result := 'META_SETLAYOUT';
504     META_SETBKCOLOR: Result := 'META_SETBKCOLOR';
505     META_SETTEXTCOLOR: Result := 'META_SETTEXTCOLOR';
506     META_OFFSETVIEWPORTORG: Result := 'META_OFFSETVIEWPORTORG';
507     META_LINETO: Result := 'META_LINETO';
508     META_MOVETO: Result := 'META_MOVETO';
509     META_OFFSETCLIPRGN: Result := 'META_OFFSETCLIPRGN';
510     META_FILLREGION: Result := 'META_FILLREGION';
511     META_SETMAPPERFLAGS: Result := 'META_SETMAPPERFLAGS';
512     META_SELECTPALETTE: Result := 'META_SELECTPALETTE';
513     META_POLYGON: Result := 'META_POLYGON';
514     META_POLYLINE: Result := 'META_POLYLINE';
515     META_SETTEXTJUSTIFICATION: Result := 'META_SETTEXTJUSTIFICATION';
516     META_SETWINDOWORG: Result := 'META_SETWINDOWORG';
517     META_SETWINDOWEXT: Result := 'META_SETWINDOWEXT';
518     META_SETVIEWPORTORG: Result := 'META_SETVIEWPORTORG';
519     META_SETVIEWPORTEXT: Result := 'META_SETVIEWPORTEXT';
520     META_OFFSETWINDOWORG: Result := 'META_OFFSETWINDOWORG';
521     META_SCALEWINDOWEXT: Result := 'META_SCALEWINDOWEXT';
522     META_SCALEVIEWPORTEXT: Result := 'META_SCALEVIEWPORTEXT';
523     META_EXCLUDECLIPRECT: Result := 'META_EXCLUDECLIPRECT';
524     META_INTERSECTCLIPRECT: Result := 'META_INTERSECTCLIPRECT';
525     META_ELLIPSE: Result := 'META_ELLIPSE';
526     META_FLOODFILL: Result := 'META_FLOODFILL';
527     META_FRAMEREGION: Result := 'META_FRAMEREGION';
528     META_ANIMATEPALETTE: Result := 'META_ANIMATEPALETTE';
529     META_TEXTOUT: Result := 'META_TEXTOUT';
530     META_POLYPOLYGON: Result := 'META_POLYPOLYGON';
531     META_EXTFLOODFILL: Result := 'META_EXTFLOODFILL';
532     META_RECTANGLE: Result := 'META_RECTANGLE';
533     META_SETPIXEL: Result := 'META_SETPIXEL';
534     META_ROUNDRECT: Result := 'META_ROUNDRECT';
535     META_PATBLT: Result := 'META_PATBLT';
536     META_SAVEDC: Result := 'META_SAVEDC';
537     META_PIE: Result := 'META_PIE';
538     META_STRETCHBLT: Result := 'META_STRETCHBLT';
539     META_ESCAPE: Result := 'META_ESCAPE';
540     META_INVERTREGION: Result := 'META_INVERTREGION';
541     META_PAINTREGION: Result := 'META_PAINTREGION';
542     META_SELECTCLIPREGION: Result := 'META_SELECTCLIPREGION';
543     META_SELECTOBJECT: Result := 'META_SELECTOBJECT';
544     META_SETTEXTALIGN: Result := 'META_SETTEXTALIGN';
545     META_ARC: Result := 'META_ARC';
546     META_CHORD: Result := 'META_CHORD';
547     META_BITBLT: Result := 'META_BITBLT';
548     META_EXTTEXTOUT: Result := 'META_EXTTEXTOUT';
549     META_SETDIBTODEV: Result := 'META_SETDIBTODEV';
550     META_DIBBITBLT: Result := 'META_DIBBITBLT';
551     META_DIBSTRETCHBLT: Result := 'META_DIBSTRETCHBLT';
552     META_STRETCHDIB: Result := 'META_STRETCHDIB';
553     META_DELETEOBJECT: Result := 'META_DELETEOBJECT';
554     META_CREATEPALETTE: Result := 'META_CREATEPALETTE';
555     META_CREATEPATTERNBRUSH: Result := 'META_CREATEPATTERNBRUSH';
556     META_CREATEPENINDIRECT: Result := 'META_CREATEPENINDIRECT';
557     META_CREATEFONTINDIRECT: Result := 'META_CREATEFONTINDIRECT';
558     META_CREATEBRUSHINDIRECT: Result := 'META_CREATEBRUSHINDIRECT';
559     META_CREATEREGION: Result := 'META_CREATEREGION';
560   end;
561 end;
562 
563 end.
564