From 53bd9879bb802606789be76e5653e2fb6781f676 Mon Sep 17 00:00:00 2001 From: Jeff Muizelaar Date: Fri, 5 Aug 2005 15:07:45 +0000 Subject: [PATCH] Add a test case for CAIRO_FORMAT_A8 masks that fails with libpixman. --- ChangeLog | 8 +++++ test/Makefile.am | 4 +++ test/a8-mask-ref.png | Bin 0 -> 128 bytes test/a8-mask.c | 71 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 83 insertions(+) create mode 100644 test/a8-mask-ref.png create mode 100644 test/a8-mask.c diff --git a/ChangeLog b/ChangeLog index 2a0d7753b..3d6bf61c8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2005-08-05 Jeff Muizelaar + + * test/Makefile.am: + * test/a8-mask-ref.png: + * test/a8-mask.c: (draw), (main): + Add a test case for CAIRO_FORMAT_A8 masks that fails with + libpixman. + 2005-08-05 Carl Worth * autogen.sh (automake_min_vers): Bump automake_min_vers up to 1.7 diff --git a/test/Makefile.am b/test/Makefile.am index bdbf58566..8a2db8524 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -1,5 +1,6 @@ # All test cases go here TESTS = \ +a8-mask \ clip-nesting \ clip-twice \ composite-integer-translate-source \ @@ -59,6 +60,7 @@ endif # I really don't like having to repeat this list. Anyone know a good # way to avoid it? Can I use a wildcard here? EXTRA_DIST = \ +a8-mask.png \ clip-nesting-ref.png \ clip-twice-ref.png \ composite-integer-translate-source-ref.png \ @@ -110,6 +112,7 @@ rel-path-ref.png # Also, any test listed here should call cairo_test_expect_failure and # provide an explanation for the expected failure. XFAIL_TESTS = \ +a8-mask \ filter-nearest-offset \ pixman-rotate \ self-intersecting \ @@ -148,6 +151,7 @@ LDADDS = libcairotest.la $(top_builddir)/src/libcairo.la # ARGH! I have to repeat the list of tests a third time. Maybe it's # time to break down and auto-generate the Makefile.am or something # from autogen.sh. My, but this is painful... +a8_mask_LDADD = $(LDADDS) clip_nesting_LDADD = $(LDADDS) clip_twice_LDADD = $(LDADDS) composite_integer_translate_source_LDADD = $(LDADDS) diff --git a/test/a8-mask-ref.png b/test/a8-mask-ref.png new file mode 100644 index 0000000000000000000000000000000000000000..38556156c0e582df27baf43274f9b64a8382b3cf GIT binary patch literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqY)RhkE)4%caKYZ?lYt`aC7!;n z>{mHhMXh-DSLcJ&DtWp%hDc0JPD%Lje|}?Q<3oF9WoG5W^%lI$K0GW3J_Il@eCT51 U`zb!R3#gjG)78&qol`;+0Ks1)Z2$lO literal 0 HcmV?d00001 diff --git a/test/a8-mask.c b/test/a8-mask.c new file mode 100644 index 000000000..e255c4ffb --- /dev/null +++ b/test/a8-mask.c @@ -0,0 +1,71 @@ +/* + * Copyright © Jeff Muizelaar + * + * 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 + * Red Hat, Inc. not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Red Hat, Inc. makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * JEFF MUIZELAAR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL RED HAT, INC. 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: Jeff Muizelaar + */ + +#include "cairo-test.h" + +cairo_test_t test = { + "a8-mask", + "test masks of CAIRO_FORMAT_A8", + 8, 8 +}; + +static unsigned char mask[] = { + 0x0, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0, + 0x0, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0, + 0x0, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0, + 0x0, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0, + 0x0, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0, + 0x0, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0, + 0x0, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0, + 0x0, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0 +}; + + + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_surface_t *image; + cairo_pattern_t *pattern; + + cairo_set_source_rgb (cr, 0, 0, 1); + cairo_paint (cr); + + image = cairo_image_surface_create_for_data (mask, CAIRO_FORMAT_A8, + 7, 8, 7); + pattern = cairo_pattern_create_for_surface (image); + + cairo_set_source_rgb (cr, 1, 0, 0); + cairo_mask (cr, pattern); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test_expect_failure (&test, draw, + "only image fails"); +}