5 struct RrTheme *RrThemeLoad(struct RrInstance *inst, const char *name)
8 struct RrColor pri, sec, bor;
10 theme = malloc(sizeof(struct RrTheme));
19 theme->handle_height = 4;
21 theme->title_layout = "NLIMC";
23 theme->title_font = RrFontOpen(inst,
24 "arial:bold:pixelsize=10:"
25 "shadow=true:shadowoffset=1:shadowtint=0.1");
26 theme->title_justify = RR_CENTER;
28 RrColorSet(&theme->b_color, 0, 0, 0, 1);
29 RrColorSet(&theme->cb_color, 0, 0, 0, 1);
30 RrColorSet(&theme->cb_color_f, 0, 0, 0, 1);
31 RrColorSet(&theme->title_color, 1, 1, 1, 1);
32 RrColorSet(&theme->title_color_f, 1, 1, 1, 1);
33 RrColorSet(&theme->button_color, 0.3, 0.3, 0.3, 1);
34 RrColorSet(&theme->button_color_f, 0.12, 0.12, 0.12, 1);
35 RrColorSet(&theme->menu_title_color, 1, 1, 1, 1);
36 RrColorSet(&theme->menu_item_color, 1, 1, 1, 1);
37 RrColorSet(&theme->menu_disabled_color, 1, 1, 1, 1);
38 RrColorSet(&theme->menu_hilite_color, 1, 1, 1, 1);
40 theme->max = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
41 theme->max_f = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
42 theme->max_p = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
43 theme->max_p_f = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
44 theme->iconify = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
45 theme->iconify_f = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
46 theme->iconify_p = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
47 theme->iconify_p_f = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
48 theme->close = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
49 theme->close_f = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
50 theme->close_p = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
51 theme->close_p_f = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
52 theme->desk = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
53 theme->desk_f = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
54 theme->desk_p = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
55 theme->desk_p_f = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
56 theme->shade = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
57 theme->shade_f = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
58 theme->shade_p = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
59 theme->shade_p_f = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
61 RrColorSet(&pri, 0.9, 0.91, 0.9, 1);
62 RrPlanarSet(theme->max, RR_PLANAR_SOLID, RR_BEVEL_NONE,
64 RrPlanarSet(theme->max_f, RR_PLANAR_SOLID, RR_BEVEL_NONE,
67 RrColorSet(&pri, 0.71, 0.7, 0.68, 1);
68 RrPlanarSet(theme->max_p, RR_PLANAR_SOLID, RR_SUNKEN_OUTER,
70 RrPlanarSet(theme->max_p_f, RR_PLANAR_SOLID, RR_SUNKEN_OUTER,
73 RrColorSet(&pri, 0.9, 0.91, 0.9, 1);
74 RrPlanarSet(theme->iconify, RR_PLANAR_SOLID, RR_BEVEL_NONE,
76 RrPlanarSet(theme->iconify_f, RR_PLANAR_SOLID, RR_BEVEL_NONE,
79 RrColorSet(&pri, 0.71, 0.7, 0.68, 1);
80 RrPlanarSet(theme->iconify_p, RR_PLANAR_SOLID, RR_SUNKEN_OUTER,
82 RrPlanarSet(theme->iconify_p_f, RR_PLANAR_SOLID, RR_SUNKEN_OUTER,
85 RrColorSet(&pri, 0.9, 0.91, 0.9, 1);
86 RrPlanarSet(theme->close, RR_PLANAR_SOLID, RR_BEVEL_NONE,
88 RrPlanarSet(theme->close_f, RR_PLANAR_SOLID, RR_BEVEL_NONE,
91 RrColorSet(&pri, 0.71, 0.7, 0.68, 1);
92 RrPlanarSet(theme->close_p, RR_PLANAR_SOLID, RR_SUNKEN_OUTER,
94 RrPlanarSet(theme->close_p_f, RR_PLANAR_SOLID, RR_SUNKEN_OUTER,
97 RrColorSet(&pri, 0.9, 0.91, 0.9, 1);
98 RrPlanarSet(theme->desk, RR_PLANAR_SOLID, RR_BEVEL_NONE,
100 RrPlanarSet(theme->desk_f, RR_PLANAR_SOLID, RR_BEVEL_NONE,
101 &pri, NULL, 0, NULL);
103 RrColorSet(&pri, 0.71, 0.7, 0.68, 1);
104 RrPlanarSet(theme->desk_p, RR_PLANAR_SOLID, RR_SUNKEN_OUTER,
105 &pri, NULL, 0, NULL);
106 RrPlanarSet(theme->desk_p_f, RR_PLANAR_SOLID, RR_SUNKEN_OUTER,
107 &pri, NULL, 0, NULL);
109 RrColorSet(&pri, 0.9, 0.91, 0.9, 1);
110 RrPlanarSet(theme->shade, RR_PLANAR_SOLID, RR_BEVEL_NONE,
111 &pri, NULL, 0, NULL);
112 RrPlanarSet(theme->shade_f, RR_PLANAR_SOLID, RR_BEVEL_NONE,
113 &pri, NULL, 0, NULL);
115 RrColorSet(&pri, 0.71, 0.7, 0.68, 1);
116 RrPlanarSet(theme->shade_p, RR_PLANAR_SOLID, RR_SUNKEN_OUTER,
117 &pri, NULL, 0, NULL);
118 RrPlanarSet(theme->shade_p_f, RR_PLANAR_SOLID, RR_SUNKEN_OUTER,
119 &pri, NULL, 0, NULL);
121 theme->frame = RrSurfaceNewProto(RR_SURFACE_PLANAR, 0);
123 RrColorSet(&pri, 0.9, 0.91, 0.9, 1);
124 RrColorSet(&bor, 0, 0, 0, 1);
125 RrPlanarSet(theme->frame, RR_PLANAR_SOLID, RR_BEVEL_NONE,
126 &pri, NULL, 1, &bor);
128 theme->title = RrSurfaceNewProto(RR_SURFACE_PLANAR, 0);
129 theme->title_f = RrSurfaceNewProto(RR_SURFACE_PLANAR, 0);
131 RrColorSet(&pri, 0.9, 0.91, 0.9, 1);
132 RrColorSet(&bor, 0, 0, 0, 1);
133 RrPlanarSet(theme->title, RR_PLANAR_SOLID, RR_BEVEL_NONE,
134 &pri, NULL, 1, &bor);
135 RrPlanarSet(theme->title_f, RR_PLANAR_SOLID, RR_BEVEL_NONE,
136 &pri, NULL, 1, &bor);
138 theme->plate = RrSurfaceNewProto(RR_SURFACE_PLANAR, 0);
139 theme->plate_f = RrSurfaceNewProto(RR_SURFACE_PLANAR, 0);
141 RrColorSet(&pri, 0, 0, 0, 1);
142 RrPlanarSet(theme->plate, RR_PLANAR_SOLID, RR_BEVEL_NONE,
143 &pri, NULL, 0, NULL);
144 RrPlanarSet(theme->plate_f, RR_PLANAR_SOLID, RR_BEVEL_NONE,
145 &pri, NULL, 0, NULL);
147 theme->label = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
148 theme->label_f = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
150 RrColorSet(&pri, 0.70, 0.70, 0.68, 1);
151 RrColorSet(&sec, 0.75, 0.73, 0.71, 1);
152 RrColorSet(&bor, 0.42, 0.41, 0.42, 1);
153 RrPlanarSet(theme->label, RR_PLANAR_VERTICAL, RR_BEVEL_NONE,
154 &pri, &sec, 1, &bor);
155 RrColorSet(&pri, 0.30, 0.34, 0.65, 1);
156 RrColorSet(&sec, 0.35, 0.43, 0.75, 1);
157 RrColorSet(&bor, 0, 0, 0, 1);
158 RrPlanarSet(theme->label_f, RR_PLANAR_SOLID, RR_BEVEL_NONE,
159 &pri, &sec, 1, &bor);
162 theme->grip = RrSurfaceNewProto(RR_SURFACE_PLANAR, 0);
163 theme->grip_f = RrSurfaceNewProto(RR_SURFACE_PLANAR, 0);
165 RrColorSet(&pri, 0.9, 0.91, 0.9, 1);
166 RrColorSet(&bor, 0, 0, 0, 1);
167 RrPlanarSet(theme->grip, RR_PLANAR_SOLID, RR_BEVEL_NONE,
168 &pri, NULL, 1, &bor);
169 RrPlanarSet(theme->grip_f, RR_PLANAR_SOLID, RR_BEVEL_NONE,
170 &pri, NULL, 1, &bor);
172 theme->handle = RrSurfaceNewProto(RR_SURFACE_PLANAR, 0);
173 theme->handle_f = RrSurfaceNewProto(RR_SURFACE_PLANAR, 0);
175 RrColorSet(&pri, 0.9, 0.91, 0.9, 1);
176 RrColorSet(&bor, 0, 0, 0, 1);
177 RrPlanarSet(theme->handle, RR_PLANAR_SOLID, RR_BEVEL_NONE,
178 &pri, NULL, 1, &bor);
179 RrPlanarSet(theme->handle_f, RR_PLANAR_SOLID, RR_BEVEL_NONE,
180 &pri, NULL, 1, &bor);
182 theme->menu_title = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
184 RrColorSet(&pri, 0.29, 0.35, 0.65, 1);
185 RrColorSet(&bor, 0, 0, 0, 1);
186 RrPlanarSet(theme->menu_title, RR_PLANAR_SOLID, RR_BEVEL_NONE,
187 &pri, NULL, 1, &bor);
189 theme->menu_item = RrSurfaceNewProto(RR_SURFACE_PLANAR, 0);
191 RrColorSet(&pri, 0.9, 0.91, 0.9, 1);
192 RrPlanarSet(theme->menu_item, RR_PLANAR_SOLID, RR_BEVEL_NONE,
193 &pri, NULL, 0, NULL);
195 theme->menu_disabled = RrSurfaceNewProto(RR_SURFACE_PLANAR, 0);
197 RrColorSet(&pri, 0.9, 0.91, 0.9, 1);
198 RrPlanarSet(theme->menu_item, RR_PLANAR_SOLID, RR_BEVEL_NONE,
199 &pri, NULL, 0, NULL);
201 theme->menu_hilite = RrSurfaceNewProto(RR_SURFACE_PLANAR, 0);
205 RrColorSet(&theme->app_label_color, 1, 1, 1, 1);
206 RrColorSet(&theme->app_label_color_h, 1, 1, 1, 1);
208 RrColorSet(&pri, 0.9, 0.91, 0.9, 1);
209 RrPlanarSet(theme->menu_item, RR_PLANAR_SOLID, RR_BEVEL_NONE,
210 &pri, NULL, 0, NULL);
212 theme->app_bg = RrSurfaceNewProto(RR_SURFACE_PLANAR, 0);
213 theme->app_bg_h = RrSurfaceNewProto(RR_SURFACE_PLANAR, 0);
215 RrColorSet(&pri, 0.9, 0.91, 0.9, 1);
216 RrColorSet(&bor, 0, 0, 0, 1);
217 RrPlanarSet(theme->app_bg, RR_PLANAR_SOLID, RR_BEVEL_NONE,
218 &pri, NULL, 1, &bor);
219 RrPlanarSet(theme->app_bg_h, RR_PLANAR_SOLID, RR_BEVEL_NONE,
220 &pri, NULL, 1, &bor);
222 theme->app_label = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
223 theme->app_label_h = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
225 RrColorSet(&pri, 0.70, 0.70, 0.68, 1);
226 RrColorSet(&sec, 0.75, 0.73, 0.71, 1);
227 RrColorSet(&bor, 0.42, 0.41, 0.42, 1);
228 RrPlanarSet(theme->app_label, RR_PLANAR_VERTICAL, RR_BEVEL_NONE,
229 &pri, &sec, 1, &bor);
230 RrColorSet(&pri, 0.30, 0.34, 0.65, 1);
231 RrColorSet(&sec, 0.35, 0.43, 0.75, 1);
232 RrColorSet(&bor, 0, 0, 0, 1);
233 RrPlanarSet(theme->app_label_h, RR_PLANAR_SOLID, RR_BEVEL_NONE,
234 &pri, &sec, 1, &bor);
238 RrColorSet(&pri, 0, 0, 0, 0); /* clear */
240 theme->icon = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
241 RrPlanarSet(theme->icon, RR_PLANAR_SOLID, RR_BEVEL_NONE,
242 &pri, NULL, 0, NULL);
244 theme->app_icon = RrSurfaceNewProto(RR_SURFACE_PLANAR, 1);
245 RrPlanarSet(theme->app_icon, RR_PLANAR_SOLID, RR_BEVEL_NONE,
246 &pri, NULL, 0, NULL);
251 void RrThemeDestroy(struct RrTheme *theme)
254 RrFontClose(theme->title_font);
256 RrSurfaceFree(theme->max);
257 RrSurfaceFree(theme->max_f);
258 RrSurfaceFree(theme->max_p);
259 RrSurfaceFree(theme->max_p_f);
261 RrSurfaceFree(theme->iconify);
262 RrSurfaceFree(theme->iconify_f);
263 RrSurfaceFree(theme->iconify_p);
264 RrSurfaceFree(theme->iconify_p_f);
266 RrSurfaceFree(theme->close);
267 RrSurfaceFree(theme->close_f);
268 RrSurfaceFree(theme->close_p);
269 RrSurfaceFree(theme->close_p_f);
271 RrSurfaceFree(theme->desk);
272 RrSurfaceFree(theme->desk_f);
273 RrSurfaceFree(theme->desk_p);
274 RrSurfaceFree(theme->desk_p_f);
276 RrSurfaceFree(theme->shade);
277 RrSurfaceFree(theme->shade_f);
278 RrSurfaceFree(theme->shade_p);
279 RrSurfaceFree(theme->shade_p_f);
281 RrSurfaceFree(theme->icon);
283 RrSurfaceFree(theme->frame);
285 RrSurfaceFree(theme->title);
286 RrSurfaceFree(theme->title_f);
288 RrSurfaceFree(theme->label);
289 RrSurfaceFree(theme->label_f);
291 RrSurfaceFree(theme->grip);
292 RrSurfaceFree(theme->grip_f);
294 RrSurfaceFree(theme->handle);
295 RrSurfaceFree(theme->handle_f);
297 RrSurfaceFree(theme->menu_title);
298 RrSurfaceFree(theme->menu_item);
299 RrSurfaceFree(theme->menu_disabled);
300 RrSurfaceFree(theme->menu_hilite);
302 RrSurfaceFree(theme->app_bg);
303 RrSurfaceFree(theme->app_bg_h);
304 RrSurfaceFree(theme->app_label);
305 RrSurfaceFree(theme->app_label_h);
306 RrSurfaceFree(theme->app_icon);