ddutil.h
上传用户:henghua
上传日期:2007-11-14
资源大小:7655k
文件大小:5k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. //-----------------------------------------------------------------------------
  2. // File: ddutil.cpp
  3. //
  4. // Desc: Routines for loading bitmap and palettes from resources
  5. //
  6. // Copyright (C) 1998-2001 Microsoft Corporation. All Rights Reserved.
  7. //-----------------------------------------------------------------------------
  8. #ifndef DDUTIL_H
  9. #define DDUTIL_H
  10. #include <ddraw.h>
  11. #include <d3d.h>
  12. //-----------------------------------------------------------------------------
  13. // Classes defined in this header file 
  14. //-----------------------------------------------------------------------------
  15. class CDisplay;
  16. class CSurface;
  17. //-----------------------------------------------------------------------------
  18. // Flags for the CDisplay and CSurface methods
  19. //-----------------------------------------------------------------------------
  20. #define DSURFACELOCK_READ
  21. #define DSURFACELOCK_WRITE
  22. //-----------------------------------------------------------------------------
  23. // Name: class CDisplay
  24. // Desc: Class to handle all DDraw aspects of a display, including creation of
  25. //       front and back buffers, creating offscreen surfaces and palettes,
  26. //       and blitting surface and displaying bitmaps.
  27. //-----------------------------------------------------------------------------
  28. class CDisplay
  29. {
  30. protected:
  31.     LPDIRECTDRAW7        m_pDD;
  32.     LPDIRECTDRAWSURFACE7 m_pddsFrontBuffer;
  33.     LPDIRECTDRAWSURFACE7 m_pddsBackBuffer;
  34.     LPDIRECTDRAWSURFACE7 m_pddsBackBufferLeft; // For stereo modes
  35.     HWND                 m_hWnd;
  36.     RECT                 m_rcWindow;
  37.     BOOL                 m_bWindowed;
  38.     BOOL                 m_bStereo;
  39. public:
  40.     CDisplay();
  41.     ~CDisplay();
  42.     // Access functions
  43.     HWND                 GetHWnd()           { return m_hWnd; }
  44.     LPDIRECTDRAW7        GetDirectDraw()     { return m_pDD; }
  45.     LPDIRECTDRAWSURFACE7 GetFrontBuffer()    { return m_pddsFrontBuffer; }
  46.     LPDIRECTDRAWSURFACE7 GetBackBuffer()     { return m_pddsBackBuffer; }
  47.     LPDIRECTDRAWSURFACE7 GetBackBufferLeft() { return m_pddsBackBufferLeft; }
  48.     // Status functions
  49.     BOOL    IsWindowed()                     { return m_bWindowed; }
  50.     BOOL    IsStereo()                       { return m_bStereo; }
  51.     // Creation/destruction methods
  52.     HRESULT CreateFullScreenDisplay( HWND hWnd, DWORD dwWidth, DWORD dwHeight,
  53.                              DWORD dwBPP );
  54.     HRESULT CreateWindowedDisplay( HWND hWnd, DWORD dwWidth, DWORD dwHeight );
  55.     HRESULT InitClipper();
  56.     HRESULT UpdateBounds();
  57.     virtual HRESULT DestroyObjects();
  58.     // Methods to create child objects
  59.     HRESULT CreateSurface( CSurface** ppSurface, DWORD dwWidth,
  60.                    DWORD dwHeight );
  61.     HRESULT CreateSurfaceFromBitmap( CSurface** ppSurface, TCHAR* strBMP,
  62.                              DWORD dwDesiredWidth,
  63.  DWORD dwDesiredHeight );
  64.     HRESULT CreateSurfaceFromText( CSurface** ppSurface, HFONT hFont,
  65.                            TCHAR* strText, 
  66.    COLORREF crBackground,
  67.    COLORREF crForeground );
  68.     HRESULT CreatePaletteFromBitmap( LPDIRECTDRAWPALETTE* ppPalette, const TCHAR* strBMP );
  69.     // Display methods
  70.     HRESULT Clear( DWORD dwColor = 0L );
  71.     HRESULT ColorKeyBlt( DWORD x, DWORD y, LPDIRECTDRAWSURFACE7 pdds,
  72.                          RECT* prc = NULL );
  73.     HRESULT Blt( DWORD x, DWORD y, LPDIRECTDRAWSURFACE7 pdds,
  74.          RECT* prc=NULL, DWORD dwFlags=0 );
  75.     HRESULT Blt( DWORD x, DWORD y, CSurface* pSurface, RECT* prc = NULL );
  76.     HRESULT ShowBitmap( HBITMAP hbm, LPDIRECTDRAWPALETTE pPalette=NULL );
  77.     HRESULT SetPalette( LPDIRECTDRAWPALETTE pPalette );
  78.     HRESULT Present();
  79. };
  80. //-----------------------------------------------------------------------------
  81. // Name: class CSurface
  82. // Desc: Class to handle aspects of a DirectDrawSurface.
  83. //-----------------------------------------------------------------------------
  84. class CSurface
  85. {
  86.     LPDIRECTDRAWSURFACE7 m_pdds;
  87.     DDSURFACEDESC2       m_ddsd;
  88.     BOOL                 m_bColorKeyed;
  89. public:
  90.     LPDIRECTDRAWSURFACE7 GetDDrawSurface() { return m_pdds; }
  91.     BOOL                 IsColorKeyed()    { return m_bColorKeyed; }
  92.     HRESULT DrawBitmap( HBITMAP hBMP, DWORD dwBMPOriginX = 0, DWORD dwBMPOriginY = 0, 
  93.                 DWORD dwBMPWidth = 0, DWORD dwBMPHeight = 0 );
  94.     HRESULT DrawBitmap( TCHAR* strBMP, DWORD dwDesiredWidth, DWORD dwDesiredHeight );
  95.     HRESULT DrawText( HFONT hFont, TCHAR* strText, DWORD dwOriginX, DWORD dwOriginY,
  96.               COLORREF crBackground, COLORREF crForeground );
  97.     HRESULT SetColorKey( DWORD dwColorKey );
  98.     DWORD   ConvertGDIColor( COLORREF dwGDIColor );
  99.     static HRESULT GetBitMaskInfo( DWORD dwBitMask, DWORD* pdwShift, DWORD* pdwBits );
  100.     HRESULT Create( LPDIRECTDRAW7 pDD, DDSURFACEDESC2* pddsd );
  101.     HRESULT Create( LPDIRECTDRAWSURFACE7 pdds );
  102.     HRESULT Destroy();
  103.     CSurface();
  104.     ~CSurface();
  105. };
  106. #endif // DDUTIL_H