rotate-image-surface-paint.c [plain text]
#include "cairo-test.h"
static cairo_test_draw_function_t draw;
#define SIZE 20
#define PAD 2
static const cairo_test_t test = {
"rotate-image-surface-paint",
"Test call sequence: image_surface_create; rotate; set_source_surface; paint"
"\nThis test is known to fail on the ps backend currently",
SIZE, SIZE,
draw
};
static cairo_test_status_t
draw (cairo_t *cr, int width, int height)
{
cairo_surface_t *surface;
int surface_size = sqrt ((SIZE - 2*PAD)*(SIZE - 2*PAD)/2);
cairo_t *cr_surface;
surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24,
surface_size, surface_size);
cr_surface = cairo_create (surface);
cairo_surface_destroy (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_set_source_rgb (cr, 0, 0, 0);
cairo_paint (cr);
cairo_translate(cr, SIZE/2, SIZE/2);
cairo_rotate (cr, M_PI / 4.0);
cairo_translate (cr, -surface_size/2, -surface_size/2);
cairo_set_source_surface (cr, cairo_get_target (cr_surface), 0, 0);
cairo_destroy (cr_surface);
cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST);
cairo_paint (cr);
return CAIRO_TEST_SUCCESS;
}
int
main (void)
{
return cairo_test (&test);
}