summaryrefslogtreecommitdiff
path: root/test/surface-pattern-scale-up.c
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@behdad.org>2007-02-27 17:33:17 -0500
committerBehdad Esfahbod <behdad@behdad.org>2007-02-27 17:33:17 -0500
commitde0a6522b00822305fa5a0e32c4821628425ebdc (patch)
tree8a47859b56ebd1a2e22c9dc8fa5cb61df6e41336 /test/surface-pattern-scale-up.c
parent4c1d788219ae62bb9e8a7723d5a73d70eb42e69a (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.c69
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);
+}