mirror of
https://github.com/jmarshall23/CnC_Remastered_Collection.git
synced 2026-08-16 16:20:34 +02:00
Added ddraw dll and sdl2.
This commit is contained in:
@@ -0,0 +1,245 @@
|
||||
#include "DirectDrawWrapper.h"
|
||||
|
||||
/*******************
|
||||
**IUnknown methods**
|
||||
********************/
|
||||
|
||||
// Retrieves pointers to the supported interfaces on an object.
|
||||
HRESULT __stdcall IDirectDrawClipperWrapper::QueryInterface(REFIID riid, LPVOID FAR * ppvObj)
|
||||
{
|
||||
debugMessage(1, "IDirectDrawClipperWrapper::QueryInterface", "Partially Implemented");
|
||||
|
||||
// Provide the directdraw interface for all versions up to 7
|
||||
if(riid == IID_IDirectDrawClipper)
|
||||
{
|
||||
// Set pointer to this interface
|
||||
ppvObj = (LPVOID *)this;
|
||||
// Increment reference count
|
||||
AddRef();
|
||||
// Return success
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
// Interface not supported
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
// Increments the reference count for an interface on an object.
|
||||
ULONG __stdcall IDirectDrawClipperWrapper::AddRef()
|
||||
{
|
||||
debugMessage(1, "IDirectDrawClipperWrapper::AddRef", "Partially Implemented");
|
||||
|
||||
// Increment reference count
|
||||
ReferenceCount++;
|
||||
// Return current reference count
|
||||
return ReferenceCount;
|
||||
}
|
||||
|
||||
// Decrements the reference count for an interface on an object.
|
||||
ULONG __stdcall IDirectDrawClipperWrapper::Release()
|
||||
{
|
||||
debugMessage(1, "IDirectDrawClipperWrapper::Release", "Partially Implemented");
|
||||
|
||||
// Decrement reference count
|
||||
ReferenceCount--;
|
||||
// If reference count reaches 0 then free object
|
||||
if(ReferenceCount == 0)
|
||||
{
|
||||
// Free objects here, skip for now
|
||||
}
|
||||
// Return new reference count
|
||||
return ReferenceCount;
|
||||
}
|
||||
|
||||
/*****************************
|
||||
**IDirectDrawClipper methods**
|
||||
******************************/
|
||||
|
||||
// Retrieves a copy of the clip list that is associated with a DirectDrawClipper
|
||||
// object. To select a subset of the clip list, you can pass a rectangle that clips
|
||||
// the clip list.
|
||||
HRESULT __stdcall IDirectDrawClipperWrapper::GetClipList(LPRECT lpRect, LPRGNDATA lpClipList, LPDWORD lpdwSize)
|
||||
{
|
||||
// ***Unimplemented***
|
||||
debugMessage(0, "IDirectDrawClipperWrapper::GetClipList", "Not Implemented");
|
||||
|
||||
if(lpClipList == NULL)
|
||||
{
|
||||
if(lpRect == NULL) {
|
||||
// lpdwSize = memory required to hold entire clip list
|
||||
}
|
||||
else
|
||||
{
|
||||
// lpdwSize = memory required to clip list in region lpRect
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(lpRect == NULL) {
|
||||
// lpClipList = RGNDATA structure that receives the resulting copy of the entire clip list.
|
||||
}
|
||||
else
|
||||
{
|
||||
// lpClipList = RGNDATA structure that receives the resulting copy of the clip list in region lpRect
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return DDERR_GENERIC;
|
||||
|
||||
/*
|
||||
DDERR_GENERIC
|
||||
DDERR_INVALIDCLIPLIST
|
||||
DDERR_INVALIDOBJECT
|
||||
DDERR_INVALIDPARAMS
|
||||
DDERR_NOCLIPLIST
|
||||
DDERR_REGIONTOOSMALL
|
||||
*/
|
||||
}
|
||||
|
||||
// Retrieves the window handle that was previously associated with this
|
||||
// DirectDrawClipper object by the IDirectDrawClipper::SetHWnd method.
|
||||
HRESULT __stdcall IDirectDrawClipperWrapper::GetHWnd(HWND FAR *lphWnd)
|
||||
{
|
||||
debugMessage(1, "IDirectDrawClipperWrapper::GetHWnd", "Partially Implemented");
|
||||
|
||||
// lphWnd cannot be null
|
||||
if(lphWnd == NULL) return DDERR_INVALIDPARAMS;
|
||||
|
||||
// Set lphWnd to associated window handle
|
||||
*lphWnd = hWnd;
|
||||
|
||||
// Success
|
||||
return DD_OK;
|
||||
}
|
||||
|
||||
// Initializes a DirectDrawClipper object that was created by using the
|
||||
// CoCreateInstance COM function.
|
||||
HRESULT __stdcall IDirectDrawClipperWrapper::Initialize(LPDIRECTDRAW lpDD, DWORD dwFlags)
|
||||
{
|
||||
debugMessage(1, "IDirectDrawClipperWrapper::Initialize", "Partially Implemented");
|
||||
if(lpDD == NULL)
|
||||
{
|
||||
// An independent DirectDrawClipper object is initialized; a call of this
|
||||
// type is equivalent to using the DirectDrawCreateClipper function.
|
||||
}
|
||||
else
|
||||
{
|
||||
// Call constructor
|
||||
}
|
||||
|
||||
// Overload to already init
|
||||
return DDERR_ALREADYINITIALIZED;
|
||||
|
||||
/*
|
||||
DDERR_ALREADYINITIALIZED
|
||||
DDERR_INVALIDPARAMS
|
||||
*/
|
||||
}
|
||||
|
||||
// Retrieves the status of the clip list if a window handle is associated
|
||||
// with a DirectDrawClipper object.
|
||||
HRESULT __stdcall IDirectDrawClipperWrapper::IsClipListChanged(BOOL FAR *lpbChanged)
|
||||
{
|
||||
// ***Unimplemented***
|
||||
debugMessage(0, "IDirectDrawClipperWrapper::Initialize", "Not Implemented");
|
||||
|
||||
// lpbChanged cannot be null
|
||||
if(lpbChanged == NULL) return DDERR_INVALIDPARAMS;
|
||||
|
||||
// lpbChanged is TRUE if the clip list has changed, and FALSE otherwise.
|
||||
|
||||
return DDERR_GENERIC;
|
||||
|
||||
/*
|
||||
DDERR_INVALIDOBJECT
|
||||
DDERR_INVALIDPARAMS
|
||||
*/
|
||||
}
|
||||
|
||||
// Sets or deletes the clip list that is used by the IDirectDrawSurface7::Blt,
|
||||
// IDirectDrawSurface7::BltBatch, and IDirectDrawSurface7::UpdateOverlay methods
|
||||
// on surfaces to which the parent DirectDrawClipper object is attached.
|
||||
HRESULT __stdcall IDirectDrawClipperWrapper::SetClipList(LPRGNDATA lpClipList, DWORD dwFlags)
|
||||
{
|
||||
// ***Unimplemented***
|
||||
debugMessage(0, "IDirectDrawClipperWrapper::SetClipList", "Not Implemented");
|
||||
|
||||
//You cannot set the clip list if a window handle is already associated
|
||||
// with the DirectDrawClipper objet.
|
||||
if(hasHwnd)
|
||||
{
|
||||
return DDERR_CLIPPERISUSINGHWND;
|
||||
}
|
||||
|
||||
// ******NOTE: If you call IDirectDrawSurface7::BltFast on a surface with an attached
|
||||
// clipper, it returns DDERR_UNSUPPORTED.
|
||||
if(lpClipList == NULL)
|
||||
{
|
||||
// Delete associated clip list if it exists
|
||||
}
|
||||
else
|
||||
{
|
||||
// Set clip list to lpClipList
|
||||
}
|
||||
|
||||
return DDERR_GENERIC;
|
||||
|
||||
/*
|
||||
DDERR_INVALIDCLIPLIST
|
||||
DDERR_INVALIDOBJECT
|
||||
DDERR_INVALIDPARAMS
|
||||
DDERR_OUTOFMEMORY
|
||||
*/
|
||||
}
|
||||
|
||||
// Sets the window handle that the clipper object uses to obtain clipping information
|
||||
HRESULT __stdcall IDirectDrawClipperWrapper::SetHWnd(DWORD dwFlags, HWND in_hWnd)
|
||||
{
|
||||
debugMessage(1, "IDirectDrawClipperWrapper::SetHWnd", "Partially Implemented");
|
||||
|
||||
hasHwnd = true;
|
||||
hWnd = in_hWnd;
|
||||
|
||||
// Load clip list from window
|
||||
|
||||
return DD_OK;
|
||||
|
||||
/*
|
||||
DDERR_INVALIDCLIPLIST
|
||||
DDERR_INVALIDOBJECT
|
||||
DDERR_INVALIDPARAMS
|
||||
DDERR_OUTOFMEMORY
|
||||
*/
|
||||
}
|
||||
|
||||
// Default constructor
|
||||
IDirectDrawClipperWrapper::IDirectDrawClipperWrapper()
|
||||
{
|
||||
// Init variables
|
||||
hasHwnd = false;
|
||||
hWnd = NULL;
|
||||
|
||||
ReferenceCount = 0;
|
||||
|
||||
// Add reference
|
||||
AddRef();
|
||||
|
||||
debugMessage(2, "IDirectDrawClipperWrapper::IDirectDrawClipperWrapper", "Created");
|
||||
}
|
||||
|
||||
// Default destructor
|
||||
IDirectDrawClipperWrapper::~IDirectDrawClipperWrapper()
|
||||
{
|
||||
// Release reference
|
||||
Release();
|
||||
|
||||
debugMessage(2, "IDirectDrawClipperWrapper::~IDirectDrawClipperWrapper", "Destroyed");
|
||||
}
|
||||
|
||||
// Initialize wrapper function
|
||||
HRESULT IDirectDrawClipperWrapper::WrapperInitialize(DWORD dwFlags)
|
||||
{
|
||||
debugMessage(2, "IDirectDrawClipperWrapper::WrapperInitialize", "Initialized");
|
||||
return DD_OK;
|
||||
}
|
||||
Reference in New Issue
Block a user