put the render theme into a struct
[mikachu/openbox.git] / render / theme.h
1 #ifndef __theme_h
2 #define __theme_h
3
4 #include "render.h"
5 #include "color.h"
6 #include "font.h"
7 #include "mask.h"
8
9 typedef struct _RrTheme RrTheme;
10
11 struct _RrTheme {
12     gchar *name;
13
14     const RrInstance *inst;
15
16     /* style settings - geometry */
17     gint bevel;
18     gint handle_height;
19     gint bwidth;
20     gint cbwidth;
21     gint label_height;
22     gint title_height;
23     gint button_size;
24     gint grip_width;
25
26     /* style settings - colors */
27     color_rgb *b_color;
28     color_rgb *cb_focused_color;
29     color_rgb *cb_unfocused_color;
30     color_rgb *title_focused_color;
31     color_rgb *title_unfocused_color;
32     color_rgb *titlebut_focused_color;
33     color_rgb *titlebut_unfocused_color;
34     color_rgb *menu_title_color;
35     color_rgb *menu_color;
36     color_rgb *menu_disabled_color;
37     color_rgb *menu_hilite_color;
38
39     /* style settings - fonts */
40     gint winfont_height;
41     RrFont *winfont;
42     gboolean winfont_shadow;
43     gint winfont_shadow_offset;
44     gint winfont_shadow_tint;
45     gint mtitlefont_height;
46     RrFont *mtitlefont;
47     gboolean mtitlefont_shadow;
48     gint mtitlefont_shadow_offset;
49     gint mtitlefont_shadow_tint;
50     gint mfont_height;
51     RrFont *mfont;
52     gboolean mfont_shadow;
53     gint mfont_shadow_offset;
54     gint mfont_shadow_tint;
55
56     /* style settings - title layout */
57     gchar *title_layout;
58
59     /* style settings - masks */
60     RrPixmapMask *max_set_mask;
61     RrPixmapMask *max_unset_mask;
62     RrPixmapMask *iconify_mask;
63     RrPixmapMask *desk_set_mask;
64     RrPixmapMask *desk_unset_mask;
65     RrPixmapMask *shade_set_mask;
66     RrPixmapMask *shade_unset_mask;
67     RrPixmapMask *close_mask;
68
69     /* global appearances */
70     RrAppearance *a_focused_unpressed_max;
71     RrAppearance *a_focused_pressed_max;
72     RrAppearance *a_focused_pressed_set_max;
73     RrAppearance *a_unfocused_unpressed_max;
74     RrAppearance *a_unfocused_pressed_max;
75     RrAppearance *a_unfocused_pressed_set_max;
76     RrAppearance *a_focused_unpressed_close;
77     RrAppearance *a_focused_pressed_close;
78     RrAppearance *a_unfocused_unpressed_close;
79     RrAppearance *a_unfocused_pressed_close;
80     RrAppearance *a_focused_unpressed_desk;
81     RrAppearance *a_focused_pressed_desk;
82     RrAppearance *a_focused_pressed_set_desk;
83     RrAppearance *a_unfocused_unpressed_desk;
84     RrAppearance *a_unfocused_pressed_desk;
85     RrAppearance *a_unfocused_pressed_set_desk;
86     RrAppearance *a_focused_unpressed_shade;
87     RrAppearance *a_focused_pressed_shade;
88     RrAppearance *a_focused_pressed_set_shade;
89     RrAppearance *a_unfocused_unpressed_shade;
90     RrAppearance *a_unfocused_pressed_shade;
91     RrAppearance *a_unfocused_pressed_set_shade;
92     RrAppearance *a_focused_unpressed_iconify;
93     RrAppearance *a_focused_pressed_iconify;
94     RrAppearance *a_unfocused_unpressed_iconify;
95     RrAppearance *a_unfocused_pressed_iconify;
96     RrAppearance *a_focused_grip;
97     RrAppearance *a_unfocused_grip;
98     RrAppearance *a_focused_title;
99     RrAppearance *a_unfocused_title;
100     RrAppearance *a_focused_label;
101     RrAppearance *a_unfocused_label;
102     /* always parentrelative, so no focused/unfocused */
103     RrAppearance *a_icon;
104     RrAppearance *a_focused_handle;
105     RrAppearance *a_unfocused_handle;
106     RrAppearance *a_menu_title;
107     RrAppearance *a_menu;
108     RrAppearance *a_menu_item;
109     RrAppearance *a_menu_disabled;
110     RrAppearance *a_menu_hilite;
111
112     RrAppearance *app_hilite_bg;
113     RrAppearance *app_unhilite_bg;
114     RrAppearance *app_hilite_label;
115     RrAppearance *app_unhilite_label;
116     RrAppearance *app_icon;
117 };
118
119 RrTheme *RrThemeNew(const RrInstance *inst, gchar *theme);
120 void RrThemeFree(RrTheme *theme);
121
122 #endif