Ignore:
Timestamp:
Apr 6, 2006, 3:41:56 PM (15 years ago)
Author:
Sam Hocevar
Message:
  • Store colour information on 32 bits, for future 12-bit colour support.
Location:
libcaca/trunk/caca
Files:
8 edited

Legend:

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

    r689 r724  
    9999{
    100100    char *screen = kk->drv.p->screen;
    101     uint8_t *attr = kk->qq->attr;
     101    uint32_t *attr = kk->qq->attr;
    102102    uint32_t *chars = kk->qq->chars;
    103103    int n;
     
    106106    {
    107107        *screen++ = _cucul_utf32_to_cp437(*chars++);
    108         *screen++ = *attr++;
     108        *screen++ = _cucul_rgba32_to_ansi8(*attr++);
    109109    }
    110110#   if defined(SCREENUPDATE_IN_PC_H)
  • libcaca/trunk/caca/driver_gl.c

    r700 r724  
    246246    for(y = 0; y < kk->drv.p->height; y += kk->drv.p->font_height)
    247247    {
    248         uint8_t *attr = kk->qq->attr + line * kk->qq->width;
     248        uint32_t *attr = kk->qq->attr + line * kk->qq->width;
    249249
    250250        for(x = 0; x < kk->drv.p->width; x += kk->drv.p->font_width)
    251251        {
    252252            glDisable(GL_TEXTURE_2D);
    253             glColor4bv(gl_bgpal[attr[0] >> 4]);
     253            glColor4bv(gl_bgpal[_cucul_rgba32_to_ansi4bg(*attr++)]);
    254254            glBegin(GL_QUADS);
    255255                glVertex2f(x, y);
     
    259259                glVertex2f(x, y + kk->drv.p->font_height);
    260260            glEnd();
    261 
    262             attr++;
    263261        }
    264262
     
    274272    for(y = 0; y < kk->drv.p->height; y += kk->drv.p->font_height)
    275273    {
    276         uint8_t *attr = kk->qq->attr + line * kk->qq->width;
     274        uint32_t *attr = kk->qq->attr + line * kk->qq->width;
    277275        uint32_t *chars = kk->qq->chars + line * kk->qq->width;
    278276
     
    284282            {
    285283                glBindTexture(GL_TEXTURE_2D, kk->drv.p->id[c - 32]);
    286                 glColor4bv(gl_bgpal[attr[0] & 0xf]);
     284                glColor4bv(gl_bgpal[_cucul_rgba32_to_ansi4fg(*attr)]);
    287285                glBegin(GL_QUADS);
    288286                    glTexCoord2f(0, kk->drv.p->sh);
  • libcaca/trunk/caca/driver_ncurses.c

    r689 r724  
    191191{
    192192    int x, y;
    193     uint8_t *attr = kk->qq->attr;
     193    uint32_t *attr = kk->qq->attr;
    194194    uint32_t *chars = kk->qq->chars;
    195195    for(y = 0; y < (int)kk->qq->height; y++)
     
    198198        for(x = kk->qq->width; x--; )
    199199        {
    200             attrset(kk->drv.p->attr[*attr++]);
     200            attrset(kk->drv.p->attr[_cucul_rgba32_to_ansi8(*attr++)]);
    201201            ncurses_write_utf32(*chars++);
    202202        }
  • libcaca/trunk/caca/driver_raw.c

    r702 r724  
    5656static void raw_display(caca_t *kk)
    5757{
    58     uint8_t *attr = kk->qq->attr;
     58    uint32_t *attr = kk->qq->attr;
    5959    uint32_t *chars = kk->qq->chars;
    6060    uint32_t w, h;
     
    7171    {
    7272        uint32_t c = *chars++;
    73         uint8_t a = *attr++;
     73        uint32_t a = *attr++;
    7474
    75         fprintf(stdout, "%c%c%c%c%c", (c >> 24), (c >> 16) & 0xff,
    76                                       (c >> 8) & 0xff, c & 0xff, a);
     75        fprintf(stdout, "%c%c%c%c%c%c%c%c",
     76                (c >> 24), (c >> 16) & 0xff, (c >> 8) & 0xff, c & 0xff,
     77                (a >> 24), (a >> 16) & 0xff, (a >> 8) & 0xff, a & 0xff);
    7778    }
    7879
  • libcaca/trunk/caca/driver_slang.c

    r689 r724  
    203203{
    204204    int x, y;
    205     uint8_t *attr = kk->qq->attr;
     205    uint32_t *attr = kk->qq->attr;
    206206    uint32_t *chars = kk->qq->chars;
    207207    for(y = 0; y < (int)kk->qq->height; y++)
     
    213213
    214214#if defined(OPTIMISE_SLANG_PALETTE)
    215             uint8_t fgcolor = *attr & 0xf;
    216             uint8_t bgcolor = *attr >> 4;
     215            uint8_t fgcolor = _cucul_rgba32_to_ansi4fg(*attr);
     216            uint8_t bgcolor = _cucul_rgba32_to_ansi4bg(*attr);
    217217
    218218            /* If foreground == background, just don't use this colour
     
    220220            if(fgcolor != bgcolor)
    221221            {
    222                 SLsmg_set_color(slang_assoc[*attr++]);
     222                SLsmg_set_color(slang_assoc[_cucul_rgba32_to_ansi8(*attr++)]);
    223223                slang_write_utf32(c);
    224224            }
     
    237237            }
    238238#else
    239             SLsmg_set_color(*attr++);
     239            SLsmg_set_color(_cucul_rgba32_to_ansi8(*attr++));
    240240            slang_write_utf32(c);
    241241#endif
  • libcaca/trunk/caca/driver_vga.c

    r689 r724  
    117117{
    118118    char *screen = (char *)(intptr_t)0x000b8000;
    119     uint8_t *attr = kk->qq->attr;
     119    uint32_t *attr = kk->qq->attr;
    120120    uint32_t *chars = kk->qq->chars;
    121121    int n;
     
    124124    {
    125125        *screen++ = _cucul_utf32_to_cp437(*chars++);
    126         *screen++ = *attr++;
     126        *screen++ = _cucul_rgba32_to_ansi8(*attr++);
    127127    }
    128128}
  • libcaca/trunk/caca/driver_win32.c

    r689 r724  
    211211
    212212        kk->drv.p->buffer[i].Attributes =
    213                 win32_fg_palette[kk->qq->attr[i] & 0xf]
    214                  | win32_bg_palette[kk->qq->attr[i] >> 4];
     213                win32_fg_palette[_cucul_rgba32_to_ansi4fg(kk->qq->attr[i])]
     214                 | win32_bg_palette[_cucul_rgba32_to_ansi4bg(kk->qq->attr[i])];
    215215    }
    216216
  • libcaca/trunk/caca/driver_x11.c

    r689 r724  
    260260        for(x = 0; x < kk->qq->width; x += len)
    261261        {
    262             uint8_t *attr = kk->qq->attr + x + y * kk->qq->width;
     262            uint32_t *attr = kk->qq->attr + x + y * kk->qq->width;
     263            uint8_t bg = _cucul_rgba32_to_ansi4bg(*attr);
    263264
    264265            len = 1;
    265266            while(x + len < kk->qq->width
    266                    && (attr[len] >> 4) == (attr[0] >> 4))
     267                   && _cucul_rgba32_to_ansi4bg(attr[len]) == bg)
    267268                len++;
    268269
    269270            XSetForeground(kk->drv.p->dpy, kk->drv.p->gc,
    270                            kk->drv.p->colors[attr[0] >> 4]);
     271                           kk->drv.p->colors[_cucul_rgba32_to_ansi4bg(*attr)]);
    271272            XFillRectangle(kk->drv.p->dpy, kk->drv.p->pixmap, kk->drv.p->gc,
    272273                           x * kk->drv.p->font_width, y * kk->drv.p->font_height,
     
    284285        for(x = 0; x < kk->qq->width; x++, chars++)
    285286        {
    286             uint8_t *attr = kk->qq->attr + x + y * kk->qq->width;
     287            uint32_t *attr = kk->qq->attr + x + y * kk->qq->width;
    287288
    288289            /* Skip spaces */
     
    291292
    292293            XSetForeground(kk->drv.p->dpy, kk->drv.p->gc,
    293                            kk->drv.p->colors[*attr & 0xf]);
     294                           kk->drv.p->colors[_cucul_rgba32_to_ansi4fg(*attr)]);
    294295
    295296            /* Plain ASCII, no problem. */
Note: See TracChangeset for help on using the changeset viewer.