129 lines
3.7 KiB
Plaintext
129 lines
3.7 KiB
Plaintext
#include <imagelst/imagelst.hpp>
|
|
#include <imagelst/imgeinfo.hpp>
|
|
#include <common/gdipoint.hpp>
|
|
#include <common/point.hpp>
|
|
#include <common/purebmp.hpp>
|
|
#include <common/pureicon.hpp>
|
|
|
|
ImageList::ImageList(HINSTANCE hProcessInstance,const String &bitmapName,DWORD widthImage,RGBColor maskColor,DWORD growthFactor)
|
|
: mhImageList(0), mhProcessInstance(hProcessInstance)
|
|
{
|
|
mhImageList=::ImageList_LoadBitmap(hProcessInstance,bitmapName,widthImage,growthFactor,maskColor);
|
|
}
|
|
|
|
ImageList &ImageList::operator=(HIMAGELIST hImageList)
|
|
{
|
|
destroyImageList();
|
|
mhImageList=hImageList;
|
|
return *this;
|
|
}
|
|
|
|
ImageList &ImageList::operator=(const ImageList &someImageList)
|
|
{
|
|
DWORD sourceImageListEntries;
|
|
Point imageDimensions;
|
|
ImageType imageType;
|
|
|
|
if(!mhProcessInstance)return *this;
|
|
if(someImageList.isOkay()&&(0!=(sourceImageListEntries=someImageList.size())))
|
|
{
|
|
someImageList.imageDimensions(imageDimensions);
|
|
imageType=someImageList.imageType();
|
|
if(createImageList(imageDimensions.x(),imageDimensions.y(),imageType))
|
|
{
|
|
for(DWORD itemIndex=0;itemIndex<sourceImageListEntries;itemIndex++)
|
|
insertImage(PureIcon(someImageList.extractIcon(itemIndex)));
|
|
}
|
|
}
|
|
return *this;
|
|
}
|
|
|
|
WORD ImageList::drawImage(PureDevice &somePureDevice,const Point &xyPoint,DWORD itemIndex,DrawFlag drawFlag)
|
|
{
|
|
if(!isOkay())return FALSE;
|
|
return ::ImageList_Draw(mhImageList,itemIndex,somePureDevice,xyPoint.x(),xyPoint.y(),(UINT)drawFlag);
|
|
}
|
|
|
|
WORD ImageList::imageDimensions(Point &imageDimensions)const
|
|
{
|
|
int cxDimension;
|
|
int cyDimension;
|
|
WORD returnCode;
|
|
|
|
if(!isOkay())return FALSE;
|
|
returnCode=::ImageList_GetIconSize(mhImageList,&cxDimension,&cyDimension);
|
|
imageDimensions.x(cxDimension);
|
|
imageDimensions.y(cyDimension);
|
|
return returnCode;
|
|
}
|
|
|
|
BOOL ImageList::beginDrag(DWORD itemIndex,const GDIPoint &dragPoint)const
|
|
{
|
|
if(!isOkay())return FALSE;
|
|
return ImageList_BeginDrag(mhImageList,itemIndex,dragPoint.x(),dragPoint.y());
|
|
}
|
|
|
|
BOOL ImageList::dragMove(const GDIPoint &dragPoint)const
|
|
{
|
|
return ImageList_DragMove(dragPoint.x(),dragPoint.y());
|
|
}
|
|
|
|
BOOL ImageList::dragEnter(HWND hwndLock,const GDIPoint &imagePoint)const
|
|
{
|
|
return ImageList_DragEnter(hwndLock,imagePoint.x(),imagePoint.y());
|
|
}
|
|
|
|
BOOL ImageList::dragLeave(HWND hwndLock)const
|
|
{
|
|
return ImageList_DragLeave(hwndLock);
|
|
}
|
|
|
|
BOOL ImageList::setDragCursorImage(int itemIndex,const GDIPoint &hotSpot)
|
|
{
|
|
if(!isOkay())return FALSE;
|
|
return ImageList_SetDragCursorImage(mhImageList,itemIndex,hotSpot.x(),hotSpot.y());
|
|
}
|
|
|
|
WORD ImageList::insertImage(const PureBitmap &colorBitmap)
|
|
{
|
|
return insertImage(colorBitmap,PureBitmap());
|
|
}
|
|
|
|
WORD ImageList::insertImage(const PureBitmap &colorBitmap,const PureBitmap &maskBitmap)
|
|
{
|
|
if(!isOkay())return FALSE;
|
|
if(maskBitmap.isOkay())return ::ImageList_Add(mhImageList,colorBitmap,maskBitmap);
|
|
return ::ImageList_Add(mhImageList,colorBitmap,0);
|
|
}
|
|
|
|
WORD ImageList::insertImage(const PureBitmap &colorBitmap,const RGBColor &maskColor)
|
|
{
|
|
if(!isOkay())return FALSE;
|
|
return ::ImageList_AddMasked(mhImageList,colorBitmap,(COLORREF)maskColor);
|
|
}
|
|
|
|
WORD ImageList::replaceImage(DWORD itemIndex,const PureBitmap &colorBitmap,const PureBitmap &maskBitmap)
|
|
{
|
|
if(!isOkay())return FALSE;
|
|
return ::ImageList_Replace(mhImageList,itemIndex,colorBitmap,maskBitmap);
|
|
}
|
|
|
|
WORD ImageList::insertImage(PureIcon &somePureIcon)
|
|
{
|
|
if(!isOkay())return FALSE;
|
|
return !::ImageList_AddIcon(mhImageList,(HICON)somePureIcon);
|
|
}
|
|
|
|
WORD ImageList::replaceImage(DWORD itemIndex,PureIcon &somePureIcon)
|
|
{
|
|
if(!isOkay())return FALSE;
|
|
return ::ImageList_ReplaceIcon(mhImageList,itemIndex,(HICON)somePureIcon);
|
|
}
|
|
|
|
BOOL ImageList::imageInfo(int itemIndex,ImageInfo &imageInfo)
|
|
{
|
|
if(!isOkay())return FALSE;
|
|
return ::ImageList_GetImageInfo(mhImageList,itemIndex,&((_IMAGEINFO&)imageInfo));
|
|
}
|
|
|