commit 98d0e23f0c6d7384bfd5f4cfe5ac016c019f71e3 from: Onana Onana Xavier Manuel date: Wed Jul 8 04:46:57 2026 UTC Added configuration prototypes for remaining widgets commit - 505b557c39f60c33968f0aa3252ad94ea45a6789 commit + 98d0e23f0c6d7384bfd5f4cfe5ac016c019f71e3 blob - 05dea7d5eeebc776750c1c185b4f4f6105f6ed6a blob + f38629d25d4e1a4e1308def65684adf2c6022363 --- aui.h +++ aui.h @@ -71,11 +71,11 @@ struct aui_button_config { }; struct aui_frame_config { - struct aui_color bg; + struct aui_color background; }; struct aui_canvas_config { - struct aui_color bg; + struct aui_color background; }; struct aui_label_config { @@ -88,8 +88,11 @@ void aui_run(void); void aui_destroy(struct aui_widget *); struct aui_window *aui_window_new(struct aui_window_config *); struct aui_button *aui_button_new(struct aui_widget *, struct aui_button_config *); -struct aui_frame *aui_frame_new(struct aui_widget *); -struct aui_canvas *aui_canvas_new(struct aui_widget *); +int aui_button_config(struct aui_widget *, struct aui_button_config *); +struct aui_frame *aui_frame_new(struct aui_widget *, struct aui_frame_config *); +int aui_frame_config(struct aui_widget *, struct aui_frame_config *); +struct aui_canvas *aui_canvas_new(struct aui_widget *, struct aui_canvas_config *); +int aui_canvas_config(struct aui_widget *, struct aui_canvas_config *); struct aui_label *aui_label_new(struct aui_widget *, struct aui_label_config *); int aui_label_config(struct aui_widget *, struct aui_label_config *); int aui_place(struct aui_widget *, struct aui_placepar *); blob - 05d261df8fbc7e48865fdd6f704122cb3d5ad61f blob + 4c55709846422afb7b0a278df81d9c3cae5d277f --- aui_run.3 +++ aui_run.3 @@ -1,4 +1,4 @@ -.Dd $Mdocdate: June 25 2026$ +.Dd $Mdocdate: July 07 2026$ .Dt AUI_RUN 3 .Os .Sh NAME @@ -24,8 +24,12 @@ .Fn aui_button_new "struct aui_widget * parent" "struct aui_button_config * config" .Ft struct aui_label* .Fn aui_label_new "struct aui_widget * parent" "struct aui_label_config * config" +.Ft int +.Fn aui_label_config "struct aui_widget * widget" "struct aui_label_config * config" .Ft struct aui_frame* -.Fn aui_frame_new "struct aui_widget * parent" +.Fn aui_frame_new "struct aui_widget * parent" "struct aui_frame_config * config" +.Ft int +.Fn aui_frame_config "struct aui_widget * widget" "struct aui_frame_config * config" .Ft struct aui_canvas* .Fn aui_canvas_new "struct aui_widget * parent" .Ft int @@ -68,7 +72,7 @@ library can understand. In the example above aw can be container like frame. Here is an example. .Pp .Bd -literal -offset indent -struct aui_frame *frame = aui_frame_new(AUI_WIDGET(aw)); +struct aui_frame *frame = aui_frame_new(AUI_WIDGET(aw), NULL); struct aui_button *btn = aui_button_new(AUI_WIDGET(frame)); .Ed .Pp blob - 56a859f9038051123999454079c51e46acdeac6c blob + d3bbeda2bba3d8e751a603f30dc66edd518f168a --- canvas.c +++ canvas.c @@ -36,7 +36,7 @@ static struct aui_color colors[] = { }; struct aui_canvas* -aui_canvas_new(struct aui_widget *parent) +aui_canvas_new(struct aui_widget *parent, struct aui_canvas_config *config) { struct aui_canvas *canvas = calloc(1, sizeof(struct aui_canvas)); struct aui_widget *widget = (struct aui_widget *)canvas; blob - 7cc1676291c032cf1d849d8ae3185b1e481d28b4 blob + a68537cc8a39f45621290298693e63dcd7c0b066 --- frame.c +++ frame.c @@ -23,12 +23,12 @@ static struct widget_ops frame_ops = { frame_get_min_size, }; -static struct aui_color colors[] = { - { 0x77, 0x77, 0x77, 0xff }, +static struct aui_frame_config default_config = { + .background = { 0x77, 0x77, 0x77, 0xff }, }; struct aui_frame* -aui_frame_new(struct aui_widget *parent) +aui_frame_new(struct aui_widget *parent, struct aui_frame_config *config) { struct aui_frame *frame = calloc(1, sizeof(struct aui_frame)); struct aui_widget *widget = (struct aui_widget *)frame; @@ -43,11 +43,23 @@ aui_frame_new(struct aui_widget *parent) widget->primitives.list = calloc(widget->primitives.count, sizeof(struct primitive *)); widget->primitives.list[0] = driver->ops->create_rectangle(); - driver->ops->set_rectangle_color(widget->window, widget->primitives.list[0], &colors[0]); + aui_frame_config(widget, config); return frame; } +int +aui_frame_config(struct aui_widget *widget, struct aui_frame_config *config) +{ + struct aui_frame *frame = (struct aui_frame *)widget; + + frame->config = (config == NULL) ? default_config : *config; + driver->ops->set_rectangle_color(widget->window, widget->primitives.list[0], + &frame->config.background); + + return 0; +} + static void frame_mouse_hover(struct aui_widget *widget, uint16_t x, uint16_t y) { blob - 16fc86b3515613a0f806806202e8806d70ea3f2d blob + f5e91b8a3d37b22614a38538601fcc76e0b3ea3e --- widget.h +++ widget.h @@ -82,6 +82,7 @@ struct aui_window { struct aui_frame { struct aui_container con; + struct aui_frame_config config; }; struct aui_canvas_item {