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