From 067de9cf62223ee7a36aab10e3d8a4e0dcda4741 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Fri, 31 Jul 2009 17:49:39 +0100 Subject: [PATCH] [test] Add clip-fill. Test filling through a complex clip. --- test/Makefile.am | 4 ++ test/Makefile.sources | 1 + test/clip-fill.c | 78 +++++++++++++++++++++++++++ test/clip-fill.ps.xfail.png | Bin 0 -> 522 bytes test/clip-fill.ref.png | Bin 0 -> 1035 bytes test/clip-fill.xlib-fallback.ref.png | Bin 0 -> 1039 bytes test/clip-fill.xlib.ref.png | Bin 0 -> 1049 bytes 7 files changed, 83 insertions(+) create mode 100644 test/clip-fill.c create mode 100644 test/clip-fill.ps.xfail.png create mode 100644 test/clip-fill.ref.png create mode 100644 test/clip-fill.xlib-fallback.ref.png create mode 100644 test/clip-fill.xlib.ref.png diff --git a/test/Makefile.am b/test/Makefile.am index 783511c16..bf9671d82 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -163,6 +163,10 @@ REFERENCE_IMAGES = \ clear.svg12.rgb24.xfail.png \ clip-all.ref.png \ clip-empty.ref.png \ + clip-fill.ref.png \ + clip-fill.ps.xfail.png \ + clip-fill.xlib.ref.png \ + clip-fill.xlib-fallback.ref.png \ clip-fill-rule-pixel-aligned.ref.png \ clip-fill-rule-pixel-aligned.rgb24.ref.png \ clip-fill-rule.pdf.argb32.ref.png \ diff --git a/test/Makefile.sources b/test/Makefile.sources index 45bf5fd01..50b4d3eab 100644 --- a/test/Makefile.sources +++ b/test/Makefile.sources @@ -15,6 +15,7 @@ test_sources = \ clear.c \ clip-all.c \ clip-empty.c \ + clip-fill.c \ clip-fill-rule.c \ clip-fill-rule-pixel-aligned.c \ clip-nesting.c \ diff --git a/test/clip-fill.c b/test/clip-fill.c new file mode 100644 index 000000000..331af7963 --- /dev/null +++ b/test/clip-fill.c @@ -0,0 +1,78 @@ +/* + * Copyright 2009 Chris Wilson + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of + * Chris Wilson not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Chris Wilson makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Chris Wilson + */ + +#include "cairo-test.h" + +#define WIDTH 20 +#define HEIGHT 20 + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_set_source_rgb (cr, 1, 1, 1); + cairo_paint (cr); + + /* aligned-clip */ + cairo_save (cr); + cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD); + cairo_rectangle (cr, 0, 0, 20, 20); + cairo_rectangle (cr, 3, 3, 10, 10); + cairo_rectangle (cr, 7, 7, 10, 10); + cairo_clip (cr); + + cairo_set_source_rgb (cr, 0.7, 0, 0); + cairo_paint (cr); + cairo_set_source_rgb (cr, 0, 0.7, 0); + cairo_arc (cr, 10, 10, 8, 0, 2 * M_PI); + cairo_fill (cr); + cairo_restore (cr); + + cairo_translate (cr, WIDTH, 0); + + /* force a clip-mask */ + cairo_save (cr); + cairo_arc (cr, 10, 10, 10, 0, 2 * M_PI); + cairo_new_sub_path (cr); + cairo_arc_negative (cr, 10, 10, 5, 2 * M_PI, 0); + cairo_new_sub_path (cr); + cairo_arc (cr, 10, 10, 2, 0, 2 * M_PI); + cairo_clip (cr); + + cairo_set_source_rgb (cr, 0, 0, 0.7); + cairo_paint (cr); + cairo_set_source_rgb (cr, 0, 0.7, 0); + cairo_arc (cr, 10, 10, 7.5, 0, 2 * M_PI); + cairo_fill (cr); + cairo_restore (cr); + + return CAIRO_TEST_SUCCESS; +} + +CAIRO_TEST (clip_fill, + "Tests filling through complex clips.", + "clip, fill", /* keywords */ + NULL, /* requirements */ + 2 * WIDTH, HEIGHT, + NULL, draw) diff --git a/test/clip-fill.ps.xfail.png b/test/clip-fill.ps.xfail.png new file mode 100644 index 0000000000000000000000000000000000000000..d0aeaf142cfc444c1fd5e3cd4cb4cca1285eb93c GIT binary patch literal 522 zcmV+l0`>igP)|Lj`_p7pIy4!{8__9zG>V&w`Xf}0f41LOd~ zx1RMuQ$d)7kkZiZJXG>ezRWP0guUbMcAX|~gt0EDoTjTca{dQ53hBlJksn#cw(8`E`~u1*Tm5mk+B zpaBC`JeJ)HE4JYlEm2+M3ZITBT5>eSCG*wltYaR}-TvDLTV*sGD8s8L9bdDc=#dTc z&prjg`{s*t=?PfJ=<}Tyu>sE~C(?ZJd~$vW*PmL%$BOHTX26L);Ny$6$v_~ni`l6~ zY`~k}v}e9}Qy_CO`zLBGKGRz6es}&>0Q|T>@wu>B$F{z9WyPs~nTSPCjpcWvvt*lo zTTn}Li+NSpIzd~Iqb;tg#>;0c+qcIBb>+5G|19YQbw%OAt?G2d{dOSk*=*3gK-q*_ zpyDVS^ul#v+lN5>wMZ9Qn+a literal 0 HcmV?d00001 diff --git a/test/clip-fill.ref.png b/test/clip-fill.ref.png new file mode 100644 index 0000000000000000000000000000000000000000..41871bc88a0dec0f8dbcc2e0635b1bf0721c83e6 GIT binary patch literal 1035 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 T8+{=n00000NkvXXu0mjfFj52# literal 0 HcmV?d00001