#ifndef _REMOTEPSAPP_RAWIMAGE_HPP_ #define _REMOTEPSAPP_RAWIMAGE_HPP_ #ifndef _COMMON_WINDOWS_HPP_ #include #endif #ifndef _COMMON_SMARTPOINTER_HPP_ #include #endif #ifndef _COMMON_RGBCOLOR_HPP_ #include #endif #ifndef _COMMON_DIBITMAP_HPP_ #include #endif #ifndef _COMMON_BITMAPINFO_HPP_ #include #endif class RawImage { public: class RawImageInvalidImage{}; RawImage(void); virtual ~RawImage(); int width(void)const; int height(void)const; bool draw(PureDevice &pureDevice); bool draw(PureDevice &pureDevice,int xSrc,int ySrc); bool draw(PureDevice &pureDevice,const Rect &dstRect,const Point &srcPoint); bool stretch(PureDevice &pureDevice,const Point &xyPoint,int strwidth,int strheight); bool createImage(PureDevice &pureDevice,int width,int height,GlobalData &rawData); bool isOkay(void)const; private: RawImage(const RawImage &someRawImage); RawImage &operator=(const RawImage &rawImage); void destroy(void); BitmapInfo mBitmapInfo; HBITMAP mhBitmap; }; inline RawImage::RawImage(void) : mhBitmap(0) { mBitmapInfo.bitCount(BitmapInfo::Bit24); mBitmapInfo.colorUsed(0); mBitmapInfo.colorImportant(0); mBitmapInfo.compression(BI_RGB); } inline RawImage::RawImage(const RawImage &/*someRawImage*/) { // private implementation } inline RawImage::~RawImage() { destroy(); } inline int RawImage::height(void)const { if(mBitmapInfo.height()<0)return -mBitmapInfo.height(); return mBitmapInfo.height(); } inline int RawImage::width(void)const { return mBitmapInfo.width(); } inline bool RawImage::isOkay(void)const { return mhBitmap?true:false; } inline void RawImage::destroy(void) { if(!isOkay())return; ::DeleteObject(mhBitmap); mhBitmap=0; } #endif