ascii-chat 0.6.0
Real-time terminal-based video chat with ASCII art conversion
Loading...
Searching...
No Matches
ansi_fast.h
Go to the documentation of this file.
1#pragma once
2
28#include <stdint.h>
29#include <stdbool.h>
30#include <stddef.h>
31
33extern dec3_t dec3[256];
34
45
51typedef struct {
52 double pixel_time;
53 double string_time;
54 double output_time;
55 double total_time;
57
65void ansi_fast_init(void);
66
77char *append_truecolor_fg(char *dst, uint8_t r, uint8_t g, uint8_t b);
78
89char *append_truecolor_bg(char *dst, uint8_t r, uint8_t g, uint8_t b);
90
104char *append_truecolor_fg_bg(char *dst, uint8_t fg_r, uint8_t fg_g, uint8_t fg_b, uint8_t bg_r, uint8_t bg_g,
105 uint8_t bg_b);
106
115typedef struct {
116 char *buffer;
117 size_t capacity;
118 size_t length;
119 uint8_t last_r, last_g, last_b;
123
133void ansi_rle_init(ansi_rle_context_t *ctx, char *buffer, size_t capacity, ansi_color_mode_t mode);
134
147void ansi_rle_add_pixel(ansi_rle_context_t *ctx, uint8_t r, uint8_t g, uint8_t b, char ascii_char);
148
158
166void ansi_fast_init_256color(void);
167
176char *append_256color_fg(char *dst, uint8_t color_index);
177
188
196void ansi_fast_init_16color(void);
197
206char *append_16color_fg(char *dst, uint8_t color_index);
207
216char *append_16color_bg(char *dst, uint8_t color_index);
217
228
234typedef struct {
235 int r;
236 int g;
237 int b;
239
249void get_16color_rgb(uint8_t color_index, uint8_t *r, uint8_t *g, uint8_t *b);
250
267uint8_t rgb_to_16color_dithered(int r, int g, int b, int x, int y, int width, int height, rgb_error_t *error_buffer);
268
269// Terminal capability-aware color functions
270#include "options/options.h"
271
286
287// REMOVED: generate_ansi_frame_optimized function not implemented
288// Complete frame generation with optimized ANSI string generation
289// size_t generate_ansi_frame_optimized(const uint8_t *pixels, int width, int height, char *output_buffer,
290// size_t buffer_capacity, ansi_color_mode_t mode);
291
SIMD-optimized ASCII conversion interface.
unsigned char uint8_t
Definition common.h:56
terminal_color_mode_t
Terminal color support levels.
Definition terminal.h:424
char * append_16color_fg(char *dst, uint8_t color_index)
Append 16-color foreground ANSI sequence.
Definition ansi_fast.c:243
char * append_16color_bg(char *dst, uint8_t color_index)
Append 16-color background ANSI sequence.
Definition ansi_fast.c:260
char * append_truecolor_fg(char *dst, uint8_t r, uint8_t g, uint8_t b)
Append truecolor foreground ANSI sequence.
Definition ansi_fast.c:24
dec3_t dec3[256]
Access to internal decimal lookup table for testing.
void ansi_fast_init_256color(void)
Initialize 256-color mode lookup tables.
Definition ansi_fast.c:179
uint8_t rgb_to_16color(uint8_t r, uint8_t g, uint8_t b)
Convert RGB to 16-color ANSI index.
Definition ansi_fast.c:277
uint8_t rgb_to_16color_dithered(int r, int g, int b, int x, int y, int width, int height, rgb_error_t *error_buffer)
Convert RGB to 16-color with Floyd-Steinberg dithering.
Definition ansi_fast.c:351
ansi_color_mode_t
Color mode for ANSI generation.
Definition ansi_fast.h:40
void ansi_rle_init(ansi_rle_context_t *ctx, char *buffer, size_t capacity, ansi_color_mode_t mode)
Initialize run-length encoding context.
Definition ansi_fast.c:112
void ansi_fast_init(void)
Initialize the decimal lookup table.
Definition ansi_fast.c:173
char * append_truecolor_fg_bg(char *dst, uint8_t fg_r, uint8_t fg_g, uint8_t fg_b, uint8_t bg_r, uint8_t bg_g, uint8_t bg_b)
Append truecolor foreground and background ANSI sequence.
Definition ansi_fast.c:70
void ansi_rle_finish(ansi_rle_context_t *ctx)
Finish RLE sequence.
Definition ansi_fast.c:159
void get_16color_rgb(uint8_t color_index, uint8_t *r, uint8_t *g, uint8_t *b)
Get the actual RGB values for a 16-color ANSI index.
Definition ansi_fast.c:320
void ansi_rle_add_pixel(ansi_rle_context_t *ctx, uint8_t r, uint8_t g, uint8_t b, char ascii_char)
Add a pixel with run-length encoding.
Definition ansi_fast.c:125
char * append_256color_fg(char *dst, uint8_t color_index)
Append 256-color foreground ANSI sequence.
Definition ansi_fast.c:191
char * append_color_fg_for_mode(char *dst, uint8_t r, uint8_t g, uint8_t b, terminal_color_mode_t mode)
Append color foreground sequence for specified mode.
Definition ansi_fast.c:426
uint8_t rgb_to_256color(uint8_t r, uint8_t g, uint8_t b)
Convert RGB to 256-color palette index.
Definition ansi_fast.c:199
void ansi_fast_init_16color(void)
Initialize 16-color mode lookup tables.
Definition ansi_fast.c:225
char * append_truecolor_bg(char *dst, uint8_t r, uint8_t g, uint8_t b)
Append truecolor background ANSI sequence.
Definition ansi_fast.c:49
@ ANSI_MODE_FOREGROUND_BACKGROUND
Definition ansi_fast.h:43
@ ANSI_MODE_FOREGROUND
Definition ansi_fast.h:41
@ ANSI_MODE_BACKGROUND
Definition ansi_fast.h:42
⚙️ Command-line options parsing and configuration management for ascii-chat
Run-length encoded color output context.
Definition ansi_fast.h:115
ansi_color_mode_t mode
Definition ansi_fast.h:120
Timing breakdown for performance measurement.
Definition ansi_fast.h:51
double output_time
Definition ansi_fast.h:54
double string_time
Definition ansi_fast.h:53
double total_time
Definition ansi_fast.h:55
double pixel_time
Definition ansi_fast.h:52
Decimal conversion cache structure (1-3 digits)
Definition ascii_simd.h:87
RGB error structure for dithering.
Definition ansi_fast.h:234