cairo samples

 arc
 arc_negative
 clip
 clip_image
 curve_rectangle
 curve_to
 fill_and_stroke2
 fill_and_stroke
 gradient
 image
 imagepattern
 libsvg
 operator_add
 operator_atop
 operator_atop_reverse
 operator_in
 operator_in_reverse
 operator_out
 operator_out_reverse
 operator_over
 operator_over_reverse
 operator_saturate
 operator_xor
 path
 set_line_cap
 set_line_join
 text_align_center
 text
 text_extents
 xxx_clip_rectangle
 xxx_dash
 xxx_long_lines
 xxx_multi_segment_caps
 xxx_self_intersect
prev
next
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);