Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenhtmlscreen.c
Go to the documentation of this file.
00001 /* 00002 * Copyright 2009 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 DispatchEx dispex; 00036 const IHTMLScreenVtbl *lpIHTMLScreenVtbl; 00037 00038 LONG ref; 00039 } HTMLScreen; 00040 00041 #define HTMLSCREEN(x) ((IHTMLScreen*) &(x)->lpIHTMLScreenVtbl) 00042 00043 #define HTMLSCREEN_THIS(iface) DEFINE_THIS(HTMLScreen, IHTMLScreen, iface) 00044 00045 static HRESULT WINAPI HTMLScreen_QueryInterface(IHTMLScreen *iface, REFIID riid, void **ppv) 00046 { 00047 HTMLScreen *This = HTMLSCREEN_THIS(iface); 00048 00049 *ppv = NULL; 00050 00051 if(IsEqualGUID(&IID_IUnknown, riid)) { 00052 TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); 00053 *ppv = HTMLSCREEN(This); 00054 }else if(IsEqualGUID(&IID_IHTMLScreen, riid)) { 00055 TRACE("(%p)->(IID_IHTMLScreen %p)\n", This, ppv); 00056 *ppv = HTMLSCREEN(This); 00057 }else if(dispex_query_interface(&This->dispex, riid, ppv)) { 00058 return *ppv ? S_OK : E_NOINTERFACE; 00059 } 00060 00061 if(*ppv) { 00062 IUnknown_AddRef((IUnknown*)*ppv); 00063 return S_OK; 00064 } 00065 00066 WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv); 00067 return E_NOINTERFACE; 00068 } 00069 00070 static ULONG WINAPI HTMLScreen_AddRef(IHTMLScreen *iface) 00071 { 00072 HTMLScreen *This = HTMLSCREEN_THIS(iface); 00073 LONG ref = InterlockedIncrement(&This->ref); 00074 00075 TRACE("(%p) ref=%d\n", This, ref); 00076 00077 return ref; 00078 } 00079 00080 static ULONG WINAPI HTMLScreen_Release(IHTMLScreen *iface) 00081 { 00082 HTMLScreen *This = HTMLSCREEN_THIS(iface); 00083 LONG ref = InterlockedDecrement(&This->ref); 00084 00085 TRACE("(%p) ref=%d\n", This, ref); 00086 00087 if(!ref) { 00088 release_dispex(&This->dispex); 00089 heap_free(This); 00090 } 00091 00092 return ref; 00093 } 00094 00095 static HRESULT WINAPI HTMLScreen_GetTypeInfoCount(IHTMLScreen *iface, UINT *pctinfo) 00096 { 00097 HTMLScreen *This = HTMLSCREEN_THIS(iface); 00098 FIXME("(%p)\n", This); 00099 return E_NOTIMPL; 00100 } 00101 00102 static HRESULT WINAPI HTMLScreen_GetTypeInfo(IHTMLScreen *iface, UINT iTInfo, 00103 LCID lcid, ITypeInfo **ppTInfo) 00104 { 00105 HTMLScreen *This = HTMLSCREEN_THIS(iface); 00106 FIXME("(%p)\n", This); 00107 return E_NOTIMPL; 00108 } 00109 00110 static HRESULT WINAPI HTMLScreen_GetIDsOfNames(IHTMLScreen *iface, REFIID riid, 00111 LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) 00112 { 00113 HTMLScreen *This = HTMLSCREEN_THIS(iface); 00114 FIXME("(%p)\n", This); 00115 return E_NOTIMPL; 00116 } 00117 00118 static HRESULT WINAPI HTMLScreen_Invoke(IHTMLScreen *iface, DISPID dispIdMember, 00119 REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, 00120 VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) 00121 { 00122 HTMLScreen *This = HTMLSCREEN_THIS(iface); 00123 FIXME("(%p)\n", This); 00124 return E_NOTIMPL; 00125 } 00126 00127 static HRESULT WINAPI HTMLScreen_get_colorDepth(IHTMLScreen *iface, LONG *p) 00128 { 00129 HTMLScreen *This = HTMLSCREEN_THIS(iface); 00130 00131 TRACE("(%p)->(%p)\n", This, p); 00132 00133 *p = GetDeviceCaps(get_display_dc(), BITSPIXEL); 00134 return S_OK; 00135 } 00136 00137 static HRESULT WINAPI HTMLScreen_put_bufferDepth(IHTMLScreen *iface, LONG v) 00138 { 00139 HTMLScreen *This = HTMLSCREEN_THIS(iface); 00140 FIXME("(%p)->(%d)\n", This, v); 00141 return E_NOTIMPL; 00142 } 00143 00144 static HRESULT WINAPI HTMLScreen_get_bufferDepth(IHTMLScreen *iface, LONG *p) 00145 { 00146 HTMLScreen *This = HTMLSCREEN_THIS(iface); 00147 FIXME("(%p)->(%p)\n", This, p); 00148 return E_NOTIMPL; 00149 } 00150 00151 static HRESULT WINAPI HTMLScreen_get_width(IHTMLScreen *iface, LONG *p) 00152 { 00153 HTMLScreen *This = HTMLSCREEN_THIS(iface); 00154 00155 TRACE("(%p)->(%p)\n", This, p); 00156 00157 *p = GetDeviceCaps(get_display_dc(), HORZRES); 00158 return S_OK; 00159 } 00160 00161 static HRESULT WINAPI HTMLScreen_get_height(IHTMLScreen *iface, LONG *p) 00162 { 00163 HTMLScreen *This = HTMLSCREEN_THIS(iface); 00164 00165 TRACE("(%p)->(%p)\n", This, p); 00166 00167 *p = GetDeviceCaps(get_display_dc(), VERTRES); 00168 return S_OK; 00169 } 00170 00171 static HRESULT WINAPI HTMLScreen_put_updateInterval(IHTMLScreen *iface, LONG v) 00172 { 00173 HTMLScreen *This = HTMLSCREEN_THIS(iface); 00174 FIXME("(%p)->(%d)\n", This, v); 00175 return E_NOTIMPL; 00176 } 00177 00178 static HRESULT WINAPI HTMLScreen_get_updateInterval(IHTMLScreen *iface, LONG *p) 00179 { 00180 HTMLScreen *This = HTMLSCREEN_THIS(iface); 00181 FIXME("(%p)->(%p)\n", This, p); 00182 return E_NOTIMPL; 00183 } 00184 00185 static HRESULT WINAPI HTMLScreen_get_availHeight(IHTMLScreen *iface, LONG *p) 00186 { 00187 HTMLScreen *This = HTMLSCREEN_THIS(iface); 00188 FIXME("(%p)->(%p)\n", This, p); 00189 return E_NOTIMPL; 00190 } 00191 00192 static HRESULT WINAPI HTMLScreen_get_availWidth(IHTMLScreen *iface, LONG *p) 00193 { 00194 HTMLScreen *This = HTMLSCREEN_THIS(iface); 00195 FIXME("(%p)->(%p)\n", This, p); 00196 return E_NOTIMPL; 00197 } 00198 00199 static HRESULT WINAPI HTMLScreen_get_fontSmoothingEnabled(IHTMLScreen *iface, VARIANT_BOOL *p) 00200 { 00201 HTMLScreen *This = HTMLSCREEN_THIS(iface); 00202 FIXME("(%p)->(%p)\n", This, p); 00203 return E_NOTIMPL; 00204 } 00205 00206 #undef HTMLSCREEN_THIS 00207 00208 static const IHTMLScreenVtbl HTMLSreenVtbl = { 00209 HTMLScreen_QueryInterface, 00210 HTMLScreen_AddRef, 00211 HTMLScreen_Release, 00212 HTMLScreen_GetTypeInfoCount, 00213 HTMLScreen_GetTypeInfo, 00214 HTMLScreen_GetIDsOfNames, 00215 HTMLScreen_Invoke, 00216 HTMLScreen_get_colorDepth, 00217 HTMLScreen_put_bufferDepth, 00218 HTMLScreen_get_bufferDepth, 00219 HTMLScreen_get_width, 00220 HTMLScreen_get_height, 00221 HTMLScreen_put_updateInterval, 00222 HTMLScreen_get_updateInterval, 00223 HTMLScreen_get_availHeight, 00224 HTMLScreen_get_availWidth, 00225 HTMLScreen_get_fontSmoothingEnabled 00226 }; 00227 00228 static const tid_t HTMLScreen_iface_tids[] = { 00229 IHTMLScreen_tid, 00230 0 00231 }; 00232 static dispex_static_data_t HTMLScreen_dispex = { 00233 NULL, 00234 DispHTMLScreen_tid, 00235 NULL, 00236 HTMLScreen_iface_tids 00237 }; 00238 00239 HRESULT HTMLScreen_Create(IHTMLScreen **ret) 00240 { 00241 HTMLScreen *screen; 00242 00243 screen = heap_alloc_zero(sizeof(HTMLScreen)); 00244 if(!screen) 00245 return E_OUTOFMEMORY; 00246 00247 screen->lpIHTMLScreenVtbl = &HTMLSreenVtbl; 00248 screen->ref = 1; 00249 00250 init_dispex(&screen->dispex, (IUnknown*)HTMLSCREEN(screen), &HTMLScreen_dispex); 00251 00252 *ret = HTMLSCREEN(screen); 00253 return S_OK; 00254 } Generated on Mon May 28 2012 04:24:38 for ReactOS by
1.7.6.1
|