diff options
author | Behdad Esfahbod <behdad@behdad.org> | 2007-02-27 17:33:17 -0500 |
---|---|---|
committer | Behdad Esfahbod <behdad@behdad.org> | 2007-02-27 17:33:17 -0500 |
commit | de0a6522b00822305fa5a0e32c4821628425ebdc (patch) | |
tree | 8a47859b56ebd1a2e22c9dc8fa5cb61df6e41336 /test/surface-pattern-scale-up.c | |
parent | 4c1d788219ae62bb9e8a7723d5a73d70eb42e69a (diff) |
[test] Add tests that show xstep/ystep failures in PS/PDF backends
with surface patterns. One test scaled the pattern up, another scales
down. We observe that both PS and PDF are broken when scaling down.
This is the reason that PDF is failing in the fallback-resolution test
too.
Diffstat (limited to 'test/surface-pattern-scale-up.c')
-rw-r--r-- | test/surface-pattern-scale-up.c | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/test/surface-pattern-scale-up.c b/test/surface-pattern-scale-up.c new file mode 100644 index 000000000..921e1a365 --- /dev/null +++ b/test/surface-pattern-scale-up.c @@ -0,0 +1,69 @@ +#include <math.h> +#include "cairo-test.h" +#include <stdio.h> + +#define SIZE 100 + +static cairo_test_draw_function_t draw; + +cairo_test_t test = { + "surface-pattern-scale-up", + "Test scaled-up transformed not-repeated surface patterns", + SIZE, SIZE, + draw +}; + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_surface_t *surface; + cairo_t * cr_surface; + int surface_size = 6; + + cairo_set_source_rgb (cr, 0, 0, 0); + cairo_rectangle (cr, 0, 0, SIZE, SIZE); + cairo_fill (cr); + + /* Create an image surface with my favorite four colors in each + * quadrant. */ + surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, + surface_size, surface_size); + cr_surface = cairo_create (surface); + cairo_set_source_rgb (cr_surface, 1, 1, 1); + cairo_rectangle (cr_surface, + 0, 0, + surface_size / 2, surface_size / 2); + cairo_fill (cr_surface); + cairo_set_source_rgb (cr_surface, 1, 0, 0); + cairo_rectangle (cr_surface, + surface_size / 2, 0, + surface_size / 2, surface_size / 2); + cairo_fill (cr_surface); + cairo_set_source_rgb (cr_surface, 0, 1, 0); + cairo_rectangle (cr_surface, + 0, surface_size / 2, + surface_size / 2, surface_size / 2); + cairo_fill (cr_surface); + cairo_set_source_rgb (cr_surface, 0, 0, 1); + cairo_rectangle (cr_surface, + surface_size / 2, surface_size / 2, + surface_size / 2, surface_size / 2); + cairo_fill (cr_surface); + cairo_destroy (cr_surface); + + cairo_scale (cr, 10, 10); + cairo_rotate (cr, 1.); + cairo_set_source_surface (cr, surface, 4, -4.5); + cairo_surface_destroy (surface); + + cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_NONE); + cairo_paint (cr); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +} |