From 1affc3192bbc4db93213a7053255f6fbafbab8a8 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Mon, 8 Sep 2008 13:34:45 +0100 Subject: [PATCH] [test] Add fill-alpha-pattern. A slight variation on the simple fill-alpha theme is that if Company is truly seeing a regression where we dither, the error on a constant background will be small and might be missed by the test suite. --- test/.gitignore | 1 + test/Makefile.am | 3 + test/fill-alpha-pattern-ps-ref.png | Bin 0 -> 4519 bytes test/fill-alpha-pattern-ref.png | Bin 0 -> 3855 bytes test/fill-alpha-pattern.c | 94 +++++++++++++++++++++++++++++ 5 files changed, 98 insertions(+) create mode 100644 test/fill-alpha-pattern-ps-ref.png create mode 100644 test/fill-alpha-pattern-ref.png create mode 100644 test/fill-alpha-pattern.c diff --git a/test/.gitignore b/test/.gitignore index 7f5caede9..9e3bd22f6 100644 --- a/test/.gitignore +++ b/test/.gitignore @@ -66,6 +66,7 @@ fallback-resolution.pdf fallback-resolution.ps fallback-resolution.svg fill-alpha +fill-alpha-pattern fill-and-stroke fill-and-stroke-alpha fill-and-stroke-alpha-add diff --git a/test/Makefile.am b/test/Makefile.am index ad2c21e58..3131c0a47 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -49,6 +49,7 @@ extend-reflect-similar$(EXEEXT) \ extend-repeat$(EXEEXT) \ extend-repeat-similar$(EXEEXT) \ fill-alpha$(EXEEXT) \ +fill-alpha-pattern$(EXEEXT) \ fill-and-stroke$(EXEEXT) \ fill-and-stroke-alpha$(EXEEXT) \ fill-and-stroke-alpha-add$(EXEEXT) \ @@ -393,6 +394,8 @@ REFERENCE_IMAGES = \ extend-repeat-ref.png \ extend-repeat-similar-ref.png \ fill-alpha-ref.png \ + fill-alpha-pattern-ref.png \ + fill-alpha-pattern-ps-ref.png \ fill-and-stroke-alpha-add-quartz-ref.png \ fill-and-stroke-alpha-add-ref.png \ fill-and-stroke-alpha-quartz-ref.png \ diff --git a/test/fill-alpha-pattern-ps-ref.png b/test/fill-alpha-pattern-ps-ref.png new file mode 100644 index 0000000000000000000000000000000000000000..a56b36c7fc63ca3a0faeac6569c7e1e24616f8fa GIT binary patch literal 4519 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 literal 0 HcmV?d00001 diff --git a/test/fill-alpha-pattern-ref.png b/test/fill-alpha-pattern-ref.png new file mode 100644 index 0000000000000000000000000000000000000000..2b7ff9ca49ef685b233efeeeb8553af6ffe37c5d GIT binary patch literal 3855 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 + */ + +#include "cairo-test.h" + +#define SIZE 60 /* needs to be big to check large area effects (dithering) */ +#define PAD 2 + +static cairo_test_draw_function_t draw; + +static const cairo_test_t test = { + "fill-alpha-pattern", + "Tests using set_rgba();fill() over a linear gradient", + 2*SIZE + 4*PAD, 2*SIZE + 4*PAD, + draw +}; + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_pattern_t *pattern; + int n; + + /* draw a simple pattern behind */ + pattern = cairo_pattern_create_linear (0, 0, width, height); + cairo_pattern_add_color_stop_rgb (pattern, 0, 1, 1, 0); + cairo_pattern_add_color_stop_rgb (pattern, 1, 1, 1, 1); + cairo_set_source (cr, pattern); + cairo_pattern_destroy (pattern); + cairo_paint (cr); + + /* square */ + cairo_rectangle (cr, PAD, PAD, SIZE, SIZE); + cairo_set_source_rgba (cr, 1, 0, 0, .5); + cairo_fill (cr); + + /* circle */ + cairo_translate (cr, SIZE + 2 * PAD, 0); + cairo_arc (cr, PAD + SIZE / 2., PAD + SIZE / 2., SIZE / 2., 0, 2 * M_PI); + cairo_set_source_rgba (cr, 0, 1, 0, .5); + cairo_fill (cr); + + /* triangle */ + cairo_translate (cr, 0, SIZE + 2 * PAD); + cairo_move_to (cr, PAD + SIZE / 2, PAD); + cairo_line_to (cr, PAD + SIZE, PAD + SIZE); + cairo_line_to (cr, PAD, PAD + SIZE); + cairo_set_source_rgba (cr, 0, 0, 1, .5); + cairo_fill (cr); + + /* star */ + cairo_translate (cr, -(SIZE + 2 * PAD) + SIZE/2., SIZE/2.); + for (n = 0; n < 5; n++) { + cairo_line_to (cr, + SIZE/2 * cos (2*n * 2*M_PI / 10), + SIZE/2 * sin (2*n * 2*M_PI / 10)); + + cairo_line_to (cr, + SIZE/4 * cos ((2*n+1)*2*M_PI / 10), + SIZE/4 * sin ((2*n+1)*2*M_PI / 10)); + } + cairo_set_source_rgba (cr, 0, 0, 0, .5); + cairo_fill (cr); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +}