Changeset 252


Ignore:
Timestamp:
Dec 15, 2003, 4:02:50 PM (17 years ago)
Author:
Sam Hocevar
Message:
  • src/bitmap.c: + If the alpha mask is 0, ignore alpha information. + Ditto if no alpha information is given with the palette.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/src/bitmap.c

    r249 r252  
    8787struct caca_bitmap
    8888{
    89     int bpp, palette;
     89    int bpp, has_palette, has_alpha;
    9090    int w, h, pitch;
    9191    int rmask, gmask, bmask, amask;
     
    137137
    138138    bitmap->bpp = bpp;
    139     bitmap->palette = 0;
     139    bitmap->has_palette = 0;
     140    bitmap->has_alpha = amask ? 1 : 0;
    140141
    141142    bitmap->w = w;
     
    161162    {
    162163        int i;
    163         bitmap->palette = 1;
     164        bitmap->has_palette = 1;
     165        bitmap->has_alpha = 0;
    164166        for(i = 0; i < 256; i++)
    165167        {
     
    167169            bitmap->green[i] = i * 0xfff / 256;
    168170            bitmap->blue[i] = i * 0xfff / 256;
    169             bitmap->alpha[i] = 0xfff;
    170171        }
    171172    }
     
    178179                             unsigned int blue[], unsigned int alpha[])
    179180{
    180     int i;
     181    int i, has_alpha = 0;
    181182
    182183    if(bitmap->bpp != 8)
     
    193194            bitmap->green[i] = green[i];
    194195            bitmap->blue[i] = blue[i];
    195             bitmap->alpha[i] = alpha[i];
     196            if(alpha[i])
     197            {
     198                bitmap->alpha[i] = alpha[i];
     199                has_alpha = 1;
     200            }
    196201        }
    197202    }
     203
     204    if(has_alpha)
     205        bitmap->has_alpha = has_alpha;
    198206}
    199207
     
    246254    }
    247255
    248     if(bitmap->palette)
     256    if(bitmap->has_palette)
    249257    {
    250258        *r += bitmap->red[bits];
     
    457465        }
    458466
    459         if(a < 0x100)
     467        if(bitmap->has_alpha && a < 0x800)
    460468            continue;
    461469
Note: See TracChangeset for help on using the changeset viewer.