[PATCH 1/6] dwrite/layout: Use a helper to update layout metrics.

Nikolay Sivov nsivov at codeweavers.com
Mon May 13 06:21:42 CDT 2019


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/dwrite/layout.c | 26 ++++++++++++++------------
 1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/dlls/dwrite/layout.c b/dlls/dwrite/layout.c
index d101a5a197..40621ce170 100644
--- a/dlls/dwrite/layout.c
+++ b/dlls/dwrite/layout.c
@@ -3592,17 +3592,21 @@ static HRESULT WINAPI dwritetextlayout_GetLineMetrics(IDWriteTextLayout3 *iface,
     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)
 {
-    struct dwrite_textlayout *This = impl_from_IDWriteTextLayout3(iface);
-    DWRITE_TEXT_METRICS1 metrics1;
+    struct dwrite_textlayout *layout = impl_from_IDWriteTextLayout3(iface);
     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)
-        memcpy(metrics, &metrics1, sizeof(*metrics));
+        memcpy(metrics, &layout->metrics, sizeof(*metrics));
 
     return hr;
 }
@@ -3932,17 +3936,15 @@ static HRESULT WINAPI dwritetextlayout1_GetCharacterSpacing(IDWriteTextLayout3 *
 
 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;
 
-    TRACE("(%p)->(%p)\n", This, metrics);
+    TRACE("%p, %p.\n", iface, metrics);
 
-    hr = layout_compute_effective_runs(This);
-    if (FAILED(hr))
-        return hr;
+    if (SUCCEEDED(hr = layout_update_metrics(layout)))
+        *metrics = layout->metrics;
 
-    *metrics = This->metrics;
-    return S_OK;
+    return hr;
 }
 
 static HRESULT WINAPI dwritetextlayout2_SetVerticalGlyphOrientation(IDWriteTextLayout3 *iface, DWRITE_VERTICAL_GLYPH_ORIENTATION orientation)
-- 
2.20.1




More information about the wine-devel mailing list