On 5/13/22 15:36, Dmitry Timoshkov wrote:
+HRESULT d2d_image_brush_create(ID2D1Factory *factory, ID2D1Image *image,
const D2D1_IMAGE_BRUSH_PROPERTIES *image_brush_desc, const D2D1_BRUSH_PROPERTIES *brush_desc,struct d2d_brush **brush)+{
- if (!(*brush = heap_alloc_zero(sizeof(**brush))))
return E_OUTOFMEMORY;- d2d_brush_init(*brush, factory, D2D_BRUSH_TYPE_IMAGE,
brush_desc, (ID2D1BrushVtbl *)&d2d_image_brush_vtbl);- if (((*brush)->u.image.image = image))
ID2D1Image_AddRef((*brush)->u.image.image);- if (image_brush_desc)
- {
FIXME("sourceRectangle %s is ignored.\n", debug_d2d_rect_f(&image_brush_desc->sourceRectangle));(*brush)->u.image.extend_mode_x = image_brush_desc->extendModeX;(*brush)->u.image.extend_mode_y = image_brush_desc->extendModeY;(*brush)->u.image.interpolation_mode = image_brush_desc->interpolationMode;- }
- else
- {
(*brush)->u.image.extend_mode_x = D2D1_EXTEND_MODE_CLAMP;(*brush)->u.image.extend_mode_y = D2D1_EXTEND_MODE_CLAMP;(*brush)->u.image.interpolation_mode = D2D1_INTERPOLATION_MODE_LINEAR;- }
- TRACE("Created brush %p.\n", *brush);
- return S_OK;
+}
Basic tests, please. I did a quick check, and image_brush_desc is not optional, image pointer is optional.