Nikolay Sivov <nsivov(a)codeweavers.com> wrote:
On 5/6/22 12:32, Dmitry Timoshkov wrote:
+ + hr = ID2D1Image_QueryInterface(image, &IID_ID2D1Bitmap, (void **)&bitmap); + if (FAILED(hr)) + { + FIXME("ID2D1Image doesn't support ID2D1Bitmap interface.\n"); + return hr; + } + + bitmap_brush_desc.extendModeX = image_brush_desc->extendModeX; + bitmap_brush_desc.extendModeY = image_brush_desc->extendModeY; + bitmap_brush_desc.interpolationMode = image_brush_desc->interpolationMode; + + if (SUCCEEDED(hr = d2d_bitmap_brush_create(context->factory, bitmap, &bitmap_brush_desc, + brush_desc, &object))) + *brush = (ID2D1ImageBrush *)&object->ID2D1Brush_iface; + + ID2D1Bitmap_Release(bitmap); + + return hr; }
static HRESULT STDMETHODCALLTYPE d2d_device_context_ID2D1DeviceContext_CreateBitmapBrush(ID2D1DeviceContext *iface, I don't think this can work, ID2D1ImageBrush is not compatible with what d2d_bitmap_brush_create() returns.
Ah, I see, thanks for spotting that. Apparently the app that I have here doesn't call anything from ID2D1ImageBrush that is not compatible with what ID2D1BitmapBrush provides, so it worked here. -- Dmitry.