diff --git a/include/d2d1_3.idl b/include/d2d1_3.idl index 8e53f630ea4..a4868889012 100644 --- a/include/d2d1_3.idl +++ b/include/d2d1_3.idl @@ -85,6 +85,22 @@ typedef enum D2D1_COLOR_BITMAP_GLYPH_SNAP_OPTION D2D1_COLOR_BITMAP_GLYPH_SNAP_OPTION_FORCE_DWORD = 0xffffffff } D2D1_COLOR_BITMAP_GLYPH_SNAP_OPTION; +typedef enum D2D1_GAMMA1 +{ + D2D1_GAMMA1_G22 = D2D1_GAMMA_2_2, + D2D1_GAMMA1_G10 = D2D1_GAMMA_1_0, + D2D1_GAMMA1_G2084 = 2, + D2D1_GAMMA1_FORCE_DWORD = 0xffffffff +} D2D1_GAMMA1; + +typedef enum D2D1_COLOR_CONTEXT_TYPE +{ + D2D1_COLOR_CONTEXT_TYPE_ICC = 0x0, + D2D1_COLOR_CONTEXT_TYPE_SIMPLE = 0x1, + D2D1_COLOR_CONTEXT_TYPE_DXGI = 0x2, + D2D1_COLOR_CONTEXT_TYPE_FORCE_DWORD = 0xffffffff +} D2D1_COLOR_CONTEXT_TYPE; + typedef struct D2D1_INK_POINT { float x; @@ -142,6 +158,15 @@ typedef struct D2D1_TRANSFORMED_IMAGE_SOURCE_PROPERTIES D2D1_TRANSFORMED_IMAGE_SOURCE_OPTIONS options; } D2D1_TRANSFORMED_IMAGE_SOURCE_PROPERTIES; +typedef struct D2D1_SIMPLE_COLOR_PROFILE +{ + D2D1_POINT_2F redPrimary; + D2D1_POINT_2F greenPrimary; + D2D1_POINT_2F bluePrimary; + D2D1_POINT_2F whitePointXZ; + D2D1_GAMMA1 gamma; +} D2D1_SIMPLE_COLOR_PROFILE; + [ object, uuid(bae8b344-23fc-4071-8cb5-d05d6f073848), @@ -505,8 +530,62 @@ interface ID2D1DeviceContext4 : ID2D1DeviceContext3 ); } -interface ID2D1DeviceContext5; -interface ID2D1DeviceContext6; +interface ID2D1SvgDocument; + +[ + object, + uuid(1ab42875-c57f-4be9-bd85-9cd78d6f55ee), + local, +] +interface ID2D1ColorContext1 : ID2D1ColorContext +{ + D2D1_COLOR_CONTEXT_TYPE GetColorContextType(void); + DXGI_COLOR_SPACE_TYPE GetDXGIColorSpace(void); + HRESULT GetSimpleColorProfile( + [out] D2D1_SIMPLE_COLOR_PROFILE *simple_profile + ); +} + +[ + object, + uuid(7836d248-68cc-4df6-b9e8-de991bf62eb7), + local, +] +interface ID2D1DeviceContext5 : ID2D1DeviceContext4 +{ + HRESULT CreateSvgDocument( + [in] IStream *input_xml_stream, + [in] D2D1_SIZE_F viewport_size, + [out] ID2D1SvgDocument **svg_document + ); + void DrawSvgDocument( + [in] ID2D1SvgDocument *svg_document + ); + HRESULT CreateColorContextFromDxgiColorSpace( + [in] DXGI_COLOR_SPACE_TYPE color_space, + [out] ID2D1ColorContext1 **color_context + ); + HRESULT CreateColorContextFromSimpleColorProfile( + [in] const D2D1_SIMPLE_COLOR_PROFILE *simple_profile, + [out] ID2D1ColorContext1 **color_context + ); +} + +[ + object, + uuid(985f7e37-4ed0-4a19-98a3-15b0edfde306), + local, +] +interface ID2D1DeviceContext6 : ID2D1DeviceContext5 +{ + void BlendImage( + [in] ID2D1Image *image, + [in] D2D1_BLEND_MODE blend_mode, + [in] const D2D1_POINT_2F *target_offset, + [in] const D2D1_RECT_F *image_rect, + [in] D2D1_INTERPOLATION_MODE interpolation_mode + ); +} [ object, diff --git a/include/d2d1effects.idl b/include/d2d1effects.idl index 00bf323ecba..32277027f88 100644 --- a/include/d2d1effects.idl +++ b/include/d2d1effects.idl @@ -120,3 +120,34 @@ typedef enum D2D1_CROP_PROP D2D1_CROP_PROP_BORDER_MODE = 0x1, D2D1_CROP_PROP_FORCE_DWORD = 0xffffffff } D2D1_CROP_PROP; + +typedef enum D2D1_BLEND_MODE +{ + D2D1_BLEND_MODE_MULTIPLY = 0x0, + D2D1_BLEND_MODE_SCREEN = 0x1, + D2D1_BLEND_MODE_DARKEN = 0x2, + D2D1_BLEND_MODE_LIGHTEN = 0x3, + D2D1_BLEND_MODE_DISSOLVE = 0x4, + D2D1_BLEND_MODE_COLOR_BURN = 0x5, + D2D1_BLEND_MODE_LINEAR_BURN = 0x6, + D2D1_BLEND_MODE_DARKER_COLOR = 0x7, + D2D1_BLEND_MODE_LIGHTER_COLOR = 0x8, + D2D1_BLEND_MODE_COLOR_DODGE = 0x9, + D2D1_BLEND_MODE_LINEAR_DODGE = 0xa, + D2D1_BLEND_MODE_OVERLAY = 0xb, + D2D1_BLEND_MODE_SOFT_LIGHT = 0xc, + D2D1_BLEND_MODE_HARD_LIGHT = 0xd, + D2D1_BLEND_MODE_VIVID_LIGHT = 0xe, + D2D1_BLEND_MODE_LINEAR_LIGHT = 0xf, + D2D1_BLEND_MODE_PIN_LIGHT = 0x10, + D2D1_BLEND_MODE_HARD_MIX = 0x11, + D2D1_BLEND_MODE_DIFFERENCE = 0x12, + D2D1_BLEND_MODE_EXCLUSION = 0x13, + D2D1_BLEND_MODE_HUE = 0x14, + D2D1_BLEND_MODE_SATURATION = 0x15, + D2D1_BLEND_MODE_COLOR = 0x16, + D2D1_BLEND_MODE_LUMINOSITY = 0x17, + D2D1_BLEND_MODE_SUBTRACT = 0x18, + D2D1_BLEND_MODE_DIVISION = 0x19, + D2D1_BLEND_MODE_FORCE_DWORD = 0xffffffff +} D2D1_BLEND_MODE;