static ID2D1Brush *makeRadialBrush(uiDrawBrush *b, ID2D1RenderTarget *rt, D2D1_BRUSH_PROPERTIES *props) { ID2D1RadialGradientBrush *brush; D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES gprops; ID2D1GradientStopCollection *stops; HRESULT hr; ZeroMemory(&gprops, sizeof (D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES)); gprops.gradientOriginOffset.x = b->X0 - b->X1; gprops.gradientOriginOffset.y = b->Y0 - b->Y1; gprops.center.x = b->X1; gprops.center.y = b->Y1; gprops.radiusX = b->OuterRadius; gprops.radiusY = b->OuterRadius; stops = mkstops(b, rt); hr = ID2D1RenderTarget_CreateRadialGradientBrush(rt, &gprops, props, stops, &brush); if (hr != S_OK) logHRESULT("error creating gradient brush in makeRadialBrush()", hr); ID2D1GradientStopCollection_Release(stops); return (ID2D1Brush *) brush; }
static HRESULT STDMETHODCALLTYPE d2d_dc_render_target_CreateRadialGradientBrush(ID2D1DCRenderTarget *iface, const D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES *gradient_brush_desc, const D2D1_BRUSH_PROPERTIES *brush_desc, ID2D1GradientStopCollection *gradient, ID2D1RadialGradientBrush **brush) { struct d2d_dc_render_target *render_target = impl_from_ID2D1DCRenderTarget(iface); TRACE("iface %p, gradient_brush_desc %p, brush_desc %p, gradient %p, brush %p.\n", iface, gradient_brush_desc, brush_desc, gradient, brush); return ID2D1RenderTarget_CreateRadialGradientBrush(render_target->dxgi_target, gradient_brush_desc, brush_desc, gradient, brush); }