Changeset 1175
- Timestamp:
- Oct 1, 2006, 2:50:43 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/cucul/export.c
r1104 r1175 216 216 uint32_t *linechar = cv->chars + y * cv->width; 217 217 218 uint8_t prevfg = -1;219 uint8_t prevbg = -1;218 uint8_t prevfg = 0x10; 219 uint8_t prevbg = 0x10; 220 220 221 221 for(x = 0; x < cv->width; x++) 222 222 { 223 uint8_t fg = palette[_cucul_argb32_to_ansi4fg(lineattr[x])]; 224 uint8_t bg = palette[_cucul_argb32_to_ansi4bg(lineattr[x])]; 223 uint32_t attr = lineattr[x]; 225 224 uint32_t ch = linechar[x]; 226 225 uint8_t fg, bg; 226 227 fg = ((attr & 0xffff) == CUCUL_COLOR_DEFAULT) ? 228 0x10 : palette[_cucul_argb32_to_ansi4fg(attr)]; 229 bg = ((attr >> 16) == CUCUL_COLOR_TRANSPARENT) ? 230 0x10 : palette[_cucul_argb32_to_ansi4bg(attr)]; 231 232 /* TODO: the [0 could be omitted in some cases */ 227 233 if(fg != prevfg || bg != prevbg) 228 234 { 229 cur += sprintf(cur, "\033[0 ;");235 cur += sprintf(cur, "\033[0"); 230 236 231 237 if(fg < 8) 232 if(bg < 8) 233 cur += sprintf(cur, "3%d;4%dm", fg, bg); 234 else 235 cur += sprintf(cur, "5;3%d;4%d;10%dm", 236 fg, bg - 8, bg - 8); 237 else 238 if(bg < 8) 239 cur += sprintf(cur, "1;3%d;4%d;9%dm", 240 fg - 8, bg, fg - 8); 241 else 242 cur += sprintf(cur, "5;1;3%d;4%d;9%d;10%dm", 243 fg - 8, bg - 8, fg - 8, bg - 8); 238 cur += sprintf(cur, ";3%d", fg); 239 else if(fg < 16) 240 cur += sprintf(cur, ";1;3%d;9%d", fg - 8, fg - 8); 241 242 if(bg < 8) 243 cur += sprintf(cur, ";4%d", bg); 244 else if(bg < 16) 245 cur += sprintf(cur, ";5;4%d;10%d", bg - 8, bg - 8); 246 247 cur += sprintf(cur, "m"); 244 248 } 245 249 … … 250 254 } 251 255 252 cur += sprintf(cur, "\033[0m\r\n"); 256 if(prevfg != 0x10 || prevbg != 0x10) 257 cur += sprintf(cur, "\033[0m"); 258 259 cur += sprintf(cur, "\r\n"); 253 260 } 254 261
Note: See TracChangeset
for help on using the changeset viewer.