- Timestamp:
- Mar 17, 2006, 10:56:28 AM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/cucul/export_svg.c
r637 r641 107 107 if(c < 0x00000020) 108 108 cur += sprintf(cur, "?"); 109 else if(c < 0x00000080) 110 cur += sprintf(cur, "%c", c); 111 else 112 cur += sprintf(cur, "?"); /* FIXME: SVG supports UTF-8 */ 109 else if(c > 0x0000007f) 110 { 111 static const uint8_t mark[7] = 112 { 113 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC 114 }; 115 116 char buf[10], *parser; 117 int bytes = (c < 0x800) ? 2 : (c < 0x10000) ? 3 : 4; 118 119 buf[bytes] = '\0'; 120 parser = buf + bytes; 121 122 switch(bytes) 123 { 124 case 4: *--parser = (c | 0x80) & 0xbf; c >>= 6; 125 case 3: *--parser = (c | 0x80) & 0xbf; c >>= 6; 126 case 2: *--parser = (c | 0x80) & 0xbf; c >>= 6; 127 } 128 *--parser = c | mark[bytes]; 129 130 cur += sprintf(cur, "%s", buf); 131 } 132 else switch((uint8_t)c) 133 { 134 case '>': cur += sprintf(cur, ">"); break; 135 case '<': cur += sprintf(cur, "<"); break; 136 case '&': cur += sprintf(cur, "&"); break; 137 default: cur += sprintf(cur, "%c", c); break; 138 } 113 139 cur += sprintf(cur, "</text>\n"); 114 140 }
Note: See TracChangeset
for help on using the changeset viewer.