CIMAGE.H
上传用户:wep9318
上传日期:2007-01-07
资源大小:893k
文件大小:3k
源码类别:

图片显示

开发平台:

Visual C++

  1. /*
  2.  * File: cimage.h
  3.  * Purpose: Declaration of the Platform Independent Image Class
  4.  * Author: Alejandro Aguilar Sierra
  5.  * Created: 1995
  6.  * Copyright: (c) 1995, Alejandro Aguilar Sierra <asierra@servidor.unam.mx>
  7.  *
  8.  * This software is based in part on the work of the Independent JPEG Group.
  9.  *
  10.  */
  11. #if !defined(__Image_h)
  12. #define __Image_h
  13. #include "cimageb.h"
  14. enum {
  15. CIMAGE_FORMAT_BMP,
  16. CIMAGE_FORMAT_JPEG,
  17. CIMAGE_FORMAT_GIF,
  18. CIMAGE_FORMAT_XPM,
  19. CIMAGE_FORMAT_PNG,
  20. CMAX_IMAGE_FORMATS
  21. };
  22. class CImage: public CObject
  23. {
  24. protected:
  25.   int filetype;
  26.   CString filename;
  27. public:
  28.   CImageImpl *implementation;
  29.   CImage(void);
  30.   CImage(const CBitmap *bitmap);
  31.   CImage (const CString& fileName, int imageType = -1);     // Read an image file
  32.   CImage(const CImage *img);
  33.   virtual ~CImage ();
  34.   BOOL ReadFile(const CString& fileName="", int imageType = -1);
  35.   BOOL SaveFile(const CString& fileName="", int imageType = -1);
  36.   int GetFileType(void) { return filetype; }
  37.   CString GetFilename() { return filename; }
  38.   
  39.   virtual int GetEffWidth() { return implementation->GetEffWidth(); }
  40.   //  Image Information
  41.   virtual int  GetWidth( void ) const { return implementation->GetWidth(); };
  42.   virtual int  GetHeight( void ) const { return implementation->GetHeight(); };
  43.   virtual int  GetDepth( void ) const { return implementation->GetDepth(); };
  44.   virtual int  GetColorType( void ) const { return implementation->GetColorType(); };
  45.   virtual BOOL Inside(int x, int y) { return implementation->Inside(x, y); };
  46.   virtual void Create(int width, int height, int deep, int colortype=-1);
  47.   virtual BOOL CreateImplementation(const CString& imageFileName, int& imageType);
  48. // Drawing routines
  49.   virtual BOOL Draw(CDC *dc, int x=0, int y=0, int dx=-1, int dy=-1, int xs=0, int ys=0)
  50.   {
  51.     return implementation->Draw(dc, x, y, dx, dy, xs, ys);
  52.   }
  53.   
  54.   virtual BOOL Stretch(CDC *dc, int xd=0, int yd=0, int dxd=-1, int dyd=-1,
  55.  int xs=0, int ys=0, int dxs=-1, int dys=-1)
  56.   {
  57.     return implementation->Stretch(dc, xd, yd, dxd, dyd, xs, ys, dxs, dys);
  58.   }
  59.   virtual int  GetIndex(int x, int y) { return implementation->GetIndex(x, y); }
  60.   virtual BOOL GetRGB(int x, int y, byte* r, byte* g, byte* b)
  61.   { return implementation->GetRGB(x, y, r, g, b); }
  62.   virtual BOOL SetIndex(int x, int y, int index) { return implementation->SetIndex(x, y, index); }
  63.   virtual BOOL SetRGB(int x, int y, byte r, byte g, byte b) { return implementation->SetRGB(x, y, r, g, b); }
  64. // ColorMap settings
  65.   virtual BOOL SetPalette(CImagePalette* pal) { return implementation->SetPalette(pal); }
  66.   virtual BOOL SetPalette(int n, rgb_color_struct *rgb_struct)
  67.   { return implementation->SetPalette(n, rgb_struct); }
  68.   virtual BOOL SetPalette(int n, byte *r, byte *g=0, byte *b=0)
  69.   { return implementation->SetPalette(n, r, g, b); }
  70.   virtual CImagePalette* GetPalette() const { return implementation->GetPalette(); }
  71.   
  72.   virtual BOOL IsOK() { return (implementation != NULL && implementation->GetBits()); }
  73.   
  74.   virtual CImageImpl *GetImplementation() { return implementation; }
  75.   virtual ImagePointerType GetRawImage() { return implementation->GetRawImage(); }
  76.   
  77.   CBitmap *MakeBitmap();
  78. };
  79. #endif