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

htmltablerow.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 #include <stdarg.h>
00020 
00021 #define COBJMACROS
00022 
00023 #include "windef.h"
00024 #include "winbase.h"
00025 #include "winuser.h"
00026 #include "ole2.h"
00027 
00028 #include "wine/debug.h"
00029 
00030 #include "mshtml_private.h"
00031 
00032 WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
00033 
00034 typedef struct {
00035     HTMLElement element;
00036 
00037     const IHTMLTableRowVtbl *lpHTMLTableRowVtbl;
00038 
00039     nsIDOMHTMLTableRowElement *nsrow;
00040 } HTMLTableRow;
00041 
00042 #define HTMLTABLEROW(x)  (&(x)->lpHTMLTableRowVtbl)
00043 
00044 #define HTMLTABLEROW_THIS(iface) DEFINE_THIS(HTMLTableRow, HTMLTableRow, iface)
00045 
00046 static HRESULT WINAPI HTMLTableRow_QueryInterface(IHTMLTableRow *iface,
00047         REFIID riid, void **ppv)
00048 {
00049     HTMLTableRow *This = HTMLTABLEROW_THIS(iface);
00050 
00051     return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(&This->element.node), riid, ppv);
00052 }
00053 
00054 static ULONG WINAPI HTMLTableRow_AddRef(IHTMLTableRow *iface)
00055 {
00056     HTMLTableRow *This = HTMLTABLEROW_THIS(iface);
00057 
00058     return IHTMLDOMNode_AddRef(HTMLDOMNODE(&This->element.node));
00059 }
00060 
00061 static ULONG WINAPI HTMLTableRow_Release(IHTMLTableRow *iface)
00062 {
00063     HTMLTableRow *This = HTMLTABLEROW_THIS(iface);
00064 
00065     return IHTMLDOMNode_Release(HTMLDOMNODE(&This->element.node));
00066 }
00067 
00068 static HRESULT WINAPI HTMLTableRow_GetTypeInfoCount(IHTMLTableRow *iface, UINT *pctinfo)
00069 {
00070     HTMLTableRow *This = HTMLTABLEROW_THIS(iface);
00071     return IDispatchEx_GetTypeInfoCount(DISPATCHEX(&This->element.node.dispex), pctinfo);
00072 }
00073 
00074 static HRESULT WINAPI HTMLTableRow_GetTypeInfo(IHTMLTableRow *iface, UINT iTInfo,
00075                                               LCID lcid, ITypeInfo **ppTInfo)
00076 {
00077     HTMLTableRow *This = HTMLTABLEROW_THIS(iface);
00078     return IDispatchEx_GetTypeInfo(DISPATCHEX(&This->element.node.dispex), iTInfo, lcid, ppTInfo);
00079 }
00080 
00081 static HRESULT WINAPI HTMLTableRow_GetIDsOfNames(IHTMLTableRow *iface, REFIID riid,
00082                                                 LPOLESTR *rgszNames, UINT cNames,
00083                                                 LCID lcid, DISPID *rgDispId)
00084 {
00085     HTMLTableRow *This = HTMLTABLEROW_THIS(iface);
00086     return IDispatchEx_GetIDsOfNames(DISPATCHEX(&This->element.node.dispex), riid, rgszNames, cNames, lcid, rgDispId);
00087 }
00088 
00089 static HRESULT WINAPI HTMLTableRow_Invoke(IHTMLTableRow *iface, DISPID dispIdMember,
00090                             REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
00091                             VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
00092 {
00093     HTMLTableRow *This = HTMLTABLEROW_THIS(iface);
00094     return IDispatchEx_Invoke(DISPATCHEX(&This->element.node.dispex), dispIdMember, riid, lcid, wFlags, pDispParams,
00095             pVarResult, pExcepInfo, puArgErr);
00096 }
00097 
00098 static HRESULT WINAPI HTMLTableRow_put_align(IHTMLTableRow *iface, BSTR v)
00099 {
00100     HTMLTableRow *This = HTMLTABLEROW_THIS(iface);
00101     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
00102     return E_NOTIMPL;
00103 }
00104 
00105 static HRESULT WINAPI HTMLTableRow_get_align(IHTMLTableRow *iface, BSTR *p)
00106 {
00107     HTMLTableRow *This = HTMLTABLEROW_THIS(iface);
00108     FIXME("(%p)->(%p)\n", This, p);
00109     return E_NOTIMPL;
00110 }
00111 
00112 static HRESULT WINAPI HTMLTableRow_put_vAlign(IHTMLTableRow *iface, BSTR v)
00113 {
00114     HTMLTableRow *This = HTMLTABLEROW_THIS(iface);
00115     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
00116     return E_NOTIMPL;
00117 }
00118 
00119 static HRESULT WINAPI HTMLTableRow_get_vAlign(IHTMLTableRow *iface, BSTR *p)
00120 {
00121     HTMLTableRow *This = HTMLTABLEROW_THIS(iface);
00122     FIXME("(%p)->(%p)\n", This, p);
00123     return E_NOTIMPL;
00124 }
00125 
00126 static HRESULT WINAPI HTMLTableRow_put_bgColor(IHTMLTableRow *iface, VARIANT v)
00127 {
00128     HTMLTableRow *This = HTMLTABLEROW_THIS(iface);
00129     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
00130     return E_NOTIMPL;
00131 }
00132 
00133 static HRESULT WINAPI HTMLTableRow_get_bgColor(IHTMLTableRow *iface, VARIANT *p)
00134 {
00135     HTMLTableRow *This = HTMLTABLEROW_THIS(iface);
00136     FIXME("(%p)->(%p)\n", This, p);
00137     return E_NOTIMPL;
00138 }
00139 
00140 static HRESULT WINAPI HTMLTableRow_put_borderColor(IHTMLTableRow *iface, VARIANT v)
00141 {
00142     HTMLTableRow *This = HTMLTABLEROW_THIS(iface);
00143     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
00144     return E_NOTIMPL;
00145 }
00146 
00147 static HRESULT WINAPI HTMLTableRow_get_borderColor(IHTMLTableRow *iface, VARIANT *p)
00148 {
00149     HTMLTableRow *This = HTMLTABLEROW_THIS(iface);
00150     FIXME("(%p)->(%p)\n", This, p);
00151     return E_NOTIMPL;
00152 }
00153 
00154 static HRESULT WINAPI HTMLTableRow_put_borderColorLight(IHTMLTableRow *iface, VARIANT v)
00155 {
00156     HTMLTableRow *This = HTMLTABLEROW_THIS(iface);
00157     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
00158     return E_NOTIMPL;
00159 }
00160 
00161 static HRESULT WINAPI HTMLTableRow_get_borderColorLight(IHTMLTableRow *iface, VARIANT *p)
00162 {
00163     HTMLTableRow *This = HTMLTABLEROW_THIS(iface);
00164     FIXME("(%p)->(%p)\n", This, p);
00165     return E_NOTIMPL;
00166 }
00167 
00168 static HRESULT WINAPI HTMLTableRow_put_borderColorDark(IHTMLTableRow *iface, VARIANT v)
00169 {
00170     HTMLTableRow *This = HTMLTABLEROW_THIS(iface);
00171     FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
00172     return E_NOTIMPL;
00173 }
00174 
00175 static HRESULT WINAPI HTMLTableRow_get_borderColorDark(IHTMLTableRow *iface, VARIANT *p)
00176 {
00177     HTMLTableRow *This = HTMLTABLEROW_THIS(iface);
00178     FIXME("(%p)->(%p)\n", This, p);
00179     return E_NOTIMPL;
00180 }
00181 
00182 static HRESULT WINAPI HTMLTableRow_get_rowIndex(IHTMLTableRow *iface, LONG *p)
00183 {
00184     HTMLTableRow *This = HTMLTABLEROW_THIS(iface);
00185     FIXME("(%p)->(%p)\n", This, p);
00186     return E_NOTIMPL;
00187 }
00188 
00189 static HRESULT WINAPI HTMLTableRow_get_selectionRowIndex(IHTMLTableRow *iface, LONG *p)
00190 {
00191     HTMLTableRow *This = HTMLTABLEROW_THIS(iface);
00192     FIXME("(%p)->(%p)\n", This, p);
00193     return E_NOTIMPL;
00194 }
00195 
00196 static HRESULT WINAPI HTMLTableRow_get_cells(IHTMLTableRow *iface, IHTMLElementCollection **p)
00197 {
00198     HTMLTableRow *This = HTMLTABLEROW_THIS(iface);
00199     nsIDOMHTMLCollection *nscol;
00200     nsresult nsres;
00201 
00202     TRACE("(%p)->(%p)\n", This, p);
00203 
00204     nsres = nsIDOMHTMLTableRowElement_GetCells(This->nsrow, &nscol);
00205     if(NS_FAILED(nsres)) {
00206         ERR("GetCells failed: %08x\n", nsres);
00207         return E_FAIL;
00208     }
00209 
00210     *p = create_collection_from_htmlcol(This->element.node.doc, (IUnknown*)HTMLTABLEROW(This), nscol);
00211 
00212     nsIDOMHTMLCollection_Release(nscol);
00213     return S_OK;
00214 }
00215 
00216 static HRESULT WINAPI HTMLTableRow_insertCell(IHTMLTableRow *iface, LONG index, IDispatch **row)
00217 {
00218     HTMLTableRow *This = HTMLTABLEROW_THIS(iface);
00219     FIXME("(%p)->(%d %p)\n", This, index, row);
00220     return E_NOTIMPL;
00221 }
00222 
00223 static HRESULT WINAPI HTMLTableRow_deleteCell(IHTMLTableRow *iface, LONG index)
00224 {
00225     HTMLTableRow *This = HTMLTABLEROW_THIS(iface);
00226     FIXME("(%p)->(%d)\n", This, index);
00227     return E_NOTIMPL;
00228 }
00229 
00230 #undef HTMLTABLEROW_THIS
00231 
00232 static const IHTMLTableRowVtbl HTMLTableRowVtbl = {
00233     HTMLTableRow_QueryInterface,
00234     HTMLTableRow_AddRef,
00235     HTMLTableRow_Release,
00236     HTMLTableRow_GetTypeInfoCount,
00237     HTMLTableRow_GetTypeInfo,
00238     HTMLTableRow_GetIDsOfNames,
00239     HTMLTableRow_Invoke,
00240     HTMLTableRow_put_align,
00241     HTMLTableRow_get_align,
00242     HTMLTableRow_put_vAlign,
00243     HTMLTableRow_get_vAlign,
00244     HTMLTableRow_put_bgColor,
00245     HTMLTableRow_get_bgColor,
00246     HTMLTableRow_put_borderColor,
00247     HTMLTableRow_get_borderColor,
00248     HTMLTableRow_put_borderColorLight,
00249     HTMLTableRow_get_borderColorLight,
00250     HTMLTableRow_put_borderColorDark,
00251     HTMLTableRow_get_borderColorDark,
00252     HTMLTableRow_get_rowIndex,
00253     HTMLTableRow_get_selectionRowIndex,
00254     HTMLTableRow_get_cells,
00255     HTMLTableRow_insertCell,
00256     HTMLTableRow_deleteCell
00257 };
00258 
00259 #define HTMLTABLEROW_NODE_THIS(iface) DEFINE_THIS2(HTMLTableRow, element.node, iface)
00260 
00261 static HRESULT HTMLTableRow_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
00262 {
00263     HTMLTableRow *This = HTMLTABLEROW_NODE_THIS(iface);
00264 
00265     *ppv = NULL;
00266 
00267     if(IsEqualGUID(&IID_IUnknown, riid)) {
00268         TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
00269         *ppv = HTMLTABLEROW(This);
00270     }else if(IsEqualGUID(&IID_IDispatch, riid)) {
00271         TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
00272         *ppv = HTMLTABLEROW(This);
00273     }else if(IsEqualGUID(&IID_IHTMLTableRow, riid)) {
00274         TRACE("(%p)->(IID_IHTMLTableRow %p)\n", This, ppv);
00275         *ppv = HTMLTABLEROW(This);
00276     }
00277 
00278     if(*ppv) {
00279         IUnknown_AddRef((IUnknown*)*ppv);
00280         return S_OK;
00281     }
00282 
00283     return HTMLElement_QI(&This->element.node, riid, ppv);
00284 }
00285 
00286 static void HTMLTableRow_destructor(HTMLDOMNode *iface)
00287 {
00288     HTMLTableRow *This = HTMLTABLEROW_NODE_THIS(iface);
00289 
00290     if(This->nsrow)
00291         nsIDOMHTMLTableRowElement_Release(This->nsrow);
00292 
00293     HTMLElement_destructor(&This->element.node);
00294 }
00295 
00296 #undef HTMLTABLEROW_NODE_THIS
00297 
00298 static const NodeImplVtbl HTMLTableRowImplVtbl = {
00299     HTMLTableRow_QI,
00300     HTMLTableRow_destructor
00301 };
00302 
00303 static const tid_t HTMLTableRow_iface_tids[] = {
00304     HTMLELEMENT_TIDS,
00305     IHTMLTableRow_tid,
00306     0
00307 };
00308 
00309 static dispex_static_data_t HTMLTableRow_dispex = {
00310     NULL,
00311     DispHTMLTableRow_tid,
00312     NULL,
00313     HTMLTableRow_iface_tids
00314 };
00315 
00316 HTMLElement *HTMLTableRow_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
00317 {
00318     HTMLTableRow *ret = heap_alloc_zero(sizeof(HTMLTableRow));
00319     nsresult nsres;
00320 
00321     ret->lpHTMLTableRowVtbl = &HTMLTableRowVtbl;
00322     ret->element.node.vtbl = &HTMLTableRowImplVtbl;
00323 
00324     HTMLElement_Init(&ret->element, doc, nselem, &HTMLTableRow_dispex);
00325 
00326     nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLTableRowElement, (void**)&ret->nsrow);
00327     if(NS_FAILED(nsres))
00328         ERR("Could not get nsIDOMHTMLTableRowElement iface: %08x\n", nsres);
00329 
00330     return &ret->element;
00331 }

Generated on Sat May 26 2012 04:23:36 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.