dwrite/layout: Use a helper to update layout metrics.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
52065a31d7
commit
a4b3420e67
|
@ -3592,17 +3592,21 @@ static HRESULT WINAPI dwritetextlayout_GetLineMetrics(IDWriteTextLayout3 *iface,
|
||||||
return max_count >= This->metrics.lineCount ? S_OK : E_NOT_SUFFICIENT_BUFFER;
|
return max_count >= This->metrics.lineCount ? S_OK : E_NOT_SUFFICIENT_BUFFER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static HRESULT layout_update_metrics(struct dwrite_textlayout *layout)
|
||||||
|
{
|
||||||
|
return layout_compute_effective_runs(layout);
|
||||||
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI dwritetextlayout_GetMetrics(IDWriteTextLayout3 *iface, DWRITE_TEXT_METRICS *metrics)
|
static HRESULT WINAPI dwritetextlayout_GetMetrics(IDWriteTextLayout3 *iface, DWRITE_TEXT_METRICS *metrics)
|
||||||
{
|
{
|
||||||
struct dwrite_textlayout *This = impl_from_IDWriteTextLayout3(iface);
|
struct dwrite_textlayout *layout = impl_from_IDWriteTextLayout3(iface);
|
||||||
DWRITE_TEXT_METRICS1 metrics1;
|
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
TRACE("(%p)->(%p)\n", This, metrics);
|
TRACE("%p, %p.\n", iface, metrics);
|
||||||
|
|
||||||
hr = IDWriteTextLayout3_GetMetrics(iface, &metrics1);
|
hr = layout_update_metrics(layout);
|
||||||
if (hr == S_OK)
|
if (hr == S_OK)
|
||||||
memcpy(metrics, &metrics1, sizeof(*metrics));
|
memcpy(metrics, &layout->metrics, sizeof(*metrics));
|
||||||
|
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
@ -3932,17 +3936,15 @@ static HRESULT WINAPI dwritetextlayout1_GetCharacterSpacing(IDWriteTextLayout3 *
|
||||||
|
|
||||||
static HRESULT WINAPI dwritetextlayout2_GetMetrics(IDWriteTextLayout3 *iface, DWRITE_TEXT_METRICS1 *metrics)
|
static HRESULT WINAPI dwritetextlayout2_GetMetrics(IDWriteTextLayout3 *iface, DWRITE_TEXT_METRICS1 *metrics)
|
||||||
{
|
{
|
||||||
struct dwrite_textlayout *This = impl_from_IDWriteTextLayout3(iface);
|
struct dwrite_textlayout *layout = impl_from_IDWriteTextLayout3(iface);
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
TRACE("(%p)->(%p)\n", This, metrics);
|
TRACE("%p, %p.\n", iface, metrics);
|
||||||
|
|
||||||
hr = layout_compute_effective_runs(This);
|
if (SUCCEEDED(hr = layout_update_metrics(layout)))
|
||||||
if (FAILED(hr))
|
*metrics = layout->metrics;
|
||||||
return hr;
|
|
||||||
|
|
||||||
*metrics = This->metrics;
|
return hr;
|
||||||
return S_OK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI dwritetextlayout2_SetVerticalGlyphOrientation(IDWriteTextLayout3 *iface, DWRITE_VERTICAL_GLYPH_ORIENTATION orientation)
|
static HRESULT WINAPI dwritetextlayout2_SetVerticalGlyphOrientation(IDWriteTextLayout3 *iface, DWRITE_VERTICAL_GLYPH_ORIENTATION orientation)
|
||||||
|
|
Loading…
Reference in New Issue