1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-15 06:04:49 +01:00
cnc-ddraw/inc/IDirectDrawSurface.h

119 lines
4.3 KiB
C
Raw Permalink Normal View History

2020-10-13 09:20:52 +02:00
#ifndef IDIRECTDRAWSURFACE_H
#define IDIRECTDRAWSURFACE_H
2010-10-10 19:41:47 +03:00
2020-10-13 09:20:52 +02:00
#define WIN32_LEAN_AND_MEAN
2010-10-10 19:41:47 +03:00
#include <windows.h>
#include "ddraw.h"
2020-10-13 09:20:52 +02:00
#include "IDirectDrawPalette.h"
#include "IDirectDrawClipper.h"
2021-05-29 20:51:19 +02:00
#include "IDirectDraw.h"
2010-10-10 19:41:47 +03:00
struct IDirectDrawSurfaceImpl;
struct IDirectDrawSurfaceImplVtbl;
2010-10-10 19:41:47 +03:00
typedef struct IDirectDrawSurfaceImpl
2010-10-10 19:41:47 +03:00
{
2021-06-11 20:30:43 +02:00
struct IDirectDrawSurfaceImplVtbl* lpVtbl;
2020-10-13 09:20:52 +02:00
ULONG ref;
2010-10-10 19:41:47 +03:00
DWORD width;
DWORD height;
2010-10-17 00:41:14 +03:00
DWORD bpp;
2022-09-13 07:41:01 +02:00
DWORD size;
DWORD flags;
2010-10-17 09:09:30 +03:00
DWORD caps;
2022-09-15 10:21:33 +02:00
DWORD backbuffer_count;
2022-09-17 13:46:45 +02:00
CRITICAL_SECTION cs;
IDirectDrawPaletteImpl* palette;
2010-10-17 14:57:14 +03:00
2021-06-11 20:30:43 +02:00
void* surface;
2022-10-19 03:20:31 +02:00
HANDLE mapping;
DWORD pitch;
DWORD bytes_pp;
BOOL custom_buf;
2018-06-22 04:27:34 +02:00
PBITMAPINFO bmi;
HBITMAP bitmap;
2020-10-13 09:20:52 +02:00
HDC hdc;
DDCOLORKEY color_key;
DWORD last_flip_tick;
DWORD last_blt_tick;
2023-03-24 07:45:21 +01:00
BOOL queried;
BOOL skip_flip; /* Quest for Glory 5 */
2018-06-22 04:27:34 +02:00
struct IDirectDrawSurfaceImpl* backbuffer;
struct IDirectDrawClipperImpl* clipper;
2021-05-29 20:51:19 +02:00
struct IDirectDrawImpl* ddraw;
2021-05-04 22:49:22 +02:00
} IDirectDrawSurfaceImpl;
2010-10-10 19:41:47 +03:00
2020-10-13 09:20:52 +02:00
typedef struct IDirectDrawSurfaceImplVtbl IDirectDrawSurfaceImplVtbl;
2021-06-11 20:30:43 +02:00
#undef INTERFACE
#define INTERFACE IDirectDrawSurfaceImpl
struct IDirectDrawSurfaceImplVtbl
{
2021-06-11 20:30:43 +02:00
/*** IUnknown methods ***/
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
STDMETHOD_(ULONG, AddRef) (THIS) PURE;
STDMETHOD_(ULONG, Release) (THIS) PURE;
/*** IDirectDrawSurface methods ***/
STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE7) PURE;
STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
STDMETHOD(Blt)(THIS_ LPRECT, LPDIRECTDRAWSURFACE7, LPRECT, DWORD, LPDDBLTFX) PURE;
STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD) PURE;
STDMETHOD(BltFast)(THIS_ DWORD, DWORD, LPDIRECTDRAWSURFACE7, LPRECT, DWORD) PURE;
STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD, LPDIRECTDRAWSURFACE7) PURE;
STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID, LPDDENUMSURFACESCALLBACK7) PURE;
STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD, LPVOID, LPDDENUMSURFACESCALLBACK7) PURE;
STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE7, DWORD) PURE;
STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS2, LPDIRECTDRAWSURFACE7 FAR*) PURE;
STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
STDMETHOD(GetCaps)(THIS_ LPDDSCAPS2) PURE;
STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
STDMETHOD(GetDC)(THIS_ HDC FAR*) PURE;
STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG) PURE;
STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC2) PURE;
STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC2) PURE;
STDMETHOD(IsLost)(THIS) PURE;
STDMETHOD(Lock)(THIS_ LPRECT, LPDDSURFACEDESC2, DWORD, HANDLE) PURE;
STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
STDMETHOD(Restore)(THIS) PURE;
STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG) PURE;
STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
STDMETHOD(Unlock)(THIS_ LPRECT) PURE;
STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE7, LPRECT, DWORD, LPDDOVERLAYFX) PURE;
STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE7) PURE;
/*** Added in the v2 interface ***/
STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR*) PURE;
STDMETHOD(PageLock)(THIS_ DWORD) PURE;
STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
/*** Added in the v3 interface ***/
STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC2, DWORD) PURE;
/*** Added in the v4 interface ***/
STDMETHOD(SetPrivateData)(THIS_ REFGUID, LPVOID, DWORD, DWORD) PURE;
STDMETHOD(GetPrivateData)(THIS_ REFGUID, LPVOID, LPDWORD) PURE;
STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
STDMETHOD(GetUniquenessValue)(THIS_ LPDWORD) PURE;
STDMETHOD(ChangeUniquenessValue)(THIS) PURE;
/*** Added in the v7 interface ***/
STDMETHOD(SetPriority)(THIS_ DWORD) PURE;
STDMETHOD(GetPriority)(THIS_ LPDWORD) PURE;
STDMETHOD(SetLOD)(THIS_ DWORD) PURE;
STDMETHOD(GetLOD)(THIS_ LPDWORD) PURE;
2020-10-13 09:20:52 +02:00
};
2010-10-10 19:41:47 +03:00
2020-10-13 09:20:52 +02:00
extern struct IDirectDrawSurfaceImplVtbl g_dds_vtbl;
2010-10-10 19:41:47 +03:00
#endif