ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
renderer.h
Go to the documentation of this file.
1
9#pragma once
10
11#include <stdint.h>
12#include <stddef.h>
14
15// ── Platform renderer ─────────────────────────────────────────────────────
16
18
31
32typedef struct {
33 int cols;
34 int rows;
35 double font_size_pt; // point size, default 12.0 (fractional sizes supported)
37 char font_spec[512]; // resolved by platform_font_resolve()
38 bool font_is_path; // true = file path, false = family name (macOS)
39 const uint8_t *font_data; // non-NULL → load from memory (Linux only)
42
43// Implemented in lib/platform/{linux,macos,windows}/terminal.{c,m}
45asciichat_error_t term_renderer_feed(terminal_renderer_t *r, const char *ansi_frame, size_t len);
51
52// ── Render-file orchestrator ──────────────────────────────────────────────
53
55
56// Create: allocates renderer + FFmpeg encoder.
57// cols/rows from terminal size; fps/theme from GET_OPTION().
58asciichat_error_t render_file_create(const char *output_path, int cols, int rows, int fps, int theme,
59 render_file_ctx_t **out);
60
61// Feed one ANSI frame string — renders pixels then writes to encoder, synced with audio.
62// captured_ns is the wall-clock timestamp (in nanoseconds) when the frame was captured
63// for proper frame timing in the output video.
64asciichat_error_t render_file_write_frame(render_file_ctx_t *ctx, const char *ansi_frame, uint64_t captured_ns);
65
66/* Live sessions use capture timestamps; file conversion retains constant-frame-rate timing. */
68
69// Set actual wall-clock duration for snapshot mode (passes through to encoder).
70void render_file_set_snapshot_actual_duration(render_file_ctx_t *ctx, double actual_duration_sec);
71
72// Flush encoder and close file. Always frees *ctx regardless of error.
⚠️‼️ Comprehensive thread-local error context system for ascii-chat
unsigned long long uint64_t
Definition common.h:59
unsigned char uint8_t
Definition common.h:56
asciichat_error_t
Error and exit codes - unified status values (0-255)
Definition error_codes.h:49
void render_file_set_snapshot_actual_duration(render_file_ctx_t *ctx, double actual_duration_sec)
Definition renderer.c:241
int term_renderer_width_px(terminal_renderer_t *r)
asciichat_error_t render_file_write_frame(render_file_ctx_t *ctx, const char *ansi_frame, uint64_t captured_ns)
Definition renderer.c:146
void render_file_set_live_timing(render_file_ctx_t *ctx)
Definition renderer.c:139
term_renderer_theme_t
Terminal rendering theme.
Definition renderer.h:26
@ TERM_RENDERER_THEME_LIGHT
Definition renderer.h:28
@ TERM_RENDERER_THEME_DARK
Definition renderer.h:27
@ TERM_RENDERER_THEME_AUTO
Definition renderer.h:29
asciichat_error_t render_file_create(const char *output_path, int cols, int rows, int fps, int theme, render_file_ctx_t **out)
Definition renderer.c:33
const uint8_t * term_renderer_pixels(terminal_renderer_t *r)
asciichat_error_t term_renderer_create(const term_renderer_config_t *cfg, terminal_renderer_t **out)
void term_renderer_destroy(terminal_renderer_t *r)
asciichat_error_t render_file_destroy(render_file_ctx_t *ctx)
Definition renderer.c:247
asciichat_error_t term_renderer_feed(terminal_renderer_t *r, const char *ansi_frame, size_t len)
int term_renderer_pitch(terminal_renderer_t *r)
int term_renderer_height_px(terminal_renderer_t *r)
const uint8_t * font_data
Definition renderer.h:39
term_renderer_theme_t theme
Definition renderer.h:36