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 >
Wrap
C/C++ Source or Header
|
2000-08-04
|
2KB
|
72 lines
#ifndef __OGL2_IMAGE__
#define __OGL2_IMAGE__
#include <png.h>
#include <jpeglib.h>
extern "C++" {
#define BMP_RGB 0
#define BMP_RLE8 1
#define BMP_RLE4 2
#define OGL_IMAGE_NULL 0
#define OGL_IMAGE_RGBA8888 1
#define OGL_IMAGE_ARGB8888 2
#define OGL_IMAGE_RGB888 3
#define OGL_IMAGE_INDEX8 4
#define OGL_IMAGE_LUMINANCE8 5
class Image
{
struct BMPHEADER {
short bfType; // "BM"
long bfSize; // BMP size (in bytes)
short bfReserved1; // always zero
short bfReserved2; // zero
long bfOffBits; // relative offset of actual bitmap data
long biSize; // size of the header from this point
long biWidth; // bitmap width (pixels)
long biHeight; // bitmap height (pixels)
short biPlanes; // 1
short biBitCount; // bpp (1,4,8,24)
long biCompression; // plain: RGB, compressed: RLE8, RLE4
long biSizeImage; // 0
long biXPelsPerMeter; // horiz resolution for the target device
long biYPelsPerMeter; // vertical resolution...
long biClrUsed; // palette size, if zero then full bpp
long biClrImportant; // if 0 then all colors are important
// follows palette in bgr0 &bisize+bisize
} header;
unsigned long* paleta;
unsigned char* bitmap;
int h, w;
int bpp;
int form;
public:
Image ();
Image (const char* filename);
~Image ();
unsigned long* palette() { return paleta; }
unsigned char* data() { return bitmap; }
int format() { return form; }
int width() { return w; }
int height() { return h; }
int Load(const char* filename);
int LoadBMP(const char* filename);
int LoadPNG(const char* filename);
int LoadJPG(const char* filename);
void FlipVertical();
void Scale(int sirka, int vyska);
};
} // extern "C++"
#endif