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>
|
2021-06-14 09:57:26 +02:00
|
|
|
#include "ddraw.h"
|
2020-10-13 09:20:52 +02:00
|
|
|
#include "IDirectDrawPalette.h"
|
2021-05-08 23:42:29 +02:00
|
|
|
#include "IDirectDrawClipper.h"
|
2021-05-29 20:51:19 +02:00
|
|
|
#include "IDirectDraw.h"
|
2010-10-10 19:41:47 +03:00
|
|
|
|
2010-10-16 22:10:25 +03:00
|
|
|
|
2010-10-23 17:04:01 +03:00
|
|
|
struct IDirectDrawSurfaceImpl;
|
|
|
|
struct IDirectDrawSurfaceImplVtbl;
|
2010-10-10 19:41:47 +03:00
|
|
|
|
2010-10-23 17:04:01 +03:00
|
|
|
typedef struct IDirectDrawSurfaceImpl
|
2010-10-10 19:41:47 +03:00
|
|
|
{
|
2021-06-11 20:30:43 +02:00
|
|
|
struct IDirectDrawSurfaceImplVtbl* lpVtbl;
|
2010-10-23 17:04:01 +03:00
|
|
|
|
2020-10-13 09:20:52 +02:00
|
|
|
ULONG ref;
|
2010-10-10 19:41:47 +03:00
|
|
|
|
2010-10-16 22:10:25 +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;
|
2011-06-29 23:18:42 +03:00
|
|
|
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;
|
2010-10-17 14:19:48 +03:00
|
|
|
|
2021-05-08 23:42:29 +02:00
|
|
|
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;
|
2010-10-16 22:10:25 +03:00
|
|
|
|
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;
|
2018-06-22 04:27:34 +02:00
|
|
|
|
2021-05-08 23:42:29 +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
|
|
|
|
2010-10-23 17:04:01 +03: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
|
2010-10-23 17:04:01 +03:00
|
|
|
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-16 21:14:26 +03:00
|
|
|
|
2010-10-10 19:41:47 +03:00
|
|
|
#endif
|