diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2011-08-06 22:40:32 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2011-08-07 09:02:46 +0100 |
commit | 4236821d11407eb4af5a02bac78aff1fc19be017 (patch) | |
tree | f8dd756c3f88deae12f1161b317d39e0e389c81a /test | |
parent | 37e1a1b3ed8ab698d5b58573e1c6a25edc3f1cde (diff) |
test: Add unclosed-strokes
Checks that coincident end-points are not converted to joins. It briefly
passed through my mind that was a good thing...
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'test')
-rw-r--r-- | test/Makefile.refs | 1 | ||||
-rw-r--r-- | test/Makefile.sources | 3 | ||||
-rw-r--r-- | test/unclosed-strokes.c | 83 | ||||
-rw-r--r-- | test/unclosed-strokes.ref.png | bin | 0 -> 1689 bytes |
4 files changed, 86 insertions, 1 deletions
diff --git a/test/Makefile.refs b/test/Makefile.refs index 5926b5f1..ac5194dd 100644 --- a/test/Makefile.refs +++ b/test/Makefile.refs @@ -1357,6 +1357,7 @@ REFERENCE_IMAGES = \ unbounded-operator.svg12.argb32.ref.png \ unbounded-operator.svg12.rgb24.xfail.png \ unbounded-operator.xlib.rgb24.ref.png \ + unclosed-strokes.ref.png \ user-font-mask.image16.ref.png \ user-font-mask.pdf.ref.png \ user-font-mask.ps2.ref.png \ diff --git a/test/Makefile.sources b/test/Makefile.sources index ed5d7327..846d67b4 100644 --- a/test/Makefile.sources +++ b/test/Makefile.sources @@ -307,9 +307,10 @@ test_sources = \ twin-antialias-mixed.c \ twin-antialias-none.c \ twin-antialias-subpixel.c \ - unaligned-box.c \ + unaligned-box.c \ unantialiased-shapes.c \ unbounded-operator.c \ + unclosed-strokes.c \ user-data.c \ user-font.c \ user-font-mask.c \ diff --git a/test/unclosed-strokes.c b/test/unclosed-strokes.c new file mode 100644 index 00000000..3c0287f6 --- /dev/null +++ b/test/unclosed-strokes.c @@ -0,0 +1,83 @@ +/* + * 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 <chris@chris-wilson.co.uk> + */ + +#include "cairo-test.h" + +#define LINE_WIDTH 10. +#define SIZE (5 * LINE_WIDTH) +#define PAD (2 * LINE_WIDTH) + +static void +make_path (cairo_t *cr) +{ + cairo_move_to (cr, 0, 0); + cairo_rel_line_to (cr, -SIZE/2, SIZE); + cairo_rel_line_to (cr, SIZE, 0); + /* back to the start, but do not close */ + cairo_rel_line_to (cr, -SIZE/2, -SIZE); +} + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_save (cr); + cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ + cairo_paint (cr); + cairo_restore (cr); + + cairo_set_line_width (cr, LINE_WIDTH); + cairo_translate (cr, PAD + SIZE / 2., PAD); + + cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); + cairo_set_line_join (cr, CAIRO_LINE_JOIN_BEVEL); + make_path (cr); + cairo_stroke (cr); + + cairo_translate (cr, 0, SIZE + PAD); + + cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); + cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); + make_path (cr); + cairo_stroke (cr); + + cairo_translate (cr, 0, SIZE + PAD); + + cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); + cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER); + make_path (cr); + cairo_stroke (cr); + + return CAIRO_TEST_SUCCESS; +} + +CAIRO_TEST (unclosed_strokes, + "Test coincident end-points are capped and not joined", + "stroke caps", /* keywords */ + NULL, /* requirements */ + PAD + SIZE + PAD, + 3 * (PAD + SIZE) + PAD, + NULL, draw) + diff --git a/test/unclosed-strokes.ref.png b/test/unclosed-strokes.ref.png Binary files differnew file mode 100644 index 00000000..e42d0655 --- /dev/null +++ b/test/unclosed-strokes.ref.png |