Nikolay Sivov : dwrite: Implement returning axis values from face reference.

Alexandre Julliard julliard at winehq.org
Mon Dec 9 16:57:36 CST 2019


Module: wine
Branch: master
Commit: 0d533dea5b6b772926b7b060243ca23a29bbdce2
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=0d533dea5b6b772926b7b060243ca23a29bbdce2

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Mon Dec  9 11:09:37 2019 +0300

dwrite: Implement returning axis values from face reference.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/dwrite/font.c       | 11 +++++++++--
 dlls/dwrite/tests/font.c | 10 ++++++++++
 2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c
index 84e3af8b70..9280b5d32a 100644
--- a/dlls/dwrite/font.c
+++ b/dlls/dwrite/font.c
@@ -6280,9 +6280,16 @@ static UINT32 WINAPI fontfacereference1_GetFontAxisValueCount(IDWriteFontFaceRef
 static HRESULT WINAPI fontfacereference1_GetFontAxisValues(IDWriteFontFaceReference1 *iface,
         DWRITE_FONT_AXIS_VALUE *axis_values, UINT32 value_count)
 {
-    FIXME("%p, %p, %u.\n", iface, axis_values, value_count);
+    struct dwrite_fontfacereference *reference = impl_from_IDWriteFontFaceReference1(iface);
 
-    return E_NOTIMPL;
+    TRACE("%p, %p, %u.\n", iface, axis_values, value_count);
+
+    if (value_count < reference->axis_values_count)
+        return E_NOT_SUFFICIENT_BUFFER;
+
+    memcpy(axis_values, reference->axis_values, value_count * sizeof(*axis_values));
+
+    return S_OK;
 }
 
 static const IDWriteFontFaceReference1Vtbl fontfacereferencevtbl =
diff --git a/dlls/dwrite/tests/font.c b/dlls/dwrite/tests/font.c
index 219a0510ea..3dff4a6191 100644
--- a/dlls/dwrite/tests/font.c
+++ b/dlls/dwrite/tests/font.c
@@ -9408,6 +9408,16 @@ static void test_font_resource(void)
     ok(!ret, "Unexpected result.\n");
     IDWriteFontFaceReference1_Release(reference2);
 
+    memset(axis_values, 0, sizeof(axis_values));
+    hr = IDWriteFontFaceReference1_GetFontAxisValues(reference, axis_values, 1);
+    ok(hr == E_NOT_SUFFICIENT_BUFFER, "Unexpected hr %#x.\n", hr);
+    ok(!axis_values[0].axisTag, "Unexpected axis tag.\n");
+
+    memset(axis_values, 0, sizeof(axis_values));
+    hr = IDWriteFontFaceReference1_GetFontAxisValues(reference, axis_values, 2);
+    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");
+
     IDWriteFontFaceReference1_Release(reference);
 
     IDWriteFontFile_Release(fontfile);




More information about the wine-cvs mailing list