From b280114c5e87490baf3a0f99fe9d6e051168a6a9 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Sat, 6 Aug 2011 09:15:57 +0100 Subject: [PATCH] test: Add join-star, another stroker exercise A simple convex shape, useful for debugging. Signed-off-by: Chris Wilson --- test/Makefile.refs | 1 + test/Makefile.sources | 1 + test/joins-star.c | 99 ++++++++++++++++++++++++++++++++++++++++ test/joins-star.ref.png | Bin 0 -> 4362 bytes 4 files changed, 101 insertions(+) create mode 100644 test/joins-star.c create mode 100644 test/joins-star.ref.png diff --git a/test/Makefile.refs b/test/Makefile.refs index 6be80eb30..87a594166 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-star.ref.png \ joins.image16.ref.png \ joins.ps.ref.png \ joins.quartz.ref.png \ diff --git a/test/Makefile.sources b/test/Makefile.sources index e8e2b4ff8..6421894dc 100644 --- a/test/Makefile.sources +++ b/test/Makefile.sources @@ -146,6 +146,7 @@ test_sources = \ invalid-matrix.c \ inverse-text.c \ joins.c \ + joins-star.c \ large-clip.c \ large-font.c \ large-source.c \ diff --git a/test/joins-star.c b/test/joins-star.c new file mode 100644 index 000000000..17c1b4e66 --- /dev/null +++ b/test/joins-star.c @@ -0,0 +1,99 @@ +/* + * 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) +{ +#define PROTRUSION 20 + cairo_move_to (cr, SIZE/2-PROTRUSION, LINE_WIDTH); + cairo_line_to (cr, SIZE-LINE_WIDTH, SIZE/2+PROTRUSION); + cairo_line_to (cr, SIZE-LINE_WIDTH, SIZE/2-PROTRUSION); + cairo_line_to (cr, SIZE/2-PROTRUSION, SIZE-LINE_WIDTH); + cairo_line_to (cr, SIZE/2+PROTRUSION, SIZE-LINE_WIDTH); + cairo_line_to (cr, LINE_WIDTH, SIZE/2-PROTRUSION); + cairo_line_to (cr, LINE_WIDTH, SIZE/2+PROTRUSION); + cairo_line_to (cr, SIZE/2+PROTRUSION, LINE_WIDTH); + 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_star, + "A nice and simple concave shape", + "stroke", /* keywords */ + NULL, /* requirements */ + 3*(SIZE+PAD)+PAD, 2*(SIZE+PAD)+PAD, + NULL, draw) + diff --git a/test/joins-star.ref.png b/test/joins-star.ref.png new file mode 100644 index 0000000000000000000000000000000000000000..e0d6606bcf0785c4dd627a5de0ed0608298c830c GIT binary patch literal 4362 zcmb7|2{hFE+rUSu(2ZiUG*LvBY*FKqD8%4Kcdkp8$&!7|jA*RYjbg0X(ul-xU5pw{ zj5XK3PEuKhQ5Zv(X~r@b@%}Kk`#-*evg%sIdLe!ug4m*<)9^L(D?7kkaZIEf1cMBrGh|*8%&KZTiwZ?e|FhY zgbZo(P)T+Q2+flhoQ|%13psgj{IY2%{8H(S53iGN<*Qv1smnN+jpheShwe!@9cm@4 zYAj;7hv~jb6idqB0z5WC}Yd*NJCWpZh06DdtACLq&9lj*Z z^A;q)588hX22#Iku;(rhSQzxv^JI_{D4G|vS3wpe{y&NwU)2cTSnd1$g=MZDf3#U6 zl}hdI?p|H3Is=)Qn9$VJNYf#XK^u)ftzSLBaSO?kQ;9w;D3QrE5 zXs1G|{UUuw!bcH)uARAsRn`xtX+tjDn z!46q$a6^=DE32p98-FM{=P0pUIrAE~pXR_ilXg`bHO%$t3!au49$J0&Q(= zwKK5e$B%;r_6;1{{8a%gC?rH<#ZaojL|42F?M*UNOACRHtsoLxu!)_WopC+~wyq-( zM-M@~ROz|Q$3aP=xmPF01Zl1dvE5o0RdDEd!qiIj2euvf5{7*9EN_QRGm!@|EL&(a zvw)Z;J-mBPMBef6>y3&jy`p@Nekd`mXHY%c9Al|dEpK9C0)aq^%O^~YlX_0f1?d1i zU~I*7qM5CFC IV9__5KWfvV%o@}30`EudJEi3x*WyC7`_7^r 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 Vo6E8(z{?Gg=@knjyn)mG{{kU9o0R|n literal 0 HcmV?d00001