mirror of
https://github.com/reactos/reactos.git
synced 2025-05-25 12:14:32 +00:00
Some Clipper Code.
svn path=/trunk/; revision=27043
This commit is contained in:
parent
6a3725e689
commit
d4c1add2a8
9 changed files with 217 additions and 96 deletions
10
reactos/dll/directx/ddraw/Clipper/clipper.h
Normal file
10
reactos/dll/directx/ddraw/Clipper/clipper.h
Normal file
|
@ -0,0 +1,10 @@
|
|||
HRESULT WINAPI DirectDrawClipper_QueryInterface (LPDIRECTDRAWCLIPPER, REFIID, LPVOID*);
|
||||
ULONG WINAPI DirectDrawClipper_Release(LPDIRECTDRAWCLIPPER);
|
||||
ULONG WINAPI DirectDrawClipper_AddRef (LPDIRECTDRAWCLIPPER);
|
||||
HRESULT WINAPI DirectDrawClipper_Initialize(LPDIRECTDRAWCLIPPER, LPDIRECTDRAW, DWORD);
|
||||
HRESULT WINAPI DirectDrawClipper_SetHwnd( LPDIRECTDRAWCLIPPER, DWORD, HWND);
|
||||
HRESULT WINAPI DirectDrawClipper_GetClipList(LPDIRECTDRAWCLIPPER, LPRECT, LPRGNDATA,LPDWORD);
|
||||
HRESULT WINAPI DirectDrawClipper_SetClipList(LPDIRECTDRAWCLIPPER,LPRGNDATA,DWORD);
|
||||
HRESULT WINAPI DirectDrawClipper_QueryInterface(LPDIRECTDRAWCLIPPER, REFIID, LPVOID*);
|
||||
HRESULT WINAPI DirectDrawClipper_GetHWnd(LPDIRECTDRAWCLIPPER, HWND*);
|
||||
HRESULT WINAPI DirectDrawClipper_IsClipListChanged(LPDIRECTDRAWCLIPPER, BOOL* lpbChanged);
|
143
reactos/dll/directx/ddraw/Clipper/clipper_main.c
Normal file
143
reactos/dll/directx/ddraw/Clipper/clipper_main.c
Normal file
|
@ -0,0 +1,143 @@
|
|||
/* $Id$
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS DirectX
|
||||
* FILE: ddraw/clipper/clipper_stubs.c
|
||||
* PURPOSE: IDirectDrawClipper Implementation
|
||||
* PROGRAMMER: Maarten Bosma
|
||||
*
|
||||
*/
|
||||
|
||||
#include "rosdraw.h"
|
||||
|
||||
HRESULT WINAPI
|
||||
DirectDrawClipper_QueryInterface (LPDIRECTDRAWCLIPPER iface,
|
||||
REFIID id, LPVOID *obj)
|
||||
{
|
||||
if(!iface)
|
||||
return DDERR_INVALIDOBJECT;
|
||||
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
DirectDrawClipper_Initialize (LPDIRECTDRAWCLIPPER iface,
|
||||
LPDIRECTDRAW lpDD, DWORD dwFlags)
|
||||
{
|
||||
LPDDRAWI_DDRAWCLIPPER_INT This = (LPDDRAWI_DDRAWCLIPPER_INT)iface;
|
||||
LPDDRAWI_DIRECTDRAW_INT DDraw = (LPDDRAWI_DIRECTDRAW_INT)lpDD;
|
||||
|
||||
DX_WINDBG_trace();
|
||||
|
||||
if(!This)
|
||||
return DDERR_INVALIDOBJECT;
|
||||
|
||||
if(This->dwIntRefCnt)
|
||||
return DDERR_ALREADYINITIALIZED;
|
||||
|
||||
This->lpVtbl = (LPVOID)&DirectDrawClipper_Vtable;
|
||||
This->dwIntRefCnt = 1;
|
||||
|
||||
DxHeapMemAlloc(This->lpLcl, sizeof(LPDDRAWI_DDRAWCLIPPER_LCL));
|
||||
//This->lpLcl->lpClipMore
|
||||
This->lpLcl->lpDD_int = DDraw;
|
||||
This->lpLcl->lpGbl->dwRefCnt = 1;
|
||||
This->lpLcl->pAddrefedThisOwner = (IUnknown*)DDraw;
|
||||
|
||||
// FIXME: Implement Linking and share global object
|
||||
DxHeapMemAlloc(This->lpLcl->lpGbl, sizeof(LPDDRAWI_DDRAWCLIPPER_GBL));
|
||||
This->lpLcl->lpGbl->dwProcessId = GetCurrentProcessId();
|
||||
|
||||
return DD_OK;
|
||||
}
|
||||
|
||||
ULONG WINAPI
|
||||
DirectDrawClipper_Release(LPDIRECTDRAWCLIPPER iface)
|
||||
{
|
||||
LPDDRAWI_DDRAWCLIPPER_INT This = (LPDDRAWI_DDRAWCLIPPER_INT)iface;
|
||||
if(!This)
|
||||
return DDERR_INVALIDOBJECT;
|
||||
|
||||
DX_WINDBG_trace();
|
||||
|
||||
if (iface!=NULL)
|
||||
{
|
||||
This->lpLcl->dwLocalRefCnt--;
|
||||
This->dwIntRefCnt--;
|
||||
|
||||
if (This->lpLcl->lpGbl)
|
||||
This->lpLcl->lpGbl->dwRefCnt--;
|
||||
}
|
||||
|
||||
return This->dwIntRefCnt;
|
||||
}
|
||||
|
||||
ULONG WINAPI
|
||||
DirectDrawClipper_AddRef (LPDIRECTDRAWCLIPPER iface)
|
||||
{
|
||||
LPDDRAWI_DDRAWCLIPPER_INT This = (LPDDRAWI_DDRAWCLIPPER_INT)iface;
|
||||
if(!This)
|
||||
return DDERR_INVALIDOBJECT;
|
||||
|
||||
DX_WINDBG_trace();
|
||||
|
||||
if (iface!=NULL)
|
||||
{
|
||||
This->dwIntRefCnt++;
|
||||
This->lpLcl->dwLocalRefCnt++;
|
||||
if (This->lpLcl->lpGbl)
|
||||
This->lpLcl->lpGbl->dwRefCnt++;
|
||||
}
|
||||
return This->dwIntRefCnt;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
DirectDrawClipper_SetHwnd( LPDIRECTDRAWCLIPPER iface,
|
||||
DWORD dwFlags,
|
||||
HWND hWnd)
|
||||
{
|
||||
LPDDRAWI_DDRAWCLIPPER_INT This = (LPDDRAWI_DDRAWCLIPPER_INT)iface;
|
||||
|
||||
if(!This)
|
||||
return DDERR_INVALIDOBJECT;
|
||||
|
||||
if(!IsWindow(hWnd))
|
||||
return DDERR_INVALIDPARAMS;
|
||||
|
||||
// TODO: check flags
|
||||
|
||||
This->lpLcl->lpGbl->hWnd = (ULONG_PTR)hWnd;
|
||||
This->lpLcl->lpGbl->dwFlags = dwFlags;
|
||||
|
||||
return DD_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
DirectDrawClipper_GetHWnd( LPDIRECTDRAWCLIPPER iface,
|
||||
HWND* hWndPtr)
|
||||
{
|
||||
LPDDRAWI_DDRAWCLIPPER_INT This = (LPDDRAWI_DDRAWCLIPPER_INT)iface;
|
||||
|
||||
if(!This)
|
||||
return DDERR_INVALIDOBJECT;
|
||||
|
||||
if(!hWndPtr)
|
||||
return DDERR_INVALIDPARAMS;
|
||||
|
||||
*hWndPtr = (HWND)This->lpLcl->lpGbl->hWnd;
|
||||
|
||||
return DD_OK;
|
||||
}
|
||||
|
||||
IDirectDrawClipperVtbl DirectDrawClipper_Vtable =
|
||||
{
|
||||
DirectDrawClipper_QueryInterface,
|
||||
DirectDrawClipper_AddRef,
|
||||
DirectDrawClipper_Release,
|
||||
DirectDrawClipper_GetClipList,
|
||||
DirectDrawClipper_GetHWnd,
|
||||
DirectDrawClipper_Initialize,
|
||||
DirectDrawClipper_IsClipListChanged,
|
||||
DirectDrawClipper_SetClipList,
|
||||
DirectDrawClipper_SetHwnd
|
||||
};
|
|
@ -10,43 +10,6 @@
|
|||
|
||||
#include "rosdraw.h"
|
||||
|
||||
|
||||
ULONG WINAPI
|
||||
DirectDrawClipper_Release(LPDIRECTDRAWCLIPPER iface)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
ULONG WINAPI
|
||||
DirectDrawClipper_AddRef (LPDIRECTDRAWCLIPPER iface)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
DirectDrawClipper_Initialize( LPDIRECTDRAWCLIPPER iface,
|
||||
LPDIRECTDRAW lpDD,
|
||||
DWORD dwFlags)
|
||||
{
|
||||
/* FIXME not implment */
|
||||
DX_WINDBG_trace();
|
||||
DX_STUB_DD_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
DirectDrawClipper_SetHwnd( LPDIRECTDRAWCLIPPER iface,
|
||||
DWORD dwFlags,
|
||||
HWND hWnd)
|
||||
{
|
||||
/* FIXME not implment */
|
||||
DX_WINDBG_trace();
|
||||
DX_STUB_DD_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
DirectDrawClipper_GetClipList( LPDIRECTDRAWCLIPPER iface,
|
||||
LPRECT lpRect,
|
||||
|
@ -66,23 +29,6 @@ DirectDrawClipper_SetClipList( LPDIRECTDRAWCLIPPER iface,
|
|||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
DirectDrawClipper_QueryInterface( LPDIRECTDRAWCLIPPER iface,
|
||||
REFIID riid,
|
||||
LPVOID* ppvObj)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
DirectDrawClipper_GetHWnd( LPDIRECTDRAWCLIPPER iface,
|
||||
HWND* hWndPtr)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
DirectDrawClipper_IsClipListChanged( LPDIRECTDRAWCLIPPER iface,
|
||||
BOOL* lpbChanged)
|
||||
|
@ -90,16 +36,3 @@ DirectDrawClipper_IsClipListChanged( LPDIRECTDRAWCLIPPER iface,
|
|||
DX_WINDBG_trace();
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
IDirectDrawClipperVtbl DirectDrawClipper_Vtable =
|
||||
{
|
||||
DirectDrawClipper_QueryInterface,
|
||||
DirectDrawClipper_AddRef,
|
||||
DirectDrawClipper_Release,
|
||||
DirectDrawClipper_GetClipList,
|
||||
DirectDrawClipper_GetHWnd,
|
||||
DirectDrawClipper_Initialize,
|
||||
DirectDrawClipper_IsClipListChanged,
|
||||
DirectDrawClipper_SetClipList,
|
||||
DirectDrawClipper_SetHwnd
|
||||
};
|
||||
|
|
|
@ -57,9 +57,6 @@ Main_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7 iface)
|
|||
DX_STUB;
|
||||
}
|
||||
|
||||
/*
|
||||
* Status: Implentation removed due to rewrite
|
||||
*/
|
||||
HRESULT WINAPI
|
||||
Main_DirectDraw_GetCaps(LPDIRECTDRAW7 iface, LPDDCAPS pDriverCaps,
|
||||
LPDDCAPS pHELCaps)
|
||||
|
|
|
@ -354,6 +354,65 @@ Main_DDrawSurface_GetCaps(LPDIRECTDRAWSURFACE7 iface, LPDDSCAPS2 pCaps)
|
|||
return DD_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
Main_DDrawSurface_GetClipper(LPDIRECTDRAWSURFACE7 iface,
|
||||
LPDIRECTDRAWCLIPPER* ppClipper)
|
||||
{
|
||||
LPDDRAWI_DDRAWSURFACE_INT This = (LPDDRAWI_DDRAWSURFACE_INT)iface;
|
||||
|
||||
DX_WINDBG_trace();
|
||||
|
||||
if (This == NULL)
|
||||
{
|
||||
return DDERR_INVALIDOBJECT;
|
||||
}
|
||||
|
||||
if (ppClipper == NULL)
|
||||
{
|
||||
return DDERR_INVALIDPARAMS;
|
||||
}
|
||||
|
||||
if (This->lpLcl->lp16DDClipper == NULL)
|
||||
{
|
||||
return DDERR_NOCLIPPERATTACHED;
|
||||
}
|
||||
|
||||
*ppClipper = (LPDIRECTDRAWCLIPPER)This->lpLcl->lp16DDClipper;
|
||||
|
||||
return DD_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
Main_DDrawSurface_SetClipper (LPDIRECTDRAWSURFACE7 iface,
|
||||
LPDIRECTDRAWCLIPPER pDDClipper)
|
||||
{
|
||||
LPDDRAWI_DDRAWSURFACE_INT This = (LPDDRAWI_DDRAWSURFACE_INT)iface;
|
||||
|
||||
DX_WINDBG_trace();
|
||||
|
||||
if (This == NULL)
|
||||
{
|
||||
return DDERR_INVALIDOBJECT;
|
||||
}
|
||||
|
||||
if(pDDClipper == NULL)
|
||||
{
|
||||
if(!This->lpLcl->lp16DDClipper)
|
||||
return DDERR_NOCLIPPERATTACHED;
|
||||
|
||||
DirectDrawClipper_Release((LPDIRECTDRAWCLIPPER)This->lpLcl->lp16DDClipper);
|
||||
This->lpLcl->lp16DDClipper = NULL;
|
||||
return DD_OK;
|
||||
}
|
||||
|
||||
// FIXME: Check Surface type and return DDERR_INVALIDSURFACETYPE
|
||||
|
||||
DirectDrawClipper_AddRef((LPDIRECTDRAWCLIPPER)pDDClipper);
|
||||
This->lpLcl->lp16DDClipper = (LPDDRAWI_DDRAWCLIPPER_INT)pDDClipper;
|
||||
|
||||
return DD_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
Main_DDrawSurface_GetDC(LPDIRECTDRAWSURFACE7 iface, HDC *phDC)
|
||||
{
|
||||
|
|
|
@ -115,15 +115,6 @@ Main_DDrawSurface_FreePrivateData(LPDIRECTDRAWSURFACE7 iface, REFGUID tag)
|
|||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
Main_DDrawSurface_GetClipper(LPDIRECTDRAWSURFACE7 iface,
|
||||
LPDIRECTDRAWCLIPPER* ppClipper)
|
||||
{
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
Main_DDrawSurface_GetColorKey(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags,
|
||||
LPDDCOLORKEY pCKey)
|
||||
|
@ -229,17 +220,6 @@ Main_DDrawSurface_PageUnlock(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags)
|
|||
DX_STUB;
|
||||
}
|
||||
|
||||
|
||||
HRESULT WINAPI
|
||||
Main_DDrawSurface_SetClipper (LPDIRECTDRAWSURFACE7 iface,
|
||||
LPDIRECTDRAWCLIPPER pDDClipper)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
||||
HRESULT WINAPI
|
||||
Main_DDrawSurface_SetPalette (LPDIRECTDRAWSURFACE7 iface,
|
||||
LPDIRECTDRAWPALETTE pPalette)
|
||||
|
|
|
@ -37,7 +37,8 @@
|
|||
<file>createsurface.c</file>
|
||||
</directory>
|
||||
<directory name="Clipper">
|
||||
<file>clipper_stubs.c</file>
|
||||
<file>clipper_stubs.c</file>
|
||||
<file>clipper_main.c</file>
|
||||
</directory>
|
||||
<directory name="Color">
|
||||
<file>color_stubs.c</file>
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
#include "Ddraw/ddraw.h"
|
||||
#include "Surface/surface.h"
|
||||
#include "Clipper/clipper.h"
|
||||
|
||||
/* DirectDraw startup code only internal use */
|
||||
extern DDRAWI_DIRECTDRAW_GBL ddgbl;
|
||||
|
|
|
@ -8,9 +8,7 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include <windows.h>
|
||||
#include "rosdraw.h"
|
||||
#include "d3dhal.h"
|
||||
#include "ddrawgdi.h"
|
||||
|
||||
DDRAWI_DIRECTDRAW_GBL ddgbl;
|
||||
|
@ -555,9 +553,8 @@ StartDirectDrawHal(LPDIRECTDRAW iface, BOOL reenable)
|
|||
|
||||
memcpy(&ddgbl.ddCaps, &mHALInfo.ddCaps,sizeof(DDCORECAPS));
|
||||
|
||||
This->lpLcl->lpGbl->dwNumFourCC = mHALInfo.ddCaps.dwNumFourCCCodes;
|
||||
This->lpLcl->lpGbl->lpdwFourCC = mpFourCC;
|
||||
|
||||
This->lpLcl->lpGbl->dwNumFourCC = mHALInfo.ddCaps.dwNumFourCCCodes;
|
||||
This->lpLcl->lpGbl->lpdwFourCC = mpFourCC;
|
||||
This->lpLcl->lpGbl->dwMonitorFrequency = mHALInfo.dwMonitorFrequency;
|
||||
This->lpLcl->lpGbl->dwModeIndex = mHALInfo.dwModeIndex;
|
||||
This->lpLcl->lpGbl->dwNumModes = mHALInfo.dwNumModes;
|
||||
|
|
Loading…
Reference in a new issue