From bd2c7eea028ed91db52f130919ee5820d0a7c52c Mon Sep 17 00:00:00 2001 From: Adrian Johnson Date: Mon, 21 Sep 2015 21:35:05 +0930 Subject: [PATCH 2/2] Add test case for thin lines Bug 77298 --- test/Makefile.sources | 1 + test/reference/thin-lines.pdf.ref.png | Bin 0 -> 371 bytes test/reference/thin-lines.ps.argb32.ref.png | Bin 0 -> 332 bytes test/reference/thin-lines.ps.rgb24.ref.png | Bin 0 -> 264 bytes test/reference/thin-lines.ref.png | Bin 0 -> 122 bytes test/thin-lines.c | 95 ++++++++++++++++++++++++++++ 6 files changed, 96 insertions(+) create mode 100644 test/reference/thin-lines.pdf.ref.png create mode 100644 test/reference/thin-lines.ps.argb32.ref.png create mode 100644 test/reference/thin-lines.ps.rgb24.ref.png create mode 100644 test/reference/thin-lines.ref.png create mode 100644 test/thin-lines.c diff --git a/test/Makefile.sources b/test/Makefile.sources index e4fedb4..24ded46 100644 --- a/test/Makefile.sources +++ b/test/Makefile.sources @@ -352,6 +352,7 @@ test_sources = \ text-rotate.c \ text-transform.c \ text-zero-len.c \ + thin-lines.c \ tighten-bounds.c \ tiger.c \ toy-font-face.c \ diff --git a/test/reference/thin-lines.pdf.ref.png b/test/reference/thin-lines.pdf.ref.png new file mode 100644 index 0000000000000000000000000000000000000000..3d79c8ea26303edd621ce74396c8c1e4c8f5e78a GIT binary patch literal 371 zcmeAS@N?(olHy`uVBq!ia0vp^E=9bFjZvu~fItQo-p)zuPXvMI^gF{9~}Zq0|0gbMp+9*tn(r z>GBUw^ejx{F-=|}>3miqXOha(IlIM+&P`}NDejwbEWo&Jmf@A2h2QFCl*Y2l7oT&w zd^cy7+xmj%I(zP4*YScYfSZstzc>H+=}kO#FMC*fL$jai@FaR^YA&64S!VZz{+r)x z=RME8ZNWWPVu4Go#4;CIi8U_$NhgGCTN=Hu^gZ;x(!r@1$gS4p@;`~mvqWCldy(~w z0-?XHof;R{&sZSz_sEf{FQnDBxNM*CLMYbI-~PBFx47rlYg2+WmsYoKSnyiC`B&^B n>;Ki$z^+C(3hvHtK{ND=Q`YZ}-1fa47>W#@u6{1-oD!M<<_(^% literal 0 HcmV?d00001 diff --git a/test/reference/thin-lines.ps.argb32.ref.png b/test/reference/thin-lines.ps.argb32.ref.png new file mode 100644 index 0000000000000000000000000000000000000000..48393116d6ee6cb2d0affc63e07a8eda2e997e0e GIT binary patch literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^E)z4*}Q$iB};*yC= literal 0 HcmV?d00001 diff --git a/test/reference/thin-lines.ps.rgb24.ref.png b/test/reference/thin-lines.ps.rgb24.ref.png new file mode 100644 index 0000000000000000000000000000000000000000..97f6f213ea9b8eef6ae615135d54dcc5371322ce GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^E7yiF@~XPI3Lb_jlGFyT0q{kErcZ@vp-kXWz}LSsUHE qzI64+t$C*Vt`RHA1avsi4c>D4GWsW~b~o<>aXnrAT-G@yGywp$-fJiT literal 0 HcmV?d00001 diff --git a/test/reference/thin-lines.ref.png b/test/reference/thin-lines.ref.png new file mode 100644 index 0000000000000000000000000000000000000000..49e2a3fdb0e207b7b6f26351438f2f06d9ea76a8 GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^EYvM=zW~U@1{&@&#Q$PooTzSC4wCkC^>bP0l+XkKmA4!2 literal 0 HcmV?d00001 diff --git a/test/thin-lines.c b/test/thin-lines.c new file mode 100644 index 0000000..c501254 --- /dev/null +++ b/test/thin-lines.c @@ -0,0 +1,95 @@ +/* + * Copyright © 2015 Adrian Johnson + * + * 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: Adrian Johnson + */ + +#include "cairo-test.h" + +#define CELL_WIDTH 20 +#define CELL_HEIGHT 20 +#define PAD 2 +#define IMAGE_WIDTH (CELL_WIDTH*3 + PAD*4) +#define IMAGE_HEIGHT (CELL_HEIGHT*4 + PAD*5) + + +static void +draw_lines(cairo_t *cr) +{ + /* horizontal line */ + cairo_translate (cr, PAD, PAD); + cairo_move_to (cr, 0, CELL_HEIGHT/2); + cairo_line_to (cr, CELL_WIDTH, CELL_HEIGHT/2); + cairo_stroke (cr); + + /* vertical line */ + cairo_translate (cr, 0, CELL_HEIGHT + PAD); + cairo_move_to (cr, CELL_WIDTH/2, 0); + cairo_line_to (cr, CELL_WIDTH/2, CELL_HEIGHT); + cairo_stroke (cr); + + /* diagonal line */ + cairo_translate (cr, 0, CELL_HEIGHT + PAD); + cairo_move_to (cr, 0, CELL_HEIGHT); + cairo_line_to (cr, CELL_WIDTH, 0); + cairo_stroke (cr); + + /* curved line */ + cairo_translate (cr, 0, CELL_HEIGHT + PAD); + cairo_move_to (cr, CELL_WIDTH, 0); + cairo_curve_to (cr, 0, 0, + CELL_WIDTH, CELL_HEIGHT, + 0, CELL_HEIGHT); + cairo_stroke (cr); +} + +#define FIXED_POINT_MIN (1.0/256) + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_save (cr); + cairo_set_line_width (cr, FIXED_POINT_MIN*10.0); + draw_lines (cr); + cairo_restore (cr); + + cairo_translate (cr, CELL_WIDTH + PAD, 0); + cairo_save (cr); + cairo_set_line_width (cr, FIXED_POINT_MIN); + draw_lines (cr); + cairo_restore (cr); + + cairo_translate (cr, CELL_WIDTH + PAD, 0); + cairo_save (cr); + cairo_set_line_width (cr, FIXED_POINT_MIN/10.0); + draw_lines (cr); + cairo_restore (cr); + + return CAIRO_TEST_SUCCESS; +} + +CAIRO_TEST (thin_lines, + "Tests that very thin lines are output to vector surfaces", + "stroke", /* keywords */ + NULL, /* requirements */ + IMAGE_WIDTH, IMAGE_HEIGHT, + NULL, draw) -- 2.1.4