From c7bb16fcd9675395d5296a3e729bf5eb910cf8f8 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Fri, 9 Jan 2015 12:11:41 -0800 Subject: [PATCH] amend/partially revert #2609 --- include/mapnik/svg/svg_converter.hpp | 2 + include/mapnik/svg/svg_path_attributes.hpp | 8 ++ src/marker_helpers.cpp | 69 +++++++++------- tests/data/svg/rect-no-fill.svg | 10 +++ tests/data/svg/rect-no-stroke.svg | 10 +++ ...g-with-box-600-400-1.0-grid-reference.json | 68 +++++++-------- ...g-with-box-600-400-2.0-grid-reference.json | 78 +++++++++--------- ...marker-svg-500-100-1.0-grid-reference.json | 37 +++++++++ ...marker-svg-500-100-2.0-grid-reference.json | 35 ++++++++ ...svg-with-box-600-400-1.0-agg-reference.png | Bin 4346 -> 3930 bytes ...g-with-box-600-400-1.0-cairo-reference.png | Bin 9427 -> 7350 bytes ...svg-with-box-600-400-2.0-agg-reference.png | Bin 5231 -> 4711 bytes ...g-with-box-600-400-2.0-cairo-reference.png | Bin 10483 -> 7354 bytes .../marker-svg-500-100-1.0-agg-reference.png | Bin 0 -> 275 bytes ...marker-svg-500-100-1.0-cairo-reference.png | Bin 0 -> 357 bytes .../marker-svg-500-100-2.0-agg-reference.png | Bin 0 -> 243 bytes ...marker-svg-500-100-2.0-cairo-reference.png | Bin 0 -> 293 bytes ...-svg-opacity-500-100-1.0-agg-reference.png | Bin 271 -> 229 bytes ...-svg-opacity-500-100-2.0-agg-reference.png | Bin 295 -> 261 bytes ...vg-opacity-500-100-2.0-cairo-reference.png | Bin 360 -> 317 bytes tests/visual_tests/styles/marker-svg.xml | 58 +++++++++++++ 21 files changed, 272 insertions(+), 103 deletions(-) create mode 100644 tests/data/svg/rect-no-fill.svg create mode 100644 tests/data/svg/rect-no-stroke.svg create mode 100644 tests/visual_tests/grids/marker-svg-500-100-1.0-grid-reference.json create mode 100644 tests/visual_tests/grids/marker-svg-500-100-2.0-grid-reference.json create mode 100644 tests/visual_tests/images/marker-svg-500-100-1.0-agg-reference.png create mode 100644 tests/visual_tests/images/marker-svg-500-100-1.0-cairo-reference.png create mode 100644 tests/visual_tests/images/marker-svg-500-100-2.0-agg-reference.png create mode 100644 tests/visual_tests/images/marker-svg-500-100-2.0-cairo-reference.png create mode 100644 tests/visual_tests/styles/marker-svg.xml diff --git a/include/mapnik/svg/svg_converter.hpp b/include/mapnik/svg/svg_converter.hpp index 14378b9b7..ddde41d82 100644 --- a/include/mapnik/svg/svg_converter.hpp +++ b/include/mapnik/svg/svg_converter.hpp @@ -255,11 +255,13 @@ public: } void fill_none() { + cur_attr().fill_none = true; cur_attr().fill_flag = false; } void stroke_none() { + cur_attr().stroke_none = true; cur_attr().stroke_flag = false; } diff --git a/include/mapnik/svg/svg_path_attributes.hpp b/include/mapnik/svg/svg_path_attributes.hpp index c6ceaf801..29194ba70 100644 --- a/include/mapnik/svg/svg_path_attributes.hpp +++ b/include/mapnik/svg/svg_path_attributes.hpp @@ -50,7 +50,9 @@ struct path_attributes agg::line_join_e line_join; agg::line_cap_e line_cap; bool fill_flag; + bool fill_none; bool stroke_flag; + bool stroke_none; bool even_odd_flag; bool visibility_flag; bool display_flag; @@ -71,7 +73,9 @@ struct path_attributes line_join(agg::miter_join), line_cap(agg::butt_cap), fill_flag(true), + fill_none(false), stroke_flag(false), + stroke_none(false), even_odd_flag(false), visibility_flag(true), display_flag(true) @@ -94,7 +98,9 @@ struct path_attributes line_join(attr.line_join), line_cap(attr.line_cap), fill_flag(attr.fill_flag), + fill_none(attr.fill_none), stroke_flag(attr.stroke_flag), + stroke_none(attr.stroke_none), even_odd_flag(attr.even_odd_flag), visibility_flag(attr.visibility_flag), display_flag(attr.display_flag) @@ -115,7 +121,9 @@ struct path_attributes line_join(attr.line_join), line_cap(attr.line_cap), fill_flag(attr.fill_flag), + fill_none(attr.fill_none), stroke_flag(attr.stroke_flag), + stroke_none(attr.stroke_none), even_odd_flag(attr.even_odd_flag), visibility_flag(attr.visibility_flag), display_flag(attr.display_flag) diff --git a/src/marker_helpers.cpp b/src/marker_helpers.cpp index 8273acf39..d1f7cc2bb 100644 --- a/src/marker_helpers.cpp +++ b/src/marker_helpers.cpp @@ -76,41 +76,50 @@ bool push_explicit_style(svg_attribute_type const& src, bool success = false; for(unsigned i = 0; i < src.size(); ++i) { - success = true; dst.push_back(src[i]); mapnik::svg::path_attributes & attr = dst.last(); - if (stroke_width) + if (!attr.visibility_flag) + continue; + success = true; + + if (!attr.stroke_none) { - attr.stroke_width = *stroke_width; - attr.stroke_flag = true; + if (stroke_width) + { + attr.stroke_width = *stroke_width; + attr.stroke_flag = true; + } + if (stroke_color) + { + color const& s_color = *stroke_color; + attr.stroke_color = agg::rgba(s_color.red()/255.0, + s_color.green()/255.0, + s_color.blue()/255.0, + s_color.alpha()/255.0); + attr.stroke_flag = true; + } + if (stroke_opacity) + { + attr.stroke_opacity = *stroke_opacity; + attr.stroke_flag = true; + } } - if (stroke_color) + if (!attr.fill_none) { - color const& s_color = *stroke_color; - attr.stroke_color = agg::rgba(s_color.red()/255.0, - s_color.green()/255.0, - s_color.blue()/255.0, - s_color.alpha()/255.0); - attr.stroke_flag = true; - } - if (stroke_opacity) - { - attr.stroke_opacity = *stroke_opacity; - attr.stroke_flag = true; - } - if (fill_color) - { - color const& f_color = *fill_color; - attr.fill_color = agg::rgba(f_color.red()/255.0, - f_color.green()/255.0, - f_color.blue()/255.0, - f_color.alpha()/255.0); - attr.fill_flag = true; - } - if (fill_opacity) - { - attr.fill_opacity = *fill_opacity; - attr.fill_flag = true; + if (fill_color) + { + color const& f_color = *fill_color; + attr.fill_color = agg::rgba(f_color.red()/255.0, + f_color.green()/255.0, + f_color.blue()/255.0, + f_color.alpha()/255.0); + attr.fill_flag = true; + } + if (fill_opacity) + { + attr.fill_opacity = *fill_opacity; + attr.fill_flag = true; + } } } return success; diff --git a/tests/data/svg/rect-no-fill.svg b/tests/data/svg/rect-no-fill.svg new file mode 100644 index 000000000..d4b32c644 --- /dev/null +++ b/tests/data/svg/rect-no-fill.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/data/svg/rect-no-stroke.svg b/tests/data/svg/rect-no-stroke.svg new file mode 100644 index 000000000..06d034275 --- /dev/null +++ b/tests/data/svg/rect-no-stroke.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/visual_tests/grids/marker-on-line-svg-with-box-600-400-1.0-grid-reference.json b/tests/visual_tests/grids/marker-on-line-svg-with-box-600-400-1.0-grid-reference.json index 9528a7dac..40618aff4 100644 --- a/tests/visual_tests/grids/marker-on-line-svg-with-box-600-400-1.0-grid-reference.json +++ b/tests/visual_tests/grids/marker-on-line-svg-with-box-600-400-1.0-grid-reference.json @@ -69,40 +69,40 @@ " ", " ", " ", - " !!!!!! ", - " !!!!!!!!!!! !", - " !!! !!!!!! !!!!! ", - " !! !!!!!! !!!!! !!!!! ", - " ! !!!!! !!!!!!!!!!!! !!!!! ", - " !!!!! !!!!!!!!!!!! !!!!! ! ", - " !!!!! !!!!! !!!!!! !!!!! !! ", - " !!!! !!!!! !!!!!! !!!!! !!! ", - " !!! !!!!! !!!!! !!!!!! !!!! ", - " ! !!!!!! !!!!!!!!!!!! !!!!! ", - " !!!!!! !!!!!!!!!!! !!!!!! ", - " !!!!!!!!!!!! !!!!! !!!!!! ! ", - " !!!! !!!!!! !!!!! !!!!! !!! ", - " !!! !!!!!! !!!!! !!!!! !!!! ", - " !! !!!!! !!!!!! !!!!! !!!!! ", - " ! !!!!! !!!!!!!!!!!! !!!!! ", - " !!!!! !!!!! !!!!!! !!!!! ! ", - " !!!!! !!!!! !!!!!! !!!!! !! ", - " !!!! !!!!! !!!!! !!!!!! !!! ", - " !!!!!!!!! !!!!! !!!!!! !!!! ", - " ! !!!!!! !!!!!!!!!!! !!!!!! ", - " !!!!!! !!!!!!!!!!! !!!!!! ", - " !!!!! !!!!!! !!!!! !!!!! !! ", - " !!!! !!!!!! !!!!! !!!!! !!! ", - " !!! !!!!! !!!!!! !!!!! !!!! ", - " !! !!!!! !!!!!! !!!!! !!!!! ", - " ! !!!!! !!!!!!!!!!!! !!!!! ", - " !!!!! !!!!! !!!!!! !!!!! ! ", - " !!!!! !!!!! !!!!! !!!!!! !! ", - "!!!!!! !!!!! !!!!!! !!! ", - " !!!!! !!!!! !!!!! ", - "!!!!!! !!!!!! ", - " !!!!! ! ", - " !! ", + " !!! ", + " !!! !!!! !", + " ! !!!! !!!!! ", + " !!! !!!!! !! ", + " !!! !!!!!!!!!! ", + " !!! !!!!!!!!!! ! ", + " !!! !!! !!!! !!! ", + " !! !!!! !!!! !!! ", + " !!! !!!! !! ", + " !!! !!!!!! !!! ", + " !!! !!!!!!!!! ! ", + " !!! !!!! !!!! !! ", + " !! !!!! !!!!! !! ", + " ! !!!! !!!!! !! ", + " !!! !!!!! !! ", + " !!! !!!!!!!!!! ", + " !!! !!!! !!!! !! ", + " !!! !!!! !!!! !! ", + " !! !!!! !!!!! !! ", + " !!! !!!!! !! ", + " !!! !!!!!! !!! ", + " !!! !!!!!!!!! ! ", + " !!! !!!! !!!! !! ", + " !! !!!!! !!!!! !! ", + " ! !!!! !!!!! !!! ", + " !!! !!!!! !!! ", + " !!! !!!!!!!!!! ", + " !!! !!!! !!!! !! ", + " !!! !!!! !!!!! !! ", + " !!!! !!!!! !! ", + " !!!!! !! ", + "!!!!! ", + " ! ", + " ", " ", " " ] diff --git a/tests/visual_tests/grids/marker-on-line-svg-with-box-600-400-2.0-grid-reference.json b/tests/visual_tests/grids/marker-on-line-svg-with-box-600-400-2.0-grid-reference.json index 8785b859c..f71a076f3 100644 --- a/tests/visual_tests/grids/marker-on-line-svg-with-box-600-400-2.0-grid-reference.json +++ b/tests/visual_tests/grids/marker-on-line-svg-with-box-600-400-2.0-grid-reference.json @@ -66,44 +66,44 @@ " ", " ", " ", - " ! ", - " !!!!!!! ", - " !!!!!!!!!!! ", - " !!!! !!!!!!!!!! ", - " !!!!!!!!! !!!!!!!!!! !", - " !! !!!!!!!!!!! !!!!!!!!!! ", - " !!!!!!! !!!!!!!!!!! !!!!!!!!!!! ", - " !!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!! !!!!!!!!!!! !!!!!!!!!! !!!!!!!!!! ", - " !!!!!!!!!! !!!!!!!!!!! !!!!!!!!!! !!!!!!!!!! ", - " !! !!!!!!!!!! !!!!!!!!!!! !!!!!!!!!!! !!!!!!!!! ", - " !!!!!!!! !!!!!!!!!! !!!!!!!!!! !!!!!!!!!!! !!!! ", - " !!!!!!!!!!! !!!!!!!!!!!! !!!!!!!!!! !!!!!!!!!! ", - " !!!!! !!!!!!!!!! !!!!!!!!!!! !!!!!!!!!!! !!!!!! ", - " !!!!!!!!!!! !!!!!!!!!! !!!!!!!!!!! !!!!!!!!!!! ! ", - " !!! !!!!!!!!!!! !!!!!!!!!! !!!!!!!!!! !!!!!!!!! ", - " !!!!!!!! !!!!!!!!!!! !!!!!!!!!!! !!!!!!!!!! !!! ", - " ! !!!!!!!!!! !!!!!!!!!!! !!!!!!!!!!! !!!!!!!!!!! ", - " !!!!!! !!!!!!!!!!! !!!!!!!!!! !!!!!!!!!! !!!!!! ", - " !!!!!!!!!! !!!!!!!!!!! !!!!!!!!!!!! !!!!!!!!!! ", - " !!! !!!!!!!!!! !!!!!!!!!!! !!!!!!!!!!! !!!!!!!! ", - " !!!!!!!!! !!!!!!!!!! !!!!!!!!!! !!!!!!!!!!! !!! ", - " ! !!!!!!!!!!! !!!!!!!!!!! !!!!!!!!!! !!!!!!!!!! ", - " !!!!!! !!!!!!!!!! !!!!!!!!!!! !!!!!!!!!!! !!!!! ", - " !!!!!!!!!!! !!!!!!!!!! !!!!!!!!!!!! !!!!!!!!!!! ", - " !!!! !!!!!!!!!!! !!!!!!!!!! !!!!!!!!!! !!!!!!!! ", - " !!!!!!!!! !!!!!!!!!!! !!!!!!!!!!! !!!!!!!!!! !! ", - " !! !!!!!!!!!! !!!!!!!!!! !!!!!!!!!!! !!!!!!!!!! ", - " !!!!!!! !!!!!!!!!!! !!!!!!!!!! !!!!!!!!!! !!!!! ", - " !!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!! ", - " !!!!!!!!!! !!!!!!!!!!! !!!!!!!!!!! !!!!!!! ", - " !!!!!!!!!! !!!!!!!!!! !!!!!!!!!!! !! ", - " !!!!!!!!!!! !!!!!!!!!! !!!!!!!!! ", - " !!!!!!!!!!! !!!!!!!!!!! !!!! ", - "! !!!!!!!!!! !!!!!!!!!!! ", - " !!!!!!!!!! !!!!!!! ", - " !!!!!!!!!! ! ", - " !!!!!!!!! ", - " !!!! " + " ", + " !!! ", + " !!!!!! ", + " !!!!! ", + " !!!!!! !!!!!!! !", + " !!!!!! !!!!!!!!! ", + " !!! !!!!!!!! !!!!!!!! ", + " !!!!!! !!!!!!!!!!! !!!!!!! ", + " ! !!!!!!! !!!!!!!!! !!!! ", + " !!!!! !!!!!!!! !!!!!!!! !! ", + " !!!!!! !!!!!!!!! !!!! ", + " !!!! !!!!!!! !!!!!!! !!!! ", + " !!!!!! !!!!!!!!!! !! !!!! ", + " ! !!!!!!!! !!!!!!!!! !!!!! ", + " !!!!!! !!!!!!!! !!!!!!!! ! ", + " !!!!! !!!!!!!!! !!!!! ", + " !!!! !!!!!!! !!!!!!! !!!! ", + " !!!!! !!!!!!!!!! ! !!!! ", + " !! !!!!!!! !!!!!!!!! !!!! ", + " !!!!!! !!!!!!!! !!!!!!!!! ", + " !!!!!! !!!!!!!!!! !!!! ", + " !!!!! !!!!!!! !!!!!! !!! ", + " !!!!!! !!!!!!!!!! !!!! ", + " !! !!!!!!!! !!!!!!!!! !!!!! ", + " !!!!!! !!!!!!!! !!!!!!!!! ", + " !!!!! !!!!!!!!! !!!!! ", + " !!!!! !!!!!!! !!!!!! !!! ", + " !!!!!! !!!!!!!!! !!!! ", + " !!! !!!!!!!! !!!!!!!! !!!! ", + " !!!!!! !!!!!!!!!!! !!!!!!! ", + " !!!!!! !!!!!!!!!! !!!! ", + " !!!!!!! !!!!!!! !! ", + " !!!!!!!!!! !!!!! ", + " !!!!!!!! !!!!! ", + "! !! !!! ", + " !!!!! ", + " ! ", + " ", + " " ] } \ No newline at end of file diff --git a/tests/visual_tests/grids/marker-svg-500-100-1.0-grid-reference.json b/tests/visual_tests/grids/marker-svg-500-100-1.0-grid-reference.json new file mode 100644 index 000000000..dbc0b5f97 --- /dev/null +++ b/tests/visual_tests/grids/marker-svg-500-100-1.0-grid-reference.json @@ -0,0 +1,37 @@ +{ + "keys": [ + "", + "4", + "3", + "2", + "1" + ], + "data": {}, + "grid": [ + " ", + " ", + " ", + " !!!!! ", + " !!!!! ", + " !!!!! ", + " !!!!! ", + " !!!!! ", + " #### ", + " #### ", + " #### ", + " #### ", + " ", + " ", + " $$$ ", + " $$$ ", + " $$$ ", + " ", + " %%%% ", + " %%%% ", + " %%%% ", + " %%%% ", + " ", + " ", + " " + ] +} \ No newline at end of file diff --git a/tests/visual_tests/grids/marker-svg-500-100-2.0-grid-reference.json b/tests/visual_tests/grids/marker-svg-500-100-2.0-grid-reference.json new file mode 100644 index 000000000..8f06b3cd2 --- /dev/null +++ b/tests/visual_tests/grids/marker-svg-500-100-2.0-grid-reference.json @@ -0,0 +1,35 @@ +{ + "keys": [ + "", + "3", + "1" + ], + "data": {}, + "grid": [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " !!!!!!! ", + " !!!!!!! ", + " !!!!!!! ", + " !!!!!!! ", + " !!!!!!! ", + " !!!!!!! ", + " !!!!!!! ", + " ", + " ", + " ", + " ####### ", + " ####### ", + " ####### ", + " ####### ", + " ####### ", + " ####### ", + " ####### ", + " " + ] +} \ No newline at end of file diff --git a/tests/visual_tests/images/marker-on-line-svg-with-box-600-400-1.0-agg-reference.png b/tests/visual_tests/images/marker-on-line-svg-with-box-600-400-1.0-agg-reference.png index 0f77bda96ec97eaf70078df2e709d19e345388be..de22a5c3a6a5b116a65845cc89077b0e6cac58ff 100644 GIT binary patch literal 3930 zcmeHKc{r5o-yi$VSWhElvNOdY=NzPrEF*;&8v0FYI!TQpktJjq8C#U>CdxR&7&=q= zCF_wHVaS;&BiZVdWh^Y|QBhD@8q`AOyv*cgXG6us5WRAp zQM)tslr#B)+t>*G-NISy;Idc{#Nlwc5X9wv9A2N8fWWT-77+%6DPD4OLSv)L7AVA9 z@4A&;E`IL66E>_5f0l&$y)=aIs*7|^eg%SXMa>8Cv$Onn)q|05XugZ@FFdr#!6uCH zMi?;p;He#v3J;1@#woc?|r;_M6D(Nv$?`TF&%4pX=5O~q;R+uK7*os)`tX+J@!IQZw_KWS6( z!7-iO8U?b%k9Q^GubxdSxaD!x0o9J#z(Sf)hj;!N>)aQ(y-;}jpOvFqles>7;T&_` z>Vfn%f$y{F;aLChD`JEVgOdzsr}4#XPvGsgjVZP3VkAKcQVLu8d3rBR=WI*k%P|TK zF84~Sk1P(1Msq9g78WKwJI$4naS6kv%5v59e5=jZ3o)}jR!bN0Aj1JG7g73Fb1gq> zXSw;wr@}Qfs{MJNv=p`(_2|GyrIRah>yskzTE_<>zH?!4uZEQx{@l*r^K0!#6$-_4 z{Zfr@kUG!*T+!4%JLwZrnsneYL0gPYGany~yK&rO+;{P*1k=|9b(;vD?ivXjtB~)oAaTEsiBioWY9t{#>pp zR}HU?<=r5ibFl8Cxrourn%m*TQ`9Nx&cx&0G!;=(19F4Dp#-*-Se`I)LIWt4V)RVc zq0nnzUweem*Yx2;H|eN#K>0)at+4o&^Ya()MfFH93rJyUf$xiGIrS6caqB#?h&rJ| z@sncvqaWuG+qXx=Y$_a4?~$XQhE9Dd^*OzOz$=1667GkxX21Ast;H8q$X7oIEs-Lq zCs~eaeEoX_zxDN4;LYX4<1z$w^kZCW9R1dURa=({nz0|FLd^A~L`HijZoY_z#Y+ML%8064w?bZV}-ua7x zPA_tv3;hl442maZ4NDbghV&>^?;P%6x6@L!sm8=05G5GTnj$H6nxT z$?r<_6Y+>!{`2@=7&F98rdr3oEn({`=X8u1Xj|v1L&HOE6u)ZXQyOlE40dW_iE^XR` zmz7)hT*FE64w2V4J}#{dw5OYAws0OhFb*s3duiwz-FAI;OUgW9?|09H!pS6D%>2=C zb|vHV_ne{WnkNWw3NI_SiKDoo4^uG@hj-PrdpS4jP73!xXLl8!6R!q1MDlJA$DkQH zy;`5b_6P!M&4tC;^H>=->jtB;eSrKxWbm8Cc*7ms@6N&{{ER1podQO~a_@*bq(%r= z0z1}*IBk=x!kSf9sJ^rDF8D4yzVP^xp5L-0om=1VtuT91dQAd*Tr0imjD{#ZVdz8h zx9~S&gw&i1fK0uk2FFyua_g;G86Q1S{gU+PAx(mFm{9>iEdMv60&{<(D$)9(=jCQT z+$`CZ*|ltP)gcw9YzjBCsnF!mo{Qu!pWOCN!8J{8FGU|=*UUIYtC|&fBKhgnCsF;C zjMvL1EL&yu^eUO^$6y;MRy;QGM@=?qdAZ?OX&J29$U6L3O%or^xpRf38Bxb{i}usd^9u(h_xFNR zoC`R{@b^!|6@$*K&E(+3{2?&9XO?NW-b8w2(c6aKGQjO8+L|$@@#_lZnnO{SIqi`y9jZt z+-E9*qF*69=_8KK{QR6C;Ik8t_tB)QHC{6a*-^qGd-{z17+{zMSrpvsxa0EGU0|HV zo+2`MF_ODjy9$mxI6#x^8Wpxj?Ae2twcEfF<5zB#TUIzS3@TOKW1fvIHRgFP)W@fx z&83B zbC7NX6P=6Ny+X03@YOw6|HX&XHoKl0g3P7I=Z6B!${kT@htfp`Kc3<{4h7hi@2?2Q ztY@hYDD!ikex3H=X(yCrXx-n>UpmE~ySs4y2-{jw@j2VuzIXEzJF|4;kBK11*UZT3 zLJE%V>i=ZG=f#V{qmhMM=5mR+o%b14vjM`pamkqI71pRmZ{|lour~gMT(uCew^i9a zT9rkYJ9#z&?mp7+)4vB&6MLmf`VZPMmz($&T}D@!;b2l6qY^xp$b1UK+AGwaDT|S; z)c@$L3HG7p>Jk%h{=U{fGW{+fedj!F51UBa8nfD4Y9{K9bkqf8f#>~{)v?XrZ@4_mG>zLDGTG7g z+S7yHylMZZP35q&ZJ|9#QdXZM@KIJ8gai2iG;$4Pf+>$EH3n)rI<|JN zyDU$cW3YjaZT}xJqs7XiGOdZJ_I9V+PEMEaojyhBK-j;_Hpr+#@C@L!5rpz5hupK@ z%=DmREy=#NF)`EYSr2unMk%xZOVvfYK`O2Wrm1%wJL7ElhQC zWKekW>H~x}v+VvJ>h01hUeK!dEE-%60`z7Z=TTOR6@vBjym#)nAlz7Q@q{EZq+5ZP zhF84!1rQe~*q~z@IU>voXF~2cg)1j7toiZ@MV^>dEEu6B**e<<-E^q3aF4LLx83r* zK`UE=je#Dn>0BV>~69wqGO!o4ft$P-*=$nIOfI3EwSwmFv;{ftT`YS%yKKS;}g( zkv^e+TdeODNf$pXla9Lq!Jg$Js74Wv`}w0s|3Fct1T~c0Yj+~jo7lF_xkp-6c?S8J z1}FekjdW~cy};EzivZ77+@%>(M7ka`XpR)&rcR*j$NW4GByED*T$Aot6M!9L1@w=| z2=2?WP3wUgneH28M0M9N@S9&b@EjO8D(*O)0lQ0!0Cts-{~m-+W;B#}Uck|VH+i;5yf+oci;epnc8`*K(7zg&ISU{ggahq>#W~a04bV=hnOR{1{{<_gWfKN@&j}4IEugV8IBtBe{`J0qL4y5g|Vcq9jqhl3>&SQ)wq4OqF>!xGV zmoh@k0tk>{muOLkK7i7EG7M0}||_gMO$*s;Y{gKj{2}?ie1V z^)Tmyv=%Cv9+)Ci4N5NDNyBV&gC`?nsYj6Ee9)zMV1~YAHau2U`PDGp*+?H_%my+q z*h7W-Rz}9Yqy}vZK>JOFEZq)zfFbvUUf+z~u9>DBw0bVr!$?2)G6~VTPl#|k^eSsy zmM0*QA~estOvE@E>3`u$TWtb(ks|<#3oO!Iinubo^D5aEm8#TEeGq1ZNfY8cauxG} zNeId+%n(3q2^~V8E2@YTG;$(pY~D4gWRG$tLVNih+jcHTq#+4+P8576kR=Ss-__r2 or*u3uVV+kvh5c_Iek4e&!EZrKyvM2wd@RG7m2%Q1@2@3T7Rdmg{v!`?*O;0SZ!L3n~6jQanIPN> zNuKW@&r?+pD=7iCN_=M}p2k}7x^;lMI)K#RYik1=wZ(dRfV)25OP^<80GJtyjf?;j z695hec9@H|Z3BoFydX>d_U(X;4Pb8%I5`2kcLS&P@b>Nn$b0z*4gdkZVjK?0J;)0T z1hND9mk;yukMM~^;94jzA_6Fk;FFJwqoaYC7=RYTKNBlXPZFo30Qb^)Ef@F~F9Oet zd0i#^sw&{l9iWpfZf^(Xf91__`2ddx@cD1v0O04&&FumyDYXIjJt)6ZC6lGc6ZN@T znSIZE^j!OYI_c5nc`NQ5+ugVX8LDSh93TXMeN_B(t$k~F{GSow;Zt8dO+yp|+Z%en z^jw>R#!9Wpz6Hn`9)PUfk2JTEX8kJ5k)RWPeQO5| zl7E*bqVy5zJ27>|#@ZP^Q;rJ*wnLV{=S?ibt1;uRi(anIJoBd#?x_%8OifLNQRI#@ zxo4K1`KP2bo<1>fpUWs=95&K!_Kq^EwdLB5`%mX{`t5P&2(O-CmjFIwWlCwOOzR&XT>PSQI>SS4tsBL*?k*^koYWY>hM$T_!+5eHPWsZuMPER6C z5@xAUn{GpcM;E5N54PNicV3#)(Yay}&QTe@T{14in2rCk5Ki^Y@4guvh^fEL+ow-F zcjLvrz(Yvfpk@2&(WMgh!=xF}pZrY1aM*%+-zF?|PSpD;ZlQ#oJWrm>U8KlGG4k&V zQzPU32Un~Hl0N3B4b}w@Y}USC$`{YKttVOJawq@~v%?mZlSy&A*RBE__w^tW(rGefFtz?}wGIAr0cK&(%VaEz6X|#w1KoyTjW9)2gf} z)l&9@5n6EG)-??7+uCQ6;v<#m+SAc$rTs|{q&XfC9J1wkby#cu{mj(JFRQDsYF-rS zBbnQ8y-*L3VH|g0%t6c$6G#4U1u;RdBC$tUAJt{-%i_49y`_AA0d*|03?ymeuQs>{@s6EPmNp> z?xOjm5xj@bs*f9%_0#V>)3_>4omHEZC%T=3U}4eXZSB*;$z{JFt7KW_$Oma%agU>y zV;3Yv|1Jj>fl$7RpnD{^#0gS8lt7;tIh?4w8l#7Wp_p5-^)&dv(rfoMa8rtwT$h$# zm19{`V6!vn>O)q!bZxF;T2e4Oao61sF7v@KeG3@t!jb$Ma2v2(`b!?*Zg4)ZDWJD52 z>ATcPh9TMq_UUcHtTbGdX<%@E>6QvT`NsbG)h1mYH{b4krU7weUm_B>GH532*QK9K zp{n}$ebT~CHp-4DGuF$1_4MYhl!b=m-O(DiqA@1-O*f~(BO$f=;|8Y_^G-mqr7I_A zdj`IQzZ+JdpOI&=ZygS8Gr*QQpAw6|1Y~#Rej2inJ ze8V5S7hhMUBRLJdWt@;v-!d=RCT{odEqB)oa6u%I6W%YljiEp4#8{MobCuG%lK+X|g>}yadtodV& zAG^L~{Z2Wz1M$R`O*BDV9rq4wYhs8NIzppWK|B0j%?`E#ZIz?K5xOox98x1 zv}ySG={nN3o*cqsD-D(dxsIB!P;WC^qp8tB2x=AHr`T-u&e3|^^2Cja$~tI1sSHo( z)6-$en})HP5%hOKq(F||)ncyCyBX4Gz{kx(+B%~`Yg*)k_kF_eKDv9D%R29*sY#E$ zdRsEB)2*8cHxYCvwh%(X%0qdva@6QPJ)%mN74dXEZR~YRCL!ILLfC|$vlHr!z-XHb zW8`|x=_D1Fd?eX~=$ zdRv~TbZieX6neY#Zop;*k>1Vd?^wwm>8|FaG9Hj}^^-$x2ea;CHh%K0PxavcP#fW$ z%N(r#!2IPr%K_iiM7UqaB5VyjN}Q`(O6cOnKT_$SDz}=0_YwwRDH>IT)}mY;)?FeP z32dGWW8I8;?aJmt$1+AjojNu&)yI6q%{&1toND9&CbS9W#C-OZ_0#=eiXZ=*NcLhr z!3pOMf>R}ssE#$wYal$j64BH0$MYW;^IjLbv99r^0lCh8uErQVQ$hG5XZCRD*+VZS zqr)lNx>AFeNL^?QNt_LFF1s8hHo|8@+iRHyrOqAqnGSbLby$JKjX^1?^RS&582+GT znQu{%nu}K19&ko;x(cX-$y#Q$|CPSpSjNcaLPXhz3aj1Oxofrsk#_C39eR_b&ZByP zF^_R0MFBlQl08tU>#skIK;S+5u8) z$^){i#z3=YJo?Ik8hf`Es3+KB`=SZExIfV- z_I-hG&pkW@8=4QT%=vf3NLoUHMSOR}vQSxu5jdkN;CAc2fWa3R8m_E7eI)wZz@X$< z-3oq~PG-gKjm=hOHFi3pbsWQgss^W){j#En|5*!5w(#X*egocc&YF~Wijqi>oWJkM+{!39B639xx07e{dXxXSdy?#1X%x%?Il=U3IEx4X?Sa~efIj3m}NMdlBu^hTNQ*K1 zL4~y|Yj58VLx}`hfP*fV0j45CYqy~d4uP@uz=VV2PzNv{k#$)FX0hXX)Pjm~D1rqR zqw8Z17@qy^Oa~{bJDBg;46$km44R%zbq52igM;6$&0xWwWQpe$M8=XW`BGXI9eAL- zeJNon9&~Z%bUg%vVvO)pU>$-ALMQ4BL-JG&1|_?Oc})}fN=lx~&>Rf<%?C^Tp+R>u zljn|EI6$Vf;Kcr70@*bU8O|Eb$k@WBxS5$WZ_Y7YO%i2f#OrYwZPl6@PS`BaEEa6h zE-iSKB`;AvF8DPB6vLcA9(eu&RG_v9?NZ7nR${_=*xMSIQ$6u>FN+O@Tq=14x zx|m0R>;c6TITU44`NFDB`bo`@$8ZxV;yERX+!jOa;#9)VGXEC<3d1fRYbtx12Eacv Oq}<&wd+J?(PWvBPpwCJG diff --git a/tests/visual_tests/images/marker-on-line-svg-with-box-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/marker-on-line-svg-with-box-600-400-1.0-cairo-reference.png index 8f735c74b13d184e520d8d3ba8e6af4667b38d03..4645618b617a784aeda49113c8e28f75544be1a0 100644 GIT binary patch literal 7350 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 literal 9427 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 VV=cVOpnnjh9BeU%?xId4{0}QI<@f*q diff --git a/tests/visual_tests/images/marker-on-line-svg-with-box-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/marker-on-line-svg-with-box-600-400-2.0-cairo-reference.png index 0e8bdf250b4a5cff0755cb6e1f85b97723cc0883..1f85d5d28b8007827e636f76ce676997afba4638 100644 GIT binary patch literal 7354 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 H{b&CVr?%BC diff --git a/tests/visual_tests/images/marker-svg-500-100-1.0-agg-reference.png b/tests/visual_tests/images/marker-svg-500-100-1.0-agg-reference.png new file mode 100644 index 0000000000000000000000000000000000000000..99881f23009a1fc6c0a51bc7eac5935bf46970a9 GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0y~yVEh7Pr?4;s$)=b0{eYBEfKP}kkOqSP5Xympp@Ctm z(~6@&E^|qcUob<1!*)$sRv>q+r;B4q#hkZy4)Pu{5OF!kF~!WK}&!bA| tWoOf6#)iqex2?mf`hX^DeQ*7RFZ|3*>CO*w%;G@a@^tlcS?83{1OSH}ZI=K5 literal 0 HcmV?d00001 diff --git a/tests/visual_tests/images/marker-svg-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/marker-svg-500-100-1.0-cairo-reference.png new file mode 100644 index 0000000000000000000000000000000000000000..b182681ed1be9f96d90ab67b99c0167272b8bced GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0y~yVEh7Pr?4;s$)=b0{eYBufKP}kkVXJ028IR(25k`e zA0isSz>omqx)w682a0f(1o;IsC^$4Ma5&K5@H|T(4Ji1;)5S5QV$Rz;3k453h_F2@ z;PT`&zrd&=wSZMBL12L-4^yZ6Qbw->0Ss-668NG{?45A;eEPHasg;76v)*mZ{qFxo z#3FW*3TKkZ-M{R-hxsuC)KIXDVL6rNl=JVq3E^_?~ zQ50O$e^jx`z2Wlr+soGM8nY!)F(z>M7Or@#$lky-F=FU6u*Y^h>c41X{Qx zafWVJ<(EE&)7y5qz2`{S^-^Qm?7k!j#pK5>zjl&}=P&OE@sGco{N+vKl3C|bW^xe} NES|1@F6*2UngGKsfZ+fD literal 0 HcmV?d00001 diff --git a/tests/visual_tests/images/marker-svg-500-100-2.0-agg-reference.png b/tests/visual_tests/images/marker-svg-500-100-2.0-agg-reference.png new file mode 100644 index 0000000000000000000000000000000000000000..93084a3b456e4ee401d8a8b24bf70ed7799da2a8 GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0y~yVEh7Pr?4;s$)=b0{eTo_fKP}kkOqMUh8+(IyMYYG zk|4ie28U-i(tw;9o-U3d6?5KRJji<}fQR*<1M3oIm;bJ8eVPx{-K>l2CxzeJ_VnBO ztKAEi=*RMi`muwIl6dsfvhsfI`PL=g)9)$7?)t*^^3qaskLh}Q9e0(yz`r0#aNX9;o=DRZi OWS^(2pUXO@geCyF09)h$ literal 0 HcmV?d00001 diff --git a/tests/visual_tests/images/marker-svg-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/marker-svg-500-100-2.0-cairo-reference.png new file mode 100644 index 0000000000000000000000000000000000000000..1a6f86f328fe86657df98c6b2ed9432da8328be2 GIT binary patch literal 293 zcmeAS@N?(olHy`uVBq!ia0y~yVEh7Pr?4;s$)=b0{eYB2fKP}kkj4TU7;?9?BmyPa zN`m}?8Tj?>`}f}oT`mI@+2-lu7*a9k?VXLBhZ00uFRoayR+&RjA&t%4U}f%~Z0qaW z{nQV6D}A5y@6d0tirDa6^KIYuT+s{js(P8UbldjC9rLrqwYOS+|NAv!H`wMM#~#{# zjQTZC(sR0=ZF9-XOU52p8O{Y(3=IF1?yJdp-#1o%d1-0-1ijcQHtdWOKKylaWd7(` g|M1-P<!BK>FVdQ&MBb@0LOA|-2eap literal 0 HcmV?d00001 diff --git a/tests/visual_tests/images/marker-svg-opacity-500-100-1.0-agg-reference.png b/tests/visual_tests/images/marker-svg-opacity-500-100-1.0-agg-reference.png index 862c538055ebae85fc2b87c7756e2ef8a05f4106..fe957111437df7b31c4d091ef498b70ffa13d2af 100644 GIT binary patch delta 201 zcmeBYddfIKrJg6iC&ZP3f#E+G0U0xrCI|v4=8_=4U>7?8Scb45pjs&i&E7`|r=r+uOd!UjMDHChEt|!0dgvts!y5HHj}-TMK!hHaFfcTn gZ1sQaKdX+p$yZ$V_ldAdpo}j?@ zk;R@ajv*Cu-rhOLdB{Pc<)T7FLk43K`!pae9_{g8RpPDUnRTD<)h6z{UGF(9wf^<4 z|J{zF%b9@&zxXmaPOz{p@7+sL!Rg(dFXvO^&wfFdW#zxBaZ? zUL~h0<(Iun%qQJjVIj-V@Ka>|`b*ND`6?jQM_)29oO%A^@2;m)<6!zd^F!wFF)$eH fcohGbf7U<7)y^jWe=JTp4f2VntDnm{r-UW|_c~=f diff --git a/tests/visual_tests/images/marker-svg-opacity-500-100-2.0-agg-reference.png b/tests/visual_tests/images/marker-svg-opacity-500-100-2.0-agg-reference.png index 85974b5df8a97237bae71bd05ab1b27eaab7356f..88f7e6064123e5dd5114b433870858c59ffd6033 100644 GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0y~yVEh7Pr?4;s$)=b0{eTotfKP}kkp2%wK*o%u34%b1 zxg^Lhn8Bgp`F4)qK<-jc7srr_IdAVc@-`TVusZ4_FmnI+&ZfRaxarc`$FLzB_e1Doh{}-PZ zFIHZ-7`$-tawm8H*1mbGe9p_Rc$WYDPGr&2^X~bZs?p@RWNicZ{&36Midt1^m3#?- zOP{(ped}WLo3_Ye5F@pGrmOsoeOP`IzKE+io_Xv2H*!AED-52lelF{r5}E)n C3W3-F diff --git a/tests/visual_tests/images/marker-svg-opacity-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/marker-svg-opacity-500-100-2.0-cairo-reference.png index d07cc768bb211db6797dd8ed80c6b667a76ef96b..c428279c7c980d23b33ce4e25da55193f20a4b1f 100644 GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0y~yVEh7Pr?4;s$)=b0{eYBofKP}kkVXUl85n>F2rO^8 zE(cN^B|(0{4E*}`{repnKHbfn2^2f&>EaktG3V`_)0|9>BCd}1oDxk5Op6R>G&Tv& zXcFWQ-e!H5du{XbbN`&K@2l)S`r_L4%&IrX_0pt%T{!9!Jy&n~=dw3R%XG_+KTb3* zQ}mpb|2=$v-O20D?*6TP^SESfMXjo|O1^}=c(JnR%k9drJ#0EnPfGPj+g_%N0w! z-Bn|)v|f5xy>l?F-Szm~q)xl5_m)&(s<_1X@W6eT@=Jl9)BC)3m4pD*9lH2D;Dgai9&NGxE~DEpL=pZ@!<}Jb#Jzd8?1X`nQ-q&Hs_yx&;(op00i_>zopr0PoU{ As{jB1 diff --git a/tests/visual_tests/styles/marker-svg.xml b/tests/visual_tests/styles/marker-svg.xml new file mode 100644 index 000000000..a2252a0c1 --- /dev/null +++ b/tests/visual_tests/styles/marker-svg.xml @@ -0,0 +1,58 @@ + + + + + + ellipse + + csv + +x,y,id +1,1,1 +2,2,2 +3,3,3 +4,4,4 + + + + + + + + + + frame + + csv + +x,y +0,0 +5,0 +0,5 +5,5 + + + + + \ No newline at end of file