1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
// Bitmap.h: interface for the CBitmap class.
//
//////////////////////////////////////////////////////////////////////
#ifndef __BITMAP_H__
#define __BITMAP_H__
#include <string>
#include "nv_dds.h"
using std::string;
class CBitmap
{
public:
CBitmap(const unsigned char* data,int xsize,int ysize);
CBitmap();
CBitmap(const CBitmap& old);
CBitmap& operator=(const CBitmap& bm);
virtual ~CBitmap();
void Alloc(int w,int h);
bool Load(string const& filename, unsigned char defaultAlpha=255);
bool LoadGrayscale(string const& filename);
bool Save(string const& filename, bool opaque = true);
const GLuint CreateTexture(bool mipmaps=false);
const GLuint CreateDDSTexture(GLuint texID = 0);
void CreateAlpha(unsigned char red,unsigned char green,unsigned char blue);
void SetTransparent(unsigned char red, unsigned char green, unsigned char blue);
void Renormalize(float3 newCol);
void Blur(int iterations = 1, float weight = 1.0f);
CBitmap GetRegion(int startx, int starty, int width, int height);
CBitmap CreateMipmapLevel(void);
unsigned char* mem;
int xsize;
int ysize;
int channels;
enum BitmapType
{
BitmapTypeStandardRGBA,
BitmapTypeStandardAlpha,
BitmapTypeDDS
};
int type;
GLenum textype; //! GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP, ..
nv_dds::CDDSImage *ddsimage;
public:
CBitmap CreateRescaled(int newx, int newy);
void ReverseYAxis();
void InvertColors();
void GrayScale();
void Tint(const float tint[3]);
};
#endif // __BITMAP_H__
|