ascii-chat 0.8.38
Real-time terminal-based video chat with ASCII art conversion
Loading...
Searching...
No Matches
src/web/common/options.c
Go to the documentation of this file.
1
10#include "options.h"
11#include <ascii-chat/options/options.h>
12#include <ascii-chat/options/rcu.h>
13#include <ascii-chat/options/parsers.h>
14#include <ascii-chat/asciichat_errno.h>
15#include <ascii-chat/log/logging.h>
16#include <stdlib.h>
17
18// ============================================================================
19// Dimension Accessors
20// ============================================================================
21
22EMSCRIPTEN_KEEPALIVE
23int set_width(int value) {
24 if (value <= 0 || value > 1000)
25 return -1;
26 asciichat_error_t err = options_set_int("width", value);
27 return (err == ASCIICHAT_OK) ? 0 : -1;
28}
29
30EMSCRIPTEN_KEEPALIVE
31int get_width(void) {
32 return GET_OPTION(width);
33}
34
35EMSCRIPTEN_KEEPALIVE
36int set_height(int value) {
37 if (value <= 0 || value > 1000)
38 return -1;
39 asciichat_error_t err = options_set_int("height", value);
40 return (err == ASCIICHAT_OK) ? 0 : -1;
41}
42
43EMSCRIPTEN_KEEPALIVE
44int get_height(void) {
45 return GET_OPTION(height);
46}
47
48// ============================================================================
49// Color Mode Accessors
50// ============================================================================
51
52EMSCRIPTEN_KEEPALIVE
53int set_color_mode(int mode) {
54 asciichat_error_t err = options_set_int("color_mode", mode);
55 return (err == ASCIICHAT_OK) ? 0 : -1;
56}
57
58EMSCRIPTEN_KEEPALIVE
59int get_color_mode(void) {
60 return GET_OPTION(color_mode);
61}
62
63// ============================================================================
64// Color Filter Accessors
65// ============================================================================
66
67EMSCRIPTEN_KEEPALIVE
68int set_color_filter(int filter) {
69 asciichat_error_t err = options_set_int("color_filter", filter);
70 return (err == ASCIICHAT_OK) ? 0 : -1;
71}
72
73EMSCRIPTEN_KEEPALIVE
75 return GET_OPTION(color_filter);
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 return GET_OPTION(palette_type);
105}
106
107EMSCRIPTEN_KEEPALIVE
108int set_palette_chars(const char *chars) {
109 if (!chars)
110 return -1;
111 asciichat_error_t err = options_set_string("palette_custom", chars);
112 return (err == ASCIICHAT_OK) ? 0 : -1;
113}
114
115EMSCRIPTEN_KEEPALIVE
116const char *get_palette_chars(void) {
117 return GET_OPTION(palette_custom);
118}
119
120// ============================================================================
121// Matrix Rain Accessors
122// ============================================================================
123
124EMSCRIPTEN_KEEPALIVE
126 asciichat_error_t err = options_set_bool("matrix_rain", enabled != 0);
127 return (err == ASCIICHAT_OK) ? 0 : -1;
128}
129
130EMSCRIPTEN_KEEPALIVE
132 return GET_OPTION(matrix_rain) ? 1 : 0;
133}
134
135// ============================================================================
136// Horizontal Flip Accessors
137// ============================================================================
138
139EMSCRIPTEN_KEEPALIVE
141 asciichat_error_t err = options_set_bool("flip_x", enabled != 0);
142 return (err == ASCIICHAT_OK) ? 0 : -1;
143}
144
145EMSCRIPTEN_KEEPALIVE
146int get_flip_x(void) {
147 return GET_OPTION(flip_x) ? 1 : 0;
148}
149
150// ============================================================================
151// Render Mode Accessors
152// ============================================================================
153
154EMSCRIPTEN_KEEPALIVE
155int set_render_mode(int mode) {
156 asciichat_error_t err = options_set_int("render_mode", mode);
157 return (err == ASCIICHAT_OK) ? 0 : -1;
158}
159
160EMSCRIPTEN_KEEPALIVE
162 return GET_OPTION(render_mode);
163}
164
165// ============================================================================
166// Target FPS Accessors
167// ============================================================================
168
169EMSCRIPTEN_KEEPALIVE
170int set_target_fps(int fps) {
171 if (fps < 15 || fps > 60)
172 return -1;
173 asciichat_error_t err = options_set_int("fps", fps);
174 return (err == ASCIICHAT_OK) ? 0 : -1;
175}
176
177EMSCRIPTEN_KEEPALIVE
178int get_target_fps(void) {
179 return GET_OPTION(fps);
180}
bool enabled
Is filtering active?
Definition grep.c:78
WASM option accessor declarations.
bool parse_palette_type(const char *arg, void *dest, char **error_msg)
Definition parsers.c:345
asciichat_error_t options_set_int(const char *field_name, int value)
Definition rcu.c:449
asciichat_error_t options_set_string(const char *field_name, const char *value)
Definition rcu.c:647
asciichat_error_t options_set_bool(const char *field_name, bool value)
Definition rcu.c:562
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 set_color_mode(int mode)
EMSCRIPTEN_KEEPALIVE int get_height(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_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)