From 953a4a2e55e304be4ec1f91aec5131edd02f53f3 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Tue, 2 Aug 2011 14:35:36 +0100 Subject: [PATCH] test: Add an test case to exercise overlapping caps between dash segments Signed-off-by: Chris Wilson --- test/Makefile.refs | 1 + test/Makefile.sources | 1 + test/overlapping-dash-caps.c | 58 +++++++++++++++++++++++++++++ test/overlapping-dash-caps.ref.png | Bin 0 -> 3127 bytes 4 files changed, 60 insertions(+) create mode 100644 test/overlapping-dash-caps.c create mode 100644 test/overlapping-dash-caps.ref.png diff --git a/test/Makefile.refs b/test/Makefile.refs index 1d383ef47..4f15f09e5 100644 --- a/test/Makefile.refs +++ b/test/Makefile.refs @@ -861,6 +861,7 @@ REFERENCE_IMAGES = \ over-between-source.svg12.rgb24.xfail.png \ over-between-source.xlib.ref.png \ over-between-source.xlib.rgb24.ref.png \ + overlapping-dash-caps.ref.png \ overlapping-glyphs.argb32.ref.png \ overlapping-glyphs.pdf.argb32.xfail.png \ overlapping-glyphs.pdf.rgb24.xfail.png \ diff --git a/test/Makefile.sources b/test/Makefile.sources index a965a2d02..f6090df9e 100644 --- a/test/Makefile.sources +++ b/test/Makefile.sources @@ -198,6 +198,7 @@ test_sources = \ over-below-source.c \ over-between-source.c \ overlapping-glyphs.c \ + overlapping-dash-caps.c \ paint.c \ paint-clip-fill.c \ paint-repeat.c \ diff --git a/test/overlapping-dash-caps.c b/test/overlapping-dash-caps.c new file mode 100644 index 000000000..0d06d117a --- /dev/null +++ b/test/overlapping-dash-caps.c @@ -0,0 +1,58 @@ +/* + * 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 SIZE 100 + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + double dashes[] = {20, 10}; + + cairo_set_source_rgb (cr, 1, 1, 1); + cairo_paint (cr); + + cairo_set_source_rgba (cr, 0, 0, 0, 0.5); + + cairo_new_sub_path (cr); + cairo_arc (cr, SIZE/2, SIZE/2, SIZE/2-10, 0, 2*M_PI); + + cairo_set_dash (cr, dashes, 2, 0); + cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); + cairo_set_line_width (cr, 15); + + cairo_stroke (cr); + + return CAIRO_TEST_SUCCESS; +} + +CAIRO_TEST (overlapping_dash_caps, + "Test intersections between neighbouring dash segments", + "overlap, dash", /* keywords */ + NULL, /* requirements */ + SIZE, SIZE, + NULL, draw) diff --git a/test/overlapping-dash-caps.ref.png b/test/overlapping-dash-caps.ref.png new file mode 100644 index 0000000000000000000000000000000000000000..13d1664f535bfed8651a8e630ea89de573633404 GIT binary patch literal 3127 zcmV-749N3|P){~As7Nuv*fN(d+@qR@zI2qG&hOCS)iVp~8$Dpq%Q_w(n^*=GN0*hAB_<})Zh^j7Jv}{bZEYk;((XI-U>K&=YO}Mm=~bsA7DZ7V9UWa= zUG%yPJEu>dK7IN$jf&7>ktEsD($e4GPop#LaP;U=tyYVoC{!&tu}G3^XlNK38iKTq zi)3VEl$4Y}=>@UsKvC3_Cr_9wB@&4o4u|((hhdm|MIj<0V%M%+?q`r6oR}9~Bi96BEPZ z`LkqgZEb#j-e@$Ajg1+NMu)?JAP9zGVzJn2wbC}Gr>93O7N0tG3e%ucf7h zwpr_)p=d!tK~7E%!*=X;yTjp-NF*qV-nenYWHK>n?fm)kfKyhWWeuaz`1I*hCI%r0 zB9TZ+OG}w6g&>GXB$7&{IF4f&R$5vr7K@p**4o-SF);yBGVqmUx7%;tya~RZxf!8Q zn46oMot?dF*Dl(P_+epT;oiM_Oe~C!j;^h(jfjZwUo5a#_4V~%zka1>1d5_=S5_jC z&}#t@o6XkN);2geNV|p9)YPh~D*q410Ah`gkKeg-hhFz0k*K7kBt1QyUUeFL{ra`3 zsfo5fUszap^ypDP1pdS@F$kZWTN3Y=H%p5R8;t% zHw6_Qk5^t^PVce%`SWK#%e?-?T3cI#?JPSxn}*NDIt9$+W_2#es5{sg!j~_n*b}y63u3WjI zR4M_>hZl)NQdLz2zDw!Fix->c5Pyj^F)?AWSOA+_TwMI~=MP|EE}&E@%gf8bS3Yz) zozG13FR{LT`v%@OhGAi!e8Q5NntJWpwbr@m&-Xds{%wK zk$`(9+lsZiy6R{0x|xK81n|P#!Rd5@htPli{OSF;+YrlWG(tsCXm}D_0P1caNz!OE zZq)Vs1-K6FMl2Sq)oSqa+=0jAK`q;QyD=ML&CSh$H=$OmciiaiL7`B97xrGU*$@jV zptM6TD>qQaFDxv0{$3YrZEbCFaS^(JC5Tr znGDK4P7xOu2R_V`BxyFA-G8swf!dH36B85cP1HdJ$8o6mfJdBlv7o|7JNmM612~Cy zY+pS60}MvM~orEZ-~ZA0VuY1$D7_ zF3X(@)KBn;Lq{yAdzPC(iRHOxF`xfIu-on6g}DjTPw>66pu}RbZHyy8Il{hIR#a3J zcx9nb2ws?jz&gSnan{9>$zS1(r6l&h!eLnH8L0zd-Ub%7wpTB(h0#zmScn6k2P^;COr|4Ta&nHftfHmduzuH{I zVR3Qsb`IaRtD`9?Dd49Py!r6q!-EG8!nlUxa=Gg3>py(>09%pI=U={jdC#6b+ZFJ4 zM%rexUB7;v-jUmR`RUF_zd4GTZD%j@8Bx%7IyPN$>2xCXvg3n&-O z^z`)Y+qapF*%FCFsZ^>|s?5wxwstHz9FD%ezPE4R{{H=&Njnu46@Vca(8N7@z5dCQ zCroT|BM=A(g2>3oNKQ_scbbKwsIjrJfq{YH;bG=Wwej)sH8nMW11m(bF`Z5ab;8v@ z0)ZeoIXNXIMWs^3#l-A6ciK$H$kF@j*gC3uU^rp$OX=vIg^{4OQRzFq^^3s{@Jreu9~h+zo}HcT=;+{nVr4fnnXICs!jGRE5Eim_&&|#K{Q1*jvG91jj~_oW zOjj5r4jed8TwKg>KFo6R{7;`gH8wV~*dTL6BGG^U{l`j*bC#D-G#bt8*RR9!rh(0% zD4LOxk(Zap*6us@-(j(|v~>6G-LT(`2?+`3&YffTTx3w*j$*Z18yg$P#>QB08H9v{ zgxuWRw6rwVm(qgxDj9>p(B0iVF)