summaryrefslogtreecommitdiff
path: root/test/rotate-image-surface-paint.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2009-10-19 10:42:51 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2009-10-19 17:21:57 +0100
commit710303ef15b9a1bf73b2b07b7aa51ec816d0aa07 (patch)
tree4683be5a68d8c4d4278ac331c42970976be823ba /test/rotate-image-surface-paint.c
parentea39f0302a936711043aa6834ba0ab487736572b (diff)
downloadcairo-710303ef15b9a1bf73b2b07b7aa51ec816d0aa07.tar.gz
[test] Update rotate-image-surface-paint
Update this test case so the background is not the default border colour so that we spot when the backend pads out the transformed image surface.
Diffstat (limited to 'test/rotate-image-surface-paint.c')
-rw-r--r--test/rotate-image-surface-paint.c78
1 files changed, 43 insertions, 35 deletions
diff --git a/test/rotate-image-surface-paint.c b/test/rotate-image-surface-paint.c
index a2db1b0ce..f592d6301 100644
--- a/test/rotate-image-surface-paint.c
+++ b/test/rotate-image-surface-paint.c
@@ -29,55 +29,63 @@
#define SIZE 20
#define PAD 2
-static cairo_test_status_t
-draw (cairo_t *cr, int width, int height)
+static cairo_pattern_t *
+create_image_source (int size)
{
cairo_surface_t *surface;
- int surface_size = sqrt ((SIZE - 2*PAD)*(SIZE - 2*PAD)/2);
- cairo_t *cr_surface;
+ cairo_pattern_t *pattern;
+ cairo_t *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);
+ surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, size, size);
+ cr = 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);
-
- /* First paint opaque background (black) so we don't need separate
- * ARGB32 and RGB24 reference images. */
- cairo_set_source_rgb (cr, 0, 0, 0); /* black */
+ cairo_set_source_rgb (cr, 1, 1, 1);
+ cairo_rectangle (cr, 0, 0, size / 2, size / 2);
+ cairo_fill (cr);
+
+ cairo_set_source_rgb (cr, 1, 0, 0);
+ cairo_rectangle (cr, size / 2, 0, size - size / 2, size / 2);
+ cairo_fill (cr);
+
+ cairo_set_source_rgb (cr, 0, 1, 0);
+ cairo_rectangle (cr, 0, size / 2, size / 2, size - size / 2);
+ cairo_fill (cr);
+
+ cairo_set_source_rgb (cr, 0, 0, 1);
+ cairo_rectangle (cr, size / 2, size / 2, size - size / 2, size - size / 2);
+ cairo_fill (cr);
+
+ pattern = cairo_pattern_create_for_surface (cairo_get_target (cr));
+ cairo_destroy (cr);
+
+ return pattern;
+}
+
+static cairo_test_status_t
+draw (cairo_t *cr, int width, int height)
+{
+ cairo_pattern_t *source;
+ int surface_size = sqrt ((SIZE - 2*PAD)*(SIZE - 2*PAD)/2);
+
+ /* Use a gray (neutral) background, so we can spot if the backend pads
+ * with any other colour.
+ */
+ cairo_set_source_rgb (cr, .5, .5, .5);
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);
+ source = create_image_source (surface_size);
+ cairo_pattern_set_filter (source, CAIRO_FILTER_NEAREST);
+ cairo_set_source(cr, source);
+ cairo_pattern_destroy (source);
+ cairo_paint (cr);
return CAIRO_TEST_SUCCESS;
}