[PATCH] d2d1: Implement ID2D1DeviceContext::CreateImageBrush().

Nikolay Sivov nsivov at codeweavers.com
Fri May 13 09:27:45 CDT 2022



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.



More information about the wine-devel mailing list