#include #include void draw(cairo_surface_t *surface) { cairo_surface_t *surface2; cairo_t *cr; cairo_pattern_t *pattern; surface2 = cairo_surface_create_similar (surface, CAIRO_CONTENT_COLOR_ALPHA, 800, 800); cr = cairo_create (surface2); cairo_set_source_rgb (cr, 0, 0, 1); cairo_paint (cr); cairo_destroy (cr); cr = cairo_create (surface); pattern = cairo_pattern_create_for_surface (surface2); cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT); // cairo_scale (cr, 0.1, 0.1); // works cairo_scale (cr, 0.01, 0.01); // image fails cairo_set_source (cr, pattern); cairo_paint (cr); cairo_destroy (cr); } int main () { cairo_surface_t *surface; cairo_t *ct; surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 400, 400); draw (surface); cairo_surface_write_to_png (surface, "out.png"); cairo_surface_destroy (surface); surface = cairo_ps_surface_create ("out.ps", 400, 400); draw (surface); cairo_surface_destroy (surface); return 0; }