Nikolay Sivov : dwrite: Add partial implementation for IDWriteFontFaceReference1::CreateFontFace().

Alexandre Julliard julliard at winehq.org
Tue Jun 2 08:11:16 CDT 2020


Module: wine
Branch: stable
Commit: 5d489c26e4cc12534f7993218e6d01c025f9fd40
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=5d489c26e4cc12534f7993218e6d01c025f9fd40

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Tue Feb 11 12:24:59 2020 +0300

dwrite: Add partial implementation for IDWriteFontFaceReference1::CreateFontFace().

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
(cherry picked from commit 6ee109c5aab14ef7382b69a92862cd740ffd0ef2)
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>

---

 dlls/dwrite/font.c       | 16 ++++++++++++++--
 dlls/dwrite/tests/font.c |  4 ++++
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c
index 9280b5d32a..9989427625 100644
--- a/dlls/dwrite/font.c
+++ b/dlls/dwrite/font.c
@@ -6263,9 +6263,21 @@ static HRESULT WINAPI fontfacereference_EnqueueFileFragmentDownloadRequest(IDWri
 
 static HRESULT WINAPI fontfacereference1_CreateFontFace(IDWriteFontFaceReference1 *iface, IDWriteFontFace5 **fontface)
 {
-    FIXME("%p, %p.\n", iface, fontface);
+    struct dwrite_fontfacereference *reference = impl_from_IDWriteFontFaceReference1(iface);
+    IDWriteFontFace3 *fontface3;
+    HRESULT hr;
 
-    return E_NOTIMPL;
+    TRACE("%p, %p.\n", iface, fontface);
+
+    /* FIXME: created instance should likely respect given axis. */
+    if (SUCCEEDED(hr = IDWriteFontFaceReference1_CreateFontFaceWithSimulations(iface, reference->simulations,
+            &fontface3)))
+    {
+        hr = IDWriteFontFace3_QueryInterface(fontface3, &IID_IDWriteFontFace5, (void **)fontface);
+        IDWriteFontFace3_Release(fontface3);
+    }
+
+    return hr;
 }
 
 static UINT32 WINAPI fontfacereference1_GetFontAxisValueCount(IDWriteFontFaceReference1 *iface)
diff --git a/dlls/dwrite/tests/font.c b/dlls/dwrite/tests/font.c
index d7bcfb1f0a..b2892b8e85 100644
--- a/dlls/dwrite/tests/font.c
+++ b/dlls/dwrite/tests/font.c
@@ -9537,6 +9537,10 @@ static void test_font_resource(void)
     ok(hr == S_OK, "Failed to get axis values, hr %#x.\n", hr);
     ok(axis_values[0].axisTag == DWRITE_FONT_AXIS_TAG_WEIGHT, "Unexpected axis tag.\n");
 
+    hr = IDWriteFontFaceReference1_CreateFontFace(reference, &fontface5);
+    ok(hr == S_OK, "Failed to create a font face, hr %#x.\n", hr);
+    IDWriteFontFace5_Release(fontface5);
+
     IDWriteFontFaceReference1_Release(reference);
 
     IDWriteFontFile_Release(fontfile);




More information about the wine-cvs mailing list