summaryrefslogtreecommitdiff
path: root/test/extend-reflect-similar.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2008-01-17 17:44:57 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2008-01-17 17:45:17 +0000
commit630536f17681b083db658414d68db2c0eb167af3 (patch)
treeb04f53356e05cd1dfec377d156ccc9e3accd4ef3 /test/extend-reflect-similar.c
parentdec2daeaf396be9dc6e8952417cc615d3a607926 (diff)
downloadcairo-630536f17681b083db658414d68db2c0eb167af3.tar.gz
[test/extend-*] Add various cairo_pattern_set_extend() test cases.
Add various test cases to exercise _cairo_pattern_acquire_surface_for_surface(), most notably using similar source surfaces to provide coverage of the non-image surface branch.
Diffstat (limited to 'test/extend-reflect-similar.c')
-rw-r--r--test/extend-reflect-similar.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/test/extend-reflect-similar.c b/test/extend-reflect-similar.c
new file mode 100644
index 000000000..1ff4039ec
--- /dev/null
+++ b/test/extend-reflect-similar.c
@@ -0,0 +1,56 @@
+#include "cairo-test.h"
+
+const char png_filename[] = "romedalen.png";
+
+static cairo_test_draw_function_t draw;
+
+cairo_test_t test = {
+ "extend-reflect-similar",
+ "Test CAIRO_EXTEND_REFLECT for surface patterns",
+ 256 + 32*2, 192 + 32*2,
+ draw
+};
+
+static cairo_surface_t *
+clone_similar_surface (cairo_surface_t * target, cairo_surface_t *surface)
+{
+ cairo_t *cr;
+ cairo_surface_t *similar;
+
+ similar = cairo_surface_create_similar (target,
+ cairo_surface_get_content (surface),
+ cairo_image_surface_get_width (surface),
+ cairo_image_surface_get_height (surface));
+ cr = cairo_create (similar);
+ cairo_set_source_surface (cr, surface, 0, 0);
+ cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
+ cairo_paint (cr);
+ cairo_destroy (cr);
+
+ return similar;
+}
+
+static cairo_test_status_t
+draw (cairo_t *cr, int width, int height)
+{
+ cairo_surface_t *surface;
+ cairo_surface_t *similar;
+
+ surface = cairo_test_create_surface_from_png (png_filename);
+ similar = clone_similar_surface (cairo_get_group_target (cr), surface);
+ cairo_set_source_surface (cr, similar, 32, 32);
+ cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REFLECT);
+
+ cairo_paint (cr);
+
+ cairo_surface_destroy (similar);
+ cairo_surface_destroy (surface);
+
+ return CAIRO_TEST_SUCCESS;
+}
+
+int
+main (void)
+{
+ return cairo_test (&test);
+}