Changeset 4579 for trunk/src/user32/winicon.cpp
- Timestamp:
- Nov 9, 2000, 9:20:33 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/user32/winicon.cpp
r4573 r4579 1 /* $Id: winicon.cpp,v 1.1 1 2000-11-09 18:15:23 sandervl Exp $ */1 /* $Id: winicon.cpp,v 1.12 2000-11-09 20:20:33 sandervl Exp $ */ 2 2 /* 3 3 * Win32 Icon Code for OS/2 … … 470 470 HDC hdc = 0; 471 471 BOOL DoStretch; 472 INT size, colortablesize ;472 INT size, colortablesize, bwsize, colorsize; 473 473 474 474 hotspot.x = ICON_HOTSPOT; … … 497 497 DoStretch = (bmi->bmiHeader.biHeight/2 != height) || (bmi->bmiHeader.biWidth != width); 498 498 499 colorsize = DIB_GetDIBImageBytes(bmi->bmiHeader.biWidth, bmi->bmiHeader.biHeight/2, bmi->bmiHeader.biBitCount); 500 bwsize = (bmi->bmiHeader.biWidth * bmi->bmiHeader.biHeight/2)/8; 501 499 502 /* Check bitmap header */ 500 if ((bmi->bmiHeader.biSize != sizeof(BITMAPCOREHEADER)) &&501 (bmi->bmiHeader.biSize != sizeof(BITMAPINFOHEADER) ||502 bmi->bmiHeader.biCompression != BI_RGB) )503 if((bmi->bmiHeader.biSize != sizeof(BITMAPCOREHEADER)) && 504 (bmi->bmiHeader.biSize != sizeof(BITMAPINFOHEADER) || 505 bmi->bmiHeader.biCompression != BI_RGB) ) 503 506 { 504 507 return 0; … … 590 593 if (DoStretch) 591 594 { 595 //TODO: rearrange mask if and & xor mask present!!!!! 596 if(cbSize - size - colorsize - bwsize == bwsize) 597 { 598 dprintf(("TODO: rearrange mask because and & xor mask present!!!!!")); 599 } 592 600 if ((hAndBits = CreateBitmap(width, height, 1, 1, NULL))) 593 601 { … … 619 627 newpix += ((height-1)*linewidth); 620 628 621 for(int i=0;i<height;i++) { 622 memcpy(newpix, xbits, linewidth); 623 newpix -= linewidth; 624 xbits += linewidth; 629 if(cbSize - size - colorsize - bwsize == bwsize) 630 {//this means an AND and XOR mask is present (interleaved; and/xor) 631 for(int i=0;i<height;i++) { 632 memcpy(newpix, xbits, linewidth); 633 newpix -= linewidth; 634 xbits += linewidth*2; 635 } 636 } 637 else { 638 for(int i=0;i<height;i++) { 639 memcpy(newpix, xbits, linewidth); 640 newpix -= linewidth; 641 xbits += linewidth; 642 } 625 643 } 626 644 newpix += linewidth;
Note:
See TracChangeset
for help on using the changeset viewer.