Files
Work/common/BMDATA.HPP
2024-08-07 09:09:36 -04:00

95 lines
1.8 KiB
C++

#ifndef _COMMON_BITMAPDATA_HPP_
#define _COMMON_BITMAPDATA_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
#ifndef _COMMON_TYPES_HPP_
#include <common/types.hpp>
#endif
class BitmapData
{
public:
typedef enum Disposition{Keep,Delete};
BitmapData(void);
~BitmapData();
Disposition getInfoType(void)const;
Disposition getDataType(void)const;
UHUGE *reserveData(LONG sizeData);
BITMAPINFO *reserveInfo(LONG sizeInfo=0,WORD numColors=0);
WORD setData(HGLOBAL hGlobalData,UHUGE *lpBitmapData);
WORD setData(UHUGE *lpBitmapData);
WORD setInfo(BITMAPINFO FAR *lpBitmapInfo);
HGLOBAL getInfoHnd(void)const;
HGLOBAL getDataHnd(void)const;
BITMAPINFO *getInfoPtr(void)const;
UHUGE *getDataPtr(void)const;
WORD isOkay(void)const;
private:
void cleanupData(void);
void cleanupInfo(void);
HGLOBAL mhGlobalBitmapData;
HGLOBAL mhGlobalBitmapInfo;
UHUGE *mlpBitmapData;
BITMAPINFO *mlpBitmapInfo;
Disposition mInfoDisposition;
Disposition mDataDisposition;
};
inline
BitmapData::BitmapData(void)
: mhGlobalBitmapData(0), mhGlobalBitmapInfo(0), mlpBitmapData(0), mlpBitmapInfo(0),
mInfoDisposition(Delete), mDataDisposition(Delete)
{
}
inline
BitmapData::~BitmapData()
{
cleanupData();
cleanupInfo();
}
inline
BITMAPINFO *BitmapData::getInfoPtr(void)const
{
return mlpBitmapInfo;
}
inline
UHUGE *BitmapData::getDataPtr(void)const
{
return mlpBitmapData;
}
inline
HGLOBAL BitmapData::getInfoHnd(void)const
{
return mhGlobalBitmapInfo;
}
inline
HGLOBAL BitmapData::getDataHnd(void)const
{
return mhGlobalBitmapData;
}
inline
WORD BitmapData::isOkay(void)const
{
return (mlpBitmapData&&mlpBitmapInfo);
}
inline
BitmapData::Disposition BitmapData::getInfoType(void)const
{
return mInfoDisposition;
}
inline
BitmapData::Disposition BitmapData::getDataType(void)const
{
return mDataDisposition;
}
#endif