5 #include "system/stacktrace.h"
7 #include "system/nth_alloc.h"
8 #include "system/str.h"
9 #include "math/point.h"
11 #include "./list_selector.h"
22 ListSelector *create_list_selector(const char **items,
34 ListSelector *list_selector = PUSH_LT(lt, nth_alloc(sizeof(ListSelector)), free);
35 if (list_selector == NULL) {
38 list_selector->lt = lt;
40 list_selector->items = PUSH_LT(lt, nth_calloc(count, sizeof(const char*)), free);
41 if (list_selector->items == NULL) {
45 for (size_t i = 0; i < count; ++i) {
46 list_selector->items[i] = PUSH_LT(lt, string_duplicate(list_selector->items[i], NULL), free);
47 if (list_selector->items[i] == NULL) {
52 list_selector->count = count;
53 list_selector->positiion = positiion;
54 list_selector->width = width;
59 void destroy_list_selector(ListSelector *list_selector)
61 trace_assert(list_selector);
62 RETURN_LT0(list_selector->lt);
65 int list_selector_render(const ListSelector *list_selector, SDL_Renderer *renderer)
67 trace_assert(list_selector);
68 trace_assert(renderer);
72 int list_selector_update(ListSelector *list_selector, float delta_time)
74 trace_assert(list_selector);
80 int list_selector_event(ListSelector *list_selector, const SDL_Event *event)
82 trace_assert(list_selector);
87 const char *list_selector_selected(const ListSelector *list_selector)
89 trace_assert(list_selector);