Ignore:
Timestamp:
Oct 23, 1999, 12:21:00 PM (26 years ago)
Author:
sandervl
Message:

Dani's icon conversion fix

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/cvticon.cpp

    r997 r1407  
    1 /* $Id: cvticon.cpp,v 1.4 1999-09-21 08:24:53 sandervl Exp $ */
     1/* $Id: cvticon.cpp,v 1.5 1999-10-23 10:21:00 sandervl Exp $ */
    22
    33/*
     
    8585 BITMAPFILEHEADER2 *iconhdr;
    8686 BITMAPFILEHEADER2 *iconhdr2;
     87 char *pAnd, *pXor;
    8788
    8889  bwsize   = (bmpHdr->biWidth*(bmpHdr->biHeight/2))/8;
     
    175176        }
    176177  }
     178
     179#if 0
    177180  //write 2*mono pixels + color pixels
    178181  //There are icons without an AND mask, so check for it
    179   if(bmpHdr->biSizeImage == colorsize) 
     182  if(bmpHdr->biSizeImage == colorsize)
    180183  {
    181184        memset((char *)os2rgb, 0, bwsize);
     
    192195//        memcpy((char *)os2rgb+2*bwsize, (char *)rgb, colorsize);
    193196  }
     197#else
     198  pXor = (char *)os2rgb;
     199  pAnd = (char *)os2rgb + bwsize;
     200
     201  if ((size - (bmpHdr->biSize - rgbsize - colorsize)) == bwsize) {
     202    char *q;
     203    int i, linesize;
     204
     205    linesize = bmpHdr->biWidth / 8;
     206    q = (char *)rgb + colorsize;
     207    for (i = 0; i < (bmpHdr->biHeight/2); i++) {
     208      memcpy (pAnd, q, linesize);
     209      pAnd += linesize;
     210      q += linesize;
     211
     212      memcpy (pXor, q, linesize);
     213      pXor += linesize;
     214      q += linesize;
     215    }
     216  } else {
     217    memcpy (pAnd, (char *)rgb + colorsize, bwsize);
     218    memset (pXor, 0, bwsize);
     219  }
     220  memcpy((char *)os2rgb+2*bwsize, (char *)rgb, colorsize);
     221#endif
     222
    194223  *os2size = iconsize;
    195224  return (void *)iconhdr;
Note: See TracChangeset for help on using the changeset viewer.