| @@ -502,15 +502,21 @@ static void export_irc(cucul_canvas_t *cv, cucul_buffer_t *ex) | |||||
| uint32_t *lineattr = cv->attr + y * cv->width; | uint32_t *lineattr = cv->attr + y * cv->width; | ||||
| uint32_t *linechar = cv->chars + y * cv->width; | uint32_t *linechar = cv->chars + y * cv->width; | ||||
| uint8_t prevfg = -1; | |||||
| uint8_t prevbg = -1; | |||||
| uint8_t prevfg = 0x10; | |||||
| uint8_t prevbg = 0x10; | |||||
| for(x = 0; x < cv->width; x++) | for(x = 0; x < cv->width; x++) | ||||
| { | { | ||||
| uint8_t fg = palette[_cucul_argb32_to_ansi4fg(lineattr[x])]; | |||||
| uint8_t bg = palette[_cucul_argb32_to_ansi4bg(lineattr[x])]; | |||||
| uint32_t attr = lineattr[x]; | |||||
| uint8_t fg = palette[_cucul_argb32_to_ansi4fg(attr)]; | |||||
| uint8_t bg = palette[_cucul_argb32_to_ansi4bg(attr)]; | |||||
| uint32_t ch = linechar[x]; | uint32_t ch = linechar[x]; | ||||
| if((attr & 0xffff) == CUCUL_COLOR_DEFAULT) | |||||
| fg = 0x10; | |||||
| if((attr >> 16) == CUCUL_COLOR_TRANSPARENT) | |||||
| bg = 0x10; | |||||
| #if 0 | #if 0 | ||||
| if(bg == prevbg) | if(bg == prevbg) | ||||
| { | { | ||||
| @@ -538,7 +544,23 @@ static void export_irc(cucul_canvas_t *cv, cucul_buffer_t *ex) | |||||
| #else | #else | ||||
| if(bg != prevbg || fg != prevfg) | if(bg != prevbg || fg != prevfg) | ||||
| { | { | ||||
| cur += sprintf(cur, "\x03%d,%d", fg, bg); | |||||
| if(bg == 0x10) | |||||
| { | |||||
| if(fg == 0x10) | |||||
| cur += sprintf(cur, "\x0f"); | |||||
| else if(prevbg == 0x10) | |||||
| cur += sprintf(cur, "\x03%d", fg); | |||||
| else | |||||
| cur += sprintf(cur, "\x0f\x03%d", fg); | |||||
| } | |||||
| else | |||||
| { | |||||
| if(fg == 0x10) | |||||
| cur += sprintf(cur, "\x0f\x03,%d", bg); | |||||
| else | |||||
| cur += sprintf(cur, "\x03%d,%d", fg, bg); | |||||
| } | |||||
| if(ch >= (uint32_t)'0' && ch <= (uint32_t)'9') | if(ch >= (uint32_t)'0' && ch <= (uint32_t)'9') | ||||
| cur += sprintf(cur, "\x02\x02"); | cur += sprintf(cur, "\x02\x02"); | ||||
| } | } | ||||