[oleaut32 2/2] Implements function olefont:OLEFontImpl_IsEqual
Benjamin Arai
me at benjaminarai.com
Wed Aug 2 18:47:48 CDT 2006
Hi,
Helps address bug http://bugs.winehq.org/show_bug.cgi?id=5735
Changelog:
- Implements stub OLEFontImpl_IsEqual
---
dlls/oleaut32/olefont.c | 33 +++++++++++++++++++++++++++++++--
dlls/oleaut32/tests/olefont.c | 20 --------------------
2 files changed, 31 insertions(+), 22 deletions(-)
--
Benjamin Arai
http://www.benjaminarai.com
-------------- next part --------------
diff --git a/dlls/oleaut32/olefont.c b/dlls/oleaut32/olefont.c
index bdde164..ee52a05 100644
--- a/dlls/oleaut32/olefont.c
+++ b/dlls/oleaut32/olefont.c
@@ -1139,8 +1139,37 @@ static HRESULT WINAPI OLEFontImpl_IsEqua
IFont* iface,
IFont* pFontOther)
{
- FIXME("(%p, %p), stub!\n",iface,pFontOther);
- return E_NOTIMPL;
+ OLEFontImpl *left = (OLEFontImpl *)iface;
+ OLEFontImpl *right = (OLEFontImpl *)pFontOther;
+ HRESULT hres;
+ INT left_len,right_len;
+
+ if((iface == NULL) || (pFontOther == NULL))
+ return E_POINTER;
+ else if (left->description.cySize.s.Lo != right->description.cySize.s.Lo)
+ return S_FALSE;
+ else if (left->description.cySize.s.Hi != right->description.cySize.s.Hi)
+ return S_FALSE;
+ else if (left->description.sWeight != right->description.sWeight)
+ return S_FALSE;
+ else if (left->description.sCharset != right->description.sCharset)
+ return S_FALSE;
+ else if (left->description.fItalic != right->description.fItalic)
+ return S_FALSE;
+ else if (left->description.fUnderline != right->description.fUnderline)
+ return S_FALSE;
+ else if (left->description.fStrikethrough != right->description.fStrikethrough)
+ return S_FALSE;
+
+ /* Check from string */
+ left_len = strlenW(left->description.lpstrName);
+ right_len = strlenW(right->description.lpstrName);
+ hres = CompareStringW(0,0,left->description.lpstrName, left_len,
+ right->description.lpstrName, right_len);
+ if (hres != CSTR_EQUAL)
+ return S_FALSE;
+
+ return S_OK;
}
/************************************************************************
diff --git a/dlls/oleaut32/tests/olefont.c b/dlls/oleaut32/tests/olefont.c
index bdc7536..bd5fb73 100644
--- a/dlls/oleaut32/tests/olefont.c
+++ b/dlls/oleaut32/tests/olefont.c
@@ -503,27 +503,21 @@ static void test_IsEqual()
pOleCreateFontIndirect(&fd, &IID_IFont, &pvObj2);
ifnt2 = pvObj2;
hres = IFont_IsEqual(ifnt,ifnt2);
- todo_wine {
ok(hres == S_OK,
"IFont_IsEqual: (EQUAL) Expected S_OK but got 0x%08lx\n",hres);
- }
IFont_Release(ifnt2);
/* Check for bad pointer */
hres = IFont_IsEqual(ifnt,NULL);
- todo_wine {
ok(hres == E_POINTER,
"IFont_IsEqual: (NULL) Expected 0x80004003 but got 0x%08lx\n",hres);
- }
/* Test strName */
fd.lpstrName = (WCHAR*)arial_font;
pOleCreateFontIndirect(&fd, &IID_IFont, &pvObj2);
hres = IFont_IsEqual(ifnt,ifnt2);
- todo_wine {
ok(hres == S_FALSE,
"IFont_IsEqual: (strName) Expected S_FALSE but got 0x%08lx\n",hres);
- }
fd.lpstrName = (WCHAR*)system_font;
IFont_Release(ifnt2);
@@ -532,10 +526,8 @@ static void test_IsEqual()
pOleCreateFontIndirect(&fd, &IID_IFont, &pvObj2);
ifnt2 = pvObj2;
hres = IFont_IsEqual(ifnt,ifnt2);
- todo_wine {
ok(hres == S_FALSE,
"IFont_IsEqual: (Lo font size) Expected S_FALSE but got 0x%08lx\n",hres);
- }
S(fd.cySize).Lo = 100;
IFont_Release(ifnt2);
@@ -544,10 +536,8 @@ static void test_IsEqual()
pOleCreateFontIndirect(&fd, &IID_IFont, &pvObj2);
ifnt2 = pvObj2;
hres = IFont_IsEqual(ifnt,ifnt2);
- todo_wine {
ok(hres == S_FALSE,
"IFont_IsEqual: (Hi font size) Expected S_FALSE but got 0x%08lx\n",hres);
- }
S(fd.cySize).Hi = 100;
IFont_Release(ifnt2);
@@ -556,10 +546,8 @@ static void test_IsEqual()
pOleCreateFontIndirect(&fd, &IID_IFont, &pvObj2);
ifnt2 = pvObj2;
hres = IFont_IsEqual(ifnt,ifnt2);
- todo_wine {
ok(hres == S_FALSE,
"IFont_IsEqual: (Weight) Expected S_FALSE but got 0x%08lx\n",hres);
- }
fd.sWeight = 0;
IFont_Release(ifnt2);
@@ -567,10 +555,8 @@ static void test_IsEqual()
fd.sCharset = 1;
pOleCreateFontIndirect(&fd, &IID_IFont, &pvObj2);
hres = IFont_IsEqual(ifnt,ifnt2);
- todo_wine {
ok(hres == S_FALSE,
"IFont_IsEqual: (Charset) Expected S_FALSE but got 0x%08lx\n",hres);
- }
fd.sCharset = 0;
IFont_Release(ifnt2);
@@ -578,10 +564,8 @@ static void test_IsEqual()
fd.fItalic = 1;
pOleCreateFontIndirect(&fd, &IID_IFont, &pvObj2);
hres = IFont_IsEqual(ifnt,ifnt2);
- todo_wine {
ok(hres == S_FALSE,
"IFont_IsEqual: (Italic) Expected S_FALSE but got 0x%08lx\n",hres);
- }
fd.fItalic = 0;
IFont_Release(ifnt2);
@@ -589,10 +573,8 @@ static void test_IsEqual()
fd.fUnderline = 1;
pOleCreateFontIndirect(&fd, &IID_IFont, &pvObj2);
hres = IFont_IsEqual(ifnt,ifnt2);
- todo_wine {
ok(hres == S_FALSE,
"IFont_IsEqual: (Underline) Expected S_FALSE but got 0x%08lx\n",hres);
- }
fd.fUnderline = 0;
IFont_Release(ifnt2);
@@ -600,10 +582,8 @@ static void test_IsEqual()
fd.fStrikethrough = 1;
pOleCreateFontIndirect(&fd, &IID_IFont, &pvObj2);
hres = IFont_IsEqual(ifnt,ifnt2);
- todo_wine {
ok(hres == S_FALSE,
"IFont_IsEqual: (Strikethrough) Expected S_FALSE but got 0x%08lx\n",hres);
- }
fd.fStrikethrough = 0;
IFont_Release(ifnt2);
--
1.4.0
More information about the wine-patches
mailing list