Ignore:
Timestamp:
Jul 12, 1999, 5:58:51 PM (26 years ago)
Author:
cbratschi
Message:

wine-990704 updates, TBCUSTOMIZE implemented

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/comctl32/imagelist.c

    r164 r295  
    1 /* $Id: imagelist.c,v 1.4 1999-06-23 19:45:00 achimha Exp $ */
     1/* $Id: imagelist.c,v 1.5 1999-07-12 15:58:47 cbratschi Exp $ */
    22/*
    33 *  ImageList implementation
     
    2121 *    - ImageList_Draw, ImageList_DrawEx and ImageList_GetIcon use
    2222 *      ImageList_DrawIndirect. Since ImageList_DrawIndirect is still
    23  *      partially imlemented, the functions mentioned above will be 
     23 *      partially imlemented, the functions mentioned above will be
    2424 *      limited in functionality too.
    2525 */
     26
     27/* CB: todo
     28  - ImageList_Read
     29  - ImageList_Write
     30*/
    2631
    2732/* This must be defined because the HIMAGELIST type is just a pointer
     
    3237#define __WINE_IMAGELIST_C
    3338
    34 #include "imagelist.h" 
     39#include "imagelist.h"
    3540#include "commctrl.h"
    3641#include "comctl32.h"
     
    5762
    5863/*************************************************************************
    59  * IMAGELIST_InternalExpandBitmaps [Internal] 
     64 * IMAGELIST_InternalExpandBitmaps [Internal]
    6065 *
    6166 * Expands the bitmaps of an image list by the given number of images.
     
    101106
    102107    if (himl->hbmMask) {
    103         hbmNewBitmap = 
     108        hbmNewBitmap =
    104109            CreateBitmap (nNewWidth, himl->cy, 1, 1, NULL);
    105110
     
    138143
    139144INT WINAPI
    140 ImageList_Add (HIMAGELIST himl, HBITMAP hbmImage, HBITMAP hbmMask)
     145ImageList_Add (HIMAGELIST himl, HBITMAP hbmImage, HBITMAP hbmMask)
    141146{
    142147    HDC    hdcSrc, hdcDst;
     
    146151
    147152    if (!himl || !hbmImage)
    148         return -1;
     153        return -1;
    149154
    150155    GetObjectA (hbmImage, sizeof(BITMAP), (LPVOID)&bmp);
     
    164169    BitBlt (hdcDst, himl->cCurImage * himl->cx, 0,
    165170              bmp.bmWidth, himl->cy, hdcSrc, 0, 0, SRCCOPY);
    166          
     171
    167172    if (himl->hbmMask) {
    168173        if (hbmMask) {
    169             /* copy mask bitmap */
     174            /* copy mask bitmap */
    170175            SelectObject (hdcDst, himl->hbmMask);
    171176            SelectObject (hdcSrc, hbmMask);
    172177            BitBlt (hdcDst, nStartX, 0, bmp.bmWidth, himl->cy,
    173                       hdcSrc, 0, 0, SRCCOPY);
     178                      hdcSrc, 0, 0, SRCCOPY);
    174179        }
    175180        else {
    176             /* copy monochrome image to the mask bitmap */
     181            /* copy monochrome image to the mask bitmap */
    177182            SelectObject (hdcDst, himl->hbmMask);
    178183            SelectObject (hdcSrc, hbmImage);
    179             SetBkColor (hdcSrc, GetNearestColor (hdcSrc,
    180                           GetPixel (hdcSrc, 0, 0)));
    181             BitBlt (hdcDst, nStartX, 0, bmp.bmWidth, himl->cy,
    182                       hdcSrc, nStartX, 0, SRCCOPY);
     184            SetBkColor (hdcSrc, GetNearestColor (hdcSrc,
     185                          GetPixel (hdcSrc, 0, 0)));
     186            BitBlt (hdcDst, nStartX, 0, bmp.bmWidth, himl->cy,
     187                      hdcSrc, nStartX, 0, SRCCOPY);
    183188        }
    184189    }
     
    216221
    217222/*************************************************************************
    218  * ImageList_AddMasked [COMCTL32.41] 
     223 * ImageList_AddMasked [COMCTL32.41]
    219224 *
    220225 * Adds an image or images to an image list and creates a mask from the
     
    239244
    240245    if (himl == NULL)
    241         return -1;
     246        return -1;
    242247
    243248    if (!GetObjectA (hBitmap, sizeof(BITMAP), &bmp))
    244         return -1;
     249        return -1;
    245250
    246251    nImageCount = bmp.bmWidth / himl->cx;
     
    261266
    262267    if (himl->hbmMask) {
    263         COLORREF bkColor = (clrMask != CLR_DEFAULT) ? clrMask :
    264             GetNearestColor (hdcBitmap, GetPixel (hdcBitmap, 0, 0));
    265 
    266         /* create mask from image */
     268        COLORREF bkColor = (clrMask != CLR_DEFAULT) ? clrMask :
     269            GetNearestColor (hdcBitmap, GetPixel (hdcBitmap, 0, 0));
     270
     271        /* create mask from image */
    267272        hdcMask = CreateCompatibleDC (0);
    268273        SelectObject (hdcMask, himl->hbmMask);
    269274
    270         /* create monochrome image to the mask bitmap */
    271         SetBkColor (hdcBitmap, bkColor);
    272         BitBlt (hdcMask, nIndex * himl->cx, 0, bmp.bmWidth, himl->cy,
    273                   hdcBitmap, 0, 0, SRCCOPY);
     275        /* create monochrome image to the mask bitmap */
     276        SetBkColor (hdcBitmap, bkColor);
     277        BitBlt (hdcMask, nIndex * himl->cx, 0, bmp.bmWidth, himl->cy,
     278                  hdcBitmap, 0, 0, SRCCOPY);
    274279
    275280        DeleteDC (hdcMask);
     
    278283    DeleteDC (hdcImage);
    279284    DeleteDC (hdcBitmap);
    280  
     285
    281286    return nIndex;
    282287}
     
    284289
    285290/*************************************************************************
    286  * ImageList_BeginDrag [COMCTL32.42] 
     291 * ImageList_BeginDrag [COMCTL32.42]
    287292 *
    288293 * Creates a temporary image list that contains one image. It will be used
     
    302307BOOL WINAPI
    303308ImageList_BeginDrag (HIMAGELIST himlTrack, INT iTrack,
    304                      INT dxHotspot, INT dyHotspot)
     309                     INT dxHotspot, INT dyHotspot)
    305310{
    306311    HDC hdcSrc, hdcDst;
     
    309314
    310315    if (himlTrack == NULL)
    311         return FALSE;
     316        return FALSE;
    312317
    313318    if (himlInternalDrag)
     
    315320
    316321    himlInternalDrag =
    317         ImageList_Create (himlTrack->cx, himlTrack->cy,
    318                           himlTrack->flags, 1, 1);
     322        ImageList_Create (himlTrack->cx, himlTrack->cy,
     323                          himlTrack->flags, 1, 1);
    319324    if (himlInternalDrag == NULL) {
    320325//        ERR(imagelist, "Error creating drag image list!\n");
     
    350355
    351356/*************************************************************************
    352  * ImageList_Copy [COMCTL32.43] 
    353  *
    354  *  Copies an image of the source image list to an image of the 
     357 * ImageList_Copy [COMCTL32.43]
     358 *
     359 *  Copies an image of the source image list to an image of the
    355360 *  destination image list. Images can be copied or swapped.
    356361 *
     
    373378
    374379BOOL WINAPI
    375 ImageList_Copy (HIMAGELIST himlDst, INT iDst,   HIMAGELIST himlSrc,
    376                 INT iSrc, INT uFlags)
    377 {
    378     HDC hdcSrc, hdcDst;   
     380ImageList_Copy (HIMAGELIST himlDst, INT iDst,   HIMAGELIST himlSrc,
     381                INT iSrc, INT uFlags)
     382{
     383    HDC hdcSrc, hdcDst;
    379384
    380385//    TRACE(imagelist, "iDst=%d  iSrc=%d\n", iDst, iSrc);
    381386
    382387    if ((himlSrc == NULL) || (himlDst == NULL))
    383         return FALSE;
     388        return FALSE;
    384389    if ((iDst < 0) || (iDst >= himlDst->cCurImage))
    385         return FALSE;
     390        return FALSE;
    386391    if ((iSrc < 0) || (iSrc >= himlSrc->cCurImage))
    387         return FALSE;
     392        return FALSE;
    388393
    389394    hdcSrc = CreateCompatibleDC (0);
     
    401406                                       himlSrc->uBitsPixel, NULL);
    402407        hbmTempMask = CreateBitmap (himlSrc->cx, himlSrc->cy, 1,
    403                                       1, NULL);
     408                                      1, NULL);
    404409
    405410        /* copy (and stretch) destination to temporary bitmaps.(save) */
     
    494499HIMAGELIST WINAPI
    495500ImageList_Create (INT cx, INT cy, UINT flags,
    496                   INT cInitial, INT cGrow)
     501                  INT cInitial, INT cGrow)
    497502{
    498503    HIMAGELIST himl;
     
    500505    INT      nCount;
    501506    HBITMAP  hbmTemp;
    502     static WORD aBitBlend25[] = 
     507    static WORD aBitBlend25[] =
    503508        {0xAA, 0x00, 0x55, 0x00, 0xAA, 0x00, 0x55, 0x00};
    504509
     
    542547    if (himl->flags & ILC_MASK) {
    543548        himl->hbmMask = CreateBitmap (himl->cx * himl->cMaxImage, himl->cy,
    544                                         1, 1, NULL);
     549                                        1, 1, NULL);
    545550        if (himl->hbmMask == 0) {
    546551//            ERR(imagelist, "Error creating mask bitmap!\n");
     
    567572
    568573/*************************************************************************
    569  * ImageList_Destroy [COMCTL32.45] 
     574 * ImageList_Destroy [COMCTL32.45]
    570575 *
    571576 * Destroys an image list.
     
    581586BOOL WINAPI
    582587ImageList_Destroy (HIMAGELIST himl)
    583 { 
     588{
    584589    if (!himl)
    585         return FALSE;
     590        return FALSE;
    586591
    587592    /* delete image bitmaps */
     
    596601    if (himl->hbrBlend50)
    597602        DeleteObject (himl->hbrBlend50);
    598        
     603
    599604    COMCTL32_Free (himl);
    600605
     
    604609
    605610/*************************************************************************
    606  * ImageList_DragEnter [COMCTL32.46] 
     611 * ImageList_DragEnter [COMCTL32.46]
    607612 *
    608613 * Locks window update and displays the drag image at the given position.
     
    626631{
    627632    if (himlInternalDrag == NULL)
    628         return FALSE;
     633        return FALSE;
    629634
    630635    if (hwndLock)
    631         hwndInternalDrag = hwndLock;
     636        hwndInternalDrag = hwndLock;
    632637    else
    633         hwndInternalDrag = GetDesktopWindow ();
     638        hwndInternalDrag = GetDesktopWindow ();
    634639
    635640    xInternalPos = x;
     
    638643    hdcBackBuffer = CreateCompatibleDC (0);
    639644    hbmBackBuffer = CreateCompatibleBitmap (hdcBackBuffer,
    640                 himlInternalDrag->cx, himlInternalDrag->cy);
     645                himlInternalDrag->cx, himlInternalDrag->cy);
    641646
    642647    ImageList_DragShowNolock (TRUE);
     
    647652
    648653/*************************************************************************
    649  * ImageList_DragLeave [COMCTL32.47] 
     654 * ImageList_DragLeave [COMCTL32.47]
    650655 *
    651656 * Unlocks window update and hides the drag image.
     
    663668{
    664669    if (hwndLock)
    665         hwndInternalDrag = hwndLock;
     670        hwndInternalDrag = hwndLock;
    666671    else
    667         hwndInternalDrag = GetDesktopWindow ();
     672        hwndInternalDrag = GetDesktopWindow ();
    668673
    669674    ImageList_DragShowNolock (FALSE);
     
    677682
    678683/*************************************************************************
    679  * ImageList_DragMove [COMCTL32.48] 
     684 * ImageList_DragMove [COMCTL32.48]
    680685 *
    681686 * Moves the drag image.
     
    709714
    710715/*************************************************************************
    711  * ImageList_DragShowNolock [COMCTL32.49] 
     716 * ImageList_DragShowNolock [COMCTL32.49]
    712717 *
    713718 * Shows or hides the drag image.
     
    733738
    734739    hdcDrag = GetDCEx (hwndInternalDrag, 0,
    735                         DCX_WINDOW | DCX_CACHE | DCX_LOCKWINDOWUPDATE);
     740                        DCX_WINDOW | DCX_CACHE | DCX_LOCKWINDOWUPDATE);
    736741
    737742    if (bShow) {
    738         /* show drag image */
    739 
    740         /* save background */
    741 
    742         /* draw drag image */
     743        /* show drag image */
     744
     745        /* save background */
     746
     747        /* draw drag image */
    743748
    744749    }
    745750    else {
    746         /* hide drag image */
    747 
    748         /* restore background */
     751        /* hide drag image */
     752
     753        /* restore background */
    749754
    750755    }
     
    780785BOOL WINAPI
    781786ImageList_Draw (HIMAGELIST himl, INT i, HDC hdc,
    782                 INT x, INT y, UINT fStyle)
     787                INT x, INT y, UINT fStyle)
    783788{
    784789    IMAGELISTDRAWPARAMS imldp;
     
    833838BOOL WINAPI
    834839ImageList_DrawEx (HIMAGELIST himl, INT i, HDC hdc, INT x, INT y,
    835                   INT dx, INT dy, COLORREF rgbBk, COLORREF rgbFg,
    836                   UINT fStyle)
     840                  INT dx, INT dy, COLORREF rgbBk, COLORREF rgbFg,
     841                  UINT fStyle)
    837842{
    838843    IMAGELISTDRAWPARAMS imldp;
     
    858863
    859864/*************************************************************************
    860  * ImageList_DrawIndirect [COMCTL32.52] 
     865 * ImageList_DrawIndirect [COMCTL32.52]
    861866 *
    862867 * Draws an image using ...
     
    888893
    889894    if (pimldp == NULL)
    890         return FALSE;
     895        return FALSE;
    891896    if (pimldp->cbSize < sizeof(IMAGELISTDRAWPARAMS))
    892         return FALSE;
     897        return FALSE;
    893898    if (pimldp->himl == NULL)
    894         return FALSE;
     899        return FALSE;
    895900    if ((pimldp->i < 0) || (pimldp->i > pimldp->himl->cCurImage))
    896         return FALSE;
     901        return FALSE;
    897902
    898903    himlLocal = pimldp->himl;
     
    914919        bMaskTrans = TRUE;
    915920    }
    916    
     921
    917922    /* ILD_IMAGE state (changes) */
    918923    if (pimldp->fStyle & ILD_IMAGE)
     
    922927        bImageTrans = FALSE;
    923928    }
    924    
     929
    925930    /* ILD_MASK state (changes) */
    926931    if ((pimldp->fStyle & ILD_MASK) && (himlLocal->hbmMask))
     
    947952    if (bMask)
    948953    {
    949         /* draw the mask */
    950         SelectObject (hdcImageList, himlLocal->hbmMask);
    951         SetBkColor (hdcImageList, RGB(255, 255, 255));
    952         SetTextColor (hdcImageList, RGB(0, 0, 0));
    953         BitBlt (pimldp->hdcDst, pimldp->x, pimldp->y, cx, cy,
    954                   hdcImageList, himlLocal->cx * pimldp->i, 0,
    955                   bMaskTrans ? SRCAND : SRCCOPY);
     954        /* draw the mask */
     955        SelectObject (hdcImageList, himlLocal->hbmMask);
     956        SetBkColor (hdcImageList, RGB(255, 255, 255));
     957        SetTextColor (hdcImageList, RGB(0, 0, 0));
     958        BitBlt (pimldp->hdcDst, pimldp->x, pimldp->y, cx, cy,
     959                  hdcImageList, himlLocal->cx * pimldp->i, 0,
     960                  bMaskTrans ? SRCAND : SRCCOPY);
    956961    }
    957962
    958963    if (bImage)
    959964    {
    960         /* draw the image */
    961         SelectObject (hdcImageList, himlLocal->hbmImage);
     965        /* draw the image */
     966        SelectObject (hdcImageList, himlLocal->hbmImage);
    962967
    963968        if (!bImageTrans)
     
    993998            SelectObject (hdcImageList, himlLocal->hbmMask);
    994999            BitBlt (hdcTempImage, 0, 0, himlLocal->cx,
    995                       himlLocal->cy, hdcImageList, 
     1000                      himlLocal->cy, hdcImageList,
    9961001                      pimldp->i * himlLocal->cx, 0, SRCPAINT);
    9971002
    9981003            BitBlt (pimldp->hdcDst, pimldp->x, pimldp->y, cx, cy,
    999                       hdcTempImage, 0, 0, SRCAND);
     1004                      hdcTempImage, 0, 0, SRCAND);
    10001005
    10011006            /* fill */
     
    10111016            SelectObject (hdcImageList, himlLocal->hbmMask);
    10121017            BitBlt (hdcTempImage, 0, 0, himlLocal->cx,
    1013                       himlLocal->cy, hdcImageList, 
     1018                      himlLocal->cy, hdcImageList,
    10141019                      pimldp->i * himlLocal->cx, 0, SRCPAINT);
    10151020
     
    10201025            DeleteDC (hdcTempImage);
    10211026        }
    1022     }   
     1027    }
    10231028
    10241029    /* Draw overlay image */
    10251030    if (pimldp->fStyle & 0x0700) {
    1026         nOvlIdx = (pimldp->fStyle & 0x0700) >> 8;
    1027         if ((nOvlIdx >= 1) && (nOvlIdx <= MAX_OVERLAYIMAGE)) {
    1028             nOvlIdx = pimldp->himl->nOvlIdx[nOvlIdx - 1];
    1029             if ((nOvlIdx >= 0) && (nOvlIdx <= pimldp->himl->cCurImage)) {
    1030                 if (pimldp->himl->hbmMask) { 
     1031        nOvlIdx = (pimldp->fStyle & 0x0700) >> 8;
     1032        if ((nOvlIdx >= 1) && (nOvlIdx <= MAX_OVERLAYIMAGE)) {
     1033            nOvlIdx = pimldp->himl->nOvlIdx[nOvlIdx - 1];
     1034            if ((nOvlIdx >= 0) && (nOvlIdx <= pimldp->himl->cCurImage)) {
     1035                if (pimldp->himl->hbmMask) {
    10311036                    SelectObject (hdcImageList, pimldp->himl->hbmMask);
    10321037                    BitBlt (pimldp->hdcDst, pimldp->x, pimldp->y, cx, cy,
    10331038                              hdcImageList, pimldp->himl->cx * nOvlIdx, 0,
    1034                               SRCAND);
    1035                 } 
     1039                              SRCAND);
     1040                }
    10361041                SelectObject (hdcImageList, pimldp->himl->hbmImage);
    10371042                BitBlt (pimldp->hdcDst, pimldp->x, pimldp->y,
     
    10431048
    10441049    DeleteDC (hdcImageList);
    1045  
     1050
    10461051    return TRUE;
    10471052}
     
    11511156{
    11521157    if (himl == NULL)
    1153         return CLR_NONE;
     1158        return CLR_NONE;
    11541159
    11551160    return himl->clrBk;
     
    11871192
    11881193/*************************************************************************
    1189  * ImageList_GetIcon [COMCTL32.57] 
     1194 * ImageList_GetIcon [COMCTL32.57]
    11901195 *
    11911196 * Creates an icon from a masked image of an image list.
     
    12091214
    12101215    if ((himl == NULL) || (i < 0) || (i >= himl->cCurImage))
    1211         return 0;
     1216        return 0;
    12121217
    12131218    hdcSrc = CreateCompatibleDC(0);
     
    12221227    SelectObject (hdcDst, ii.hbmMask);
    12231228    if (himl->hbmMask) {
    1224         SelectObject (hdcSrc, himl->hbmMask);
    1225         BitBlt (hdcDst, 0, 0, himl->cx, himl->cy,
    1226                   hdcSrc, i * himl->cx, 0, SRCCOPY);
     1229        SelectObject (hdcSrc, himl->hbmMask);
     1230        BitBlt (hdcDst, 0, 0, himl->cx, himl->cy,
     1231                  hdcSrc, i * himl->cx, 0, SRCCOPY);
    12271232    }
    12281233    else
    1229         PatBlt (hdcDst, 0, 0, himl->cx, himl->cy, BLACKNESS);
     1234        PatBlt (hdcDst, 0, 0, himl->cx, himl->cy, BLACKNESS);
    12301235
    12311236    /* draw image*/
     
    12331238    SelectObject (hdcSrc, himl->hbmImage);
    12341239    BitBlt (hdcDst, 0, 0, himl->cx, himl->cy,
    1235               hdcSrc, i * himl->cx, 0, SRCCOPY);
    1236 
    1237     hIcon = CreateIconIndirect (&ii);   
     1240              hdcSrc, i * himl->cx, 0, SRCCOPY);
     1241
     1242    hIcon = CreateIconIndirect (&ii);
    12381243
    12391244    DeleteDC (hdcSrc);
     
    12681273{
    12691274    if (himl == NULL)
    1270         return FALSE;
     1275        return FALSE;
    12711276    if ((himl->cx <= 0) || (himl->cy <= 0))
    1272         return FALSE;
     1277        return FALSE;
    12731278
    12741279    if (cx)
    1275         *cx = himl->cx;
     1280        *cx = himl->cx;
    12761281    if (cy)
    1277         *cy = himl->cy;
     1282        *cy = himl->cy;
    12781283
    12791284    return TRUE;
     
    12981303{
    12991304    if (himl == NULL)
    1300         return 0;
     1305        return 0;
    13011306
    13021307    return himl->cCurImage;
     
    13231328{
    13241329    if ((himl == NULL) || (pImageInfo == NULL))
    1325         return FALSE;
     1330        return FALSE;
    13261331    if ((i < 0) || (i >= himl->cCurImage))
    1327         return FALSE;
     1332        return FALSE;
    13281333
    13291334    pImageInfo->hbmImage = himl->hbmImage;
    13301335    pImageInfo->hbmMask  = himl->hbmMask;
    1331    
     1336
    13321337    pImageInfo->rcImage.top    = 0;
    13331338    pImageInfo->rcImage.bottom = himl->cy;
    13341339    pImageInfo->rcImage.left   = i * himl->cx;
    13351340    pImageInfo->rcImage.right  = (i+1) * himl->cx;
    1336    
     1341
    13371342    return TRUE;
    13381343}
     
    13401345
    13411346/*************************************************************************
    1342  * ImageList_GetImageRect [COMCTL32.61] 
     1347 * ImageList_GetImageRect [COMCTL32.61]
    13431348 *
    13441349 * Retrieves the rectangle of the specified image in an image list.
     
    13611366{
    13621367    if ((himl == NULL) || (lpRect == NULL))
    1363         return FALSE;
     1368        return FALSE;
    13641369    if ((i < 0) || (i >= himl->cCurImage))
    1365         return FALSE;
     1370        return FALSE;
    13661371
    13671372    lpRect->left   = i * himl->cx;
     
    13971402
    13981403HIMAGELIST WINAPI
    1399 ImageList_LoadImageA (HINSTANCE hi, LPCSTR lpbmp, INT cx,       INT cGrow,
    1400                         COLORREF clrMask, UINT uType,   UINT uFlags)
     1404ImageList_LoadImageA (HINSTANCE hi, LPCSTR lpbmp, INT cx,       INT cGrow,
     1405                        COLORREF clrMask, UINT uType,   UINT uFlags)
    14011406{
    14021407    HIMAGELIST himl = NULL;
     
    14131418        BITMAP bmp;
    14141419        GetObjectA (handle, sizeof(BITMAP), &bmp);
     1420
     1421        /* To match windows behavior, if cx is set to zero and
     1422         the flag DI_DEFAULTSIZE is specified, cx becomes the
     1423         system metric value for icons. If the flag is not specified
     1424         the function sets the size to the height of the bitmap */
     1425        if (cx == 0)
     1426        {
     1427            if (uFlags & DI_DEFAULTSIZE)
     1428                cx = GetSystemMetrics (SM_CXICON);
     1429            else
     1430                cx = bmp.bmHeight;
     1431        }
     1432
    14151433        nImageCount = bmp.bmWidth / cx;
    14161434
     
    14251443        GetIconInfo (handle, &ii);
    14261444        GetObjectA (ii.hbmColor, sizeof(BITMAP), (LPVOID)&bmp);
    1427         himl = ImageList_Create (bmp.bmWidth, bmp.bmHeight, 
     1445        himl = ImageList_Create (bmp.bmWidth, bmp.bmHeight,
    14281446                                 ILC_MASK | ILC_COLOR, 1, cGrow);
    14291447        ImageList_Add (himl, ii.hbmColor, ii.hbmMask);
     
    14331451
    14341452    DeleteObject (handle);
    1435    
     1453
    14361454    return himl;
    14371455}
     
    14621480HIMAGELIST WINAPI
    14631481ImageList_LoadImageW (HINSTANCE hi, LPCWSTR lpbmp, INT cx, INT cGrow,
    1464                         COLORREF clrMask, UINT uType,   UINT uFlags)
     1482                        COLORREF clrMask, UINT uType,   UINT uFlags)
    14651483{
    14661484    HIMAGELIST himl = NULL;
     
    14891507        GetIconInfo (handle, &ii);
    14901508        GetObjectA (ii.hbmMask, sizeof(BITMAP), (LPVOID)&bmp);
    1491         himl = ImageList_Create (bmp.bmWidth, bmp.bmHeight, 
     1509        himl = ImageList_Create (bmp.bmWidth, bmp.bmHeight,
    14921510                                 ILC_MASK | ILC_COLOR, 1, cGrow);
    14931511        ImageList_Add (himl, ii.hbmColor, ii.hbmMask);
     
    14971515
    14981516    DeleteObject (handle);
    1499    
     1517
    15001518    return himl;
    15011519}
     
    15031521
    15041522/*************************************************************************
    1505  * ImageList_Merge [COMCTL32.65] 
     1523 * ImageList_Merge [COMCTL32.65]
    15061524 *
    15071525 * Creates a new image list that contains a merged image from the specified
     
    15231541HIMAGELIST WINAPI
    15241542ImageList_Merge (HIMAGELIST himl1, INT i1, HIMAGELIST himl2, INT i2,
    1525                 INT dx, INT dy)
     1543                INT dx, INT dy)
    15261544{
    15271545    HIMAGELIST himlDst = NULL;
     
    15321550
    15331551    if ((himl1 == NULL) || (himl2 == NULL))
    1534         return NULL;
     1552        return NULL;
    15351553
    15361554    /* check indices */
     
    15841602        nX1 = i1 * himl1->cx;
    15851603        nX2 = i2 * himl2->cx;
    1586        
     1604
    15871605        /* copy image */
    15881606        SelectObject (hdcSrcImage, himl1->hbmImage);
    15891607        SelectObject (hdcDstImage, himlDst->hbmImage);
    1590         BitBlt (hdcDstImage, 0, 0, cxDst, cyDst, 
     1608        BitBlt (hdcDstImage, 0, 0, cxDst, cyDst,
    15911609                  hdcSrcImage, 0, 0, BLACKNESS);
    1592         BitBlt (hdcDstImage, xOff1, yOff1, himl1->cx, himl1->cy, 
     1610        BitBlt (hdcDstImage, xOff1, yOff1, himl1->cx, himl1->cy,
    15931611                  hdcSrcImage, nX1, 0, SRCCOPY);
    15941612
    15951613        SelectObject (hdcSrcImage, himl2->hbmMask);
    1596         BitBlt (hdcDstImage, xOff2, yOff2, himl2->cx, himl2->cy, 
     1614        BitBlt (hdcDstImage, xOff2, yOff2, himl2->cx, himl2->cy,
    15971615                  hdcSrcImage, nX2, 0, SRCAND);
    15981616
    15991617        SelectObject (hdcSrcImage, himl2->hbmImage);
    1600         BitBlt (hdcDstImage, xOff2, yOff2, himl2->cx, himl2->cy, 
     1618        BitBlt (hdcDstImage, xOff2, yOff2, himl2->cx, himl2->cy,
    16011619                  hdcSrcImage, nX2, 0, SRCPAINT);
    16021620
     
    16041622        SelectObject (hdcSrcImage, himl1->hbmMask);
    16051623        SelectObject (hdcDstImage, himlDst->hbmMask);
    1606         BitBlt (hdcDstImage, 0, 0, cxDst, cyDst, 
     1624        BitBlt (hdcDstImage, 0, 0, cxDst, cyDst,
    16071625                  hdcSrcImage, 0, 0, WHITENESS);
    1608         BitBlt (hdcDstImage, xOff1, yOff1, himl1->cx, himl1->cy, 
     1626        BitBlt (hdcDstImage, xOff1, yOff1, himl1->cx, himl1->cy,
    16091627                  hdcSrcImage, nX1, 0, SRCCOPY);
    16101628
    16111629        SelectObject (hdcSrcImage, himl2->hbmMask);
    1612         BitBlt (hdcDstImage, xOff2, yOff2, himl2->cx, himl2->cy, 
     1630        BitBlt (hdcDstImage, xOff2, yOff2, himl2->cx, himl2->cy,
    16131631                  hdcSrcImage, nX2, 0, SRCAND);
    16141632
     
    16161634        DeleteDC (hdcDstImage);
    16171635    }
    1618    
     1636
    16191637    return himlDst;
    16201638}
     
    17111729//        TRACE(imagelist, " - Max. number of images: %d / %d (Old/New)\n",
    17121730//                 himl->cMaxImage, himl->cCurImage + himl->cGrow - 1);
    1713        
     1731
    17141732        hbmNewImage =
    17151733            CreateBitmap (cxNew, himl->cy, 1, himl->uBitsPixel, NULL);
     
    17261744        if (i > 0) {
    17271745//            TRACE (imagelist, "Pre image copy: Copy %d images\n", i);
    1728        
     1746
    17291747            SelectObject (hdcSrc, himl->hbmImage);
    17301748            SelectObject (hdcDst, hbmNewImage);
     
    17771795
    17781796/*************************************************************************
    1779  * ImageList_Replace [COMCTL32.68] 
     1797 * ImageList_Replace [COMCTL32.68]
    17801798 *
    17811799 * Replaces an image in an image list with a new image.
     
    17941812BOOL WINAPI
    17951813ImageList_Replace (HIMAGELIST himl, INT i, HBITMAP hbmImage,
    1796                    HBITMAP hbmMask)
     1814                   HBITMAP hbmMask)
    17971815{
    17981816    HDC hdcImageList, hdcImage;
     
    18031821        return FALSE;
    18041822    }
    1805    
     1823
    18061824    if ((i >= himl->cCurImage) || (i < 0)) {
    18071825//        ERR (imagelist, "Invalid image index!\n");
     
    18641882
    18651883    if (himl == NULL)
    1866         return -1;
     1884        return -1;
    18671885    if ((i >= himl->cCurImage) || (i < -1))
    1868         return -1;
     1886        return -1;
    18691887
    18701888    GetIconInfo (hIcon, &ii);
    18711889//    if (ii.hbmMask == 0)
    1872 //      ERR (imagelist, "no mask!\n");
     1890//      ERR (imagelist, "no mask!\n");
    18731891//    if (ii.hbmColor == 0)
    1874 //      ERR (imagelist, "no color!\n");
     1892//      ERR (imagelist, "no color!\n");
    18751893    GetObjectA (ii.hbmMask, sizeof(BITMAP), (LPVOID)&bmp);
    18761894
     
    18881906//    TRACE (imagelist, "hdcImageList=0x%x!\n", hdcImageList);
    18891907//    if (hdcImageList == 0)
    1890 //      ERR (imagelist, "invalid hdcImageList!\n");
     1908//      ERR (imagelist, "invalid hdcImageList!\n");
    18911909
    18921910    hdcImage = CreateCompatibleDC (0);
    18931911//    TRACE (imagelist, "hdcImage=0x%x!\n", hdcImage);
    18941912//    if (hdcImage == 0)
    1895 //      ERR (imagelist, "invalid hdcImage!\n");
     1913//      ERR (imagelist, "invalid hdcImage!\n");
    18961914
    18971915    hbmOldDst = SelectObject (hdcImageList, himl->hbmImage);
     
    19131931
    19141932    if (hdcImageList)
    1915         DeleteDC (hdcImageList);
     1933        DeleteDC (hdcImageList);
    19161934    if (hdcImage)
    1917         DeleteDC (hdcImage);
     1935        DeleteDC (hdcImage);
    19181936    if (ii.hbmColor)
    1919         DeleteObject (ii.hbmColor);
     1937        DeleteObject (ii.hbmColor);
    19201938    if (ii.hbmMask)
    1921         DeleteObject (ii.hbmMask);
     1939        DeleteObject (ii.hbmMask);
    19221940
    19231941    return nIndex;
     
    19261944
    19271945/*************************************************************************
    1928  * ImageList_SetBkColor [COMCTL32.70] 
     1946 * ImageList_SetBkColor [COMCTL32.70]
    19291947 *
    19301948 * Sets the background color of an image list.
     
    19451963
    19461964    if (himl == NULL)
    1947         return CLR_NONE;
     1965        return CLR_NONE;
    19481966
    19491967    clrOldBk = himl->clrBk;
     
    19741992BOOL WINAPI
    19751993ImageList_SetDragCursorImage (HIMAGELIST himlDrag, INT iDrag,
    1976                               INT dxHotspot, INT dyHotspot)
     1994                              INT dxHotspot, INT dyHotspot)
    19771995{
    19781996    HIMAGELIST himlTemp;
     
    19811999
    19822000    if (himlInternalDrag == NULL)
    1983         return FALSE;
     2001        return FALSE;
    19842002
    19852003//    TRACE (imagelist, " dxH=%d dyH=%d nX=%d nY=%d\n",
    1986 //         dxHotspot, dyHotspot, nInternalDragHotspotX, nInternalDragHotspotY);
     2004//         dxHotspot, dyHotspot, nInternalDragHotspotX, nInternalDragHotspotY);
    19872005
    19882006    himlTemp = ImageList_Merge (himlInternalDrag, 0, himlDrag, iDrag,
    1989                                 dxHotspot, dyHotspot);
     2007                                dxHotspot, dyHotspot);
    19902008
    19912009    ImageList_Destroy (himlInternalDrag);
     
    20002018
    20012019/*************************************************************************
    2002  * ImageList_SetFilter [COMCTL32.76] 
     2020 * ImageList_SetFilter [COMCTL32.76]
    20032021 *
    20042022 * Sets a filter (or does something completely different)!!???
     
    20222040{
    20232041//    FIXME (imagelist, "(%p 0x%x 0x%lx):empty stub!\n",
    2024 //         himl, i, dwFilter);
     2042//         himl, i, dwFilter);
    20252043
    20262044    return FALSE;
     
    20492067
    20502068    if (!himl)
    2051         return FALSE;
     2069        return FALSE;
    20522070
    20532071    /* remove all images*/
     
    20992117
    21002118    if (!himl)
    2101         return FALSE;
     2119        return FALSE;
    21022120    if (himl->cCurImage >= iImageCount)
    2103         return FALSE;
     2121        return FALSE;
    21042122    if (himl->cMaxImage > iImageCount)
    2105         return TRUE;
     2123        return TRUE;
    21062124
    21072125    nNewCount = iImageCount + himl->cGrow;
     
    21182136        SelectObject (hdcBitmap, hbmNewBitmap);
    21192137
    2120         /* copy images */
     2138        /* copy images */
    21212139        BitBlt (hdcBitmap, 0, 0, nCopyCount * himl->cx, himl->cy,
    21222140                  hdcImageList, 0, 0, SRCCOPY);
    21232141
    2124         /* delete 'empty' image space */
    2125         SetBkColor (hdcBitmap, RGB(255, 255, 255));
    2126         SetTextColor (hdcBitmap, RGB(0, 0, 0));
    2127         PatBlt (hdcBitmap,  nCopyCount * himl->cx, 0,
    2128                   (nNewCount - nCopyCount) * himl->cx, himl->cy, BLACKNESS);
    2129 
    2130         DeleteObject (himl->hbmImage);
    2131         himl->hbmImage = hbmNewBitmap;
     2142        /* delete 'empty' image space */
     2143        SetBkColor (hdcBitmap, RGB(255, 255, 255));
     2144        SetTextColor (hdcBitmap, RGB(0, 0, 0));
     2145        PatBlt (hdcBitmap,  nCopyCount * himl->cx, 0,
     2146                  (nNewCount - nCopyCount) * himl->cx, himl->cy, BLACKNESS);
     2147
     2148        DeleteObject (himl->hbmImage);
     2149        himl->hbmImage = hbmNewBitmap;
    21322150    }
    21332151//    else
    2134 //      ERR (imagelist, "Could not create new image bitmap !\n");
     2152//      ERR (imagelist, "Could not create new image bitmap !\n");
    21352153
    21362154    if (himl->hbmMask)
     
    21432161            SelectObject (hdcBitmap, hbmNewBitmap);
    21442162
    2145             /* copy images */
     2163            /* copy images */
    21462164            BitBlt (hdcBitmap, 0, 0, nCopyCount * himl->cx, himl->cy,
    21472165                      hdcImageList, 0, 0, SRCCOPY);
    21482166
    2149             /* delete 'empty' image space */
    2150             SetBkColor (hdcBitmap, RGB(255, 255, 255));
    2151             SetTextColor (hdcBitmap, RGB(0, 0, 0));
    2152             PatBlt (hdcBitmap,  nCopyCount * himl->cx, 0, 
    2153                       (nNewCount - nCopyCount) * himl->cx, himl->cy, BLACKNESS);
     2167            /* delete 'empty' image space */
     2168            SetBkColor (hdcBitmap, RGB(255, 255, 255));
     2169            SetTextColor (hdcBitmap, RGB(0, 0, 0));
     2170            PatBlt (hdcBitmap,  nCopyCount * himl->cx, 0,
     2171                      (nNewCount - nCopyCount) * himl->cx, himl->cy, BLACKNESS);
    21542172
    21552173            DeleteObject (himl->hbmMask);
     
    21912209{
    21922210    if (!himl)
    2193         return FALSE;
     2211        return FALSE;
    21942212    if ((iOverlay < 1) || (iOverlay > MAX_OVERLAYIMAGE))
    2195         return FALSE;
     2213        return FALSE;
    21962214    if ((iImage < 0) || (iImage > himl->cCurImage))
    2197         return FALSE;
    2198    
     2215        return FALSE;
     2216
    21992217    himl->nOvlIdx[iOverlay - 1] = iImage;
    22002218    return TRUE;
     
    22272245//{
    22282246//    if (!himl)
    2229 //      return FALSE;
     2247//      return FALSE;
    22302248//
    22312249//    FIXME (imagelist, "empty stub!\n");
Note: See TracChangeset for help on using the changeset viewer.