Ignore:
Timestamp:
Nov 23, 2000, 8:23:01 PM (25 years ago)
Author:
sandervl
Message:

SetDIBits fix for compressed bitmaps

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/gdi32/dibsect.cpp

    r4574 r4681  
    1 /* $Id: dibsect.cpp,v 1.42 2000-11-09 18:16:56 sandervl Exp $ */
     1/* $Id: dibsect.cpp,v 1.43 2000-11-23 19:23:01 sandervl Exp $ */
    22
    33/*
     
    108108   pOS2bmp->cPlanes       = pbmi->biPlanes;
    109109   pOS2bmp->cBitCount     = pbmi->biBitCount;
    110    pOS2bmp->ulCompression = pbmi->biCompression;
     110   pOS2bmp->ulCompression = pbmi->biCompression; //same as OS/2 (uncompressed, rle8, rle4)
    111111   //SvL: Ignore BI_BITFIELDS_W type (GpiDrawBits fails otherwise)
    112112   if(pOS2bmp->ulCompression == BI_BITFIELDS_W) {
     
    297297   pOS2bmp->cPlanes       = pbmi->biPlanes;
    298298   pOS2bmp->cBitCount     = pbmi->biBitCount;
    299    pOS2bmp->ulCompression = pbmi->biCompression;
     299   pOS2bmp->ulCompression = pbmi->biCompression; //same as OS/2 (uncompressed, rle8, rle4)
     300   //SvL: Ignore BI_BITFIELDS_W type (GpiDrawBits fails otherwise)
     301   if(pOS2bmp->ulCompression == BI_BITFIELDS_W) {
     302        pOS2bmp->ulCompression = 0;
     303   }
    300304   pOS2bmp->cbImage       = pbmi->biSizeImage;
    301305
     
    364368   if(bits)
    365369   {
    366       int size = bmpsize*lines;
    367       memcpy(bmpBits+bmpsize*startscan, bits, size);
     370      if(pOS2bmp->ulCompression == BCA_UNCOMP) {
     371          int size = bmpsize*lines;
     372          memcpy(bmpBits+bmpsize*startscan, bits, size);
     373      }
     374      else {
     375          dprintf(("Compressed image!!"));
     376          if(startscan != 0) {
     377               dprintf(("WARNING: Compressed image & startscan != 0!!!!"));
     378          }
     379          memcpy(bmpBits, bits, pbmi->biSizeImage);
     380      }
    368381   }
    369382   return(lines);
Note: See TracChangeset for help on using the changeset viewer.