Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenhtmltablerow.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
1.7.6.1
|