| @@ -199,7 +199,7 @@ static cucul_canvas_t *import_text(void const *data, unsigned int size) | |||||
| #define END_TUP 0x1337 | #define END_TUP 0x1337 | ||||
| unsigned char _get_ansi_command(unsigned char const *buffer, int size); | unsigned char _get_ansi_command(unsigned char const *buffer, int size); | ||||
| int _parse_tuple(unsigned int *ret, unsigned char const *buffer, int size); | int _parse_tuple(unsigned int *ret, unsigned char const *buffer, int size); | ||||
| void _manage_modifiers(char c, int *fg, int *bg, int *save_fg, int *save_bg); | |||||
| void _manage_modifiers(int i, int *fg, int *bg, int *save_fg, int *save_bg); | |||||
| static cucul_canvas_t *import_ansi(void const *data, unsigned int size) | static cucul_canvas_t *import_ansi(void const *data, unsigned int size) | ||||
| { | { | ||||
| @@ -390,15 +390,39 @@ int _parse_tuple(unsigned int *ret, unsigned char const *buffer, int size) | |||||
| void _manage_modifiers(char c, int *fg, int *bg, int *save_fg, int *save_bg) | |||||
| void _manage_modifiers(int i, int *fg, int *bg, int *save_fg, int *save_bg) | |||||
| { | { | ||||
| switch(c) | |||||
| static uint8_t const ansi2cucul[] = | |||||
| { | |||||
| CUCUL_COLOR_BLACK, | |||||
| CUCUL_COLOR_RED, | |||||
| CUCUL_COLOR_GREEN, | |||||
| CUCUL_COLOR_BROWN, | |||||
| CUCUL_COLOR_BLUE, | |||||
| CUCUL_COLOR_MAGENTA, | |||||
| CUCUL_COLOR_CYAN, | |||||
| CUCUL_COLOR_LIGHTGRAY | |||||
| }; | |||||
| if(i >= 30 && i <= 37) | |||||
| *fg = ansi2cucul[i - 30]; | |||||
| else if(i == 39) | |||||
| *fg = CUCUL_COLOR_DEFAULT; | |||||
| else if(i >= 40 && i <= 47) | |||||
| *bg = ansi2cucul[i - 40]; | |||||
| else if(i == 49) | |||||
| *bg = CUCUL_COLOR_DEFAULT; | |||||
| else if(i >= 90 && i <= 97) | |||||
| *fg = ansi2cucul[i - 90] + 8; | |||||
| else if(i >= 100 && i <= 107) | |||||
| *bg = ansi2cucul[i - 100] + 8; | |||||
| else switch(i) | |||||
| { | { | ||||
| case 0: | case 0: | ||||
| *fg = CUCUL_COLOR_DEFAULT; | *fg = CUCUL_COLOR_DEFAULT; | ||||
| *bg = CUCUL_COLOR_DEFAULT; | *bg = CUCUL_COLOR_DEFAULT; | ||||
| break; | break; | ||||
| case 1: // BOLD | |||||
| case 1: /* BOLD */ | |||||
| if(*fg < 8) | if(*fg < 8) | ||||
| *fg += 8; | *fg += 8; | ||||
| if(*bg < 8) | if(*bg < 8) | ||||
| @@ -422,42 +446,6 @@ void _manage_modifiers(char c, int *fg, int *bg, int *save_fg, int *save_bg) | |||||
| *fg = *save_fg; | *fg = *save_fg; | ||||
| *bg = *save_bg; | *bg = *save_bg; | ||||
| break; | break; | ||||
| case 30: *fg = CUCUL_COLOR_BLACK; break; | |||||
| case 31: *fg = CUCUL_COLOR_RED; break; | |||||
| case 32: *fg = CUCUL_COLOR_GREEN; break; | |||||
| case 33: *fg = CUCUL_COLOR_BROWN; break; | |||||
| case 34: *fg = CUCUL_COLOR_BLUE; break; | |||||
| case 35: *fg = CUCUL_COLOR_MAGENTA; break; | |||||
| case 36: *fg = CUCUL_COLOR_CYAN; break; | |||||
| case 37: *fg = CUCUL_COLOR_WHITE; break; | |||||
| case 39: *fg = CUCUL_COLOR_LIGHTGRAY; break; | |||||
| case 40: *bg = CUCUL_COLOR_BLACK; break; | |||||
| case 41: *bg = CUCUL_COLOR_RED; break; | |||||
| case 42: *bg = CUCUL_COLOR_GREEN; break; | |||||
| case 43: *bg = CUCUL_COLOR_BROWN; break; | |||||
| case 44: *bg = CUCUL_COLOR_BLUE; break; | |||||
| case 45: *bg = CUCUL_COLOR_MAGENTA; break; | |||||
| case 46: *bg = CUCUL_COLOR_CYAN; break; | |||||
| case 47: *bg = CUCUL_COLOR_WHITE; break; | |||||
| case 49: *bg = CUCUL_COLOR_BLACK; break; | |||||
| case 90: *fg = CUCUL_COLOR_DARKGRAY; break; | |||||
| case 91: *fg = CUCUL_COLOR_LIGHTRED; break; | |||||
| case 92: *fg = CUCUL_COLOR_LIGHTGREEN; break; | |||||
| case 93: *fg = CUCUL_COLOR_YELLOW; break; | |||||
| case 94: *fg = CUCUL_COLOR_LIGHTBLUE; break; | |||||
| case 95: *fg = CUCUL_COLOR_LIGHTMAGENTA; break; | |||||
| case 96: *fg = CUCUL_COLOR_LIGHTCYAN; break; | |||||
| case 97: *fg = CUCUL_COLOR_WHITE; break; | |||||
| case 100: *bg = CUCUL_COLOR_DARKGRAY; break; | |||||
| case 101: *bg = CUCUL_COLOR_LIGHTRED; break; | |||||
| case 102: *bg = CUCUL_COLOR_LIGHTGREEN; break; | |||||
| case 103: *bg = CUCUL_COLOR_YELLOW; break; | |||||
| case 104: *bg = CUCUL_COLOR_LIGHTBLUE; break; | |||||
| case 105: *bg = CUCUL_COLOR_LIGHTMAGENTA; break; | |||||
| case 106: *bg = CUCUL_COLOR_LIGHTCYAN; break; | |||||
| case 107: *bg = CUCUL_COLOR_WHITE; break; | |||||
| default: | default: | ||||
| /* printf("Unknow option to 'm' %d (%c)\n", c, IS_ALPHA(c)?c:'.'); */ | /* printf("Unknow option to 'm' %d (%c)\n", c, IS_ALPHA(c)?c:'.'); */ | ||||
| break; | break; | ||||