From 6a2d4b75806cd8853ca374c97d1959cdf16911d7 Mon Sep 17 00:00:00 2001 From: Trent Huber Date: Mon, 14 Oct 2024 23:50:12 -0400 Subject: [PATCH] Cleaning up - Removed stb_image_writer dependency (included in Raylib) - Compartmentalized translation units ("const" and "static") --- .gitmodules | 3 --- external/cbs.c | 17 ++++------------- external/stb | 1 - src/main.c | 19 ++++++++++--------- src/parser.c | 8 ++++---- src/tokenizer.c | 5 ++--- src/tokenizer.h | 4 ++-- src/xpm_mode.c | 2 +- src/xpm_mode.h | 2 +- 9 files changed, 24 insertions(+), 37 deletions(-) delete mode 160000 external/stb diff --git a/.gitmodules b/.gitmodules index 14aea5d..5daa9e9 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,6 +4,3 @@ [submodule "external/raylib"] path = external/raylib url = git@github.com:raysan5/raylib.git -[submodule "external/stb"] - path = external/stb - url = git@github.com:nothings/stb.git diff --git a/external/cbs.c b/external/cbs.c index d68d408..70c49cc 100644 --- a/external/cbs.c +++ b/external/cbs.c @@ -4,7 +4,10 @@ #define CC "cc" -void build_raylib(void) { +int main(int argc, char **argv) { + cbs_rebuild_self(argv); + cbs_shift_args(&argc, &argv); + const char *raylib_src_dir = "./raylib/src"; Cbs_File_Paths raylib_src_files = {0}, raylib_obj_files = {0}; cbs_file_paths_build_file_ext(&raylib_src_files, raylib_src_dir, ".c"); @@ -33,18 +36,6 @@ void build_raylib(void) { cbs_cmd_build_file_paths(&cmd, raylib_obj_files); cbs_cmd_run(&cmd); } -} - -void build_stbi_image_write(void) { - -} - -int main(int argc, char **argv) { - cbs_rebuild_self(argv); - cbs_shift_args(&argc, &argv); - - build_raylib(); - build_stbi_image_write(); return 0; } diff --git a/external/stb b/external/stb deleted file mode 160000 index f75e8d1..0000000 --- a/external/stb +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f75e8d1cad7d90d72ef7a4661f1b994ef78b4e31 diff --git a/src/main.c b/src/main.c index d826cd4..212b363 100644 --- a/src/main.c +++ b/src/main.c @@ -7,14 +7,18 @@ #include "raylib.h" #include "utils.h" +#define DEFAULT_SCREEN_WIDTH 800 +#define DEFAULT_SCREEN_HEIGHT 600 #define FILE_PATH_CAP 2048 #define FONT_SIZE 48 -Image image; -Texture2D texture; -bool have_texture; +// TODO: Improve error messages -void create_texture_from_xpm_file(char *xpm_file_path) { +static Image image; +static Texture2D texture; +static bool have_texture; + +static void create_texture_from_xpm_file(const char *xpm_file_path) { if (!parse_xpm_file(&image, xpm_file_path)) have_texture = false; else { @@ -27,16 +31,13 @@ void create_texture_from_xpm_file(char *xpm_file_path) { int main(int argc, char **argv) { char xpm_file_path[FILE_PATH_CAP] = {0}; - // Check if a file was given on the command line if (argc >= 2) { - strncpy(xpm_file_path, argv[2], FILE_PATH_CAP); + strncpy(xpm_file_path, argv[1], FILE_PATH_CAP); create_texture_from_xpm_file(xpm_file_path); } - int default_screen_width = 800; - int default_screen_height = 600; SetTraceLogLevel(LOG_WARNING); - InitWindow(default_screen_width, default_screen_height, "simplexpm"); + InitWindow(DEFAULT_SCREEN_WIDTH, DEFAULT_SCREEN_HEIGHT, "simplexpm"); SetWindowState(FLAG_WINDOW_RESIZABLE); Font font = LoadFontEx("./fonts/Comic_Sans_MS.ttf", FONT_SIZE, NULL, 0); diff --git a/src/parser.c b/src/parser.c index ecabf1e..831df1b 100644 --- a/src/parser.c +++ b/src/parser.c @@ -115,10 +115,10 @@ bool parse_xpm_file(Image *image, const char *file_path) { size_t hex_value = convert_token_to_num(++color_str, 16); if (hex_value> 0xffffff) SIMPLE_XPM_ERROR("Hex #%s is not a valid color value", color_str); - size_t r = (hex_value & 0x00ff0000) >> (2 * 8); - size_t g = (hex_value & 0x0000ff00); - size_t b = (hex_value & 0x000000ff) << (2 * 8); - size_t a = 0xff000000; + size_t r = (hex_value & 0x00ff0000) >> (2 * 8), + g = (hex_value & 0x0000ff00), + b = (hex_value & 0x000000ff) << (2 * 8), + a = 0xff000000; color = r | g | b | a; break; case '%':; // HSV diff --git a/src/tokenizer.c b/src/tokenizer.c index c9528f7..3df6491 100644 --- a/src/tokenizer.c +++ b/src/tokenizer.c @@ -3,7 +3,6 @@ #include #include -#include "raylib.h" #include "utils.h" // TODO: Ignore comments @@ -18,7 +17,7 @@ int get_next_line(char **buffer, FILE *file) { return 1; } -void check_next_token(char **string, char *token) { +void check_next_token(char **string, const char *token) { size_t token_len = strlen(token); if (strncmp(strstrip(string), token, token_len) != 0) SIMPLE_XPM_ERROR("Unable to parse provided file: expected token \"%s\"", token); @@ -67,7 +66,7 @@ defer: return result; } -size_t convert_token_to_num(char *token, int base) { +size_t convert_token_to_num(const char *token, int base) { if (token == NULL) SIMPLE_XPM_ERROR("Expected non-null token to parse"); errno = 0; diff --git a/src/tokenizer.h b/src/tokenizer.h index 5e0893a..cf9e5b3 100644 --- a/src/tokenizer.h +++ b/src/tokenizer.h @@ -5,9 +5,9 @@ #include int get_next_line(char **buffer, FILE *file); -void check_next_token(char **string, char *token); +void check_next_token(char **string, const char *token); char *get_next_token(char **string); bool get_terminal_token(char **string, char **token); -size_t convert_token_to_num(char *token, int base); +size_t convert_token_to_num(const char *token, int base); #endif // _TOKENIZER_H_ diff --git a/src/xpm_mode.c b/src/xpm_mode.c index 812be3b..b1d90cc 100644 --- a/src/xpm_mode.c +++ b/src/xpm_mode.c @@ -3,7 +3,7 @@ #include "xpm_mode.h" #include "utils.h" -Xpm_Mode convert_token_to_mode(char *token) { +Xpm_Mode convert_token_to_mode(const char *token) { if (strcmp(token, "m") == 0) return XPM_MODE_MONO; if (strcmp(token, "s") == 0) return XPM_MODE_SYMBOLIC; if (strcmp(token, "g4") == 0) return XPM_MODE_GRAYSCALE_4; diff --git a/src/xpm_mode.h b/src/xpm_mode.h index 3dc0e98..4a72233 100644 --- a/src/xpm_mode.h +++ b/src/xpm_mode.h @@ -10,6 +10,6 @@ typedef enum { NUM_XPM_MODES, } Xpm_Mode; -Xpm_Mode convert_token_to_mode(char *token); +Xpm_Mode convert_token_to_mode(const char *token); #endif // _XPM_MODE_H_ -- 2.51.0