Ignore:
Timestamp:
Mar 24, 2000, 8:24:48 PM (25 years ago)
Author:
sandervl
Message:

default to rgb555 for 16 bits dib sections

File:
1 edited

Legend:

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

    r3184 r3227  
    1 /* $Id: dibsect.cpp,v 1.21 2000-03-21 19:46:47 sandervl Exp $ */
     1/* $Id: dibsect.cpp,v 1.22 2000-03-24 19:24:47 sandervl Exp $ */
    22
    33/*
     
    7373                bmpsize *= 4;
    7474                break;
     75        default:
     76                dprintf(("Unsupported nr of bits %d", pbmi->biBitCount));
     77                DebugInt3();
     78                break;
    7579   }
    7680
     
    130134   dibinfo.dsOffset         = 0; // TODO: put the correct value here (if createdibsection with file handle)
    131135
    132    if(pbmi->biCompression == BI_BITFIELDS) {
    133         dibinfo.dsBitfields[0] = *((DWORD *)pColors);
    134         dibinfo.dsBitfields[1] = *((DWORD *)pColors+1);
    135         dibinfo.dsBitfields[2] = *((DWORD *)pColors+2);
     136   if(iUsage == DIB_PAL_COLORS || pbmi->biBitCount <= 8)
     137   {
     138        dibinfo.dsBitfields[0] = dibinfo.dsBitfields[1] = dibinfo.dsBitfields[2] = 0;
     139   }
     140   else {
     141        switch(pbmi->biBitCount)
     142        {
     143           case 16:
     144                dibinfo.dsBitfields[0] = (pbmi->biCompression == BI_BITFIELDS) ? *(DWORD *)pColors : 0x7c00;
     145                dibinfo.dsBitfields[1] = (pbmi->biCompression == BI_BITFIELDS) ? *((DWORD *)pColors + 1) : 0x03e0;
     146                dibinfo.dsBitfields[2] = (pbmi->biCompression == BI_BITFIELDS) ? *((DWORD *)pColors + 2) : 0x001f;
     147                break;
     148
     149           case 24:
     150                dibinfo.dsBitfields[0] = 0xff;
     151                dibinfo.dsBitfields[1] = 0xff00;
     152                dibinfo.dsBitfields[2] = 0xff0000;
     153                break;
     154
     155           case 32:
     156                dibinfo.dsBitfields[0] = (pbmi->biCompression == BI_BITFIELDS) ? *(DWORD *)pColors : 0xff;
     157                dibinfo.dsBitfields[1] = (pbmi->biCompression == BI_BITFIELDS) ? *((DWORD *)pColors + 1) : 0xff00;
     158                dibinfo.dsBitfields[2] = (pbmi->biCompression == BI_BITFIELDS) ? *((DWORD *)pColors + 2) : 0xff0000;
     159                if(dibinfo.dsBitfields[0] != 0xff && dibinfo.dsBitfields[1] != 0xff00 && dibinfo.dsBitfields[2] != 0xff0000) {
     160                        dprintf(("DIBSection: unsupported bitfields for 32 bits bitmap!!"));
     161                }
     162                break;
     163        }
    136164        dprintf(("BI_BITFIELDS %x %x %x", dibinfo.dsBitfields[0], dibinfo.dsBitfields[1], dibinfo.dsBitfields[2]));
    137165   }
Note: See TracChangeset for help on using the changeset viewer.