250 lines
8.5 KiB
C
250 lines
8.5 KiB
C
/*
|
|
* Copyright 2000-2001 TransGaming Technologies Inc.
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*/
|
|
|
|
#ifndef DDRAW_DSURFACE_MAIN_H_INCLUDED
|
|
#define DDRAW_DSURFACE_MAIN_H_INCLUDED
|
|
|
|
#include <stdarg.h>
|
|
|
|
#include "windef.h"
|
|
#include "winbase.h"
|
|
#include "ddraw_private.h"
|
|
|
|
/* Support for IDirectDrawSurface7::Set/Get/FreePrivateData. I don't think
|
|
* anybody uses it for much so a good implementation is optional. */
|
|
typedef struct PrivateData
|
|
{
|
|
struct PrivateData* next;
|
|
struct PrivateData* prev;
|
|
|
|
GUID tag;
|
|
DWORD flags; /* DDSPD_* */
|
|
DWORD uniqueness_value;
|
|
|
|
union
|
|
{
|
|
LPVOID data;
|
|
LPUNKNOWN object;
|
|
} ptr;
|
|
|
|
DWORD size;
|
|
} PrivateData;
|
|
|
|
extern ICOM_VTABLE(IDirectDrawGammaControl) DDRAW_IDDGC_VTable;
|
|
|
|
/* Non-interface functions */
|
|
HRESULT
|
|
Main_DirectDrawSurface_Construct(IDirectDrawSurfaceImpl* This,
|
|
IDirectDrawImpl* pDD,
|
|
const DDSURFACEDESC2* pDDSD);
|
|
void Main_DirectDrawSurface_ForceDestroy(IDirectDrawSurfaceImpl* This);
|
|
|
|
void
|
|
Main_DirectDrawSurface_final_release(IDirectDrawSurfaceImpl* This);
|
|
HRESULT
|
|
Main_DirectDrawSurface_late_allocate(IDirectDrawSurfaceImpl* This);
|
|
BOOL
|
|
Main_DirectDrawSurface_attach(IDirectDrawSurfaceImpl *This,
|
|
IDirectDrawSurfaceImpl *to);
|
|
BOOL Main_DirectDrawSurface_detach(IDirectDrawSurfaceImpl *This);
|
|
void
|
|
Main_DirectDrawSurface_lock_update(IDirectDrawSurfaceImpl* This,
|
|
LPCRECT pRect, DWORD dwFlags);
|
|
void
|
|
Main_DirectDrawSurface_unlock_update(IDirectDrawSurfaceImpl* This,
|
|
LPCRECT pRect);
|
|
void
|
|
Main_DirectDrawSurface_lose_surface(IDirectDrawSurfaceImpl* This);
|
|
void
|
|
Main_DirectDrawSurface_set_palette(IDirectDrawSurfaceImpl* This,
|
|
IDirectDrawPaletteImpl* pal);
|
|
void
|
|
Main_DirectDrawSurface_update_palette(IDirectDrawSurfaceImpl* This,
|
|
IDirectDrawPaletteImpl* pal,
|
|
DWORD dwStart, DWORD dwCount,
|
|
LPPALETTEENTRY palent);
|
|
HWND
|
|
Main_DirectDrawSurface_get_display_window(IDirectDrawSurfaceImpl* This);
|
|
|
|
HRESULT
|
|
Main_DirectDrawSurface_get_gamma_ramp(IDirectDrawSurfaceImpl* This,
|
|
DWORD dwFlags,
|
|
LPDDGAMMARAMP lpGammaRamp);
|
|
HRESULT
|
|
Main_DirectDrawSurface_set_gamma_ramp(IDirectDrawSurfaceImpl* This,
|
|
DWORD dwFlags,
|
|
LPDDGAMMARAMP lpGammaRamp);
|
|
|
|
BOOL Main_DirectDrawSurface_flip_data(IDirectDrawSurfaceImpl* front,
|
|
IDirectDrawSurfaceImpl* back,
|
|
DWORD dwFlags);
|
|
|
|
#define CHECK_LOST(This) \
|
|
do { \
|
|
if (This->lost) return DDERR_SURFACELOST; \
|
|
} while (0)
|
|
|
|
#define CHECK_TEXTURE(This) \
|
|
do { \
|
|
if (!(This->surface_desc.ddsCaps.dwCaps2 \
|
|
& DDSCAPS2_TEXTUREMANAGE)) \
|
|
return DDERR_INVALIDOBJECT; \
|
|
} while (0)
|
|
|
|
#define LOCK_OBJECT(This) do { } while (0)
|
|
#define UNLOCK_OBJECT(This) do { } while (0)
|
|
|
|
/* IDirectDrawSurface7 (partial) implementation */
|
|
ULONG WINAPI
|
|
Main_DirectDrawSurface_AddRef(LPDIRECTDRAWSURFACE7 iface);
|
|
ULONG WINAPI
|
|
Main_DirectDrawSurface_Release(LPDIRECTDRAWSURFACE7 iface);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_QueryInterface(LPDIRECTDRAWSURFACE7 iface, REFIID riid,
|
|
LPVOID* ppObj);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_AddAttachedSurface(LPDIRECTDRAWSURFACE7 iface,
|
|
LPDIRECTDRAWSURFACE7 pAttach);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_AddOverlayDirtyRect(LPDIRECTDRAWSURFACE7 iface,
|
|
LPRECT pRect);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_BltBatch(LPDIRECTDRAWSURFACE7 iface,
|
|
LPDDBLTBATCH pBatch, DWORD dwCount,
|
|
DWORD dwFlags);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_ChangeUniquenessValue(LPDIRECTDRAWSURFACE7 iface);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_DeleteAttachedSurface(LPDIRECTDRAWSURFACE7 iface,
|
|
DWORD dwFlags,
|
|
LPDIRECTDRAWSURFACE7 pAttach);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_EnumAttachedSurfaces(LPDIRECTDRAWSURFACE7 iface,
|
|
LPVOID context,
|
|
LPDDENUMSURFACESCALLBACK7 cb);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_EnumOverlayZOrders(LPDIRECTDRAWSURFACE7 iface,
|
|
DWORD dwFlags, LPVOID context,
|
|
LPDDENUMSURFACESCALLBACK7 cb);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_Flip(LPDIRECTDRAWSURFACE7 iface,
|
|
LPDIRECTDRAWSURFACE7 override, DWORD dwFlags);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_FreePrivateData(LPDIRECTDRAWSURFACE7 iface,
|
|
REFGUID tag);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_GetAttachedSurface(LPDIRECTDRAWSURFACE7 iface,
|
|
LPDDSCAPS2 pCaps,
|
|
LPDIRECTDRAWSURFACE7* ppSurface);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_GetBltStatus(LPDIRECTDRAWSURFACE7 iface,
|
|
DWORD dwFlags);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_GetCaps(LPDIRECTDRAWSURFACE7 iface,
|
|
LPDDSCAPS2 pCaps);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_GetClipper(LPDIRECTDRAWSURFACE7 iface,
|
|
LPDIRECTDRAWCLIPPER* ppClipper);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_GetColorKey(LPDIRECTDRAWSURFACE7 iface,
|
|
DWORD dwFlags, LPDDCOLORKEY pCKey);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_GetDC(LPDIRECTDRAWSURFACE7 iface, HDC *phDC);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_GetDDInterface(LPDIRECTDRAWSURFACE7 iface,
|
|
LPVOID* pDD);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_GetFlipStatus(LPDIRECTDRAWSURFACE7 iface,
|
|
DWORD dwFlags);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_GetLOD(LPDIRECTDRAWSURFACE7 iface,
|
|
LPDWORD pdwMaxLOD);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_GetOverlayPosition(LPDIRECTDRAWSURFACE7 iface,
|
|
LPLONG pX, LPLONG pY);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_GetPalette(LPDIRECTDRAWSURFACE7 iface,
|
|
LPDIRECTDRAWPALETTE* ppPalette);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_GetPixelFormat(LPDIRECTDRAWSURFACE7 iface,
|
|
LPDDPIXELFORMAT pDDPixelFormat);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_GetPriority(LPDIRECTDRAWSURFACE7 iface,
|
|
LPDWORD pdwPriority);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_GetPrivateData(LPDIRECTDRAWSURFACE7 iface, REFGUID tag,
|
|
LPVOID pBuffer, LPDWORD pcbBufferSize);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_GetSurfaceDesc(LPDIRECTDRAWSURFACE7 iface,
|
|
LPDDSURFACEDESC2 pDDSD);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_GetUniquenessValue(LPDIRECTDRAWSURFACE7 iface,
|
|
LPDWORD pValue);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_Initialize(LPDIRECTDRAWSURFACE7 iface,
|
|
LPDIRECTDRAW pDD, LPDDSURFACEDESC2 pDDSD);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_IsLost(LPDIRECTDRAWSURFACE7 iface);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_Lock(LPDIRECTDRAWSURFACE7 iface, LPRECT prect,
|
|
LPDDSURFACEDESC2 pDDSD, DWORD flags, HANDLE h);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_PageLock(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_PageUnlock(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_ReleaseDC(LPDIRECTDRAWSURFACE7 iface, HDC hDC);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_SetClipper(LPDIRECTDRAWSURFACE7 iface,
|
|
LPDIRECTDRAWCLIPPER pDDClipper);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_SetColorKey(LPDIRECTDRAWSURFACE7 iface,
|
|
DWORD dwFlags, LPDDCOLORKEY pCKey);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_SetLOD(LPDIRECTDRAWSURFACE7 iface, DWORD dwMaxLOD);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_SetOverlayPosition(LPDIRECTDRAWSURFACE7 iface,
|
|
LONG X, LONG Y);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_SetPalette(LPDIRECTDRAWSURFACE7 iface,
|
|
LPDIRECTDRAWPALETTE pPalette);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_SetPriority(LPDIRECTDRAWSURFACE7 iface,
|
|
DWORD dwPriority);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_SetPrivateData(LPDIRECTDRAWSURFACE7 iface,
|
|
REFGUID tag, LPVOID pData,
|
|
DWORD cbSize, DWORD dwFlags);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_Unlock(LPDIRECTDRAWSURFACE7 iface, LPRECT pRect);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_UpdateOverlay(LPDIRECTDRAWSURFACE7 iface,
|
|
LPRECT pSrcRect,
|
|
LPDIRECTDRAWSURFACE7 pDstSurface,
|
|
LPRECT pDstRect, DWORD dwFlags,
|
|
LPDDOVERLAYFX pFX);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_UpdateOverlayDisplay(LPDIRECTDRAWSURFACE7 iface,
|
|
DWORD dwFlags);
|
|
HRESULT WINAPI
|
|
Main_DirectDrawSurface_UpdateOverlayZOrder(LPDIRECTDRAWSURFACE7 iface,
|
|
DWORD dwFlags,
|
|
LPDIRECTDRAWSURFACE7 pDDSRef);
|
|
|
|
#endif
|