summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2011-07-23 14:22:19 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2011-07-23 14:42:17 +0100
commit5de02329370257290404dae244cb14ac544140d7 (patch)
tree3d13ebc2f517b128151fcf251743c99abeba828a /test
parentabd8fcc833eedc916addbd688a40303e4c78affd (diff)
test: Extend recording-surface-pattern to include a SOURCE operator test
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'test')
-rw-r--r--test/Makefile.refs26
-rw-r--r--test/recording-surface-over.gl.argb32.ref.png (renamed from test/recording-surface-pattern.gl.argb32.ref.png)bin3130 -> 3130 bytes
-rw-r--r--test/recording-surface-over.image16.ref.png (renamed from test/recording-surface-pattern.image16.ref.png)bin2856 -> 2856 bytes
-rw-r--r--test/recording-surface-over.pdf.argb32.ref.png (renamed from test/recording-surface-pattern.pdf.argb32.ref.png)bin3908 -> 3908 bytes
-rw-r--r--test/recording-surface-over.pdf.rgb24.ref.png (renamed from test/recording-surface-pattern.pdf.rgb24.ref.png)bin3760 -> 3760 bytes
-rw-r--r--test/recording-surface-over.ps.argb32.ref.png (renamed from test/recording-surface-pattern.ps.argb32.ref.png)bin3064 -> 3064 bytes
-rw-r--r--test/recording-surface-over.ps.rgb24.ref.png (renamed from test/recording-surface-pattern.ps.rgb24.ref.png)bin3147 -> 3147 bytes
-rw-r--r--test/recording-surface-over.quartz.argb32.ref.png (renamed from test/recording-surface-pattern.quartz.argb32.ref.png)bin4570 -> 4570 bytes
-rw-r--r--test/recording-surface-over.quartz.rgb24.ref.png (renamed from test/recording-surface-pattern.quartz.rgb24.ref.png)bin4058 -> 4058 bytes
-rw-r--r--test/recording-surface-over.rgb24.ref.png (renamed from test/recording-surface-pattern.rgb24.ref.png)bin3162 -> 3162 bytes
-rw-r--r--test/recording-surface-over.svg.argb32.ref.png (renamed from test/recording-surface-pattern.svg.argb32.ref.png)bin3778 -> 3778 bytes
-rw-r--r--test/recording-surface-over.svg.rgb24.ref.png (renamed from test/recording-surface-pattern.svg.rgb24.ref.png)bin3760 -> 3760 bytes
-rw-r--r--test/recording-surface-over.xlib.argb32.ref.png (renamed from test/recording-surface-pattern.xlib.argb32.ref.png)bin3055 -> 3055 bytes
-rw-r--r--test/recording-surface-over.xlib.rgb24.ref.png (renamed from test/recording-surface-pattern.xlib.rgb24.ref.png)bin3124 -> 3124 bytes
-rw-r--r--test/recording-surface-pattern.c149
-rw-r--r--test/recording-surface-pattern.ref.pngbin3072 -> 0 bytes
16 files changed, 108 insertions, 67 deletions
diff --git a/test/Makefile.refs b/test/Makefile.refs
index 4de63827..47cce6b8 100644
--- a/test/Makefile.refs
+++ b/test/Makefile.refs
@@ -989,20 +989,20 @@ REFERENCE_IMAGES = \
random-intersections-nonzero.quartz.ref.png \
random-intersections-nonzero.ref.png \
random-intersections-nonzero.xlib.ref.png \
- recording-surface-pattern.gl.argb32.ref.png \
- recording-surface-pattern.image16.ref.png \
- recording-surface-pattern.pdf.argb32.ref.png \
- recording-surface-pattern.pdf.rgb24.ref.png \
- recording-surface-pattern.ps.argb32.ref.png \
- recording-surface-pattern.ps.rgb24.ref.png \
- recording-surface-pattern.quartz.argb32.ref.png \
- recording-surface-pattern.quartz.rgb24.ref.png \
+ recording-surface-over.gl.argb32.ref.png \
+ recording-surface-over.image16.ref.png \
+ recording-surface-over.pdf.argb32.ref.png \
+ recording-surface-over.pdf.rgb24.ref.png \
+ recording-surface-over.ps.argb32.ref.png \
+ recording-surface-over.ps.rgb24.ref.png \
+ recording-surface-over.quartz.argb32.ref.png \
+ recording-surface-over.quartz.rgb24.ref.png \
+ recording-surface-over.rgb24.ref.png \
+ recording-surface-over.svg.argb32.ref.png \
+ recording-surface-over.svg.rgb24.ref.png \
+ recording-surface-over.xlib.argb32.ref.png \
+ recording-surface-over.xlib.rgb24.ref.png \
recording-surface-pattern.ref.png \
- recording-surface-pattern.rgb24.ref.png \
- recording-surface-pattern.svg.argb32.ref.png \
- recording-surface-pattern.svg.rgb24.ref.png \
- recording-surface-pattern.xlib.argb32.ref.png \
- recording-surface-pattern.xlib.rgb24.ref.png \
rectangle-rounding-error.ref.png \
rectilinear-dash.quartz.xfail.png \
rectilinear-dash.ref.png \
diff --git a/test/recording-surface-pattern.gl.argb32.ref.png b/test/recording-surface-over.gl.argb32.ref.png
index 50e6f5ab..50e6f5ab 100644
--- a/test/recording-surface-pattern.gl.argb32.ref.png
+++ b/test/recording-surface-over.gl.argb32.ref.png
Binary files differ
diff --git a/test/recording-surface-pattern.image16.ref.png b/test/recording-surface-over.image16.ref.png
index 02028938..02028938 100644
--- a/test/recording-surface-pattern.image16.ref.png
+++ b/test/recording-surface-over.image16.ref.png
Binary files differ
diff --git a/test/recording-surface-pattern.pdf.argb32.ref.png b/test/recording-surface-over.pdf.argb32.ref.png
index a06386b1..a06386b1 100644
--- a/test/recording-surface-pattern.pdf.argb32.ref.png
+++ b/test/recording-surface-over.pdf.argb32.ref.png
Binary files differ
diff --git a/test/recording-surface-pattern.pdf.rgb24.ref.png b/test/recording-surface-over.pdf.rgb24.ref.png
index bf69f9ea..bf69f9ea 100644
--- a/test/recording-surface-pattern.pdf.rgb24.ref.png
+++ b/test/recording-surface-over.pdf.rgb24.ref.png
Binary files differ
diff --git a/test/recording-surface-pattern.ps.argb32.ref.png b/test/recording-surface-over.ps.argb32.ref.png
index ac663231..ac663231 100644
--- a/test/recording-surface-pattern.ps.argb32.ref.png
+++ b/test/recording-surface-over.ps.argb32.ref.png
Binary files differ
diff --git a/test/recording-surface-pattern.ps.rgb24.ref.png b/test/recording-surface-over.ps.rgb24.ref.png
index fab33823..fab33823 100644
--- a/test/recording-surface-pattern.ps.rgb24.ref.png
+++ b/test/recording-surface-over.ps.rgb24.ref.png
Binary files differ
diff --git a/test/recording-surface-pattern.quartz.argb32.ref.png b/test/recording-surface-over.quartz.argb32.ref.png
index 09d95596..09d95596 100644
--- a/test/recording-surface-pattern.quartz.argb32.ref.png
+++ b/test/recording-surface-over.quartz.argb32.ref.png
Binary files differ
diff --git a/test/recording-surface-pattern.quartz.rgb24.ref.png b/test/recording-surface-over.quartz.rgb24.ref.png
index 96aff408..96aff408 100644
--- a/test/recording-surface-pattern.quartz.rgb24.ref.png
+++ b/test/recording-surface-over.quartz.rgb24.ref.png
Binary files differ
diff --git a/test/recording-surface-pattern.rgb24.ref.png b/test/recording-surface-over.rgb24.ref.png
index 2de298dc..2de298dc 100644
--- a/test/recording-surface-pattern.rgb24.ref.png
+++ b/test/recording-surface-over.rgb24.ref.png
Binary files differ
diff --git a/test/recording-surface-pattern.svg.argb32.ref.png b/test/recording-surface-over.svg.argb32.ref.png
index ff4154d6..ff4154d6 100644
--- a/test/recording-surface-pattern.svg.argb32.ref.png
+++ b/test/recording-surface-over.svg.argb32.ref.png
Binary files differ
diff --git a/test/recording-surface-pattern.svg.rgb24.ref.png b/test/recording-surface-over.svg.rgb24.ref.png
index d2d53724..d2d53724 100644
--- a/test/recording-surface-pattern.svg.rgb24.ref.png
+++ b/test/recording-surface-over.svg.rgb24.ref.png
Binary files differ
diff --git a/test/recording-surface-pattern.xlib.argb32.ref.png b/test/recording-surface-over.xlib.argb32.ref.png
index d612250a..d612250a 100644
--- a/test/recording-surface-pattern.xlib.argb32.ref.png
+++ b/test/recording-surface-over.xlib.argb32.ref.png
Binary files differ
diff --git a/test/recording-surface-pattern.xlib.rgb24.ref.png b/test/recording-surface-over.xlib.rgb24.ref.png
index 0a57b44e..0a57b44e 100644
--- a/test/recording-surface-pattern.xlib.rgb24.ref.png
+++ b/test/recording-surface-over.xlib.rgb24.ref.png
Binary files differ
diff --git a/test/recording-surface-pattern.c b/test/recording-surface-pattern.c
index c8768f99..5a5fee2b 100644
--- a/test/recording-surface-pattern.c
+++ b/test/recording-surface-pattern.c
@@ -37,66 +37,74 @@
/* This test is designed to test painting a recording surface pattern with
* CAIRO_EXTEND_NONE and a non identity pattern matrix.
*/
+static cairo_pattern_t *create_pattern (cairo_t *target)
+{
+ cairo_surface_t *surface;
+ cairo_pattern_t *pattern;
+ cairo_t *cr;
+
+ surface = cairo_surface_create_similar (cairo_get_group_target (target),
+ CAIRO_CONTENT_COLOR_ALPHA,
+ PAT_WIDTH, PAT_HEIGHT);
+ cr = cairo_create (surface);
+ cairo_surface_destroy (surface);
+
+ cairo_set_source_rgba (cr, 1, 0, 1, 0.5);
+ cairo_rectangle (cr, PAT_WIDTH/6.0, PAT_HEIGHT/6.0, PAT_WIDTH/4.0, PAT_HEIGHT/4.0);
+ cairo_fill (cr);
+
+ cairo_set_source_rgba (cr, 0, 1, 1, 0.5);
+ cairo_rectangle (cr, PAT_WIDTH/2.0, PAT_HEIGHT/2.0, PAT_WIDTH/4.0, PAT_HEIGHT/4.0);
+ cairo_fill (cr);
+
+ cairo_set_line_width (cr, 1);
+ cairo_move_to (cr, PAT_WIDTH/6.0, 0);
+ cairo_line_to (cr, 0, 0);
+ cairo_line_to (cr, 0, PAT_HEIGHT/6.0);
+ cairo_set_source_rgb (cr, 1, 0, 0);
+ cairo_stroke (cr);
+ cairo_move_to (cr, PAT_WIDTH/6.0, PAT_HEIGHT);
+ cairo_line_to (cr, 0, PAT_HEIGHT);
+ cairo_line_to (cr, 0, 5*PAT_HEIGHT/6.0);
+ cairo_set_source_rgb (cr, 0, 1, 0);
+ cairo_stroke (cr);
+ cairo_move_to (cr, 5*PAT_WIDTH/6.0, 0);
+ cairo_line_to (cr, PAT_WIDTH, 0);
+ cairo_line_to (cr, PAT_WIDTH, PAT_HEIGHT/6.0);
+ cairo_set_source_rgb (cr, 0, 0, 1);
+ cairo_stroke (cr);
+ cairo_move_to (cr, 5*PAT_WIDTH/6.0, PAT_HEIGHT);
+ cairo_line_to (cr, PAT_WIDTH, PAT_HEIGHT);
+ cairo_line_to (cr, PAT_WIDTH, 5*PAT_HEIGHT/6.0);
+ cairo_set_source_rgb (cr, 1, 1, 0);
+ cairo_stroke (cr);
+
+ cairo_set_source_rgb (cr, 0.5, 0.5, 0.5);
+ cairo_set_line_width (cr, PAT_WIDTH/10.0);
+
+ cairo_move_to (cr, 0, PAT_HEIGHT/4.0);
+ cairo_line_to (cr, PAT_WIDTH, PAT_HEIGHT/4.0);
+ cairo_stroke (cr);
+
+ cairo_move_to (cr, PAT_WIDTH/4.0, 0);
+ cairo_line_to (cr, PAT_WIDTH/4.0, PAT_WIDTH);
+ cairo_stroke (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)
+over (cairo_t *cr, int width, int height)
{
- cairo_surface_t *pat_surface;
cairo_pattern_t *pattern;
cairo_matrix_t mat;
- cairo_t *cr2;
cairo_translate (cr, PAD, PAD);
- pat_surface = cairo_surface_create_similar (cairo_get_group_target (cr),
- CAIRO_CONTENT_COLOR_ALPHA,
- PAT_WIDTH, PAT_HEIGHT);
- cr2 = cairo_create (pat_surface);
- cairo_surface_destroy (pat_surface);
-
- cairo_set_source_rgba (cr2, 1, 0, 1, 0.5);
- cairo_rectangle (cr2, PAT_WIDTH/6.0, PAT_HEIGHT/6.0, PAT_WIDTH/4.0, PAT_HEIGHT/4.0);
- cairo_fill (cr2);
-
- cairo_set_source_rgba (cr2, 0, 1, 1, 0.5);
- cairo_rectangle (cr2, PAT_WIDTH/2.0, PAT_HEIGHT/2.0, PAT_WIDTH/4.0, PAT_HEIGHT/4.0);
- cairo_fill (cr2);
-
- cairo_set_line_width (cr2, 1);
- cairo_move_to (cr2, PAT_WIDTH/6.0, 0);
- cairo_line_to (cr2, 0, 0);
- cairo_line_to (cr2, 0, PAT_HEIGHT/6.0);
- cairo_set_source_rgb (cr2, 1, 0, 0);
- cairo_stroke (cr2);
- cairo_move_to (cr2, PAT_WIDTH/6.0, PAT_HEIGHT);
- cairo_line_to (cr2, 0, PAT_HEIGHT);
- cairo_line_to (cr2, 0, 5*PAT_HEIGHT/6.0);
- cairo_set_source_rgb (cr2, 0, 1, 0);
- cairo_stroke (cr2);
- cairo_move_to (cr2, 5*PAT_WIDTH/6.0, 0);
- cairo_line_to (cr2, PAT_WIDTH, 0);
- cairo_line_to (cr2, PAT_WIDTH, PAT_HEIGHT/6.0);
- cairo_set_source_rgb (cr2, 0, 0, 1);
- cairo_stroke (cr2);
- cairo_move_to (cr2, 5*PAT_WIDTH/6.0, PAT_HEIGHT);
- cairo_line_to (cr2, PAT_WIDTH, PAT_HEIGHT);
- cairo_line_to (cr2, PAT_WIDTH, 5*PAT_HEIGHT/6.0);
- cairo_set_source_rgb (cr2, 1, 1, 0);
- cairo_stroke (cr2);
-
- cairo_set_source_rgb (cr2, 0.5, 0.5, 0.5);
- cairo_set_line_width (cr2, PAT_WIDTH/10.0);
-
- cairo_move_to (cr2, 0, PAT_HEIGHT/4.0);
- cairo_line_to (cr2, PAT_WIDTH, PAT_HEIGHT/4.0);
- cairo_stroke (cr2);
-
- cairo_move_to (cr2, PAT_WIDTH/4.0, 0);
- cairo_line_to (cr2, PAT_WIDTH/4.0, PAT_WIDTH);
- cairo_stroke (cr2);
-
- pattern = cairo_pattern_create_for_surface (cairo_get_target (cr2));
- cairo_destroy (cr2);
+ pattern = create_pattern (cr);
cairo_matrix_init_identity (&mat);
cairo_matrix_scale (&mat, 2, 1.5);
@@ -113,9 +121,42 @@ draw (cairo_t *cr, int width, int height)
return CAIRO_TEST_SUCCESS;
}
-CAIRO_TEST (recording_surface_pattern,
+static cairo_test_status_t
+source (cairo_t *cr, int width, int height)
+{
+ cairo_pattern_t *pattern;
+ cairo_matrix_t mat;
+
+ cairo_translate (cr, PAD, PAD);
+
+ pattern = create_pattern (cr);
+
+ cairo_matrix_init_identity (&mat);
+ cairo_matrix_scale (&mat, 2, 1.5);
+ cairo_matrix_rotate (&mat, 1);
+ cairo_matrix_translate (&mat, -PAT_WIDTH/4.0, -PAT_WIDTH/2.0);
+ cairo_pattern_set_matrix (pattern, &mat);
+ cairo_pattern_set_extend (pattern, CAIRO_EXTEND_NONE);
+
+ cairo_set_source (cr, pattern);
+ cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
+ cairo_paint (cr);
+
+ cairo_pattern_destroy (pattern);
+
+ return CAIRO_TEST_SUCCESS;
+}
+
+CAIRO_TEST (recording_surface_over,
+ "Paint recording surface pattern with non identity pattern matrix",
+ "recording", /* keywords */
+ NULL, /* requirements */
+ WIDTH, HEIGHT,
+ NULL, over)
+
+CAIRO_TEST (recording_surface_source,
"Paint recording surface pattern with non identity pattern matrix",
"recording", /* keywords */
NULL, /* requirements */
WIDTH, HEIGHT,
- NULL, draw)
+ NULL, source)
diff --git a/test/recording-surface-pattern.ref.png b/test/recording-surface-pattern.ref.png
deleted file mode 100644
index 7f9c56cd..00000000
--- a/test/recording-surface-pattern.ref.png
+++ /dev/null
Binary files differ