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)40 hikari_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