Ignore:
Timestamp:
Oct 22, 2006, 6:35:25 PM (14 years ago)
Author:
Sam Hocevar
Message:
  • Support for fullwidth glyphs in the libcaca output drivers.
File:
1 edited

Legend:

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

    r1072 r1218  
    219219        uint32_t *attr = dp->cv->attr + line * dp->cv->width;
    220220
     221        /* FIXME: optimise using stride */
    221222        for(x = 0; x < dp->drv.p->width; x += dp->drv.p->font_width)
    222223        {
     
    251252        for(x = 0; x < dp->drv.p->width; x += dp->drv.p->font_width, attr++)
    252253        {
    253             uint32_t cv = *chars++;
     254            uint32_t ch = *chars++;
    254255            uint16_t fg;
    255             int i, b;
     256            int i, b, fullwidth;
     257
     258            fullwidth = cucul_utf32_is_fullwidth(ch);
    256259
    257260            for(b = 0, i = 0; dp->drv.p->blocks[i + 1]; i += 2)
    258261            {
    259                 if(cv < (uint32_t)dp->drv.p->blocks[i])
     262                if(ch < (uint32_t)dp->drv.p->blocks[i])
    260263                     break;
    261264
    262                 if(cv >= (uint32_t)dp->drv.p->blocks[i + 1])
     265                if(ch >= (uint32_t)dp->drv.p->blocks[i + 1])
    263266                {
    264267                    b += (uint32_t)(dp->drv.p->blocks[i + 1]
     
    268271
    269272                glBindTexture(GL_TEXTURE_2D,
    270                               dp->drv.p->txid[b + cv
     273                              dp->drv.p->txid[b + ch
    271274                                        - (uint32_t)dp->drv.p->blocks[i]]);
    272275
     
    275278                          ((fg & 0x0f0) >> 4) * 8,
    276279                          (fg & 0x00f) * 8);
     280                /* FIXME: handle fullwidth glyphs here */
    277281                glBegin(GL_QUADS);
    278282                glTexCoord2f(0, dp->drv.p->sh);
     
    286290                glVertex2f(x, y + dp->drv.p->font_height);
    287291                glEnd();
     292            }
     293
     294            if(fullwidth)
     295            {
     296                chars++; attr++; x += dp->drv.p->font_width;
    288297            }
    289298        }
Note: See TracChangeset for help on using the changeset viewer.