Nikolay Sivov : dwrite: Add partial implementation for IDWriteFontFace5::Equals().
Alexandre Julliard
julliard at winehq.org
Fri Aug 21 16:43:27 CDT 2020
Module: wine
Branch: master
Commit: ab94abb14f74fe863ae40dafc7a8301db22792fc
URL: https://source.winehq.org/git/wine.git/?a=commit;h=ab94abb14f74fe863ae40dafc7a8301db22792fc
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Fri Aug 21 15:39:27 2020 +0300
dwrite: Add partial implementation for IDWriteFontFace5::Equals().
Issue with missing method spotted by Brendan Shanks.
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/dwrite/font.c | 17 +++++++++++++++++
dlls/dwrite/tests/font.c | 11 ++++++++++-
2 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c
index 19fe911420..aa51c74429 100644
--- a/dlls/dwrite/font.c
+++ b/dlls/dwrite/font.c
@@ -1562,6 +1562,22 @@ static HRESULT WINAPI dwritefontface5_GetFontResource(IDWriteFontFace5 *iface, I
return IDWriteFactory7_CreateFontResource(fontface->factory, fontface->files[0], fontface->index, resource);
}
+static BOOL WINAPI dwritefontface5_Equals(IDWriteFontFace5 *iface, IDWriteFontFace *other)
+{
+ struct dwrite_fontface *fontface = impl_from_IDWriteFontFace5(iface), *other_face;
+
+ TRACE("%p, %p.\n", iface, other);
+
+ if (!(other_face = unsafe_impl_from_IDWriteFontFace(other)))
+ return FALSE;
+
+ /* TODO: add variations support */
+
+ return fontface->index == other_face->index &&
+ fontface->simulations == other_face->simulations &&
+ is_same_fontfile(fontface->files[0], other_face->files[0]);
+}
+
static const IDWriteFontFace5Vtbl dwritefontfacevtbl =
{
dwritefontface_QueryInterface,
@@ -1621,6 +1637,7 @@ static const IDWriteFontFace5Vtbl dwritefontfacevtbl =
dwritefontface5_GetFontAxisValues,
dwritefontface5_HasVariations,
dwritefontface5_GetFontResource,
+ dwritefontface5_Equals,
};
static HRESULT WINAPI dwritefontface_reference_QueryInterface(IDWriteFontFaceReference *iface, REFIID riid, void **obj)
diff --git a/dlls/dwrite/tests/font.c b/dlls/dwrite/tests/font.c
index e1024d0263..becb1a741f 100644
--- a/dlls/dwrite/tests/font.c
+++ b/dlls/dwrite/tests/font.c
@@ -1817,13 +1817,14 @@ static void test_CreateFontFace(void)
IDWriteFontCollection *collection;
DWRITE_FONT_FILE_TYPE file_type;
DWRITE_FONT_FACE_TYPE face_type;
+ IDWriteFontFace5 *fontface5;
IDWriteGdiInterop *interop;
IDWriteFont *font, *font2;
IDWriteFontFamily *family;
IDWriteFactory *factory;
IDWriteFontFile *file;
+ BOOL supported, ret;
LOGFONTW logfont;
- BOOL supported;
UINT32 count;
WCHAR *path;
HRESULT hr;
@@ -1908,6 +1909,14 @@ static void test_CreateFontFace(void)
ok(hr == S_OK, "got 0x%08x\n", hr);
ok(fontface == fontface2, "got %p, was %p\n", fontface2, fontface);
+ /* Trivial equality test */
+ if (SUCCEEDED(IDWriteFontFace_QueryInterface(fontface, &IID_IDWriteFontFace5, (void **)&fontface5)))
+ {
+ ret = IDWriteFontFace5_Equals(fontface5, fontface2);
+ ok(ret, "Unexpected result %d.\n", ret);
+ IDWriteFontFace5_Release(fontface5);
+ }
+
IDWriteFontFace_Release(fontface);
IDWriteFontFace_Release(fontface2);
IDWriteFont_Release(font2);
More information about the wine-cvs
mailing list