* Simplify cons-html code (-50LOC)

This commit is contained in:
pancake 2011-04-29 10:38:01 +02:00
parent 020dd97a8b
commit 1210a6c4eb
2 changed files with 33 additions and 83 deletions

View File

@ -236,30 +236,26 @@ R_API void r_cons_visual_flush() {
}
R_API void r_cons_visual_write (char *buffer) {
const char *newline = "\n"Color_RESET;
int cols = I.columns;
int alen, lines = I.rows-1;
const char *endptr;
char *nl, *ptr = buffer;
while (lines && (nl = strchr (ptr, '\n'))) {
int clen, len = ((int)(size_t)(nl-ptr))+1;
int len = ((int)(size_t)(nl-ptr))+1;
*nl = 0;
alen = r_str_ansi_len (ptr);
clen = (int)(size_t)(endptr-ptr)-1;
*nl = '\n';
if (alen>cols) {
endptr = r_str_ansi_chrn (ptr, cols);
endptr++;
len = (endptr-ptr);//clen-1;
r_cons_write (ptr, len); //nl-ptr+1);
{
const char *newline = "\n"Color_RESET;
len = (endptr-ptr);
r_cons_write (ptr, len);
r_cons_write (newline, strlen (newline));
}
} else {
r_cons_write (ptr, len); //nl-ptr+1);
}
} else r_cons_write (ptr, len);
lines--;
ptr = nl+1;
}

View File

@ -173,10 +173,25 @@ R_API int r_cons_grep_line(char *buf, int len) {
return len;
}
static const char *gethtmlcolor(const char ptrch, const char *def) {
switch (ptrch) {
case '0': return "#000"; // BLACK
case '1': return "#f00"; // RED
case '2': return "#0f0"; // GREEN
case '3': return "#ff0"; // YELLOW
case '4': return "#00f"; // BLUE
case '5': return "#f0f"; // MAGENTA
case '6': return "#aaf"; // TURQOISE
case '7': return "#fff"; // WHITE
case '8': return "#777"; // GREY
case '9': break; // ???
}
return def;
}
// XXX: rename char *r_cons_filter_html(const char *ptr)
R_API int r_cons_html_print(const char *ptr) {
const char *str = ptr;
int color = 0;
int esc = 0;
int len = 0;
int inv = 0;
@ -208,106 +223,45 @@ R_API int r_cons_html_print(const char *ptr) {
} else
if (esc == 2) {
if (ptr[0]=='2'&&ptr[1]=='J') {
ptr = ptr +1;
printf ("<hr />\n"); fflush(stdout);
ptr++;
esc = 0;
str = ptr;
continue;
} else
if (ptr[0]=='0'&&ptr[1]==';'&&ptr[2]=='0') {
ptr = ptr + 4;
r_cons_gotoxy (0,0);
ptr += 4;
esc = 0;
str = ptr;
continue;
} else
if (ptr[0]=='0'&&ptr[1]=='m') {
ptr = ptr + 1;
str = ptr + 1;
inv = 0;
esc = 0;
str = (++ptr) +1;
esc = inv = 0;
continue;
// reset color
} else
if (ptr[0]=='7'&&ptr[1]=='m') {
str = (++ptr) +1;
inv = 128;
ptr = ptr + 1;
str = ptr + 1;
esc = 0;
continue;
// reset color
} else
if (ptr[0]=='3' && ptr[2]=='m') {
color = 1;
switch(ptr[1]) {
case '0': // BLACK
printf ("<font color=black>"); fflush(stdout);
break;
case '1': // RED
printf ("<font color=red>"); fflush(stdout);
break;
case '2': // GREEN
printf ("<font color=green>"); fflush(stdout);
break;
case '3': // YELLOW
printf ("<font color=yellow>"); fflush(stdout);
break;
case '4': // BLUE
printf ("<font color=blue>"); fflush(stdout);
break;
case '5': // MAGENTA
printf ("<font color=magenta>"); fflush(stdout);
break;
case '6': // TURQOISE
printf ("<font color=#0ae>"); fflush(stdout);
break;
case '7': // WHITE
printf ("<font color=white>"); fflush(stdout);
break;
case '8': // GRAY
printf ("<font color=#777>"); fflush(stdout);
break;
case '9': // ???
break;
}
// TODO: honor inv here
printf ("<font color='%s'>", gethtmlcolor (ptr[1], "#000"));
fflush(stdout);
ptr = ptr + 1;
str = ptr + 2;
esc = 0;
continue;
} else
if (ptr[0]=='4' && ptr[2]=='m') {
/* background color */
switch (ptr[1]) {
case '0': // BLACK
printf ("<font style='background-color:#000'>"); fflush(stdout);
break;
case '1': // RED
printf ("<font style='background-color:#f00'>"); fflush(stdout);
break;
case '2': // GREEN
printf ("<font style='background-color:#0f0'>"); fflush(stdout);
break;
case '3': // YELLOW
printf ("<font style='background-color:#ff0'>"); fflush(stdout);
break;
case '4': // BLUE
printf ("<font style='background-color:#00f'>"); fflush(stdout);
break;
case '5': // MAGENTA
printf ("<font style='background-color:#f0f'>"); fflush(stdout);
break;
case '6': // TURQOISE
printf ("<font style='background-color:#aaf'>"); fflush(stdout);
break;
case '7': // WHITE
printf ("<font style='background-color:#fff'>"); fflush(stdout);
break;
case '8': // GRAY
printf ("<font style='background-color:#777'>"); fflush(stdout);
break;
case '9': // ???
break;
}
// TODO: USE INV HERE
printf ("<font style='background-color:%s'>", gethtmlcolor (ptr[1], "#fff"));
fflush(stdout);
}
}
len++;