System/Libraries/Widget: Add RectWidget, BorderedRectWidget

This commit is contained in:
Alec Murphy 2025-04-29 10:26:38 -04:00
parent f3acdca538
commit cfb8950f8a

View file

@ -17,6 +17,8 @@
#define WIDGET_TYPE_VERT_SCROLLBAR 13 #define WIDGET_TYPE_VERT_SCROLLBAR 13
#define WIDGET_TYPE_MENU_ITEM 14 #define WIDGET_TYPE_MENU_ITEM 14
#define WIDGET_TYPE_LISTVIEW 15 #define WIDGET_TYPE_LISTVIEW 15
#define WIDGET_TYPE_RECT 20
#define WIDGET_TYPE_BORDERED_RECT 21
#define TERMINAL_MAX_COLS 1920 / 8 #define TERMINAL_MAX_COLS 1920 / 8
@ -67,6 +69,23 @@ class RadioButtonWidget : Widget {
Bool selected; Bool selected;
}; };
class RectWidget : Widget {
U32 color;
};
class BorderedRectBorder {
I64 size;
I64 style;
U32 color;
};
class BorderedRectWidget : RectWidget {
BorderedRectBorder top;
BorderedRectBorder bottom;
BorderedRectBorder left;
BorderedRectBorder right;
};
class @terminal_widget_attr class @terminal_widget_attr
{ {
Bool bold; Bool bold;
@ -621,6 +640,12 @@ Widget* @widget_create_widget(Window* win, I64 type, I64 x, I64 y, I64 width,
switch (type) { switch (type) {
case WIDGET_TYPE_NULL: case WIDGET_TYPE_NULL:
return NULL; return NULL;
case WIDGET_TYPE_RECT:
size_of_widget = sizeof(RectWidget) * 2;
goto @widget_create_set_values;
case WIDGET_TYPE_BORDERED_RECT:
size_of_widget = sizeof(BorderedRectWidget) * 2;
goto @widget_create_set_values;
case WIDGET_TYPE_BUTTON: case WIDGET_TYPE_BUTTON:
size_of_widget = sizeof(ButtonWidget) * 2; size_of_widget = sizeof(ButtonWidget) * 2;
goto @widget_create_set_values; goto @widget_create_set_values;
@ -720,6 +745,12 @@ U0 @widget_init_widget(Widget* widget, Window* win, I64 type, I64 x, I64 y,
switch (type) { switch (type) {
case WIDGET_TYPE_NULL: case WIDGET_TYPE_NULL:
return; return;
case WIDGET_TYPE_RECT:
size_of_widget = sizeof(RectWidget);
break;
case WIDGET_TYPE_BORDERED_RECT:
size_of_widget = sizeof(BorderedRectWidget);
break;
case WIDGET_TYPE_BUTTON: case WIDGET_TYPE_BUTTON:
size_of_widget = sizeof(ButtonWidget); size_of_widget = sizeof(ButtonWidget);
break; break;