Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 1 | /* DirectDrawClipper implementation |
| 2 | * |
| 3 | * Copyright 2000 Marcus Meissner |
Alexandre Julliard | d6c0f9f | 2001-01-04 22:44:55 +0000 | [diff] [blame] | 4 | * Copyright 2000 TransGaming Technologies Inc. |
Alexandre Julliard | 0799c1a | 2002-03-09 23:29:33 +0000 | [diff] [blame] | 5 | * |
| 6 | * This library is free software; you can redistribute it and/or |
| 7 | * modify it under the terms of the GNU Lesser General Public |
| 8 | * License as published by the Free Software Foundation; either |
| 9 | * version 2.1 of the License, or (at your option) any later version. |
| 10 | * |
| 11 | * This library is distributed in the hope that it will be useful, |
| 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 14 | * Lesser General Public License for more details. |
| 15 | * |
| 16 | * You should have received a copy of the GNU Lesser General Public |
| 17 | * License along with this library; if not, write to the Free Software |
| 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 19 | */ |
| 20 | |
| 21 | #include "config.h" |
Alexandre Julliard | d6c0f9f | 2001-01-04 22:44:55 +0000 | [diff] [blame] | 22 | |
Alexandre Julliard | e37c6e1 | 2003-09-05 23:08:26 +0000 | [diff] [blame] | 23 | #include <stdarg.h> |
Alexandre Julliard | d6c0f9f | 2001-01-04 22:44:55 +0000 | [diff] [blame] | 24 | #include <stdlib.h> |
James Juran | f4d5fef | 2001-01-26 20:43:40 +0000 | [diff] [blame] | 25 | #include <string.h> |
Patrik Stridvall | 33929be | 2001-07-18 21:04:23 +0000 | [diff] [blame] | 26 | |
Alexandre Julliard | e37c6e1 | 2003-09-05 23:08:26 +0000 | [diff] [blame] | 27 | #include "windef.h" |
| 28 | #include "winbase.h" |
| 29 | #include "wingdi.h" |
Patrik Stridvall | 33929be | 2001-07-18 21:04:23 +0000 | [diff] [blame] | 30 | #include "ddraw.h" |
James Juran | f4d5fef | 2001-01-26 20:43:40 +0000 | [diff] [blame] | 31 | #include "winerror.h" |
Patrik Stridvall | 33929be | 2001-07-18 21:04:23 +0000 | [diff] [blame] | 32 | |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 33 | #include "ddraw_private.h" |
| 34 | |
Alexandre Julliard | 0799c1a | 2002-03-09 23:29:33 +0000 | [diff] [blame] | 35 | #include "wine/debug.h" |
Patrik Stridvall | 33929be | 2001-07-18 21:04:23 +0000 | [diff] [blame] | 36 | |
Alexandre Julliard | 0799c1a | 2002-03-09 23:29:33 +0000 | [diff] [blame] | 37 | WINE_DEFAULT_DEBUG_CHANNEL(ddraw); |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 38 | |
| 39 | /****************************************************************************** |
Patrik Stridvall | d9b9c4c | 2001-06-11 20:14:43 +0000 | [diff] [blame] | 40 | * DirectDrawCreateClipper (DDRAW.@) |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 41 | */ |
Alexandre Julliard | d6c0f9f | 2001-01-04 22:44:55 +0000 | [diff] [blame] | 42 | |
Dmitry Timoshkov | 4625628 | 2005-05-27 20:17:35 +0000 | [diff] [blame] | 43 | static const IDirectDrawClipperVtbl DDRAW_Clipper_VTable; |
Alexandre Julliard | d6c0f9f | 2001-01-04 22:44:55 +0000 | [diff] [blame] | 44 | |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 45 | HRESULT WINAPI DirectDrawCreateClipper( |
| 46 | DWORD dwFlags, LPDIRECTDRAWCLIPPER *lplpDDClipper, LPUNKNOWN pUnkOuter |
| 47 | ) { |
Alexandre Julliard | d6c0f9f | 2001-01-04 22:44:55 +0000 | [diff] [blame] | 48 | IDirectDrawClipperImpl* This; |
| 49 | TRACE("(%08lx,%p,%p)\n", dwFlags, lplpDDClipper, pUnkOuter); |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 50 | |
Alexandre Julliard | d6c0f9f | 2001-01-04 22:44:55 +0000 | [diff] [blame] | 51 | if (pUnkOuter != NULL) return CLASS_E_NOAGGREGATION; |
| 52 | |
| 53 | This = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, |
| 54 | sizeof(IDirectDrawClipperImpl)); |
| 55 | if (This == NULL) return E_OUTOFMEMORY; |
| 56 | |
| 57 | ICOM_INIT_INTERFACE(This, IDirectDrawClipper, DDRAW_Clipper_VTable); |
| 58 | This->ref = 1; |
Vincent Béron | 9a62491 | 2002-05-31 23:06:46 +0000 | [diff] [blame] | 59 | This->hWnd = 0; |
Alexandre Julliard | d6c0f9f | 2001-01-04 22:44:55 +0000 | [diff] [blame] | 60 | This->ddraw_owner = NULL; |
| 61 | |
| 62 | *lplpDDClipper = ICOM_INTERFACE(This, IDirectDrawClipper); |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 63 | return DD_OK; |
| 64 | } |
| 65 | |
Alexandre Julliard | d6c0f9f | 2001-01-04 22:44:55 +0000 | [diff] [blame] | 66 | /* This is the classfactory implementation. */ |
| 67 | HRESULT DDRAW_CreateDirectDrawClipper(IUnknown* pUnkOuter, REFIID riid, |
| 68 | LPVOID* ppObj) |
| 69 | { |
| 70 | HRESULT hr; |
| 71 | LPDIRECTDRAWCLIPPER pClip; |
| 72 | |
| 73 | hr = DirectDrawCreateClipper(0, &pClip, pUnkOuter); |
| 74 | if (FAILED(hr)) return hr; |
| 75 | |
| 76 | hr = IDirectDrawClipper_QueryInterface(pClip, riid, ppObj); |
| 77 | IDirectDrawClipper_Release(pClip); |
| 78 | return hr; |
| 79 | } |
| 80 | |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 81 | /****************************************************************************** |
| 82 | * IDirectDrawClipper |
| 83 | */ |
Alexandre Julliard | d6c0f9f | 2001-01-04 22:44:55 +0000 | [diff] [blame] | 84 | HRESULT WINAPI Main_DirectDrawClipper_SetHwnd( |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 85 | LPDIRECTDRAWCLIPPER iface, DWORD dwFlags, HWND hWnd |
| 86 | ) { |
Alexandre Julliard | f5f7a18 | 2004-09-08 01:50:37 +0000 | [diff] [blame] | 87 | IDirectDrawClipperImpl *This = (IDirectDrawClipperImpl *)iface; |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 88 | |
Christian Costa | 967f11d | 2005-03-21 10:28:49 +0000 | [diff] [blame] | 89 | TRACE("(%p)->(0x%08lx,0x%08lx)\n", This, dwFlags, (DWORD)hWnd); |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 90 | if( dwFlags ) { |
| 91 | FIXME("dwFlags = 0x%08lx, not supported.\n",dwFlags); |
Vincent Béron | 9a62491 | 2002-05-31 23:06:46 +0000 | [diff] [blame] | 92 | return DDERR_INVALIDPARAMS; |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 93 | } |
| 94 | |
| 95 | This->hWnd = hWnd; |
| 96 | return DD_OK; |
| 97 | } |
| 98 | |
Alexandre Julliard | d6c0f9f | 2001-01-04 22:44:55 +0000 | [diff] [blame] | 99 | static void Main_DirectDrawClipper_Destroy(IDirectDrawClipperImpl* This) |
| 100 | { |
| 101 | if (This->ddraw_owner != NULL) |
| 102 | Main_DirectDraw_RemoveClipper(This->ddraw_owner, This); |
| 103 | |
| 104 | HeapFree(GetProcessHeap(), 0 ,This); |
| 105 | } |
| 106 | |
| 107 | void Main_DirectDrawClipper_ForceDestroy(IDirectDrawClipperImpl* This) |
| 108 | { |
| 109 | WARN("deleting clipper %p with refcnt %lu\n", This, This->ref); |
| 110 | Main_DirectDrawClipper_Destroy(This); |
| 111 | } |
| 112 | |
| 113 | ULONG WINAPI Main_DirectDrawClipper_Release(LPDIRECTDRAWCLIPPER iface) { |
Alexandre Julliard | f5f7a18 | 2004-09-08 01:50:37 +0000 | [diff] [blame] | 114 | IDirectDrawClipperImpl *This = (IDirectDrawClipperImpl *)iface; |
Paul Vriens | 202b340 | 2005-01-09 17:29:21 +0000 | [diff] [blame] | 115 | ULONG ref = InterlockedDecrement(&This->ref); |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 116 | |
Paul Vriens | 202b340 | 2005-01-09 17:29:21 +0000 | [diff] [blame] | 117 | TRACE("(%p)->() decrementing from %lu.\n", This, ref + 1); |
| 118 | |
| 119 | if (ref == 0) |
Alexandre Julliard | d6c0f9f | 2001-01-04 22:44:55 +0000 | [diff] [blame] | 120 | { |
| 121 | Main_DirectDrawClipper_Destroy(This); |
| 122 | return 0; |
| 123 | } |
Paul Vriens | 202b340 | 2005-01-09 17:29:21 +0000 | [diff] [blame] | 124 | else return ref; |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 125 | } |
| 126 | |
Tobias Burnus | 998a827 | 2004-08-23 18:50:14 +0000 | [diff] [blame] | 127 | /*********************************************************************** |
| 128 | * IDirectDrawClipper::GetClipList |
| 129 | * |
| 130 | * Retrieve a copy of the clip list |
| 131 | * |
| 132 | * PARAMS |
| 133 | * lpRect Rectangle to be used to clip the clip list or NULL for the |
| 134 | * entire clip list |
| 135 | * lpClipList structure for the resulting copy of the clip list. |
| 136 | If NULL, fills lpdwSize up to the number of bytes necessary to hold |
| 137 | the entire clip. |
| 138 | * lpdwSize Size of resulting clip list; size of the buffer at lpClipList |
| 139 | or, if lpClipList is NULL, receives the required size of the buffer |
| 140 | in bytes |
| 141 | * RETURNS |
| 142 | * Either DD_OK or DDERR_* |
| 143 | */ |
Alexandre Julliard | d6c0f9f | 2001-01-04 22:44:55 +0000 | [diff] [blame] | 144 | HRESULT WINAPI Main_DirectDrawClipper_GetClipList( |
Tobias Burnus | 998a827 | 2004-08-23 18:50:14 +0000 | [diff] [blame] | 145 | LPDIRECTDRAWCLIPPER iface, LPRECT lpRect, LPRGNDATA lpClipList, |
Robert Shearman | 9e2e594 | 2004-08-24 20:14:26 +0000 | [diff] [blame] | 146 | LPDWORD lpdwSize) |
| 147 | { |
Alexandre Julliard | f5f7a18 | 2004-09-08 01:50:37 +0000 | [diff] [blame] | 148 | IDirectDrawClipperImpl *This = (IDirectDrawClipperImpl *)iface; |
Robert Shearman | 9e2e594 | 2004-08-24 20:14:26 +0000 | [diff] [blame] | 149 | |
Christian Costa | 967f11d | 2005-03-21 10:28:49 +0000 | [diff] [blame] | 150 | TRACE("(%p,%p,%p,%p)\n", This, lpRect, lpClipList, lpdwSize); |
Robert Shearman | 9e2e594 | 2004-08-24 20:14:26 +0000 | [diff] [blame] | 151 | |
| 152 | if (This->hWnd) |
| 153 | { |
| 154 | HDC hDC = GetDCEx(This->hWnd, NULL, DCX_WINDOW); |
| 155 | if (hDC) |
| 156 | { |
| 157 | HRGN hRgn = CreateRectRgn(0,0,0,0); |
| 158 | if (GetRandomRgn(hDC, hRgn, SYSRGN)) |
| 159 | { |
Alexandre Julliard | 860c4fe | 2005-09-27 09:34:24 +0000 | [diff] [blame] | 160 | if (GetVersion() & 0x80000000) |
| 161 | { |
| 162 | /* map region to screen coordinates */ |
| 163 | POINT org; |
| 164 | GetDCOrgEx( hDC, &org ); |
| 165 | OffsetRgn( hRgn, org.x, org.y ); |
| 166 | } |
Robert Shearman | 9e2e594 | 2004-08-24 20:14:26 +0000 | [diff] [blame] | 167 | if (lpRect) |
| 168 | { |
| 169 | HRGN hRgnClip = CreateRectRgn(lpRect->left, lpRect->top, |
| 170 | lpRect->right, lpRect->bottom); |
| 171 | CombineRgn(hRgn, hRgn, hRgnClip, RGN_AND); |
| 172 | DeleteObject(hRgnClip); |
| 173 | } |
| 174 | *lpdwSize = GetRegionData(hRgn, *lpdwSize, lpClipList); |
| 175 | } |
| 176 | DeleteObject(hRgn); |
| 177 | ReleaseDC(This->hWnd, hDC); |
| 178 | } |
| 179 | return DD_OK; |
| 180 | } |
| 181 | else |
| 182 | { |
| 183 | static int warned = 0; |
| 184 | if (warned++ < 10) |
| 185 | FIXME("(%p,%p,%p,%p),stub!\n",This,lpRect,lpClipList,lpdwSize); |
| 186 | if (lpdwSize) *lpdwSize=0; |
| 187 | return DDERR_NOCLIPLIST; |
| 188 | } |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 189 | } |
| 190 | |
Tobias Burnus | 998a827 | 2004-08-23 18:50:14 +0000 | [diff] [blame] | 191 | /*********************************************************************** |
| 192 | * IDirectDrawClipper::SetClipList |
| 193 | * |
| 194 | * Sets or deletes (if lprgn is NULL) the clip list |
| 195 | * |
| 196 | * PARAMS |
| 197 | * lprgn Pointer to a LRGNDATA structure or NULL |
| 198 | * dwFlags not used, must be 0 |
| 199 | * RETURNS |
| 200 | * Either DD_OK or DDERR_* |
| 201 | */ |
Alexandre Julliard | d6c0f9f | 2001-01-04 22:44:55 +0000 | [diff] [blame] | 202 | HRESULT WINAPI Main_DirectDrawClipper_SetClipList( |
Tobias Burnus | 998a827 | 2004-08-23 18:50:14 +0000 | [diff] [blame] | 203 | LPDIRECTDRAWCLIPPER iface,LPRGNDATA lprgn,DWORD dwFlag |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 204 | ) { |
Alexandre Julliard | f5f7a18 | 2004-09-08 01:50:37 +0000 | [diff] [blame] | 205 | IDirectDrawClipperImpl *This = (IDirectDrawClipperImpl *)iface; |
Tobias Burnus | 998a827 | 2004-08-23 18:50:14 +0000 | [diff] [blame] | 206 | static int warned = 0; |
| 207 | if (warned++ < 10 || lprgn == NULL) |
| 208 | FIXME("(%p,%p,%ld),stub!\n",This,lprgn,dwFlag); |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 209 | return DD_OK; |
| 210 | } |
| 211 | |
Alexandre Julliard | d6c0f9f | 2001-01-04 22:44:55 +0000 | [diff] [blame] | 212 | HRESULT WINAPI Main_DirectDrawClipper_QueryInterface( |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 213 | LPDIRECTDRAWCLIPPER iface, REFIID riid, LPVOID* ppvObj |
| 214 | ) { |
Alexandre Julliard | f5f7a18 | 2004-09-08 01:50:37 +0000 | [diff] [blame] | 215 | IDirectDrawClipperImpl *This = (IDirectDrawClipperImpl *)iface; |
Alexandre Julliard | d6c0f9f | 2001-01-04 22:44:55 +0000 | [diff] [blame] | 216 | |
| 217 | if (IsEqualGUID(&IID_IUnknown, riid) |
| 218 | || IsEqualGUID(&IID_IDirectDrawClipper, riid)) |
| 219 | { |
| 220 | *ppvObj = ICOM_INTERFACE(This, IDirectDrawClipper); |
Paul Vriens | 202b340 | 2005-01-09 17:29:21 +0000 | [diff] [blame] | 221 | InterlockedIncrement(&This->ref); |
Alexandre Julliard | d6c0f9f | 2001-01-04 22:44:55 +0000 | [diff] [blame] | 222 | return S_OK; |
| 223 | } |
| 224 | else |
| 225 | { |
| 226 | return E_NOINTERFACE; |
| 227 | } |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 228 | } |
| 229 | |
Alexandre Julliard | d6c0f9f | 2001-01-04 22:44:55 +0000 | [diff] [blame] | 230 | ULONG WINAPI Main_DirectDrawClipper_AddRef( LPDIRECTDRAWCLIPPER iface ) |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 231 | { |
Alexandre Julliard | f5f7a18 | 2004-09-08 01:50:37 +0000 | [diff] [blame] | 232 | IDirectDrawClipperImpl *This = (IDirectDrawClipperImpl *)iface; |
Paul Vriens | 202b340 | 2005-01-09 17:29:21 +0000 | [diff] [blame] | 233 | ULONG ref = InterlockedIncrement(&This->ref); |
| 234 | |
| 235 | TRACE("(%p)->() incrementing from %lu.\n", This, ref - 1); |
| 236 | |
| 237 | return ref; |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 238 | } |
| 239 | |
Alexandre Julliard | d6c0f9f | 2001-01-04 22:44:55 +0000 | [diff] [blame] | 240 | HRESULT WINAPI Main_DirectDrawClipper_GetHWnd( |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 241 | LPDIRECTDRAWCLIPPER iface, HWND* hWndPtr |
| 242 | ) { |
Alexandre Julliard | f5f7a18 | 2004-09-08 01:50:37 +0000 | [diff] [blame] | 243 | IDirectDrawClipperImpl *This = (IDirectDrawClipperImpl *)iface; |
Christian Costa | 967f11d | 2005-03-21 10:28:49 +0000 | [diff] [blame] | 244 | TRACE("(%p)->(%p)\n", This, hWndPtr); |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 245 | |
Vincent Béron | 9a62491 | 2002-05-31 23:06:46 +0000 | [diff] [blame] | 246 | *hWndPtr = This->hWnd; |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 247 | |
| 248 | return DD_OK; |
| 249 | } |
| 250 | |
Alexandre Julliard | d6c0f9f | 2001-01-04 22:44:55 +0000 | [diff] [blame] | 251 | HRESULT WINAPI Main_DirectDrawClipper_Initialize( |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 252 | LPDIRECTDRAWCLIPPER iface, LPDIRECTDRAW lpDD, DWORD dwFlags |
| 253 | ) { |
Alexandre Julliard | d6c0f9f | 2001-01-04 22:44:55 +0000 | [diff] [blame] | 254 | IDirectDrawImpl* pOwner; |
Alexandre Julliard | f5f7a18 | 2004-09-08 01:50:37 +0000 | [diff] [blame] | 255 | IDirectDrawClipperImpl *This = (IDirectDrawClipperImpl *)iface; |
Christian Costa | 967f11d | 2005-03-21 10:28:49 +0000 | [diff] [blame] | 256 | TRACE("(%p)->(%p,0x%08lx)\n", This, lpDD, dwFlags); |
Alexandre Julliard | d6c0f9f | 2001-01-04 22:44:55 +0000 | [diff] [blame] | 257 | |
| 258 | if (This->ddraw_owner != NULL) return DDERR_ALREADYINITIALIZED; |
| 259 | |
| 260 | pOwner = ICOM_OBJECT(IDirectDrawImpl, IDirectDraw, lpDD); |
| 261 | This->ddraw_owner = pOwner; |
| 262 | Main_DirectDraw_AddClipper(pOwner, This); |
| 263 | |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 264 | return DD_OK; |
| 265 | } |
| 266 | |
Alexandre Julliard | d6c0f9f | 2001-01-04 22:44:55 +0000 | [diff] [blame] | 267 | HRESULT WINAPI Main_DirectDrawClipper_IsClipListChanged( |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 268 | LPDIRECTDRAWCLIPPER iface, BOOL* lpbChanged |
| 269 | ) { |
Alexandre Julliard | f5f7a18 | 2004-09-08 01:50:37 +0000 | [diff] [blame] | 270 | IDirectDrawClipperImpl *This = (IDirectDrawClipperImpl *)iface; |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 271 | FIXME("(%p)->(%p),stub!\n",This,lpbChanged); |
Alexandre Julliard | d6c0f9f | 2001-01-04 22:44:55 +0000 | [diff] [blame] | 272 | |
| 273 | /* XXX What is safest? */ |
| 274 | *lpbChanged = FALSE; |
| 275 | |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 276 | return DD_OK; |
| 277 | } |
| 278 | |
Dmitry Timoshkov | 4625628 | 2005-05-27 20:17:35 +0000 | [diff] [blame] | 279 | static const IDirectDrawClipperVtbl DDRAW_Clipper_VTable = |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 280 | { |
Alexandre Julliard | d6c0f9f | 2001-01-04 22:44:55 +0000 | [diff] [blame] | 281 | Main_DirectDrawClipper_QueryInterface, |
| 282 | Main_DirectDrawClipper_AddRef, |
| 283 | Main_DirectDrawClipper_Release, |
| 284 | Main_DirectDrawClipper_GetClipList, |
| 285 | Main_DirectDrawClipper_GetHWnd, |
| 286 | Main_DirectDrawClipper_Initialize, |
| 287 | Main_DirectDrawClipper_IsClipListChanged, |
| 288 | Main_DirectDrawClipper_SetClipList, |
| 289 | Main_DirectDrawClipper_SetHwnd |
Marcus Meissner | 10ad97c | 2000-04-09 14:30:50 +0000 | [diff] [blame] | 290 | }; |