#ifndef _COMMON_RESBITMAP_HPP_
#define _COMMON_RESBITMAP_HPP_
#ifndef _COMMON_RESDATA_HPP_
#include <common/resdata.hpp>
#endif
#ifndef _COMMON_BITMAPINFO_HPP_
#include <common/bminfo.hpp>
#endif
#ifndef _COMMON_PUREPALETTE_HPP_
#include <common/purepal.hpp>
#endif

class ResBitmap : public BitmapInfo, public PurePalette, public ResData<unsigned char>
{
public:
  ResBitmap(void);
  ResBitmap(const String &strBitmapName);
	ResBitmap(const String &strBitmapName,HMODULE hResModule);
	virtual ~ResBitmap();
	const String &strBitmapName(void)const;
	unsigned char *ptrData(void);
	BitmapInfo &getBitmapInfo(void);
	PurePalette &getPalette(void);
private:
  ResBitmap(const ResBitmap &someResBitmap);
	ResBitmap &operator=(const ResBitmap &someResBitmap);
  
	String mStrBitmapName;
	unsigned char *mpBitmapData;
};

inline
ResBitmap::ResBitmap(void)
: mpBitmapData(0)
{
}

inline
ResBitmap::ResBitmap(const ResBitmap &/*someResBitmap*/)
: mpBitmapData(0)
{ // private implementation
}

inline
ResBitmap::~ResBitmap()
{
}

inline
ResBitmap &ResBitmap::operator=(const ResBitmap &/*someResBitmap*/)
{  // private implementation
  return *this;
}

inline
const String &ResBitmap::strBitmapName(void)const
{
  return mStrBitmapName;
}

inline
unsigned char *ResBitmap::ptrData(void)
{
  return mpBitmapData;
}

inline
BitmapInfo &ResBitmap::getBitmapInfo(void)
{
  return (BitmapInfo&)*this;
}

inline
PurePalette &ResBitmap::getPalette(void)
{
  return (PurePalette&)*this;
}
#endif