1 /* This file is part of the KDE project
2  *
3  * Copyright (C) 2010-11 Inge Wallin <inge@lysator.liu.se>
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Library General Public
7  * License as published by the Free Software Foundation; either
8  * version 2 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Library General Public License for more details.
14  *
15  * You should have received a copy of the GNU Library General Public License
16  * along with this library; see the file COPYING.LIB.  If not, write to
17  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18  * Boston, MA 02110-1301, USA
19  */
20 
21 
22 #ifndef WMFENUMS_H
23 #define WMFENUMS_H
24 
25 
26 /**
27    Namespace for Windows Metafile (WMF) classes
28 */
29 namespace Libwmf
30 {
31 
32 
33 // ----------------------------------------------------------------
34 //                             Enums
35 
36 /**
37    WMF 2.1.1.1 RecordType Enumeration
38 
39    The RecordType Enumeration defines the types of records that can be used in WMF metafiles.
40 */
41 
42 enum RecordType {
43     META_EOF = 0x0000,
44     META_SETBKCOLOR = 0x0201,
45     META_SETBKMODE = 0x0102,
46     META_SETMAPMODE = 0x0103,
47     META_SETROP2 = 0x0104,
48     META_SETRELABS = 0x0105,
49     META_SETPOLYFILLMODE = 0x0106,
50     META_SETSTRETCHBLTMODE = 0x0107,
51     META_SETTEXTCHAREXTRA = 0x0108,
52     META_SETTEXTCOLOR = 0x0209,
53     META_SETTEXTJUSTIFICATION = 0x020A,
54     META_SETWINDOWORG = 0x020B,
55     META_SETWINDOWEXT = 0x020C,
56     META_SETVIEWPORTORG = 0x020D,
57     META_SETVIEWPORTEXT = 0x020E,
58     META_OFFSETWINDOWORG = 0x020F,
59     META_SCALEWINDOWEXT = 0x0410,
60     META_OFFSETVIEWPORTORG = 0x0211,
61     META_SCALEVIEWPORTEXT = 0x0412,
62     META_LINETO = 0x0213,
63     META_MOVETO = 0x0214,
64     META_EXCLUDECLIPRECT = 0x0415,
65     META_INTERSECTCLIPRECT = 0x0416,
66     META_ARC = 0x0817,
67     META_ELLIPSE = 0x0418,
68     META_FLOODFILL = 0x0419,
69     META_PIE = 0x081A,
70     META_RECTANGLE = 0x041B,
71     META_ROUNDRECT = 0x061C,
72     META_PATBLT = 0x061D,
73     META_SAVEDC = 0x001E,
74     META_SETPIXEL = 0x041F,
75     META_OFFSETCLIPRGN = 0x0220,
76     META_TEXTOUT = 0x0521,
77     META_BITBLT = 0x0922,
78     META_STRETCHBLT = 0x0B23,
79     META_POLYGON = 0x0324,
80     META_POLYLINE = 0x0325,
81     META_ESCAPE = 0x0626,
82     META_RESTOREDC = 0x0127,
83     META_FILLREGION = 0x0228,
84     META_FRAMEREGION = 0x0429,
85     META_INVERTREGION = 0x012A,
86     META_PAINTREGION = 0x012B,
87     META_SELECTCLIPREGION = 0x012C,
88     META_SELECTOBJECT = 0x012D,
89     META_SETTEXTALIGN = 0x012E,
90     // No 2F
91     META_CHORD = 0x0830,
92     META_SETMAPPERFLAGS = 0x0231,
93     META_EXTTEXTOUT = 0x0a32,
94     META_SETDIBTODEV = 0x0d33,
95     META_SELECTPALETTE = 0x0234,
96     META_REALIZEPALETTE = 0x0035,
97     META_ANIMATEPALETTE = 0x0436,
98     META_SETPALENTRIES = 0x0037,
99     META_POLYPOLYGON = 0x0538,
100     META_RESIZEPALETTE = 0x0139,
101     META_DIBBITBLT = 0x0940,
102     META_DIBSTRETCHBLT = 0x0b41,
103     META_DIBCREATEPATTERNBRUSH = 0x0142,
104     META_STRETCHDIB = 0x0f43,
105     // No 44 - 47
106     META_EXTFLOODFILL = 0x0548,
107     META_SETLAYOUT = 0x0149,
108     // Some strange things in the 4a-5f range, that is not documented,
109     // but the old code has a few unimplemented functions here.
110 
111     // BIG GAP HERE
112     META_DELETEOBJECT = 0x01f0,
113     // No f1-f6
114     META_CREATEPALETTE = 0x00f7,
115     META_CREATEBRUSH = 0x00f8,  // Can't find this in [MS-WMF].pdf, but is unimplemented here.
116     META_CREATEPATTERNBRUSH = 0x01F9,
117     META_CREATEPENINDIRECT = 0x02FA,
118     META_CREATEFONTINDIRECT = 0x02FB,
119     META_CREATEBRUSHINDIRECT = 0x02FC,
120     META_CREATEREGION = 0x06FF
121 };
122 
123 // MS-WMF 2.1.1.2 Binary RasterOperation Enumeration
124 
125 enum WmfBinaryRasterOperation {
126     R2_BLACK       = 0x0001,
127     R2_NOTMERGEPEN = 0x0002,
128     R2_MASKNOTPEN  = 0x0003,
129     R2_NOTCOPYPEN  = 0x0004,
130     R2_MASKPENNOT  = 0x0005,
131     R2_NOT         = 0x0006,
132     R2_XORPEN      = 0x0007,
133     R2_NOTMASKPEN  = 0x0008,
134     R2_MASKPEN     = 0x0009,
135     R2_NOTXORPEN   = 0x000A,
136     R2_NOP         = 0x000B,
137     R2_MERGENOTPEN = 0x000C,
138     R2_COPYPEN     = 0x000D,
139     R2_MERGEPENNOT = 0x000E,
140     R2_MERGEPEN    = 0x000F,
141     R2_WHITE       = 0x0010
142 };
143 
144 
145 /**
146    WMF 2.1.1.3 BitCount Enumeration
147 
148    The BitCount Enumeration specifies the number of bits that define
149    each pixel and the maximum number of colors in a device-independent
150    bitmap (DIB).
151 */
152 enum WmfBitCount {
153     BI_BITCOUNT_0 = 0x0000,
154     BI_BITCOUNT_1 = 0x0001,
155     BI_BITCOUNT_2 = 0x0004,
156     BI_BITCOUNT_3 = 0x0008,
157     BI_BITCOUNT_4 = 0x0010,
158     BI_BITCOUNT_5 = 0x0018,
159     BI_BITCOUNT_6 = 0x0020
160 };
161 
162 
163 /**
164    MS-WMF 2.1.1.4 BrushStyle Enumeration
165 
166    The BrushStyle Enumeration specifies the different possible brush
167    types that can be used in graphics operations. For more
168    information, see the specification of the Brush Object (section 2.2.1.1).
169 */
170 
171 enum WmfBrushStyle {
172     BS_SOLID         = 0x0000,
173     BS_NULL          = 0x0001,
174     BS_HATCHED       = 0x0002,
175     BS_PATTERN       = 0x0003,
176     BS_INDEXED       = 0x0004,
177     BS_DIBPATTERN    = 0x0005,
178     BS_DIBPATTERNPT  = 0x0006,
179     BS_PATTERN8X8    = 0x0007,
180     BS_DIBPATTERN8X8 = 0x0008,
181     BS_MONOPATTERN   = 0x0009
182 };
183 
184 
185 /**
186    MS-WMF 2.1.1.5 CharacterSet Enumeration
187 
188    The CharacterSet Enumeration defines the possible sets of character
189    glyphs that are defined in fonts for graphics output.
190 */
191 
192 enum WmfCharacterSet {
193     ANSI_CHARSET        = 0x00000000,
194     DEFAULT_CHARSET     = 0x00000001,
195     SYMBOL_CHARSET      = 0x00000002,
196     MAC_CHARSET         = 0x0000004D,
197     SHIFTJIS_CHARSET    = 0x00000080,
198     HANGUL_CHARSET      = 0x00000081,
199     JOHAB_CHARSET       = 0x00000082,
200     GB2312_CHARSET      = 0x00000086,
201     CHINESEBIG5_CHARSET = 0x00000088,
202     GREEK_CHARSET       = 0x000000A1,
203     TURKISH_CHARSET     = 0x000000A2,
204     VIETNAMESE_CHARSET  = 0x000000A3,
205     HEBREW_CHARSET      = 0x000000B1,
206     ARABIC_CHARSET      = 0x000000B2,
207     BALTIC_CHARSET      = 0x000000BA,
208     RUSSIAN_CHARSET     = 0x000000CC,
209     THAI_CHARSET        = 0x000000DE,
210     EASTEUROPE_CHARSET  = 0x000000EE,
211     OEM_CHARSET         = 0x000000FF
212 };
213 
214 
215 /**
216    MS-WMF 2.1.1.6 ColorUsage Enumeration
217 
218    The ColorUsage Enumeration specifies whether a color table exists
219    in a device -independent bitmap (DIB) and how to interpret its values.
220 */
221 
222 enum WmfColorUsage {
223     DIB_RGB_COLORS  = 0x0000,
224     DIB_PAL_COLORS  = 0x0001,
225     DIB_PAL_INDICES = 0x0002
226 };
227 
228 
229 /**
230    MS-WMF 2.1.1.7 Compression Enumeration
231 
232    The Compression Enumeration specifies the type of compression for a
233    bitmap image.
234 */
235 
236 enum WmfCompression {
237     BI_RGB       = 0x0000,
238     BI_RLE8      = 0x0001,
239     BI_RLE4      = 0x0002,
240     BI_BITFIELDS = 0x0003,
241     BI_JPEG      = 0x0004,
242     BI_PNG       = 0x0005,
243     BI_CMYK      = 0x000B,
244     BI_CMYKRLE8  = 0x000C,
245     BI_CMYKRLE4  = 0x000D
246 };
247 
248 
249 /**
250    MS-WMF 2.1.1.8 FamilyFont Enumeration
251 
252    The FamilyFont enumeration specifies the font family. Font families
253    describe the look of a font in a general way. They are intended for
254    specifying fonts when the exact typeface desired is not available.
255 */
256 
257 typedef enum {
258     FF_DONTCARE   = 0x00,
259     FF_ROMAN      = 0x01,
260     FF_SWISS      = 0x02,
261     FF_MODERN     = 0x03,
262     FF_SCRIPT     = 0x04,
263     FF_DECORATIVE = 0x05
264 } WmfFamilyFont;
265 
266 
267 /**
268    MS-WMF 2.1.1.9 FloodFill Enumeration
269 
270    The FloodFill Enumeration specifies the type of fill operation to
271    be performed.
272 */
273 
274 enum WmfFloodFill {
275     FLOODFILLBORDER  = 0x0000,
276     FLOODFILLSURFACE = 0x0001
277 };
278 
279 
280 /**
281    MS-WMF 2.1.1.10 FontQuality Enumeration
282 
283    The FontQuality Enumeration specifies how closely the attributes of
284    the logical font should match those of the physical font when
285    rendering text.
286 */
287 
288 enum WmfFontQuality {
289     DEFAULT_QUALITY        = 0x00,
290     DRAFT_QUALITY          = 0x01,
291     PROOF_QUALITY          = 0x02,
292     NONANTIALIASED_QUALITY = 0x03,
293     ANTIALIASED_QUALITY    = 0x04,
294     CLEARTYPE_QUALITY      = 0x05
295 };
296 
297 
298 /*
299   MS-WMF 2.1.1.11 GamutMappingIntent Enumeration
300 
301   The GamutMappingIntent Enumeration specifies the relationship
302   between logical and physical colors.
303 */
304 
305 enum WmfGamutMappingIntent {
306     LCS_GM_ABS_COLORIMETRIC = 0x00000008,
307     LCS_GM_BUSINESS         = 0x00000001,
308     LCS_GM_GRAPHICS         = 0x00000002,
309     LCS_GM_IMAGES           = 0x00000004
310 };
311 
312 
313 /**
314    MS-WMF 2.1.1.12 HatchStyle Enumeration
315 
316    The HatchStyle Enumeration specifies the hatch pattern.
317 */
318 
319 enum WmfHatchStyle {
320     HS_HORIZONTAL = 0x0000,
321     HS_VERTICAL   = 0x0001,
322     HS_FDIAGONAL  = 0x0002,
323     HS_BDIAGONAL  = 0x0003,
324     HS_CROSS      = 0x0004,
325     HS_DIAGCROSS  = 0x0005
326 };
327 
328 
329 /**
330    MS-WMF 2.1.1.13 Layout Enumeration
331 
332    The Layout Enumeration defines options for controlling the
333    direction in which text and graphics are drawn.
334 */
335 
336 enum WmfLayout {
337     LAYOUT_LTR = 0x0000,
338     LAYOUT_RTL = 0x0001,
339     LAYOUT_BTT = 0x0002,
340     LAYOUT_VBH = 0x0004,
341     LAYOUT_BITMAPORIENTATIONPRESERVED = 0x0008
342 };
343 
344 
345 /**
346    MS-WMF 2.1.1.14 LogicalColorSpace Enumeration
347 
348    The LogicalColorSpace Enumeration specifies the type of color space.
349 */
350 
351 enum WmfLogicalColorSpace {
352     LCS_CALIBRATED_RGB      = 0x00000000,
353     LCS_sRGB                = 0x73524742,
354     LCS_WINDOWS_COLOR_SPACE = 0x57696E20
355 };
356 
357 
358 /**
359    MS-WMF 2.1.1.15 LogicalColorSpaceV5 Enumeration
360 
361    The LogicalColorSpaceV5 Enumeration is used to specify where to
362    find color profile information for a DeviceIndependentBitmap (DIB)
363    Object (section 2.2.2.9) that has a header of type BitmapV5Header
364    Object (section 2.2.2.5).
365 */
366 
367 enum WmfLogicalColorSpaceV5 {
368     LCS_PROFILE_LINKED   = 0x4C494E4B,
369     LCS_PROFILE_EMBEDDED = 0x4D424544
370 };
371 
372 
373 /**
374    MS-WMF 2.1.1.16 MapMode Enumeration
375 
376    The MapMode Enumeration defines how logical units are mapped to
377    physical units; that is, assuming that the origins in both the
378    logical and physical coordinate systems are at the same point on
379    the drawing surface, what is the physical coordinate (x',y') that
380    corresponds to logical coordinate (x,y).
381 */
382 
383 enum WmfMapMode {
384     MM_TEXT        = 0x0001,
385     MM_LOMETRIC    = 0x0002,
386     MM_HIMETRIC    = 0x0003,
387     MM_LOENGLISH   = 0x0004,
388     MM_HIENGLISH   = 0x0005,
389     MM_TWIPS       = 0x0006,
390     MM_ISOTROPIC   = 0x0007,
391     MM_ANISOTROPIC = 0x0008
392 };
393 
394 
395 /**
396    MS-WMF 2.1.1.18 Metafile Type Enumeration
397 
398    The MetafileType Enumeration specifies where the metafile is stored.
399 */
400 
401 enum WmfMetafileType {
402     MEMORYMETAFILE = 0x0001,
403     DISKMETAFILE   = 0x0002
404 };
405 
406 
407 /**
408    MS-WMF 2.1.1.19 MetafileVersion Enumeration
409 
410    The MetafileVersion Enumeration defines values that specify support
411    for device-independent bitmaps (DIBs) in metafiles.
412 */
413 
414 enum WmfMetafileVersion {
415     METAVERSION100 = 0x0100,
416     METAVERSION300 = 0x0300
417 };
418 
419 
420 /**
421    MS-WMF 2.1.1.20 MixMode Enumeration
422 
423    The MixMode Enumeration specifies the background mix mode for text,
424    hatched brushes, and other nonsolid pen styles.
425 */
426 
427 enum WmfMixMode {
428     TRANSPARENT = 0x0001,
429     OPAQUE      = 0x0002
430 };
431 
432 
433 /**
434    MS-WMF 2.1.1.21 OutPrecision Enumeration
435 
436    The OutPrecision enumeration defines values for output precision,
437    which is the requirement for the font mapper to match specific font
438    parameters, including height, width, character orientation,
439    escapement, pitch, and font type.
440 */
441 
442 enum WmfOutPrecision {
443     OUT_DEFAULT_PRECIS        = 0x00000000,
444     OUT_STRING_PRECIS         = 0x00000001,
445     OUT_STROKE_PRECIS         = 0x00000003,
446     OUT_TT_PRECIS             = 0x00000004,
447     OUT_DEVICE_PRECIS         = 0x00000005,
448     OUT_RASTER_PRECIS         = 0x00000006,
449     OUT_TT_ONLY_PRECIS        = 0x00000007,
450     OUT_OUTLINE_PRECIS        = 0x00000008,
451     OUT_SCREEN_OUTLINE_PRECIS = 0x00000009,
452     OUT_PS_ONLY_PRECIS        = 0x0000000A
453 };
454 
455 
456 /**
457    MS-WMF 2.1.1.22 PaletteEntryFlag Enumeration
458 
459    The PaletteEntryFlag Enumeration specifies how the palette entry should be used.
460 */
461 
462 enum WmfPaletteEntryFlag {
463     PC_RESERVED   = 0x01,
464     PC_EXPLICIT   = 0x02,
465     PC_NOCOLLAPSE = 0x04
466 };
467 
468 
469 /**
470    MS-WMF 2.1.1.23 Pe nStyle Enumeration
471 
472    The 16-bit PenStyle Enumeration is used to specify different types
473    of pens that can be used in graphics operations.
474 
475    Various styles can be combined by using a logical OR statement, one
476    from each subsection of Style, EndCap, Join, and Type (Cosmetic).
477 */
478 
479 enum WmfPenStyle {
480     PS_COSMETIC      = 0x0000,
481     PS_ENDCAP_ROUND  = 0x0000,
482     PS_JOIN_ROUND    = 0x0000,
483     PS_SOLID         = 0x0000,
484     PS_DASH          = 0x0001,
485     PS_DOT           = 0x0002,
486     PS_DASHDOT       = 0x0003,
487     PS_DASHDOTDOT    = 0x0004,
488     PS_NULL          = 0x0005,
489     PS_INSIDEFRAME   = 0x0006,
490     PS_USERSTYLE     = 0x0007,
491     PS_ALTERNATE     = 0x0008,
492     PS_ENDCAP_SQUARE = 0x0100,
493     PS_ENDCAP_FLAT   = 0x0200,
494     PS_JOIN_BEVEL    = 0x1000,
495     PS_JOIN_MITER    = 0x2000
496 };
497 
498 
499 /**
500    MS-WMF 2.1.1.24 PitchFont Enumeration
501 
502    The PitchFont enumeration defines values that are used for
503    specifying characteristics of a font. The values are used to
504    indicate whether the characters in a font have a fixed or variable
505    width, or pitch.
506 */
507 
508 enum WmfPitchFont {
509     DEFAULT_PITCH  = 0,
510     FIXED_PITCH    = 1,
511     VARIABLE_PITCH = 2
512 };
513 
514 
515 /*
516    MS-WMF 2.1.1.25 PolyFillMode Enumeration
517 
518    The PolyFillMode Enumeration specifies the method used for filling
519    a polygon.
520 */
521 
522 enum WmfPolyFillMode {
523     ALTERNATE = 0x0001,
524     WINDING   = 0x0002
525 };
526 
527 
528 /**
529    MS-WMF 2.1.1.29 StretchMode Enumeration
530 
531    The StretchMode Enumeration specifies the bitmap stretching mode,
532    which defines how the system combines rows or columns of a bitmap
533    with existing pixels.
534 */
535 
536 enum WmfStretchMode {
537     BLACKONWHITE = 0x0001,
538     WHITEONBLACK = 0x0002,
539     COLORONCOLOR = 0x0003,
540     HALFTONE     = 0x0004
541 };
542 
543 
544 /**
545    MS-WMF 2.1.1.30 Ternary RasterOperation Enumeration
546 
547    The TernaryRasterOperation Enumeration specifies ternary raster
548    operation codes, which define how to combine the bits in a source
549    bitmap with the bits in a destination bitmap.
550 */
551 
552 enum WmfTernaryRasterOperation {
553     BLACKNESS = 0x00,
554     DPSOON = 0x01,
555     DPSONA = 0x02,
556     PSON = 0x03,
557     SDPONA = 0x04,
558     DPON = 0x05,
559     PDSXNON = 0x06,
560     PDSAON = 0x07,
561     SDPNAA = 0x08,
562     PDSXON = 0x09,
563     DPNA = 0x0A,
564     PSDNAON = 0x0B,
565     SPNA = 0x0C,
566     PDSNAON = 0x0D,
567     PDSONON = 0x0E,
568     PN = 0x0F,
569     PDSONA = 0x10,
570     NOTSRCERASE = 0x11,
571     SDPXNON = 0x12,
572     SDPAON = 0x13,
573     DPSXNON = 0x14,
574     DPSAON = 0x15,
575     PSDPSANAXX = 0x16,
576     SSPXDSXAXN = 0x17,
577     SPXPDXA = 0x18,
578     SDPSANAXN = 0x19,
579     PDSPAOX = 0x1A,
580     SDPSXAXN = 0x1B,
581     PSDPAOX = 0x1C,
582     DSPDXAXN = 0x1D,
583     PDSOX = 0x1E,
584     PDSOAN = 0x1F,
585     DPSNAA = 0x20,
586     SDPXON = 0x21,
587     DSNA = 0x22,
588     SPDNAON = 0x23,
589     SPXDSXA = 0x24,
590     PDSPANAXN = 0x25,
591     SDPSAOX = 0x26,
592     SDPSXNOX = 0x27,
593     DPSXA = 0x28,
594     PSDPSAOXXN = 0x29,
595     DPSANA = 0x2A,
596     SSPXPDXAXN = 0x2B,
597     SPDSOAX = 0x2C,
598     PSDNOX = 0x2D,
599     PSDPXOX = 0x2E,
600     PSDNOAN = 0x2F,
601     PSNA = 0x30,
602     SDPNAON = 0x31,
603     SDPSOOX = 0x32,
604     NOTSRCCOPY = 0x33,
605     SPDSAOX = 0x34,
606     SPDSXNOX = 0x35,
607     SDPOX = 0x36,
608     SDPOAN = 0x37,
609     PSDPOAX = 0x38,
610     SPDNOX = 0x39,
611     SPDSXOX = 0x3A,
612     SPDNOAN = 0x3B,
613     PSX = 0x3C,
614     SPDSONOX = 0x3D,
615     SPDSNAOX = 0x3E,
616     PSAN = 0x3F,
617     PSDNAA = 0x40,
618     DPSXON = 0x41,
619     SDXPDXA = 0x42,
620     SPDSANAXN = 0x43,
621     SRCERASE = 0x44,
622     DPSNAON = 0x45,
623     DSPDAOX = 0x46,
624     PSDPXAXN = 0x47,
625     SDPXA = 0x48,
626     PDSPDAOXXN = 0x49,
627     DPSDOAX = 0x4A,
628     PDSNOX = 0x4B,
629     SDPANA = 0x4C,
630     SSPXDSXOXN = 0x4D,
631     PDSPXOX = 0x4E,
632     PDSNOAN = 0x4F,
633     PDNA = 0x50,
634     DSPNAON = 0x51,
635     DPSDAOX = 0x52,
636     SPDSXAXN = 0x53,
637     DPSONON = 0x54,
638     DSTINVERT = 0x55,
639     DPSOX = 0x56,
640     DPSOAN = 0x57,
641     PDSPOAX = 0x58,
642     DPSNOX = 0x59,
643     PATINVERT = 0x5A,
644     DPSDONOX = 0x5B,
645     DPSDXOX = 0x5C,
646     DPSNOAN = 0x5D,
647     DPSDNAOX = 0x5E,
648     DPAN = 0x5F,
649     PDSXA = 0x60,
650     DSPDSAOXXN = 0x61,
651     DSPDOAX = 0x62,
652     SDPNOX = 0x63,
653     SDPSOAX = 0x64,
654     DSPNOX = 0x65,
655     SRCINVERT = 0x66,
656     SDPSONOX = 0x67,
657     DSPDSONOXXN = 0x68,
658     PDSXXN = 0x69,
659     DPSAX = 0x6A,
660     PSDPSOAXXN = 0x6B,
661     SDPAX = 0x6C,
662     PDSPDOAXXN = 0x6D,
663     SDPSNOAX = 0x6E,
664     PDXNAN = 0x6F,
665     PDSANA = 0x70,
666     SSDXPDXAXN = 0x71,
667     SDPSXOX = 0x72,
668     SDPNOAN = 0x73,
669     DSPDXOX = 0x74,
670     DSPNOAN = 0x75,
671     SDPSNAOX = 0x76,
672     DSAN = 0x77,
673     PDSAX = 0x78,
674     DSPDSOAXXN = 0x79,
675     DPSDNOAX = 0x7A,
676     SDPXNAN = 0x7B,
677     SPDSNOAX = 0x7C,
678     DPSXNAN = 0x7D,
679     SPXDSXO = 0x7E,
680     DPSAAN = 0x7F,
681     DPSAA = 0x80,
682     SPXDSXON = 0x81,
683     DPSXNA = 0x82,
684     SPDSNOAXN = 0x83,
685     SDPXNA = 0x84,
686     PDSPNOAXN = 0x85,
687     DSPDSOAXX = 0x86,
688     PDSAXN = 0x87,
689     SRCAND = 0x88,
690     SDPSNAOXN = 0x89,
691     DSPNOA = 0x8A,
692     DSPDXOXN = 0x8B,
693     SDPNOA = 0x8C,
694     SDPSXOXN = 0x8D,
695     SSDXPDXAX = 0x8E,
696     PDSANAN = 0x8F,
697     PDSXNA = 0x90,
698     SDPSNOAXN = 0x91,
699     DPSDPOAXX = 0x92,
700     SPDAXN = 0x93,
701     PSDPSOAXX = 0x94,
702     DPSAXN = 0x95,
703     DPSXX = 0x96,
704     PSDPSONOXX = 0x97,
705     SDPSONOXN = 0x98,
706     DSXN = 0x99,
707     DPSNAX = 0x9A,
708     SDPSOAXN = 0x9B,
709     SPDNAX = 0x9C,
710     DSPDOAXN = 0x9D,
711     DSPDSAOXX = 0x9E,
712     PDSXAN = 0x9F,
713     DPA = 0xA0,
714     PDSPNAOXN = 0xA1,
715     DPSNOA = 0xA2,
716     DPSDXOXN = 0xA3,
717     PDSPONOXN = 0xA4,
718     PDXN = 0xA5,
719     DSPNAX = 0xA6,
720     PDSPOAXN = 0xA7,
721     DPSOA = 0xA8,
722     DPSOXN = 0xA9,
723     D = 0xAA,
724     DPSONO = 0xAB,
725     SPDSXAX = 0xAC,
726     DPSDAOXN = 0xAD,
727     DSPNAO = 0xAE,
728     DPNO = 0xAF,
729     PDSNOA = 0xB0,
730     PDSPXOXN = 0xB1,
731     SSPXDSXOX = 0xB2,
732     SDPANAN = 0xB3,
733     PSDNAX = 0xB4,
734     DPSDOAXN = 0xB5,
735     DPSDPAOXX = 0xB6,
736     SDPXAN = 0xB7,
737     PSDPXAX = 0xB8,
738     DSPDAOXN = 0xB9,
739     DPSNAO = 0xBA,
740     MERGEPAINT = 0xBB,
741     SPDSANAX = 0xBC,
742     SDXPDXAN = 0xBD,
743     DPSXO = 0xBE,
744     DPSANO = 0xBF,
745     MERGECOPY = 0xC0,
746     SPDSNAOXN = 0xC1,
747     SPDSONOXN = 0xC2,
748     PSXN = 0xC3,
749     SPDNOA = 0xC4,
750     SPDSXOXN = 0xC5,
751     SDPNAX = 0xC6,
752     PSDPOAXN = 0xC7,
753     SDPOA = 0xC8,
754     SPDOXN = 0xC9,
755     DPSDXAX = 0xCA,
756     SPDSAOXN = 0xCB,
757     SRCCOPY = 0xCC,
758     SDPONO = 0xCD,
759     SDPNAO = 0xCE,
760     SPNO = 0xCF,
761     PSDNOA = 0xD0,
762     PSDPXOXN = 0xD1,
763 
764     PDSNAX = 0xD2,
765     SPDSOAXN = 0xD3,
766     SSPXPDXAX = 0xD4,
767     DPSANAN = 0xD5,
768     PSDPSAOXX = 0xD6,
769     DPSXAN = 0xD7,
770     PDSPXAX = 0xD8,
771     SDPSAOXN = 0xD9,
772     DPSDANAX = 0xDA,
773     SPXDSXAN = 0xDB,
774     SPDNAO = 0xDC,
775     SDNO = 0xDD,
776     SDPXO = 0xDE,
777     SDPANO = 0xDF,
778     PDSOA = 0xE0,
779     PDSOXN = 0xE1,
780     DSPDXAX = 0xE2,
781     PSDPAOXN = 0xE3,
782     SDPSXAX = 0xE4,
783     PDSPAOXN = 0xE5,
784     SDPSANAX = 0xE6,
785     SPXPDXAN = 0xE7,
786     SSPXDSXAX = 0xE8,
787     DSPDSANAXXN = 0xE9,
788     DPSAO = 0xEA,
789     DPSXNO = 0xEB,
790     SDPAO = 0xEC,
791     SDPXNO = 0xED,
792     SRCPAINT = 0xEE,
793     SDPNOO = 0xEF,
794     PATCOPY = 0xF0,
795     PDSONO = 0xF1,
796     PDSNAO = 0xF2,
797     PSNO = 0xF3,
798     PSDNAO = 0xF4,
799     PDNO = 0xF5,
800     PDSXO = 0xF6,
801     PDSANO = 0xF7,
802     PDSAO = 0xF8,
803     PDSXNO = 0xF9,
804     DPO = 0xFA,
805     PATPAINT = 0xFB,
806     PSO = 0xFC,
807     PSDNOO = 0xFD,
808     DPSOO = 0xFE,
809     WHITENESS = 0xFF
810 };
811 
812 
813 // ----------------------------------------------------------------
814 //                             Flags
815 
816 
817 /**
818    MS-WMF 2.1.2.1 ClipPrecision Flags
819 
820    ClipPrecision Flags specify clipping precision, which defines how
821    to clip characters that are partially outside a clipping
822    region. These flags can be combined to specify multiple options.
823 */
824 
825 #define CLIP_DEFAULT_PRECIS   0x00000000
826 #define CLIP_CHARACTER_PRECIS 0x00000001
827 #define CLIP_STROKE_PRECIS    0x00000002
828 #define CLIP_LH_ANGLES        0x00000010
829 #define CLIP_TT_ALWAYS        0x00000020
830 #define CLIP_DFA_DISABLE      0x00000040
831 #define CLIP_EMBEDDED         0x00000080
832 
833 
834 /**
835    MS-WMF 2.1.2.2 ExtTextOutOptions Flags
836 
837    ExtTextOutOptions Flags specify various characteristics of the
838    output of text. These flags can be combined to specify multiple options.
839 */
840 
841 #define ETO_OPAQUE        0x0002
842 #define ETO_CLIPPED       0x0004
843 #define ETO_GLYPH_INDEX   0x0010
844 #define ETO_RTLREADING    0x0080
845 #define ETO_NUMERICSLOCAL 0x0400
846 #define ETO_NUMERICSLATIN 0x0800
847 #define ETO_PDY           0x2000
848 
849 
850 /**
851    MS-WMF 2.1.2.3 TextAlignmentMode Flags
852 
853    TextAlignmentMode Flags specify the relationship between a
854    reference point and a bounding rectangle, for text alignment. These
855    flags can be combined to specify multiple options, with the
856    restriction that only one flag can be chosen that alters the
857    drawing position in the playback device context.
858 
859    Horizontal text alignment is performed when the font has a
860    horizontal default baseline.
861 */
862 
863 #define TA_NOUPDATECP 0x0000  /// Do not update Current Point (default)
864 #define TA_LEFT       0x0000  /// The reference point is on the left edge of the bounding rectangle
865 #define TA_TOP        0x0000  /// The reference point is on the top edge of the bounding rectangle
866 #define TA_UPDATECP   0x0001  /// Use Current Point. The Current Point must be updated
867 #define TA_RIGHT      0x0002  /// The reference point is on the right edge of the bounding rectangle
868 #define TA_CENTER     0x0006  /// The reference point is at the center of the bounding rectangle
869 #define TA_BOTTOM     0x0008  /// The reference point is on the bottom edge of the bounding rectangle
870 #define TA_BASELINE   0x0018  /// The reference point is on the baseline
871 #define TA_RTLREADING 0x0100  /// The text is laid out in Right-to-Left direction.
872 
873 // Some useful masks, not part of the specification:
874 #define TA_HORZMASK 0x0006
875 #define TA_VERTMASK 0x0018
876 
877 
878 
879 // MS-WMF 2.1.2.4 VerticalTextAlignmentMode Flags
880 //
881 // VerticalTextAlignmentMode Flags specify the relationship between a
882 // reference point and a bounding rectangle, for text alignment. These
883 // flags can be combined to specify multiple options, with the
884 // restriction that only one flag can be chosen that alters the
885 // drawing position in the playback device context.
886 //
887 // Vertical text alignment is performed when the font has a vertical
888 // default baseline, such as Kanji.
889 
890 #define VTA_TOP      0x0000
891 #define VTA_RIGHT    0x0000
892 #define VTA_BOTTOM   0x0002
893 #define VTA_CENTER   0x0006
894 #define VTA_LEFT     0x0008
895 #define VTA_BASELINE 0x0018
896 
897 
898 }
899 
900 #endif  // KOWMFENUMS_H
901