1 #if !defined(HIKARI_VIEW_CONFIG_H) 2 #define HIKARI_VIEW_CONFIG_H 3 4 #include <assert.h> 5 #include <stdbool.h> 6 #include <wayland-util.h> 7 8 #include <hikari/position_config.h> 9 10 struct hikari_mark; 11 struct hikari_view; 12 13 struct hikari_view_properties { 14 char *group_name; 15 int sheet_nr; 16 struct hikari_mark *mark; 17 struct hikari_position_config position; 18 bool focus; 19 bool invisible; 20 bool floating; 21 bool publicview; 22 }; 23 24 struct hikari_view_config { 25 struct wl_list link; 26 27 char *app_id; 28 29 struct hikari_view_properties properties; 30 struct hikari_view_properties *child_properties; 31 }; 32 33 void 34 hikari_view_config_init(struct hikari_view_config *view_config); 35 36 void 37 hikari_view_config_fini(struct hikari_view_config *view_config); 38 39 static inline struct hikari_view_properties * hikari_view_config_resolve_properties(struct hikari_view_config * view_config,bool child)40hikari_view_config_resolve_properties( 41 struct hikari_view_config *view_config, bool child) 42 { 43 return child ? view_config->child_properties : &view_config->properties; 44 } 45 46 struct hikari_sheet * 47 hikari_view_properties_resolve_sheet(struct hikari_view_properties *properties); 48 49 struct hikari_group * 50 hikari_view_properties_resolve_group( 51 struct hikari_view_properties *properties, const char *app_id); 52 53 void 54 hikari_view_properties_resolve_position( 55 struct hikari_view_properties *properties, 56 struct hikari_view *view, 57 int *x, 58 int *y); 59 60 bool 61 hikari_view_config_parse(struct hikari_view_config *view_config, 62 const ucl_object_t *view_config_obj); 63 64 #endif 65