Signed-off-by: Ziqing Hui zhui@codeweavers.com --- dlls/d2d1/factory.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/d2d1/factory.c b/dlls/d2d1/factory.c index 737864df69c..3d3393e5f0c 100644 --- a/dlls/d2d1/factory.c +++ b/dlls/d2d1/factory.c @@ -597,7 +597,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_GetEffectProperties(ID2D1Factory2 * return E_NOTIMPL; }
-static HRESULT STDMETHODCALLTYPE d2d_factory_ID2D1Factory1_CreateDevice(ID2D1Factory2 *iface, IDXGIDevice *dxgi_device, +static HRESULT STDMETHODCALLTYPE d2d_factory_ID2D1Factory2_CreateDevice(ID2D1Factory2 *iface, IDXGIDevice *dxgi_device, ID2D1Device1 **device) { FIXME("iface %p, dxgi_device %p, device %p stub!\n", iface, dxgi_device, device); @@ -634,7 +634,7 @@ static const struct ID2D1Factory2Vtbl d2d_factory_vtbl = d2d_factory_UnregisterEffect, d2d_factory_GetRegisteredEffects, d2d_factory_GetEffectProperties, - d2d_factory_ID2D1Factory1_CreateDevice, + d2d_factory_ID2D1Factory2_CreateDevice, };
static HRESULT STDMETHODCALLTYPE d2d_factory_mt_QueryInterface(ID2D1Multithread *iface, REFIID iid, void **out)
Signed-off-by: Ziqing Hui zhui@codeweavers.com ---
Note: The final goal of the following IDL defines adding patches is to add ID2D1Factory3 define. ID2D1Factory3 depends on some other interfaces. So we add these interfaces first.
dlls/d2d1/d2d1_private.h | 2 +- include/Makefile.in | 1 + include/d2d1_3.idl | 45 ++++++++++++++++++++++++++++++++++++++++ libs/uuid/d2d.c | 2 +- 4 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 include/d2d1_3.idl
diff --git a/dlls/d2d1/d2d1_private.h b/dlls/d2d1/d2d1_private.h index aaf6d045c73..aa8e8569455 100644 --- a/dlls/d2d1/d2d1_private.h +++ b/dlls/d2d1/d2d1_private.h @@ -28,7 +28,7 @@ #include <stdbool.h> #include <math.h> #define COBJMACROS -#include "d2d1_2.h" +#include "d2d1_3.h" #include "d3d11_1.h" #ifdef D2D1_INIT_GUID #include "initguid.h" diff --git a/include/Makefile.in b/include/Makefile.in index 9578c557af7..40d6c00fb7b 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -102,6 +102,7 @@ SOURCES = \ d2d1.idl \ d2d1_1.idl \ d2d1_2.idl \ + d2d1_3.idl \ d2d1effects.idl \ d2dbasetypes.h \ d2derr.h \ diff --git a/include/d2d1_3.idl b/include/d2d1_3.idl new file mode 100644 index 00000000000..3b27439f2d1 --- /dev/null +++ b/include/d2d1_3.idl @@ -0,0 +1,45 @@ +/* + * Copyright 2022 Ziqing Hui for CodeWeavers + * + * 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 "d2d1_2.idl"; + +typedef enum D2D1_INK_NIB_SHAPE +{ + D2D1_INK_NIB_SHAPE_ROUND = 0x0, + D2D1_INK_NIB_SHAPE_SQUARE = 0x1, + D2D1_INK_NIB_SHAPE_FORCE_DWORD = 0xffffffff +} D2D1_INK_NIB_SHAPE; + +[ + object, + uuid(bae8b344-23fc-4071-8cb5-d05d6f073848), + local, +] +interface ID2D1InkStyle : ID2D1Resource +{ + void SetNibTransform( + [in] const D2D1_MATRIX_3X2_F *transform + ); + void GetNibTransform( + [out] D2D1_MATRIX_3X2_F *transform + ); + void SetNibShape( + [in] D2D1_INK_NIB_SHAPE shape + ); + D2D1_INK_NIB_SHAPE GetNibShape(); +}; diff --git a/libs/uuid/d2d.c b/libs/uuid/d2d.c index c74ebc9c495..801bcaeab92 100644 --- a/libs/uuid/d2d.c +++ b/libs/uuid/d2d.c @@ -18,4 +18,4 @@
#include "d3d10_1.h" #include "initguid.h" -#include "d2d1_2.h" +#include "d2d1_3.h"
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com
Signed-off-by: Ziqing Hui zhui@codeweavers.com --- include/d2d1_3.idl | 59 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+)
diff --git a/include/d2d1_3.idl b/include/d2d1_3.idl index 3b27439f2d1..93c273816e2 100644 --- a/include/d2d1_3.idl +++ b/include/d2d1_3.idl @@ -25,6 +25,20 @@ typedef enum D2D1_INK_NIB_SHAPE D2D1_INK_NIB_SHAPE_FORCE_DWORD = 0xffffffff } D2D1_INK_NIB_SHAPE;
+typedef struct D2D1_INK_POINT +{ + float x; + float y; + float radius; +} D2D1_INK_POINT; + +typedef struct D2D1_INK_BEZIER_SEGMENT +{ + D2D1_INK_POINT point1; + D2D1_INK_POINT point2; + D2D1_INK_POINT point3; +} D2D1_INK_BEZIER_SEGMENT; + [ object, uuid(bae8b344-23fc-4071-8cb5-d05d6f073848), @@ -43,3 +57,48 @@ interface ID2D1InkStyle : ID2D1Resource ); D2D1_INK_NIB_SHAPE GetNibShape(); }; + +[ + object, + uuid(b499923b-7029-478f-a8b3-432c7c5f5312), + local, +] +interface ID2D1Ink : ID2D1Resource +{ + void SetStartPoint( + [in] const D2D1_INK_POINT *start_point + ); + D2D1_INK_POINT GetStartPoint(); + HRESULT AddSegments( + [in] const D2D1_INK_BEZIER_SEGMENT *segments, + [in] UINT32 segment_count + ); + HRESULT RemoveSegmentsAtEnd( + [in] UINT32 segment_count + ); + HRESULT SetSegments( + [in] UINT32 start_segment, + [in] const D2D1_INK_BEZIER_SEGMENT *segments, + [in] UINT32 segment_count + ); + HRESULT SetSegmentAtEnd( + [in] const D2D1_INK_BEZIER_SEGMENT *segment + ); + UINT32 GetSegmentCount(); + HRESULT GetSegments( + [in] UINT32 start_segment, + [out] D2D1_INK_BEZIER_SEGMENT *segments, + [in] UINT32 segment_count + ); + HRESULT StreamAsGeometry( + [in, optional] ID2D1InkStyle *ink_style, + [in, optional] const D2D1_MATRIX_3X2_F *world_transform, + [in] float flattening_tolerance, + [in] ID2D1SimplifiedGeometrySink *geometry_sink + ); + HRESULT GetBounds( + [in, optional] ID2D1InkStyle *ink_style, + [in, optional] const D2D1_MATRIX_3X2_F *world_transform, + [out] D2D1_RECT_F *bounds + ); +};
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com
Signed-off-by: Ziqing Hui zhui@codeweavers.com --- include/d2d1_3.idl | 51 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+)
diff --git a/include/d2d1_3.idl b/include/d2d1_3.idl index 93c273816e2..5fbb9c4629c 100644 --- a/include/d2d1_3.idl +++ b/include/d2d1_3.idl @@ -39,6 +39,42 @@ typedef struct D2D1_INK_BEZIER_SEGMENT D2D1_INK_POINT point3; } D2D1_INK_BEZIER_SEGMENT;
+typedef enum D2D1_PATCH_EDGE_MODE +{ + D2D1_PATCH_EDGE_MODE_ALIASED = 0x0, + D2D1_PATCH_EDGE_MODE_ANTIALIASED = 0x1, + D2D1_PATCH_EDGE_MODE_ALIASED_INFLATED = 0x2, + D2D1_PATCH_EDGE_MODE_FORCE_DWORD = 0xffffffff +} D2D1_PATCH_EDGE_MODE; + +typedef struct D2D1_GRADIENT_MESH_PATCH +{ + D2D1_POINT_2F point00; + D2D1_POINT_2F point01; + D2D1_POINT_2F point02; + D2D1_POINT_2F point03; + D2D1_POINT_2F point10; + D2D1_POINT_2F point11; + D2D1_POINT_2F point12; + D2D1_POINT_2F point13; + D2D1_POINT_2F point20; + D2D1_POINT_2F point21; + D2D1_POINT_2F point22; + D2D1_POINT_2F point23; + D2D1_POINT_2F point30; + D2D1_POINT_2F point31; + D2D1_POINT_2F point32; + D2D1_POINT_2F point33; + D2D1_COLOR_F color00; + D2D1_COLOR_F color03; + D2D1_COLOR_F color30; + D2D1_COLOR_F color33; + D2D1_PATCH_EDGE_MODE topEdgeMode; + D2D1_PATCH_EDGE_MODE leftEdgeMode; + D2D1_PATCH_EDGE_MODE bottomEdgeMode; + D2D1_PATCH_EDGE_MODE rightEdgeMode; +} D2D1_GRADIENT_MESH_PATCH; + [ object, uuid(bae8b344-23fc-4071-8cb5-d05d6f073848), @@ -102,3 +138,18 @@ interface ID2D1Ink : ID2D1Resource [out] D2D1_RECT_F *bounds ); }; + +[ + object, + uuid(f292e401-c050-4cde-83d7-04962d3b23c2), + local, +] +interface ID2D1GradientMesh : ID2D1Resource +{ + UINT32 GetPatchCount(); + HRESULT GetPatches( + [in] UINT32 start_index, + [out] D2D1_GRADIENT_MESH_PATCH *patches, + [in] UINT32 patch_count + ); +};
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com
Signed-off-by: Ziqing Hui zhui@codeweavers.com --- include/d2d1_3.idl | 13 +++++++++++++ 1 file changed, 13 insertions(+)
diff --git a/include/d2d1_3.idl b/include/d2d1_3.idl index 5fbb9c4629c..a33292882df 100644 --- a/include/d2d1_3.idl +++ b/include/d2d1_3.idl @@ -153,3 +153,16 @@ interface ID2D1GradientMesh : ID2D1Resource [in] UINT32 patch_count ); }; + +[ + object, + uuid(c9b664e5-74a1-4378-9ac2-eefc37a3f4d8), + local, +] +interface ID2D1ImageSource : ID2D1Image +{ + HRESULT OfferResources(); + HRESULT TryReclaimResources( + [out] BOOL *resources_discarded + ); +};
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com