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