[PATCH 2/2] include: Added ID2D1Factory1 definition

Nikolay Sivov nsivov at codeweavers.com
Wed Nov 22 08:21:06 CST 2017


Based on patch by Lucian Poston <lucian.poston at gmail.com>

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---

- added missing enum members;
- formatting changes;
- prototype fixes;
- type changes to match SDK definitions;
- dcommon.idl is used for 4X4 matrix type
- stripped from implementation changes

 include/Makefile.in |   1 +
 include/d2d1_1.idl  | 655 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 include/dcommon.idl |  15 ++
 3 files changed, 671 insertions(+)
 create mode 100644 include/d2d1_1.idl

diff --git a/include/Makefile.in b/include/Makefile.in
index fa1e42738b..e6a369f035 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -36,6 +36,7 @@ IDL_SRCS = \
 	ctfutb.idl \
 	ctxtcall.idl \
 	d2d1.idl \
+	d2d1_1.idl \
 	d3d10.idl \
 	d3d10_1.idl \
 	d3d10sdklayers.idl \
diff --git a/include/d2d1_1.idl b/include/d2d1_1.idl
new file mode 100644
index 0000000000..554c6f4a07
--- /dev/null
+++ b/include/d2d1_1.idl
@@ -0,0 +1,655 @@
+/*
+ * Copyright 2017 Wine Project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "dxgi.idl";
+import "d2d1.idl";
+
+interface IWICImagingFactory;
+interface IWICColorContext;
+interface IPrintDocumentPackageTarget;
+interface ID2D1PrintControl;
+interface ID2D1Properties;
+interface ID2D1ColorContext;
+interface ID2D1Bitmap1;
+interface ID2D1CommandSink;
+interface ID2D1Effect;
+interface ID2D1ImageBrush;
+interface ID2D1Device;
+
+typedef enum D2D1_PRIMITIVE_BLEND
+{
+    D2D1_PRIMITIVE_BLEND_SOURCE_OVER = 0,
+    D2D1_PRIMITIVE_BLEND_COPY = 1,
+    D2D1_PRIMITIVE_BLEND_MIN = 2,
+    D2D1_PRIMITIVE_BLEND_ADD = 3,
+    D2D1_PRIMITIVE_BLEND_MAX = 4,
+    D2D1_PRIMITIVE_BLEND_FORCE_DWORD = 0xffffffff,
+} D2D1_PRIMITIVE_BLEND;
+
+typedef enum D2D1_UNIT_MODE
+{
+    D2D1_UNIT_MODE_DIPS = 0,
+    D2D1_UNIT_MODE_PIXELS = 1,
+    D2D1_UNIT_MODE_FORCE_DWORD = 0xffffffff,
+} D2D1_UNIT_MODE;
+
+typedef enum D2D1_STROKE_TRANSFORM_TYPE
+{
+    D2D1_STROKE_TRANSFORM_TYPE_NORMAL = 0,
+    D2D1_STROKE_TRANSFORM_TYPE_FIXED = 1,
+    D2D1_STROKE_TRANSFORM_TYPE_HAIRLINE = 2,
+    D2D1_STROKE_TRANSFORM_TYPE_FORCE_DWORD = 0xffffffff,
+} D2D1_STROKE_TRANSFORM_TYPE;
+
+typedef enum D2D1_DEVICE_CONTEXT_OPTIONS
+{
+    D2D1_DEVICE_CONTEXT_OPTIONS_NONE = 0,
+    D2D1_DEVICE_CONTEXT_OPTIONS_ENABLE_MULTITHREADED_OPTIMIZATIONS = 1,
+    D2D1_DEVICE_CONTEXT_OPTIONS_FORCE_DWORD = 0xffffffff,
+} D2D1_DEVICE_CONTEXT_OPTIONS;
+
+typedef enum D2D1_PRINT_FONT_SUBSET_MODE
+{
+    D2D1_PRINT_FONT_SUBSET_DEFAULT = 0,
+    D2D1_PRINT_FONT_SUBSET_EACHPAGE = 1,
+    D2D1_PRINT_FONT_SUBSET_NONE = 2,
+    D2D1_PRINT_FONT_SUBSET_FORCE_DWORD = 0xffffffff,
+} D2D1_PRINT_FONT_SUBSET_MODE;
+
+typedef enum D2D1_COLOR_SPACE
+{
+    D2D1_COLOR_SPACE_CUSTOM = 0,
+    D2D1_COLOR_SPACE_SRGB = 1,
+    D2D1_COLOR_SPACE_SCRGB = 2,
+    D2D1_COLOR_SPACE_FORCE_DWORD = 0xffffffff,
+} D2D1_COLOR_SPACE;
+
+typedef enum D2D1_BITMAP_OPTIONS
+{
+    D2D1_BITMAP_OPTIONS_NONE = 0,
+    D2D1_BITMAP_OPTIONS_TARGET = 1,
+    D2D1_BITMAP_OPTIONS_CANNOT_DRAW = 2,
+    D2D1_BITMAP_OPTIONS_CPU_READ = 4,
+    D2D1_BITMAP_OPTIONS_GDI_COMPATIBLE = 8,
+    D2D1_BITMAP_OPTIONS_FORCE_DWORD = 0xffffffff,
+} D2D1_BITMAP_OPTIONS;
+
+typedef enum D2D1_INTERPOLATION_MODE
+{
+    D2D1_INTERPOLATION_MODE_NEAREST_NEIGHBOR = D2D1_INTERPOLATION_MODE_DEFINITION_NEAREST_NEIGHBOR,
+    D2D1_INTERPOLATION_MODE_LINEAR = D2D1_INTERPOLATION_MODE_DEFINITION_LINEAR,
+    D2D1_INTERPOLATION_MODE_CUBIC = D2D1_INTERPOLATION_MODE_DEFINITION_CUBIC,
+    D2D1_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR = D2D1_INTERPOLATION_MODE_DEFINITION_MULTI_SAMPLE_LINEAR,
+    D2D1_INTERPOLATION_MODE_ANISOTROPIC = D2D1_INTERPOLATION_MODE_DEFINITION_ANISOTROPIC,
+    D2D1_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC = D2D1_INTERPOLATION_MODE_DEFINITION_HIGH_QUALITY_CUBIC,
+    D2D1_INTERPOLATION_MODE_FORCE_DWORD = 0xffffffff,
+} D2D1_INTERPOLATION_MODE;
+
+typedef enum D2D1_BUFFER_PRECISION
+{
+    D2D1_BUFFER_PRECISION_UNKNOWN = 0,
+    D2D1_BUFFER_PRECISION_8BPC_UNORM = 1,
+    D2D1_BUFFER_PRECISION_8BPC_UNORM_SRGB = 2,
+    D2D1_BUFFER_PRECISION_16BPC_UNORM = 3,
+    D2D1_BUFFER_PRECISION_16BPC_FLOAT = 4,
+    D2D1_BUFFER_PRECISION_32BPC_FLOAT = 5,
+    D2D1_BUFFER_PRECISION_FORCE_DWORD = 0xffffffff,
+} D2D1_BUFFER_PRECISION;
+
+typedef enum D2D1_COLOR_INTERPOLATION_MODE
+{
+    D2D1_COLOR_INTERPOLATION_MODE_STRAIGHT = 0,
+    D2D1_COLOR_INTERPOLATION_MODE_PREMULTIPLIED = 1,
+    D2D1_COLOR_INTERPOLATION_MODE_FORCE_DWORD = 0xffffffff,
+} D2D1_COLOR_INTERPOLATION_MODE;
+
+typedef enum D2D1_COMPOSITE_MODE
+{
+    D2D1_COMPOSITE_MODE_SOURCE_OVER = 0,
+    D2D1_COMPOSITE_MODE_DESTINATION_OVER = 1,
+    D2D1_COMPOSITE_MODE_SOURCE_IN = 2,
+    D2D1_COMPOSITE_MODE_DESTINATION_IN = 3,
+    D2D1_COMPOSITE_MODE_SOURCE_OUT = 4,
+    D2D1_COMPOSITE_MODE_DESTINATION_OUT = 5,
+    D2D1_COMPOSITE_MODE_SOURCE_ATOP = 6,
+    D2D1_COMPOSITE_MODE_DESTINATION_ATOP = 7,
+    D2D1_COMPOSITE_MODE_XOR = 8,
+    D2D1_COMPOSITE_MODE_PLUS = 9,
+    D2D1_COMPOSITE_MODE_SOURCE_COPY = 10,
+    D2D1_COMPOSITE_MODE_BOUNDED_SOURCE_COPY = 11,
+    D2D1_COMPOSITE_MODE_MASK_INVERT = 12,
+    D2D1_COMPOSITE_MODE_FORCE_DWORD = 0xffffffff,
+} D2D1_COMPOSITE_MODE;
+
+typedef enum D2D1_LAYER_OPTIONS1
+{
+    D2D1_LAYER_OPTIONS1_NONE = 0,
+    D2D1_LAYER_OPTIONS1_INITIALIZE_FROM_BACKGROUND = 1,
+    D2D1_LAYER_OPTIONS1_IGNORE_ALPHA = 2,
+    D2D1_LAYER_OPTIONS1_FORCE_DWORD = 0xffffffff,
+} D2D1_LAYER_OPTIONS1;
+
+typedef enum D2D1_MAP_OPTIONS
+{
+    D2D1_MAP_OPTIONS_NONE = 0,
+    D2D1_MAP_OPTIONS_READ = 1,
+    D2D1_MAP_OPTIONS_WRITE = 2,
+    D2D1_MAP_OPTIONS_DISCARD = 4,
+    D2D1_MAP_OPTIONS_FORCE_DWORD = 0xffffffff,
+} D2D1_MAP_OPTIONS;
+
+typedef D2D_MATRIX_4X4_F D2D1_MATRIX_4X4_F;
+typedef struct DWRITE_GLYPH_RUN_DESCRIPTION DWRITE_GLYPH_RUN_DESCRIPTION;
+typedef struct D2D1_PROPERTY_BINDING D2D1_PROPERTY_BINDING;
+
+typedef struct D2D1_MAPPED_RECT
+{
+    UINT32 pitch;
+    BYTE *bits;
+} D2D1_MAPPED_RECT;
+
+typedef struct D2D1_LAYER_PARAMETERS1
+{
+    D2D1_RECT_F contentBounds;
+    ID2D1Geometry *geometricMask;
+    D2D1_ANTIALIAS_MODE maskAntialiasMode;
+    D2D1_MATRIX_3X2_F maskTransform;
+    float opacity;
+    ID2D1Brush *opacityBrush;
+    D2D1_LAYER_OPTIONS1 layerOptions;
+} D2D1_LAYER_PARAMETERS1;
+
+typedef struct D2D1_RENDERING_CONTROLS
+{
+    D2D1_BUFFER_PRECISION bufferPrecision;
+    D2D1_SIZE_U tileSize;
+} D2D1_RENDERING_CONTROLS;
+
+typedef struct D2D1_EFFECT_INPUT_DESCRIPTION
+{
+    ID2D1Effect *effect;
+    UINT32 inputIndex;
+    D2D1_RECT_F inputRectangle;
+} D2D1_EFFECT_INPUT_DESCRIPTION;
+
+typedef struct D2D1_IMAGE_BRUSH_PROPERTIES
+{
+    D2D1_RECT_F sourceRectangle;
+    D2D1_EXTEND_MODE extendModeX;
+    D2D1_EXTEND_MODE extendModeY;
+    D2D1_INTERPOLATION_MODE interpolationMode;
+} D2D1_IMAGE_BRUSH_PROPERTIES;
+
+typedef struct D2D1_BITMAP_BRUSH_PROPERTIES1
+{
+    D2D1_EXTEND_MODE extendModeX;
+    D2D1_EXTEND_MODE extendModeY;
+    D2D1_INTERPOLATION_MODE interpolationMode;
+} D2D1_BITMAP_BRUSH_PROPERTIES1;
+
+typedef struct D2D1_BITMAP_PROPERTIES1
+{
+    D2D1_PIXEL_FORMAT pixelFormat;
+    float dpiX;
+    float dpiY;
+    D2D1_BITMAP_OPTIONS bitmapOptions;
+    ID2D1ColorContext *colorContext;
+} D2D1_BITMAP_PROPERTIES1;
+
+typedef HRESULT (__stdcall *PD2D1_EFFECT_FACTORY)(IUnknown **effect);
+
+typedef struct D2D1_PRINT_CONTROL_PROPERTIES
+{
+    D2D1_PRINT_FONT_SUBSET_MODE fontSubset;
+    float rasterDPI;
+    D2D1_COLOR_SPACE colorSpace;
+} D2D1_PRINT_CONTROL_PROPERTIES;
+
+typedef struct D2D1_POINT_DESCRIPTION
+{
+    D2D1_POINT_2F point;
+    D2D1_POINT_2F unitTangentVector;
+    UINT32 endSegment;
+    UINT32 endFigure;
+    float lengthToEndSegment;
+} D2D1_POINT_DESCRIPTION;
+
+typedef struct D2D1_DRAWING_STATE_DESCRIPTION1
+{
+    D2D1_ANTIALIAS_MODE antialiasMode;
+    D2D1_TEXT_ANTIALIAS_MODE textAntialiasMode;
+    D2D1_TAG tag1;
+    D2D1_TAG tag2;
+    D2D1_MATRIX_3X2_F transform;
+    D2D1_PRIMITIVE_BLEND primitiveBlend;
+    D2D1_UNIT_MODE unitMode;
+} D2D1_DRAWING_STATE_DESCRIPTION1;
+
+typedef struct D2D1_STROKE_STYLE_PROPERTIES1
+{
+    D2D1_CAP_STYLE startCap;
+    D2D1_CAP_STYLE endCap;
+    D2D1_CAP_STYLE dashCap;
+    D2D1_LINE_JOIN lineJoin;
+    float miterLimit;
+    D2D1_DASH_STYLE dashStyle;
+    float dashOffset;
+    D2D1_STROKE_TRANSFORM_TYPE transformType;
+} D2D1_STROKE_STYLE_PROPERTIES1;
+
+[
+    local,
+    object,
+    uuid(a898a84c-3873-4588-b08b-ebbf978df041)
+]
+interface ID2D1Bitmap1 : ID2D1Bitmap
+{
+    void GetColorContext(
+        [out] ID2D1ColorContext **color_context
+    );
+    D2D1_BITMAP_OPTIONS GetOptions();
+    HRESULT GetSurface(
+        [out] IDXGISurface **surface
+    );
+    HRESULT Map(
+        D2D1_MAP_OPTIONS options,
+        [out] D2D1_MAPPED_RECT *mapped_rect
+    );
+    HRESULT Unmap();
+}
+
+[
+    local,
+    object,
+    uuid(ae1572f4-5dd0-4777-998b-9279472ae63b)
+]
+interface ID2D1GradientStopCollection1 : ID2D1GradientStopCollection
+{
+    void GetGradientStops1(
+        [out] D2D1_GRADIENT_STOP *stops,
+        [in] UINT32 stop_count
+    );
+    D2D1_COLOR_SPACE GetPreInterpolationSpace();
+    D2D1_COLOR_SPACE GetPostInterpolationSpace();
+    D2D1_BUFFER_PRECISION GetBufferPrecision();
+    D2D1_COLOR_INTERPOLATION_MODE GetColorInterpolationMode();
+}
+
+[
+    local,
+    object,
+    uuid(b4f34a19-2383-4d76-94f6-ec343657c3dc)
+]
+interface ID2D1CommandList : ID2D1Image
+{
+    HRESULT Stream(
+        [in] ID2D1CommandSink *Sink
+    );
+    HRESULT Close();
+}
+
+[
+    local,
+    object,
+    uuid(41343a53-e41a-49a2-91cd-21793bbb62e5)
+]
+interface ID2D1BitmapBrush1 : ID2D1BitmapBrush
+{
+    void SetInterpolationMode1(
+        D2D1_INTERPOLATION_MODE interpolation_mode
+    );
+    D2D1_INTERPOLATION_MODE GetInterpolationMode1();
+}
+
+[
+    local,
+    object,
+    uuid(1c4820bb-5771-4518-a581-2fe4dd0ec657)
+]
+interface ID2D1ColorContext : ID2D1Resource
+{
+    D2D1_COLOR_SPACE GetColorSpace();
+    UINT32 GetProfileSize();
+    HRESULT GetProfile(
+        [out] BYTE *profile,
+        [in] UINT32 size
+    );
+}
+
+[
+    local,
+    object,
+    uuid(82237326-8111-4f7c-bcf4-b5c1175564fe)
+]
+interface ID2D1GdiMetafileSink : ID2D1Resource
+{
+    BOOL ProcessRecord(
+        [in] DWORD record_type,
+        [out] const void *data,
+        [in] DWORD data_size
+    );
+}
+
+[
+    local,
+    object,
+    uuid(2f543dc3-cfc1-4211-864f-cfd91c6f3395)
+]
+interface ID2D1GdiMetafile : ID2D1Resource
+{
+    HRESULT Stream(
+        [in] ID2D1GdiMetafileSink *sink
+    );
+    HRESULT GetBounds(
+        [out] D2D1_RECT_F *bounds
+    );
+}
+
+[
+    local,
+    object,
+    uuid(10a72a66-e91c-43f4-993f-ddf4b82b0b4a)
+]
+interface ID2D1StrokeStyle1 : ID2D1StrokeStyle
+{
+    D2D1_STROKE_TRANSFORM_TYPE GetStrokeTransformType();
+}
+
+[
+    local,
+    object,
+    uuid(62baa2d2-ab54-41b7-b872-787e0106a421)
+]
+interface ID2D1PathGeometry1 : ID2D1PathGeometry
+{
+    HRESULT ComputePointAndSegmentAtLength(
+        [in] float length,
+        [in] UINT32 start_segment,
+        [in] const D2D1_MATRIX_3X2_F *world_transform,
+        [in] float tolerance,
+        [out] D2D1_POINT_DESCRIPTION *desc
+    );
+}
+
+[
+    local,
+    object,
+    uuid(689f1f85-c72e-4e33-8f19-85754efd5ace)
+]
+interface ID2D1DrawingStateBlock1 : ID2D1DrawingStateBlock
+{
+    void GetDescription(
+        [out] D2D1_DRAWING_STATE_DESCRIPTION1 *desc
+    );
+    void SetDescription(
+        [in] const D2D1_DRAWING_STATE_DESCRIPTION1 *desc
+    );
+}
+
+[
+    local,
+    object,
+    uuid(e8f7fe7a-191c-466d-ad95-975678bda998)
+]
+interface ID2D1DeviceContext : ID2D1RenderTarget
+{
+    HRESULT CreateBitmap(
+        [in] D2D1_SIZE_U size,
+        [in] const void *src_data,
+        [in] UINT32 pitch,
+        [in] const D2D1_BITMAP_PROPERTIES1 *desc,
+        [out] ID2D1Bitmap1 **bitmap
+    );
+    HRESULT CreateBitmapFromWicBitmap(
+        [in] IWICBitmapSource *bitmap_source,
+        [in] const D2D1_BITMAP_PROPERTIES1 *desc,
+        [out] ID2D1Bitmap1 **bitmap
+    );
+    HRESULT CreateColorContext(
+        [in] D2D1_COLOR_SPACE space,
+        [in] const BYTE *profile,
+        [in] UINT32 profile_size,
+        [out] ID2D1ColorContext **color_context
+    );
+    HRESULT CreateColorContextFromFilename(
+        [in] const WCHAR *filename,
+        [out] ID2D1ColorContext **color_context
+    );
+    HRESULT CreateColorContextFromWicColorContext(
+        [in] IWICColorContext *wic_color_context,
+        [out] ID2D1ColorContext **color_context
+    );
+    HRESULT CreateBitmapFromDxgiSurface(
+        [in] IDXGISurface *surface,
+        [in] const D2D1_BITMAP_PROPERTIES1 *desc,
+        [out] ID2D1Bitmap1 **bitmap
+    );
+    HRESULT CreateEffect(
+        [in] REFCLSID effect_id,
+        [out] ID2D1Effect **effect
+    );
+    HRESULT CreateGradientStopCollection(
+        [in] const D2D1_GRADIENT_STOP *stops,
+        [in] UINT32 stop_count,
+        [in] D2D1_COLOR_SPACE preinterpolation_space,
+        [in] D2D1_COLOR_SPACE postinterpolation_space,
+        [in] D2D1_BUFFER_PRECISION buffer_precision,
+        [in] D2D1_EXTEND_MODE extend_mode,
+        [in] D2D1_COLOR_INTERPOLATION_MODE color_interpolation_mode,
+        [out] ID2D1GradientStopCollection1 **gradient
+    );
+    HRESULT CreateImageBrush(
+        [in] ID2D1Image *image,
+        [in] const D2D1_IMAGE_BRUSH_PROPERTIES *image_brush_desc,
+        [in] const D2D1_BRUSH_PROPERTIES *brush_desc,
+        [out] ID2D1ImageBrush **brush
+    );
+    HRESULT CreateBitmapBrush(
+        [in] ID2D1Bitmap *bitmap,
+        [in] const D2D1_BITMAP_BRUSH_PROPERTIES1 *bitmap_brush_desc,
+        [in] const D2D1_BRUSH_PROPERTIES *brush_desc,
+        [out] ID2D1BitmapBrush1 **bitmap
+    );
+    HRESULT CreateCommandList(
+        [out] ID2D1CommandList **command_list
+    );
+    BOOL IsDxgiFormatSupported(
+        [in] DXGI_FORMAT format
+    );
+    BOOL IsBufferPrecisionSupported(
+        [in] D2D1_BUFFER_PRECISION buffer_precision
+    );
+    void GetImageLocalBounds(
+        [in] ID2D1Image *image,
+        [out] D2D1_RECT_F *local_bounds
+    );
+    HRESULT GetImageWorldBounds(
+        [in] ID2D1Image *image,
+        [out] D2D1_RECT_F *world_bounds
+    );
+    HRESULT GetGlyphRunWorldBounds(
+        [in] D2D1_POINT_2F baseline_origin,
+        [in] const DWRITE_GLYPH_RUN *glyph_run,
+        [in] DWRITE_MEASURING_MODE measuring_mode,
+        [out] D2D1_RECT_F *bounds
+    );
+    void GetDevice(
+        [out] ID2D1Device **device
+    );
+    void SetTarget(
+        [in] ID2D1Image *target
+    );
+    void GetTarget(
+        [out] ID2D1Image **target
+    );
+    void SetRenderingControls(
+        [in] const D2D1_RENDERING_CONTROLS *rendering_controls
+    );
+    void GetRenderingControls(
+        [out] D2D1_RENDERING_CONTROLS *rendering_controls
+    );
+    void SetPrimitiveBlend(
+        [in] D2D1_PRIMITIVE_BLEND primitive_blend
+    );
+    D2D1_PRIMITIVE_BLEND GetPrimitiveBlend();
+    void SetUnitMode(
+        [in] D2D1_UNIT_MODE unit_mode
+    );
+    D2D1_UNIT_MODE GetUnitMode();
+    void DrawGlyphRun(
+        [in] D2D1_POINT_2F baseline_origin,
+        [in] const DWRITE_GLYPH_RUN *glyph_run,
+        [in] const DWRITE_GLYPH_RUN_DESCRIPTION *glyph_run_desc,
+        [in] ID2D1Brush *brush,
+        [in] DWRITE_MEASURING_MODE measuring_mode
+    );
+    void DrawImage(
+        [in] ID2D1Image *image,
+        [in] const D2D1_POINT_2F *target_offset,
+        [in] const D2D1_RECT_F *image_rect,
+        [in] D2D1_INTERPOLATION_MODE interpolation_mode,
+        [in] D2D1_COMPOSITE_MODE composite_mode
+    );
+    void DrawGdiMetafile(
+        [in] ID2D1GdiMetafile *metafile,
+        [in] const D2D1_POINT_2F *target_offset
+    );
+    void DrawBitmap(
+        [in] ID2D1Bitmap *bitmap,
+        [in] const D2D1_RECT_F *dst_rect,
+        [in] float opacity,
+        [in] D2D1_INTERPOLATION_MODE interpolation_mode,
+        [in] const D2D1_RECT_F *src_rect,
+        [in] const D2D1_MATRIX_4X4_F *perspective_transform
+    );
+    void PushLayer(
+        [in] const D2D1_LAYER_PARAMETERS1 *layer_parameters,
+        [in] ID2D1Layer *layer
+    );
+    HRESULT InvalidateEffectInputRectangle(
+        [in] ID2D1Effect *effect,
+        [in] UINT32 input,
+        [in] const D2D1_RECT_F *input_rect
+    );
+    HRESULT GetEffectInvalidRectangleCount(
+        [in] ID2D1Effect *effect,
+        [out] UINT32 *rect_count
+    );
+    HRESULT GetEffectInvalidRectangles(
+        [in] ID2D1Effect *effect,
+        [out] D2D1_RECT_F *rectangles,
+        [in] UINT32 rect_count
+    );
+    HRESULT GetEffectRequiredInputRectangles(
+        [in] ID2D1Effect *effect,
+        [in] const D2D1_RECT_F *image_rect,
+        [in] const D2D1_EFFECT_INPUT_DESCRIPTION *desc,
+        [out] D2D1_RECT_F *input_rect,
+        [in] UINT32 input_count
+    );
+    void FillOpacityMask(
+        [in] ID2D1Bitmap *mask,
+        [in] ID2D1Brush *brush,
+        [in] const D2D1_RECT_F *dst_rect,
+        [in] const D2D1_RECT_F *src_rect
+    );
+}
+
+[
+    local,
+    object,
+    uuid(47dd575d-ac05-4cdd-8049-9b02cd16f44c)
+]
+interface ID2D1Device : ID2D1Resource
+{
+    HRESULT CreateDeviceContext(
+        [in] D2D1_DEVICE_CONTEXT_OPTIONS options,
+        [out] ID2D1DeviceContext **context
+    );
+    HRESULT CreatePrintControl(
+        [in] IWICImagingFactory *wic_factory,
+        [in] IPrintDocumentPackageTarget *document_target,
+        [in] const D2D1_PRINT_CONTROL_PROPERTIES *desc,
+        [out] ID2D1PrintControl **print_control
+    );
+    void SetMaximumTextureMemory(
+        [in] UINT64 max_texture_memory
+    );
+    UINT64 GetMaximumTextureMemory();
+    HRESULT ClearResources(
+        [in, defaultvalue(0)] UINT msec_since_use
+    );
+}
+
+[
+    local,
+    object,
+    uuid(bb12d362-daee-4b9a-aa1d-14ba401cfa1f)
+]
+interface ID2D1Factory1 : ID2D1Factory
+{
+    HRESULT CreateDevice(
+        [in] IDXGIDevice *dxgi_device,
+        [out] ID2D1Device **device
+    );
+    HRESULT CreateStrokeStyle(
+        [in] const D2D1_STROKE_STYLE_PROPERTIES1 *desc,
+        [in] const float *dashes,
+        [in] UINT dashes_count,
+        [out] const ID2D1StrokeStyle1 **stroke_style
+    );
+    HRESULT CreatePathGeometry(
+        [out] ID2D1PathGeometry1 **geometry
+    );
+    HRESULT CreateDrawingStateBlock(
+        [in] const D2D1_DRAWING_STATE_DESCRIPTION1 *desc,
+        [in] IDWriteRenderingParams *text_rendering_params,
+        [out] ID2D1DrawingStateBlock1 **state_block
+    );
+    HRESULT CreateGdiMetafile(
+        [in] IStream *stream,
+        [out] ID2D1GdiMetafile **metafile
+    );
+    HRESULT RegisterEffectFromStream(
+        [in] REFCLSID clsid,
+        [in] IStream *property_xml,
+        [in] const D2D1_PROPERTY_BINDING *bindings,
+        [in] UINT32 bindings_count,
+        [in] PD2D1_EFFECT_FACTORY effect_factory
+    );
+    HRESULT RegisterEffectFromString(
+        [in] REFCLSID clsid,
+        [in] const WCHAR *property_xml,
+        [in] const D2D1_PROPERTY_BINDING *bindings,
+        [in] UINT32 bindings_count,
+        [in] PD2D1_EFFECT_FACTORY effect_factory
+    );
+    HRESULT UnregisterEffect(
+        [in] REFCLSID clsid
+    );
+    HRESULT GetRegisteredEffects(
+        [out] CLSID *clsids,
+        [in] UINT32 count,
+        [out] UINT32 *returned,
+        [out] UINT32 *registered
+    );
+    HRESULT GetEffectProperties(
+        [in] REFCLSID effect_id,
+        [out] ID2D1Properties **props
+    );
+}
diff --git a/include/dcommon.idl b/include/dcommon.idl
index db5055d202..18f2fbeb3e 100644
--- a/include/dcommon.idl
+++ b/include/dcommon.idl
@@ -61,3 +61,18 @@ typedef struct D2D_SIZE_U
     UINT32 width;
     UINT32 height;
 } D2D_SIZE_U, D2D1_SIZE_U;
+
+typedef struct D2D_MATRIX_4X4_F
+{
+    union
+    {
+        struct
+        {
+            float _11, _12, _13, _14;
+            float _21, _22, _23, _24;
+            float _31, _32, _33, _34;
+            float _41, _42, _43, _44;
+        };
+        float m[4][4];
+    };
+} D2D_MATRIX_4X4_F;
-- 
2.15.0




More information about the wine-devel mailing list