aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--include/saffron.h9
-rw-r--r--include/saffron_button.h11
-rw-r--r--include/saffron_text.h0
-rw-r--r--include/saffron_widget.h15
-rw-r--r--include/saffron_window.h0
-rw-r--r--meson.build6
-rw-r--r--src/saffron.c13
-rw-r--r--tests/test_main.c (renamed from src/main.c)8
9 files changed, 60 insertions, 3 deletions
diff --git a/.gitignore b/.gitignore
index 378eac2..9785597 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
build
+.cache
diff --git a/include/saffron.h b/include/saffron.h
new file mode 100644
index 0000000..8682ac4
--- /dev/null
+++ b/include/saffron.h
@@ -0,0 +1,9 @@
+#ifndef SAFFRON_H
+#define SAFFRON_H
+
+#include "saffron_button.h"
+#include "saffron_text.h"
+#include "saffron_widget.h"
+#include "saffron_window.h"
+
+#endif
diff --git a/include/saffron_button.h b/include/saffron_button.h
new file mode 100644
index 0000000..3112edf
--- /dev/null
+++ b/include/saffron_button.h
@@ -0,0 +1,11 @@
+#ifndef SAFFRON_BUTTON_H
+#define SAFFRON_BUTTON_H
+
+#include "saffron_widget.h"
+
+typedef struct {
+ SaffronWidget base; // must be first, or we're f**ked
+ const char* label;
+} SaffronButton;
+
+#endif
diff --git a/include/saffron_text.h b/include/saffron_text.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/include/saffron_text.h
diff --git a/include/saffron_widget.h b/include/saffron_widget.h
new file mode 100644
index 0000000..6d7b6bd
--- /dev/null
+++ b/include/saffron_widget.h
@@ -0,0 +1,15 @@
+#ifndef SAFFRON_WIDGET_H
+#define SAFFRON_WIDGET_H
+
+#include <SDL3/SDL.h>
+
+typedef struct SaffronWidget {
+ int x, y, w, h;
+ void (*draw)(struct SaffronWidget *self, SDL_Renderer *renderer);
+ void (*on_click)(struct SaffronWidget *self);
+ struct SaffronWidget *parent;
+ struct SaffronWidget **children;
+ int child_count;
+} SaffronWidget;
+
+#endif
diff --git a/include/saffron_window.h b/include/saffron_window.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/include/saffron_window.h
diff --git a/meson.build b/meson.build
index ce5edc9..2602bff 100644
--- a/meson.build
+++ b/meson.build
@@ -4,4 +4,8 @@ deps = []
deps += dependency('sdl3', static: true)
deps += dependency('sdl3-ttf', static: true)
-executable('saffron', 'src/main.c', dependencies: deps)
+saffron_lib = static_library('saffron', 'src/saffron.c', dependencies: deps)
+
+saffron_dep = declare_dependency(link_with: saffron_lib, include_directories: include_directories('include'), dependencies: deps)
+
+executable('saffron_test', 'tests/test_main.c', dependencies: saffron_dep)
diff --git a/src/saffron.c b/src/saffron.c
new file mode 100644
index 0000000..dc6e470
--- /dev/null
+++ b/src/saffron.c
@@ -0,0 +1,13 @@
+#include <stdio.h>
+#include <SDL3/SDL.h>
+#include <SDL3_ttf/SDL_ttf.h>
+#include <SDL3/SDL_main.h>
+
+typedef struct SaffronWidget {
+ int x, y, w, h;
+ void (*draw)(struct SaffronWidget *self, SDL_Renderer *renderer);
+ void (*on_click)(struct SaffronWidget *self);
+ struct SaffronWidget *parent;
+ struct SaffronWidget **children;
+ int child_count;
+} SaffronWidget;
diff --git a/src/main.c b/tests/test_main.c
index f286a0a..e24d17f 100644
--- a/src/main.c
+++ b/tests/test_main.c
@@ -1,3 +1,7 @@
+/* this doesnt really test saffron's api right now
+ * because i need to actually implement stuff
+ * but its good refactor for now
+*/
#include <SDL3/SDL.h>
#include <SDL3/SDL_main.h>
#include <SDL3_ttf/SDL_ttf.h>
@@ -6,7 +10,7 @@ int main(int argc, char *argv[]) {
SDL_Init(SDL_INIT_VIDEO);
TTF_Init();
- SDL_Window *window = SDL_CreateWindow("Saffron", 800, 600, 0);
+ SDL_Window *window = SDL_CreateWindow("saffron", 800, 600, 0);
SDL_Renderer *renderer = SDL_CreateRenderer(window, NULL);
TTF_Font *font = TTF_OpenFont("/usr/share/fonts/maple-mono/MapleMonoNL-Regular.ttf", 20); // "works on my machine" - Arslaan, 2026
@@ -19,7 +23,7 @@ int main(int argc, char *argv[]) {
SDL_FRect text_rect = {200, 200, 0, 0};
SDL_Color white = {255, 255, 255, 255};
- SDL_Surface *surface = TTF_RenderText_Blended(font, "Hello Saffron!", 0, white);
+ SDL_Surface *surface = TTF_RenderText_Blended(font, "hello, saffron!", 0, white);
SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer, surface);
SDL_DestroySurface(surface);
SDL_GetTextureSize(texture, &text_rect.w, &text_rect.h);