double xmin, ymin, xmax, ymax; snippet_normalize (cr, width, height); cairo_set_line_width(cr, 0.22); #define LINE(cap) \ cairo_new_path(cr); \ cairo_set_line_cap(cr, cap); \ cairo_move_to(cr, 0.3, 0.3); \ cairo_line_to(cr, 0.7, 0.3); #define EXTENT(mesg) \ cairo_stroke_extents(cr, &xmin, &ymin, &xmax, &ymax); \ fprintf(stderr, mesg ": %f %f %f %f\n", xmin, ymin, xmax, ymax); LINE(CAIRO_LINE_CAP_BUTT) EXTENT("butt ") LINE(CAIRO_LINE_CAP_ROUND) EXTENT("round ") LINE(CAIRO_LINE_CAP_SQUARE) EXTENT("square")