mirror of
https://github.com/reactos/reactos.git
synced 2025-05-25 20:18:22 +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"
|
#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
|
HRESULT WINAPI
|
||||||
DirectDrawClipper_GetClipList( LPDIRECTDRAWCLIPPER iface,
|
DirectDrawClipper_GetClipList( LPDIRECTDRAWCLIPPER iface,
|
||||||
LPRECT lpRect,
|
LPRECT lpRect,
|
||||||
|
@ -66,23 +29,6 @@ DirectDrawClipper_SetClipList( LPDIRECTDRAWCLIPPER iface,
|
||||||
DX_STUB;
|
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
|
HRESULT WINAPI
|
||||||
DirectDrawClipper_IsClipListChanged( LPDIRECTDRAWCLIPPER iface,
|
DirectDrawClipper_IsClipListChanged( LPDIRECTDRAWCLIPPER iface,
|
||||||
BOOL* lpbChanged)
|
BOOL* lpbChanged)
|
||||||
|
@ -90,16 +36,3 @@ DirectDrawClipper_IsClipListChanged( LPDIRECTDRAWCLIPPER iface,
|
||||||
DX_WINDBG_trace();
|
DX_WINDBG_trace();
|
||||||
DX_STUB;
|
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;
|
DX_STUB;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Status: Implentation removed due to rewrite
|
|
||||||
*/
|
|
||||||
HRESULT WINAPI
|
HRESULT WINAPI
|
||||||
Main_DirectDraw_GetCaps(LPDIRECTDRAW7 iface, LPDDCAPS pDriverCaps,
|
Main_DirectDraw_GetCaps(LPDIRECTDRAW7 iface, LPDDCAPS pDriverCaps,
|
||||||
LPDDCAPS pHELCaps)
|
LPDDCAPS pHELCaps)
|
||||||
|
|
|
@ -354,6 +354,65 @@ Main_DDrawSurface_GetCaps(LPDIRECTDRAWSURFACE7 iface, LPDDSCAPS2 pCaps)
|
||||||
return DD_OK;
|
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
|
HRESULT WINAPI
|
||||||
Main_DDrawSurface_GetDC(LPDIRECTDRAWSURFACE7 iface, HDC *phDC)
|
Main_DDrawSurface_GetDC(LPDIRECTDRAWSURFACE7 iface, HDC *phDC)
|
||||||
{
|
{
|
||||||
|
|
|
@ -115,15 +115,6 @@ Main_DDrawSurface_FreePrivateData(LPDIRECTDRAWSURFACE7 iface, REFGUID tag)
|
||||||
|
|
||||||
DX_STUB;
|
DX_STUB;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT WINAPI
|
|
||||||
Main_DDrawSurface_GetClipper(LPDIRECTDRAWSURFACE7 iface,
|
|
||||||
LPDIRECTDRAWCLIPPER* ppClipper)
|
|
||||||
{
|
|
||||||
|
|
||||||
DX_STUB;
|
|
||||||
}
|
|
||||||
|
|
||||||
HRESULT WINAPI
|
HRESULT WINAPI
|
||||||
Main_DDrawSurface_GetColorKey(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags,
|
Main_DDrawSurface_GetColorKey(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags,
|
||||||
LPDDCOLORKEY pCKey)
|
LPDDCOLORKEY pCKey)
|
||||||
|
@ -229,17 +220,6 @@ Main_DDrawSurface_PageUnlock(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags)
|
||||||
DX_STUB;
|
DX_STUB;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
HRESULT WINAPI
|
|
||||||
Main_DDrawSurface_SetClipper (LPDIRECTDRAWSURFACE7 iface,
|
|
||||||
LPDIRECTDRAWCLIPPER pDDClipper)
|
|
||||||
{
|
|
||||||
DX_WINDBG_trace();
|
|
||||||
|
|
||||||
DX_STUB;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
HRESULT WINAPI
|
HRESULT WINAPI
|
||||||
Main_DDrawSurface_SetPalette (LPDIRECTDRAWSURFACE7 iface,
|
Main_DDrawSurface_SetPalette (LPDIRECTDRAWSURFACE7 iface,
|
||||||
LPDIRECTDRAWPALETTE pPalette)
|
LPDIRECTDRAWPALETTE pPalette)
|
||||||
|
|
|
@ -37,7 +37,8 @@
|
||||||
<file>createsurface.c</file>
|
<file>createsurface.c</file>
|
||||||
</directory>
|
</directory>
|
||||||
<directory name="Clipper">
|
<directory name="Clipper">
|
||||||
<file>clipper_stubs.c</file>
|
<file>clipper_stubs.c</file>
|
||||||
|
<file>clipper_main.c</file>
|
||||||
</directory>
|
</directory>
|
||||||
<directory name="Color">
|
<directory name="Color">
|
||||||
<file>color_stubs.c</file>
|
<file>color_stubs.c</file>
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
|
|
||||||
#include "Ddraw/ddraw.h"
|
#include "Ddraw/ddraw.h"
|
||||||
#include "Surface/surface.h"
|
#include "Surface/surface.h"
|
||||||
|
#include "Clipper/clipper.h"
|
||||||
|
|
||||||
/* DirectDraw startup code only internal use */
|
/* DirectDraw startup code only internal use */
|
||||||
extern DDRAWI_DIRECTDRAW_GBL ddgbl;
|
extern DDRAWI_DIRECTDRAW_GBL ddgbl;
|
||||||
|
|
|
@ -8,9 +8,7 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <windows.h>
|
|
||||||
#include "rosdraw.h"
|
#include "rosdraw.h"
|
||||||
#include "d3dhal.h"
|
|
||||||
#include "ddrawgdi.h"
|
#include "ddrawgdi.h"
|
||||||
|
|
||||||
DDRAWI_DIRECTDRAW_GBL ddgbl;
|
DDRAWI_DIRECTDRAW_GBL ddgbl;
|
||||||
|
@ -555,9 +553,8 @@ StartDirectDrawHal(LPDIRECTDRAW iface, BOOL reenable)
|
||||||
|
|
||||||
memcpy(&ddgbl.ddCaps, &mHALInfo.ddCaps,sizeof(DDCORECAPS));
|
memcpy(&ddgbl.ddCaps, &mHALInfo.ddCaps,sizeof(DDCORECAPS));
|
||||||
|
|
||||||
This->lpLcl->lpGbl->dwNumFourCC = mHALInfo.ddCaps.dwNumFourCCCodes;
|
This->lpLcl->lpGbl->dwNumFourCC = mHALInfo.ddCaps.dwNumFourCCCodes;
|
||||||
This->lpLcl->lpGbl->lpdwFourCC = mpFourCC;
|
This->lpLcl->lpGbl->lpdwFourCC = mpFourCC;
|
||||||
|
|
||||||
This->lpLcl->lpGbl->dwMonitorFrequency = mHALInfo.dwMonitorFrequency;
|
This->lpLcl->lpGbl->dwMonitorFrequency = mHALInfo.dwMonitorFrequency;
|
||||||
This->lpLcl->lpGbl->dwModeIndex = mHALInfo.dwModeIndex;
|
This->lpLcl->lpGbl->dwModeIndex = mHALInfo.dwModeIndex;
|
||||||
This->lpLcl->lpGbl->dwNumModes = mHALInfo.dwNumModes;
|
This->lpLcl->lpGbl->dwNumModes = mHALInfo.dwNumModes;
|
||||||
|
|
Loading…
Reference in a new issue