From c87edd9e10c2a60e11c8cd954860fb03f6425132 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Thu, 22 Feb 2007 16:03:47 -0500 Subject: [PATCH] [test] Update surface-pattern test to include transformations The surface-pattern test was very naive, painting a surface pattern repeated at identity size. With the new test, the surface pattern is scaled and rotated. This reveals a serious bug in the PS backend. --- test/surface-pattern-pdf-argb32-ref.png | Bin 0 -> 14880 bytes test/surface-pattern-ref.png | Bin 194 -> 11439 bytes test/surface-pattern-svg-ref.png | Bin 0 -> 17663 bytes test/surface-pattern.c | 94 +++++++++++------------- 4 files changed, 43 insertions(+), 51 deletions(-) create mode 100644 test/surface-pattern-pdf-argb32-ref.png create mode 100644 test/surface-pattern-svg-ref.png diff --git a/test/surface-pattern-pdf-argb32-ref.png b/test/surface-pattern-pdf-argb32-ref.png new file mode 100644 index 0000000000000000000000000000000000000000..699b220fadf144ae15047fd61f83461804672548 GIT binary patch literal 14880 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 delta 177 zcmZ1L|LUUecXRlUpZjj`6oyf^X(4{%1F+IfAg z`QPt5xF5FcImKnMF!b61&b6D^{4%DR7C5b5(PQ Xc_Kf-ZCw)3J_b*AS3j3^P6N# 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 literal 0 HcmV?d00001 diff --git a/test/surface-pattern.c b/test/surface-pattern.c index 8fe40e668..42aca27fc 100644 --- a/test/surface-pattern.c +++ b/test/surface-pattern.c @@ -1,36 +1,15 @@ -/* - * Copyright © 2005 Red Hat, Inc. - * - * 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. - * - * RED HAT, INC. 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: Carl D. Worth - */ - +#include #include "cairo-test.h" +#include + +#define SIZE 140 static cairo_test_draw_function_t draw; cairo_test_t test = { "surface-pattern", - "Tests use of a surface pattern", - 36, 36, + "Test transformed repeated surface patterns", + SIZE, SIZE, draw }; @@ -38,35 +17,48 @@ static cairo_test_status_t draw (cairo_t *cr, int width, int height) { cairo_surface_t *surface; - cairo_t *cr2; - cairo_pattern_t *pattern; - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, - 6, 6); + cairo_t * cr_surface; + int surface_size = 6; - cr2 = cairo_create (surface); - { - cairo_rectangle (cr2, 0, 0, 3, 3); - cairo_rectangle (cr2, 3, 3, 3, 3); - cairo_set_source_rgb (cr2, 1, 1, 0); - cairo_fill (cr2); - - cairo_rectangle (cr2, 3, 0, 3, 3); - cairo_rectangle (cr2, 0, 3, 3, 3); - cairo_set_source_rgb (cr2, 0, 0, 1); - cairo_fill (cr2); - } - cairo_destroy (cr2); - - pattern = cairo_pattern_create_for_surface (surface); - cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT); - cairo_set_source (cr, pattern); - - cairo_rectangle (cr, 0, 0, width, height); + cairo_set_source_rgb (cr, 0, 0, 0); + cairo_rectangle (cr, 0, 0, SIZE, SIZE); cairo_fill (cr); - cairo_pattern_destroy (pattern); + /* Create an image surface with my favorite four colors in each + * quadrant. */ + surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, + surface_size, surface_size); + cr_surface = cairo_create (surface); + cairo_set_source_rgb (cr_surface, 1, 1, 1); + cairo_rectangle (cr_surface, + 0, 0, + surface_size / 2, surface_size / 2); + cairo_fill (cr_surface); + cairo_set_source_rgb (cr_surface, 1, 0, 0); + cairo_rectangle (cr_surface, + surface_size / 2, 0, + surface_size / 2, surface_size / 2); + cairo_fill (cr_surface); + cairo_set_source_rgb (cr_surface, 0, 1, 0); + cairo_rectangle (cr_surface, + 0, surface_size / 2, + surface_size / 2, surface_size / 2); + cairo_fill (cr_surface); + cairo_set_source_rgb (cr_surface, 0, 0, 1); + cairo_rectangle (cr_surface, + surface_size / 2, surface_size / 2, + surface_size / 2, surface_size / 2); + cairo_fill (cr_surface); + cairo_destroy (cr_surface); + + cairo_scale (cr, 10, 10); + cairo_rotate (cr, 1.); + cairo_set_source_surface (cr, surface, 1.5, 1.5); cairo_surface_destroy (surface); + cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REPEAT); + cairo_paint (cr); + return CAIRO_TEST_SUCCESS; }