diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2011-07-23 14:22:19 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2011-07-23 14:42:17 +0100 |
commit | 5de02329370257290404dae244cb14ac544140d7 (patch) | |
tree | 3d13ebc2f517b128151fcf251743c99abeba828a /test | |
parent | abd8fcc833eedc916addbd688a40303e4c78affd (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.refs | 26 | ||||
-rw-r--r-- | test/recording-surface-over.gl.argb32.ref.png (renamed from test/recording-surface-pattern.gl.argb32.ref.png) | bin | 3130 -> 3130 bytes | |||
-rw-r--r-- | test/recording-surface-over.image16.ref.png (renamed from test/recording-surface-pattern.image16.ref.png) | bin | 2856 -> 2856 bytes | |||
-rw-r--r-- | test/recording-surface-over.pdf.argb32.ref.png (renamed from test/recording-surface-pattern.pdf.argb32.ref.png) | bin | 3908 -> 3908 bytes | |||
-rw-r--r-- | test/recording-surface-over.pdf.rgb24.ref.png (renamed from test/recording-surface-pattern.pdf.rgb24.ref.png) | bin | 3760 -> 3760 bytes | |||
-rw-r--r-- | test/recording-surface-over.ps.argb32.ref.png (renamed from test/recording-surface-pattern.ps.argb32.ref.png) | bin | 3064 -> 3064 bytes | |||
-rw-r--r-- | test/recording-surface-over.ps.rgb24.ref.png (renamed from test/recording-surface-pattern.ps.rgb24.ref.png) | bin | 3147 -> 3147 bytes | |||
-rw-r--r-- | test/recording-surface-over.quartz.argb32.ref.png (renamed from test/recording-surface-pattern.quartz.argb32.ref.png) | bin | 4570 -> 4570 bytes | |||
-rw-r--r-- | test/recording-surface-over.quartz.rgb24.ref.png (renamed from test/recording-surface-pattern.quartz.rgb24.ref.png) | bin | 4058 -> 4058 bytes | |||
-rw-r--r-- | test/recording-surface-over.rgb24.ref.png (renamed from test/recording-surface-pattern.rgb24.ref.png) | bin | 3162 -> 3162 bytes | |||
-rw-r--r-- | test/recording-surface-over.svg.argb32.ref.png (renamed from test/recording-surface-pattern.svg.argb32.ref.png) | bin | 3778 -> 3778 bytes | |||
-rw-r--r-- | test/recording-surface-over.svg.rgb24.ref.png (renamed from test/recording-surface-pattern.svg.rgb24.ref.png) | bin | 3760 -> 3760 bytes | |||
-rw-r--r-- | test/recording-surface-over.xlib.argb32.ref.png (renamed from test/recording-surface-pattern.xlib.argb32.ref.png) | bin | 3055 -> 3055 bytes | |||
-rw-r--r-- | test/recording-surface-over.xlib.rgb24.ref.png (renamed from test/recording-surface-pattern.xlib.rgb24.ref.png) | bin | 3124 -> 3124 bytes | |||
-rw-r--r-- | test/recording-surface-pattern.c | 149 | ||||
-rw-r--r-- | test/recording-surface-pattern.ref.png | bin | 3072 -> 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 Binary files differindex 50e6f5ab..50e6f5ab 100644 --- a/test/recording-surface-pattern.gl.argb32.ref.png +++ b/test/recording-surface-over.gl.argb32.ref.png diff --git a/test/recording-surface-pattern.image16.ref.png b/test/recording-surface-over.image16.ref.png Binary files differindex 02028938..02028938 100644 --- a/test/recording-surface-pattern.image16.ref.png +++ b/test/recording-surface-over.image16.ref.png diff --git a/test/recording-surface-pattern.pdf.argb32.ref.png b/test/recording-surface-over.pdf.argb32.ref.png Binary files differindex a06386b1..a06386b1 100644 --- a/test/recording-surface-pattern.pdf.argb32.ref.png +++ b/test/recording-surface-over.pdf.argb32.ref.png diff --git a/test/recording-surface-pattern.pdf.rgb24.ref.png b/test/recording-surface-over.pdf.rgb24.ref.png Binary files differindex bf69f9ea..bf69f9ea 100644 --- a/test/recording-surface-pattern.pdf.rgb24.ref.png +++ b/test/recording-surface-over.pdf.rgb24.ref.png diff --git a/test/recording-surface-pattern.ps.argb32.ref.png b/test/recording-surface-over.ps.argb32.ref.png Binary files differindex ac663231..ac663231 100644 --- a/test/recording-surface-pattern.ps.argb32.ref.png +++ b/test/recording-surface-over.ps.argb32.ref.png diff --git a/test/recording-surface-pattern.ps.rgb24.ref.png b/test/recording-surface-over.ps.rgb24.ref.png Binary files differindex fab33823..fab33823 100644 --- a/test/recording-surface-pattern.ps.rgb24.ref.png +++ b/test/recording-surface-over.ps.rgb24.ref.png diff --git a/test/recording-surface-pattern.quartz.argb32.ref.png b/test/recording-surface-over.quartz.argb32.ref.png Binary files differindex 09d95596..09d95596 100644 --- a/test/recording-surface-pattern.quartz.argb32.ref.png +++ b/test/recording-surface-over.quartz.argb32.ref.png diff --git a/test/recording-surface-pattern.quartz.rgb24.ref.png b/test/recording-surface-over.quartz.rgb24.ref.png Binary files differindex 96aff408..96aff408 100644 --- a/test/recording-surface-pattern.quartz.rgb24.ref.png +++ b/test/recording-surface-over.quartz.rgb24.ref.png diff --git a/test/recording-surface-pattern.rgb24.ref.png b/test/recording-surface-over.rgb24.ref.png Binary files differindex 2de298dc..2de298dc 100644 --- a/test/recording-surface-pattern.rgb24.ref.png +++ b/test/recording-surface-over.rgb24.ref.png diff --git a/test/recording-surface-pattern.svg.argb32.ref.png b/test/recording-surface-over.svg.argb32.ref.png Binary files differindex ff4154d6..ff4154d6 100644 --- a/test/recording-surface-pattern.svg.argb32.ref.png +++ b/test/recording-surface-over.svg.argb32.ref.png diff --git a/test/recording-surface-pattern.svg.rgb24.ref.png b/test/recording-surface-over.svg.rgb24.ref.png Binary files differindex d2d53724..d2d53724 100644 --- a/test/recording-surface-pattern.svg.rgb24.ref.png +++ b/test/recording-surface-over.svg.rgb24.ref.png diff --git a/test/recording-surface-pattern.xlib.argb32.ref.png b/test/recording-surface-over.xlib.argb32.ref.png Binary files differindex d612250a..d612250a 100644 --- a/test/recording-surface-pattern.xlib.argb32.ref.png +++ b/test/recording-surface-over.xlib.argb32.ref.png diff --git a/test/recording-surface-pattern.xlib.rgb24.ref.png b/test/recording-surface-over.xlib.rgb24.ref.png Binary files differindex 0a57b44e..0a57b44e 100644 --- a/test/recording-surface-pattern.xlib.rgb24.ref.png +++ b/test/recording-surface-over.xlib.rgb24.ref.png 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 Binary files differdeleted file mode 100644 index 7f9c56cd..00000000 --- a/test/recording-surface-pattern.ref.png +++ /dev/null |