7#include <ascii-chat/video/ansi.h>
8#include <ascii-chat/video/output_buffer.h>
9#include <ascii-chat/common.h>
14 if (!input || input_len == 0) {
23 while (i < input_len) {
25 if (input[i] ==
'\x1b' && i + 1 < input_len && input[i + 1] ==
'[') {
30 while (i < input_len) {
34 if ((c >= 0x30 && c <= 0x3F) || (c >= 0x20 && c <= 0x2F)) {
43 char final = input[i];
44 if (
final >= 0x40 &&
final <= 0x7E) {
67 for (
size_t i = 0; i < pos && message[i] !=
'\0'; i++) {
68 if (message[i] ==
'\x1b' && message[i + 1] ==
'[') {
72 while (message[j] !=
'\0' && message[j] !=
'm') {
76 if (message[j] ==
'm') {
79 if ((j == i + 3 && message[i + 2] ==
'0') || (j == i + 2)) {
char * ansi_strip_escapes(const char *input, size_t input_len)
bool ansi_is_already_colorized(const char *message, size_t pos)
void ob_term(outbuf_t *ob)
void ob_putc(outbuf_t *ob, char c)
void ob_reserve(outbuf_t *ob, size_t need)