From 0f19e5f0175b0e031257ccd22f42e21baaf2f720 Mon Sep 17 00:00:00 2001 From: Arslaan Pathan Date: Wed, 8 Apr 2026 18:21:40 +1200 Subject: Implement saffron_window_main and saffron_quit, among a few other missing APIs, and get an actual API test to work. IT WORKS IT WORKS IT WORKS THIS IS SO PEAK IT WORKS OHMYGOD IT WORKS FINALLY IT WORKS IT WORKS IT WOORKSKSKSKSKKS!!!!!! --- tests/test_main.c | 96 +++++++++++++++++++++++++++---------------------------- 1 file changed, 47 insertions(+), 49 deletions(-) (limited to 'tests/test_main.c') diff --git a/tests/test_main.c b/tests/test_main.c index e24d17f..c171192 100644 --- a/tests/test_main.c +++ b/tests/test_main.c @@ -1,52 +1,50 @@ -/* this doesnt really test saffron's api right now - * because i need to actually implement stuff - * but its good refactor for now -*/ #include -#include -#include - -int main(int argc, char *argv[]) { - SDL_Init(SDL_INIT_VIDEO); - TTF_Init(); - - 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 - - bool running = true; - SDL_Event event; - SDL_FRect rect; - rect.x = rect.y = 100; - rect.w = rect.h = 100; - - 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_Texture *texture = SDL_CreateTextureFromSurface(renderer, surface); - SDL_DestroySurface(surface); - SDL_GetTextureSize(texture, &text_rect.w, &text_rect.h); - - while (running) { - while (SDL_PollEvent(&event)) { - if (event.type == SDL_EVENT_QUIT) { - running = false; - } - } - - SDL_SetRenderDrawColor(renderer, 0, 0, 0, SDL_ALPHA_OPAQUE); - SDL_RenderClear(renderer); - SDL_SetRenderDrawColor(renderer, 255, 0, 0, SDL_ALPHA_OPAQUE); - SDL_RenderFillRect(renderer, &rect); - SDL_RenderTexture(renderer, texture, NULL, &text_rect); - SDL_RenderPresent(renderer); - } - - TTF_CloseFont(font); - TTF_Quit(); - SDL_DestroyRenderer(renderer); - SDL_DestroyWindow(window); - SDL_Quit(); +#include +#include +#include +#include + +/* PLEASE don't do this in production + * when wrappers are implemented, + * THEY will make draw functions for you + * THIS IS A BAD IDEA */ +void my_test_draw(SaffronWidget* self, SDL_Renderer* renderer) { + SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255); + SDL_FRect rect = {self->x, self->y, self->w, self->h}; + SDL_RenderFillRect(renderer, &rect); + + SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); + SDL_RenderRect(renderer, &rect); +} + +int main(void) { + saffron_init(); + + SaffronWindow* window = saffron_window_new("saffron test", 800, 600); + + /* i guess IM THE LUNATIC NOW + * DEAL WITH IT */ + SaffronWidget* test = saffron_widget_new(); + test->x = 100; + test->y = 100; + test->w = 200; + test->h = 150; + test->draw = my_test_draw; + + /* lunatic method 2 */ + SaffronWidget* test2 = saffron_widget_new(); + test2->x = 150; + test2->y = 500; + test2->w = 300; + test2->h = 170; + test2->draw = my_test_draw; + + saffron_widget_add_child(window->root, test); + saffron_widget_add_child(window->root, test2); + + saffron_window_main(window); + + saffron_window_free(window); + saffron_quit(); return 0; } -- cgit v1.2.3