Some minor improvements.
This commit is contained in:
parent
6ef6825cdc
commit
978137dc60
|
@ -4,7 +4,7 @@
|
||||||
* Copyright 1998 Eric Kohl
|
* Copyright 1998 Eric Kohl
|
||||||
*
|
*
|
||||||
* TODO:
|
* TODO:
|
||||||
* - Fix xBitmap and yBitmap in ImageList_DrawIndirect.
|
* - Fix ImageList_DrawIndirect (xBitmap, yBitmap, rgbFg, rgbBk, dwRop).
|
||||||
* - Fix ImageList_GetIcon.
|
* - Fix ImageList_GetIcon.
|
||||||
* - Fix drag functions.
|
* - Fix drag functions.
|
||||||
* - Fix ImageList_Read and ImageList_Write.
|
* - Fix ImageList_Read and ImageList_Write.
|
||||||
|
@ -382,9 +382,12 @@ ImageList_Copy (HIMAGELIST himlDst, INT32 iDst, HIMAGELIST himlSrc,
|
||||||
|
|
||||||
TRACE(imagelist, "iDst=%d iSrc=%d\n", iDst, iSrc);
|
TRACE(imagelist, "iDst=%d iSrc=%d\n", iDst, iSrc);
|
||||||
|
|
||||||
if ((himlSrc == NULL) || (himlDst == NULL)) return (FALSE);
|
if ((himlSrc == NULL) || (himlDst == NULL))
|
||||||
if ((iDst < 0) || (iDst >= himlDst->cCurImage)) return (FALSE);
|
return FALSE;
|
||||||
if ((iSrc < 0) || (iSrc >= himlSrc->cCurImage)) return (FALSE);
|
if ((iDst < 0) || (iDst >= himlDst->cCurImage))
|
||||||
|
return FALSE;
|
||||||
|
if ((iSrc < 0) || (iSrc >= himlSrc->cCurImage))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
hdcSrc = CreateCompatibleDC32 (0);
|
hdcSrc = CreateCompatibleDC32 (0);
|
||||||
if (himlDst == himlSrc)
|
if (himlDst == himlSrc)
|
||||||
|
@ -472,14 +475,12 @@ ImageList_Copy (HIMAGELIST himlDst, INT32 iDst, HIMAGELIST himlSrc,
|
||||||
if (himlSrc != himlDst)
|
if (himlSrc != himlDst)
|
||||||
DeleteDC32 (hdcDst);
|
DeleteDC32 (hdcDst);
|
||||||
|
|
||||||
return (TRUE);
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* ImageList_Create [COMCTL32.44]
|
* ImageList_Create [COMCTL32.44] Creates a new image list.
|
||||||
*
|
|
||||||
* Creates a new image list.
|
|
||||||
*
|
*
|
||||||
* PARAMS
|
* PARAMS
|
||||||
* cx [I] image height
|
* cx [I] image height
|
||||||
|
@ -489,8 +490,8 @@ ImageList_Copy (HIMAGELIST himlDst, INT32 iDst, HIMAGELIST himlSrc,
|
||||||
* cGrow [I] number of images by which image list grows
|
* cGrow [I] number of images by which image list grows
|
||||||
*
|
*
|
||||||
* RETURNS
|
* RETURNS
|
||||||
* Success: Handle of the created image list
|
* Success: Handle to the created image list
|
||||||
* Failure: 0
|
* Failure: NULL
|
||||||
*/
|
*/
|
||||||
|
|
||||||
HIMAGELIST WINAPI
|
HIMAGELIST WINAPI
|
||||||
|
@ -501,27 +502,27 @@ ImageList_Create (INT32 cx, INT32 cy, UINT32 flags,
|
||||||
HDC32 hdc;
|
HDC32 hdc;
|
||||||
INT32 nCount;
|
INT32 nCount;
|
||||||
HBITMAP32 hbmTemp;
|
HBITMAP32 hbmTemp;
|
||||||
WORD aBitBlend25[16] =
|
static WORD aBitBlend25[] =
|
||||||
{0x7777, 0xDDDD, 0x7777, 0xDDDD, 0x7777, 0xDDDD, 0x7777, 0xDDDD,
|
{0xAA, 0x00, 0x55, 0x00, 0xAA, 0x00, 0x55, 0x00};
|
||||||
0x7777, 0xDDDD, 0x7777, 0xDDDD, 0x7777, 0xDDDD, 0x7777, 0xDDDD};
|
|
||||||
WORD aBitBlend50[16] =
|
static WORD aBitBlend50[] =
|
||||||
{0x5555, 0xAAAA, 0x5555, 0xAAAA, 0x5555, 0xAAAA, 0x5555, 0xAAAA,
|
{0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA};
|
||||||
0x5555, 0xAAAA, 0x5555, 0xAAAA, 0x5555, 0xAAAA, 0x5555, 0xAAAA};
|
|
||||||
|
|
||||||
TRACE (imagelist, "(%d %d 0x%x %d %d)\n", cx, cy, flags, cInitial, cGrow);
|
TRACE (imagelist, "(%d %d 0x%x %d %d)\n", cx, cy, flags, cInitial, cGrow);
|
||||||
|
|
||||||
himl = (HIMAGELIST)LocalAlloc32 (LMEM_FIXED | LMEM_ZEROINIT,
|
himl = (HIMAGELIST)COMCTL32_Alloc (sizeof(struct _IMAGELIST));
|
||||||
sizeof(struct _IMAGELIST));
|
|
||||||
if (!himl)
|
if (!himl)
|
||||||
return (NULL);
|
return NULL;
|
||||||
himl->cx = cx;
|
|
||||||
himl->cy = cy;
|
himl->cx = cx;
|
||||||
himl->flags = flags;
|
himl->cy = cy;
|
||||||
|
himl->flags = flags;
|
||||||
himl->cMaxImage = cInitial + cGrow;
|
himl->cMaxImage = cInitial + cGrow;
|
||||||
himl->cInitial = cInitial;
|
himl->cInitial = cInitial;
|
||||||
himl->cGrow = cGrow;
|
himl->cGrow = cGrow;
|
||||||
himl->cCurImage = 0;
|
himl->cCurImage = 0;
|
||||||
himl->clrBk = CLR_NONE;
|
himl->clrFg = CLR_DEFAULT;
|
||||||
|
himl->clrBk = CLR_NONE;
|
||||||
|
|
||||||
/* initialize overlay mask indices */
|
/* initialize overlay mask indices */
|
||||||
for (nCount = 0; nCount < MAX_OVERLAYIMAGE; nCount++)
|
for (nCount = 0; nCount < MAX_OVERLAYIMAGE; nCount++)
|
||||||
|
@ -538,7 +539,7 @@ ImageList_Create (INT32 cx, INT32 cy, UINT32 flags,
|
||||||
1, himl->uBitsPixel, NULL);
|
1, himl->uBitsPixel, NULL);
|
||||||
if (himl->hbmImage == 0) {
|
if (himl->hbmImage == 0) {
|
||||||
ERR(imagelist, "Error creating image bitmap!\n");
|
ERR(imagelist, "Error creating image bitmap!\n");
|
||||||
return (0);
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (himl->flags & ILC_MASK) {
|
if (himl->flags & ILC_MASK) {
|
||||||
|
@ -548,22 +549,22 @@ ImageList_Create (INT32 cx, INT32 cy, UINT32 flags,
|
||||||
ERR(imagelist, "Error creating mask bitmap!\n");
|
ERR(imagelist, "Error creating mask bitmap!\n");
|
||||||
if (himl->hbmImage)
|
if (himl->hbmImage)
|
||||||
DeleteObject32 (himl->hbmImage);
|
DeleteObject32 (himl->hbmImage);
|
||||||
return (0);
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
himl->hbmMask = 0;
|
himl->hbmMask = 0;
|
||||||
|
|
||||||
/* create blending brushes */
|
/* create blending brushes */
|
||||||
hbmTemp = CreateBitmap32 (16, 16, 1, 1, &aBitBlend25);
|
hbmTemp = CreateBitmap32 (8, 8, 1, 1, &aBitBlend25);
|
||||||
himl->hbrBlend25 = CreatePatternBrush32 (hbmTemp);
|
himl->hbrBlend25 = CreatePatternBrush32 (hbmTemp);
|
||||||
DeleteObject32 (hbmTemp);
|
DeleteObject32 (hbmTemp);
|
||||||
|
|
||||||
hbmTemp = CreateBitmap32 (16, 16, 1, 1, &aBitBlend50);
|
hbmTemp = CreateBitmap32 (8, 8, 1, 1, &aBitBlend50);
|
||||||
himl->hbrBlend50 = CreatePatternBrush32 (hbmTemp);
|
himl->hbrBlend50 = CreatePatternBrush32 (hbmTemp);
|
||||||
DeleteObject32 (hbmTemp);
|
DeleteObject32 (hbmTemp);
|
||||||
|
|
||||||
return (himl);
|
return himl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -583,15 +584,24 @@ ImageList_Create (INT32 cx, INT32 cy, UINT32 flags,
|
||||||
BOOL32 WINAPI
|
BOOL32 WINAPI
|
||||||
ImageList_Destroy (HIMAGELIST himl)
|
ImageList_Destroy (HIMAGELIST himl)
|
||||||
{
|
{
|
||||||
if (himl == NULL) return (FALSE);
|
if (!himl)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
/* delete image bitmaps */
|
||||||
if (himl->hbmImage)
|
if (himl->hbmImage)
|
||||||
DeleteObject32 (himl->hbmImage);
|
DeleteObject32 (himl->hbmImage);
|
||||||
if (himl->hbmMask)
|
if (himl->hbmMask)
|
||||||
DeleteObject32 (himl->hbmMask);
|
DeleteObject32 (himl->hbmMask);
|
||||||
|
|
||||||
LocalFree32 ((HLOCAL32)himl);
|
/* delete blending brushes */
|
||||||
return (TRUE);
|
if (himl->hbrBlend25)
|
||||||
|
DeleteObject32 (himl->hbrBlend25);
|
||||||
|
if (himl->hbrBlend50)
|
||||||
|
DeleteObject32 (himl->hbrBlend50);
|
||||||
|
|
||||||
|
COMCTL32_Free (himl);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -633,7 +643,7 @@ ImageList_DragEnter (HWND32 hwndLock, INT32 x, INT32 y)
|
||||||
|
|
||||||
ImageList_DragShowNolock (TRUE);
|
ImageList_DragShowNolock (TRUE);
|
||||||
|
|
||||||
return (FALSE);
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -878,11 +888,14 @@ ImageList_DrawIndirect (IMAGELISTDRAWPARAMS *pimldp)
|
||||||
BOOL32 bBlend25;
|
BOOL32 bBlend25;
|
||||||
BOOL32 bBlend50;
|
BOOL32 bBlend50;
|
||||||
|
|
||||||
if (pimldp == NULL) return (FALSE);
|
if (pimldp == NULL)
|
||||||
if (pimldp->cbSize < sizeof(IMAGELISTDRAWPARAMS)) return (FALSE);
|
return FALSE;
|
||||||
if (pimldp->himl == NULL) return (FALSE);
|
if (pimldp->cbSize < sizeof(IMAGELISTDRAWPARAMS))
|
||||||
if ((pimldp->i < 0) || (pimldp->i >= pimldp->himl->cCurImage))
|
|
||||||
return (FALSE);
|
return (FALSE);
|
||||||
|
if (pimldp->himl == NULL)
|
||||||
|
return FALSE;
|
||||||
|
if ((pimldp->i < 0) || (pimldp->i >= pimldp->himl->cCurImage))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
himlLocal = pimldp->himl;
|
himlLocal = pimldp->himl;
|
||||||
|
|
||||||
|
@ -1197,8 +1210,8 @@ ImageList_GetIcon (HIMAGELIST himl, INT32 i, UINT32 fStyle)
|
||||||
HDC32 hdcSrc, hdcDst;
|
HDC32 hdcSrc, hdcDst;
|
||||||
INT32 nWidth, nHeight;
|
INT32 nWidth, nHeight;
|
||||||
|
|
||||||
if (himl == NULL) return 0;
|
if ((himl == NULL) ||(i < 0) || (i >= himl->cCurImage))
|
||||||
if ((i < 0) || (i >= himl->cCurImage)) return 0;
|
return 0;
|
||||||
|
|
||||||
nWidth = GetSystemMetrics32 (SM_CXICON);
|
nWidth = GetSystemMetrics32 (SM_CXICON);
|
||||||
nHeight = GetSystemMetrics32 (SM_CYICON);
|
nHeight = GetSystemMetrics32 (SM_CYICON);
|
||||||
|
@ -1207,8 +1220,8 @@ ImageList_GetIcon (HIMAGELIST himl, INT32 i, UINT32 fStyle)
|
||||||
hdcDst = CreateCompatibleDC32(0);
|
hdcDst = CreateCompatibleDC32(0);
|
||||||
|
|
||||||
ii.fIcon = TRUE;
|
ii.fIcon = TRUE;
|
||||||
ii.xHotspot = 0;
|
ii.xHotspot = nWidth / 2;
|
||||||
ii.yHotspot = 0;
|
ii.yHotspot = nHeight / 2;
|
||||||
ii.hbmMask = CreateCompatibleBitmap32 (hdcDst, nWidth, nHeight);
|
ii.hbmMask = CreateCompatibleBitmap32 (hdcDst, nWidth, nHeight);
|
||||||
ii.hbmColor = CreateCompatibleBitmap32 (hdcDst, nWidth, nHeight);
|
ii.hbmColor = CreateCompatibleBitmap32 (hdcDst, nWidth, nHeight);
|
||||||
|
|
||||||
|
@ -1236,7 +1249,7 @@ ImageList_GetIcon (HIMAGELIST himl, INT32 i, UINT32 fStyle)
|
||||||
DeleteObject32 (ii.hbmMask);
|
DeleteObject32 (ii.hbmMask);
|
||||||
DeleteObject32 (ii.hbmColor);
|
DeleteObject32 (ii.hbmColor);
|
||||||
|
|
||||||
return (hIcon);
|
return hIcon;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1261,15 +1274,17 @@ ImageList_GetIcon (HIMAGELIST himl, INT32 i, UINT32 fStyle)
|
||||||
BOOL32 WINAPI
|
BOOL32 WINAPI
|
||||||
ImageList_GetIconSize (HIMAGELIST himl, INT32 *cx, INT32 *cy)
|
ImageList_GetIconSize (HIMAGELIST himl, INT32 *cx, INT32 *cy)
|
||||||
{
|
{
|
||||||
|
if (himl == NULL)
|
||||||
if (himl == NULL) return (FALSE);
|
return FALSE;
|
||||||
|
if ((himl->cx <= 0) || (himl->cy <= 0))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
if (cx)
|
if (cx)
|
||||||
*cx = himl->cx;
|
*cx = himl->cx;
|
||||||
|
|
||||||
if (cy)
|
if (cy)
|
||||||
*cy = himl->cy;
|
*cy = himl->cy;
|
||||||
return (TRUE);
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1292,7 +1307,7 @@ ImageList_GetImageCount (HIMAGELIST himl)
|
||||||
if (himl == NULL)
|
if (himl == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return (himl->cCurImage);
|
return himl->cCurImage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1314,8 +1329,10 @@ ImageList_GetImageCount (HIMAGELIST himl)
|
||||||
BOOL32 WINAPI
|
BOOL32 WINAPI
|
||||||
ImageList_GetImageInfo (HIMAGELIST himl, INT32 i, IMAGEINFO *pImageInfo)
|
ImageList_GetImageInfo (HIMAGELIST himl, INT32 i, IMAGEINFO *pImageInfo)
|
||||||
{
|
{
|
||||||
if ((himl == NULL) || (pImageInfo == NULL)) return (FALSE);
|
if ((himl == NULL) || (pImageInfo == NULL))
|
||||||
if ((i < 0) || (i >= himl->cCurImage)) return (FALSE);
|
return FALSE;
|
||||||
|
if ((i < 0) || (i >= himl->cCurImage))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
pImageInfo->hbmImage = himl->hbmImage;
|
pImageInfo->hbmImage = himl->hbmImage;
|
||||||
pImageInfo->hbmMask = himl->hbmMask;
|
pImageInfo->hbmMask = himl->hbmMask;
|
||||||
|
@ -1325,7 +1342,7 @@ ImageList_GetImageInfo (HIMAGELIST himl, INT32 i, IMAGEINFO *pImageInfo)
|
||||||
pImageInfo->rcImage.left = i * himl->cx;
|
pImageInfo->rcImage.left = i * himl->cx;
|
||||||
pImageInfo->rcImage.right = (i+1) * himl->cx;
|
pImageInfo->rcImage.right = (i+1) * himl->cx;
|
||||||
|
|
||||||
return (TRUE);
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1335,7 +1352,7 @@ ImageList_GetImageInfo (HIMAGELIST himl, INT32 i, IMAGEINFO *pImageInfo)
|
||||||
* Retrieves the rectangle of the specified image in an image list.
|
* Retrieves the rectangle of the specified image in an image list.
|
||||||
*
|
*
|
||||||
* PARAMS
|
* PARAMS
|
||||||
* himl [I] image list handle
|
* himl [I] handle to the image list
|
||||||
* i [I] image index
|
* i [I] image index
|
||||||
* lpRect [O] pointer to the image rectangle
|
* lpRect [O] pointer to the image rectangle
|
||||||
*
|
*
|
||||||
|
@ -1350,15 +1367,17 @@ ImageList_GetImageInfo (HIMAGELIST himl, INT32 i, IMAGEINFO *pImageInfo)
|
||||||
BOOL32 WINAPI
|
BOOL32 WINAPI
|
||||||
ImageList_GetImageRect (HIMAGELIST himl, INT32 i, LPRECT32 lpRect)
|
ImageList_GetImageRect (HIMAGELIST himl, INT32 i, LPRECT32 lpRect)
|
||||||
{
|
{
|
||||||
if ((himl == NULL) || (lpRect == NULL)) return (FALSE);
|
if ((himl == NULL) || (lpRect == NULL))
|
||||||
if ((i < 0) || (i >= himl->cCurImage)) return (FALSE);
|
return FALSE;
|
||||||
|
if ((i < 0) || (i >= himl->cCurImage))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
lpRect->left = i * himl->cx;
|
lpRect->left = i * himl->cx;
|
||||||
lpRect->top = 0;
|
lpRect->top = 0;
|
||||||
lpRect->right = lpRect->left + himl->cx;
|
lpRect->right = lpRect->left + himl->cx;
|
||||||
lpRect->bottom = himl->cy;
|
lpRect->bottom = himl->cy;
|
||||||
|
|
||||||
return (TRUE);
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1516,17 +1535,18 @@ ImageList_Merge (HIMAGELIST himl1, INT32 i1, HIMAGELIST himl2, INT32 i2,
|
||||||
INT32 xOff1, yOff1, xOff2, yOff2;
|
INT32 xOff1, yOff1, xOff2, yOff2;
|
||||||
INT32 nX1, nX2;
|
INT32 nX1, nX2;
|
||||||
|
|
||||||
if ((himl1 == NULL) || (himl2 == NULL)) return (NULL);
|
if ((himl1 == NULL) || (himl2 == NULL))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
/* check indices */
|
/* check indices */
|
||||||
if ((i1 < 0) || (i1 >= himl1->cCurImage)) {
|
if ((i1 < 0) || (i1 >= himl1->cCurImage)) {
|
||||||
ERR (imagelist, "Index 1 out of range! %d\n", i1);
|
ERR (imagelist, "Index 1 out of range! %d\n", i1);
|
||||||
return (NULL);
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((i2 < 0) || (i2 >= himl2->cCurImage)) {
|
if ((i2 < 0) || (i2 >= himl2->cCurImage)) {
|
||||||
ERR (imagelist, "Index 2 out of range! %d\n", i2);
|
ERR (imagelist, "Index 2 out of range! %d\n", i2);
|
||||||
return (NULL);
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dx > 0) {
|
if (dx > 0) {
|
||||||
|
@ -1601,7 +1621,7 @@ ImageList_Merge (HIMAGELIST himl1, INT32 i1, HIMAGELIST himl2, INT32 i2,
|
||||||
DeleteDC32 (hdcDstImage);
|
DeleteDC32 (hdcDstImage);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (himlDst);
|
return himlDst;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1619,7 +1639,7 @@ ImageList_Merge (HIMAGELIST himl1, INT32 i1, HIMAGELIST himl2, INT32 i2,
|
||||||
*
|
*
|
||||||
* NOTES
|
* NOTES
|
||||||
* This function can not be implemented yet, because
|
* This function can not be implemented yet, because
|
||||||
* IStream32::Read is not implemented.
|
* IStream32::Read is not implemented yet.
|
||||||
*
|
*
|
||||||
* BUGS
|
* BUGS
|
||||||
* empty stub.
|
* empty stub.
|
||||||
|
@ -1655,12 +1675,12 @@ ImageList_Remove (HIMAGELIST himl, INT32 i)
|
||||||
|
|
||||||
if ((i < -1) || (i >= himl->cCurImage)) {
|
if ((i < -1) || (i >= himl->cCurImage)) {
|
||||||
ERR (imagelist, "index out of range! %d\n", i);
|
ERR (imagelist, "index out of range! %d\n", i);
|
||||||
return (FALSE);
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (himl->cCurImage == 0) {
|
if (himl->cCurImage == 0) {
|
||||||
ERR (imagelist, "image list is already empty!\n");
|
ERR (imagelist, "image list is already empty!\n");
|
||||||
return (FALSE);
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i == -1) {
|
if (i == -1) {
|
||||||
|
@ -1756,7 +1776,7 @@ ImageList_Remove (HIMAGELIST himl, INT32 i)
|
||||||
himl->cMaxImage = himl->cCurImage + himl->cGrow;
|
himl->cMaxImage = himl->cCurImage + himl->cGrow;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (TRUE);
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1785,12 +1805,12 @@ ImageList_Replace (HIMAGELIST himl, INT32 i, HBITMAP32 hbmImage,
|
||||||
|
|
||||||
if (himl == NULL) {
|
if (himl == NULL) {
|
||||||
ERR (imagelist, "Invalid image list handle!\n");
|
ERR (imagelist, "Invalid image list handle!\n");
|
||||||
return (FALSE);
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((i >= himl->cCurImage) || (i < 0)) {
|
if ((i >= himl->cCurImage) || (i < 0)) {
|
||||||
ERR (imagelist, "Invalid image index!\n");
|
ERR (imagelist, "Invalid image index!\n");
|
||||||
return (FALSE);
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
hdcImageList = CreateCompatibleDC32 (0);
|
hdcImageList = CreateCompatibleDC32 (0);
|
||||||
|
@ -1817,7 +1837,7 @@ ImageList_Replace (HIMAGELIST himl, INT32 i, HBITMAP32 hbmImage,
|
||||||
DeleteDC32 (hdcImage);
|
DeleteDC32 (hdcImage);
|
||||||
DeleteDC32 (hdcImageList);
|
DeleteDC32 (hdcImageList);
|
||||||
|
|
||||||
return (TRUE);
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1842,13 +1862,15 @@ ImageList_ReplaceIcon (HIMAGELIST himl, INT32 i, HICON32 hIcon)
|
||||||
HDC32 hdcImageList, hdcImage;
|
HDC32 hdcImageList, hdcImage;
|
||||||
INT32 nIndex;
|
INT32 nIndex;
|
||||||
HBITMAP32 hbmOldSrc, hbmOldDst;
|
HBITMAP32 hbmOldSrc, hbmOldDst;
|
||||||
ICONINFO ii;
|
ICONINFO ii;
|
||||||
BITMAP32 bmp;
|
BITMAP32 bmp;
|
||||||
|
|
||||||
TRACE (imagelist, "(0x%lx 0x%x 0x%x)\n", (DWORD)himl, i, hIcon);
|
TRACE (imagelist, "(0x%lx 0x%x 0x%x)\n", (DWORD)himl, i, hIcon);
|
||||||
|
|
||||||
if (himl == NULL) return (-1);
|
if (himl == NULL)
|
||||||
if ((i >= himl->cCurImage) || (i < -1)) return (-1);
|
return -1;
|
||||||
|
if ((i >= himl->cCurImage) || (i < -1))
|
||||||
|
return -1;
|
||||||
|
|
||||||
GetIconInfo (hIcon, &ii);
|
GetIconInfo (hIcon, &ii);
|
||||||
if (ii.hbmMask == 0)
|
if (ii.hbmMask == 0)
|
||||||
|
@ -1898,15 +1920,12 @@ ImageList_ReplaceIcon (HIMAGELIST himl, INT32 i, HICON32 hIcon)
|
||||||
DeleteDC32 (hdcImageList);
|
DeleteDC32 (hdcImageList);
|
||||||
if (hdcImage)
|
if (hdcImage)
|
||||||
DeleteDC32 (hdcImage);
|
DeleteDC32 (hdcImage);
|
||||||
|
|
||||||
// FIXME (imagelist, "deleting hbmColor!\n");
|
|
||||||
if (ii.hbmColor)
|
if (ii.hbmColor)
|
||||||
DeleteObject32 (ii.hbmColor);
|
DeleteObject32 (ii.hbmColor);
|
||||||
// FIXME (imagelist, "deleted hbmColor!\n");
|
|
||||||
if (ii.hbmMask)
|
if (ii.hbmMask)
|
||||||
DeleteObject32 (ii.hbmMask);
|
DeleteObject32 (ii.hbmMask);
|
||||||
|
|
||||||
return (nIndex);
|
return nIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1930,11 +1949,11 @@ ImageList_SetBkColor (HIMAGELIST himl, COLORREF clrBk)
|
||||||
COLORREF clrOldBk;
|
COLORREF clrOldBk;
|
||||||
|
|
||||||
if (himl == NULL)
|
if (himl == NULL)
|
||||||
return (CLR_NONE);
|
return CLR_NONE;
|
||||||
|
|
||||||
clrOldBk = himl->clrBk;
|
clrOldBk = himl->clrBk;
|
||||||
himl->clrBk = clrBk;
|
himl->clrBk = clrBk;
|
||||||
return (clrOldBk);
|
return clrOldBk;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1965,7 +1984,8 @@ ImageList_SetDragCursorImage (HIMAGELIST himlDrag, INT32 iDrag,
|
||||||
|
|
||||||
FIXME (imagelist, "semi-stub!\n");
|
FIXME (imagelist, "semi-stub!\n");
|
||||||
|
|
||||||
if (himlInternalDrag == NULL) return (FALSE);
|
if (himlInternalDrag == NULL)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
TRACE (imagelist, " dxH=%d dyH=%d nX=%d nY=%d\n",
|
TRACE (imagelist, " dxH=%d dyH=%d nX=%d nY=%d\n",
|
||||||
dxHotspot, dyHotspot, nInternalDragHotspotX, nInternalDragHotspotY);
|
dxHotspot, dyHotspot, nInternalDragHotspotX, nInternalDragHotspotY);
|
||||||
|
@ -1979,7 +1999,7 @@ ImageList_SetDragCursorImage (HIMAGELIST himlDrag, INT32 iDrag,
|
||||||
nInternalDragHotspotX = dxHotspot;
|
nInternalDragHotspotX = dxHotspot;
|
||||||
nInternalDragHotspotY = dyHotspot;
|
nInternalDragHotspotY = dyHotspot;
|
||||||
|
|
||||||
return (FALSE);
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2036,10 +2056,10 @@ ImageList_SetIconSize (HIMAGELIST himl, INT32 cx, INT32 cy)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
/* remove all images*/
|
/* remove all images*/
|
||||||
himl->cMaxImage = himl->cInitial + himl->cGrow;
|
himl->cMaxImage = himl->cInitial + himl->cGrow;
|
||||||
himl->cCurImage = 0;
|
himl->cCurImage = 0;
|
||||||
himl->cx = cx;
|
himl->cx = cx;
|
||||||
himl->cy = cy;
|
himl->cy = cy;
|
||||||
|
|
||||||
/* initialize overlay mask indices */
|
/* initialize overlay mask indices */
|
||||||
for (nCount = 0; nCount < MAX_OVERLAYIMAGE; nCount++)
|
for (nCount = 0; nCount < MAX_OVERLAYIMAGE; nCount++)
|
||||||
|
@ -2057,7 +2077,7 @@ ImageList_SetIconSize (HIMAGELIST himl, INT32 cx, INT32 cy)
|
||||||
1, 1, NULL);
|
1, 1, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (TRUE);
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2101,15 +2121,22 @@ ImageList_SetImageCount (HIMAGELIST himl, INT32 iImageCount)
|
||||||
{
|
{
|
||||||
SelectObject32 (hdcImageList, himl->hbmImage);
|
SelectObject32 (hdcImageList, himl->hbmImage);
|
||||||
SelectObject32 (hdcBitmap, hbmNewBitmap);
|
SelectObject32 (hdcBitmap, hbmNewBitmap);
|
||||||
|
|
||||||
|
/* copy images */
|
||||||
BitBlt32 (hdcBitmap, 0, 0, nCopyCount * himl->cx, himl->cy,
|
BitBlt32 (hdcBitmap, 0, 0, nCopyCount * himl->cx, himl->cy,
|
||||||
hdcImageList, 0, 0, SRCCOPY);
|
hdcImageList, 0, 0, SRCCOPY);
|
||||||
|
|
||||||
|
/* delete 'empty' image space */
|
||||||
|
SetBkColor32 (hdcBitmap, RGB(255, 255, 255));
|
||||||
|
SetTextColor32 (hdcBitmap, RGB(0, 0, 0));
|
||||||
|
PatBlt32 (hdcBitmap, nCopyCount * himl->cx, 0,
|
||||||
|
(nNewCount - nCopyCount) * himl->cx, himl->cy, BLACKNESS);
|
||||||
|
|
||||||
DeleteObject32 (himl->hbmImage);
|
DeleteObject32 (himl->hbmImage);
|
||||||
himl->hbmImage = hbmNewBitmap;
|
himl->hbmImage = hbmNewBitmap;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
|
||||||
ERR (imagelist, "Could not create new image bitmap !\n");
|
ERR (imagelist, "Could not create new image bitmap !\n");
|
||||||
}
|
|
||||||
|
|
||||||
if (himl->hbmMask)
|
if (himl->hbmMask)
|
||||||
{
|
{
|
||||||
|
@ -2119,15 +2146,22 @@ ImageList_SetImageCount (HIMAGELIST himl, INT32 iImageCount)
|
||||||
{
|
{
|
||||||
SelectObject32 (hdcImageList, himl->hbmMask);
|
SelectObject32 (hdcImageList, himl->hbmMask);
|
||||||
SelectObject32 (hdcBitmap, hbmNewBitmap);
|
SelectObject32 (hdcBitmap, hbmNewBitmap);
|
||||||
|
|
||||||
|
/* copy images */
|
||||||
BitBlt32 (hdcBitmap, 0, 0, nCopyCount * himl->cx, himl->cy,
|
BitBlt32 (hdcBitmap, 0, 0, nCopyCount * himl->cx, himl->cy,
|
||||||
hdcImageList, 0, 0, SRCCOPY);
|
hdcImageList, 0, 0, SRCCOPY);
|
||||||
|
|
||||||
|
/* delete 'empty' image space */
|
||||||
|
SetBkColor32 (hdcBitmap, RGB(255, 255, 255));
|
||||||
|
SetTextColor32 (hdcBitmap, RGB(0, 0, 0));
|
||||||
|
PatBlt32 (hdcBitmap, nCopyCount * himl->cx, 0,
|
||||||
|
(nNewCount - nCopyCount) * himl->cx, himl->cy, BLACKNESS);
|
||||||
|
|
||||||
DeleteObject32 (himl->hbmMask);
|
DeleteObject32 (himl->hbmMask);
|
||||||
himl->hbmMask = hbmNewBitmap;
|
himl->hbmMask = hbmNewBitmap;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
|
||||||
ERR (imagelist, "Could not create new mask bitmap!\n");
|
ERR (imagelist, "Could not create new mask bitmap!\n");
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DeleteDC32 (hdcImageList);
|
DeleteDC32 (hdcImageList);
|
||||||
|
|
|
@ -14,6 +14,7 @@ struct _IMAGELIST
|
||||||
HBRUSH32 hbrBlend25;
|
HBRUSH32 hbrBlend25;
|
||||||
HBRUSH32 hbrBlend50;
|
HBRUSH32 hbrBlend50;
|
||||||
COLORREF clrBk;
|
COLORREF clrBk;
|
||||||
|
COLORREF clrFg;
|
||||||
INT32 cInitial;
|
INT32 cInitial;
|
||||||
INT32 cGrow;
|
INT32 cGrow;
|
||||||
INT32 cMaxImage;
|
INT32 cMaxImage;
|
||||||
|
@ -27,6 +28,5 @@ struct _IMAGELIST
|
||||||
|
|
||||||
typedef struct _IMAGELIST *HIMAGELIST;
|
typedef struct _IMAGELIST *HIMAGELIST;
|
||||||
|
|
||||||
|
|
||||||
#endif /* __WINE_IMAGELIST_H */
|
#endif /* __WINE_IMAGELIST_H */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue