From 36a2d5ac3a024d98d7be677309ad6a0befa2074c Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Tue, 3 Feb 2009 19:42:25 +1100 Subject: [PATCH] mshtml: Add support for IHTMLStyle4 interface. --- dlls/mshtml/htmlstyle.c | 3 ++ dlls/mshtml/htmlstyle.h | 2 + dlls/mshtml/htmlstyle3.c | 99 ++++++++++++++++++++++++++++++++++++++++ dlls/mshtml/tests/dom.c | 1 + 4 files changed, 105 insertions(+) diff --git a/dlls/mshtml/htmlstyle.c b/dlls/mshtml/htmlstyle.c index c05b2b6a006..ad9d09532ec 100644 --- a/dlls/mshtml/htmlstyle.c +++ b/dlls/mshtml/htmlstyle.c @@ -471,6 +471,9 @@ static HRESULT WINAPI HTMLStyle_QueryInterface(IHTMLStyle *iface, REFIID riid, v }else if(IsEqualGUID(&IID_IHTMLStyle3, riid)) { TRACE("(%p)->(IID_IHTMLStyle3 %p)\n", This, ppv); *ppv = HTMLSTYLE3(This); + }else if(IsEqualGUID(&IID_IHTMLStyle4, riid)) { + TRACE("(%p)->(IID_IHTMLStyle4 %p)\n", This, ppv); + *ppv = HTMLSTYLE4(This); }else if(dispex_query_interface(&This->dispex, riid, ppv)) { return *ppv ? S_OK : E_NOINTERFACE; } diff --git a/dlls/mshtml/htmlstyle.h b/dlls/mshtml/htmlstyle.h index ef000852153..a9ff53566e0 100644 --- a/dlls/mshtml/htmlstyle.h +++ b/dlls/mshtml/htmlstyle.h @@ -21,6 +21,7 @@ struct HTMLStyle { const IHTMLStyleVtbl *lpHTMLStyleVtbl; const IHTMLStyle2Vtbl *lpHTMLStyle2Vtbl; const IHTMLStyle3Vtbl *lpHTMLStyle3Vtbl; + const IHTMLStyle4Vtbl *lpHTMLStyle4Vtbl; LONG ref; @@ -30,6 +31,7 @@ struct HTMLStyle { #define HTMLSTYLE(x) ((IHTMLStyle*) &(x)->lpHTMLStyleVtbl) #define HTMLSTYLE2(x) ((IHTMLStyle2*) &(x)->lpHTMLStyle2Vtbl) #define HTMLSTYLE3(x) ((IHTMLStyle3*) &(x)->lpHTMLStyle3Vtbl) +#define HTMLSTYLE4(x) ((IHTMLStyle4*) &(x)->lpHTMLStyle4Vtbl) /* NOTE: Make sure to keep in sync with style_tbl in htmlstyle.c */ typedef enum { diff --git a/dlls/mshtml/htmlstyle3.c b/dlls/mshtml/htmlstyle3.c index 9b9451ae2dd..f5ed8b523c3 100644 --- a/dlls/mshtml/htmlstyle3.c +++ b/dlls/mshtml/htmlstyle3.c @@ -336,7 +336,106 @@ static const IHTMLStyle3Vtbl HTMLStyle3Vtbl = { HTMLStyle3_get_textKashidaSpace }; +/* + * IHTMLStyle4 Interface + */ +#define HTMLSTYLE4_THIS(iface) DEFINE_THIS(HTMLStyle, HTMLStyle4, iface) + +static HRESULT WINAPI HTMLStyle4_QueryInterface(IHTMLStyle4 *iface, REFIID riid, void **ppv) +{ + HTMLStyle *This = HTMLSTYLE4_THIS(iface); + + return IHTMLStyle_QueryInterface(HTMLSTYLE(This), riid, ppv); +} + +static ULONG WINAPI HTMLStyle4_AddRef(IHTMLStyle4 *iface) +{ + HTMLStyle *This = HTMLSTYLE4_THIS(iface); + + return IHTMLStyle_AddRef(HTMLSTYLE(This)); +} + +static ULONG WINAPI HTMLStyle4_Release(IHTMLStyle4 *iface) +{ + HTMLStyle *This = HTMLSTYLE4_THIS(iface); + + return IHTMLStyle_Release(HTMLSTYLE(This)); +} + +static HRESULT WINAPI HTMLStyle4_GetTypeInfoCount(IHTMLStyle4 *iface, UINT *pctinfo) +{ + HTMLStyle *This = HTMLSTYLE4_THIS(iface); + return IDispatchEx_GetTypeInfoCount(DISPATCHEX(&This->dispex), pctinfo); +} + +static HRESULT WINAPI HTMLStyle4_GetTypeInfo(IHTMLStyle4 *iface, UINT iTInfo, + LCID lcid, ITypeInfo **ppTInfo) +{ + HTMLStyle *This = HTMLSTYLE4_THIS(iface); + return IDispatchEx_GetTypeInfo(DISPATCHEX(&This->dispex), iTInfo, lcid, ppTInfo); +} + +static HRESULT WINAPI HTMLStyle4_GetIDsOfNames(IHTMLStyle4 *iface, REFIID riid, + LPOLESTR *rgszNames, UINT cNames, + LCID lcid, DISPID *rgDispId) +{ + HTMLStyle *This = HTMLSTYLE4_THIS(iface); + return IDispatchEx_GetIDsOfNames(DISPATCHEX(&This->dispex), riid, rgszNames, cNames, lcid, rgDispId); +} + +static HRESULT WINAPI HTMLStyle4_Invoke(IHTMLStyle4 *iface, DISPID dispIdMember, + REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, + VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) +{ + HTMLStyle *This = HTMLSTYLE4_THIS(iface); + return IDispatchEx_Invoke(DISPATCHEX(&This->dispex), dispIdMember, riid, lcid, + wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); +} + +static HRESULT WINAPI HTMLStyle4_put_textOverflow(IHTMLStyle4 *iface, BSTR v) +{ + HTMLStyle *This = HTMLSTYLE4_THIS(iface); + FIXME("(%p)->(%s)\n", This, debugstr_w(v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLStyle4_get_textOverflow(IHTMLStyle4 *iface, BSTR *p) +{ + HTMLStyle *This = HTMLSTYLE4_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLStyle4_put_minHeight(IHTMLStyle4 *iface, VARIANT v) +{ + HTMLStyle *This = HTMLSTYLE4_THIS(iface); + FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLStyle4_get_minHeight(IHTMLStyle4 *iface, VARIANT *p) +{ + HTMLStyle *This = HTMLSTYLE4_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static const IHTMLStyle4Vtbl HTMLStyle4Vtbl = { + HTMLStyle4_QueryInterface, + HTMLStyle4_AddRef, + HTMLStyle4_Release, + HTMLStyle4_GetTypeInfoCount, + HTMLStyle4_GetTypeInfo, + HTMLStyle4_GetIDsOfNames, + HTMLStyle4_Invoke, + HTMLStyle4_put_textOverflow, + HTMLStyle4_get_textOverflow, + HTMLStyle4_put_minHeight, + HTMLStyle4_get_minHeight +}; + void HTMLStyle3_Init(HTMLStyle *This) { This->lpHTMLStyle3Vtbl = &HTMLStyle3Vtbl; + This->lpHTMLStyle4Vtbl = &HTMLStyle4Vtbl; } diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index 4882ee76000..62a07bcaffc 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -308,6 +308,7 @@ static const IID * const style_iids[] = { &IID_IHTMLStyle, &IID_IHTMLStyle2, &IID_IHTMLStyle3, + &IID_IHTMLStyle4, NULL };