www.pudn.com > Win32DirectX9.rar > ddutil.h


//----------------------------------------------------------------------------- 
// File: ddutil.cpp 
// 
// Desc: Routines for loading bitmap and palettes from resources 
// 
// Copyright (C) 1998-2001 Microsoft Corporation. All Rights Reserved. 
//----------------------------------------------------------------------------- 
#ifndef DDUTIL_H 
#define DDUTIL_H 
 
#include  
#include  
 
 
 
 
//----------------------------------------------------------------------------- 
// Classes defined in this header file  
//----------------------------------------------------------------------------- 
class CDisplay; 
class CSurface; 
 
 
 
 
//----------------------------------------------------------------------------- 
// Flags for the CDisplay and CSurface methods 
//----------------------------------------------------------------------------- 
#define DSURFACELOCK_READ 
#define DSURFACELOCK_WRITE 
 
 
 
 
//----------------------------------------------------------------------------- 
// Name: class CDisplay 
// Desc: Class to handle all DDraw aspects of a display, including creation of 
//       front and back buffers, creating offscreen surfaces and palettes, 
//       and blitting surface and displaying bitmaps. 
//----------------------------------------------------------------------------- 
class CDisplay 
{ 
protected: 
    LPDIRECTDRAW7        m_pDD; 
    LPDIRECTDRAWSURFACE7 m_pddsFrontBuffer; 
    LPDIRECTDRAWSURFACE7 m_pddsBackBuffer; 
    LPDIRECTDRAWSURFACE7 m_pddsBackBufferLeft; // For stereo modes 
 
    HWND                 m_hWnd; 
    RECT                 m_rcWindow; 
    BOOL                 m_bWindowed; 
    BOOL                 m_bStereo; 
 
public: 
    CDisplay(); 
    ~CDisplay(); 
 
    // Access functions 
    HWND                 GetHWnd()           { return m_hWnd; } 
    LPDIRECTDRAW7        GetDirectDraw()     { return m_pDD; } 
    LPDIRECTDRAWSURFACE7 GetFrontBuffer()    { return m_pddsFrontBuffer; } 
    LPDIRECTDRAWSURFACE7 GetBackBuffer()     { return m_pddsBackBuffer; } 
    LPDIRECTDRAWSURFACE7 GetBackBufferLeft() { return m_pddsBackBufferLeft; } 
 
    // Status functions 
    BOOL    IsWindowed()                     { return m_bWindowed; } 
    BOOL    IsStereo()                       { return m_bStereo; } 
 
    // Creation/destruction methods 
    HRESULT CreateFullScreenDisplay( HWND hWnd, DWORD dwWidth, DWORD dwHeight, 
		                             DWORD dwBPP ); 
    HRESULT CreateWindowedDisplay( HWND hWnd, DWORD dwWidth, DWORD dwHeight ); 
    HRESULT InitClipper(); 
    HRESULT UpdateBounds(); 
    virtual HRESULT DestroyObjects(); 
 
    // Methods to create child objects 
    HRESULT CreateSurface( CSurface** ppSurface, DWORD dwWidth, 
		                   DWORD dwHeight ); 
    HRESULT CreateSurfaceFromBitmap( CSurface** ppSurface, TCHAR* strBMP, 
		                             DWORD dwDesiredWidth, 
									 DWORD dwDesiredHeight ); 
    HRESULT CreateSurfaceFromText( CSurface** ppSurface, HFONT hFont, 
		                           TCHAR* strText,  
								   COLORREF crBackground, 
								   COLORREF crForeground ); 
    HRESULT CreatePaletteFromBitmap( LPDIRECTDRAWPALETTE* ppPalette, const TCHAR* strBMP ); 
 
    // Display methods 
    HRESULT Clear( DWORD dwColor = 0L ); 
    HRESULT ColorKeyBlt( DWORD x, DWORD y, LPDIRECTDRAWSURFACE7 pdds, 
                         RECT* prc = NULL ); 
    HRESULT Blt( DWORD x, DWORD y, LPDIRECTDRAWSURFACE7 pdds, 
		         RECT* prc=NULL, DWORD dwFlags=0 ); 
    HRESULT Blt( DWORD x, DWORD y, CSurface* pSurface, RECT* prc = NULL ); 
    HRESULT ShowBitmap( HBITMAP hbm, LPDIRECTDRAWPALETTE pPalette=NULL ); 
    HRESULT SetPalette( LPDIRECTDRAWPALETTE pPalette ); 
    HRESULT Present(); 
}; 
 
 
 
 
//----------------------------------------------------------------------------- 
// Name: class CSurface 
// Desc: Class to handle aspects of a DirectDrawSurface. 
//----------------------------------------------------------------------------- 
class CSurface 
{ 
    LPDIRECTDRAWSURFACE7 m_pdds; 
    DDSURFACEDESC2       m_ddsd; 
    BOOL                 m_bColorKeyed; 
 
public: 
    LPDIRECTDRAWSURFACE7 GetDDrawSurface() { return m_pdds; } 
    BOOL                 IsColorKeyed()    { return m_bColorKeyed; } 
 
    HRESULT DrawBitmap( HBITMAP hBMP, DWORD dwBMPOriginX = 0, DWORD dwBMPOriginY = 0,  
		                DWORD dwBMPWidth = 0, DWORD dwBMPHeight = 0 ); 
    HRESULT DrawBitmap( TCHAR* strBMP, DWORD dwDesiredWidth, DWORD dwDesiredHeight ); 
    HRESULT DrawText( HFONT hFont, TCHAR* strText, DWORD dwOriginX, DWORD dwOriginY, 
		              COLORREF crBackground, COLORREF crForeground ); 
 
    HRESULT SetColorKey( DWORD dwColorKey ); 
    DWORD   ConvertGDIColor( COLORREF dwGDIColor ); 
    static HRESULT GetBitMaskInfo( DWORD dwBitMask, DWORD* pdwShift, DWORD* pdwBits ); 
 
    HRESULT Create( LPDIRECTDRAW7 pDD, DDSURFACEDESC2* pddsd ); 
    HRESULT Create( LPDIRECTDRAWSURFACE7 pdds ); 
    HRESULT Destroy(); 
 
    CSurface(); 
    ~CSurface(); 
}; 
 
 
 
 
#endif // DDUTIL_H