GdiPlusEnums.h 46 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078
  1. //Download by http://www.NewXing.com
  2. /**************************************************************************\
  3. *
  4. * Copyright (c) 1998-2001, Microsoft Corp. All Rights Reserved.
  5. *
  6. * Module Name:
  7. *
  8. * GdiplusEnums.h
  9. *
  10. * Abstract:
  11. *
  12. * GDI+ Enumeration Types
  13. *
  14. \**************************************************************************/
  15. #ifndef _GDIPLUSENUMS_H
  16. #define _GDIPLUSENUMS_H
  17. //--------------------------------------------------------------------------
  18. // Default bezier flattening tolerance in device pixels.
  19. //--------------------------------------------------------------------------
  20. const float FlatnessDefault = 1.0f/4.0f;
  21. //--------------------------------------------------------------------------
  22. // Graphics and Container State cookies
  23. //--------------------------------------------------------------------------
  24. typedef UINT GraphicsState;
  25. typedef UINT GraphicsContainer;
  26. //--------------------------------------------------------------------------
  27. // Fill mode constants
  28. //--------------------------------------------------------------------------
  29. enum FillMode
  30. {
  31. FillModeAlternate, // 0
  32. FillModeWinding // 1
  33. };
  34. //--------------------------------------------------------------------------
  35. // Quality mode constants
  36. //--------------------------------------------------------------------------
  37. enum QualityMode
  38. {
  39. QualityModeInvalid = -1,
  40. QualityModeDefault = 0,
  41. QualityModeLow = 1, // Best performance
  42. QualityModeHigh = 2 // Best rendering quality
  43. };
  44. //--------------------------------------------------------------------------
  45. // Alpha Compositing mode constants
  46. //--------------------------------------------------------------------------
  47. enum CompositingMode
  48. {
  49. CompositingModeSourceOver, // 0
  50. CompositingModeSourceCopy // 1
  51. };
  52. //--------------------------------------------------------------------------
  53. // Alpha Compositing quality constants
  54. //--------------------------------------------------------------------------
  55. enum CompositingQuality
  56. {
  57. CompositingQualityInvalid = QualityModeInvalid,
  58. CompositingQualityDefault = QualityModeDefault,
  59. CompositingQualityHighSpeed = QualityModeLow,
  60. CompositingQualityHighQuality = QualityModeHigh,
  61. CompositingQualityGammaCorrected,
  62. CompositingQualityAssumeLinear
  63. };
  64. //--------------------------------------------------------------------------
  65. // Unit constants
  66. //--------------------------------------------------------------------------
  67. enum Unit
  68. {
  69. UnitWorld, // 0 -- World coordinate (non-physical unit)
  70. UnitDisplay, // 1 -- Variable -- for PageTransform only
  71. UnitPixel, // 2 -- Each unit is one device pixel.
  72. UnitPoint, // 3 -- Each unit is a printer's point, or 1/72 inch.
  73. UnitInch, // 4 -- Each unit is 1 inch.
  74. UnitDocument, // 5 -- Each unit is 1/300 inch.
  75. UnitMillimeter // 6 -- Each unit is 1 millimeter.
  76. };
  77. //--------------------------------------------------------------------------
  78. // MetafileFrameUnit
  79. //
  80. // The frameRect for creating a metafile can be specified in any of these
  81. // units. There is an extra frame unit value (MetafileFrameUnitGdi) so
  82. // that units can be supplied in the same units that GDI expects for
  83. // frame rects -- these units are in .01 (1/100ths) millimeter units
  84. // as defined by GDI.
  85. //--------------------------------------------------------------------------
  86. enum MetafileFrameUnit
  87. {
  88. MetafileFrameUnitPixel = UnitPixel,
  89. MetafileFrameUnitPoint = UnitPoint,
  90. MetafileFrameUnitInch = UnitInch,
  91. MetafileFrameUnitDocument = UnitDocument,
  92. MetafileFrameUnitMillimeter = UnitMillimeter,
  93. MetafileFrameUnitGdi // GDI compatible .01 MM units
  94. };
  95. //--------------------------------------------------------------------------
  96. // Coordinate space identifiers
  97. //--------------------------------------------------------------------------
  98. enum CoordinateSpace
  99. {
  100. CoordinateSpaceWorld, // 0
  101. CoordinateSpacePage, // 1
  102. CoordinateSpaceDevice // 2
  103. };
  104. //--------------------------------------------------------------------------
  105. // Various wrap modes for brushes
  106. //--------------------------------------------------------------------------
  107. enum WrapMode
  108. {
  109. WrapModeTile, // 0
  110. WrapModeTileFlipX, // 1
  111. WrapModeTileFlipY, // 2
  112. WrapModeTileFlipXY, // 3
  113. WrapModeClamp // 4
  114. };
  115. //--------------------------------------------------------------------------
  116. // Various hatch styles
  117. //--------------------------------------------------------------------------
  118. enum HatchStyle
  119. {
  120. HatchStyleHorizontal, // 0
  121. HatchStyleVertical, // 1
  122. HatchStyleForwardDiagonal, // 2
  123. HatchStyleBackwardDiagonal, // 3
  124. HatchStyleCross, // 4
  125. HatchStyleDiagonalCross, // 5
  126. HatchStyle05Percent, // 6
  127. HatchStyle10Percent, // 7
  128. HatchStyle20Percent, // 8
  129. HatchStyle25Percent, // 9
  130. HatchStyle30Percent, // 10
  131. HatchStyle40Percent, // 11
  132. HatchStyle50Percent, // 12
  133. HatchStyle60Percent, // 13
  134. HatchStyle70Percent, // 14
  135. HatchStyle75Percent, // 15
  136. HatchStyle80Percent, // 16
  137. HatchStyle90Percent, // 17
  138. HatchStyleLightDownwardDiagonal, // 18
  139. HatchStyleLightUpwardDiagonal, // 19
  140. HatchStyleDarkDownwardDiagonal, // 20
  141. HatchStyleDarkUpwardDiagonal, // 21
  142. HatchStyleWideDownwardDiagonal, // 22
  143. HatchStyleWideUpwardDiagonal, // 23
  144. HatchStyleLightVertical, // 24
  145. HatchStyleLightHorizontal, // 25
  146. HatchStyleNarrowVertical, // 26
  147. HatchStyleNarrowHorizontal, // 27
  148. HatchStyleDarkVertical, // 28
  149. HatchStyleDarkHorizontal, // 29
  150. HatchStyleDashedDownwardDiagonal, // 30
  151. HatchStyleDashedUpwardDiagonal, // 31
  152. HatchStyleDashedHorizontal, // 32
  153. HatchStyleDashedVertical, // 33
  154. HatchStyleSmallConfetti, // 34
  155. HatchStyleLargeConfetti, // 35
  156. HatchStyleZigZag, // 36
  157. HatchStyleWave, // 37
  158. HatchStyleDiagonalBrick, // 38
  159. HatchStyleHorizontalBrick, // 39
  160. HatchStyleWeave, // 40
  161. HatchStylePlaid, // 41
  162. HatchStyleDivot, // 42
  163. HatchStyleDottedGrid, // 43
  164. HatchStyleDottedDiamond, // 44
  165. HatchStyleShingle, // 45
  166. HatchStyleTrellis, // 46
  167. HatchStyleSphere, // 47
  168. HatchStyleSmallGrid, // 48
  169. HatchStyleSmallCheckerBoard, // 49
  170. HatchStyleLargeCheckerBoard, // 50
  171. HatchStyleOutlinedDiamond, // 51
  172. HatchStyleSolidDiamond, // 52
  173. HatchStyleTotal,
  174. HatchStyleLargeGrid = HatchStyleCross, // 4
  175. HatchStyleMin = HatchStyleHorizontal,
  176. HatchStyleMax = HatchStyleTotal - 1,
  177. };
  178. //--------------------------------------------------------------------------
  179. // Dash style constants
  180. //--------------------------------------------------------------------------
  181. enum DashStyle
  182. {
  183. DashStyleSolid, // 0
  184. DashStyleDash, // 1
  185. DashStyleDot, // 2
  186. DashStyleDashDot, // 3
  187. DashStyleDashDotDot, // 4
  188. DashStyleCustom // 5
  189. };
  190. //--------------------------------------------------------------------------
  191. // Dash cap constants
  192. //--------------------------------------------------------------------------
  193. enum DashCap
  194. {
  195. DashCapFlat = 0,
  196. DashCapRound = 2,
  197. DashCapTriangle = 3
  198. };
  199. //--------------------------------------------------------------------------
  200. // Line cap constants (only the lowest 8 bits are used).
  201. //--------------------------------------------------------------------------
  202. enum LineCap
  203. {
  204. LineCapFlat = 0,
  205. LineCapSquare = 1,
  206. LineCapRound = 2,
  207. LineCapTriangle = 3,
  208. LineCapNoAnchor = 0x10, // corresponds to flat cap
  209. LineCapSquareAnchor = 0x11, // corresponds to square cap
  210. LineCapRoundAnchor = 0x12, // corresponds to round cap
  211. LineCapDiamondAnchor = 0x13, // corresponds to triangle cap
  212. LineCapArrowAnchor = 0x14, // no correspondence
  213. LineCapCustom = 0xff, // custom cap
  214. LineCapAnchorMask = 0xf0 // mask to check for anchor or not.
  215. };
  216. //--------------------------------------------------------------------------
  217. // Custom Line cap type constants
  218. //--------------------------------------------------------------------------
  219. enum CustomLineCapType
  220. {
  221. CustomLineCapTypeDefault = 0,
  222. CustomLineCapTypeAdjustableArrow = 1
  223. };
  224. //--------------------------------------------------------------------------
  225. // Line join constants
  226. //--------------------------------------------------------------------------
  227. enum LineJoin
  228. {
  229. LineJoinMiter = 0,
  230. LineJoinBevel = 1,
  231. LineJoinRound = 2,
  232. LineJoinMiterClipped = 3
  233. };
  234. //--------------------------------------------------------------------------
  235. // Path point types (only the lowest 8 bits are used.)
  236. // The lowest 3 bits are interpreted as point type
  237. // The higher 5 bits are reserved for flags.
  238. //--------------------------------------------------------------------------
  239. enum PathPointType
  240. {
  241. PathPointTypeStart = 0, // move
  242. PathPointTypeLine = 1, // line
  243. PathPointTypeBezier = 3, // default Bezier (= cubic Bezier)
  244. PathPointTypePathTypeMask = 0x07, // type mask (lowest 3 bits).
  245. PathPointTypeDashMode = 0x10, // currently in dash mode.
  246. PathPointTypePathMarker = 0x20, // a marker for the path.
  247. PathPointTypeCloseSubpath = 0x80, // closed flag
  248. // Path types used for advanced path.
  249. PathPointTypeBezier3 = 3, // cubic Bezier
  250. };
  251. //--------------------------------------------------------------------------
  252. // WarpMode constants
  253. //--------------------------------------------------------------------------
  254. enum WarpMode
  255. {
  256. WarpModePerspective, // 0
  257. WarpModeBilinear // 1
  258. };
  259. //--------------------------------------------------------------------------
  260. // LineGradient Mode
  261. //--------------------------------------------------------------------------
  262. enum LinearGradientMode
  263. {
  264. LinearGradientModeHorizontal, // 0
  265. LinearGradientModeVertical, // 1
  266. LinearGradientModeForwardDiagonal, // 2
  267. LinearGradientModeBackwardDiagonal // 3
  268. };
  269. //--------------------------------------------------------------------------
  270. // Region Comine Modes
  271. //--------------------------------------------------------------------------
  272. enum CombineMode
  273. {
  274. CombineModeReplace, // 0
  275. CombineModeIntersect, // 1
  276. CombineModeUnion, // 2
  277. CombineModeXor, // 3
  278. CombineModeExclude, // 4
  279. CombineModeComplement // 5 (Exclude From)
  280. };
  281. //--------------------------------------------------------------------------
  282. // Image types
  283. //--------------------------------------------------------------------------
  284. enum ImageType
  285. {
  286. ImageTypeUnknown, // 0
  287. ImageTypeBitmap, // 1
  288. ImageTypeMetafile // 2
  289. };
  290. //--------------------------------------------------------------------------
  291. // Interpolation modes
  292. //--------------------------------------------------------------------------
  293. enum InterpolationMode
  294. {
  295. InterpolationModeInvalid = QualityModeInvalid,
  296. InterpolationModeDefault = QualityModeDefault,
  297. InterpolationModeLowQuality = QualityModeLow,
  298. InterpolationModeHighQuality = QualityModeHigh,
  299. InterpolationModeBilinear,
  300. InterpolationModeBicubic,
  301. InterpolationModeNearestNeighbor,
  302. InterpolationModeHighQualityBilinear,
  303. InterpolationModeHighQualityBicubic
  304. };
  305. //--------------------------------------------------------------------------
  306. // Pen types
  307. //--------------------------------------------------------------------------
  308. enum PenAlignment
  309. {
  310. PenAlignmentCenter = 0,
  311. PenAlignmentInset = 1
  312. };
  313. //--------------------------------------------------------------------------
  314. // Brush types
  315. //--------------------------------------------------------------------------
  316. enum BrushType
  317. {
  318. BrushTypeSolidColor = 0,
  319. BrushTypeHatchFill = 1,
  320. BrushTypeTextureFill = 2,
  321. BrushTypePathGradient = 3,
  322. BrushTypeLinearGradient = 4
  323. };
  324. //--------------------------------------------------------------------------
  325. // Pen's Fill types
  326. //--------------------------------------------------------------------------
  327. enum PenType
  328. {
  329. PenTypeSolidColor = BrushTypeSolidColor,
  330. PenTypeHatchFill = BrushTypeHatchFill,
  331. PenTypeTextureFill = BrushTypeTextureFill,
  332. PenTypePathGradient = BrushTypePathGradient,
  333. PenTypeLinearGradient = BrushTypeLinearGradient,
  334. PenTypeUnknown = -1
  335. };
  336. //--------------------------------------------------------------------------
  337. // Matrix Order
  338. //--------------------------------------------------------------------------
  339. enum MatrixOrder
  340. {
  341. MatrixOrderPrepend = 0,
  342. MatrixOrderAppend = 1
  343. };
  344. //--------------------------------------------------------------------------
  345. // Generic font families
  346. //--------------------------------------------------------------------------
  347. enum GenericFontFamily
  348. {
  349. GenericFontFamilySerif,
  350. GenericFontFamilySansSerif,
  351. GenericFontFamilyMonospace
  352. };
  353. //--------------------------------------------------------------------------
  354. // FontStyle: face types and common styles
  355. //--------------------------------------------------------------------------
  356. enum FontStyle
  357. {
  358. FontStyleRegular = 0,
  359. FontStyleBold = 1,
  360. FontStyleItalic = 2,
  361. FontStyleBoldItalic = 3,
  362. FontStyleUnderline = 4,
  363. FontStyleStrikeout = 8
  364. };
  365. //---------------------------------------------------------------------------
  366. // Smoothing Mode
  367. //---------------------------------------------------------------------------
  368. enum SmoothingMode
  369. {
  370. SmoothingModeInvalid = QualityModeInvalid,
  371. SmoothingModeDefault = QualityModeDefault,
  372. SmoothingModeHighSpeed = QualityModeLow,
  373. SmoothingModeHighQuality = QualityModeHigh,
  374. SmoothingModeNone,
  375. SmoothingModeAntiAlias
  376. };
  377. //---------------------------------------------------------------------------
  378. // Pixel Format Mode
  379. //---------------------------------------------------------------------------
  380. enum PixelOffsetMode
  381. {
  382. PixelOffsetModeInvalid = QualityModeInvalid,
  383. PixelOffsetModeDefault = QualityModeDefault,
  384. PixelOffsetModeHighSpeed = QualityModeLow,
  385. PixelOffsetModeHighQuality = QualityModeHigh,
  386. PixelOffsetModeNone, // No pixel offset
  387. PixelOffsetModeHalf // Offset by -0.5, -0.5 for fast anti-alias perf
  388. };
  389. //---------------------------------------------------------------------------
  390. // Text Rendering Hint
  391. //---------------------------------------------------------------------------
  392. enum TextRenderingHint
  393. {
  394. TextRenderingHintSystemDefault = 0, // Glyph with system default rendering hint
  395. TextRenderingHintSingleBitPerPixelGridFit, // Glyph bitmap with hinting
  396. TextRenderingHintSingleBitPerPixel, // Glyph bitmap without hinting
  397. TextRenderingHintAntiAliasGridFit, // Glyph anti-alias bitmap with hinting
  398. TextRenderingHintAntiAlias, // Glyph anti-alias bitmap without hinting
  399. TextRenderingHintClearTypeGridFit // Glyph CT bitmap with hinting
  400. };
  401. //---------------------------------------------------------------------------
  402. // Metafile Types
  403. //---------------------------------------------------------------------------
  404. enum MetafileType
  405. {
  406. MetafileTypeInvalid, // Invalid metafile
  407. MetafileTypeWmf, // Standard WMF
  408. MetafileTypeWmfPlaceable, // Placeable WMF
  409. MetafileTypeEmf, // EMF (not EMF+)
  410. MetafileTypeEmfPlusOnly, // EMF+ without dual, down-level records
  411. MetafileTypeEmfPlusDual // EMF+ with dual, down-level records
  412. };
  413. //---------------------------------------------------------------------------
  414. // Specifies the type of EMF to record
  415. //---------------------------------------------------------------------------
  416. enum EmfType
  417. {
  418. EmfTypeEmfOnly = MetafileTypeEmf, // no EMF+, only EMF
  419. EmfTypeEmfPlusOnly = MetafileTypeEmfPlusOnly, // no EMF, only EMF+
  420. EmfTypeEmfPlusDual = MetafileTypeEmfPlusDual // both EMF+ and EMF
  421. };
  422. //---------------------------------------------------------------------------
  423. // EMF+ Persistent object types
  424. //---------------------------------------------------------------------------
  425. enum ObjectType
  426. {
  427. ObjectTypeInvalid,
  428. ObjectTypeBrush,
  429. ObjectTypePen,
  430. ObjectTypePath,
  431. ObjectTypeRegion,
  432. ObjectTypeImage,
  433. ObjectTypeFont,
  434. ObjectTypeStringFormat,
  435. ObjectTypeImageAttributes,
  436. ObjectTypeCustomLineCap,
  437. ObjectTypeMax = ObjectTypeCustomLineCap,
  438. ObjectTypeMin = ObjectTypeBrush
  439. };
  440. inline BOOL
  441. ObjectTypeIsValid(
  442. ObjectType type
  443. )
  444. {
  445. return ((type >= ObjectTypeMin) && (type <= ObjectTypeMax));
  446. }
  447. //---------------------------------------------------------------------------
  448. // EMF+ Records
  449. //---------------------------------------------------------------------------
  450. // We have to change the WMF record numbers so that they don't conflict with
  451. // the EMF and EMF+ record numbers.
  452. enum EmfPlusRecordType;
  453. #define GDIP_EMFPLUS_RECORD_BASE 0x00004000
  454. #define GDIP_WMF_RECORD_BASE 0x00010000
  455. #define GDIP_WMF_RECORD_TO_EMFPLUS(n) ((EmfPlusRecordType)((n) | GDIP_WMF_RECORD_BASE))
  456. #define GDIP_EMFPLUS_RECORD_TO_WMF(n) ((n) & (~GDIP_WMF_RECORD_BASE))
  457. #define GDIP_IS_WMF_RECORDTYPE(n) (((n) & GDIP_WMF_RECORD_BASE) != 0)
  458. enum EmfPlusRecordType
  459. {
  460. // Since we have to enumerate GDI records right along with GDI+ records,
  461. // We list all the GDI records here so that they can be part of the
  462. // same enumeration type which is used in the enumeration callback.
  463. WmfRecordTypeSetBkColor = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETBKCOLOR),
  464. WmfRecordTypeSetBkMode = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETBKMODE),
  465. WmfRecordTypeSetMapMode = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETMAPMODE),
  466. WmfRecordTypeSetROP2 = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETROP2),
  467. WmfRecordTypeSetRelAbs = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETRELABS),
  468. WmfRecordTypeSetPolyFillMode = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETPOLYFILLMODE),
  469. WmfRecordTypeSetStretchBltMode = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETSTRETCHBLTMODE),
  470. WmfRecordTypeSetTextCharExtra = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTCHAREXTRA),
  471. WmfRecordTypeSetTextColor = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTCOLOR),
  472. WmfRecordTypeSetTextJustification = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTJUSTIFICATION),
  473. WmfRecordTypeSetWindowOrg = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETWINDOWORG),
  474. WmfRecordTypeSetWindowExt = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETWINDOWEXT),
  475. WmfRecordTypeSetViewportOrg = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETVIEWPORTORG),
  476. WmfRecordTypeSetViewportExt = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETVIEWPORTEXT),
  477. WmfRecordTypeOffsetWindowOrg = GDIP_WMF_RECORD_TO_EMFPLUS(META_OFFSETWINDOWORG),
  478. WmfRecordTypeScaleWindowExt = GDIP_WMF_RECORD_TO_EMFPLUS(META_SCALEWINDOWEXT),
  479. WmfRecordTypeOffsetViewportOrg = GDIP_WMF_RECORD_TO_EMFPLUS(META_OFFSETVIEWPORTORG),
  480. WmfRecordTypeScaleViewportExt = GDIP_WMF_RECORD_TO_EMFPLUS(META_SCALEVIEWPORTEXT),
  481. WmfRecordTypeLineTo = GDIP_WMF_RECORD_TO_EMFPLUS(META_LINETO),
  482. WmfRecordTypeMoveTo = GDIP_WMF_RECORD_TO_EMFPLUS(META_MOVETO),
  483. WmfRecordTypeExcludeClipRect = GDIP_WMF_RECORD_TO_EMFPLUS(META_EXCLUDECLIPRECT),
  484. WmfRecordTypeIntersectClipRect = GDIP_WMF_RECORD_TO_EMFPLUS(META_INTERSECTCLIPRECT),
  485. WmfRecordTypeArc = GDIP_WMF_RECORD_TO_EMFPLUS(META_ARC),
  486. WmfRecordTypeEllipse = GDIP_WMF_RECORD_TO_EMFPLUS(META_ELLIPSE),
  487. WmfRecordTypeFloodFill = GDIP_WMF_RECORD_TO_EMFPLUS(META_FLOODFILL),
  488. WmfRecordTypePie = GDIP_WMF_RECORD_TO_EMFPLUS(META_PIE),
  489. WmfRecordTypeRectangle = GDIP_WMF_RECORD_TO_EMFPLUS(META_RECTANGLE),
  490. WmfRecordTypeRoundRect = GDIP_WMF_RECORD_TO_EMFPLUS(META_ROUNDRECT),
  491. WmfRecordTypePatBlt = GDIP_WMF_RECORD_TO_EMFPLUS(META_PATBLT),
  492. WmfRecordTypeSaveDC = GDIP_WMF_RECORD_TO_EMFPLUS(META_SAVEDC),
  493. WmfRecordTypeSetPixel = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETPIXEL),
  494. WmfRecordTypeOffsetClipRgn = GDIP_WMF_RECORD_TO_EMFPLUS(META_OFFSETCLIPRGN),
  495. WmfRecordTypeTextOut = GDIP_WMF_RECORD_TO_EMFPLUS(META_TEXTOUT),
  496. WmfRecordTypeBitBlt = GDIP_WMF_RECORD_TO_EMFPLUS(META_BITBLT),
  497. WmfRecordTypeStretchBlt = GDIP_WMF_RECORD_TO_EMFPLUS(META_STRETCHBLT),
  498. WmfRecordTypePolygon = GDIP_WMF_RECORD_TO_EMFPLUS(META_POLYGON),
  499. WmfRecordTypePolyline = GDIP_WMF_RECORD_TO_EMFPLUS(META_POLYLINE),
  500. WmfRecordTypeEscape = GDIP_WMF_RECORD_TO_EMFPLUS(META_ESCAPE),
  501. WmfRecordTypeRestoreDC = GDIP_WMF_RECORD_TO_EMFPLUS(META_RESTOREDC),
  502. WmfRecordTypeFillRegion = GDIP_WMF_RECORD_TO_EMFPLUS(META_FILLREGION),
  503. WmfRecordTypeFrameRegion = GDIP_WMF_RECORD_TO_EMFPLUS(META_FRAMEREGION),
  504. WmfRecordTypeInvertRegion = GDIP_WMF_RECORD_TO_EMFPLUS(META_INVERTREGION),
  505. WmfRecordTypePaintRegion = GDIP_WMF_RECORD_TO_EMFPLUS(META_PAINTREGION),
  506. WmfRecordTypeSelectClipRegion = GDIP_WMF_RECORD_TO_EMFPLUS(META_SELECTCLIPREGION),
  507. WmfRecordTypeSelectObject = GDIP_WMF_RECORD_TO_EMFPLUS(META_SELECTOBJECT),
  508. WmfRecordTypeSetTextAlign = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTALIGN),
  509. WmfRecordTypeDrawText = GDIP_WMF_RECORD_TO_EMFPLUS(0x062F), // META_DRAWTEXT
  510. WmfRecordTypeChord = GDIP_WMF_RECORD_TO_EMFPLUS(META_CHORD),
  511. WmfRecordTypeSetMapperFlags = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETMAPPERFLAGS),
  512. WmfRecordTypeExtTextOut = GDIP_WMF_RECORD_TO_EMFPLUS(META_EXTTEXTOUT),
  513. WmfRecordTypeSetDIBToDev = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETDIBTODEV),
  514. WmfRecordTypeSelectPalette = GDIP_WMF_RECORD_TO_EMFPLUS(META_SELECTPALETTE),
  515. WmfRecordTypeRealizePalette = GDIP_WMF_RECORD_TO_EMFPLUS(META_REALIZEPALETTE),
  516. WmfRecordTypeAnimatePalette = GDIP_WMF_RECORD_TO_EMFPLUS(META_ANIMATEPALETTE),
  517. WmfRecordTypeSetPalEntries = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETPALENTRIES),
  518. WmfRecordTypePolyPolygon = GDIP_WMF_RECORD_TO_EMFPLUS(META_POLYPOLYGON),
  519. WmfRecordTypeResizePalette = GDIP_WMF_RECORD_TO_EMFPLUS(META_RESIZEPALETTE),
  520. WmfRecordTypeDIBBitBlt = GDIP_WMF_RECORD_TO_EMFPLUS(META_DIBBITBLT),
  521. WmfRecordTypeDIBStretchBlt = GDIP_WMF_RECORD_TO_EMFPLUS(META_DIBSTRETCHBLT),
  522. WmfRecordTypeDIBCreatePatternBrush = GDIP_WMF_RECORD_TO_EMFPLUS(META_DIBCREATEPATTERNBRUSH),
  523. WmfRecordTypeStretchDIB = GDIP_WMF_RECORD_TO_EMFPLUS(META_STRETCHDIB),
  524. WmfRecordTypeExtFloodFill = GDIP_WMF_RECORD_TO_EMFPLUS(META_EXTFLOODFILL),
  525. WmfRecordTypeSetLayout = GDIP_WMF_RECORD_TO_EMFPLUS(0x0149), // META_SETLAYOUT
  526. WmfRecordTypeResetDC = GDIP_WMF_RECORD_TO_EMFPLUS(0x014C), // META_RESETDC
  527. WmfRecordTypeStartDoc = GDIP_WMF_RECORD_TO_EMFPLUS(0x014D), // META_STARTDOC
  528. WmfRecordTypeStartPage = GDIP_WMF_RECORD_TO_EMFPLUS(0x004F), // META_STARTPAGE
  529. WmfRecordTypeEndPage = GDIP_WMF_RECORD_TO_EMFPLUS(0x0050), // META_ENDPAGE
  530. WmfRecordTypeAbortDoc = GDIP_WMF_RECORD_TO_EMFPLUS(0x0052), // META_ABORTDOC
  531. WmfRecordTypeEndDoc = GDIP_WMF_RECORD_TO_EMFPLUS(0x005E), // META_ENDDOC
  532. WmfRecordTypeDeleteObject = GDIP_WMF_RECORD_TO_EMFPLUS(META_DELETEOBJECT),
  533. WmfRecordTypeCreatePalette = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEPALETTE),
  534. WmfRecordTypeCreateBrush = GDIP_WMF_RECORD_TO_EMFPLUS(0x00F8), // META_CREATEBRUSH
  535. WmfRecordTypeCreatePatternBrush = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEPATTERNBRUSH),
  536. WmfRecordTypeCreatePenIndirect = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEPENINDIRECT),
  537. WmfRecordTypeCreateFontIndirect = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEFONTINDIRECT),
  538. WmfRecordTypeCreateBrushIndirect = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEBRUSHINDIRECT),
  539. WmfRecordTypeCreateBitmapIndirect = GDIP_WMF_RECORD_TO_EMFPLUS(0x02FD), // META_CREATEBITMAPINDIRECT
  540. WmfRecordTypeCreateBitmap = GDIP_WMF_RECORD_TO_EMFPLUS(0x06FE), // META_CREATEBITMAP
  541. WmfRecordTypeCreateRegion = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEREGION),
  542. EmfRecordTypeHeader = EMR_HEADER,
  543. EmfRecordTypePolyBezier = EMR_POLYBEZIER,
  544. EmfRecordTypePolygon = EMR_POLYGON,
  545. EmfRecordTypePolyline = EMR_POLYLINE,
  546. EmfRecordTypePolyBezierTo = EMR_POLYBEZIERTO,
  547. EmfRecordTypePolyLineTo = EMR_POLYLINETO,
  548. EmfRecordTypePolyPolyline = EMR_POLYPOLYLINE,
  549. EmfRecordTypePolyPolygon = EMR_POLYPOLYGON,
  550. EmfRecordTypeSetWindowExtEx = EMR_SETWINDOWEXTEX,
  551. EmfRecordTypeSetWindowOrgEx = EMR_SETWINDOWORGEX,
  552. EmfRecordTypeSetViewportExtEx = EMR_SETVIEWPORTEXTEX,
  553. EmfRecordTypeSetViewportOrgEx = EMR_SETVIEWPORTORGEX,
  554. EmfRecordTypeSetBrushOrgEx = EMR_SETBRUSHORGEX,
  555. EmfRecordTypeEOF = EMR_EOF,
  556. EmfRecordTypeSetPixelV = EMR_SETPIXELV,
  557. EmfRecordTypeSetMapperFlags = EMR_SETMAPPERFLAGS,
  558. EmfRecordTypeSetMapMode = EMR_SETMAPMODE,
  559. EmfRecordTypeSetBkMode = EMR_SETBKMODE,
  560. EmfRecordTypeSetPolyFillMode = EMR_SETPOLYFILLMODE,
  561. EmfRecordTypeSetROP2 = EMR_SETROP2,
  562. EmfRecordTypeSetStretchBltMode = EMR_SETSTRETCHBLTMODE,
  563. EmfRecordTypeSetTextAlign = EMR_SETTEXTALIGN,
  564. EmfRecordTypeSetColorAdjustment = EMR_SETCOLORADJUSTMENT,
  565. EmfRecordTypeSetTextColor = EMR_SETTEXTCOLOR,
  566. EmfRecordTypeSetBkColor = EMR_SETBKCOLOR,
  567. EmfRecordTypeOffsetClipRgn = EMR_OFFSETCLIPRGN,
  568. EmfRecordTypeMoveToEx = EMR_MOVETOEX,
  569. EmfRecordTypeSetMetaRgn = EMR_SETMETARGN,
  570. EmfRecordTypeExcludeClipRect = EMR_EXCLUDECLIPRECT,
  571. EmfRecordTypeIntersectClipRect = EMR_INTERSECTCLIPRECT,
  572. EmfRecordTypeScaleViewportExtEx = EMR_SCALEVIEWPORTEXTEX,
  573. EmfRecordTypeScaleWindowExtEx = EMR_SCALEWINDOWEXTEX,
  574. EmfRecordTypeSaveDC = EMR_SAVEDC,
  575. EmfRecordTypeRestoreDC = EMR_RESTOREDC,
  576. EmfRecordTypeSetWorldTransform = EMR_SETWORLDTRANSFORM,
  577. EmfRecordTypeModifyWorldTransform = EMR_MODIFYWORLDTRANSFORM,
  578. EmfRecordTypeSelectObject = EMR_SELECTOBJECT,
  579. EmfRecordTypeCreatePen = EMR_CREATEPEN,
  580. EmfRecordTypeCreateBrushIndirect = EMR_CREATEBRUSHINDIRECT,
  581. EmfRecordTypeDeleteObject = EMR_DELETEOBJECT,
  582. EmfRecordTypeAngleArc = EMR_ANGLEARC,
  583. EmfRecordTypeEllipse = EMR_ELLIPSE,
  584. EmfRecordTypeRectangle = EMR_RECTANGLE,
  585. EmfRecordTypeRoundRect = EMR_ROUNDRECT,
  586. EmfRecordTypeArc = EMR_ARC,
  587. EmfRecordTypeChord = EMR_CHORD,
  588. EmfRecordTypePie = EMR_PIE,
  589. EmfRecordTypeSelectPalette = EMR_SELECTPALETTE,
  590. EmfRecordTypeCreatePalette = EMR_CREATEPALETTE,
  591. EmfRecordTypeSetPaletteEntries = EMR_SETPALETTEENTRIES,
  592. EmfRecordTypeResizePalette = EMR_RESIZEPALETTE,
  593. EmfRecordTypeRealizePalette = EMR_REALIZEPALETTE,
  594. EmfRecordTypeExtFloodFill = EMR_EXTFLOODFILL,
  595. EmfRecordTypeLineTo = EMR_LINETO,
  596. EmfRecordTypeArcTo = EMR_ARCTO,
  597. EmfRecordTypePolyDraw = EMR_POLYDRAW,
  598. EmfRecordTypeSetArcDirection = EMR_SETARCDIRECTION,
  599. EmfRecordTypeSetMiterLimit = EMR_SETMITERLIMIT,
  600. EmfRecordTypeBeginPath = EMR_BEGINPATH,
  601. EmfRecordTypeEndPath = EMR_ENDPATH,
  602. EmfRecordTypeCloseFigure = EMR_CLOSEFIGURE,
  603. EmfRecordTypeFillPath = EMR_FILLPATH,
  604. EmfRecordTypeStrokeAndFillPath = EMR_STROKEANDFILLPATH,
  605. EmfRecordTypeStrokePath = EMR_STROKEPATH,
  606. EmfRecordTypeFlattenPath = EMR_FLATTENPATH,
  607. EmfRecordTypeWidenPath = EMR_WIDENPATH,
  608. EmfRecordTypeSelectClipPath = EMR_SELECTCLIPPATH,
  609. EmfRecordTypeAbortPath = EMR_ABORTPATH,
  610. EmfRecordTypeReserved_069 = 69, // Not Used
  611. EmfRecordTypeGdiComment = EMR_GDICOMMENT,
  612. EmfRecordTypeFillRgn = EMR_FILLRGN,
  613. EmfRecordTypeFrameRgn = EMR_FRAMERGN,
  614. EmfRecordTypeInvertRgn = EMR_INVERTRGN,
  615. EmfRecordTypePaintRgn = EMR_PAINTRGN,
  616. EmfRecordTypeExtSelectClipRgn = EMR_EXTSELECTCLIPRGN,
  617. EmfRecordTypeBitBlt = EMR_BITBLT,
  618. EmfRecordTypeStretchBlt = EMR_STRETCHBLT,
  619. EmfRecordTypeMaskBlt = EMR_MASKBLT,
  620. EmfRecordTypePlgBlt = EMR_PLGBLT,
  621. EmfRecordTypeSetDIBitsToDevice = EMR_SETDIBITSTODEVICE,
  622. EmfRecordTypeStretchDIBits = EMR_STRETCHDIBITS,
  623. EmfRecordTypeExtCreateFontIndirect = EMR_EXTCREATEFONTINDIRECTW,
  624. EmfRecordTypeExtTextOutA = EMR_EXTTEXTOUTA,
  625. EmfRecordTypeExtTextOutW = EMR_EXTTEXTOUTW,
  626. EmfRecordTypePolyBezier16 = EMR_POLYBEZIER16,
  627. EmfRecordTypePolygon16 = EMR_POLYGON16,
  628. EmfRecordTypePolyline16 = EMR_POLYLINE16,
  629. EmfRecordTypePolyBezierTo16 = EMR_POLYBEZIERTO16,
  630. EmfRecordTypePolylineTo16 = EMR_POLYLINETO16,
  631. EmfRecordTypePolyPolyline16 = EMR_POLYPOLYLINE16,
  632. EmfRecordTypePolyPolygon16 = EMR_POLYPOLYGON16,
  633. EmfRecordTypePolyDraw16 = EMR_POLYDRAW16,
  634. EmfRecordTypeCreateMonoBrush = EMR_CREATEMONOBRUSH,
  635. EmfRecordTypeCreateDIBPatternBrushPt = EMR_CREATEDIBPATTERNBRUSHPT,
  636. EmfRecordTypeExtCreatePen = EMR_EXTCREATEPEN,
  637. EmfRecordTypePolyTextOutA = EMR_POLYTEXTOUTA,
  638. EmfRecordTypePolyTextOutW = EMR_POLYTEXTOUTW,
  639. EmfRecordTypeSetICMMode = 98, // EMR_SETICMMODE,
  640. EmfRecordTypeCreateColorSpace = 99, // EMR_CREATECOLORSPACE,
  641. EmfRecordTypeSetColorSpace = 100, // EMR_SETCOLORSPACE,
  642. EmfRecordTypeDeleteColorSpace = 101, // EMR_DELETECOLORSPACE,
  643. EmfRecordTypeGLSRecord = 102, // EMR_GLSRECORD,
  644. EmfRecordTypeGLSBoundedRecord = 103, // EMR_GLSBOUNDEDRECORD,
  645. EmfRecordTypePixelFormat = 104, // EMR_PIXELFORMAT,
  646. EmfRecordTypeDrawEscape = 105, // EMR_RESERVED_105,
  647. EmfRecordTypeExtEscape = 106, // EMR_RESERVED_106,
  648. EmfRecordTypeStartDoc = 107, // EMR_RESERVED_107,
  649. EmfRecordTypeSmallTextOut = 108, // EMR_RESERVED_108,
  650. EmfRecordTypeForceUFIMapping = 109, // EMR_RESERVED_109,
  651. EmfRecordTypeNamedEscape = 110, // EMR_RESERVED_110,
  652. EmfRecordTypeColorCorrectPalette = 111, // EMR_COLORCORRECTPALETTE,
  653. EmfRecordTypeSetICMProfileA = 112, // EMR_SETICMPROFILEA,
  654. EmfRecordTypeSetICMProfileW = 113, // EMR_SETICMPROFILEW,
  655. EmfRecordTypeAlphaBlend = 114, // EMR_ALPHABLEND,
  656. EmfRecordTypeSetLayout = 115, // EMR_SETLAYOUT,
  657. EmfRecordTypeTransparentBlt = 116, // EMR_TRANSPARENTBLT,
  658. EmfRecordTypeReserved_117 = 117, // Not Used
  659. EmfRecordTypeGradientFill = 118, // EMR_GRADIENTFILL,
  660. EmfRecordTypeSetLinkedUFIs = 119, // EMR_RESERVED_119,
  661. EmfRecordTypeSetTextJustification = 120, // EMR_RESERVED_120,
  662. EmfRecordTypeColorMatchToTargetW = 121, // EMR_COLORMATCHTOTARGETW,
  663. EmfRecordTypeCreateColorSpaceW = 122, // EMR_CREATECOLORSPACEW,
  664. EmfRecordTypeMax = 122,
  665. EmfRecordTypeMin = 1,
  666. // That is the END of the GDI EMF records.
  667. // Now we start the list of EMF+ records. We leave quite
  668. // a bit of room here for the addition of any new GDI
  669. // records that may be added later.
  670. EmfPlusRecordTypeInvalid = GDIP_EMFPLUS_RECORD_BASE,
  671. EmfPlusRecordTypeHeader,
  672. EmfPlusRecordTypeEndOfFile,
  673. EmfPlusRecordTypeComment,
  674. EmfPlusRecordTypeGetDC,
  675. EmfPlusRecordTypeMultiFormatStart,
  676. EmfPlusRecordTypeMultiFormatSection,
  677. EmfPlusRecordTypeMultiFormatEnd,
  678. // For all persistent objects
  679. EmfPlusRecordTypeObject,
  680. // Drawing Records
  681. EmfPlusRecordTypeClear,
  682. EmfPlusRecordTypeFillRects,
  683. EmfPlusRecordTypeDrawRects,
  684. EmfPlusRecordTypeFillPolygon,
  685. EmfPlusRecordTypeDrawLines,
  686. EmfPlusRecordTypeFillEllipse,
  687. EmfPlusRecordTypeDrawEllipse,
  688. EmfPlusRecordTypeFillPie,
  689. EmfPlusRecordTypeDrawPie,
  690. EmfPlusRecordTypeDrawArc,
  691. EmfPlusRecordTypeFillRegion,
  692. EmfPlusRecordTypeFillPath,
  693. EmfPlusRecordTypeDrawPath,
  694. EmfPlusRecordTypeFillClosedCurve,
  695. EmfPlusRecordTypeDrawClosedCurve,
  696. EmfPlusRecordTypeDrawCurve,
  697. EmfPlusRecordTypeDrawBeziers,
  698. EmfPlusRecordTypeDrawImage,
  699. EmfPlusRecordTypeDrawImagePoints,
  700. EmfPlusRecordTypeDrawString,
  701. // Graphics State Records
  702. EmfPlusRecordTypeSetRenderingOrigin,
  703. EmfPlusRecordTypeSetAntiAliasMode,
  704. EmfPlusRecordTypeSetTextRenderingHint,
  705. EmfPlusRecordTypeSetTextContrast,
  706. EmfPlusRecordTypeSetInterpolationMode,
  707. EmfPlusRecordTypeSetPixelOffsetMode,
  708. EmfPlusRecordTypeSetCompositingMode,
  709. EmfPlusRecordTypeSetCompositingQuality,
  710. EmfPlusRecordTypeSave,
  711. EmfPlusRecordTypeRestore,
  712. EmfPlusRecordTypeBeginContainer,
  713. EmfPlusRecordTypeBeginContainerNoParams,
  714. EmfPlusRecordTypeEndContainer,
  715. EmfPlusRecordTypeSetWorldTransform,
  716. EmfPlusRecordTypeResetWorldTransform,
  717. EmfPlusRecordTypeMultiplyWorldTransform,
  718. EmfPlusRecordTypeTranslateWorldTransform,
  719. EmfPlusRecordTypeScaleWorldTransform,
  720. EmfPlusRecordTypeRotateWorldTransform,
  721. EmfPlusRecordTypeSetPageTransform,
  722. EmfPlusRecordTypeResetClip,
  723. EmfPlusRecordTypeSetClipRect,
  724. EmfPlusRecordTypeSetClipPath,
  725. EmfPlusRecordTypeSetClipRegion,
  726. EmfPlusRecordTypeOffsetClip,
  727. EmfPlusRecordTypeDrawDriverString,
  728. EmfPlusRecordTotal,
  729. EmfPlusRecordTypeMax = EmfPlusRecordTotal-1,
  730. EmfPlusRecordTypeMin = EmfPlusRecordTypeHeader,
  731. };
  732. //---------------------------------------------------------------------------
  733. // StringFormatFlags
  734. //---------------------------------------------------------------------------
  735. //---------------------------------------------------------------------------
  736. // String format flags
  737. //
  738. // DirectionRightToLeft - For horizontal text, the reading order is
  739. // right to left. This value is called
  740. // the base embedding level by the Unicode
  741. // bidirectional engine.
  742. // For vertical text, columns are read from
  743. // right to left.
  744. // By default, horizontal or vertical text is
  745. // read from left to right.
  746. //
  747. // DirectionVertical - Individual lines of text are vertical. In
  748. // each line, characters progress from top to
  749. // bottom.
  750. // By default, lines of text are horizontal,
  751. // each new line below the previous line.
  752. //
  753. // NoFitBlackBox - Allows parts of glyphs to overhang the
  754. // bounding rectangle.
  755. // By default glyphs are first aligned
  756. // inside the margines, then any glyphs which
  757. // still overhang the bounding box are
  758. // repositioned to avoid any overhang.
  759. // For example when an italic
  760. // lower case letter f in a font such as
  761. // Garamond is aligned at the far left of a
  762. // rectangle, the lower part of the f will
  763. // reach slightly further left than the left
  764. // edge of the rectangle. Setting this flag
  765. // will ensure the character aligns visually
  766. // with the lines above and below, but may
  767. // cause some pixels outside the formatting
  768. // rectangle to be clipped or painted.
  769. //
  770. // DisplayFormatControl - Causes control characters such as the
  771. // left-to-right mark to be shown in the
  772. // output with a representative glyph.
  773. //
  774. // NoFontFallback - Disables fallback to alternate fonts for
  775. // characters not supported in the requested
  776. // font. Any missing characters will be
  777. // be displayed with the fonts missing glyph,
  778. // usually an open square.
  779. //
  780. // NoWrap - Disables wrapping of text between lines
  781. // when formatting within a rectangle.
  782. // NoWrap is implied when a point is passed
  783. // instead of a rectangle, or when the
  784. // specified rectangle has a zero line length.
  785. //
  786. // NoClip - By default text is clipped to the
  787. // formatting rectangle. Setting NoClip
  788. // allows overhanging pixels to affect the
  789. // device outside the formatting rectangle.
  790. // Pixels at the end of the line may be
  791. // affected if the glyphs overhang their
  792. // cells, and either the NoFitBlackBox flag
  793. // has been set, or the glyph extends to far
  794. // to be fitted.
  795. // Pixels above/before the first line or
  796. // below/after the last line may be affected
  797. // if the glyphs extend beyond their cell
  798. // ascent / descent. This can occur rarely
  799. // with unusual diacritic mark combinations.
  800. //---------------------------------------------------------------------------
  801. enum StringFormatFlags
  802. {
  803. StringFormatFlagsDirectionRightToLeft = 0x00000001,
  804. StringFormatFlagsDirectionVertical = 0x00000002,
  805. StringFormatFlagsNoFitBlackBox = 0x00000004,
  806. StringFormatFlagsDisplayFormatControl = 0x00000020,
  807. StringFormatFlagsNoFontFallback = 0x00000400,
  808. StringFormatFlagsMeasureTrailingSpaces = 0x00000800,
  809. StringFormatFlagsNoWrap = 0x00001000,
  810. StringFormatFlagsLineLimit = 0x00002000,
  811. StringFormatFlagsNoClip = 0x00004000
  812. };
  813. //---------------------------------------------------------------------------
  814. // StringTrimming
  815. //---------------------------------------------------------------------------
  816. enum StringTrimming {
  817. StringTrimmingNone = 0,
  818. StringTrimmingCharacter = 1,
  819. StringTrimmingWord = 2,
  820. StringTrimmingEllipsisCharacter = 3,
  821. StringTrimmingEllipsisWord = 4,
  822. StringTrimmingEllipsisPath = 5
  823. };
  824. //---------------------------------------------------------------------------
  825. // National language digit substitution
  826. //---------------------------------------------------------------------------
  827. enum StringDigitSubstitute
  828. {
  829. StringDigitSubstituteUser = 0, // As NLS setting
  830. StringDigitSubstituteNone = 1,
  831. StringDigitSubstituteNational = 2,
  832. StringDigitSubstituteTraditional = 3
  833. };
  834. //---------------------------------------------------------------------------
  835. // Hotkey prefix interpretation
  836. //---------------------------------------------------------------------------
  837. enum HotkeyPrefix
  838. {
  839. HotkeyPrefixNone = 0,
  840. HotkeyPrefixShow = 1,
  841. HotkeyPrefixHide = 2
  842. };
  843. //---------------------------------------------------------------------------
  844. // String alignment flags
  845. //---------------------------------------------------------------------------
  846. enum StringAlignment
  847. {
  848. // Left edge for left-to-right text,
  849. // right for right-to-left text,
  850. // and top for vertical
  851. StringAlignmentNear = 0,
  852. StringAlignmentCenter = 1,
  853. StringAlignmentFar = 2
  854. };
  855. //---------------------------------------------------------------------------
  856. // DriverStringOptions
  857. //---------------------------------------------------------------------------
  858. enum DriverStringOptions
  859. {
  860. DriverStringOptionsCmapLookup = 1,
  861. DriverStringOptionsVertical = 2,
  862. DriverStringOptionsRealizedAdvance = 4,
  863. DriverStringOptionsLimitSubpixel = 8
  864. };
  865. //---------------------------------------------------------------------------
  866. // Flush Intention flags
  867. //---------------------------------------------------------------------------
  868. enum FlushIntention
  869. {
  870. FlushIntentionFlush = 0, // Flush all batched rendering operations
  871. FlushIntentionSync = 1 // Flush all batched rendering operations
  872. // and wait for them to complete
  873. };
  874. //---------------------------------------------------------------------------
  875. // Image encoder parameter related types
  876. //---------------------------------------------------------------------------
  877. enum EncoderParameterValueType
  878. {
  879. EncoderParameterValueTypeByte = 1, // 8-bit unsigned int
  880. EncoderParameterValueTypeASCII = 2, // 8-bit byte containing one 7-bit ASCII
  881. // code. NULL terminated.
  882. EncoderParameterValueTypeShort = 3, // 16-bit unsigned int
  883. EncoderParameterValueTypeLong = 4, // 32-bit unsigned int
  884. EncoderParameterValueTypeRational = 5, // Two Longs. The first Long is the
  885. // numerator, the second Long expresses the
  886. // denomintor.
  887. EncoderParameterValueTypeLongRange = 6, // Two longs which specify a range of
  888. // integer values. The first Long specifies
  889. // the lower end and the second one
  890. // specifies the higher end. All values
  891. // are inclusive at both ends
  892. EncoderParameterValueTypeUndefined = 7, // 8-bit byte that can take any value
  893. // depending on field definition
  894. EncoderParameterValueTypeRationalRange = 8 // Two Rationals. The first Rational
  895. // specifies the lower end and the second
  896. // specifies the higher end. All values
  897. // are inclusive at both ends
  898. };
  899. //---------------------------------------------------------------------------
  900. // Image encoder value types
  901. //---------------------------------------------------------------------------
  902. enum EncoderValue
  903. {
  904. EncoderValueColorTypeCMYK,
  905. EncoderValueColorTypeYCCK,
  906. EncoderValueCompressionLZW,
  907. EncoderValueCompressionCCITT3,
  908. EncoderValueCompressionCCITT4,
  909. EncoderValueCompressionRle,
  910. EncoderValueCompressionNone,
  911. EncoderValueScanMethodInterlaced,
  912. EncoderValueScanMethodNonInterlaced,
  913. EncoderValueVersionGif87,
  914. EncoderValueVersionGif89,
  915. EncoderValueRenderProgressive,
  916. EncoderValueRenderNonProgressive,
  917. EncoderValueTransformRotate90,
  918. EncoderValueTransformRotate180,
  919. EncoderValueTransformRotate270,
  920. EncoderValueTransformFlipHorizontal,
  921. EncoderValueTransformFlipVertical,
  922. EncoderValueMultiFrame,
  923. EncoderValueLastFrame,
  924. EncoderValueFlush,
  925. EncoderValueFrameDimensionTime,
  926. EncoderValueFrameDimensionResolution,
  927. EncoderValueFrameDimensionPage
  928. };
  929. //---------------------------------------------------------------------------
  930. // Conversion of Emf To WMF Bits flags
  931. //---------------------------------------------------------------------------
  932. enum EmfToWmfBitsFlags
  933. {
  934. EmfToWmfBitsFlagsDefault = 0x00000000,
  935. EmfToWmfBitsFlagsEmbedEmf = 0x00000001,
  936. EmfToWmfBitsFlagsIncludePlaceable = 0x00000002,
  937. EmfToWmfBitsFlagsNoXORClip = 0x00000004
  938. };
  939. //---------------------------------------------------------------------------
  940. // Test Control flags
  941. //---------------------------------------------------------------------------
  942. enum GpTestControlEnum
  943. {
  944. TestControlForceBilinear = 0,
  945. TestControlNoICM = 1,
  946. TestControlGetBuildNumber = 2
  947. };
  948. #endif // !_GDIPLUSENUMS_H