From a67853f825c096f66c5525584b70c19f68209375 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Fri, 29 Apr 2016 17:36:52 +1000 Subject: [PATCH] Fix calculation of point symbol bounds using data defined rotation or offset --- python/core/symbology-ng/qgssymbolv2.sip | 11 +++- src/core/qgsvectorlayerlabelprovider.cpp | 4 +- src/core/symbology-ng/qgssymbolv2.cpp | 6 +- src/core/symbology-ng/qgssymbolv2.h | 12 +++- tests/src/core/testqgssimplemarker.cpp | 54 ++++++++++++++++++ .../expected_simplemarker_boundsoffset.png | Bin 0 -> 11019 bytes ...xpected_simplemarker_boundsoffset_mask.png | Bin 0 -> 5329 bytes .../expected_simplemarker_boundsrotation.png | Bin 0 -> 19177 bytes ...ected_simplemarker_boundsrotation_mask.png | Bin 0 -> 5068 bytes ...cted_simplemarker_boundsrotationoffset.png | Bin 0 -> 11845 bytes ...simplemarker_boundsrotationoffset_mask.png | Bin 0 -> 2820 bytes 11 files changed, 76 insertions(+), 11 deletions(-) create mode 100644 tests/testdata/control_images/symbol_simplemarker/expected_simplemarker_boundsoffset/expected_simplemarker_boundsoffset.png create mode 100644 tests/testdata/control_images/symbol_simplemarker/expected_simplemarker_boundsoffset/expected_simplemarker_boundsoffset_mask.png create mode 100644 tests/testdata/control_images/symbol_simplemarker/expected_simplemarker_boundsrotation/expected_simplemarker_boundsrotation.png create mode 100644 tests/testdata/control_images/symbol_simplemarker/expected_simplemarker_boundsrotation/expected_simplemarker_boundsrotation_mask.png create mode 100644 tests/testdata/control_images/symbol_simplemarker/expected_simplemarker_boundsrotationoffset/expected_simplemarker_boundsrotationoffset.png create mode 100644 tests/testdata/control_images/symbol_simplemarker/expected_simplemarker_boundsrotationoffset/expected_simplemarker_boundsrotationoffset_mask.png diff --git a/python/core/symbology-ng/qgssymbolv2.sip b/python/core/symbology-ng/qgssymbolv2.sip index 7bb6a8eb493..865be9ccfff 100644 --- a/python/core/symbology-ng/qgssymbolv2.sip +++ b/python/core/symbology-ng/qgssymbolv2.sip @@ -494,11 +494,16 @@ class QgsMarkerSymbolV2 : QgsSymbolV2 void renderPoint( QPointF point, const QgsFeature* f, QgsRenderContext& context, int layer = -1, bool selected = false ); /** Returns the approximate bounding box of the marker symbol, which includes the bounding box - * of all symbol layers for the symbol. + * of all symbol layers for the symbol. It is recommended to use this method only between startRender() + * and stopRender() calls, or data defined rotation and offset will not be correctly calculated. + * @param point location of rendered point in painter units + * @param context render context + * @param feature feature being rendered at point (optional). If not specified, the bounds calculation will not + * include data defined parameters such as offset and rotation * @returns approximate symbol bounds, in painter units * @note added in QGIS 2.14 - */ - QRectF bounds( QPointF point, QgsRenderContext& context ) const; + */ + QRectF bounds(QPointF point, QgsRenderContext& context, const QgsFeature &feature = QgsFeature() ) const; virtual QgsMarkerSymbolV2* clone() const /Factory/; }; diff --git a/src/core/qgsvectorlayerlabelprovider.cpp b/src/core/qgsvectorlayerlabelprovider.cpp index b1621a8c8e1..810361a4f53 100644 --- a/src/core/qgsvectorlayerlabelprovider.cpp +++ b/src/core/qgsvectorlayerlabelprovider.cpp @@ -353,9 +353,9 @@ QgsGeometry* QgsVectorLayerLabelProvider::getPointObstacleGeometry( QgsFeature& if ( symbol->type() == QgsSymbolV2::Marker ) { if ( bounds.isValid() ) - bounds = bounds.united( static_cast< QgsMarkerSymbolV2* >( symbol )->bounds( pt, context ) ); + bounds = bounds.united( static_cast< QgsMarkerSymbolV2* >( symbol )->bounds( pt, context, fet ) ); else - bounds = static_cast< QgsMarkerSymbolV2* >( symbol )->bounds( pt, context ); + bounds = static_cast< QgsMarkerSymbolV2* >( symbol )->bounds( pt, context, fet ); } } diff --git a/src/core/symbology-ng/qgssymbolv2.cpp b/src/core/symbology-ng/qgssymbolv2.cpp index e5be3c20146..c544d72704c 100644 --- a/src/core/symbology-ng/qgssymbolv2.cpp +++ b/src/core/symbology-ng/qgssymbolv2.cpp @@ -767,7 +767,7 @@ void QgsSymbolV2::renderFeature( const QgsFeature& feature, QgsRenderContext& co //draw debugging rect context.painter()->setPen( Qt::red ); context.painter()->setBrush( QColor( 255, 0, 0, 100 ) ); - context.painter()->drawRect( static_cast( this )->bounds( pt, context ) ); + context.painter()->drawRect( static_cast( this )->bounds( pt, context, feature ) ); } if ( drawVertexMarker ) @@ -1479,9 +1479,9 @@ void QgsMarkerSymbolV2::renderPoint( QPointF point, const QgsFeature* f, QgsRend } } -QRectF QgsMarkerSymbolV2::bounds( QPointF point, QgsRenderContext& context ) const +QRectF QgsMarkerSymbolV2::bounds( QPointF point, QgsRenderContext& context, const QgsFeature& feature ) const { - QgsSymbolV2RenderContext symbolContext( context, outputUnit(), mAlpha, false, mRenderHints, nullptr, nullptr, mapUnitScale() ); + QgsSymbolV2RenderContext symbolContext( context, outputUnit(), mAlpha, false, mRenderHints, &feature, feature.fields(), mapUnitScale() ); QRectF bound; Q_FOREACH ( QgsSymbolLayerV2* layer, mLayers ) diff --git a/src/core/symbology-ng/qgssymbolv2.h b/src/core/symbology-ng/qgssymbolv2.h index 540f8b5229b..c387ba7061f 100644 --- a/src/core/symbology-ng/qgssymbolv2.h +++ b/src/core/symbology-ng/qgssymbolv2.h @@ -565,10 +565,16 @@ class CORE_EXPORT QgsMarkerSymbolV2 : public QgsSymbolV2 void renderPoint( QPointF point, const QgsFeature* f, QgsRenderContext& context, int layer = -1, bool selected = false ); /** Returns the approximate bounding box of the marker symbol, which includes the bounding box - * of all symbol layers for the symbol. + * of all symbol layers for the symbol. It is recommended to use this method only between startRender() + * and stopRender() calls, or data defined rotation and offset will not be correctly calculated. + * @param point location of rendered point in painter units + * @param context render context + * @param feature feature being rendered at point (optional). If not specified, the bounds calculation will not + * include data defined parameters such as offset and rotation * @returns approximate symbol bounds, in painter units - * @note added in QGIS 2.14 */ - QRectF bounds( QPointF point, QgsRenderContext& context ) const; + * @note added in QGIS 2.14 + */ + QRectF bounds( QPointF point, QgsRenderContext& context, const QgsFeature &feature = QgsFeature() ) const; virtual QgsMarkerSymbolV2* clone() const override; diff --git a/tests/src/core/testqgssimplemarker.cpp b/tests/src/core/testqgssimplemarker.cpp index 74285b01424..b8e210d6717 100644 --- a/tests/src/core/testqgssimplemarker.cpp +++ b/tests/src/core/testqgssimplemarker.cpp @@ -63,6 +63,9 @@ class TestQgsSimpleMarkerSymbol : public QObject void simpleMarkerSymbolMiterJoin(); void simpleMarkerSymbolRoundJoin(); void bounds(); + void boundsWithOffset(); + void boundsWithRotation(); + void boundsWithRotationAndOffset(); private: bool mTestHasError; @@ -194,6 +197,57 @@ void TestQgsSimpleMarkerSymbol::bounds() mMapSettings.setFlag( QgsMapSettings::DrawSymbolBounds, true ); bool result = imageCheck( "simplemarker_bounds" ); mMapSettings.setFlag( QgsMapSettings::DrawSymbolBounds, false ); + mSimpleMarkerLayer->removeDataDefinedProperty( "size" ); + QVERIFY( result ); +} + +void TestQgsSimpleMarkerSymbol::boundsWithOffset() +{ + mSimpleMarkerLayer->setColor( QColor( 200, 200, 200 ) ); + mSimpleMarkerLayer->setBorderColor( QColor( 0, 0, 0 ) ); + mSimpleMarkerLayer->setName( "circle" ); + mSimpleMarkerLayer->setSize( 5 ); + mSimpleMarkerLayer->setDataDefinedProperty( "offset", new QgsDataDefined( true, true, "if(importance > 2, '5,10', '10, 5')" ) ); + mSimpleMarkerLayer->setOutlineWidth( 0.5 ); + + mMapSettings.setFlag( QgsMapSettings::DrawSymbolBounds, true ); + bool result = imageCheck( "simplemarker_boundsoffset" ); + mMapSettings.setFlag( QgsMapSettings::DrawSymbolBounds, false ); + mSimpleMarkerLayer->removeDataDefinedProperty( "offset" ); + QVERIFY( result ); +} + +void TestQgsSimpleMarkerSymbol::boundsWithRotation() +{ + mSimpleMarkerLayer->setColor( QColor( 200, 200, 200 ) ); + mSimpleMarkerLayer->setBorderColor( QColor( 0, 0, 0 ) ); + mSimpleMarkerLayer->setName( "square" ); + mSimpleMarkerLayer->setSize( 5 ); + mSimpleMarkerLayer->setDataDefinedProperty( "angle", new QgsDataDefined( true, true, "importance * 20" ) ); + mSimpleMarkerLayer->setOutlineWidth( 0.5 ); + + mMapSettings.setFlag( QgsMapSettings::DrawSymbolBounds, true ); + bool result = imageCheck( "simplemarker_boundsrotation" ); + mMapSettings.setFlag( QgsMapSettings::DrawSymbolBounds, false ); + mSimpleMarkerLayer->removeDataDefinedProperty( "angle" ); + QVERIFY( result ); +} + +void TestQgsSimpleMarkerSymbol::boundsWithRotationAndOffset() +{ + mSimpleMarkerLayer->setColor( QColor( 200, 200, 200 ) ); + mSimpleMarkerLayer->setBorderColor( QColor( 0, 0, 0 ) ); + mSimpleMarkerLayer->setName( "square" ); + mSimpleMarkerLayer->setSize( 5 ); + mSimpleMarkerLayer->setDataDefinedProperty( "offset", new QgsDataDefined( true, true, "if(importance > 2, '5,10', '10, 5')" ) ); + mSimpleMarkerLayer->setDataDefinedProperty( "angle", new QgsDataDefined( true, false, QString(), "heading" ) ); + mSimpleMarkerLayer->setOutlineWidth( 0.5 ); + + mMapSettings.setFlag( QgsMapSettings::DrawSymbolBounds, true ); + bool result = imageCheck( "simplemarker_boundsrotationoffset" ); + mMapSettings.setFlag( QgsMapSettings::DrawSymbolBounds, false ); + mSimpleMarkerLayer->removeDataDefinedProperty( "offset" ); + mSimpleMarkerLayer->removeDataDefinedProperty( "angle" ); QVERIFY( result ); } diff --git a/tests/testdata/control_images/symbol_simplemarker/expected_simplemarker_boundsoffset/expected_simplemarker_boundsoffset.png b/tests/testdata/control_images/symbol_simplemarker/expected_simplemarker_boundsoffset/expected_simplemarker_boundsoffset.png new file mode 100644 index 0000000000000000000000000000000000000000..980b80f02fda8d288ce26b09d89b8a0683209074 GIT binary patch literal 11019 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 literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/symbol_simplemarker/expected_simplemarker_boundsrotationoffset/expected_simplemarker_boundsrotationoffset.png b/tests/testdata/control_images/symbol_simplemarker/expected_simplemarker_boundsrotationoffset/expected_simplemarker_boundsrotationoffset.png new file mode 100644 index 0000000000000000000000000000000000000000..ebd50f779a25949cd343f3030fb98a76a2144dbb GIT binary patch literal 11845 zcmb_?1yq!6w>BW9B4ChG3P?$pGztg<(lIcUbayuvsEEK&(w##{H;9Nd2t!DN(v9>C z!~8ezdDnN|@B7#K*I8%%1J8OE!#sQL*n8jCzOMaFLrw9jG zRS8Bx;>W*maF}o)@{e_Vr?zMPeCd{7tnQn7A@cN8N}Y{MrxOBA{{)#k{=QBUh7U{#ew>}1-ks`Z1WhmZ#>_vD_4T;>0XOS$Ltxt*xh(y`}fC3g>; zb+Z))&8P`cq7;#iE)~%)-CgxN?CzdrJ@EDlL6;Vn38c#`3liXb@v7v*$HBqF!(n3j z*NvPUOcEF8A2(uRoX}7lod3Sz;N#=S%HsUv_8&HY#s9DYEdINV%fJ5r+qks&kGcFk zvwzIx@0tBQ7iU%eD-D`jx(%ti6t7SU`Oj*`_4<;M%cu=!tU~5vQ?v8mA${d>m|%G3 zuRCCvZ?o4}#9h{?UgP0<)zlSNl`1?ojk2WfP1Eo_lgTYGOu;Tw)O<+l&cVaciVqIC?ka{pwL=@@!z<=dH5HrJ3zW&QN+Vm(PZM%YkH4-Ybfr*22% z3UuV#_o)?@tXnaFCL5h4#4i3l-o1wy-2F-UIc9M8sbidWq zu#D-nVKy0zu}BI+Zxi-??&8`ztt;E~b7L*5 zve7yJDLNLL>faesRaa!fT{C81TB_+_Tm#!E9vhzVJt9E)AO4(Z>*f>8!mR#i z^35F5ytU(W42z46&6##?Qq6f9xiMev)-p0O5|@-zG&Kbi){E!jE)P}2%|QHY!+LOI zFubF8vX=9d{LwjNR_JzK=E`PgmlT)-Vob|0C!x{99s$0!!|%53o9$NxV^^k@iX>G-8{veB0WP0Y{pjv!lA{mNm z+EGOH6W`-S4Go(JvI8X?XwnP$`%G?bZthL98;(wT3)du;U!>5ILpVS2n`$kISWr+N zr^nZwcN0n8`ocy{8L@R$t){lNclF?gzaN!|1^@N-)mzccJxB_R2yHt%J9)jenHi%7 zBc3s6svbM_!Z40>d;DC$7i9~J-M`%;Z&m$%S#p|*Ad$I#&EFu>*S99C>>V7?qqo^jR4puWKGI9%!{N6e zTI>snbqy~R@#`Nkt;bwfQdWLn!p~3F8!^Po6xONHe%K&>F{c+F7q?bB?RnA_A{^x~cE-xl>4LiG{_Yo1g zdV1p_w5Pe%B$3JdrUb}U&i1tIQ&TC#ty|%WK5?Qy8@)XZfN?)!Y#3xJq5yUVa1^Q|* zo_ET0?>?jT75!?KCcc+0J%b7hoDHf<)KH2F#){EE-zhmNHd#wzqe=|kQiCs9Fnb-47syyu7_h zQ{1XvzZ7_qHMHdO#{4&Nca1(KG1!%lf3WN(!SBm+vdL#Fnk6qk7x8?GE;3cz@ZC;a zl*<<5mvB;3V^G!;dT?zCa%#V?j^h`X&UEGi1EcgzQ{i>9W>J_ld#y&;hc>*NIflY@|( zLaXggc-b?G!RAt9GBCuS@_XM)YYZpI6irW;efmVrZB(rUl4;_Ab<@_0O2Wh8{oh@> zsCJ&nl&ZH5T=Fr$yP~+n#Qc8ry*;FjSyR(|=9o%*Hw9&~<^2oy{$%{L-`GR10>6`lD){om~*1uw3yQG#qLg1 z)sRJ3{iCBJdq+o|y=#dzUMvmEgZ-NBPitpr#N2I`yW@kJ;L@}G z_V(tLMl8rox;i?!Q-W-sJ2^Q<cD`w+H+ltf|4?L!$yL~x&~Hb-g&LmuuhF=K3HMWg3b8P4yl}qqh31a+#~W~ ztEu~+Kgi9a?nX{kJ|^wRrn&l#cD+Z-u~`lzl1{N(R_LXpA&KS|(<`p0DIrCly?o26 zvYyL^&-v@ZtASwyG*6K+fPKKL9EQ@RP|vZ!6m3nKR^i9C-;0GgKZz)c9=)>1UmB+* zIjvcy!j>FtmsaXOOqL00rQ|UxtgpWt;KT2KXd6i@tZZdvg|ZzYRW%7@bGUtf<1}Yz z4P1QWH;;$W(__O^xtcjo?GD$56I+wsMvl?@%w(-23mm#W(t|VTwRhW}Y_**LsK<^m zVss{uaPNM{O5oj#9Ug$1dly~Tl5En4E3NvRA2Dd{dLMwj?B*k(4_I~b3J^=-b46?( z*A|`5s)C_mhUU54nr2~D){zWBhnjwp3;>oZmSY`I+^oPKzZDW4@{_VB0XCj;?(I*`c5(w)<5zHn#zu37_(A!POyKa!570m*9Y zi|I}gQgz!W#S<`kW)fIH$5W@QqM~bJBE7c!ro)V0%3p_qf&%_+mI*_PM=+=JNwR8(2_DsCAqZ(# zflC(&J|1e}6p4qC?0N;zbaMBMY*d*``uKuH?D?BpEB!fo8BQ&CZI z)4&-DP4wQGVg*O}>Re4naB8@htd{#z+tGdkaSz+5xqw}%S+5CWXiKSG@?WvI^)sus zRs@t@59V5p-l#yyinw_2Iv(3N#J&uos+90ti`LTCM)S5vQ8#&S!^;a4EmmgAmP#b? z1ZIeyfA2->8U*TxlQE8epbh(jg2tg*3;~KwX|YZm4xo~=8B*=a3XMWa>BWJOpwsIA*S2pJv+~|7Doa+eUXHh z_DnDSB%;+nkB^PzrAhc~bjL6YsA@y(Xp&n{5xoqeNy0?+os(PpFwCKkC+Y`UymHy= z(o-0NJfGCfw`zbL-2(H-L4s3s| z>{1_ZvAEDC@I)=h@UT;l+f(m7^>WW~fx*RHath&nCIqIqy7`WC5G35nB6lhRlSgXR{oD$jW|f zctI_!mXy_OY*>bF^@CfluJlchW@<2HE}>vWSvwn9*9Z?U+Rman+*2c0)z9itH*pqF zHhv`kNooCq5Br%wfY!^ zFTC;bH~bCsAY&i#FTa))ck%*7G@_`;T=!-2y00hh!h^r)L>fYzFGuEV;y4Ro-}vyq z9d|Tf3BaUp&=fkW??;>U*SR3W8TtQF!mt>8|#gk$Y8%?W3%^IHZ+Te z?sm?{k{O3N>xtcvtlsAuaLcMm9WUFc_k+4?wc!~$%HDIKAyg9g_;vVg2%W!7<`Dgz zs&@ldB~Vint@$^ZpBC1XJ-r)pe1(4YBER4D?F&3y+`S40m!{*keIm%n#u&n?ZaO|S zwM3D@Po7J!Bznwzc$nVB?h=TMPtg*R;N#1d2bE*gT6cH`KJm)|LI`!*V_9LlGt=OY zS}%wPMA1qzXA1_2&HCjd+Cvgf^N5`M`6Di_sR9qSk04RlO;%b#n^gf{*7_&D+!jD^ z0h0CZ@rj!CRc!8Y7>tk{AD{YTWEVeSZETJs4#N5L?l@ z(VMyRo{)+Cle!*~s%bj#klwM=X(^u6>?JIE`jJj76P=rvx4z%S2vCShuB(2yXxT&p zRWOT-w$zntcz7g41!OyV14X};)zroTtaCFysezTk>Rq#1K?(s}PT}GfP0QKukRLrQ zyUGu$ZjzHT*?ZNBZ2p)o@8u(z^_dTP9~s$_wQOl=xrQ*s6g#(Jyx+WfOz(RTHHAXh zbh15`l?}DEOrC05WF-icN|x{`bNBEds(FMMEAEV-+U#M=0JWTsv0u@XAjYTo#KhzZ z$|t*8+exv?s;b+wQ8(`y7#Ps-h+ZQ+zg()ysw(E%nVlWy7R>Q9JlF3;=Bunl_peeiR|4bh z(qb299e@8uN^aPlVJnx}MqPS(dH|fEezEz2Kc5rg$wvU%4%ED?kjpx5%s%pGrFyz# z5h%VpC5)3j=3#_)FGnO2(CipAvEsW~T2~!#;{1l$l?PE)#^W?oUm^O8OgjJPDgJ+b zkiS-+)n?g#rC1nlHawUnaWtaBTU1furqMUs>{r#;*eK+`;?zqc^X3I1E^hW%t^!vL zY8neE5@XiY*3L1-Y_{3Yw+4v{-91~&i8>rsWb9c~9^V=x6Rc-qlCAdetE}F*J3m$( zZyHS_QUmxx%yC_tu7}4#XyWkXWRYr$2n0@9;%6ihAbI8b<>rTV7Jrr48K0d;ae>mZ z`0^lc-g`+(_h_%E>LyaC#_ji0FCQO=tyG0xTEQ2%1R!)%mimomF)mnT?ZmkpjYlN_ zQEi;GVOv18TIQbtSfcoZ1kT~KVgsLYGjb5JX6V-yFk!FGphooF`PjbLyxv~rmc6gn z#RE@2_p7HGOl%(6A0%+Ya|y^~vOcvkH-RKdV!@`$(0gI)Y&wI{S2u8k67IOM( zYHErlsCm720-1C5`i{oac74Jdn&Il%S46vMEs!6Y7&PX-6-|NNFD@+n!5ea>QmS9^ zB+P6LxQKgxz5~jbOh6y#1w4r&=5cxySQRFkO}iO*-IRSu9)CY52s9$S zar*ius0OukJ8#U2uALN>HR~8yu=SXq9Uj;UKTFDLq&cAR1nR_>y)T;j|59N7U9|{Y z3F~AV=EiL^_itowH3~7mmBB6$vj@i zy&#ums`!gVTs*wcQ2DBK((?BrP8!n`7lZaSz3ZNw_wFsidBZ#0CNtVv4dq6JIOjIy3-@EtNq#XLVEu+SU_}x*h-S9j{f`+0% z*T9IyCRwq)Q{WX{f0UW+s55ngxPuO1Aoy@rl64Ehx+_rnd8Y@f3;5jT(S@0aRuNGX^=XE2fvDHC*KGK^nV94{b7jt-2wp4`36y4BIP>45 z{xPpq+4krCLp=nnsmZEFf9Ycs|cJwr%x>6gaF_f zKfSGIV^bh5Au$GC*i}Gp5j1bZ>oD4hXNi=EKx29m9^!5d0aPheH)vX*W;p~^lV2cx zGGEP0tq}-I_MR9o=Aw>ck$M!|{InoHcmu;7+?J}KkciK+wrRFa^AhY4Ja@9nrf=KZ z^vL^#>;k;dXnhEvx@+Nb*G_{-9s=v;u!nynj5pL&v4?jJABwXU+pEb=mKX zM07=MZeFKkm*7~RYU{HfdlQi#*nBmDDl&^E`dEdb3sEuY=-yxiexWS`9z#-WUY^}C zOM0Sm5oYWtnRm{~{(^KP{E++cF2*GtDh5YP`2$14)94VP>|AU*9B4 z`c+OfHXTjNh2J42+xk2cb>%CGWp_&=aX7`^(Vp>cO%f6}fp zhfnep3We_8ej5rrJaJ`1+37qHTLkVv@mdEbkB&cT8Lez?ZhpAeLB<6nFvjsw+pcxw z1pk$LOmeD^sOy(hzdZN!_C6+fZLtr6@TnE>zVkmBW6Ms+(IV}mZssVX0|I7#e$C4| zd%zl5JEBD|6%s5fNRB6fZ^P8yJs>MhN-RhYCZch^^K={4!F%T#VGUr3E(br3E7>l^ z5XIoTfD6(ORQg;)x3m;E^_YG9tTP*voIByI4?js>tLn?f;j`Q!u{~*|^0M5#TRG`? zNs&-K)OR&5V5b3!Mgos<@$*L|^9@CX%B*fRXq zSN7o+0BtmIaaeNAzKx8AoK+GyR*#lq)j0(P55f`wNqEVxTmq~77URv2bPc~^45&;( zfty|@Ry4!Km)C+CMgVXX0FZ;juW#@C!O;cAK-6LcP=K(*c=xt9BDYK}MLoTFgM{Tr zM{sl&3mh#AfIcxXFoFpWNTEex1F@KsKI0&u#4l>dn4yV~< zbf|zv{a0ZlBrJCtE+vi7dx1P9)i(*=@9soTO;>xYs)4dvsIpI81^J3hx=`j~Kgu7G zEAK%fHzbWNX$0|~oS*RiHYaH(&090-%IWQ!SCu|+mtnPV>mj@v!to;tE|f$qq#x39 zKTD;*px?o*`2JJKX);K>(yrxrXBII!s-v1FE}Y$#lbI>o)6;WJM6}N(d1HN_V{RQT zHO%3o)SGDnx(mKv_5!fy0;(*{ik_BsA2|Ls!eu3;=uUxpD$H{}_Kcx|Z%aCa$JWwa zh~Ap#XDkiOo<~E}5XL2nLhG)pgg*5|@^HYTP|E!I;C+tj@<(siEqgZ!n}2&t?6gB{ z*O$O;@9eAxX9*uGZcA%A{XK6SVzMgW0T$=&^#Zr3rGg*Z?;s>ws+OY}iAa*o-BGkb zX?r0M1Rg=^pz(;XELJ8eOCWxUodiSB^QW)I%T3GKG6J>0q+SJ7tgjD;-MFixsd-N^ z)tF2@gKe|o6=zex0BfB@!;0H@=Dlo0ivoP~$B#^?Y0y#S=B(*yRmWoVtaIDS!{x6R zWC7XQ8!Jl9DcpjB+JKxJ%}j8+IQQEQ-dA9)htp`_xfi(|P$Ehfo7HxLpqt~R$lL0Y zZXMGNDJdy6&a>jeqN06(ea?#tQF;GPv#?sftL>b`p`V<>XIQuo(B_+vPiaOVW zK_0K_s(cc+!BJ0&547b4E4(pnP1=CZJZoxP+Fgg2H>tFi@tg%nU-)HKX}`88-Bjg_E-H+3LT z>mH-x_HSCL%h&DmFoNZCc^ zvM5Y39=~vLI)s_vankM|R%A{KpCLyt*KBmubJ7WBXn2WY*ZY$Mm6Z?Hc3dv<1b*HD zpO;{Q3)!#WshW5efKv0~v`glg(VqjdI+%tm55YJ9L5AJo5Wf`l-LyAp!^{c5p%DjE z8X3FKFC8G0+INKAxc24=ka<4^pES)EArLCRSGb2O+1g5f`Vu+d;TRPZwtjkH#_x%q zDyTkN#g+hEiP;O6*}^oK*$xJU-D!l3COx=e&UvK@uHn5v2;BBs7>?7 z1apM&Q^6g7Sv!MHvP@CfQlaLo zp5UlU0l?jtkR+P%3bxjPDLkBE@@PRHnOtyvV0#?B4aG7{FRAbIt#*1pb%7()q-r#blut?%}!G%O}^?B^4eQuqy9;J zS!gr&;Dl~Q3CR7+?BD$^|C2)hZ(8CXx4$2*X9YF;+vNC$CKb4!b^`s!NbR4!NCGCN zx8jp%?~NTBhPa!gN39Ft9iWVAK{`5oct|N1W)?#t_x;Ahw%{qcmi;Ct5+PYxawkbe zvO?=Q^Z4@fmn?R>sQHclMX8n$nrq4}#xa0vt4@tk9_WL@oL`K%A6WT3F!q?#Yg0c6 zIh`N@>%m7Sl!l0Akvjfq@yEZVxTr`|RW;InbHnqZ|LSE=3AUCLS_vMEPk?5EbeXsE zLF1Vt-78}9=&S+VU}d|mC?)vI3kF?EDh`i+`A)V5Pm8-2JpM6hLaL<%zq6hDU$z2G zH#HHcg>P>%vp_&M%1+vc*H3`Vyha8J%*f>AF}Y%94v))U>GKthc-0 zOaY&``-jI6@}yXzlNo8Ri)^?iwmGB%2a@;uNFVmWbf%P!ta{&Y^KDX^gctPsHm^IB z3(JRhz0*IoPAYokJwxgMhU!DeIb@d_E z#|?We4f)Cg!n&Bch}dd&Wzjw%y@WnK62M>pqDfd-xTQ)$1fT@V?m=mL1S@2HeIi}# z=eGA{TM{pCIo2lMuDGS8MTQ-`Q7jd3Y#p?+<1q$cA*jtk6AQ)NyLT%>^@)iA?krAd z4Gnbv&QBg@20D;>0MXL_iNCkMe>7t-J>HBz+c~w&2isNi`pG?j+&QG@?j=3oy0>?= zxs=viF#7J*Znm+BiIX?1D29vg#n&KOYJ&@8Eu{#AHv1hd*fFu5Y-lLSB8}4Q7ZI}? z@|Vlj&w|1mk+|}1=^|=0HKrsK2bU%pwC-#l)d2LM{Os9>84{M>+Rc>wqWq020NZX} z-F_3AyL5{j7}A`}Cw$X!&rdS_@enPLdudaW?^r}7W;+u8+T76iv8!!uZ7uKZe?s({ z=C7&MwyI|+nqw7JR3gA}02izTvjGedtAaI=zq)!UOc*sO$&1mOG@YhJc;uc9TR)98x7dwCC=Sgy#Fc0uqL^CKZ zAD?)msvnd3LVo%|$@4Ge>1yS-ZrzHDi@Q@1nk#Sx7hp20ULAnxKoiifUxXo%@2}%R z-dC#XJ9!BMze-C>1JNu%wBIg+6avHrbBDR6vK|B1Jy(jrTNphurAKrXli~BbPzMJD zU72O)_sJalRPkxp(i-|eJ^0UU)&~zbB_s?1@q?M)K7N6bsjI2EJODT*nJsH3S=yo~ zE+a*~o|h@+5#Hw4i>M{`W?8MB*H6TH)$E^Tt3Ftg6_4Tw0zROjOCRLhm zUC7S9PeE~HQY8UUJow)qUrEe7a%2P$orFSH-hB@}h0nOhC)&?sT+w9i+Oz$aJ4DK)ztEi0oQBti~8z59~->9)KD%Ar#@P9SF zm9DH<1MId5#D7MaFZ}$<>gtIdiyA&Ybu%=RmHMTcROArxpxwm#jm`dgGJh@ZYq{Pz zblF$vv}F7zmPiQv`!gNTCs7H9J?*t6Z{r2bU~(Y7Nic~Khn5WHyj=Ges%M2Jaa$dLEDt`eZg@)zp-=4-XLz{ zxXwO`zl!tkjjR7pmjD09S^T$+%iF&X=+>~0O3`k6?LA;OwfhFiqR~f1-3Xmi-4FoEZpy4#qR9S@+;W))*y5) zy~L7|@&l$XZw#dWS5U^4)rbsVb9bpHws&BFepCQR$ilC(0ACz-wL_yZcfYh$ye=4% zNg2<~0o9_JkRu`{&NfB2q3@1SZ6m4Mc<=XZCU{=RU}DW_V3{XUQ((s*bl~9Bn{3Gw f{V&$NJ{wDB@xaOzA^AxR2fQE(YVu`Ip1=G*r|3R? literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/symbol_simplemarker/expected_simplemarker_boundsrotationoffset/expected_simplemarker_boundsrotationoffset_mask.png b/tests/testdata/control_images/symbol_simplemarker/expected_simplemarker_boundsrotationoffset/expected_simplemarker_boundsrotationoffset_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..989897157a4a7edc96ecfba42e1f7d245efc0288 GIT binary patch literal 2820 zcmcImdo)!07e8m_Ff)Y1NTtEitxyTwVo02(5eXHom0q58QK}JzN}VY(9#fQ?sqxC( zrgD=Mp>CNQ8I(N6Bb4VzOt+CC8L!{yx9(m2)o=ZNtKT~NyUzLS@As^|*Z%JP**k8l zo1>bFt_lDEYMY$s?f?KL%`T#{LW7lBzEr%F{Wd$&ftlGS>&eZ_3JrQByXax-yYHS*IUV5E>#=b7Me14X8*fdMn$Ye zbV9n1wD7lWYY)x6Z88+O0q5Zy#F?9RN$#9eOEC;|Iy7G%*1f60d^rO>TtAt3P|K?r@#Q z*T67xrPhTfB99&bL5>*3PPRm!^D6ujQ8L9Ox}`tMIVP_PT9KiX)Yi^BL?ILDo(}s7 z^2Z{lnm`te^XtzNabDl`?W}Fp<5i6JO!_@;=b{rq%1?EZbjYl92tm;U8Ah+XYh87G z&m=2ta6wF8Nw1-Tr|U5c;KRk*Ns}8{Ypg!BP0ayj?iy7T@~ZE6@7+^L?k`}dKK?0hTVw5TvM3=1|+uNYjXD=FPQAZ_SLND+kU zB%BJwMHV?rP4xq|>}dV+rNYvg8xe7_b|T+ndWsq{J#(_YAemjH*I4KG_+Cv^g`A4^ zlJ=!Ey}7St{rFt-r2CSgCj-0!@1i~0bI5N~8Yn@$okz68@jf5=+6lI8e?6crLbx8n zbhcmA+wuyf-ip_>ZRm7(I`19bzxQlDUqi&gsD;4xx85;gd;4U|w53X~__~=LSii9M zqSGW3TbL)q}6pw(q6ROX@lQ`EU=c{{EzH$?(g}u{VoRk?J88uy&R-226hjZBS7kg`_tB~C$FSE!+j|WtyO}s^R~(Ge=gVjFnX(}ghm6$6 zp-VFz@|N`|)`_O@6WysUKP3+KnPQ&}?O?!5hOqkFmM0M_QM3HJvM;EPl01q+&kz>NS z>1M0e^{CIi0iJ^`iu%+I@S38Nyz!b^5Tu+alw;nKLYaZ$fPj^9y2DS4={2rTq;Tj5 zPKTG>UhaaJ%Lj89xji3O_cYGM;r^su+JfxJuqhs!qY1<2?BELCb0M=^GU0Gk4RYH; z4#;D(2utCvGdBx9^EF#+&6z;zO-+$Pl|^L-$CN{7NzkoT*D(?VYrt^eJdOG39-aW_ zZ*B&`Z!Z*#+dr<8e}s$=R+YJqgj+Cb7h$1Z+j{cnvL-`#vGKbjI539MDSuA01y|>% zk<_DHvUQXZgb`7HZ&V_wToGb2MNEzn9n1Iz!Q zO4!=5(VS1OmNlq^-8s}))k41-9HxlP&l3eSW% z-8^3|l5;(eDgMOiZ;emhocZVh2lD}U3jGhphHEy8L1N`V1XX}IBS>m*@=Qi0K(T6c z7-=xdJs?|hf4XV1=z*ROZUI7(oRb?J4;DFPcHbJ8{<087l{q#~L(G2qz4o-x_O7RQ zxA^Avc4O*3IBV^TeeL4T_}ICoI;KQc`WJT!#r7TxMd|)yqnnGyjt{Y(bTQfrO3`+2 ziOe<$zc9@wQFdf!Z zn&fg(=(q8pm?Nk2q66*(r<(D1Rnd~L#)yWjh;q)-gLLKjBihYxjnv{DUsm;2`{AL* z#m8);@njWZWp@O}27ts2>J=Xr0mIU+*)$s}`mJT}P+Y7VNObCV4q@a|vMyvApQ)ep za_RvUaapuT9~g@%VXf2!mVRx^Ac$y>J;UkOu$L=AU0Md1CXD5|8PFP$k0wiGhQQ4d zmb#*uAhXp5;BX50pAeqYKVBy-od^{?OfA9!4X^S|Tty=jvRr%o2d=yG6`ypyIeKr} z=zZ^{_@zm92~za9F?>?$F)-F#KV)}~6fFQF=Uw8F<2i~P7F{#ZST=03;(P`j0GVa= z#i4SQul(`Uszz*&n{^S31EJ`P27!(#o!Jl!>+0=`oUt2UJ&#D_G<+RNZc#0$eGm?p z8b>&FformAa^F$QmHY+fOgMO0;pz@4wxBd*eiG^mA6P=5vSE%9-hn{uN9FJ2(4q36#o8GT;C(PAF%h& zto3ya`T+>JtGKM>8rh!FQGU=c|11U@>KAH!G4&#!=+o9IJDNoRnT{?$f0Gf4&+j1t znBi18WcvaSK`TG)qbaB?QgB%(z+}nE1^-p1Im`e#!`7mWoM&o^c@@~?;6}eo^Evx3 D4uTzk literal 0 HcmV?d00001