1//+--------------------------------------------------------------------------
2//
3//  Copyright (c) Microsoft Corporation.  All rights reserved.
4//
5//  Abstract:
6//     Public API definitions for DWrite and D2D
7//
8//----------------------------------------------------------------------------
9
10#ifndef DCOMMON_H_INCLUDED
11#define DCOMMON_H_INCLUDED
12
13//
14//These macros are defined in the Windows 7 SDK, however to enable development using the technical preview,
15//they are included here temporarily.
16//
17#ifndef DEFINE_ENUM_FLAG_OPERATORS
18#define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) \
19extern "C++" { \
20inline ENUMTYPE operator | (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a) | ((int)b)); } \
21inline ENUMTYPE &operator |= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) |= ((int)b)); } \
22inline ENUMTYPE operator & (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a) & ((int)b)); } \
23inline ENUMTYPE &operator &= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) &= ((int)b)); } \
24inline ENUMTYPE operator ~ (ENUMTYPE a) { return ENUMTYPE(~((int)a)); } \
25inline ENUMTYPE operator ^ (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a) ^ ((int)b)); } \
26inline ENUMTYPE &operator ^= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) ^= ((int)b)); } \
27}
28#endif
29
30#ifndef __field_ecount_opt
31#define __field_ecount_opt(x)
32#endif
33
34#ifndef __range
35#define __range(x,y)
36#endif
37
38#ifndef __field_ecount
39#define __field_ecount(x)
40#endif
41
42/// <summary>
43/// The measuring method used for text layout.
44/// </summary>
45typedef enum DWRITE_MEASURING_MODE
46{
47    /// <summary>
48    /// Text is measured using glyph ideal metrics whose values are independent to the current display resolution.
49    /// </summary>
50    DWRITE_MEASURING_MODE_NATURAL,
51
52    /// <summary>
53    /// Text is measured using glyph display compatible metrics whose values tuned for the current display resolution.
54    /// </summary>
55    DWRITE_MEASURING_MODE_GDI_CLASSIC,
56
57    /// <summary>
58    /// Text is measured using the same glyph display metrics as text measured by GDI using a font
59    /// created with CLEARTYPE_NATURAL_QUALITY.
60    /// </summary>
61    DWRITE_MEASURING_MODE_GDI_NATURAL
62
63} DWRITE_MEASURING_MODE;
64
65#endif /* DCOMMON_H_INCLUDED */
66