ImageList updates
Dimitrie O. Paun
dpaun at rogers.com
Wed Sep 4 15:27:14 CDT 2002
ChangeLog:
-- fix ImageList_GetIcon to use ImageList_* functions for completness
-- tiny code cleanups
-- documentation updates
Index: dlls/comctl32/imagelist.c
===================================================================
RCS file: /var/cvs/wine/dlls/comctl32/imagelist.c,v
retrieving revision 1.57
diff -u -r1.57 imagelist.c
--- dlls/comctl32/imagelist.c 4 Sep 2002 18:44:46 -0000 1.57
+++ dlls/comctl32/imagelist.c 4 Sep 2002 20:06:13 -0000
@@ -22,13 +22,14 @@
*
* TODO:
* - Fix ImageList_DrawIndirect (rgbFg, rgbBk, dwRop).
- * - Fix ImageList_GetIcon.
* - Fix ImageList_SetFilter (undocumented).
* BTW does anybody know anything about this function???
* - It removes 12 Bytes from the stack (3 Parameters).
* - First parameter SHOULD be a HIMAGELIST.
* - Second parameter COULD be an index?????
* - Third parameter.... ?????????????????????
+ * - Add support for ILD_PRESERVEALPHA, ILD_SCALE, ILD_DPISCALE
+ * - Add support for ILS_GLOW, ILS_SHADOW, ILS_SATURATE, ILS_ALPHA
*
* Comments:
* - ImageList_Draw, ImageList_DrawEx and ImageList_GetIcon use
@@ -435,7 +436,7 @@
INT nOvlIdx;
HDC hImageDC;
HBITMAP hOldBitmap;
-
+
nOvlIdx = (pimldp->fStyle & ILD_OVERLAYMASK) >> 8;
if ( (nOvlIdx < 1) || (nOvlIdx > MAX_OVERLAYIMAGE)) return;
@@ -1526,10 +1527,7 @@
COLORREF WINAPI
ImageList_GetBkColor (HIMAGELIST himl)
{
- if (himl == NULL)
- return CLR_NONE;
-
- return himl->clrBk;
+ return himl ? himl->clrBk : CLR_NONE;
}
@@ -1600,50 +1598,38 @@
ImageList_GetIcon (HIMAGELIST himl, INT i, UINT fStyle)
{
ICONINFO ii;
- HICON hIcon;
- HBITMAP hOldSrcBitmap,hOldDstBitmap;
- HDC hdcSrc, hdcDst;
-
- if ((himl == NULL) || (i < 0) || (i >= himl->cCurImage)) {
- return 0;
- }
+ HICON hIcon;
+ HBITMAP hOldDstBitmap;
+ HDC hdcDst;
+
+ if ((himl == NULL) || (i < 0) || (i >= himl->cCurImage)) return 0;
- hdcSrc = CreateCompatibleDC(0);
hdcDst = CreateCompatibleDC(0);
ii.fIcon = TRUE;
- ii.hbmMask = CreateCompatibleBitmap (hdcDst, himl->cx, himl->cy);
/* draw mask*/
+ ii.hbmMask = CreateCompatibleBitmap (hdcDst, himl->cx, himl->cy);
hOldDstBitmap = (HBITMAP)SelectObject (hdcDst, ii.hbmMask);
- if (himl->hbmMask) {
- SelectObject (hdcSrc, himl->hbmMask);
- BitBlt (hdcDst, 0, 0, himl->cx, himl->cy,
- hdcSrc, i * himl->cx, 0, SRCCOPY);
- }
- else
- PatBlt (hdcDst, 0, 0, himl->cx, himl->cy, BLACKNESS);
+ ImageList_Draw(himl, i, hdcDst, 0, 0, ILD_MASK);
/* draw image*/
- hOldSrcBitmap = (HBITMAP)SelectObject (hdcSrc, himl->hbmImage);
- ii.hbmColor = CreateCompatibleBitmap (hdcSrc, himl->cx, himl->cy);
+ SelectObject (hdcDst, himl->hbmImage);
+ ii.hbmColor = CreateCompatibleBitmap (hdcDst, himl->cx, himl->cy);
SelectObject (hdcDst, ii.hbmColor);
- BitBlt (hdcDst, 0, 0, himl->cx, himl->cy,
- hdcSrc, i * himl->cx, 0, SRCCOPY);
+ ImageList_Draw(himl, i, hdcDst, 0, 0, fStyle);
/*
* CreateIconIndirect requires us to deselect the bitmaps from
* the DCs before calling
*/
- SelectObject(hdcSrc, hOldSrcBitmap);
SelectObject(hdcDst, hOldDstBitmap);
hIcon = CreateIconIndirect (&ii);
- DeleteDC (hdcSrc);
- DeleteDC (hdcDst);
DeleteObject (ii.hbmMask);
DeleteObject (ii.hbmColor);
+ DeleteDC (hdcDst);
return hIcon;
}
More information about the wine-patches
mailing list