repos/menu

A graphical menu within a window
Commits Files Refs
menu.h (65 lines)
   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