Implement window decorations including title bars, borders, resize handles, and control buttons (minimize, maximize, close).
// Draw title bar
cairo_rectangle(cr, w->x, w->y - TITLEBAR_HEIGHT,
w->width, TITLEBAR_HEIGHT);
if (w->focused) {
cairo_set_source_rgb(cr, 0.2, 0.4, 0.7); // Blue
} else {
cairo_set_source_rgb(cr, 0.3, 0.3, 0.3); // Gray
}
cairo_fill(cr);
// Draw title text
cairo_set_source_rgb(cr, 1.0, 1.0, 1.0);
cairo_select_font_face(cr, "Sans", ...);
cairo_move_to(cr, w->x + 5, w->y - 6);
cairo_show_text(cr, w->title);
// Draw close button
draw_close_button(cr, w->x + w->width - 20, w->y - 20);
// Draw border
cairo_rectangle(cr, w->x - BORDER_WIDTH,
w->y - TITLEBAR_HEIGHT - BORDER_WIDTH,
w->width + 2*BORDER_WIDTH,
w->height + TITLEBAR_HEIGHT + 2*BORDER_WIDTH);
cairo_set_line_width(cr, BORDER_WIDTH);
cairo_stroke(cr);
cairo_destroy(cr);
Summary
Implement window decorations including title bars, borders, resize handles, and control buttons (minimize, maximize, close).
Goals
Implementation
Decoration Rendering
```c
#define TITLEBAR_HEIGHT 24
#define BORDER_WIDTH 1
void wm_draw_decoration(struct window *w) {
cairo_t *cr = cairo_create(screen_surface);
}
```
Timeline
Total: 2-3 weeks
Definition of Done
Dependencies
See docs/road/road_to_gui.md for complete roadmap.