35 ID2D1Properties_Release(&
reg->properties->ID2D1Properties_iface);
116 ID2D1Factory7_AddRef(iface);
122 ID2D1Factory7_AddRef(iface);
149 TRACE(
"%p decreasing refcount to %lu.\n", iface, refcount);
154 ID3D10Device1_Release(
factory->device);
170 TRACE(
"iface %p.\n", iface);
193 if (!(
object =
calloc(1,
sizeof(*
object))))
198 WARN(
"Failed to initialise rectangle geometry, hr %#lx.\n",
hr);
203 TRACE(
"Created rectangle geometry %p.\n",
object);
217 if (!(
object =
calloc(1,
sizeof(*
object))))
222 WARN(
"Failed to initialise rounded rectangle geometry, hr %#lx.\n",
hr);
227 TRACE(
"Created rounded rectangle geometry %p.\n",
object);
241 if (!(
object =
calloc(1,
sizeof(*
object))))
246 WARN(
"Failed to initialise ellipse geometry, hr %#lx.\n",
hr);
251 TRACE(
"Created ellipse geometry %p.\n",
object);
263 TRACE(
"iface %p, fill_mode %#x, geometries %p, geometry_count %u, group %p.\n",
266 if (!(
object =
calloc(1,
sizeof(*
object))))
271 WARN(
"Failed to initialise geometry group, hr %#lx.\n",
hr);
276 TRACE(
"Created geometry group %p.\n",
object);
288 TRACE(
"iface %p, src_geometry %p, transform %p, transformed_geometry %p.\n",
291 if (!(
object =
calloc(1,
sizeof(*
object))))
296 TRACE(
"Created transformed geometry %p.\n",
object);
307 TRACE(
"iface %p, geometry %p.\n", iface, geometry);
309 if (!(
object =
calloc(1,
sizeof(*
object))))
314 TRACE(
"Created path geometry %p.\n",
object);
328 TRACE(
"iface %p, desc %p, dashes %p, dash_count %u, stroke_style %p.\n",
331 if (!(
object =
calloc(1,
sizeof(*
object))))
345 WARN(
"Failed to initialise stroke style, hr %#lx.\n",
hr);
350 TRACE(
"Created stroke style %p.\n",
object);
363 TRACE(
"iface %p, desc %p, text_rendering_params %p, state_block %p.\n",
366 if (!(
object =
calloc(1,
sizeof(*
object))))
378 TRACE(
"Created state block %p.\n",
object);
390 WARN(
"Failed to create device, hr %#lx.\n",
hr);
404 TRACE(
"iface %p, target %p, desc %p, render_target %p.\n", iface,
target,
desc, render_target);
406 if (!(
object =
calloc(1,
sizeof(*
object))))
417 WARN(
"Failed to initialise render target, hr %#lx.\n",
hr);
422 TRACE(
"Created render target %p.\n",
object);
423 *render_target =
object->dxgi_target;
437 TRACE(
"iface %p, desc %p, hwnd_rt_desc %p, render_target %p.\n", iface,
desc, hwnd_rt_desc, render_target);
442 if (!(
object =
calloc(1,
sizeof(*
object))))
447 WARN(
"Failed to initialise render target, hr %#lx.\n",
hr);
452 TRACE(
"Created render target %p.\n",
object);
453 *render_target = &
object->ID2D1HwndRenderTarget_iface;
465 TRACE(
"iface %p, surface %p, desc %p, render_target %p.\n", iface, surface,
desc, render_target);
469 WARN(
"Failed to get DXGI device, hr %#lx.\n",
hr);
477 WARN(
"Failed to create D2D device, hr %#lx.\n",
hr);
483 ID2D1Device_Release(
device);
495 TRACE(
"iface %p, desc %p, render_target %p.\n", iface,
desc, render_target);
500 if (!(
object =
calloc(1,
sizeof(*
object))))
505 WARN(
"Failed to initialise render target, hr %#lx.\n",
hr);
510 TRACE(
"Created render target %p.\n",
object);
511 *render_target = &
object->ID2D1DCRenderTarget_iface;
522 if (!(
object =
calloc(1,
sizeof(*
object))))
527 TRACE(
"Create device %p.\n",
object);
529 hr = ID2D1Device6_QueryInterface(&
object->ID2D1Device6_iface, iid,
device);
530 ID2D1Device6_Release(&
object->ID2D1Device6_iface);
550 TRACE(
"iface %p, desc %p, dashes %p, dash_count %u, stroke_style %p.\n",
553 if (!(
object =
calloc(1,
sizeof(*
object))))
559 WARN(
"Failed to initialise stroke style, hr %#lx.\n",
hr);
564 TRACE(
"Created stroke style %p.\n",
object);
565 *stroke_style = &
object->ID2D1StrokeStyle1_iface;
575 TRACE(
"iface %p, geometry %p.\n", iface, geometry);
577 if (!(
object =
calloc(1,
sizeof(*
object))))
582 TRACE(
"Created path geometry %p.\n",
object);
594 TRACE(
"iface %p, desc %p, text_rendering_params %p, state_block %p.\n",
597 if (!(
object =
calloc(1,
sizeof(*
object))))
602 TRACE(
"Created state block %p.\n",
object);
603 *state_block = &
object->ID2D1DrawingStateBlock1_iface;
617 const WCHAR *expected_name,
unsigned int *
depth)
619 const WCHAR *node_name;
625 while ((
hr = IXmlReader_Read(
reader, &node_type)) ==
S_OK)
638 if (
wcscmp(node_name, expected_name))
656 if (IXmlReader_IsEmptyElement(
reader))
return S_OK;
658 while ((
hr = IXmlReader_Read(
reader, &node_type)) ==
S_OK)
753 return props->custom_count;
782 IXmlReader_MoveToElement(
reader);
803 UINT32 min_inputs_value, max_inputs_value;
804 unsigned int depth, input_count = 0;
844 if (!IXmlReader_IsEmptyElement(
reader))
872 if (min_inputs && max_inputs)
874 if (min_inputs_value > max_inputs_value)
876 WARN(
"Invalid input count range %u - %u.\n", min_inputs_value, max_inputs_value);
882 if (min_inputs && min_inputs_value > input_count)
884 WARN(
"Too few inputs were declared, expected at least %u.\n", min_inputs_value);
888 if (max_inputs && max_inputs_value < input_count)
890 WARN(
"Too many inputs were declared, expected at most %u.\n", max_inputs_value);
895 if (min_inputs != max_inputs)
897 swprintf(buffW,
ARRAY_SIZE(buffW),
L"%lu", min_inputs ? min_inputs_value : max_inputs_value);
903 else if (!min_inputs)
916 const WCHAR *node_name;
937 if (!
wcscmp(node_name,
L"Property"))
939 else if (!
wcscmp(node_name,
L"Inputs"))
978 IXmlReader_Release(
reader);
982 if (!(effect =
calloc(1,
sizeof(*effect))))
984 IXmlReader_Release(
reader);
989 IXmlReader_Release(
reader);
997 IXmlReader_Release(
reader);
1000 WARN(
"Failed to parse effect xml, hr %#lx.\n",
hr);
1012 WARN(
"Missing required properties.\n");
1018 for (
i = 0;
i < binding_count; ++
i)
1024 WARN(
"Failed to bind to missing property.\n");
1035 effect->
factory = effect_factory;
1048 TRACE(
"iface %p, effect_id %s, property_xml %p, bindings %p, binding_count %u, effect_factory %p.\n",
1054 binding_count, effect_factory,
FALSE);
1069 size =
sizeof(*property_xml) * (
wcslen(property_xml) + 1);
1075 binding_count, effect_factory,
builtin);
1086 binding_count, effect_factory,
TRUE);
1095 TRACE(
"iface %p, effect_id %s, property_xml %s, bindings %p, binding_count %u, effect_factory %p.\n",
1101 binding_count, effect_factory,
FALSE);
1137 TRACE(
"iface %p, effects %p, effect_count %u, returned %p, registered %p.\n",
1138 iface, effects, effect_count, returned, registered);
1140 if (!returned) returned = &
ret;
1141 if (!registered) registered = &
reg;
1150 if (effects && effect_count)
1152 *effects = effect->
id;
1161 if (!effects)
return S_OK;
1181 *
props = &
reg->properties->ID2D1Properties_iface;
1182 ID2D1Properties_AddRef(*
props);
1299 TRACE(
"%p.\n", iface);
1308 TRACE(
"%p.\n", iface);
1350 WARN(
"Ignoring debug level %#x.\n", factory_options->
debugLevel);
1369 TRACE(
"factory_type %#x, iid %s, factory_options %p, factory %p.\n",
1378 if (!(
object =
calloc(1,
sizeof(*
object))))
1383 TRACE(
"Created factory %p.\n",
object);
1385 hr = ID2D1Factory7_QueryInterface(&
object->ID2D1Factory7_iface, iid,
factory);
1386 ID2D1Factory7_Release(&
object->ID2D1Factory7_iface);
1393 float theta, sin_theta, cos_theta;
1398 sin_theta =
sinf(theta);
1399 cos_theta =
cosf(theta);
1404 matrix->_21 = -sin_theta;
1406 matrix->_31 = center.
x - center.
x * cos_theta + center.
y * sin_theta;
1407 matrix->_32 = center.
y - center.
x * sin_theta - center.
y * cos_theta;
1416 tan_x =
tan(angle_x * (
M_PI / 180.0f));
1417 tan_y =
tan(angle_y * (
M_PI / 180.0f));
1424 matrix->_31 = -tan_x * center.
y;
1425 matrix->_32 = -tan_y * center.
x;
1460 if (!(ID3D11Device_GetCreationFlags(
d3d_device) & D3D11_CREATE_DEVICE_SINGLETHREADED))
1464 properties = &default_properties;
1484 ID2D1Factory1_Release(
factory);
1505 TRACE(
"x %.8e, y %.8e, z %.8e.\n",
x,
y,
z);
1518 else if (
x <= 0.0031308f)
1521 return 1.055f *
powf(
x, 1.0f / 2.4f) - 0.055f;
1530 else if (
x <= 0.04045f)
1533 return powf((
x + 0.055f) / 1.055f, 2.4f);
1541 TRACE(
"src_colour_space %#x, dst_colour_space %#x, colour %s.\n",
1554 if (src_colour_space == dst_colour_space)
1577 FIXME(
"Unhandled conversion from source colour space %#x to destination colour space %#x.\n",
1578 src_colour_space, dst_colour_space);
1611 HKEY default_key, tmp_key, application_key =
NULL;
1627 strcat(appname,
"\\Direct2D");
1631 if (
RegOpenKeyA(tmp_key, appname, &application_key))
1632 application_key =
NULL;
1637 if (!default_key && !application_key)
1643 if (application_key)
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static void list_remove(struct list_entry *entry)
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
static void list_init(struct list_entry *head)
#define STDMETHODCALLTYPE
#define RegCloseKey(hKey)
@ D2D1_FACTORY_TYPE_SINGLE_THREADED
@ D2D1_FACTORY_TYPE_MULTI_THREADED
@ D2D1_PROPERTY_MAX_INPUTS
@ D2D1_PROPERTY_MIN_INPUTS
@ D2D1_PROPERTY_DISPLAYNAME
@ D2D1_PROPERTY_DESCRIPTION
@ D2D1_PROPERTY_TYPE_BLOB
@ D2D1_PROPERTY_TYPE_CLSID
@ D2D1_PROPERTY_TYPE_MATRIX_5X4
@ D2D1_PROPERTY_TYPE_ENUM
@ D2D1_PROPERTY_TYPE_BOOL
@ D2D1_PROPERTY_TYPE_MATRIX_3X2
@ D2D1_PROPERTY_TYPE_MATRIX_4X4
@ D2D1_PROPERTY_TYPE_UINT32
@ D2D1_PROPERTY_TYPE_UNKNOWN
@ D2D1_PROPERTY_TYPE_MATRIX_4X3
@ D2D1_PROPERTY_TYPE_STRING
@ D2D1_PROPERTY_TYPE_VECTOR2
@ D2D1_PROPERTY_TYPE_FLOAT
@ D2D1_PROPERTY_TYPE_VECTOR3
@ D2D1_PROPERTY_TYPE_IUNKNOWN
@ D2D1_PROPERTY_TYPE_ARRAY
@ D2D1_PROPERTY_TYPE_INT32
@ D2D1_PROPERTY_TYPE_VECTOR4
@ D2D1_PROPERTY_TYPE_COLOR_CONTEXT
@ D2D1_SUBPROPERTY_ISREADONLY
@ D2D1_SUBPROPERTY_DISPLAYNAME
@ D2D1_COLOR_SPACE_CUSTOM
@ D2D1_THREADING_MODE_SINGLE_THREADED
@ D2D1_THREADING_MODE_MULTI_THREADED
@ D2D1_PRIMITIVE_BLEND_SOURCE_OVER
@ D2D1_STROKE_TRANSFORM_TYPE_NORMAL
HRESULT(__stdcall * PD2D1_EFFECT_FACTORY)(IUnknown **effect)
static BOOL d2d_matrix_invert(D2D_MATRIX_3X2_F *dst, const D2D_MATRIX_3X2_F *src)
HRESULT d2d_stroke_style_init(struct d2d_stroke_style *style, ID2D1Factory *factory, const D2D1_STROKE_STYLE_PROPERTIES1 *desc, const float *dashes, UINT32 dash_count)
struct d2d_device * unsafe_impl_from_ID2D1Device(ID2D1Device1 *iface)
static const char * debug_d2d_point_2f(const D2D1_POINT_2F *point)
void d2d_transformed_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *factory, ID2D1Geometry *src_geometry, const D2D_MATRIX_3X2_F *transform)
HRESULT d2d_dc_render_target_init(struct d2d_dc_render_target *render_target, ID2D1Factory1 *factory, ID3D10Device1 *d3d_device, const D2D1_RENDER_TARGET_PROPERTIES *desc)
void d2d_effect_init_properties(struct d2d_effect *effect, struct d2d_effect_properties *properties)
HRESULT d2d_hwnd_render_target_init(struct d2d_hwnd_render_target *render_target, ID2D1Factory1 *factory, ID3D10Device1 *d3d_device, const D2D1_RENDER_TARGET_PROPERTIES *desc, const D2D1_HWND_RENDER_TARGET_PROPERTIES *hwnd_desc)
HRESULT d2d_rounded_rectangle_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *factory, const D2D1_ROUNDED_RECT *rounded_rect)
static const char * debug_d2d_color_f(const D2D1_COLOR_F *colour)
void d2d_device_init(struct d2d_device *device, ID2D1Factory1 *factory, IDXGIDevice *dxgi_device, bool allow_get_dxgi_device)
static const char * debug_d2d_ellipse(const D2D1_ELLIPSE *ellipse)
HRESULT d2d_effect_subproperties_add(struct d2d_effect_properties *props, const WCHAR *name, UINT32 index, D2D1_PROPERTY_TYPE type, const WCHAR *value)
struct d2d_effect_property * d2d_effect_properties_get_property_by_name(const struct d2d_effect_properties *properties, const WCHAR *name)
static struct d2d_factory * unsafe_impl_from_ID2D1Factory(ID2D1Factory *iface)
static const char * debug_d2d_rect_f(const D2D1_RECT_F *rect)
HRESULT d2d_d3d_create_render_target(struct d2d_device *device, IDXGISurface *surface, IUnknown *outer_unknown, const struct d2d_device_context_ops *ops, const D2D1_RENDER_TARGET_PROPERTIES *desc, void **render_target)
static const char * debug_d2d_rounded_rect(const D2D1_ROUNDED_RECT *rounded_rect)
void d2d_path_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *factory)
void d2d_effects_init_builtins(struct d2d_factory *factory)
HRESULT d2d_rectangle_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *factory, const D2D1_RECT_F *rect)
HRESULT d2d_wic_render_target_init(struct d2d_wic_render_target *render_target, ID2D1Factory1 *factory, ID3D10Device1 *d3d_device, IWICBitmap *bitmap, const D2D1_RENDER_TARGET_PROPERTIES *desc)
HRESULT d2d_effect_properties_add(struct d2d_effect_properties *props, const WCHAR *name, UINT32 index, D2D1_PROPERTY_TYPE type, const WCHAR *value)
HRESULT d2d_effect_property_get_uint32_value(const struct d2d_effect_properties *properties, const struct d2d_effect_property *prop, UINT32 *value)
HRESULT d2d_geometry_group_init(struct d2d_geometry *geometry, ID2D1Factory *factory, D2D1_FILL_MODE fill_mode, ID2D1Geometry **src_geometries, unsigned int geometry_count)
void d2d_state_block_init(struct d2d_state_block *state_block, ID2D1Factory *factory, const D2D1_DRAWING_STATE_DESCRIPTION1 *desc, IDWriteRenderingParams *text_rendering_params)
HRESULT d2d_ellipse_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *factory, const D2D1_ELLIPSE *ellipse)
#define D2DERR_INSUFFICIENT_BUFFER
@ D3D10_CREATE_DEVICE_BGRA_SUPPORT
const UINT D3D10_1_SDK_VERSION
@ D3D10_FEATURE_LEVEL_10_0
HRESULT WINAPI D3D10CreateDevice1(IDXGIAdapter *adapter, D3D10_DRIVER_TYPE driver_type, HMODULE swrast, UINT flags, D3D10_FEATURE_LEVEL1 hw_level, UINT sdk_version, ID3D10Device1 **device)
@ D3D10_DRIVER_TYPE_HARDWARE
HRESULT d2d_factory_register_builtin_effect(struct d2d_factory *factory, REFCLSID effect_id, const WCHAR *property_xml, const D2D1_PROPERTY_BINDING *bindings, UINT32 binding_count, PD2D1_EFFECT_FACTORY effect_factory)
static HRESULT STDMETHODCALLTYPE d2d_factory_CreatePathGeometry(ID2D1Factory7 *iface, ID2D1PathGeometry **geometry)
void d2d_factory_register_effect(struct d2d_factory *factory, struct d2d_effect_registration *effect)
static HRESULT STDMETHODCALLTYPE d2d_factory_ID2D1Factory4_CreateDevice(ID2D1Factory7 *iface, IDXGIDevice *dxgi_device, ID2D1Device3 **device)
static UINT32 parse_effect_get_property_index(struct d2d_effect_properties *props, const WCHAR *name)
static float srgb_transfer_function(float x)
static HRESULT d2d_factory_get_device(struct d2d_factory *factory, ID3D10Device1 **device)
static HRESULT STDMETHODCALLTYPE d2d_factory_QueryInterface(ID2D1Factory7 *iface, REFIID iid, void **out)
static void d2d_factory_init(struct d2d_factory *factory, D2D1_FACTORY_TYPE factory_type, const D2D1_FACTORY_OPTIONS *factory_options)
void WINAPI D2D1MakeRotateMatrix(float angle, D2D1_POINT_2F center, D2D1_MATRIX_3X2_F *matrix)
static HRESULT STDMETHODCALLTYPE d2d_factory_CreateGeometryGroup(ID2D1Factory7 *iface, D2D1_FILL_MODE fill_mode, ID2D1Geometry **geometries, UINT32 geometry_count, ID2D1GeometryGroup **group)
static HRESULT STDMETHODCALLTYPE d2d_factory_CreateDrawingStateBlock(ID2D1Factory7 *iface, const D2D1_DRAWING_STATE_DESCRIPTION *desc, IDWriteRenderingParams *text_rendering_params, ID2D1DrawingStateBlock **state_block)
static HRESULT STDMETHODCALLTYPE d2d_factory_CreateHwndRenderTarget(ID2D1Factory7 *iface, const D2D1_RENDER_TARGET_PROPERTIES *desc, const D2D1_HWND_RENDER_TARGET_PROPERTIES *hwnd_rt_desc, ID2D1HwndRenderTarget **render_target)
static BOOL STDMETHODCALLTYPE d2d_factory_st_GetMultithreadProtected(ID2D1Multithread *iface)
static HRESULT STDMETHODCALLTYPE d2d_factory_CreateRectangleGeometry(ID2D1Factory7 *iface, const D2D1_RECT_F *rect, ID2D1RectangleGeometry **geometry)
static const struct ID2D1Factory7Vtbl d2d_factory_vtbl
static HRESULT parse_effect_get_next_xml_node(IXmlReader *reader, XmlNodeType expected_type, const WCHAR *expected_name, unsigned int *depth)
static HRESULT d2d_factory_register_effect_from_stream(struct d2d_factory *factory, REFCLSID effect_id, IStream *property_xml, const D2D1_PROPERTY_BINDING *bindings, UINT32 binding_count, PD2D1_EFFECT_FACTORY effect_factory, BOOL builtin)
static float srgb_inverse_transfer_function(float x)
static struct d2d_factory * impl_from_ID2D1Multithread(ID2D1Multithread *iface)
float WINAPI D2D1Tan(float angle)
static HRESULT STDMETHODCALLTYPE d2d_factory_CreateDrawingStateBlock1(ID2D1Factory7 *iface, const D2D1_DRAWING_STATE_DESCRIPTION1 *desc, IDWriteRenderingParams *text_rendering_params, ID2D1DrawingStateBlock1 **state_block)
static HRESULT STDMETHODCALLTYPE d2d_factory_UnregisterEffect(ID2D1Factory7 *iface, REFCLSID effect_id)
static HRESULT STDMETHODCALLTYPE d2d_factory_ID2D1Factory7_CreateDevice(ID2D1Factory7 *iface, IDXGIDevice *dxgi_device, ID2D1Device6 **device)
D2D1_COLOR_F WINAPI D2D1ConvertColorSpace(D2D1_COLOR_SPACE src_colour_space, D2D1_COLOR_SPACE dst_colour_space, const D2D1_COLOR_F *colour)
static HRESULT STDMETHODCALLTYPE d2d_factory_CreateWicBitmapRenderTarget(ID2D1Factory7 *iface, IWICBitmap *target, const D2D1_RENDER_TARGET_PROPERTIES *desc, ID2D1RenderTarget **render_target)
float WINAPI D2D1Vec3Length(float x, float y, float z)
static HRESULT STDMETHODCALLTYPE d2d_factory_CreateDevice(ID2D1Factory7 *iface, IDXGIDevice *dxgi_device, ID2D1Device **device)
static BOOL WINAPI d2d_factory_builtins_initonce(INIT_ONCE *once, void *param, void **context)
static HRESULT STDMETHODCALLTYPE d2d_factory_ID2D1Factory6_CreateDevice(ID2D1Factory7 *iface, IDXGIDevice *dxgi_device, ID2D1Device5 **device)
static HRESULT STDMETHODCALLTYPE d2d_factory_ID2D1Factory5_CreateDevice(ID2D1Factory7 *iface, IDXGIDevice *dxgi_device, ID2D1Device4 **device)
static void STDMETHODCALLTYPE d2d_factory_st_Leave(ID2D1Multithread *iface)
static HRESULT STDMETHODCALLTYPE d2d_factory_CreateEllipseGeometry(ID2D1Factory7 *iface, const D2D1_ELLIPSE *ellipse, ID2D1EllipseGeometry **geometry)
static HRESULT STDMETHODCALLTYPE d2d_factory_ID2D1Factory2_CreateDevice(ID2D1Factory7 *iface, IDXGIDevice *dxgi_device, ID2D1Device1 **device)
static HRESULT STDMETHODCALLTYPE d2d_factory_CreateTransformedGeometry(ID2D1Factory7 *iface, ID2D1Geometry *src_geometry, const D2D1_MATRIX_3X2_F *transform, ID2D1TransformedGeometry **transformed_geometry)
static struct d2d_factory * impl_from_ID2D1Factory7(ID2D1Factory7 *iface)
static const struct ID2D1MultithreadVtbl d2d_factory_multithread_noop_vtbl
static HRESULT STDMETHODCALLTYPE d2d_factory_CreateStrokeStyle1(ID2D1Factory7 *iface, const D2D1_STROKE_STYLE_PROPERTIES1 *desc, const float *dashes, UINT32 dash_count, ID2D1StrokeStyle1 **stroke_style)
static HRESULT STDMETHODCALLTYPE d2d_factory_GetEffectProperties(ID2D1Factory7 *iface, REFCLSID effect_id, ID2D1Properties **props)
BOOL WINAPI DllMain(HINSTANCE inst, DWORD reason, void *reserved)
static bool get_config_key_u32(HKEY default_key, HKEY application_key, const char *name, uint32_t *value)
void WINAPI D2D1MakeSkewMatrix(float angle_x, float angle_y, D2D1_POINT_2F center, D2D1_MATRIX_3X2_F *matrix)
static ULONG STDMETHODCALLTYPE d2d_factory_AddRef(ID2D1Factory7 *iface)
static void d2d_effect_registration_cleanup(struct d2d_effect_registration *reg)
static ULONG STDMETHODCALLTYPE d2d_factory_mt_Release(ID2D1Multithread *iface)
static void d2d_settings_init(void)
BOOL WINAPI D2D1IsMatrixInvertible(const D2D1_MATRIX_3X2_F *matrix)
static HRESULT STDMETHODCALLTYPE d2d_factory_CreateRoundedRectangleGeometry(ID2D1Factory7 *iface, const D2D1_ROUNDED_RECT *rounded_rect, ID2D1RoundedRectangleGeometry **geometry)
static HRESULT parse_effect_get_property_type(IXmlReader *reader, D2D1_PROPERTY_TYPE *type)
static HRESULT parse_effect_skip_element(IXmlReader *reader, unsigned int element_depth)
static HRESULT d2d_factory_reload_sysmetrics(struct d2d_factory *factory)
static HRESULT d2d_factory_register_effect_from_string(struct d2d_factory *factory, REFCLSID effect_id, const WCHAR *property_xml, const D2D1_PROPERTY_BINDING *bindings, UINT32 binding_count, PD2D1_EFFECT_FACTORY effect_factory, BOOL builtin)
static struct d2d_effect_property * parse_effect_get_property(const struct d2d_effect_registration *effect, const WCHAR *name)
static HRESULT STDMETHODCALLTYPE d2d_factory_GetRegisteredEffects(ID2D1Factory7 *iface, CLSID *effects, UINT32 effect_count, UINT32 *returned, UINT32 *registered)
HRESULT WINAPI D2D1CreateDevice(IDXGIDevice *dxgi_device, const D2D1_CREATION_PROPERTIES *properties, ID2D1Device **device)
static HRESULT STDMETHODCALLTYPE d2d_factory_RegisterEffectFromStream(ID2D1Factory7 *iface, REFCLSID effect_id, IStream *property_xml, const D2D1_PROPERTY_BINDING *bindings, UINT32 binding_count, PD2D1_EFFECT_FACTORY effect_factory)
static HRESULT STDMETHODCALLTYPE d2d_factory_ReloadSystemMetrics(ID2D1Factory7 *iface)
static HRESULT STDMETHODCALLTYPE d2d_factory_CreateDxgiSurfaceRenderTarget(ID2D1Factory7 *iface, IDXGISurface *surface, const D2D1_RENDER_TARGET_PROPERTIES *desc, ID2D1RenderTarget **render_target)
static void STDMETHODCALLTYPE d2d_factory_mt_Leave(ID2D1Multithread *iface)
static void d2d_factory_init_builtin_effects(struct d2d_factory *factory)
static HRESULT parse_effect_property(IXmlReader *reader, struct d2d_effect_registration *effect)
static ULONG STDMETHODCALLTYPE d2d_factory_mt_AddRef(ID2D1Multithread *iface)
static HRESULT STDMETHODCALLTYPE d2d_factory_mt_QueryInterface(ID2D1Multithread *iface, REFIID iid, void **out)
static HRESULT parse_effect_get_attribute(IXmlReader *reader, const WCHAR *name, WCHAR **ret)
static HRESULT STDMETHODCALLTYPE d2d_factory_CreateDCRenderTarget(ID2D1Factory7 *iface, const D2D1_RENDER_TARGET_PROPERTIES *desc, ID2D1DCRenderTarget **render_target)
HRESULT d2d_factory_create_device(ID2D1Factory1 *factory, IDXGIDevice *dxgi_device, bool allow_get_dxgi_device, REFIID iid, void **device)
BOOL WINAPI D2D1InvertMatrix(D2D1_MATRIX_3X2_F *matrix)
static ULONG STDMETHODCALLTYPE d2d_factory_Release(ID2D1Factory7 *iface)
static HRESULT parse_effect_xml(IXmlReader *reader, struct d2d_effect_registration *effect)
static HRESULT STDMETHODCALLTYPE d2d_factory_ID2D1Factory3_CreateDevice(ID2D1Factory7 *iface, IDXGIDevice *dxgi_device, ID2D1Device2 **device)
static void STDMETHODCALLTYPE d2d_factory_st_Enter(ID2D1Multithread *iface)
HRESULT WINAPI D2D1CreateFactory(D2D1_FACTORY_TYPE factory_type, REFIID iid, const D2D1_FACTORY_OPTIONS *factory_options, void **factory)
static HRESULT STDMETHODCALLTYPE d2d_factory_RegisterEffectFromString(ID2D1Factory7 *iface, REFCLSID effect_id, const WCHAR *property_xml, const D2D1_PROPERTY_BINDING *bindings, UINT32 binding_count, PD2D1_EFFECT_FACTORY effect_factory)
static void STDMETHODCALLTYPE d2d_factory_GetDesktopDpi(ID2D1Factory7 *iface, float *dpi_x, float *dpi_y)
static HRESULT STDMETHODCALLTYPE d2d_factory_CreateGdiMetafile(ID2D1Factory7 *iface, IStream *stream, ID2D1GdiMetafile **metafile)
static HRESULT STDMETHODCALLTYPE d2d_factory_CreateStrokeStyle(ID2D1Factory7 *iface, const D2D1_STROKE_STYLE_PROPERTIES *desc, const float *dashes, UINT32 dash_count, ID2D1StrokeStyle **stroke_style)
static BOOL STDMETHODCALLTYPE d2d_factory_mt_GetMultithreadProtected(ID2D1Multithread *iface)
static void STDMETHODCALLTYPE d2d_factory_mt_Enter(ID2D1Multithread *iface)
static const struct ID2D1MultithreadVtbl d2d_factory_multithread_vtbl
static HRESULT STDMETHODCALLTYPE d2d_factory_CreatePathGeometry1(ID2D1Factory7 *iface, ID2D1PathGeometry1 **geometry)
struct d2d_effect_registration * d2d_factory_get_registered_effect(ID2D1Factory *iface, const GUID *id)
void WINAPI D2D1SinCos(float angle, float *s, float *c)
static HRESULT parse_effect_inputs(IXmlReader *reader, struct d2d_effect_registration *effect)
LONG WINAPI RegOpenKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegQueryValueExA(_In_ HKEY hkeyorg, _In_ LPCSTR name, _In_ LPDWORD reserved, _Out_opt_ LPDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ LPDWORD count)
HRESULT WINAPI CreateStreamOnHGlobal(HGLOBAL hGlobal, BOOL delete_on_release, IStream **stream)
static WCHAR reason[MAX_STRING_RESOURCE_LEN]
#define DLL_PROCESS_ATTACH
#define WINE_DECLARE_DEBUG_CHANNEL(x)
DWORD WINAPI GetModuleFileNameA(HINSTANCE hModule, LPSTR lpFilename, DWORD nSize)
BOOL WINAPI InitOnceExecuteOnce(_Inout_ PINIT_ONCE InitOnce, _In_ __callback PINIT_ONCE_FN InitFn, _Inout_opt_ PVOID Parameter, _Outptr_opt_result_maybenull_ LPVOID *Context)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
_ACRTIMP float __cdecl powf(float, float)
_ACRTIMP float __cdecl cosf(float)
_ACRTIMP float __cdecl sinf(float)
_ACRTIMP double __cdecl tan(double)
_ACRTIMP float __cdecl tanf(float)
static wchar_t * wcsdup(const wchar_t *str)
_ACRTIMP char *__cdecl strrchr(const char *, int)
HRESULT WINAPI CreateXmlReader(REFIID riid, void **obj, IMalloc *imalloc)
GLint GLint GLsizei GLsizei GLsizei depth
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei GLenum type
GLint GLint GLint GLint GLint GLint y
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLuint GLenum GLenum transform
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
#define memcpy(s1, s2, n)
D3D11_SHADER_VARIABLE_DESC desc
static const unsigned char metafile[]
#define IsEqualGUID(rguid1, rguid2)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
HDC WINAPI GetDC(_In_opt_ HWND)
static __inline const char * wine_dbgstr_guid(const GUID *id)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
#define LIST_FOR_EACH_ENTRY_REV(elem, list, type, field)
struct vkd3d_spirv_builtin builtin
D2D1_DEBUG_LEVEL debugLevel
D2D1_THREADING_MODE threadingMode
D2D1_PRIMITIVE_BLEND primitiveBlend
D2D1_DEBUG_LEVEL debugLevel
PD2D1_PROPERTY_SET_FUNCTION setFunction
PD2D1_PROPERTY_GET_FUNCTION getFunction
D2D1_STROKE_TRANSFORM_TYPE transformType
D2D1_DASH_STYLE dashStyle
bool allow_get_dxgi_device
struct d2d_effect * effect
union d2d_effect_property::@250 data
struct d2d_effect_properties * subproperties
struct d2d_effect_properties * properties
UINT32 registration_count
PD2D1_EFFECT_FACTORY factory
ID2D1Factory7 ID2D1Factory7_iface
ID2D1Multithread ID2D1Multithread_iface
ID2D1Geometry * src_geometry
D2D1_ROUNDED_RECT rounded_rect
unsigned int max_version_factory
IDWriteRenderingParams * text_rendering_params
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
#define CONTAINING_RECORD(address, type, field)
static const WCHAR props[]
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
#define success(from, fromstr, to, tostr)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
WINBASEAPI VOID WINAPI InitOnceInitialize(_Out_ PINIT_ONCE InitOnce)
#define D2DERR_EFFECT_IS_NOT_REGISTERED
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
#define D2DERR_INVALID_PROPERTY
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
#define HKEY_CURRENT_USER
@ XmlNodeType_XmlDeclaration