text: ﻿//+--------------------------------------------------------------------------
  //
  //  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 */
  