12 proc_color(char *buf
, attr_t
*attrs
, short *pair
)
20 *attrs
&= ~(A_BOLD
| A_UNDERLINE
| A_BLINK
);
21 *pair
= BG(C_BLACK
)|C_WHITE
;
30 if (c
>= 30 && c
<= 37) {
37 if (c
>= 40 && c
<= 47) {
39 *pair
&= (short)~(BG(7));
40 *pair
|= (short)(BG(c
));
47 process_color(WINDOW
*win
, char *buffer
, size_t len
)
49 char *curr
, *next
= NULL
;
53 /* Get current attrs */
54 wattr_get(win
, &attrs
, &pair
, NULL
);
56 while((curr
= strtok_r(next
?NULL
:buffer
, ";", &next
))) {
57 proc_color(curr
, &attrs
, &pair
);
60 wattr_set(win
, attrs
, pair
, NULL
);
65 process_clear(WINDOW
*win
, char *buffer
, size_t len
)
80 //wcolor_set(win, BG(C_BLACK)|C_RED, NULL);
81 //wprintw(win,"Cleared.\n");
85 process_cursor(WINDOW
*win
, char *buffer
, size_t len
)
91 next
= strchr(buffer
, ';');
112 process_buf(WINDOW
*win
, char *buffer
, size_t len
, char code
)
116 process_color(win
, buffer
, len
);
119 process_cursor(win
, buffer
, len
);
122 process_clear(win
, buffer
, len
);
129 ansi_strip(char *circbuf
, const char *buffer
, size_t len
)
132 int in_escape_code
= 0;
135 for (x
= 0; x
< len
; x
++) {
144 cb_append(circbuf
, &c
, 1);
151 if (in_escape_code
== 1) {
153 } else if (in_escape_code
== 0) {
154 cb_append(circbuf
, &c
, 1);
158 /* most of these are not and will not be handled */
175 if (in_escape_code
== 2) {
180 if (in_escape_code
== 2)
182 cb_append(circbuf
, &c
, 1);
193 ansi_waddnstr(WINDOW
*win
, const char *buffer
, size_t len
)
196 int in_escape_code
= 0;
197 char *presumed_start
= NULL
;
201 for (x
= 0; x
< len
; x
++) {
214 presumed_start
= (char *)&buffer
[x
];
217 if (in_escape_code
== 1) {
219 } else if (in_escape_code
== 0) {
220 waddch(win
, buffer
[x
]);
222 //printf("%c\n", buffer[x]);
225 /* most of these are not and will not be handled */
242 if (in_escape_code
== 2) {
245 if (&buffer
[x
] - presumed_start
<= sizeof(buf
)) {
246 memcpy(buf
, presumed_start
, &buffer
[x
] - presumed_start
);
247 buf
[&buffer
[x
] - presumed_start
] = 0;
248 process_buf(win
, buf
, strlen(buf
), buffer
[x
]);
249 ret
+= (&buffer
[x
] - presumed_start
)+3;
257 waddch(win
, buffer
[x
]);