Ignore:
Timestamp:
Aug 13, 2009 3:04:40 PM (5 years ago)
Author:
sam
Message:

Make "fullgray" dithering work properly, to force greyscale rendering. To use
it, just call caca_set_dither_color(d, "fullgray") on the dither object.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/caca/dither.c

    r2826 r3640  
    10341034        }
    10351035
     1036        /* FIXME: hack to force greyscale */
     1037        if(d->color == COLOR_MODE_FULLGRAY)
     1038        {
     1039            unsigned int gray = (3 * rgba[0] + 4 * rgba[1] + rgba[2] + 4) / 8;
     1040            rgba[0] = rgba[1] = rgba[2] = gray;
     1041        }
     1042
    10361043        if(d->has_alpha && rgba[3] < 0x800)
    10371044        {
     
    10601067        for(i = 0; i < 16; i++)
    10611068        {
     1069            if(d->color == COLOR_MODE_FULLGRAY
     1070                && (rgb_palette[i * 3] != rgb_palette[i * 3 + 1]
     1071                     || rgb_palette[i * 3] != rgb_palette[i * 3 + 2]))
     1072                continue;
    10621073            dist = sq(rgba[0] - rgb_palette[i * 3])
    10631074                 + sq(rgba[1] - rgb_palette[i * 3 + 1])
     
    10751086
    10761087        /* FIXME: we currently only honour "full16" */
    1077         if(d->color == COLOR_MODE_FULL16)
     1088        if(d->color == COLOR_MODE_FULL16 || d->color == COLOR_MODE_FULLGRAY)
    10781089        {
    10791090            distmin = INT_MAX;
     
    10811092            {
    10821093                if(i == outbg)
     1094                    continue;
     1095                if(d->color == COLOR_MODE_FULLGRAY
     1096                    && (rgb_palette[i * 3] != rgb_palette[i * 3 + 1]
     1097                         || rgb_palette[i * 3] != rgb_palette[i * 3 + 2]))
    10831098                    continue;
    10841099                dist = sq(rgba[0] - rgb_palette[i * 3])
Note: See TracChangeset for help on using the changeset viewer.