#ifndef _DDRAW_DIRECTDRAW_HPP_ #define _DDRAW_DIRECTDRAW_HPP_ #ifndef _COMMON_SMARTPOINTER_HPP_ #include #endif #ifndef _DDRAW_DDRAW_HPP_ #include #endif #ifndef _DDRAW_DIRECTDRAWERROR_HPP_ #include #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 mDirectDraw; SmartPointer mDirectDraw4; }; #endif