//+--------------------------------------------------------------------------
 
//
 
//  Copyright (c) Microsoft Corporation.  All rights reserved.
 
//
 
//  Abstract:
 
//     Public API definitions for DWrite and D2D
 
//
 
//----------------------------------------------------------------------------
 
 
 
#ifndef DCOMMON_H_INCLUDED
 
#define DCOMMON_H_INCLUDED
 
 
 
//
 
//These macros are defined in the Windows 7 SDK, however to enable development using the technical preview,
 
//they are included here temporarily.
 
//
 
#ifndef DEFINE_ENUM_FLAG_OPERATORS 
 
#define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) \
 
extern "C++" { \
 
inline ENUMTYPE operator | (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a) | ((int)b)); } \
 
inline ENUMTYPE &operator |= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) |= ((int)b)); } \
 
inline ENUMTYPE operator & (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a) & ((int)b)); } \
 
inline ENUMTYPE &operator &= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) &= ((int)b)); } \
 
inline ENUMTYPE operator ~ (ENUMTYPE a) { return ENUMTYPE(~((int)a)); } \
 
inline ENUMTYPE operator ^ (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a) ^ ((int)b)); } \
 
inline ENUMTYPE &operator ^= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) ^= ((int)b)); } \
 
}
 
#endif
 
 
 
#ifndef __field_ecount_opt
 
#define __field_ecount_opt(x)
 
#endif
 
 
 
#ifndef __range
 
#define __range(x,y) 
 
#endif
 
 
 
#ifndef __field_ecount
 
#define __field_ecount(x)
 
#endif
 
 
 
/// <summary>
 
/// The measuring method used for text layout.
 
/// </summary>
 
typedef enum DWRITE_MEASURING_MODE
 
{
 
    /// <summary>
 
    /// Text is measured using glyph ideal metrics whose values are independent to the current display resolution.
 
    /// </summary>
 
    DWRITE_MEASURING_MODE_NATURAL,
 
 
 
    /// <summary>
 
    /// Text is measured using glyph display compatible metrics whose values tuned for the current display resolution.
 
    /// </summary>
 
    DWRITE_MEASURING_MODE_GDI_CLASSIC,
 
 
 
    /// <summary>
 
    /// Text is measured using the same glyph display metrics as text measured by GDI using a font
 
    /// created with CLEARTYPE_NATURAL_QUALITY.
 
    /// </summary>
 
    DWRITE_MEASURING_MODE_GDI_NATURAL
 
 
 
} DWRITE_MEASURING_MODE;
 
 
 
#endif /* DCOMMON_H_INCLUDED */