From 7d75811a8b71590ae2998b2911cc4d0c55228f0e Mon Sep 17 00:00:00 2001 From: Sam Hocevar Date: Fri, 5 May 2006 13:44:54 +0000 Subject: [PATCH] * Use _cucul_utf32_to_utf8() instead of the inline code in the UTF-8 and SVG exporters. --- cucul/export.c | 53 ++++---------------------------------------------- 1 file changed, 4 insertions(+), 49 deletions(-) diff --git a/cucul/export.c b/cucul/export.c index 65dc09b..784246c 100644 --- a/cucul/export.c +++ b/cucul/export.c @@ -226,11 +226,6 @@ static void export_utf8(cucul_canvas_t *cv, cucul_buffer_t *ex) for(x = 0; x < cv->width; x++) { - static const uint8_t mark[7] = - { - 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC - }; - uint8_t fg = palette[_cucul_argb32_to_ansi4fg(lineattr[x])]; uint8_t bg = palette[_cucul_argb32_to_ansi4bg(lineattr[x])]; uint32_t ch = linechar[x]; @@ -254,26 +249,7 @@ static void export_utf8(cucul_canvas_t *cv, cucul_buffer_t *ex) fg - 8, bg - 8, fg - 8, bg - 8); } - if(ch < 0x80) - { - *cur++ = (ch >= 0x20) ? ch : '?'; - } - else - { - int bytes = (ch < 0x800) ? 2 : (ch < 0x10000) ? 3 : 4; - char *parser; - - cur += bytes; - parser = cur; - - switch(bytes) - { - case 4: *--parser = (ch | 0x80) & 0xbf; ch >>= 6; - case 3: *--parser = (ch | 0x80) & 0xbf; ch >>= 6; - case 2: *--parser = (ch | 0x80) & 0xbf; ch >>= 6; - } - *--parser = ch | mark[bytes]; - } + cur += _cucul_utf32_to_utf8(cur, ch); prevfg = fg; prevbg = bg; @@ -731,36 +707,15 @@ static void export_svg(cucul_canvas_t *cv, cucul_buffer_t *ex) _cucul_argb32_to_rgb12fg(*lineattr++), x * 6, (y * 10) + 10); if(ch < 0x00000020) - cur += sprintf(cur, "?"); + *cur++ = '?'; else if(ch > 0x0000007f) - { - static const uint8_t mark[7] = - { - 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC - }; - - char buf[10], *parser; - int bytes = (ch < 0x800) ? 2 : (ch < 0x10000) ? 3 : 4; - - buf[bytes] = '\0'; - parser = buf + bytes; - - switch(bytes) - { - case 4: *--parser = (ch | 0x80) & 0xbf; ch >>= 6; - case 3: *--parser = (ch | 0x80) & 0xbf; ch >>= 6; - case 2: *--parser = (ch | 0x80) & 0xbf; ch >>= 6; - } - *--parser = ch | mark[bytes]; - - cur += sprintf(cur, "%s", buf); - } + cur += _cucul_utf32_to_utf8(cur, ch); else switch((uint8_t)ch) { case '>': cur += sprintf(cur, ">"); break; case '<': cur += sprintf(cur, "<"); break; case '&': cur += sprintf(cur, "&"); break; - default: cur += sprintf(cur, "%c", ch); break; + default: *cur++ = ch; break; } cur += sprintf(cur, "\n"); }