- Timestamp:
- May 5, 2006, 3:44:54 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/cucul/export.c
r926 r928 227 227 for(x = 0; x < cv->width; x++) 228 228 { 229 static const uint8_t mark[7] =230 {231 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC232 };233 234 229 uint8_t fg = palette[_cucul_argb32_to_ansi4fg(lineattr[x])]; 235 230 uint8_t bg = palette[_cucul_argb32_to_ansi4bg(lineattr[x])]; … … 255 250 } 256 251 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); 277 253 278 254 prevfg = fg; … … 732 708 x * 6, (y * 10) + 10); 733 709 if(ch < 0x00000020) 734 cur += sprintf(cur, "?");710 *cur++ = '?'; 735 711 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); 758 713 else switch((uint8_t)ch) 759 714 { … … 761 716 case '<': cur += sprintf(cur, "<"); break; 762 717 case '&': cur += sprintf(cur, "&"); break; 763 default: cur += sprintf(cur, "%c", ch); break;718 default: *cur++ = ch; break; 764 719 } 765 720 cur += sprintf(cur, "</text>\n");
Note: See TracChangeset
for help on using the changeset viewer.