1 #ifndef _MENU_H_ 2 #define _MENU_H_ 3 4 #include <SDL2/SDL.h> 5 #include <SDL2/SDL_ttf.h> 6 #include <stdbool.h> 7 8 #include "util.h" 9 10 #define FONT_COLOR 0xFFFCF9FF 11 #define SHADOW_COLOR 0x000000FF 12 13 #define BAR_H 14 14 #define BAR_BORDER 2 15 16 #define TOTAL_ENTRIES 19 17 #define ELEMENTS_PADDING 3 18 19 #define NORM_COLOR 0x010101FF 20 #define SEL_COLOR 0xEE0000FF 21 #define HOVER_COLOR 0x444444FF 22 23 #define WIN_DEFAULT_W 800 24 #define WIN_DEFAULT_H 600 25 26 #define UNHEX(color) \ 27 ((color) >> (8 * 3)) & 0xFF, \ 28 ((color) >> (8 * 2)) & 0xFF, \ 29 ((color) >> (8 * 1)) & 0xFF, \ 30 ((color) >> (8 * 0)) & 0xFF 31 32 typedef struct { 33 char *text; 34 bool selected, hover; 35 size_t index; 36 Coord pos; 37 } Elem; 38 39 typedef struct { 40 Elem **elements; 41 size_t size; 42 } Set; 43 44 void Set_new(Set **, size_t size); 45 void Set_draw(Set *); 46 void Set_destroy(Set *); 47 48 void Set_select_prev(Set *); 49 void Set_select_next(Set *); 50 void Set_select_index(Set *, size_t i); 51 void Set_hover_at(Set *, int, int); 52 void Set_hover_elem(Set *, size_t); 53 size_t Set_elem_at(Set *, int, int); 54 void Set_compute_pos(Set *, int, int); 55 56 57 /* void Elem_new(Elem **); */ 58 /* void Elem_destroy(Elem *); */ 59 60 void Elem_draw(SDL_Renderer *, TTF_Font *, int, int, const Elem *); 61 void Elem_set_text(Elem *, const char *); 62 63 64 65 #endif
