4 #include "framerender.h"
5 #include "render2/theme.h"
7 void framerender_frame(Frame *self)
9 /* XXX plate, client border */
11 if (self->client->decorations & Decor_Titlebar) {
12 struct RrSurface *t, *l, *p, *m, *n, *i, *d, *s, *c;
15 ob_theme->title_f : ob_theme->title);
17 ob_theme->label_f : ob_theme->label);
19 ob_theme->plate_f : ob_theme->plate);
21 (self->client->max_vert || self->client->max_horz ?
22 ob_theme->max_p_f : (self->max_press ?
23 ob_theme->max_p_f : ob_theme->max_f)) :
24 (self->client->max_vert || self->client->max_horz ?
25 ob_theme->max_p : (self->max_press ?
26 ob_theme->max_p : ob_theme->max)));
29 (self->iconify_press ?
30 ob_theme->iconify_p_f : ob_theme->iconify_f) :
31 (self->iconify_press ?
32 ob_theme->iconify_p : ob_theme->iconify));
34 (self->client->desktop == DESKTOP_ALL ?
35 ob_theme->desk_p_f : (self->desk_press ?
36 ob_theme->desk_p_f : ob_theme->desk_f)) :
37 (self->client->desktop == DESKTOP_ALL ?
38 ob_theme->desk_p : (self->desk_press ?
39 ob_theme->desk_p : ob_theme->desk)));
41 (self->client->shaded ?
42 ob_theme->shade_p_f : (self->shade_press ?
43 ob_theme->shade_p_f : ob_theme->shade_f)):
44 (self->client->shaded ?
45 ob_theme->shade_p : (self->shade_press ?
46 ob_theme->shade_p : ob_theme->shade)));
49 ob_theme->close_p_f : ob_theme->close_f) :
51 ob_theme->close_p : ob_theme->close));
53 RrSurfaceCopy(self->s_title, t);
54 RrSurfaceCopy(self->s_label, l);
55 RrSurfaceCopy(self->s_plate, p);
57 RrTextureSetText(self->s_label, 0, ob_theme->title_font,
58 ob_theme->title_justify,
60 &ob_theme->title_color_f : &ob_theme->title_color),
64 RrSurfaceCopy(self->s_max, m);
65 if (self->icon_x >= 0) {
68 RrSurfaceCopy(self->s_icon, n);
70 icon = client_icon(self->client,
71 RrThemeButtonSize(ob_theme) + 2,
72 RrThemeButtonSize(ob_theme) + 2);
74 RrTextureSetRGBA(self->s_icon, 0,
76 0, 0, icon->width, icon->height);
78 RrTextureSetNone(self->s_icon, 0);
80 if (self->iconify_x >= 0)
81 RrSurfaceCopy(self->s_iconify, i);
82 if (self->desk_x >= 0)
83 RrSurfaceCopy(self->s_desk, d);
84 if (self->shade_x >= 0)
85 RrSurfaceCopy(self->s_shade, s);
86 if (self->close_x >= 0)
87 RrSurfaceCopy(self->s_close, c);
90 if (self->client->decorations & Decor_Handle) {
91 struct RrSurface *h, *g;
94 ob_theme->handle_f : ob_theme->handle);
96 ob_theme->grip_f : ob_theme->grip);
98 RrSurfaceCopy(self->s_handle, h);
99 RrSurfaceCopy(self->s_lgrip, g);
100 RrSurfaceCopy(self->s_rgrip, g);