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.