[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
#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");
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;
}
+++ /dev/null
-Subproject commit f75e8d1cad7d90d72ef7a4661f1b994ef78b4e31
#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 {
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);
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
#include <string.h>
#include <sys/errno.h>
-#include "raylib.h"
#include "utils.h"
// TODO: Ignore comments
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);
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;
#include <stdio.h>
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_
#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;
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_