Ignore:
Timestamp:
Oct 29, 2006, 1:53:46 AM (14 years ago)
Author:
Sam Hocevar
Message:
  • Use the LSB of alpha and blue components to encode additional flags such as bold or underline. No higher level support for these yet, but at least everything is consistent.
  • Created cucul_set_attr_ansi() and cucul_set_attr_argb() which are bound to replace cucul_set_color() and cucul_set_truecolor().
Location:
libcaca/trunk/caca
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/caca/caca0.h

    r1015 r1254  
    131131
    132132#define caca_set_color(x, y) \
    133     (__caca0_fg = (x), __caca0_bg = (y), cucul_set_color(__caca0_cv, x, y))
     133    (__caca0_fg = (x), __caca0_bg = (y), \
     134     cucul_set_attr_ansi(__caca0_cv, x, y, 0))
    134135#define caca_get_fg_color() __caca0_fg
    135136#define caca_get_bg_color() __caca0_bg
  • libcaca/trunk/caca/driver_conio.c

    r1218 r1254  
    9898{
    9999    char *screen = dp->drv.p->screen;
    100     uint32_t *attr = dp->cv->attr;
     100    uint32_t *attrs = dp->cv->attrs;
    101101    uint32_t *chars = dp->cv->chars;
    102102    unsigned int n;
     
    108108        {
    109109            *screen++ = '[';
    110             *screen++ = _cucul_argb32_to_ansi8(*attr++);
     110            *screen++ = _cucul_attr_to_ansi8(*attrs++);
    111111            ch = ']';
    112112            chars++;
     
    114114        }
    115115        *screen++ = ch;
    116         *screen++ = _cucul_argb32_to_ansi8(*attr++);
     116        *screen++ = _cucul_attr_to_ansi8(*attrs++);
    117117    }
    118118#   if defined(SCREENUPDATE_IN_PC_H)
  • libcaca/trunk/caca/driver_gl.c

    r1233 r1254  
    215215    for(y = 0; y < dp->drv.p->height; y += dp->drv.p->font_height)
    216216    {
    217         uint32_t *attr = dp->cv->attr + line * dp->cv->width;
     217        uint32_t *attrs = dp->cv->attrs + line * dp->cv->width;
    218218
    219219        /* FIXME: optimise using stride */
    220220        for(x = 0; x < dp->drv.p->width; x += dp->drv.p->font_width)
    221221        {
    222             uint16_t bg = _cucul_argb32_to_rgb12bg(*attr++);
     222            uint16_t bg = _cucul_attr_to_rgb12bg(*attrs++);
    223223
    224224            glColor4b(((bg & 0xf00) >> 8) * 8,
     
    245245    for(y = 0; y < dp->drv.p->height; y += dp->drv.p->font_height, line++)
    246246    {
    247         uint32_t *attr = dp->cv->attr + line * dp->cv->width;
     247        uint32_t *attrs = dp->cv->attrs + line * dp->cv->width;
    248248        uint32_t *chars = dp->cv->chars + line * dp->cv->width;
    249249
    250         for(x = 0; x < dp->drv.p->width; x += dp->drv.p->font_width, attr++)
     250        for(x = 0; x < dp->drv.p->width; x += dp->drv.p->font_width, attrs++)
    251251        {
    252252            uint32_t ch = *chars++;
     
    272272                                        - (uint32_t)dp->drv.p->blocks[i]]);
    273273
    274                 fg = _cucul_argb32_to_rgb12fg(*attr);
     274                fg = _cucul_attr_to_rgb12fg(*attrs);
    275275                glColor3b(((fg & 0xf00) >> 8) * 8,
    276276                          ((fg & 0x0f0) >> 4) * 8,
     
    292292            if(fullwidth)
    293293            {
    294                 chars++; attr++; x += dp->drv.p->font_width;
     294                chars++; attrs++; x += dp->drv.p->font_width;
    295295            }
    296296        }
  • libcaca/trunk/caca/driver_ncurses.c

    r1218 r1254  
    197197{
    198198    int x, y;
    199     uint32_t *attr = dp->cv->attr;
     199    uint32_t *attrs = dp->cv->attrs;
    200200    uint32_t *chars = dp->cv->chars;
    201201    for(y = 0; y < (int)dp->cv->height; y++)
     
    204204        for(x = dp->cv->width; x--; )
    205205        {
    206             attrset(dp->drv.p->attr[_cucul_argb32_to_ansi8(*attr++)]);
     206            attrset(dp->drv.p->attr[_cucul_attr_to_ansi8(*attrs++)]);
    207207            ncurses_write_utf32(*chars++);
    208208        }
  • libcaca/trunk/caca/driver_slang.c

    r1218 r1254  
    202202{
    203203    int x, y;
    204     uint32_t *attr = dp->cv->attr;
     204    uint32_t *attrs = dp->cv->attrs;
    205205    uint32_t *chars = dp->cv->chars;
    206206    for(y = 0; y < (int)dp->cv->height; y++)
     
    218218             * bright backgrounds, it's just fucked up. */
    219219#if 0
    220             uint8_t fgcolor = _cucul_argb32_to_ansi4fg(*attr);
    221             uint8_t bgcolor = _cucul_argb32_to_ansi4bg(*attr);
     220            uint8_t fgcolor = _cucul_attr_to_ansi4fg(*attrs);
     221            uint8_t bgcolor = _cucul_attr_to_ansi4bg(*attrs);
    222222
    223223            if(fgcolor == bgcolor)
     
    232232                SLsmg_set_color(slang_assoc[fgcolor + 16 * bgcolor]);
    233233                SLsmg_write_char(' ');
    234                 attr++;
     234                attrs++;
    235235            }
    236236            else
    237237#endif
    238238            {
    239                 SLsmg_set_color(slang_assoc[_cucul_argb32_to_ansi8(*attr++)]);
     239                SLsmg_set_color(slang_assoc[_cucul_attr_to_ansi8(*attrs++)]);
    240240                slang_write_utf32(ch);
    241241            }
    242242#else
    243             SLsmg_set_color(_cucul_argb32_to_ansi8(*attr++));
     243            SLsmg_set_color(_cucul_attr_to_ansi8(*attrs++));
    244244            slang_write_utf32(ch);
    245245#endif
  • libcaca/trunk/caca/driver_vga.c

    r1218 r1254  
    116116{
    117117    char *screen = (char *)(intptr_t)0x000b8000;
    118     uint32_t *attr = dp->cv->attr;
     118    uint32_t *attrs = dp->cv->attrs;
    119119    uint32_t *chars = dp->cv->chars;
    120120    int n;
     
    126126        {
    127127            *screen++ = '[';
    128             *screen++ = _cucul_argb32_to_ansi8(*attr++);
     128            *screen++ = _cucul_attr_to_ansi8(*attrs++);
    129129            ch = ']';
    130130            chars++;
     
    132132        }
    133133        *screen++ = ch;
    134         *screen++ = _cucul_argb32_to_ansi8(*attr++);
     134        *screen++ = _cucul_attr_to_ansi8(*attrs++);
    135135    }
    136136}
  • libcaca/trunk/caca/driver_win32.c

    r1233 r1254  
    191191    SMALL_RECT rect;
    192192    CHAR_INFO *buffer = dp->drv.p->buffer;
    193     uint32_t *attr = dp->cv->attr;
     193    uint32_t *attrs = dp->cv->attrs;
    194194    uint32_t *chars = dp->cv->chars;
    195195    unsigned int n;
     
    215215
    216216        buffer->Attributes =
    217                 win32_fg_palette[_cucul_argb32_to_ansi4fg(*attr)]
    218                  | win32_bg_palette[_cucul_argb32_to_ansi4bg(*attr)];
    219         attr++;
     217                win32_fg_palette[_cucul_attr_to_ansi4fg(*attrs)]
     218                 | win32_bg_palette[_cucul_attr_to_ansi4bg(*attrs)];
     219        attrs++;
    220220        buffer++;
    221221    }
  • libcaca/trunk/caca/driver_x11.c

    r1233 r1254  
    247247        for(x = 0; x < dp->cv->width; x += len)
    248248        {
    249             uint32_t *attr = dp->cv->attr + x + y * dp->cv->width;
    250             uint16_t bg = _cucul_argb32_to_rgb12bg(*attr);
     249            uint32_t *attrs = dp->cv->attrs + x + y * dp->cv->width;
     250            uint16_t bg = _cucul_attr_to_rgb12bg(*attrs);
    251251
    252252            len = 1;
    253253            while(x + len < dp->cv->width
    254                    && _cucul_argb32_to_rgb12bg(attr[len]) == bg)
     254                   && _cucul_attr_to_rgb12bg(attrs[len]) == bg)
    255255                len++;
    256256
     
    272272        for(x = 0; x < dp->cv->width; x++, chars++)
    273273        {
    274             uint32_t *attr = dp->cv->attr + x + y * dp->cv->width;
     274            uint32_t *attrs = dp->cv->attrs + x + y * dp->cv->width;
    275275
    276276            /* Skip spaces */
     
    282282
    283283            XSetForeground(dp->drv.p->dpy, dp->drv.p->gc,
    284                            dp->drv.p->colors[_cucul_argb32_to_rgb12fg(*attr)]);
     284                           dp->drv.p->colors[_cucul_attr_to_rgb12fg(*attrs)]);
    285285
    286286            /* Plain ASCII, no problem. */
Note: See TracChangeset for help on using the changeset viewer.