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

htmlscreen.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 doxygen 1.7.6.1

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