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

clipper_main.c
Go to the documentation of this file.
00001 /* $Id: clipper_main.c 36519 2008-09-25 19:26:09Z tkreuzer $
00002  *
00003  * COPYRIGHT:            See COPYING in the top level directory
00004  * PROJECT:              ReactOS DirectX
00005  * FILE:                 ddraw/clipper/clipper_stubs.c
00006  * PURPOSE:              IDirectDrawClipper Implementation
00007  * PROGRAMMER:           Maarten Bosma
00008  *
00009  */
00010 
00011 #include "rosdraw.h"
00012 
00013 HRESULT WINAPI
00014 DirectDrawClipper_QueryInterface (LPDIRECTDRAWCLIPPER iface,
00015                                 REFIID id,  LPVOID *obj)
00016 {
00017     if(!iface)
00018         return DDERR_INVALIDOBJECT;
00019 
00020     return E_NOINTERFACE;
00021 }
00022 
00023 HRESULT WINAPI
00024 DirectDrawClipper_Initialize (LPDIRECTDRAWCLIPPER iface,
00025                                LPDIRECTDRAW lpDD,  DWORD dwFlags)
00026 {
00027     LPDDRAWI_DDRAWCLIPPER_INT This = (LPDDRAWI_DDRAWCLIPPER_INT)iface;
00028     LPDDRAWI_DIRECTDRAW_INT DDraw = (LPDDRAWI_DIRECTDRAW_INT)lpDD;
00029 
00030     DX_WINDBG_trace();
00031 
00032     if(!This)
00033         return DDERR_INVALIDOBJECT;
00034 
00035     if(This->dwIntRefCnt)
00036         return DDERR_ALREADYINITIALIZED;
00037 
00038     This->lpVtbl = (LPVOID)&DirectDrawClipper_Vtable;
00039     This->dwIntRefCnt = 1;
00040 
00041     DxHeapMemAlloc(This->lpLcl, sizeof(DDRAWI_DDRAWCLIPPER_LCL));
00042     //This->lpLcl->lpClipMore
00043     This->lpLcl->lpDD_int = DDraw;
00044     This->lpLcl->lpGbl->dwRefCnt = 1;
00045     This->lpLcl->pAddrefedThisOwner = (IUnknown*)DDraw;
00046 
00047     // FIXME: Implement Linking and share global object
00048     DxHeapMemAlloc(This->lpLcl->lpGbl, sizeof(DDRAWI_DDRAWCLIPPER_GBL));
00049     This->lpLcl->lpGbl->dwProcessId = GetCurrentProcessId();
00050 
00051     return DD_OK;
00052 }
00053 
00054 ULONG WINAPI
00055 DirectDrawClipper_Release(LPDIRECTDRAWCLIPPER iface)
00056 {
00057     LPDDRAWI_DDRAWCLIPPER_INT This = (LPDDRAWI_DDRAWCLIPPER_INT)iface;
00058     if(!This)
00059         return DDERR_INVALIDOBJECT;
00060 
00061     DX_WINDBG_trace();
00062 
00063     if (iface!=NULL)
00064     {
00065         This->lpLcl->dwLocalRefCnt--;
00066         This->dwIntRefCnt--;
00067 
00068         if (This->lpLcl->lpGbl)
00069             This->lpLcl->lpGbl->dwRefCnt--;
00070     }
00071 
00072     return This->dwIntRefCnt;
00073 }
00074 
00075 ULONG WINAPI
00076 DirectDrawClipper_AddRef (LPDIRECTDRAWCLIPPER iface)
00077 {
00078     LPDDRAWI_DDRAWCLIPPER_INT This = (LPDDRAWI_DDRAWCLIPPER_INT)iface;
00079     if(!This)
00080         return DDERR_INVALIDOBJECT;
00081 
00082     DX_WINDBG_trace();
00083 
00084     if (iface!=NULL)
00085     {
00086         This->dwIntRefCnt++;
00087         This->lpLcl->dwLocalRefCnt++;
00088         if (This->lpLcl->lpGbl)
00089             This->lpLcl->lpGbl->dwRefCnt++;
00090     }
00091     return This->dwIntRefCnt;
00092 }
00093 
00094 HRESULT WINAPI
00095 DirectDrawClipper_SetHwnd( LPDIRECTDRAWCLIPPER iface,
00096                            DWORD dwFlags,
00097                            HWND hWnd)
00098 {
00099     LPDDRAWI_DDRAWCLIPPER_INT This = (LPDDRAWI_DDRAWCLIPPER_INT)iface;
00100 
00101     if(!This)
00102         return DDERR_INVALIDOBJECT;
00103 
00104     if(!IsWindow(hWnd))
00105         return DDERR_INVALIDPARAMS;
00106 
00107     // TODO: check flags
00108 
00109     This->lpLcl->lpGbl->hWnd = (ULONG_PTR)hWnd;
00110     This->lpLcl->lpGbl->dwFlags = dwFlags;
00111 
00112     return DD_OK;
00113 }
00114 
00115 HRESULT WINAPI
00116 DirectDrawClipper_GetHWnd( LPDIRECTDRAWCLIPPER iface,
00117                            HWND* hWndPtr)
00118 {
00119     LPDDRAWI_DDRAWCLIPPER_INT This = (LPDDRAWI_DDRAWCLIPPER_INT)iface;
00120 
00121     if(!This)
00122         return DDERR_INVALIDOBJECT;
00123 
00124     if(!hWndPtr)
00125         return DDERR_INVALIDPARAMS;
00126 
00127     *hWndPtr = (HWND)This->lpLcl->lpGbl->hWnd;
00128 
00129     return DD_OK;
00130 }
00131 
00132 IDirectDrawClipperVtbl DirectDrawClipper_Vtable =
00133 {
00134     DirectDrawClipper_QueryInterface,
00135     DirectDrawClipper_AddRef,
00136     DirectDrawClipper_Release,
00137     DirectDrawClipper_GetClipList,
00138     DirectDrawClipper_GetHWnd,
00139     DirectDrawClipper_Initialize,
00140     DirectDrawClipper_IsClipListChanged,
00141     DirectDrawClipper_SetClipList,
00142     DirectDrawClipper_SetHwnd
00143 };

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