From 74ded42327e87b40de434a28620d0a3fc8e4d249 Mon Sep 17 00:00:00 2001 From: Jeff Muizelaar Date: Mon, 19 Feb 2007 16:06:56 -0500 Subject: [PATCH] Add a new dashing test This new dashing test, based on some code from Jeff Smith, does a pretty good job exploring all the cases that the dashing code needs to deal with. --- test/Makefile.am | 2 + test/dash-state-ps-argb32-ref.png | Bin 0 -> 8652 bytes test/dash-state-ref.png | Bin 0 -> 9389 bytes test/dash-state.c | 72 ++++++++++++++++++++++++++++++ 4 files changed, 74 insertions(+) create mode 100644 test/dash-state-ps-argb32-ref.png create mode 100644 test/dash-state-ref.png create mode 100644 test/dash-state.c diff --git a/test/Makefile.am b/test/Makefile.am index ca82b8779..18ba2ac53 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -27,6 +27,7 @@ dash-no-dash \ dash-offset-negative \ dash-scale \ dash-zero-length \ +dash-state \ degenerate-path \ device-offset \ device-offset-positive \ @@ -208,6 +209,7 @@ dash-no-dash-ref.png \ dash-offset-negative-ref.png \ dash-scale-ref.png \ dash-scale-ps-argb32-ref.png \ +dash-state-ref.png \ dash-zero-length-ref.png \ dash-zero-length-rgb24-ref.png \ dash-zero-length-ps-argb32-ref.png \ diff --git a/test/dash-state-ps-argb32-ref.png b/test/dash-state-ps-argb32-ref.png new file mode 100644 index 0000000000000000000000000000000000000000..01d32fae100d5fa3c24beca092f8d2a0bd1314d8 GIT binary patch literal 8652 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
    d_xf?D!>i|D6Nynx?_T7Qdzb6Rv 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 literal 0 HcmV?d00001 diff --git a/test/dash-state.c b/test/dash-state.c new file mode 100644 index 000000000..a59a3e8f9 --- /dev/null +++ b/test/dash-state.c @@ -0,0 +1,72 @@ +/* + * Copyright © 2007 Jeff Smith + * + * 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 + * Jeff Smith not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Jeff Smith makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * JEFF SMITH DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL JEFF SMITH 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 Smith + */ + +#include "cairo-test.h" + +static cairo_test_draw_function_t draw; + +cairo_test_t test = { + "dash-state", + "Tries to explore the state space of the dashing code", + 25*60, 4*60, + draw +}; + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + double dashes[2] = {20, 20}; + int a=0, b=0, c=0; + + cairo_set_source_rgb (cr, 0, 0, 0); + cairo_paint (cr); + + for (a=0; a<4; a++) + for (b=0; b<5; b++) + for (c=0; c<5; c++) { + cairo_move_to (cr, ((b*5)+c)*60+10, a*60+10); + cairo_rel_line_to (cr, 0, b*10); + cairo_rel_line_to (cr, c*10, 0); + + cairo_set_source_rgb (cr, 1, 1, 1); + cairo_set_line_width (cr, 8); + cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); + cairo_set_dash (cr, dashes, 2, a*10); + cairo_stroke_preserve (cr); + + cairo_set_source_rgb (cr, 0, 0.5, 1); + cairo_set_line_width (cr, 2); + cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); + cairo_set_dash (cr, 0, 0, 0); + cairo_stroke (cr); + } + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +}