aboutsummaryrefslogtreecommitdiff
path: root/include/mgui/list.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/mgui/list.h')
-rw-r--r--include/mgui/list.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/include/mgui/list.h b/include/mgui/list.h
new file mode 100644
index 0000000..1da326d
--- /dev/null
+++ b/include/mgui/list.h
@@ -0,0 +1,33 @@
+#ifndef MGUI_LIST_H
+#define MGUI_LIST_H
+
+#include "widget.h"
+#include <stddef.h>
+
+typedef struct mgl_window mgl_window;
+typedef struct mgl_event mgl_event;
+
+typedef enum {
+ MGUI_LIST_HORIZONITAL,
+ MGUI_LIST_VERTICAL
+} mgui_list_direction;
+
+typedef struct {
+ mgui_widget widget;
+ mgui_list_direction direction;
+ mgl_vec2i position;
+ mgui_widget **items;
+ size_t num_items;
+ size_t items_capacity;
+} mgui_list;
+
+mgui_list* mgui_list_create(mgui_list_direction direction);
+mgui_widget* mgui_list_to_widget(mgui_list *list);
+mgui_list* mgui_widget_to_list(mgui_widget *widget);
+
+void mgui_list_set_position(mgui_list *self, mgl_vec2i position);
+void mgui_list_append(mgui_list *self, mgui_widget *widget);
+void mgui_list_on_event(mgui_list *self, mgl_window *window, mgl_event *event);
+void mgui_list_draw(mgui_list *self, mgl_window *window);
+
+#endif /* MGUI_LIST_H */