ChangeSet ID: 21129 CVSROOT: /opt/cvs-commit Module name: wine Changes by: julliard@winehq.org 2005/11/07 05:07:43
Modified files: dlls/user : cursoricon.c
Log message: Christian Costa titan.costa@wanadoo.fr When creating black & white cursor icon, handle special case where hbmColor is null and hbmMask specify a bitmap having twice the height and formatted so the upper half is the icon AND bitmask and the lower one is the OR bitmask.
Patch: http://cvs.winehq.org/patch.py?id=21129
Old revision New revision Changes Path 1.17 1.18 +9 -9 wine/dlls/user/cursoricon.c
Index: wine/dlls/user/cursoricon.c diff -u -p wine/dlls/user/cursoricon.c:1.17 wine/dlls/user/cursoricon.c:1.18 --- wine/dlls/user/cursoricon.c:1.17 7 Nov 2005 11: 7:43 -0000 +++ wine/dlls/user/cursoricon.c 7 Nov 2005 11: 7:43 -0000 @@ -1807,10 +1807,10 @@ HICON WINAPI CreateIconIndirect(PICONINF HICON16 hObj; int sizeXor,sizeAnd;
- GetObjectA( iconinfo->hbmColor, sizeof(bmpXor), &bmpXor ); + if (iconinfo->hbmColor) GetObjectA( iconinfo->hbmColor, sizeof(bmpXor), &bmpXor ); GetObjectA( iconinfo->hbmMask, sizeof(bmpAnd), &bmpAnd );
- sizeXor = bmpXor.bmHeight * bmpXor.bmWidthBytes; + sizeXor = iconinfo->hbmColor ? (bmpXor.bmHeight * bmpXor.bmWidthBytes) : 0; sizeAnd = bmpAnd.bmHeight * bmpAnd.bmWidthBytes;
hObj = GlobalAlloc16( GMEM_MOVEABLE, @@ -1833,16 +1833,16 @@ HICON WINAPI CreateIconIndirect(PICONINF info->ptHotSpot.y = iconinfo->yHotspot; }
- info->nWidth = bmpXor.bmWidth; - info->nHeight = bmpXor.bmHeight; - info->nWidthBytes = bmpXor.bmWidthBytes; - info->bPlanes = bmpXor.bmPlanes; - info->bBitsPerPixel = bmpXor.bmBitsPixel; + info->nWidth = bmpAnd.bmWidth; + info->nHeight = iconinfo->hbmColor ? bmpAnd.bmHeight : (bmpAnd.bmHeight / 2); + info->nWidthBytes = bmpAnd.bmWidthBytes; + info->bPlanes = bmpAnd.bmPlanes; + info->bBitsPerPixel = bmpAnd.bmBitsPixel;
/* Transfer the bitmap bits to the CURSORICONINFO structure */
- GetBitmapBits( iconinfo->hbmMask ,sizeAnd,(char*)(info + 1) ); - GetBitmapBits( iconinfo->hbmColor,sizeXor,(char*)(info + 1) +sizeAnd); + GetBitmapBits( iconinfo->hbmMask, sizeAnd, (char*)(info + 1) ); + if (iconinfo->hbmColor) GetBitmapBits( iconinfo->hbmColor, sizeXor, (char*)(info + 1) + sizeAnd ); GlobalUnlock16( hObj ); } return HICON_32(hObj);