[PATCH 2/4] d2d1: Add standard properties to effect.
Ziqing Hui
zhui at codeweavers.com
Tue Jul 27 06:10:46 CDT 2021
Signed-off-by: Ziqing Hui <zhui at codeweavers.com>
---
dlls/d2d1/d2d1_private.h | 13 +++++++++++++
dlls/d2d1/effect.c | 24 +++++++++++++++++++++++-
2 files changed, 36 insertions(+), 1 deletion(-)
diff --git a/dlls/d2d1/d2d1_private.h b/dlls/d2d1/d2d1_private.h
index 1cca943122e..f4bc1ab2011 100644
--- a/dlls/d2d1/d2d1_private.h
+++ b/dlls/d2d1/d2d1_private.h
@@ -565,6 +565,13 @@ struct d2d_device
void d2d_device_init(struct d2d_device *device, ID2D1Factory1 *factory, IDXGIDevice *dxgi_device) DECLSPEC_HIDDEN;
+struct d2d_property
+{
+ D2D1_PROPERTY_TYPE type;
+ void *value;
+ UINT32 value_size;
+};
+
struct d2d_effect
{
ID2D1Effect ID2D1Effect_iface;
@@ -572,6 +579,12 @@ struct d2d_effect
LONG refcount;
ID2D1Factory *factory;
+ CLSID clsid;
+ BOOL cached;
+ UINT min_inputs;
+ UINT max_inputs;
+ D2D1_BUFFER_PRECISION precision;
+ struct d2d_property standard_properties[10];
};
void d2d_effect_init(struct d2d_effect *effect, ID2D1Factory *factory, const CLSID *effect_id) DECLSPEC_HIDDEN;
diff --git a/dlls/d2d1/effect.c b/dlls/d2d1/effect.c
index c9d8085f81a..2d70ec84f6a 100644
--- a/dlls/d2d1/effect.c
+++ b/dlls/d2d1/effect.c
@@ -294,9 +294,31 @@ static const ID2D1ImageVtbl d2d_effect_image_vtbl =
d2d_effect_image_GetFactory,
};
+static void d2d_property_set(struct d2d_property *property, D2D1_PROPERTY_TYPE type, void *value, UINT32 value_size)
+{
+ property->type = type;
+ property->value = value;
+ property->value_size = value_size;
+}
+
static void d2d_effect_init_standard_properties(struct d2d_effect *effect, const struct d2d_effect_info *info)
{
- /* TODO */
+ effect->clsid = *info->clsid;
+ effect->cached = info->cached;
+ effect->precision = info->precision;
+ effect->min_inputs = info->min_inputs;
+ effect->max_inputs = info->max_inputs;
+
+ d2d_property_set(effect->standard_properties + D2D1_PROPERTY_CLSID - D2D1_PROPERTY_CLSID,
+ D2D1_PROPERTY_TYPE_CLSID, &effect->clsid, sizeof(effect->clsid));
+ d2d_property_set(effect->standard_properties + D2D1_PROPERTY_CACHED - D2D1_PROPERTY_CLSID,
+ D2D1_PROPERTY_TYPE_BOOL, &effect->cached, sizeof(effect->cached));
+ d2d_property_set(effect->standard_properties + D2D1_PROPERTY_PRECISION - D2D1_PROPERTY_CLSID,
+ D2D1_PROPERTY_TYPE_ENUM, &effect->precision, sizeof(effect->precision));
+ d2d_property_set(effect->standard_properties + D2D1_PROPERTY_MIN_INPUTS - D2D1_PROPERTY_CLSID,
+ D2D1_PROPERTY_TYPE_UINT32, &effect->min_inputs, sizeof(effect->min_inputs));
+ d2d_property_set(effect->standard_properties + D2D1_PROPERTY_MAX_INPUTS - D2D1_PROPERTY_CLSID,
+ D2D1_PROPERTY_TYPE_UINT32, &effect->max_inputs, sizeof(effect->max_inputs));
}
void d2d_effect_init(struct d2d_effect *effect, ID2D1Factory *factory, const CLSID *effect_id)
--
2.25.1
More information about the wine-devel
mailing list