#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 #ifndef _REMOTEPSAPP_RGB888_HPP_ #include #endif class RawImage { public: class RawImageInvalidImage{}; RawImage(void); virtual ~RawImage(); DWORD memoryUsage(void)const; int width(void)const; int height(void)const; bool getRawData(GlobalData &rawData); bool setRawData(GlobalData &rawData); bool getAt(DWORD row,DWORD col,RGB888 &rgb888)const; Array &getRGBArray(void); BitmapInfo &getBitmapInfo(void); const BitmapInfo &getBitmapInfo(void)const; bool isOkay(void)const; private: RawImage(const RawImage &someRawImage); RawImage &operator=(const RawImage &someRawImage); BitmapInfo mBitmapInfo; Array mRGBArray; }; inline RawImage::RawImage(void) { } inline RawImage::RawImage(const RawImage &someRawImage) { // private implementation *this=someRawImage; } inline RawImage &RawImage::operator=(const RawImage &someRawImage) { // private implementation return *this; } inline RawImage::~RawImage() { } inline int RawImage::width(void)const { return mBitmapInfo.width(); } inline int RawImage::height(void)const { if(mBitmapInfo.height()<0)return -mBitmapInfo.height(); return mBitmapInfo.height(); } inline Array &RawImage::getRGBArray(void) { return mRGBArray; } inline BitmapInfo &RawImage::getBitmapInfo(void) { return mBitmapInfo; } inline const BitmapInfo &RawImage::getBitmapInfo(void)const { return mBitmapInfo; } inline bool RawImage::getAt(DWORD row,DWORD col,RGB888 &rgb888)const { if(!isOkay())return false; if(mBitmapInfo.height()<0)rgb888=((Array&)mRGBArray)[row*width()+col]; else rgb888=((Array&)mRGBArray)[(mBitmapInfo.width()*(-mBitmapInfo.height()))-(((row*mBitmapInfo.width())+mBitmapInfo.width()))+col]; return true; } inline DWORD RawImage::memoryUsage(void)const { return mRGBArray.size()*sizeof(RGB888); } inline bool RawImage::isOkay(void)const { return mRGBArray.size()?true:false; } #endif