/**
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is part of the mingw-w64 runtime package.
 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
 */
#ifndef __INC_DCOMMON__
#define __INC_DCOMMON__

#include <dxgiformat.h>

typedef enum DWRITE_MEASURING_MODE {
  DWRITE_MEASURING_MODE_NATURAL = 0,
  DWRITE_MEASURING_MODE_GDI_CLASSIC,
  DWRITE_MEASURING_MODE_GDI_NATURAL 
} DWRITE_MEASURING_MODE;

enum DWRITE_GLYPH_IMAGE_FORMATS {
    DWRITE_GLYPH_IMAGE_FORMATS_NONE      = 0x0000,
    DWRITE_GLYPH_IMAGE_FORMATS_TRUETYPE  = 0x0001,
    DWRITE_GLYPH_IMAGE_FORMATS_CFF       = 0x0002,
    DWRITE_GLYPH_IMAGE_FORMATS_COLR      = 0x0004,
    DWRITE_GLYPH_IMAGE_FORMATS_SVG       = 0x0008,
    DWRITE_GLYPH_IMAGE_FORMATS_PNG       = 0x0010,
    DWRITE_GLYPH_IMAGE_FORMATS_JPEG      = 0x0020,
    DWRITE_GLYPH_IMAGE_FORMATS_TIFF      = 0x0040,
    DWRITE_GLYPH_IMAGE_FORMATS_PREMULTIPLIED_B8G8R8A8 = 0x0080,
};

typedef enum D2D1_ALPHA_MODE {
  D2D1_ALPHA_MODE_UNKNOWN = 0,
  D2D1_ALPHA_MODE_PREMULTIPLIED = 1,
  D2D1_ALPHA_MODE_STRAIGHT = 2,
  D2D1_ALPHA_MODE_IGNORE = 3,
  D2D1_ALPHA_MODE_FORCE_DWORD = 0xffffffff
} D2D1_ALPHA_MODE;

typedef struct D2D1_PIXEL_FORMAT {
  DXGI_FORMAT format;
  D2D1_ALPHA_MODE alphaMode;
} D2D1_PIXEL_FORMAT;

typedef POINT D2D_POINT_2L;
typedef D2D_POINT_2L D2D1_POINT_2L;

struct D2D_SIZE_U {
  UINT32 width;
  UINT32 height;
};

typedef struct D2D_SIZE_U D2D1_SIZE_U;

#endif /*#define __INC_DCOMMON__*/
