[PATCH 4/4] d2d1: Added support for D2D1_DRAW_TEXT_OPTIONS_ENABLE_COLOR_FONT

Henri Verbeet hverbeet at gmail.com
Mon Nov 7 08:31:50 CST 2016


On 5 November 2016 at 22:12, Nikolay Sivov <nsivov at codeweavers.com> wrote:
> @@ -1574,14 +1575,89 @@ static HRESULT STDMETHODCALLTYPE d2d_text_renderer_DrawGlyphRun(IDWriteTextRende
>
>      if (desc)
>          WARN("Ignoring glyph run description %p.\n", desc);
> -    if (context->options & ~D2D1_DRAW_TEXT_OPTIONS_NO_SNAP)
> +    if (context->options & ~(D2D1_DRAW_TEXT_OPTIONS_NO_SNAP|D2D1_DRAW_TEXT_OPTIONS_ENABLE_COLOR_FONT))
>          FIXME("Ignoring options %#x.\n", context->options);
"D2D1_DRAW_TEXT_OPTIONS_NO_SNAP | D2D1_DRAW_TEXT_OPTIONS_ENABLE_COLOR_FONT"

> +        if (FAILED(hr = DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, &IID_IDWriteFactory2,
> +                (IUnknown **)&dwrite_factory)))
> +        {
> +            ERR("Failed to create dwrite factory, hr %#x.\n", hr);
> +            return hr;
This leaks "brush".

> +        hr = IDWriteFactory2_TranslateColorGlyphRun(dwrite_factory, baseline_origin_x, baseline_origin_y,
> +                glyph_run, desc, measuring_mode, (DWRITE_MATRIX *)&render_target->drawing_state.transform, 0, &layers);
> +        IDWriteFactory2_Release(dwrite_factory);
> +        if (FAILED(hr))
> +        {
> +            ERR("Failed to create color glyph run enumerator, hr %#x.\n", hr);
> +            return hr;
> +        }
Likewise.

> +        while (1)
for (;;)

> +            if (color_run->paletteIndex == 0xffff)
> +                color_brush = brush;
> +            else
> +                ID2D1RenderTarget_CreateSolidColorBrush(&render_target->ID2D1RenderTarget_iface,
> +                        &color_run->runColor, NULL, (ID2D1SolidColorBrush **)&color_brush);
CreateSolidColorBrush() can fail.



More information about the wine-devel mailing list