/* this was working in Cairo 1.0.2 */ #include #define IMAGE_WIDTH 19 #define IMAGE_HEIGHT 19 int main (void) { unsigned char buffer[IMAGE_WIDTH * IMAGE_HEIGHT * 4]; double dashes[] = { 1 }; cairo_surface_t *surface = cairo_image_surface_create_for_data (buffer, CAIRO_FORMAT_ARGB32, IMAGE_WIDTH, IMAGE_HEIGHT, IMAGE_WIDTH * 4); cairo_t *cr = cairo_create (surface); memset (buffer, 0, sizeof (buffer)); cairo_set_line_width (cr, 1); cairo_set_dash (cr, dashes, 1, 0); cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); cairo_move_to (cr, 1, 1); cairo_line_to (cr, 18, 2); cairo_stroke (cr); cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); cairo_move_to (cr, 1, 10); cairo_line_to (cr, 18, 11); cairo_stroke (cr); cairo_surface_write_to_png (surface, "dash-line-cap-bug.png"); return 0; }