Files
Work/ddraw/DRAW.HPP
2024-08-07 09:16:27 -04:00

53 lines
1.8 KiB
C++

#ifndef _DDRAW_DIRECTDRAW_HPP_
#define _DDRAW_DIRECTDRAW_HPP_
#ifndef _COMMON_SMARTPOINTER_HPP_
#include <common/pointer.hpp>
#endif
#ifndef _DDRAW_DDRAW_HPP_
#include <ddraw/ddraw.hpp>
#endif
#ifndef _DDRAW_DIRECTDRAWERROR_HPP_
#include <ddraw/error.hpp>
#endif
class SurfaceDescription;
class DisplayEnumerator;
class GUIWindow;
class Direct3D;
class DirectDevice3D;
class DirectPalette;
class Surface;
class DirectDraw
{
public:
enum CoopFlags{FullScreen=DDSCL_FULLSCREEN,AllowReboot=DDSCL_ALLOWREBOOT,
NoWindowChanges=DDSCL_NOWINDOWCHANGES,Normal=DDSCL_NORMAL,Exclusive=DDSCL_EXCLUSIVE,
SetFocusWindow=DDSCL_SETFOCUSWINDOW,SetDeviceWindow=DDSCL_SETDEVICEWINDOW,
CreateDeviceWindow=DDSCL_CREATEDEVICEWINDOW,Multithreaded=DDSCL_MULTITHREADED,
FPUSetup=DDSCL_FPUSETUP};
DirectDraw(void);
virtual ~DirectDraw();
BOOL enumerateModes(DisplayEnumerator &displayEnumerator);
BOOL setDisplayMode(int width,int height,int bpp,int refreshRate=0);
BOOL getDisplayMode(SurfaceDescription &surfaceDescription);
BOOL restoreDisplayMode(void);
BOOL restoreAllSurfaces(void);
DirectDrawError createSurface(const SurfaceDescription &surfaceDescription,Surface &surface);
DirectDrawError createDirect3D(Surface &renderSurface,Direct3D &direct3D,DirectDevice3D &device3D);
DirectDrawError setCooperativeLevel(GUIWindow &parentWindow,CoopFlags coopFlags);
DirectDrawError setCooperativeLevel(CoopFlags coopFlags);
DirectDrawError testCooperativeLevel(void);
DirectDrawError flipToGDISurface(void);
DirectDrawError createPalette(DirectPalette &directPalette);
BOOL isOkay(void)const;
void destroy(void);
private:
DirectDraw(const DirectDraw &directDraw);
DirectDraw &operator=(const DirectDraw &directDraw);
BOOL createDirectDraw(void);
SmartPointer<IDirectDraw> mDirectDraw;
SmartPointer<IDirectDraw4> mDirectDraw4;
};
#endif