mshtml: Add ISVGCircleElement stub implementation.
Signed-off-by: Jacek Caban <jacek@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
07ee5cb341
commit
56f03488b4
|
@ -131,6 +131,7 @@ typedef struct EventTarget EventTarget;
|
||||||
XDIID(DispHTMLW3CComputedStyle) \
|
XDIID(DispHTMLW3CComputedStyle) \
|
||||||
XDIID(DispHTMLWindow2) \
|
XDIID(DispHTMLWindow2) \
|
||||||
XDIID(DispHTMLXMLHttpRequest) \
|
XDIID(DispHTMLXMLHttpRequest) \
|
||||||
|
XDIID(DispSVGCircleElement) \
|
||||||
XDIID(DispSVGSVGElement) \
|
XDIID(DispSVGSVGElement) \
|
||||||
XDIID(HTMLDocumentEvents) \
|
XDIID(HTMLDocumentEvents) \
|
||||||
XDIID(HTMLElementEvents2) \
|
XDIID(HTMLElementEvents2) \
|
||||||
|
@ -248,6 +249,7 @@ typedef struct EventTarget EventTarget;
|
||||||
XIID(IHTMLXMLHttpRequestFactory) \
|
XIID(IHTMLXMLHttpRequestFactory) \
|
||||||
XIID(IOmHistory) \
|
XIID(IOmHistory) \
|
||||||
XIID(IOmNavigator) \
|
XIID(IOmNavigator) \
|
||||||
|
XIID(ISVGCircleElement) \
|
||||||
XIID(ISVGElement) \
|
XIID(ISVGElement) \
|
||||||
XIID(ISVGSVGElement)
|
XIID(ISVGSVGElement)
|
||||||
|
|
||||||
|
|
|
@ -761,7 +761,177 @@ static HRESULT create_viewport_element(HTMLDocumentNode *doc, nsIDOMSVGElement *
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct SVGCircleElement {
|
||||||
|
SVGElement svg_element;
|
||||||
|
ISVGCircleElement ISVGCircleElement_iface;
|
||||||
|
};
|
||||||
|
|
||||||
|
static inline SVGCircleElement *impl_from_ISVGCircleElement(ISVGCircleElement *iface)
|
||||||
|
{
|
||||||
|
return CONTAINING_RECORD(iface, SVGCircleElement, ISVGCircleElement_iface);
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI SVGCircleElement_QueryInterface(ISVGCircleElement *iface,
|
||||||
|
REFIID riid, void **ppv)
|
||||||
|
{
|
||||||
|
SVGCircleElement *This = impl_from_ISVGCircleElement(iface);
|
||||||
|
|
||||||
|
return IHTMLDOMNode_QueryInterface(&This->svg_element.element.node.IHTMLDOMNode_iface, riid, ppv);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI SVGCircleElement_AddRef(ISVGCircleElement *iface)
|
||||||
|
{
|
||||||
|
SVGCircleElement *This = impl_from_ISVGCircleElement(iface);
|
||||||
|
|
||||||
|
return IHTMLDOMNode_AddRef(&This->svg_element.element.node.IHTMLDOMNode_iface);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI SVGCircleElement_Release(ISVGCircleElement *iface)
|
||||||
|
{
|
||||||
|
SVGCircleElement *This = impl_from_ISVGCircleElement(iface);
|
||||||
|
|
||||||
|
return IHTMLDOMNode_Release(&This->svg_element.element.node.IHTMLDOMNode_iface);
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI SVGCircleElement_GetTypeInfoCount(ISVGCircleElement *iface, UINT *pctinfo)
|
||||||
|
{
|
||||||
|
SVGCircleElement *This = impl_from_ISVGCircleElement(iface);
|
||||||
|
return IDispatchEx_GetTypeInfoCount(&This->svg_element.element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI SVGCircleElement_GetTypeInfo(ISVGCircleElement *iface, UINT iTInfo,
|
||||||
|
LCID lcid, ITypeInfo **ppTInfo)
|
||||||
|
{
|
||||||
|
SVGCircleElement *This = impl_from_ISVGCircleElement(iface);
|
||||||
|
return IDispatchEx_GetTypeInfo(&This->svg_element.element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||||
|
ppTInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI SVGCircleElement_GetIDsOfNames(ISVGCircleElement *iface, REFIID riid,
|
||||||
|
LPOLESTR *rgszNames, UINT cNames,
|
||||||
|
LCID lcid, DISPID *rgDispId)
|
||||||
|
{
|
||||||
|
SVGCircleElement *This = impl_from_ISVGCircleElement(iface);
|
||||||
|
return IDispatchEx_GetIDsOfNames(&This->svg_element.element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||||
|
cNames, lcid, rgDispId);
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI SVGCircleElement_Invoke(ISVGCircleElement *iface, DISPID dispIdMember,
|
||||||
|
REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
|
||||||
|
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||||
|
{
|
||||||
|
SVGCircleElement *This = impl_from_ISVGCircleElement(iface);
|
||||||
|
return IDispatchEx_Invoke(&This->svg_element.element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||||
|
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI SVGCircleElement_putref_cx(ISVGCircleElement *iface, ISVGAnimatedLength *v)
|
||||||
|
{
|
||||||
|
SVGCircleElement *This = impl_from_ISVGCircleElement(iface);
|
||||||
|
FIXME("(%p)->(%p)\n", This, v);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI SVGCircleElement_get_cx(ISVGCircleElement *iface, ISVGAnimatedLength **p)
|
||||||
|
{
|
||||||
|
SVGCircleElement *This = impl_from_ISVGCircleElement(iface);
|
||||||
|
FIXME("(%p)->(%p)\n", This, p);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI SVGCircleElement_putref_cy(ISVGCircleElement *iface, ISVGAnimatedLength *v)
|
||||||
|
{
|
||||||
|
SVGCircleElement *This = impl_from_ISVGCircleElement(iface);
|
||||||
|
FIXME("(%p)->(%p)\n", This, v);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI SVGCircleElement_get_cy(ISVGCircleElement *iface, ISVGAnimatedLength **p)
|
||||||
|
{
|
||||||
|
SVGCircleElement *This = impl_from_ISVGCircleElement(iface);
|
||||||
|
FIXME("(%p)->(%p)\n", This, p);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI SVGCircleElement_putref_r(ISVGCircleElement *iface, ISVGAnimatedLength *v)
|
||||||
|
{
|
||||||
|
SVGCircleElement *This = impl_from_ISVGCircleElement(iface);
|
||||||
|
FIXME("(%p)->(%p)\n", This, v);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI SVGCircleElement_get_r(ISVGCircleElement *iface, ISVGAnimatedLength **p)
|
||||||
|
{
|
||||||
|
SVGCircleElement *This = impl_from_ISVGCircleElement(iface);
|
||||||
|
FIXME("(%p)->(%p)\n", This, p);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const ISVGCircleElementVtbl SVGCircleElementVtbl = {
|
||||||
|
SVGCircleElement_QueryInterface,
|
||||||
|
SVGCircleElement_AddRef,
|
||||||
|
SVGCircleElement_Release,
|
||||||
|
SVGCircleElement_GetTypeInfoCount,
|
||||||
|
SVGCircleElement_GetTypeInfo,
|
||||||
|
SVGCircleElement_GetIDsOfNames,
|
||||||
|
SVGCircleElement_Invoke,
|
||||||
|
SVGCircleElement_putref_cx,
|
||||||
|
SVGCircleElement_get_cx,
|
||||||
|
SVGCircleElement_putref_cy,
|
||||||
|
SVGCircleElement_get_cy,
|
||||||
|
SVGCircleElement_putref_r,
|
||||||
|
SVGCircleElement_get_r
|
||||||
|
};
|
||||||
|
|
||||||
|
static inline SVGCircleElement *SVGCircleElement_from_HTMLDOMNode(HTMLDOMNode *iface)
|
||||||
|
{
|
||||||
|
return CONTAINING_RECORD(iface, SVGCircleElement, svg_element.element.node);
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT SVGCircleElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
|
||||||
|
{
|
||||||
|
SVGCircleElement *This = SVGCircleElement_from_HTMLDOMNode(iface);
|
||||||
|
|
||||||
|
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
|
||||||
|
|
||||||
|
if(IsEqualGUID(&IID_ISVGCircleElement, riid))
|
||||||
|
*ppv = &This->ISVGCircleElement_iface;
|
||||||
|
else
|
||||||
|
return SVGElement_QI(&This->svg_element.element.node, riid, ppv);
|
||||||
|
|
||||||
|
IUnknown_AddRef((IUnknown*)*ppv);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const NodeImplVtbl SVGCircleElementImplVtbl = {
|
||||||
|
&CLSID_SVGCircleElement,
|
||||||
|
SVGCircleElement_QI,
|
||||||
|
HTMLElement_destructor,
|
||||||
|
HTMLElement_cpc,
|
||||||
|
HTMLElement_clone,
|
||||||
|
NULL,
|
||||||
|
HTMLElement_get_attr_col,
|
||||||
|
};
|
||||||
|
|
||||||
|
static HRESULT create_circle_element(HTMLDocumentNode *doc, nsIDOMSVGElement *nselem, HTMLElement **elem)
|
||||||
|
{
|
||||||
|
SVGCircleElement *ret;
|
||||||
|
|
||||||
|
ret = heap_alloc_zero(sizeof(SVGCircleElement));
|
||||||
|
if(!ret)
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
|
ret->ISVGCircleElement_iface.lpVtbl = &SVGCircleElementVtbl;
|
||||||
|
ret->svg_element.element.node.vtbl = &SVGCircleElementImplVtbl;
|
||||||
|
|
||||||
|
init_svg_element(&ret->svg_element, doc, nselem);
|
||||||
|
|
||||||
|
*elem = &ret->svg_element.element;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static const WCHAR circleW[] = {'c','i','r','c','l','e',0};
|
||||||
static const WCHAR svgW[] = {'s','v','g',0};
|
static const WCHAR svgW[] = {'s','v','g',0};
|
||||||
|
|
||||||
HRESULT create_svg_element(HTMLDocumentNode *doc, nsIDOMSVGElement *dom_element, const WCHAR *tag_name, HTMLElement **elem)
|
HRESULT create_svg_element(HTMLDocumentNode *doc, nsIDOMSVGElement *dom_element, const WCHAR *tag_name, HTMLElement **elem)
|
||||||
|
@ -772,6 +942,8 @@ HRESULT create_svg_element(HTMLDocumentNode *doc, nsIDOMSVGElement *dom_element,
|
||||||
|
|
||||||
if(!strcmpW(tag_name, svgW))
|
if(!strcmpW(tag_name, svgW))
|
||||||
return create_viewport_element(doc, dom_element, elem);
|
return create_viewport_element(doc, dom_element, elem);
|
||||||
|
if(!strcmpW(tag_name, circleW))
|
||||||
|
return create_circle_element(doc, dom_element, elem);
|
||||||
|
|
||||||
svg_element = heap_alloc_zero(sizeof(*svg_element));
|
svg_element = heap_alloc_zero(sizeof(*svg_element));
|
||||||
if(!svg_element)
|
if(!svg_element)
|
||||||
|
|
|
@ -452,6 +452,7 @@ static const IID * const svg_iids[] = {
|
||||||
static const IID * const circle_iids[] = {
|
static const IID * const circle_iids[] = {
|
||||||
ELEM_IFACES,
|
ELEM_IFACES,
|
||||||
&IID_ISVGElement,
|
&IID_ISVGElement,
|
||||||
|
&IID_ISVGCircleElement,
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue