ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
include/ascii-chat/tui/session.h
Go to the documentation of this file.
1#pragma once
2
3/* Storage capacities in elements; text buffers include the terminating NUL. */
4#define TUI_SESSION_SESSION_STRING_BUFFER_SIZE 256
5#define TUI_SESSION_UPDATE_NOTIFICATION_BUFFER_SIZE 1024
6#define TUI_SESSION_CONNECTION_TARGET_BUFFER_SIZE 512
7
12
21
29
30void ui_session_splash_render(frame_buffer_t *buf, terminal_size_t size, void *view);
32char *ui_session_help_render(terminal_size_t size, bool has_media, bool browser, terminal_size_t *minimum);
34void ui_session_help_free(char *text);
35char *ui_session_context_help_render(terminal_size_t size, ui_screen_t screen, terminal_size_t *minimum);
36
52
54ui_session_action_t ui_session_key(keyboard_key_t key, double *saved_volume);
55
56typedef struct ui_session ui_session_t;
57terminal_size_t ui_session_size(const ui_session_t *session);
64typedef void (*ui_session_draw_fn)(frame_buffer_t *output, terminal_size_t size, const animation_sample_t *animation,
65 void *context);
66typedef struct {
67 int screen;
68 terminal_size_t minimum;
69 bool dirty;
70 bool clear;
73 void *context;
75
77int ui_session_select_screen(uint32_t visible_screens);
81const char *ui_session_render(ui_session_t *session, const ui_session_view_t *view, uint64_t now_ns);
82bool ui_session_is_covered(const ui_session_t *session);
83size_t ui_session_frame_length(const ui_session_t *session);
87void ui_session_destroy(ui_session_t *session);
88void ui_session_resize(ui_session_t *session, int cols, int rows);
89void ui_session_loading(ui_session_t *session, bool loading, const char *message);
90void ui_session_log(ui_session_t *session, const char *message);
91asciichat_error_t ui_session_media(ui_session_t *session, const char *data, size_t length);
94const char *ui_session_tick(ui_session_t *session, uint64_t now_ns);
95void ui_session_clear(ui_session_t *session);
96void ui_session_redraw(ui_session_t *session);
98void ui_session_logs_render(frame_buffer_t *output, terminal_size_t size, ui_session_t *session);
Buffered terminal frame rendering.
struct frame_buffer frame_buffer_t
Opaque frame buffer handle.
unsigned int uint32_t
Definition common.h:62
unsigned long long uint64_t
Definition common.h:63
asciichat_error_t
Error and exit codes - unified status values (0-255).
Definition error_codes.h:44
keyboard_key_t
Options for interactive line editing.
Definition keyboard.h:53
void ui_session_help_free(char *text)
const char * ui_session_render(ui_session_t *session, const ui_session_view_t *view, uint64_t now_ns)
terminal_size_t ui_session_size(const ui_session_t *session)
int ui_session_select_screen(uint32_t visible_screens)
void ui_session_log(ui_session_t *session, const char *message)
void(* ui_session_draw_fn)(frame_buffer_t *output, terminal_size_t size, const animation_sample_t *animation, void *context)
The useful part of ui session view is in screen, minimum, dirty, clear: together they describe what i...
asciichat_error_t ui_session_media(ui_session_t *session, const char *data, size_t length)
bool ui_session_is_covered(const ui_session_t *session)
#define TUI_SESSION_UPDATE_NOTIFICATION_BUFFER_SIZE
void ui_session_loading(ui_session_t *session, bool loading, const char *message)
const char * ui_session_tick(ui_session_t *session, uint64_t now_ns)
bool ui_session_logs_key(keyboard_key_t key)
char * ui_session_context_help_render(terminal_size_t size, ui_screen_t screen, terminal_size_t *minimum)
void ui_session_resize(ui_session_t *session, int cols, int rows)
char * ui_session_help_render(terminal_size_t size, bool has_media, bool browser, terminal_size_t *minimum)
ui_session_action_t ui_session_key(keyboard_key_t key, double *saved_volume)
#define TUI_SESSION_CONNECTION_TARGET_BUFFER_SIZE
#define TUI_SESSION_SESSION_STRING_BUFFER_SIZE
uint64_t ui_session_next_frame_ns(const ui_session_t *session)
ui_session_t * ui_session_create(void)
void ui_session_logs_render(frame_buffer_t *output, terminal_size_t size, ui_session_t *session)
ui_session_action_t ui_session_input(ui_session_t *session, keyboard_key_t key)
void ui_session_splash_render(frame_buffer_t *buf, terminal_size_t size, void *view)
void ui_session_capture_logs(ui_session_t *session)
void ui_session_destroy(ui_session_t *session)
void ui_session_clear(ui_session_t *session)
struct ui_session ui_session_t
size_t ui_session_frame_length(const ui_session_t *session)
void ui_session_redraw(ui_session_t *session)
For animation config, this is the live record that ties type, fps, speed, hidden_policy together....
This is the handoff point for ui session. Callers fill size, frame, media, logs before passing it on;...
animation_t animation
terminal_size_t size
ui_screen_t