Make window client a little more interesting.

dev
Kristian Høgsberg 16 years ago
parent 3f59e82c20
commit ca1d1f65d0
  1. 30
      window.c

@ -81,8 +81,10 @@ draw_window(struct window *window)
{ {
cairo_surface_t *surface; cairo_surface_t *surface;
cairo_t *cr; cairo_t *cr;
int border = 4; int border = 2, radius = 5;
int half = (border + 1) / 2; int margin = (border + 1) / 2;
cairo_text_extents_t extents;
const static char title[] = "Wayland First Post";
surface = cairo_image_surface_create(CAIRO_FORMAT_RGB24, surface = cairo_image_surface_create(CAIRO_FORMAT_RGB24,
window->width, window->width,
@ -90,16 +92,28 @@ draw_window(struct window *window)
cr = cairo_create(surface); cr = cairo_create(surface);
cairo_set_line_width (cr, border); cairo_set_line_width (cr, border);
cairo_move_to(cr, half, half); cairo_move_to(cr, margin, margin + radius);
cairo_line_to(cr, window->width - half, half); cairo_arc(cr, margin + radius, margin + radius, radius,
cairo_line_to(cr, window->width - half, M_PI, 3 * M_PI / 2);
window->height - half); cairo_line_to(cr, window->width - radius - margin, margin);
cairo_line_to(cr, half, window->height - half); cairo_arc(cr, window->width - margin - radius, margin + radius, radius,
3 * M_PI / 2, 2 * M_PI);
cairo_line_to(cr, window->width - margin,
window->height - margin);
cairo_line_to(cr, margin, window->height - margin);
cairo_close_path(cr); cairo_close_path(cr);
cairo_set_source_rgba(cr, 0, 0, 0, 0.85); cairo_set_source_rgba(cr, 0.2, 0.2, 0.2, 0.9);
cairo_fill_preserve(cr); cairo_fill_preserve(cr);
cairo_set_source_rgba(cr, 0, 0, 0, 1); cairo_set_source_rgba(cr, 0, 0, 0, 1);
cairo_set_font_size(cr, 14);
cairo_text_extents(cr, title, &extents);
cairo_move_to(cr, margin, margin + radius + extents.height + 10);
cairo_line_to(cr, margin + window->width, margin + radius + extents.height + 10);
cairo_stroke(cr); cairo_stroke(cr);
cairo_move_to(cr, (window->width - extents.width) / 2, 10 - extents.y_bearing);
cairo_show_text(cr, title);
cairo_destroy(cr); cairo_destroy(cr);
window->stride = cairo_image_surface_get_stride(surface); window->stride = cairo_image_surface_get_stride(surface);

Loading…
Cancel
Save