Ignore:
Timestamp:
Sep 23, 2006, 2:59:47 AM (14 years ago)
Author:
Sam Hocevar
Message:
  • Handle transparency in the IRC export.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/cucul/export.c

    r1078 r1089  
    503503        uint32_t *linechar = cv->chars + y * cv->width;
    504504
    505         uint8_t prevfg = -1;
    506         uint8_t prevbg = -1;
     505        uint8_t prevfg = 0x10;
     506        uint8_t prevbg = 0x10;
    507507
    508508        for(x = 0; x < cv->width; x++)
    509509        {
    510             uint8_t fg = palette[_cucul_argb32_to_ansi4fg(lineattr[x])];
    511             uint8_t bg = palette[_cucul_argb32_to_ansi4bg(lineattr[x])];
     510            uint32_t attr = lineattr[x];
     511            uint8_t fg = palette[_cucul_argb32_to_ansi4fg(attr)];
     512            uint8_t bg = palette[_cucul_argb32_to_ansi4bg(attr)];
    512513            uint32_t ch = linechar[x];
    513514
     515            if((attr & 0xffff) == CUCUL_COLOR_DEFAULT)
     516                fg = 0x10;
     517
     518            if((attr >> 16) == CUCUL_COLOR_TRANSPARENT)
     519                bg = 0x10;
    514520#if 0
    515521            if(bg == prevbg)
     
    539545            if(bg != prevbg || fg != prevfg)
    540546            {
    541                 cur += sprintf(cur, "\x03%d,%d", fg, bg);
     547                if(bg == 0x10)
     548                {
     549                    if(fg == 0x10)
     550                        cur += sprintf(cur, "\x0f");
     551                    else if(prevbg == 0x10)
     552                        cur += sprintf(cur, "\x03%d", fg);
     553                    else
     554                        cur += sprintf(cur, "\x0f\x03%d", fg);
     555                }
     556                else
     557                {
     558                    if(fg == 0x10)
     559                        cur += sprintf(cur, "\x0f\x03,%d", bg);
     560                    else
     561                        cur += sprintf(cur, "\x03%d,%d", fg, bg);
     562                }
     563
    542564                if(ch >= (uint32_t)'0' && ch <= (uint32_t)'9')
    543565                    cur += sprintf(cur, "\x02\x02");
Note: See TracChangeset for help on using the changeset viewer.