1 /************************************************************************/
2 /*									*/
3 /*  Windows Enhanced Meta File and GDI specific definitions.		*/
4 /*									*/
5 /************************************************************************/
6 
7 #   include	<geo2DInteger.h>
8 
9 typedef enum EmrRecordType
10 {
11     EMR_HEADER = 0x00000001,
12     EMR_POLYBEZIER = 0x00000002,
13     EMR_POLYGON = 0x00000003,
14     EMR_POLYLINE = 0x00000004,
15     EMR_POLYBEZIERTO = 0x00000005,
16     EMR_POLYLINETO = 0x00000006,
17     EMR_POLYPOLYLINE = 0x00000007,
18     EMR_POLYPOLYGON = 0x00000008,
19     EMR_SETWINDOWEXTEX = 0x00000009,
20     EMR_SETWINDOWORGEX = 0x0000000A,
21     EMR_SETVIEWPORTEXTEX = 0x0000000B,
22     EMR_SETVIEWPORTORGEX = 0x0000000C,
23     EMR_SETBRUSHORGEX = 0x0000000D,
24     EMR_EOF = 0x0000000E,
25     EMR_SETPIXELV = 0x0000000F,
26     EMR_SETMAPPERFLAGS = 0x00000010,
27     EMR_SETMAPMODE = 0x00000011,
28     EMR_SETBKMODE = 0x00000012,
29     EMR_SETPOLYFILLMODE = 0x00000013,
30     EMR_SETROP2 = 0x00000014,
31     EMR_SETSTRETCHBLTMODE = 0x00000015,
32     EMR_SETTEXTALIGN = 0x00000016,
33     EMR_SETCOLORADJUSTMENT = 0x00000017,
34     EMR_SETTEXTCOLOR = 0x00000018,
35     EMR_SETBKCOLOR = 0x00000019,
36     EMR_OFFSETCLIPRGN = 0x0000001A,
37     EMR_MOVETOEX = 0x0000001B,
38     EMR_SETMETARGN = 0x0000001C,
39     EMR_EXCLUDECLIPRECT = 0x0000001D,
40     EMR_INTERSECTCLIPRECT = 0x0000001E,
41     EMR_SCALEVIEWPORTEXTEX = 0x0000001F,
42     EMR_SCALEWINDOWEXTEX = 0x00000020,
43     EMR_SAVEDC = 0x00000021,
44     EMR_RESTOREDC = 0x00000022,
45     EMR_SETWORLDTRANSFORM = 0x00000023,
46     EMR_MODIFYWORLDTRANSFORM = 0x00000024,
47     EMR_SELECTOBJECT = 0x00000025,
48     EMR_CREATEPEN = 0x00000026,
49     EMR_CREATEBRUSHINDIRECT = 0x00000027,
50     EMR_DELETEOBJECT = 0x00000028,
51     EMR_ANGLEARC = 0x00000029,
52     EMR_ELLIPSE = 0x0000002A,
53     EMR_RECTANGLE = 0x0000002B,
54     EMR_ROUNDRECT = 0x0000002C,
55     EMR_ARC = 0x0000002D,
56     EMR_CHORD = 0x0000002E,
57     EMR_PIE = 0x0000002F,
58     EMR_SELECTPALETTE = 0x00000030,
59     EMR_CREATEPALETTE = 0x00000031,
60     EMR_SETPALETTEENTRIES = 0x00000032,
61     EMR_RESIZEPALETTE = 0x00000033,
62     EMR_REALIZEPALETTE = 0x00000034,
63     EMR_EXTFLOODFILL = 0x00000035,
64     EMR_LINETO = 0x00000036,
65     EMR_ARCTO = 0x00000037,
66     EMR_POLYDRAW = 0x00000038,
67     EMR_SETARCDIRECTION = 0x00000039,
68     EMR_SETMITERLIMIT = 0x0000003A,
69     EMR_BEGINPATH = 0x0000003B,
70     EMR_ENDPATH = 0x0000003C,
71     EMR_CLOSEFIGURE = 0x0000003D,
72     EMR_FILLPATH = 0x0000003E,
73     EMR_STROKEANDFILLPATH = 0x0000003F,
74     EMR_STROKEPATH = 0x00000040,
75     EMR_FLATTENPATH = 0x00000041,
76     EMR_WIDENPATH = 0x00000042,
77     EMR_SELECTCLIPPATH = 0x00000043,
78     EMR_ABORTPATH = 0x00000044,
79     EMR_COMMENT = 0x00000046,
80     EMR_FILLRGN = 0x00000047,
81     EMR_FRAMERGN = 0x00000048,
82     EMR_INVERTRGN = 0x00000049,
83     EMR_PAINTRGN = 0x0000004A,
84     EMR_EXTSELECTCLIPRGN = 0x0000004B,
85     EMR_BITBLT = 0x0000004C,
86     EMR_STRETCHBLT = 0x0000004D,
87     EMR_MASKBLT = 0x0000004E,
88     EMR_PLGBLT = 0x0000004F,
89     EMR_SETDIBITSTODEVICE = 0x00000050,
90     EMR_STRETCHDIBITS = 0x00000051,
91     EMR_EXTCREATEFONTINDIRECTW = 0x00000052,
92     EMR_EXTTEXTOUTA = 0x00000053,
93     EMR_EXTTEXTOUTW = 0x00000054,
94     EMR_POLYBEZIER16 = 0x00000055,
95     EMR_POLYGON16 = 0x00000056,
96     EMR_POLYLINE16 = 0x00000057,
97     EMR_POLYBEZIERTO16 = 0x00000058,
98     EMR_POLYLINETO16 = 0x00000059,
99     EMR_POLYPOLYLINE16 = 0x0000005A,
100     EMR_POLYPOLYGON16 = 0x0000005B,
101     EMR_POLYDRAW16 = 0x0000005C,
102     EMR_CREATEMONOBRUSH = 0x0000005D,
103     EMR_CREATEDIBPATTERNBRUSHPT = 0x0000005E,
104     EMR_EXTCREATEPEN = 0x0000005F,
105     EMR_POLYTEXTOUTA = 0x00000060,
106     EMR_POLYTEXTOUTW = 0x00000061,
107     EMR_SETICMMODE = 0x00000062,
108     EMR_CREATECOLORSPACE = 0x00000063,
109     EMR_SETCOLORSPACE = 0x00000064,
110     EMR_DELETECOLORSPACE = 0x00000065,
111     EMR_GLSRECORD = 0x00000066,
112     EMR_GLSBOUNDEDRECORD = 0x00000067,
113     EMR_PIXELFORMAT = 0x00000068,
114     EMR_DRAWESCAPE = 0x00000069,
115     EMR_EXTESCAPE = 0x0000006A,
116     EMR_SMALLTEXTOUT = 0x0000006C,
117     EMR_FORCEUFIMAPPING = 0x0000006D,
118     EMR_NAMEDESCAPE = 0x0000006E,
119     EMR_COLORCORRECTPALETTE = 0x0000006F,
120     EMR_SETICMPROFILEA = 0x00000070,
121     EMR_SETICMPROFILEW = 0x00000071,
122     EMR_ALPHABLEND = 0x00000072,
123     EMR_SETLAYOUT = 0x00000073,
124     EMR_TRANSPARENTBLT = 0x00000074,
125     EMR_GRADIENTFILL = 0x00000076,
126     EMR_SETLINKEDUFIS = 0x00000077,
127     EMR_SETTEXTJUSTIFICATION = 0x00000078,
128     EMR_COLORMATCHTOTARGETW = 0x00000079,
129     EMR_CREATECOLORSPACEW = 0x0000007A
130 } EmrRecordType;
131 
132 #   define	WHITE_BRUSH		0x80000000
133 #   define	LTGRAY_BRUSH		0x80000001
134 #   define	GRAY_BRUSH		0x80000002
135 #   define	DKGRAY_BRUSH		0x80000003
136 #   define	BLACK_BRUSH		0x80000004
137 #   define	NULL_BRUSH		0x80000005
138 #   define	WHITE_PEN		0x80000006
139 #   define	BLACK_PEN		0x80000007
140 #   define	NULL_PEN		0x80000008
141 #   define	OEM_FIXED_FONT		0x8000000A
142 #   define	ANSI_FIXED_FONT		0x8000000B
143 #   define	ANSI_VAR_FONT		0x8000000C
144 #   define	SYSTEM_FONT		0x8000000D
145 #   define	DEVICE_DEFAULT_FONT	0x8000000E
146 #   define	DEFAULT_PALETTE		0x8000000F
147 #   define	SYSTEM_FIXED_FONT	0x80000010
148 #   define	DEFAULT_GUI_FONT	0x80000011
149 #   define	DC_BRUSH		0x80000012
150 #   define	DC_PEN			0x80000013
151 
152 typedef enum
153     {
154     MWT_IDENTITY = 0x01,
155     MWT_LEFTMULTIPLY = 0x02,
156     MWT_RIGHTMULTIPLY = 0x03,
157     MWT_SET = 0x04
158     } ModifyWorldTransformMode;
159 
160 typedef enum
161     {
162     ETO_OPAQUE = 0x00000002,
163     ETO_CLIPPED = 0x00000004,
164     ETO_GLYPH_INDEX = 0x00000010,
165     ETO_RTLREADING = 0x00000080,
166     ETO_NO_RECT = 0x00000100,
167     ETO_SMALL_CHARS = 0x00000200,
168     ETO_NUMERICSLOCAL = 0x00000400,
169     ETO_NUMERICSLATIN = 0x00000800,
170     ETO_IGNORELANGUAGE = 0x00001000,
171     ETO_PDY = 0x00002000,
172     ETO_REVERSE_INDEX_MAP = 0x00010000
173     } ExtTextOutOptions;
174 
175 typedef enum
176     {
177     GM_COMPATIBLE = 0x00000001,
178     GM_ADVANCED = 0x00000002
179     } GraphicsMode;
180 
181 /************************************************************************/
182 /*									*/
183 /*  The header of an EMF metafile.					*/
184 /*									*/
185 /************************************************************************/
186 
187 typedef struct EmfHeader
188     {
189     unsigned long	eh_headerSize;
190     DocumentRectangle	ehBounds;	/*  In device units		*/
191     DocumentRectangle	ehFrame;	/*  In 0.01 mm units		*/
192     unsigned long	eh_signature;
193     unsigned long	eh_version;
194     unsigned long	eh_size;
195     unsigned long	eh_numOfRecords;
196     unsigned int	eh_numOfHandles;
197     unsigned int	eh_reserved;
198     unsigned long	eh_sizeOfDescrip;
199     unsigned long	eh_offsOfDescrip;
200     unsigned long	eh_numPalEntries;
201     long		eh_widthDevPixels;
202     long		eh_heightDevPixels;
203     long		eh_widthDevMM;
204     long		eh_heightDevMM;
205     } EmfHeader;
206