//
// mxToolKit (c) 1999 by Mete Ciragan
//
// file: mxImage.h
// implementation: all
// last modified: Apr 15 1999, Mete Ciragan
// copyright: The programs and associated files contained in this
// distribution were developed by Mete Ciragan. The programs
// are not in the public domain, but they are freely
// distributable without licensing fees. These programs are
// provided without guarantee or warrantee expressed or
// implied.
//
#ifndef INCLUDED_MXIMAGE
#define INCLUDED_MXIMAGE
#ifndef byte
typedef unsigned char byte;
#endif // byte
#ifndef word
typedef unsigned short word;
#endif // word
class mxImage
{
public:
int width;
int height;
int bpp;
void *data;
void *palette;
// CREATORS
mxImage () : width (0), height (0), bpp (0), data (0), palette (0)
{
}
mxImage (int w, int h, int bpp)
{
create (w, h, bpp);
}
virtual ~mxImage ()
{
destroy ();
}
// MANIPULATORS
bool create (int w, int h, int pixelSize)
{
if (data)
delete[] data;
if (palette)
delete[] palette;
data = new byte[w * h * pixelSize / 8];
if (!data)
return false;
// allocate a palette for 8-bit images
if (pixelSize == 8)
{
palette = new byte[768];
if (!palette)
{
delete[] data;
return false;
}
}
else
palette = 0;
width = w;
height = h;
bpp = pixelSize;
return true;
}
void destroy ()
{
if (data)
delete[] data;
if (palette)
delete[] palette;
data = palette = 0;
width = height = bpp = 0;
}
private:
// NOT IMPLEMENTED
mxImage (const mxImage&);
mxImage& operator= (const mxImage&);
};
#endif // INCLUDED_MXIMAGE