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