dib256.h
上传用户:yinguanfa
上传日期:2022-02-19
资源大小:400k
文件大小:3k
源码类别:

ListView/ListBox

开发平台:

Visual C++

  1. /////////////////////////////////////////////////////////////////////////////
  2. // Copyright (C) 1998 by J鰎g K鰊ig
  3. // All rights reserved
  4. //
  5. // This file is part of the completely free tetris clone "CGTetris".
  6. //
  7. // This is free software.
  8. // You may redistribute it by any means providing it is not sold for profit
  9. // without the authors written consent.
  10. //
  11. // No warrantee of any kind, expressed or implied, is included with this
  12. // software; use at your own risk, responsibility for damages (if any) to
  13. // anyone resulting from the use of this software rests entirely with the
  14. // user.
  15. //
  16. // Send bug reports, bug fixes, enhancements, requests, flames, etc., and
  17. // I'll try to keep a version up to date.  I can be reached as follows:
  18. //    J.Koenig@adg.de                 (company site)
  19. //    Joerg.Koenig@rhein-neckar.de    (private site)
  20. /////////////////////////////////////////////////////////////////////////////
  21. #ifndef DIB256_h
  22. #define DIB256_h
  23. class CDIBitmap
  24. {
  25. friend class CBmpPalette;
  26. BITMAPINFO * m_pInfo;
  27. BYTE * m_pPixels;
  28. CBmpPalette * m_pPal;
  29. BOOL m_bIsPadded;
  30. public: //constructors
  31. CDIBitmap();
  32. virtual ~CDIBitmap();
  33. private:
  34. CDIBitmap( const CDIBitmap& dbmp );
  35. public: // attributes
  36. BITMAPINFO * GetHeaderPtr() const;
  37. BYTE * GetPixelPtr() const;
  38. RGBQUAD * GetColorTablePtr() const;
  39. int GetWidth() const;
  40. int GetHeight() const;
  41. CBmpPalette * GetPalette() { return m_pPal; }
  42. public: // operations
  43. BOOL CreatePalette(); // auto. made by "Load()" and "CreateFromBitmap()"
  44. void ClearPalette(); // destroy the palette associated with this image
  45. BOOL CreateFromBitmap( CDC *, CBitmap * );
  46. BOOL LoadResource(LPCTSTR ID);
  47. BOOL LoadResource(UINT ID) { return LoadResource(MAKEINTRESOURCE(ID)); }
  48. BOOL LoadBitmap(UINT ID) { return LoadResource(ID); }
  49. BOOL LoadBitmap(LPCTSTR ID) { return LoadResource(ID); }
  50. void DestroyBitmap();
  51. BOOL DeleteObject() { DestroyBitmap(); return TRUE; }
  52. public: // overridables
  53. // draw the bitmap at the specified location
  54. virtual void DrawDIB( CDC * pDC, int x=0, int y=0 );
  55. // draw the bitmap and stretch/compress it to the desired size
  56. virtual void DrawDIB( CDC * pDC, int x, int y, int width, int height );
  57. // draw parts of the dib into a given area of the DC
  58. virtual int DrawDIB( CDC * pDC, CRect & rectDC, CRect & rectDIB );
  59. // load a bitmap from disk
  60. virtual BOOL Load( CFile * pFile );
  61. virtual BOOL Load( const CString & );
  62. // save the bitmap to disk
  63. virtual BOOL Save( CFile * pFile );
  64. virtual BOOL Save( const CString & );
  65. protected:
  66. int GetPalEntries() const;
  67. int GetPalEntries( BITMAPINFOHEADER& infoHeader ) const;
  68. DWORD GetBitsPerPixel() const;
  69. DWORD LastByte( DWORD BitsPerPixel, DWORD PixelCount ) const;
  70. DWORD GetBytesPerLine( DWORD BitsPerPixel, DWORD Width ) const;
  71. BOOL PadBits();
  72. BOOL UnPadBits();
  73. WORD GetColorCount() const;
  74. };
  75. #include "dibpal.h"
  76. #endif // DIB256_h