Initial Commit
This commit is contained in:
74
common/BMDATA.CPP
Normal file
74
common/BMDATA.CPP
Normal file
@@ -0,0 +1,74 @@
|
||||
#include <common/bmdata.hpp>
|
||||
|
||||
void BitmapData::cleanupData(void)
|
||||
{
|
||||
if(mhGlobalBitmapData&&Delete==mDataDisposition)
|
||||
{
|
||||
::GlobalUnlock(mhGlobalBitmapData);
|
||||
::GlobalFree(mhGlobalBitmapData);
|
||||
}
|
||||
mhGlobalBitmapData=0;
|
||||
mlpBitmapData=0;
|
||||
}
|
||||
|
||||
void BitmapData::cleanupInfo(void)
|
||||
{
|
||||
if(mhGlobalBitmapInfo&&Delete==mInfoDisposition)
|
||||
{
|
||||
::GlobalUnlock(mhGlobalBitmapInfo);
|
||||
::GlobalFree(mhGlobalBitmapInfo);
|
||||
}
|
||||
mhGlobalBitmapInfo=0;
|
||||
mlpBitmapInfo=0;
|
||||
}
|
||||
|
||||
UHUGE *BitmapData::reserveData(LONG sizeData)
|
||||
{
|
||||
cleanupData();
|
||||
if(!sizeData)return 0;
|
||||
mhGlobalBitmapData=::GlobalAlloc(GMEM_FIXED,sizeData);
|
||||
if(!mhGlobalBitmapData)return 0;
|
||||
mlpBitmapData=(UHUGE*)::GlobalLock(mhGlobalBitmapData);
|
||||
mDataDisposition=Delete;
|
||||
return mlpBitmapData;
|
||||
}
|
||||
|
||||
BITMAPINFO *BitmapData::reserveInfo(LONG sizeInfo,WORD numColors)
|
||||
{
|
||||
cleanupInfo();
|
||||
if(!sizeInfo)mhGlobalBitmapInfo=::GlobalAlloc(GMEM_FIXED,sizeof(BITMAPINFO)+(sizeof(RGBQUAD)*(numColors-1)));
|
||||
else mhGlobalBitmapInfo=::GlobalAlloc(GMEM_FIXED,sizeInfo);
|
||||
if(!mhGlobalBitmapInfo)return 0;
|
||||
mlpBitmapInfo=(BITMAPINFO FAR*)::GlobalLock(mhGlobalBitmapInfo);
|
||||
mInfoDisposition=Delete;
|
||||
return mlpBitmapInfo;
|
||||
}
|
||||
|
||||
WORD BitmapData::setData(UHUGE *lpBitmapData)
|
||||
{
|
||||
cleanupData();
|
||||
if(!lpBitmapData)return FALSE;
|
||||
mlpBitmapData=lpBitmapData;
|
||||
mDataDisposition=Keep;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
WORD BitmapData::setData(HGLOBAL hGlobalData,UHUGE *lpBitmapData)
|
||||
{
|
||||
cleanupData();
|
||||
if(!hGlobalData||!lpBitmapData)return 0;
|
||||
mlpBitmapData=lpBitmapData;
|
||||
mhGlobalBitmapData=hGlobalData;
|
||||
mDataDisposition=Delete;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
WORD BitmapData::setInfo(BITMAPINFO FAR*lpBitmapInfo)
|
||||
{
|
||||
cleanupInfo();
|
||||
if(!lpBitmapInfo)return FALSE;
|
||||
mlpBitmapInfo=lpBitmapInfo;
|
||||
mInfoDisposition=Keep;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user