ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

htmltextnode.c
Go to the documentation of this file.
00001 /*
00002  * Copyright 2008 Jacek Caban for CodeWeavers
00003  *
00004  * This library is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU Lesser General Public
00006  * License as published by the Free Software Foundation; either
00007  * version 2.1 of the License, or (at your option) any later version.
00008  *
00009  * This library is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  * Lesser General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU Lesser General Public
00015  * License along with this library; if not, write to the Free Software
00016  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
00017  */
00018 
00019 
00020 #include <stdarg.h>
00021 
00022 #define COBJMACROS
00023 
00024 #include "windef.h"
00025 #include "winbase.h"
00026 #include "winuser.h"
00027 #include "ole2.h"
00028 
00029 #include "mshtml_private.h"
00030 
00031 #include "wine/debug.h"
00032 
00033 WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
00034 
00035 struct HTMLDOMTextNode {
00036     HTMLDOMNode node;
00037     const IHTMLDOMTextNodeVtbl   *lpIHTMLDOMTextNodeVtbl;
00038 
00039     nsIDOMText *nstext;
00040 };
00041 
00042 #define HTMLTEXT(x)  (&(x)->lpIHTMLDOMTextNodeVtbl)
00043 
00044 #define HTMLTEXT_THIS(iface) DEFINE_THIS(HTMLDOMTextNode, IHTMLDOMTextNode, iface)
00045 
00046 #define HTMLTEXT_NODE_THIS(iface) DEFINE_THIS2(HTMLDOMTextNode, node, iface)
00047 
00048 static HRESULT WINAPI HTMLDOMTextNode_QueryInterface(IHTMLDOMTextNode *iface,
00049                                                  REFIID riid, void **ppv)
00050 {
00051     HTMLDOMTextNode *This = HTMLTEXT_THIS(iface);
00052 
00053     return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(&This->node), riid, ppv);
00054 }
00055 
00056 static ULONG WINAPI HTMLDOMTextNode_AddRef(IHTMLDOMTextNode *iface)
00057 {
00058     HTMLDOMTextNode *This = HTMLTEXT_THIS(iface);
00059 
00060     return IHTMLDOMNode_AddRef(HTMLDOMNODE(&This->node));
00061 }
00062 
00063 static ULONG WINAPI HTMLDOMTextNode_Release(IHTMLDOMTextNode *iface)
00064 {
00065     HTMLDOMTextNode *This = HTMLTEXT_THIS(iface);
00066 
00067     return IHTMLDOMNode_Release(HTMLDOMNODE(&This->node));
00068 }
00069 
00070 static HRESULT WINAPI HTMLDOMTextNode_GetTypeInfoCount(IHTMLDOMTextNode *iface, UINT *pctinfo)
00071 {
00072     HTMLDOMTextNode *This = HTMLTEXT_THIS(iface);
00073     return IDispatchEx_GetTypeInfoCount(DISPATCHEX(&This->node.dispex), pctinfo);
00074 }
00075 
00076 static HRESULT WINAPI HTMLDOMTextNode_GetTypeInfo(IHTMLDOMTextNode *iface, UINT iTInfo,
00077                                               LCID lcid, ITypeInfo **ppTInfo)
00078 {
00079     HTMLDOMTextNode *This = HTMLTEXT_THIS(iface);
00080     return IDispatchEx_GetTypeInfo(DISPATCHEX(&This->node.dispex), iTInfo, lcid, ppTInfo);
00081 }
00082 
00083 static HRESULT WINAPI HTMLDOMTextNode_GetIDsOfNames(IHTMLDOMTextNode *iface, REFIID riid,
00084                                                 LPOLESTR *rgszNames, UINT cNames,
00085                                                 LCID lcid, DISPID *rgDispId)
00086 {
00087     HTMLDOMTextNode *This = HTMLTEXT_THIS(iface);
00088     return IDispatchEx_GetIDsOfNames(DISPATCHEX(&This->node.dispex), riid, rgszNames, cNames, lcid, rgDispId);
00089 }
00090 
00091 static HRESULT WINAPI HTMLDOMTextNode_Invoke(IHTMLDOMTextNode *iface, DISPID dispIdMember,
00092                             REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
00093                             VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
00094 {
00095     HTMLDOMTextNode *This = HTMLTEXT_THIS(iface);
00096     return IDispatchEx_Invoke(DISPATCHEX(&This->node.dispex), dispIdMember, riid, lcid, wFlags, pDispParams,
00097             pVarResult, pExcepInfo, puArgErr);
00098 }
00099 
00100 static HRESULT WINAPI HTMLDOMTextNode_put_data(IHTMLDOMTextNode *iface, BSTR v)
00101 {
00102     HTMLDOMTextNode *This = HTMLTEXT_THIS(iface);
00103     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
00104     return E_NOTIMPL;
00105 }
00106 
00107 static HRESULT WINAPI HTMLDOMTextNode_get_data(IHTMLDOMTextNode *iface, BSTR *p)
00108 {
00109     HTMLDOMTextNode *This = HTMLTEXT_THIS(iface);
00110     FIXME("(%p)->(%p)\n", This, p);
00111     return E_NOTIMPL;
00112 }
00113 
00114 static HRESULT WINAPI HTMLDOMTextNode_toString(IHTMLDOMTextNode *iface, BSTR *String)
00115 {
00116     HTMLDOMTextNode *This = HTMLTEXT_THIS(iface);
00117     FIXME("(%p)->(%p)\n", This, String);
00118     return E_NOTIMPL;
00119 }
00120 
00121 static HRESULT WINAPI HTMLDOMTextNode_get_length(IHTMLDOMTextNode *iface, LONG *p)
00122 {
00123     HTMLDOMTextNode *This = HTMLTEXT_THIS(iface);
00124     PRUint32 length = 0;
00125     nsresult nsres;
00126 
00127     TRACE("(%p)->(%p)\n", This, p);
00128 
00129     nsres = nsIDOMText_GetLength(This->nstext, &length);
00130     if(NS_FAILED(nsres))
00131         ERR("GetLength failed: %08x\n", nsres);
00132 
00133     *p = length;
00134     return S_OK;
00135 }
00136 
00137 static HRESULT WINAPI HTMLDOMTextNode_splitText(IHTMLDOMTextNode *iface, LONG offset, IHTMLDOMNode **pRetNode)
00138 {
00139     HTMLDOMTextNode *This = HTMLTEXT_THIS(iface);
00140     FIXME("(%p)->(%d %p)\n", This, offset, pRetNode);
00141     return E_NOTIMPL;
00142 }
00143 
00144 #undef HTMLTEXT_THIS
00145 
00146 static const IHTMLDOMTextNodeVtbl HTMLDOMTextNodeVtbl = {
00147     HTMLDOMTextNode_QueryInterface,
00148     HTMLDOMTextNode_AddRef,
00149     HTMLDOMTextNode_Release,
00150     HTMLDOMTextNode_GetTypeInfoCount,
00151     HTMLDOMTextNode_GetTypeInfo,
00152     HTMLDOMTextNode_GetIDsOfNames,
00153     HTMLDOMTextNode_Invoke,
00154     HTMLDOMTextNode_put_data,
00155     HTMLDOMTextNode_get_data,
00156     HTMLDOMTextNode_toString,
00157     HTMLDOMTextNode_get_length,
00158     HTMLDOMTextNode_splitText
00159 };
00160 
00161 #define HTMLTEXT_NODE_THIS(iface) DEFINE_THIS2(HTMLDOMTextNode, node, iface)
00162 
00163 static HRESULT HTMLDOMTextNode_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
00164 {
00165     HTMLDOMTextNode *This = HTMLTEXT_NODE_THIS(iface);
00166 
00167     *ppv =  NULL;
00168 
00169     if(IsEqualGUID(&IID_IHTMLDOMTextNode, riid)) {
00170         TRACE("(%p)->(IID_IHTMLDOMTextNode %p)\n", This, ppv);
00171         *ppv = HTMLTEXT(This);
00172     }else {
00173         return HTMLDOMNode_QI(&This->node, riid, ppv);
00174     }
00175 
00176     IUnknown_AddRef((IUnknown*)*ppv);
00177     return S_OK;
00178 }
00179 
00180 static void HTMLDOMTextNode_destructor(HTMLDOMNode *iface)
00181 {
00182     HTMLDOMTextNode *This = HTMLTEXT_NODE_THIS(iface);
00183 
00184     if(This->nstext)
00185         IHTMLDOMTextNode_Release(This->nstext);
00186 
00187     HTMLDOMNode_destructor(&This->node);
00188 }
00189 
00190 #undef HTMLTEXT_NODE_THIS
00191 
00192 static const NodeImplVtbl HTMLDOMTextNodeImplVtbl = {
00193     HTMLDOMTextNode_QI,
00194     HTMLDOMTextNode_destructor
00195 };
00196 
00197 static const tid_t HTMLDOMTextNode_iface_tids[] = {
00198     IHTMLDOMNode_tid,
00199     IHTMLDOMNode2_tid,
00200     IHTMLDOMTextNode_tid,
00201     0
00202 };
00203 static dispex_static_data_t HTMLDOMTextNode_dispex = {
00204     NULL,
00205     DispHTMLDOMTextNode_tid,
00206     0,
00207     HTMLDOMTextNode_iface_tids
00208 };
00209 
00210 HTMLDOMNode *HTMLDOMTextNode_Create(HTMLDocumentNode *doc, nsIDOMNode *nsnode)
00211 {
00212     HTMLDOMTextNode *ret;
00213     nsresult nsres;
00214 
00215     ret = heap_alloc_zero(sizeof(*ret));
00216     ret->node.vtbl = &HTMLDOMTextNodeImplVtbl;
00217     ret->lpIHTMLDOMTextNodeVtbl = &HTMLDOMTextNodeVtbl;
00218 
00219     init_dispex(&ret->node.dispex, (IUnknown*)HTMLTEXT(ret), &HTMLDOMTextNode_dispex);
00220     HTMLDOMNode_Init(doc, &ret->node, nsnode);
00221 
00222     nsres = nsIDOMNode_QueryInterface(nsnode, &IID_nsIDOMText, (void**)&ret->nstext);
00223     if(NS_FAILED(nsres))
00224         ERR("Could not get nsIDOMText iface: %08x\n", nsres);
00225 
00226     return &ret->node;
00227 }

Generated on Sun May 27 2012 04:25:01 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.