1 #if !defined(HIKARI_INDICATOR_H) 2 #define HIKARI_INDICATOR_H 3 4 #include <hikari/font.h> 5 #include <hikari/indicator_bar.h> 6 #include <hikari/sheet.h> 7 8 struct hikari_renderer; 9 struct hikari_view; 10 struct hikari_output; 11 12 struct hikari_indicator { 13 struct hikari_indicator_bar title; 14 struct hikari_indicator_bar sheet; 15 struct hikari_indicator_bar group; 16 struct hikari_indicator_bar mark; 17 }; 18 19 void 20 hikari_indicator_init( 21 struct hikari_indicator *indicator, float color[static 4]); 22 23 void 24 hikari_indicator_fini(struct hikari_indicator *indicator); 25 26 void 27 hikari_indicator_update( 28 struct hikari_indicator *indicator, struct hikari_view *view); 29 30 void 31 hikari_indicator_set_color( 32 struct hikari_indicator *indicator, float color[static 4]); 33 34 void 35 hikari_indicator_update_sheet(struct hikari_indicator *indicator, 36 struct hikari_output *output, 37 struct hikari_sheet *sheet, 38 unsigned long flags); 39 40 void 41 hikari_indicator_damage( 42 struct hikari_indicator *indicator, struct hikari_view *view); 43 44 #define UPDATE(name) \ 45 static inline void hikari_indicator_update_##name( \ 46 struct hikari_indicator *indicator, \ 47 struct hikari_output *output, \ 48 const char *text) \ 49 { \ 50 hikari_indicator_bar_update(&indicator->name, output, text); \ 51 } 52 53 UPDATE(title) 54 UPDATE(group) 55 UPDATE(mark) 56 #undef UPDATE 57 58 #define DAMAGE(name) \ 59 static inline void hikari_indicator_damage_##name( \ 60 struct hikari_indicator *indicator, \ 61 struct hikari_output *output, \ 62 struct wlr_box *geometry) \ 63 { \ 64 hikari_indicator_bar_damage(&indicator->name, output, geometry); \ 65 } 66 67 DAMAGE(title) 68 DAMAGE(sheet) 69 DAMAGE(group) 70 DAMAGE(mark) 71 #undef DAMAGE 72 73 #define COLOR(name) \ 74 static inline void hikari_indicator_set_color_##name( \ 75 struct hikari_indicator *indicator, float color[static 4]) \ 76 { \ 77 hikari_indicator_bar_set_color(&indicator->name, color); \ 78 } 79 80 COLOR(title) 81 COLOR(sheet) 82 COLOR(group) 83 COLOR(mark) 84 #undef COLOR 85 86 #endif 87