DIB.h
上传用户:weiyeyoule
上传日期:2007-01-03
资源大小:21k
文件大小:3k
源码类别:

GDI/图象编程

开发平台:

Visual C++

  1. #ifndef _DIB_H
  2. #define _DIB_H
  3. typedef enum
  4. {
  5.     DIB_LOAD_OK,                // file read OK
  6.     DIB_LOAD_NOFILE_OR_CORRUPT, // file not found or corrupted
  7.     DIB_LOAD_NO_MEM             // Out of mem
  8. } DIBLoadResult;
  9. typedef enum
  10. {
  11.     DIB_SAVE_OK,                // file saved ok
  12.     DIB_SAVE_CANT_WRITE,        // Cannot write to file
  13. } DIBSaveResult;
  14. class CDIB
  15. {
  16. public:
  17.     COLORREF *m_Bits;
  18.     BITMAPINFO m_Info;
  19.     HBITMAP m_Bitmap;
  20.     CSize m_Size;
  21.     CDIB ();
  22.     virtual ~CDIB ();
  23.     void WritePixel (UINT x,UINT y,COLORREF c);
  24.     DIBLoadResult Load (CString);
  25.     DIBLoadResult LoadPPM (CString);
  26.     DIBSaveResult SavePPM (CString, UINT uDescID = 0);
  27.     DIBSaveResult SaveBMP (CString);
  28.     BOOL Create (int Width, int Height );
  29.     BOOL Create (CDC *pDC, UINT uBitmapID);   // From resource bitmap
  30.     void Destroy ();
  31.     void PasteToDC ( CDC *pDC, int x, int y );
  32.     void GetFromDC ( CDC *pDC, int x, int y, int w, int h );
  33.     void GetFromBitmap ( CDC *pDC, CBitmap *pBitmap );
  34.     
  35.     void Fill ( int R, int G, int B );
  36.     void FillGlass ( int R, int G, int B, int A );
  37.     void FillStippledGlass ( int R, int G, int B );
  38.     void CopyTo   ( CDIB *Dib );
  39.     void CopyFrom ( const CDIB *Dib );
  40.     void CopyTransparentlyFrom ( CDIB *Dib, int R, int G, int B );
  41.     void Add ( CDIB *Dib );
  42.     void Blend ( CDIB *Dib, int A );
  43.     void Darken ( CDIB *Dib );
  44.     void Difference ( CDIB *Dib );
  45.     void Lighten ( CDIB *Dib );
  46.     void Multiply ( CDIB *Dib );
  47.     void Screen ( CDIB *Dib );
  48.     void CopyRect ( CDIB *Dib, int x, int y );
  49.     void PasteRect ( CDIB *Dib, int x, int y );
  50.     void PasteCKRect ( CDIB *Dib, int x, int y, int R, int G, int B );
  51.     void FillRect ( int x, int y, int w, int h, int R, int G, int B );
  52.     void FillGlassRect ( int x, int y, int w, int h, int R, int G, int B, int A );
  53.     void FillStippledGlassRect ( int x, int y, int w, int h, int R, int G, int B );
  54.     
  55.     void AddRect ( CDIB *Dib, int x, int y );
  56.     void BlendRect ( CDIB *Dib, int x, int y, int A );
  57.     void DarkenRect ( CDIB *Dib, int x, int y );
  58.     void DifferenceRect ( CDIB *Dib, int x, int y );
  59.     void LightenRect ( CDIB *Dib, int x, int y );
  60.     void MultiplyRect ( CDIB *Dib, int x, int y );
  61.     void ScreenRect ( CDIB *Dib, int x, int y );
  62.     void Line ( int x1, int y1, int x2, int y2, int R, int G, int B );
  63.     void LineGlass ( int x1, int y1, int x2, int y2, int R, int G, int B, int A );
  64.     void ClippedLine ( int x1, int y1, int x2, int y2, int R, int G, int B );
  65.     COLORREF &ColorAt (int x, int y);
  66.     BOOL operator == (const CDIB &) const;
  67.     BOOL operator != (const CDIB &) const;
  68.     CDIB &operator = (const CDIB &);
  69. private:
  70. };
  71. // Inline sections:
  72. #include "DIB.inl"
  73. #endif