From 93c9d4cefb0bfa7846f33e57f395e6944ae878e3 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Sat, 6 Aug 2011 10:25:59 +0100 Subject: [PATCH] test: Add an loopy I-bar stroker test A second relatively simple closed concave shape, all the better for debugging with. Signed-off-by: Chris Wilson --- test/Makefile.refs | 1 + test/Makefile.sources | 1 + test/joins-loop.c | 100 ++++++++++++++++++++++++++++++++++++++++ test/joins-loop.ref.png | Bin 0 -> 4646 bytes 4 files changed, 102 insertions(+) create mode 100644 test/joins-loop.c create mode 100644 test/joins-loop.ref.png diff --git a/test/Makefile.refs b/test/Makefile.refs index 87a594166..62d56e3a2 100644 --- a/test/Makefile.refs +++ b/test/Makefile.refs @@ -653,6 +653,7 @@ REFERENCE_IMAGES = \ inverse-text.ps.ref.png \ inverse-text.quartz.ref.png \ inverse-text.ref.png \ + joins-loop.ref.png \ joins-star.ref.png \ joins.image16.ref.png \ joins.ps.ref.png \ diff --git a/test/Makefile.sources b/test/Makefile.sources index 6421894dc..ba520aff9 100644 --- a/test/Makefile.sources +++ b/test/Makefile.sources @@ -146,6 +146,7 @@ test_sources = \ invalid-matrix.c \ inverse-text.c \ joins.c \ + joins-loop.c \ joins-star.c \ large-clip.c \ large-font.c \ diff --git a/test/joins-loop.c b/test/joins-loop.c new file mode 100644 index 000000000..f0b7bc11d --- /dev/null +++ b/test/joins-loop.c @@ -0,0 +1,100 @@ +/* + * Copyright © 2011 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Author: Chris Wilson + */ + +#include "cairo-test.h" + +#define LINE_WIDTH 10. +#define SIZE (8 * LINE_WIDTH) +#define PAD (1 * LINE_WIDTH) + + +static void +make_path (cairo_t *cr) +{ + cairo_move_to (cr, 0, 0); + cairo_rel_curve_to (cr, + SIZE, 0, + 0, SIZE, + SIZE, SIZE); + cairo_rel_line_to (cr, -SIZE, 0); + cairo_rel_curve_to (cr, + SIZE, 0, + 0, -SIZE, + SIZE, -SIZE); + cairo_close_path (cr); +} + +static void +draw_joins (cairo_t *cr) +{ + cairo_save (cr); + cairo_translate (cr, PAD, PAD); + + make_path (cr); + cairo_set_line_join (cr, CAIRO_LINE_JOIN_BEVEL); + cairo_stroke (cr); + cairo_translate (cr, SIZE + PAD, 0.); + + make_path (cr); + cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); + cairo_stroke (cr); + cairo_translate (cr, SIZE + PAD, 0.); + + make_path (cr); + cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER); + cairo_stroke (cr); + cairo_translate (cr, SIZE + PAD, 0.); + + cairo_restore (cr); +} + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); + cairo_paint (cr); + + cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); + cairo_set_line_width (cr, LINE_WIDTH); + + draw_joins (cr); + + /* and reflect to generate the opposite vertex ordering */ + cairo_translate (cr, 0, height); + cairo_scale (cr, 1, -1); + + draw_joins (cr); + + return CAIRO_TEST_SUCCESS; +} + +CAIRO_TEST (joins_loop, + "A loopy concave shape", + "stroke", /* keywords */ + NULL, /* requirements */ + 3*(SIZE+PAD)+PAD, 2*(SIZE+PAD)+2*PAD, + NULL, draw) + diff --git a/test/joins-loop.ref.png b/test/joins-loop.ref.png new file mode 100644 index 0000000000000000000000000000000000000000..696d40c865a7e7dfd9efdce244df10eafdbbb27b GIT binary patch literal 4646 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