home *** CD-ROM | disk | FTP | other *** search
/ Windows Graphics Programming / Feng_Yuan_Win32_GDI_DirectX.iso / Samples / include / DDB.h < prev    next >
C/C++ Source or Header  |  2000-05-11  |  3KB  |  113 lines

  1. #pragma once
  2.  
  3. //-----------------------------------------------------------------------------------//
  4. //              Windows Graphics Programming: Win32 GDI and DirectDraw               //
  5. //                             ISBN  0-13-086985-6                                   //
  6. //                                                                                   //
  7. //  Written            by  Yuan, Feng                             www.fengyuan.com   //
  8. //  Copyright (c) 2000 by  Hewlett-Packard Company                www.hp.com         //
  9. //  Published          by  Prentice Hall PTR, Prentice-Hall, Inc. www.phptr.com      //
  10. //                                                                                   //
  11. //  FileName   : ddb.h                                                                 /
  12. //  Description: Device depedent bitmap handling                                     //
  13. //  Version    : 1.00.000, May 31, 2000                                              //
  14. //-----------------------------------------------------------------------------------//
  15.  
  16. class KDDB
  17. {
  18. protected:
  19.     HBITMAP    m_hBitmap;
  20.     HBITMAP m_hOldBmp;
  21.     
  22.     void ReleaseDDB(void);
  23.  
  24. public:
  25.     HDC        m_hMemDC;
  26.     bool Prepare(int & width, int & height);
  27.  
  28.     typedef enum { draw_normal, draw_center, draw_tile, draw_stretch, draw_stretchprop };
  29.  
  30.     HBITMAP GetBitmap(void) const
  31.     {
  32.         return m_hBitmap;
  33.     }
  34.  
  35.     KDDB()
  36.     {
  37.         m_hBitmap = NULL;
  38.         m_hMemDC  = NULL;
  39.         m_hOldBmp = NULL;
  40.     }
  41.  
  42.     virtual ~KDDB()
  43.     {
  44.         ReleaseDDB();
  45.     }
  46.  
  47.     BOOL Attach(HBITMAP hBmp);
  48.  
  49.     BOOL LoadBitmap(HINSTANCE hInst, int id)
  50.     {
  51.         return Attach ( ::LoadBitmap(hInst, MAKEINTRESOURCE(id)) );
  52.     }
  53.  
  54.     BOOL Draw(HDC hDC, int x0, int y0, int w, int h, DWORD rop, int opt=draw_normal);
  55.     HBITMAP CreateMask(COLORREF crBackGround, HDC hMaskDC);
  56. };
  57.  
  58. void    DecodeDDB(HGDIOBJ hBmp, TCHAR mess[]);
  59. HBITMAP LargestDDB(HDC hDC);
  60.  
  61. // class for simulating TransparentBlt
  62.  
  63. class KDDBMask
  64. {
  65.     HDC        m_hMemDC;
  66.     HBITMAP    m_hMask;
  67.     HBITMAP m_hOld;
  68.     int        m_nMaskWidth;
  69.     int        m_nMaskHeight;
  70.  
  71.     void Release(void)
  72.     {
  73.         if ( m_hMemDC )
  74.         {
  75.             SelectObject(m_hMemDC, m_hOld);
  76.             DeleteObject(m_hMemDC);    
  77.             m_hMemDC = NULL;
  78.             m_hOld = NULL;
  79.         }
  80.  
  81.         if ( m_hMask )
  82.         {
  83.             DeleteObject(m_hMask);    m_hMask  = NULL;
  84.         }
  85.     }
  86.  
  87. public:
  88.     KDDBMask()
  89.     {
  90.         m_hMemDC = NULL;
  91.         m_hMask  = NULL;
  92.         m_hOld   = NULL;
  93.     }
  94.  
  95.     ~KDDBMask()
  96.     {
  97.         Release();
  98.     }
  99.  
  100.     BOOL Create(HDC hDC, int nX, int nY, int nWidth, int nHeight, UINT crTransparent);
  101.     BOOL ApplyMask(HDC HDC, int nX, int nY, int nWidth, int nHeight, DWORD Rop);
  102.     
  103.     BOOL TransBlt(HDC hdcDest, int nDx0, int nDy0, int nDw, int nDh,
  104.                     HDC hdcSrc,  int nSx0, int nSy0, int nSw, int nSh);
  105.  
  106.     BOOL TransBlt_FlickFree(HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeightDest,
  107.                     HDC hdcSrc,  int nXOriginSrc,  int nYOriginSrc,  int nWidthSrc,  int nHeightSrc);
  108. };
  109.  
  110. BOOL G_TransparentBlt(HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeightDest,
  111.                     HDC hdcSrc,  int nXOriginSrc,  int nYOriginSrc,  int nWidthSrc,  int nHeightSrc,
  112.                     UINT crTransparent);
  113.