cairo/test/surface-pattern-scale-up.c
Behdad Esfahbod de0a6522b0 [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.
2007-02-27 17:33:17 -05:00

69 lines
1.8 KiB
C

#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);
}