
int w,h,stride; char *buffer; cairo_surface_t *image; cairo_pattern_t *pattern; cairo_matrix_t *matrix; buffer = read_png_argb32 ( "data/romedalen.png", &w,&h, &stride); image = cairo_surface_create_for_image ( buffer, CAIRO_FORMAT_ARGB32, w,h, stride); cairo_surface_set_repeat (image, 1); pattern = cairo_pattern_create_for_surface (image); cairo_translate (cr, 0.5, 0.5); cairo_rotate (cr, M_PI / 4); cairo_scale (cr, 1 / sqrt (2), 1 / sqrt (2)); cairo_translate (cr, - 0.5, - 0.5); matrix = cairo_matrix_create (); cairo_matrix_scale (matrix, w * 5., h * 5.); cairo_pattern_set_matrix (pattern, matrix); cairo_matrix_destroy (matrix); cairo_set_pattern (cr, pattern); cairo_rectangle (cr, 0, 0, 1.0, 1.0); cairo_fill (cr); cairo_pattern_destroy (pattern); cairo_surface_destroy (image); free (buffer);