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