diff --git a/include/d2dbasetypes.h b/include/d2dbasetypes.h index e5acff23da7..b231081647b 100644 --- a/include/d2dbasetypes.h +++ b/include/d2dbasetypes.h @@ -29,12 +29,6 @@ typedef struct D3DCOLORVALUE typedef D3DCOLORVALUE D2D_COLOR_F; -typedef struct D2D_POINT_2F -{ - FLOAT x; - FLOAT y; -} D2D_POINT_2F; - typedef struct D2D_MATRIX_3X2_F { float _11; @@ -59,12 +53,6 @@ typedef struct D2D_SIZE_F float height; } D2D_SIZE_F; -typedef struct D2D_SIZE_U -{ - UINT32 width; - UINT32 height; -} D2D_SIZE_U; - typedef struct D2D_POINT_2U { UINT32 x; diff --git a/include/dcommon.h b/include/dcommon.h index 56445a36d87..a516e8aae19 100644 --- a/include/dcommon.h +++ b/include/dcommon.h @@ -43,4 +43,18 @@ typedef struct D2D1_PIXEL_FORMAT D2D1_ALPHA_MODE alphaMode; } D2D1_PIXEL_FORMAT; +typedef struct D2D_POINT_2F +{ + FLOAT x; + FLOAT y; +} D2D_POINT_2F, D2D1_POINT_2F; + +typedef POINT D2D_POINT_2L, D2D1_POINT_2L; + +typedef struct D2D_SIZE_U +{ + UINT32 width; + UINT32 height; +} D2D_SIZE_U, D2D1_SIZE_U; + #endif /* __WINE_DCOMMON_H */ diff --git a/include/dwrite_3.idl b/include/dwrite_3.idl index 9e7a4c6b4d4..afe7e84f1f7 100644 --- a/include/dwrite_3.idl +++ b/include/dwrite_3.idl @@ -397,3 +397,104 @@ interface IDWriteFactory3 : IDWriteFactory2 HRESULT GetFontDownloadQueue(IDWriteFontDownloadQueue **queue); } + +typedef enum DWRITE_GLYPH_IMAGE_FORMATS +{ + DWRITE_GLYPH_IMAGE_FORMATS_NONE = 0, + DWRITE_GLYPH_IMAGE_FORMATS_TRUETYPE = 1 << 0, + DWRITE_GLYPH_IMAGE_FORMATS_CFF = 1 << 1, + DWRITE_GLYPH_IMAGE_FORMATS_COLR = 1 << 2, + DWRITE_GLYPH_IMAGE_FORMATS_SVG = 1 << 3, + DWRITE_GLYPH_IMAGE_FORMATS_PNG = 1 << 4, + DWRITE_GLYPH_IMAGE_FORMATS_JPEG = 1 << 5, + DWRITE_GLYPH_IMAGE_FORMATS_TIFF = 1 << 6, + DWRITE_GLYPH_IMAGE_FORMATS_PREMULTIPLIED_B8G8R8A8 = 1 << 7 +} DWRITE_GLYPH_IMAGE_FORMATS; + +typedef struct DWRITE_GLYPH_IMAGE_DATA +{ + void const *imageData; + UINT32 imageDataSize; + UINT32 uniqueDataId; + UINT32 pixelsPerEm; + D2D1_SIZE_U pixelSize; + D2D1_POINT_2L horizontalLeftOrigin; + D2D1_POINT_2L horizontalRightOrigin; + D2D1_POINT_2L verticalTopOrigin; + D2D1_POINT_2L verticalBottomOrigin; +} DWRITE_GLYPH_IMAGE_DATA; + +[ + local, + object, + uuid(27f2a904-4eb8-441d-9678-0563f53e3e2f) +] +interface IDWriteFontFace4 : IDWriteFontFace3 +{ + HRESULT GetGlyphImageFormats_( + UINT16 glyph, + UINT32 ppem_first, + UINT32 ppem_last, + DWRITE_GLYPH_IMAGE_FORMATS *formats); + DWRITE_GLYPH_IMAGE_FORMATS GetGlyphImageFormats(); + HRESULT GetGlyphImageData( + UINT16 glyph, + UINT32 ppem, + DWRITE_GLYPH_IMAGE_FORMATS format, + DWRITE_GLYPH_IMAGE_DATA *data, + void **context); + void ReleaseGlyphImageData(void *context); +} + +typedef struct DWRITE_COLOR_GLYPH_RUN1 +{ + DWRITE_GLYPH_RUN glyphRun; + DWRITE_GLYPH_RUN_DESCRIPTION *glyphRunDescription; + FLOAT baselineOriginX; + FLOAT baselineOriginY; + DWRITE_COLOR_F runColor; + UINT16 paletteIndex; + DWRITE_GLYPH_IMAGE_FORMATS glyphImageFormat; + DWRITE_MEASURING_MODE measuringMode; +} DWRITE_COLOR_GLYPH_RUN1; + +[ + local, + object, + uuid(7c5f86da-c7a1-4f05-b8e1-55a179fe5a35) +] +interface IDWriteColorGlyphRunEnumerator1 : IDWriteColorGlyphRunEnumerator +{ + HRESULT GetCurrentRun( + DWRITE_COLOR_GLYPH_RUN1 const **run); +} + +[ + local, + object, + uuid(4b0b5bd3-0797-4549-8ac5-fe915cc53856) +] +interface IDWriteFactory4 : IDWriteFactory3 +{ + HRESULT TranslateColorGlyphRun( + D2D1_POINT_2F baseline_origin, + DWRITE_GLYPH_RUN const *run, + DWRITE_GLYPH_RUN_DESCRIPTION const *run_desc, + DWRITE_GLYPH_IMAGE_FORMATS desired_formats, + DWRITE_MEASURING_MODE measuring_mode, + DWRITE_MATRIX const *transform, + UINT32 palette, + IDWriteColorGlyphRunEnumerator1 **layers); + + HRESULT ComputeGlyphOrigins_( + DWRITE_GLYPH_RUN const *run, + D2D1_POINT_2F baseline_origin, + D2D1_POINT_2F *origins); + + HRESULT ComputeGlyphOrigins( + DWRITE_GLYPH_RUN const *run, + DWRITE_MEASURING_MODE measuring_mode, + D2D1_POINT_2F baseline_origin, + DWRITE_MATRIX const *transform, + D2D1_POINT_2F *origins); +}