#ifndef SAFFRON_WIDGET_H #define SAFFRON_WIDGET_H #include typedef enum{ SAFFRON_SIZE_FIXED, SAFFRON_SIZE_STRETCH, SAFFRON_SIZE_SCALE // scale but keep aspect ratio. this must be set on BOTH size modes (width AND height) to work } SaffronSizeMode; 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; SaffronSizeMode width_mode; SaffronSizeMode height_mode; bool pixel_perfect; // Do we scale dynamically (SaffronSizeMode, etc) or use raw x, y, w, h values? If this is true, the SaffronSizeModes from earlier will be ignored } SaffronWidget; #endif