From 12fb8e70c79fb262a06431bfbd0e4ce97380d2a8 Mon Sep 17 00:00:00 2001 From: Arslaan Pathan Date: Tue, 21 Apr 2026 15:28:04 +1200 Subject: Add foundations for layout --- src/saffron_layout.c | 26 ++++++++++++++++++++++++++ src/saffron_widget.c | 13 +++++++++---- src/saffron_window.c | 2 +- 3 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 src/saffron_layout.c (limited to 'src') diff --git a/src/saffron_layout.c b/src/saffron_layout.c new file mode 100644 index 0000000..cc91246 --- /dev/null +++ b/src/saffron_layout.c @@ -0,0 +1,26 @@ +#include "saffron_layout.h" +#include "saffron_api.h" +#include +#include +#include +#include +#include +#include + +SaffronBox* saffron_box_new(SaffronOrientation orientation, SaffronHorizontalAlignment halign, SaffronVerticalAlignment valign, int spacing, int padding, int margin) { + SaffronBox* box = malloc(sizeof(SaffronBox)); + if (!box) return NULL; + + saffron_widget_init((SaffronWidget*)box); + + box->orientation = orientation; + box->halign = halign; + box->valign = valign; + box->spacing = spacing; + box->padding = padding; + box->margin = margin; + + return box; +} + + diff --git a/src/saffron_widget.c b/src/saffron_widget.c index 932b7a5..850d1b8 100644 --- a/src/saffron_widget.c +++ b/src/saffron_widget.c @@ -3,10 +3,7 @@ #include #include -SaffronWidget* saffron_widget_new(void) { - /* This function is a generic primitive for creating widgets. You wouldn't want to do this manually unless you're a lunatic. It is meant to be wrapped around by other functions that change the default parameters, for example, what sane person makes a widget 0x0x0x0? you LUNATIC! */ - SaffronWidget* widget = malloc(sizeof(SaffronWidget)); - +void saffron_widget_init(SaffronWidget* widget) { widget->x = 0; widget->y = 0; widget->w = 0; @@ -18,6 +15,14 @@ SaffronWidget* saffron_widget_new(void) { widget->parent = NULL; widget->children = NULL; widget->child_count = 0; +} + +SaffronWidget* saffron_widget_new(void) { + /* This function is a generic primitive for creating widgets. You wouldn't want to do this manually unless you're a lunatic. It is meant to be wrapped around by other functions that change the default parameters, for example, what sane person makes a widget 0x0x0x0? you LUNATIC! */ + SaffronWidget* widget = malloc(sizeof(SaffronWidget)); + if (widget) { + saffron_widget_init(widget); + } return widget; } diff --git a/src/saffron_window.c b/src/saffron_window.c index a25fa0e..c595c08 100644 --- a/src/saffron_window.c +++ b/src/saffron_window.c @@ -7,7 +7,7 @@ SaffronWindow* saffron_window_new(const char* title, int w, int h) { SaffronWindow* window = malloc(sizeof(SaffronWindow)); - window->root = saffron_widget_new(); // frick, need to implement this. + window->root = saffron_widget_new(); window->title = title; window->w = window->root->w = w; window->h = window->root->h = h; -- cgit v1.2.3