Ignore:
Timestamp:
May 5, 2006, 3:44:54 PM (14 years ago)
Author:
Sam Hocevar
Message:
  • Use _cucul_utf32_to_utf8() instead of the inline code in the UTF-8 and SVG exporters.
File:
1 edited

Legend:

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

    r926 r928  
    227227        for(x = 0; x < cv->width; x++)
    228228        {
    229             static const uint8_t mark[7] =
    230             {
    231                 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC
    232             };
    233 
    234229            uint8_t fg = palette[_cucul_argb32_to_ansi4fg(lineattr[x])];
    235230            uint8_t bg = palette[_cucul_argb32_to_ansi4bg(lineattr[x])];
     
    255250            }
    256251
    257             if(ch < 0x80)
    258             {
    259                 *cur++ = (ch >= 0x20) ? ch : '?';
    260             }
    261             else
    262             {
    263                 int bytes = (ch < 0x800) ? 2 : (ch < 0x10000) ? 3 : 4;
    264                 char *parser;
    265 
    266                 cur += bytes;
    267                 parser = cur;
    268 
    269                 switch(bytes)
    270                 {
    271                     case 4: *--parser = (ch | 0x80) & 0xbf; ch >>= 6;
    272                     case 3: *--parser = (ch | 0x80) & 0xbf; ch >>= 6;
    273                     case 2: *--parser = (ch | 0x80) & 0xbf; ch >>= 6;
    274                 }
    275                 *--parser = ch | mark[bytes];
    276             }
     252            cur += _cucul_utf32_to_utf8(cur, ch);
    277253
    278254            prevfg = fg;
     
    732708                                x * 6, (y * 10) + 10);
    733709            if(ch < 0x00000020)
    734                 cur += sprintf(cur, "?");
     710                *cur++ = '?';
    735711            else if(ch > 0x0000007f)
    736             {
    737                 static const uint8_t mark[7] =
    738                 {
    739                     0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC
    740                 };
    741 
    742                 char buf[10], *parser;
    743                 int bytes = (ch < 0x800) ? 2 : (ch < 0x10000) ? 3 : 4;
    744 
    745                 buf[bytes] = '\0';
    746                 parser = buf + bytes;
    747 
    748                 switch(bytes)
    749                 {
    750                     case 4: *--parser = (ch | 0x80) & 0xbf; ch >>= 6;
    751                     case 3: *--parser = (ch | 0x80) & 0xbf; ch >>= 6;
    752                     case 2: *--parser = (ch | 0x80) & 0xbf; ch >>= 6;
    753                 }
    754                 *--parser = ch | mark[bytes];
    755 
    756                 cur += sprintf(cur, "%s", buf);
    757             }
     712                cur += _cucul_utf32_to_utf8(cur, ch);
    758713            else switch((uint8_t)ch)
    759714            {
     
    761716                case '<': cur += sprintf(cur, "&lt;"); break;
    762717                case '&': cur += sprintf(cur, "&amp;"); break;
    763                 default: cur += sprintf(cur, "%c", ch); break;
     718                default: *cur++ = ch; break;
    764719            }
    765720            cur += sprintf(cur, "</text>\n");
Note: See TracChangeset for help on using the changeset viewer.