home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 February / Chip_2001-02_cd1.bin / bonus / demos / CS / exp / SOURCES / GLENGINE / image.h < prev    next >
C/C++ Source or Header  |  2000-08-04  |  2KB  |  72 lines

  1. #ifndef __OGL2_IMAGE__
  2. #define __OGL2_IMAGE__
  3.  
  4. #include <png.h>
  5. #include <jpeglib.h>
  6.  
  7. extern "C++" {
  8.  
  9. #define BMP_RGB 0
  10. #define BMP_RLE8 1
  11. #define BMP_RLE4 2
  12.  
  13. #define OGL_IMAGE_NULL        0
  14. #define OGL_IMAGE_RGBA8888    1
  15. #define OGL_IMAGE_ARGB8888    2
  16. #define OGL_IMAGE_RGB888      3
  17. #define OGL_IMAGE_INDEX8      4
  18. #define OGL_IMAGE_LUMINANCE8  5
  19.  
  20. class Image
  21. {
  22.   struct BMPHEADER {
  23.     short  bfType;          // "BM"
  24.     long   bfSize;          // BMP size (in bytes)
  25.     short  bfReserved1;     // always zero
  26.     short  bfReserved2;     // zero
  27.     long   bfOffBits;       // relative offset of actual bitmap data
  28.  
  29.     long   biSize;          // size of the header from this point
  30.     long   biWidth;         // bitmap width (pixels)
  31.     long   biHeight;        // bitmap height (pixels)
  32.     short  biPlanes;        // 1
  33.     short  biBitCount;      // bpp (1,4,8,24)
  34.     long   biCompression;   // plain: RGB, compressed: RLE8, RLE4
  35.     long   biSizeImage;     // 0
  36.     long   biXPelsPerMeter; // horiz resolution for the target device
  37.     long   biYPelsPerMeter; // vertical resolution...
  38.     long   biClrUsed;       // palette size, if zero then full bpp
  39.     long   biClrImportant;  // if 0 then all colors are important
  40.                             // follows palette in bgr0 &bisize+bisize
  41.   } header;
  42.  
  43.   unsigned long* paleta;
  44.   unsigned char* bitmap;
  45.   int h, w;
  46.   int bpp;
  47.   int form;
  48.  
  49. public:
  50.   Image ();
  51.   Image (const char* filename);
  52.   ~Image ();
  53.  
  54.   unsigned long* palette() { return paleta; }
  55.   unsigned char* data() { return bitmap; }
  56.   int format() { return form; }
  57.   int width() { return w; }
  58.   int height() { return h; }
  59.  
  60.   int Load(const char* filename);
  61.   int LoadBMP(const char* filename);
  62.   int LoadPNG(const char* filename);
  63.   int LoadJPG(const char* filename);
  64.  
  65.   void FlipVertical();  
  66.   void Scale(int sirka, int vyska);
  67. };
  68.  
  69. } // extern "C++"
  70.  
  71. #endif
  72.