#include <ddraw.h>
#include "Singleton.h"
#ifndef _DIRECTDRAW_H_
#define _DIRECTDRAW_H_
class DirectDraw : public Singleton< DirectDraw>
{
public :
DirectDraw( void ) ;
~DirectDraw( void ) ;
int CreateDevice( HWND hWindow,int ScreenWidth, int ScreenHeight,bool FullScreen) ;
void RestoreSurfaces( ) ;
void ClearSurface( HWND hWindow) ;
void PresentBackBuffer( HWND hWindow) ;
LPDIRECTDRAWSURFACE7& GetBackBuffer( ) ;
LPDIRECTDRAW7 GetDirectDrawObject( ) ;
int GetScreenWidth( ) ;
int GetScreenHeight( ) ;
bool GetFullScreen( ) ;
private :
bool m_fullScreen;
int m_bitDepth;
int m_screenWidth;
int m_screenHeight;
LPDIRECTDRAW7 m_DD; // The DirectDraw object
LPDIRECTDRAWCLIPPER m_clipper; // Clipper for primary surface
LPDIRECTDRAWSURFACE7 m_DDS; // Primary surface
LPDIRECTDRAWSURFACE7 m_DDSBack; // Back surface
} ;
#endif // _DIRECTDRAW_H_
I2luY2x1ZGUgPGRkcmF3Lmg+CiNpbmNsdWRlICJTaW5nbGV0b24uaCIKI2lmbmRlZiBfRElSRUNURFJBV19IXwojZGVmaW5lIF9ESVJFQ1REUkFXX0hfCgpjbGFzcyBEaXJlY3REcmF3IDogcHVibGljIFNpbmdsZXRvbjxEaXJlY3REcmF3Pgp7CnB1YmxpYzoKCURpcmVjdERyYXcodm9pZCk7Cgl+RGlyZWN0RHJhdyh2b2lkKTsKCWludCBDcmVhdGVEZXZpY2UoSFdORCBoV2luZG93LGludCBTY3JlZW5XaWR0aCwgaW50IFNjcmVlbkhlaWdodCxib29sIEZ1bGxTY3JlZW4pOwoJdm9pZCBSZXN0b3JlU3VyZmFjZXMoKTsKCXZvaWQgQ2xlYXJTdXJmYWNlKEhXTkQgaFdpbmRvdyk7Cgl2b2lkIFByZXNlbnRCYWNrQnVmZmVyKEhXTkQgaFdpbmRvdyk7CgoJTFBESVJFQ1REUkFXU1VSRkFDRTcmIEdldEJhY2tCdWZmZXIoKTsKCUxQRElSRUNURFJBVzcgR2V0RGlyZWN0RHJhd09iamVjdCgpOwoKCWludCBHZXRTY3JlZW5XaWR0aCgpOwoJaW50IEdldFNjcmVlbkhlaWdodCgpOwoJYm9vbCBHZXRGdWxsU2NyZWVuKCk7CgoKcHJpdmF0ZToKCglib29sIG1fZnVsbFNjcmVlbjsKCWludCBtX2JpdERlcHRoOwoJaW50IG1fc2NyZWVuV2lkdGg7CglpbnQgbV9zY3JlZW5IZWlnaHQ7CgoJTFBESVJFQ1REUkFXNyAgICAgICAgbV9ERDsgICAvLyBUaGUgRGlyZWN0RHJhdyBvYmplY3QKCUxQRElSRUNURFJBV0NMSVBQRVIgIG1fY2xpcHBlcjsgICAvLyBDbGlwcGVyIGZvciBwcmltYXJ5IHN1cmZhY2UKCUxQRElSRUNURFJBV1NVUkZBQ0U3IG1fRERTOyAgIC8vIFByaW1hcnkgc3VyZmFjZQoJTFBESVJFQ1REUkFXU1VSRkFDRTcgbV9ERFNCYWNrOyAgIC8vIEJhY2sgc3VyZmFjZQoKfTsKCiNlbmRpZiAvLyBfRElSRUNURFJBV19IXwo=