ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
src/web/common/options.c
Go to the documentation of this file.
1
10#include "options.h"
15#include <ascii-chat/log/log.h>
16#include <stdlib.h>
17
18// ============================================================================
19// Dimension Accessors
20// ============================================================================
21
22EMSCRIPTEN_KEEPALIVE
23int set_width(int value) {
24 asciichat_error_t err = options_set_int("width", value);
25 return (err == ASCIICHAT_OK) ? 0 : -1;
26}
27
28EMSCRIPTEN_KEEPALIVE
29int get_width(void) {
30 int result = GET_OPTION(width);
31 return result;
32}
33
34EMSCRIPTEN_KEEPALIVE
35int set_height(int value) {
36 asciichat_error_t err = options_set_int("height", value);
37 return (err == ASCIICHAT_OK) ? 0 : -1;
38}
39
40EMSCRIPTEN_KEEPALIVE
41int get_height(void) {
42 int result = GET_OPTION(height);
43 return result;
44}
45
46// ============================================================================
47// Color Mode Accessors
48// ============================================================================
49
50EMSCRIPTEN_KEEPALIVE
51int set_color_mode(int mode) {
52 asciichat_error_t err = options_set_int("color_mode", mode);
53 return (err == ASCIICHAT_OK) ? 0 : -1;
54}
55
56EMSCRIPTEN_KEEPALIVE
57int get_color_mode(void) {
58 int result = GET_OPTION(color_mode);
59 return result;
60}
61
62// ============================================================================
63// Color Filter Accessors
64// ============================================================================
65
66EMSCRIPTEN_KEEPALIVE
67int set_color_filter(int filter) {
68 asciichat_error_t err = options_set_int("color_filter", filter);
69 return (err == ASCIICHAT_OK) ? 0 : -1;
70}
71
72EMSCRIPTEN_KEEPALIVE
74 int result = GET_OPTION(color_filter);
75 return result;
76}
77
78// ============================================================================
79// Palette Accessors
80// ============================================================================
81
82EMSCRIPTEN_KEEPALIVE
83int set_palette(const char *palette_name) {
84 if (!palette_name)
85 return -1;
86
87 palette_type_t palette_value;
88 char *error_msg = NULL;
89
90 if (!parse_palette_type(palette_name, &palette_value, &error_msg)) {
91 if (error_msg) {
92 log_error("Failed to parse palette '%s': %s", palette_name, error_msg);
93 free(error_msg);
94 }
95 return -1;
96 }
97
98 asciichat_error_t err = options_set_int("palette_type", (int)palette_value);
99 return (err == ASCIICHAT_OK) ? 0 : -1;
100}
101
102EMSCRIPTEN_KEEPALIVE
103int get_palette(void) {
104 int result = GET_OPTION(palette_type);
105 return result;
106}
107
108EMSCRIPTEN_KEEPALIVE
109int set_palette_chars(const char *chars) {
110 if (!chars)
111 return -1;
112 asciichat_error_t err = options_set_string("palette_custom", chars);
113 return (err == ASCIICHAT_OK) ? 0 : -1;
114}
115
116EMSCRIPTEN_KEEPALIVE
117const char *get_palette_chars(void) {
118 const char *result = GET_OPTION(palette_custom);
119 return result;
120}
121
122// ============================================================================
123// Matrix Rain Accessors
124// ============================================================================
125
126EMSCRIPTEN_KEEPALIVE
128 asciichat_error_t err = options_set_bool("matrix_rain", enabled != 0);
129 return (err == ASCIICHAT_OK) ? 0 : -1;
130}
131
132EMSCRIPTEN_KEEPALIVE
134 int result = GET_OPTION(matrix_rain) ? 1 : 0;
135 return result;
136}
137
138EMSCRIPTEN_KEEPALIVE
140 return options_set_bool("waveform", enabled != 0) == ASCIICHAT_OK ? 0 : -1;
141}
142
143EMSCRIPTEN_KEEPALIVE
144int get_waveform(void) {
145 return GET_OPTION(waveform) ? 1 : 0;
146}
147
148EMSCRIPTEN_KEEPALIVE
149int set_fft(int enabled) {
150 return options_set_bool("fft", enabled != 0) == ASCIICHAT_OK ? 0 : -1;
151}
152
153EMSCRIPTEN_KEEPALIVE
154int get_fft(void) {
155 return GET_OPTION(fft) ? 1 : 0;
156}
157
158// ============================================================================
159// Horizontal Flip Accessors
160// ============================================================================
161
162EMSCRIPTEN_KEEPALIVE
164 asciichat_error_t err = options_set_bool("flip_x", enabled != 0);
165 return (err == ASCIICHAT_OK) ? 0 : -1;
166}
167
168EMSCRIPTEN_KEEPALIVE
169int get_flip_x(void) {
170 int result = GET_OPTION(flip_x) ? 1 : 0;
171 return result;
172}
173
174// ============================================================================
175// Vertical Flip Accessors
176// ============================================================================
177
178EMSCRIPTEN_KEEPALIVE
180 asciichat_error_t err = options_set_bool("flip_y", enabled != 0);
181 return (err == ASCIICHAT_OK) ? 0 : -1;
182}
183
184EMSCRIPTEN_KEEPALIVE
185int get_flip_y(void) {
186 int result = GET_OPTION(flip_y) ? 1 : 0;
187 return result;
188}
189
190// ============================================================================
191// Render Mode Accessors
192// ============================================================================
193
194EMSCRIPTEN_KEEPALIVE
195int set_render_mode(int mode) {
196 asciichat_error_t err = options_set_int("render_mode", mode);
197 return (err == ASCIICHAT_OK) ? 0 : -1;
198}
199
200EMSCRIPTEN_KEEPALIVE
202 int result = GET_OPTION(render_mode);
203 return result;
204}
205
206// ============================================================================
207// Target FPS Accessors
208// ============================================================================
209
210EMSCRIPTEN_KEEPALIVE
211int set_target_fps(int fps) {
212 asciichat_error_t err = options_set_int("fps", fps);
213 return (err == ASCIICHAT_OK) ? 0 : -1;
214}
215
216EMSCRIPTEN_KEEPALIVE
217int get_target_fps(void) {
218 int result = GET_OPTION(fps);
219 return result;
220}
221
222// ============================================================================
223// Help Text API
224// ============================================================================
225
234EMSCRIPTEN_KEEPALIVE
235const char *get_help_text(int mode, const char *option_name) {
236 if (!option_name || !option_name[0])
237 return NULL;
238 asciichat_mode_t mode_enum = (asciichat_mode_t)mode;
239 const char *result = options_get_help_text(mode_enum, option_name);
240 return result;
241}
⚠️‼️ Comprehensive thread-local error context system for ascii-chat
bool enabled
Is filtering active?
Definition grep.c:84
asciichat_error_t
Error and exit codes - unified status values (0-255)
Definition error_codes.h:49
@ ASCIICHAT_OK
Definition error_codes.h:51
#define log_error(...)
Log an ERROR message.
Definition log/log.h:587
const char * options_get_help_text(asciichat_mode_t mode, const char *option_name)
Get help text for an option in a specific mode.
Definition help_api.c:27
#define GET_OPTION(field)
Safely get a specific option field (lock-free read)
asciichat_mode_t
Mode type for options parsing.
asciichat_error_t options_set_int(const char *field_name, int value)
Check if an option was explicitly set via command-line.
Definition rcu.c:761
asciichat_error_t options_set_string(const char *field_name, const char *value)
Definition rcu.c:1186
asciichat_error_t options_set_bool(const char *field_name, bool value)
Definition rcu.c:969
palette_type_t
Built-in palette type enumeration.
Definition palette.h:84
⚙️ Unified options parsing system for ascii-chat with builder pattern and lock-free access
📝 Logging API with multiple log levels and terminal output control
bool parse_palette_type(const char *arg, void *dest, char **error_msg)
Parse palette type option.
Definition parsers.c:385
Custom option parsers for enum types.
EMSCRIPTEN_KEEPALIVE int set_waveform(int enabled)
EMSCRIPTEN_KEEPALIVE int get_color_filter(void)
EMSCRIPTEN_KEEPALIVE int get_render_mode(void)
EMSCRIPTEN_KEEPALIVE int set_palette(const char *palette_name)
EMSCRIPTEN_KEEPALIVE int get_palette(void)
EMSCRIPTEN_KEEPALIVE int get_flip_x(void)
EMSCRIPTEN_KEEPALIVE int set_color_filter(int filter)
EMSCRIPTEN_KEEPALIVE int get_waveform(void)
EMSCRIPTEN_KEEPALIVE int set_color_mode(int mode)
EMSCRIPTEN_KEEPALIVE int get_height(void)
EMSCRIPTEN_KEEPALIVE int set_fft(int enabled)
EMSCRIPTEN_KEEPALIVE int get_flip_y(void)
EMSCRIPTEN_KEEPALIVE int get_fft(void)
EMSCRIPTEN_KEEPALIVE int get_color_mode(void)
EMSCRIPTEN_KEEPALIVE int get_width(void)
EMSCRIPTEN_KEEPALIVE int set_render_mode(int mode)
EMSCRIPTEN_KEEPALIVE int set_target_fps(int fps)
EMSCRIPTEN_KEEPALIVE int get_target_fps(void)
EMSCRIPTEN_KEEPALIVE int set_flip_y(int enabled)
EMSCRIPTEN_KEEPALIVE int set_width(int value)
EMSCRIPTEN_KEEPALIVE int set_matrix_rain(int enabled)
EMSCRIPTEN_KEEPALIVE int set_flip_x(int enabled)
EMSCRIPTEN_KEEPALIVE const char * get_palette_chars(void)
EMSCRIPTEN_KEEPALIVE int set_palette_chars(const char *chars)
EMSCRIPTEN_KEEPALIVE int set_height(int value)
EMSCRIPTEN_KEEPALIVE int get_matrix_rain(void)
EMSCRIPTEN_KEEPALIVE const char * get_help_text(int mode, const char *option_name)
WASM option accessor declarations.