From 056feb4daa5bf2317f911d98dd0462dd73ed5de4 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Mon, 12 Jan 2015 15:38:21 -0800 Subject: [PATCH] add text-transform:reverse + full test coverage for text-transform uppercase/lowercase/capitalize - closes #2634 --- include/mapnik/symbolizer_enumerations.hpp | 1 + src/symbolizer_enumerations.cpp | 1 + src/text/formatting/text.cpp | 30 ++++--- ...rientation-800-200-1.0-grid-reference.json | 34 ++++---- ...rientation-800-200-2.0-grid-reference.json | 80 +++++++++--------- .../orientation-800-200-1.0-agg-reference.png | Bin 3623 -> 3562 bytes ...rientation-800-200-1.0-cairo-reference.png | Bin 2865 -> 3099 bytes .../orientation-800-200-2.0-agg-reference.png | Bin 4964 -> 6684 bytes ...rientation-800-200-2.0-cairo-reference.png | Bin 3853 -> 6139 bytes tests/visual_tests/styles/orientation.xml | 20 ++--- 10 files changed, 88 insertions(+), 78 deletions(-) diff --git a/include/mapnik/symbolizer_enumerations.hpp b/include/mapnik/symbolizer_enumerations.hpp index 74c940931..4b2770ffa 100644 --- a/include/mapnik/symbolizer_enumerations.hpp +++ b/include/mapnik/symbolizer_enumerations.hpp @@ -125,6 +125,7 @@ enum text_transform_enum : std::uint8_t UPPERCASE, LOWERCASE, CAPITALIZE, + REVERSE, text_transform_enum_MAX }; diff --git a/src/symbolizer_enumerations.cpp b/src/symbolizer_enumerations.cpp index 6f290f1f0..bd79562b4 100644 --- a/src/symbolizer_enumerations.cpp +++ b/src/symbolizer_enumerations.cpp @@ -160,6 +160,7 @@ static const char * text_transform_strings[] = { "uppercase", "lowercase", "capitalize", + "reverse", "" }; diff --git a/src/text/formatting/text.cpp b/src/text/formatting/text.cpp index 17b5ae2f6..8247bd26a 100644 --- a/src/text/formatting/text.cpp +++ b/src/text/formatting/text.cpp @@ -28,6 +28,7 @@ #include #include #include +#include // boost #include @@ -53,21 +54,28 @@ node_ptr text_node::from_xml(xml_node const& xml, fontset_map const& fontsets) void text_node::apply(evaluated_format_properties_ptr const& p, feature_impl const& feature, attributes const& vars, text_layout &output) const { mapnik::value_unicode_string text_str = util::apply_visitor(evaluate(feature,vars), *text_).to_unicode(); - if (p->text_transform == UPPERCASE) + switch (p->text_transform) { - text_str = text_str.toUpper(); - } - else if (p->text_transform == LOWERCASE) - { - text_str = text_str.toLower(); - } + case UPPERCASE: + text_str.toUpper(); + break; + case LOWERCASE: + text_str.toLower(); + break; + case REVERSE: + text_str.reverse(); + break; + case CAPITALIZE: #if !UCONFIG_NO_BREAK_ITERATION - else if (p->text_transform == CAPITALIZE) - { // note: requires BreakIterator support in ICU which is optional - text_str = text_str.toTitle(nullptr); - } + text_str.toTitle(nullptr); +#else + MAPNIK_LOG_DEBUG(text_node) << "text capitalize (toTitle) disabled because ICU was built without UCONFIG_NO_BREAK_ITERATION"; #endif + break; + default: + break; + } if (text_str.length() > 0) { output.add_text(text_str, p); } diff --git a/tests/visual_tests/grids/orientation-800-200-1.0-grid-reference.json b/tests/visual_tests/grids/orientation-800-200-1.0-grid-reference.json index a614346b0..1ab4cbdad 100644 --- a/tests/visual_tests/grids/orientation-800-200-1.0-grid-reference.json +++ b/tests/visual_tests/grids/orientation-800-200-1.0-grid-reference.json @@ -2,8 +2,8 @@ "keys": [ "", "9", - "2", "1", + "2", "8", "3", "4", @@ -35,23 +35,23 @@ " !! ", " ! ! ", " ! ", - " # !! ", - " $ ### %% %%% ! ", - " $ # % % % !! ", - " $ $$ # & & && %% % % !!! ", - " $$$ $ ## & & & ' ( )) * % ! ++ + + ", - " $ $ &&& &&& ( )) + + ++ ", - " $$$ ### '' ( ) + + ++ ", - " $ ### ' ' ( ( ) * * ** ", - " '' ' ' ( ( )) * * * ", - " '' ' ''' ( *** *** ", - " ' '' ''' (( )) ", - " ' ' '' ( ) ) ", - " ' ' ", - " '' ", + " !! ", + " # $$ %% %%% ! ", + " # $ & % % % !! ", + " # ## $ &&& & %% % % !!! ", + " ### # $$$ & && & ' ( )) * % ! ++ + + ", + " # # & & ''' ( )) + + ++ ", + " ### $ '' ( ) + + ++ ", + " # $ ' ' ( ( ) * * ** ", + " '' ( ( )) * * * ", + " ' ' ( *** *** ", + " '' '' ' (( )) ", + " ' ' '' ( ) ) ", + " '''' '' ", + " ' ' ", + " ''' ", " '' ", - " '' ", - " '' ", + " ", " ", " ", " ", diff --git a/tests/visual_tests/grids/orientation-800-200-2.0-grid-reference.json b/tests/visual_tests/grids/orientation-800-200-2.0-grid-reference.json index 7479bb64b..61fe64b06 100644 --- a/tests/visual_tests/grids/orientation-800-200-2.0-grid-reference.json +++ b/tests/visual_tests/grids/orientation-800-200-2.0-grid-reference.json @@ -1,6 +1,7 @@ { "keys": [ "", + "9", "1", "2", "8", @@ -9,7 +10,6 @@ "5", "6", "7", - "9", "10" ], "data": {}, @@ -24,45 +24,45 @@ " ", " ", " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ! ## # ", - " !! # # # $ $$$ $$$$$$ ", - " ! ! # # # $$ $ $$ $ $$ ", - " ! ! # ## $$ $$$ $ ", - " ! ! !! # # %%%%% % % % $$ $ $ ", - " ! !!! ## % % % %% $$$ $ $ ", - " ! ! !! ## %% % % % $ $ $ $ ", - " !!! ! #### %% % % & ' ( ) $ * +++++ + + ++ ", - " ! ! ## % % % % % ' (( ( + + + ++ ", - " ! ! # % %% % % % '' ( ( ( ++ + +++ ", - " !!!! # # ' ' ( ((( ++ + + ", - " !!!!! ## ## ' ' ' ( (( + + + + + ", - " ! ## ' ' ' ( ))))) ) ) ) +++++++ ++ + ++ ", - " ! ## # ' '' (( ) ) ) ) ", - " ! # # '' ' ' (( )) ) ))) ", - " ' '' (((( )) ) ) ", - " ' ' ( ) ) ) ) ) ", - " ' ( )))))) )))) )) ", - " ''''' ( ( ", - " ' '' (( ( ", - " ' (( ", - " ' ( (( ", - " ( ( ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", + " !! ", + " ! ! ", + " ! !! ", + " ! !! ", + " ! ! ", + " !! ", + " !! ", + " !!! ", + " # !! ", + " ## $$ % %%% %%%%!% ", + " # # $$$ %% % %% % !% ", + " # # $ $$ & %% %%% %!! !! ", + " # # ## &&&& & & & %% % % !! ", + " # ### $$ & && & & %%% % % !! ! ", + " # # ## $$ & & & && % % % % ! ! ", + " ### # $$$$$ & & && & ' ( ) * % ! +++++ + + ++ ", + " # # $$ $ &&&& & & &&& ( )) ) + + + ++ ", + " # # & & ' ''' (( ) ) ) ++ + +++ ", + " #### $ $ ''' ' ( ( ) ))) ++ + + ", + " ##### $$ ''' ' ( ( ( ) )) + + + + + ", + " # $$$$ ' '' ' ( ( ( ) ***** * * * +++++++ ++ + ++ ", + " # $ $ ' '' ( (( )) * * * * ", + " # ' (( ( ( )) ** * *** ", + " '''' ' ( (( )))) ** * * ", + " ' ' ( ( ) * * * * * ", + " '' ' ( ) ****** **** ** ", + " '' '' ' '' ((((( ) ) ", + " '' ' ' '' ' ( (( )) ) ", + " ' ' ' '' ' ( )) ", + " ' ' ' '' ( ) )) ", + " ' '' '' ' ) ) ", + " '' ' ' ' ", + " '''' ' ' ", + " ' ' ", + " '''' ' ", + " ' ' ", + " '' ' ", + " '' ' ", + " ' ", " " ] } \ No newline at end of file diff --git a/tests/visual_tests/images/orientation-800-200-1.0-agg-reference.png b/tests/visual_tests/images/orientation-800-200-1.0-agg-reference.png index 0bd22d32a92cabc58155a5ad3f5c3f1d49297ee0..5eaa3c15fcbbcbba154fbfbf228a235e0b6832c6 100644 GIT binary patch delta 3164 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 W|4lFBbqw{XF;eyzhHmPvT_E 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 G%zpvFy`yme literal 2865 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 K(feE1Ddt~F!y32% diff --git a/tests/visual_tests/images/orientation-800-200-2.0-agg-reference.png b/tests/visual_tests/images/orientation-800-200-2.0-agg-reference.png index 285d8c73dc0eb2c407378caf96bd6f8b4a88420d..1a9555e908c16daf77ff91c86853ff6ba3ef1c8d 100644 GIT binary patch literal 6684 zcmd6MB2g%mgM)*Mi;KIv`^%RveSCagzkZEIqcIpv zL_|bvY;0m;VoFL%YHDgmMn-mac7A?-QBhH8X=zPOO?`cRQ&UrWd;8a~Uwe9b`uqDw zMn=ZQ#-^vI=jP_-=jWG~m)F*nr3^-(> zW;$vR2KzOacG z)Yj&xBEa39VAYxZ5_szKLoEgp1SLP>C`LP4M)?2Bm{joFsm;5e1gmC zYTTMB-$iu|H)XfOsH#nGriu;i+k~8byuQiV(*Fq4EShyHRv>0&An9kAz+Fui z!$L8z42!giTnMd-3E+~XHb4C zvSG48tAl+eLCS(v9DEff0U4h9q_2|1)A!_WKD>{RRpn4v;n+e51r#ZE49>mDfJJ}( ztd*H`aeBkd7Pg5Afv#Q<6k}kW#A48o#<>w{_K0+7LGB-Yg_6&WVWUqT)8C~$x4Wvh zP5ie#S^Sj#G5Fugd#pM}QMxEMWHcrt+XG0`&sOzqa`%(IGHm%fIXd1uf`R@@3miTv zIjzF5nk15|7aSfn@zYd8}XUKjqZwd$SJ`p{aNm!57x+{BT}bNZT}mnfT_0`kj`B@RB! z46BvOf>%1*8-fwMb#@;flfSOAsWK$b*bdeJ57O|aZt)G%vGGM$OrYb>wLZXt84oWU zCx>+$5z(k0c%KBS+(Phn>Q;UuQ(fib zAA*$Cz4^g76EC{Mf4mdui8Q2smG(8fL#hdS!2wS?z!$)y6&@!HL&s@V1DcvxIGv`k zDz*R%oh~AN^#rh8;#~;K%<>_0N?!G|^_Y#~=4(>$#WKUyC{K*~@*~92vzP@_^aL%5 z%RVix9v{&sOi1P+^QJ53+-iIQc&Bj7Z%ER$s_mh(=0|f;-hT@UXH6I2ljTY6u7HBj zRoG2#9m$xaQ2KFdB9 zI;j?cA$2nvGFCKQ)>((`6>;=(b+5id-CSxlgHtF{Oq~OCxwbs;gV+^fglYelPkP`4 z%vEc+>1DegDzd*}G+Iev$Ae%vs`Ll?k+OA`*LPtrB!i4@CdiQeI8hC8bSXyidSJ3o znjP0A!-(^;W73?;a=&SC2}+8CSW%0Fu77-EJMa*2Ybw9dZ5xIyKj%0OJ7T}?*Rt7J z(l?rwkFNh|VQv-XN0=!sYpemw&6bKw+u3{|yZ&P?LHe1wpY#@2zrXgS zo1uDjyT151%AA6~rm|e=J&khk#*e(HimC;Jw=Jq0QJh3w+%suX55CV4T8H>*K9Dm& zGAuE-6uT=NVKI*)X!(0mh5g?}LJj}XlJrO~l#{u>_Rem$mYq9?3)Jt(2ugqaB$8{_ zkmnvbU7aAWE7Sn9#nm0-aRt)dx+om#kXd_u5AQJKQw@0!_hf- zbm}dK#%erPbWZGvRE{qNPQCjmp7lrpCiQ?z^QUISi-X|gzQKEq*uzZvaZbrom_qISiGy(KmPmN!K}X+9Zp{`D7zLf ztpkr{wfX9g?GiGqd{3(P>@wUXTrTEKjbf~PmqLwk2-cW@aJoC=j9LotGc7_VMmM{5 zp|?I5r_PxLdzE-vi)o;5z#n`aC)bokqk!&-6!o^bLMMiBK0GN~ne^QAh++ab4*?PX zSx5TW$P3W;`oz{;p_JdT@78|^^cwfx+~X&YUsS}m+EVwy~37dorDn>E9}_#vXwTPqy_JG+k>-lI$Bv5$xcg zgY~rrND6x#On36(8~EhnccY}tty&Xi<99wA2^??)t;%!+I90EZneUxu#<#NlpsWh1 z7vis!C9&XD78vN3KRpN-INipxe{9$P5Oi4Y39Wk5O>;?-8}Cp+|B29@0@^ZSa{V$F zN>vd_wXvhSdKh>5%TEq{TB~7ncfvRyhK((!JUuS>r<*NH1bDvOxZ_ZGCzP}bf_haaz#&N$5RgMjqom6(U} zkMs}X$MHxkjV#_%GFVD+k{nt45avQd+_)HJi8?hnh#t%dq5D z%vWJjP_S>st3-?t0Tzij8btQYj#@FwvLaQ%uvi2^X~99v-5{QUhOFkUe_v za7^JFZq{EXH&IPI=W3K`a?I{KqWixIy-a$=!j88jya(We0GZAaNo zZT7zL>|p1+(o`zkW$ye70~86ea2dE~^JR)SLtxRtLXPAjr0$0xVhlFr zDrX$LN<$!C8S$qJ4vgo_tWDZq{^JE~1&ql>X&Q@=q%c}lG@j=-}1o94?f4^z;)dqL?B+yk+}A8J4H%orjli>+zRr>6LF5G}U2crzz6&BF1G3 z`Wz9*V}E)r`9Sm$G8BPNsq5StzVZSe&=(9KVsyY9W#Dn1Z_6BgT^XIhn&VWB1(~W3 z91t)_EmH=3o5=9FBGV6{6&vlq{75MFK9g%i7#vvYQf8hl#SpIRCUwE+fiUkq;`g_# z;_TB1mJ_XbxR3OgiHENCCVkp7QpNbeuG!mt1;#9K}7UZ;MrZ+tky$-?mTE2S@ z%CGz!2%`jqPBo7Zve6*o&y!G-vTu0%$nFF`6xMOcX*)7uNzQqZ)`D(MZ3*V4e+lsr z&gkBXFpuOtu^)aV?HtN5NP}eHW>163xGAYN?-&oY!Ky49wgXd0tz*4d0hx%TR-86i zbsN`zX#`(?#X@9m;ITNRIEXSVrF_bQdtg#(&Y1Ghpzb;(bZ0C$=rQbqys`W^3MeWwgIkP}}5|#frPXkmb~? zny^^rsR&yWnO1uU%YNdUwaIMaVI&tx1m9A)4LyyT9=M)%w0AS}8n`@eBo3MI1fny(2!*0$X;m z&b;IQS}UN9kVAs-akPK$>7d4kh7-EyI(!>6pQb|sBi=7U4^v#PUlz^Qu!5Hoe$d75 zTE9@tt4L zhp!fKSk!!2t5)10HUVBjcEnvvkEU7o$^YuN3*UeGYqZ(U>80lH0E*Sv#gyL9&~lW0 z!%TsG5w(i-y7yCtE0VFD_s5HsW>j3q=LiY-BY|27@~>#&Q`W9hik)SFt}W@Fp`Rjx zal(HiuUN7$o0U5!sWyoBNF7MUu;IgiO3BW$F}Z}h_UA=c)6^}`m*W$(8)$?`u^=H7 zK$ncgs7i6oVkqt)g%>wt&PY1eYn0;)6S%$TN&mn+85iso7e9U~c*Am#pk zt_cJ*!B#^)>Ii9D6yHl;{?L;`Kh709#vrOPgm5lLyfwG3)^P;vO2DU?DbV5bR@K%o zxTHO-&KXx@8eO|<*TPIY>OEc=Y)u1$R$;g6PNQ1JYQW8spX<1oHsD!zsKtTgkNh&( z#>H>xR;{iFKhG_wch0YQ(SD-25t)m4P60n2-x6NQ=^vK5hTXK|))s~+nuU83 zF}n~~;QdE;&=#pqg&nxJ$5Kg}u*fksG z!L|T4&ipH$}>$Sx|o z?!c)MPN3ZK#OT=N7mY3*FtDn7y5g(y+h!@IGBt{ttC=-ZnkgM>pTOTD+Wk%ftW?M*m;{%QKv+9OYTnyrgC#y0zh}QkL7=i)1Nw!`pLJMz(g5K4 zii)>!KI-C%=#E&PCBW7##TkR6*Wd#~9w9#bSAelrZTxC@rb*EvlW%;b^q^Rk^SIPX zOBwB74J*@Kl(Bb3nHQ+brMz6Y6Z9Ke@O~wUl(K0NU!&w-cSp|e$~JBCZX6OKd@Xb* z85JKC6|OScv4AZ;vBoIz6owI+=D}XOS?&&UH^Jp|KtYQ8)pVb-(3tbD(gp9b${QpM z>F1nk4ZKz3JrK5H-cMqyLza`0EnoNHq3$Le1>Vjhyj&9Y2Z28g!V&(?-7BS7+nX$R zulrzOmOxk{=uh)ISefZl4Cp)mj7dJW`fbfs$QW(7S^ zgolkQ8^SixRaN$IpO6WJB0jFP{Pv)Pd0ZsY?+wd1b3=$l+oJE=ZfUcudFdFzzUDu| zXCgS6A$hH0p*1`e2vudIm2BPl{3y~!e=hR(KR4?)`r_g$MOCN$=MIkag*5q7+0KH^ z$)%hEIkrj`+D~UfS}_&2;gvpC zd-0!;y~M*WuZaOq`FHA3yuN17Q6stf@*t8zyS}owPHZF&Jk~y4d$arrcE+|4+sEj& z@(fRMP*-DZY$)~GQdTjTeZS4OfnWl4je?G3{-Cdzo)jj9#sx`Z ze0g34VSRr0Yj>tu>zL%4Puy3vUiam*d-~-=>RFDN0XR&f(UxB^uRTd)_~Y01Yv`q_ zGqR&*kw3a{X}qiDvWEO8-)nLlT*IKpmv1q)Fh!L-}SAEwa=8)oqVxMDi`ZM zWNDLy`R(_|4nUVVQ`p*TuNlbRmmBE}&F# z+5NJA6`cO*q|~9I7aU?KQZkpwn^5|WVcS?)ru}!c9OCl}Hs-y%33n+(YU^JaB*f{p zh`)Po5=d61%+i&3bUwTKFlPLA!!_={xmWMr^k;aSh6Op|bUdx7j0R*pP-R8CZ#+cP zEXW;g4TlCuVtj@NY;a=T+grI{Pj2-mY8#2KtIr~y#c~ZsYY54;0C0HHCPsT}nA%EB zGC7)uP~k zqGq<@so`Xn6&IArjAA;esuMU(UL2q1)T2C>nu6F91(i;k2MJmt-9KphthC;i(RCJm zgS5H2DI_W(0n(BZn~jpVj^GnDi?nkTRXiUmmj z_hlc>O9BO+PNZ;4u#@pbVUBkB@pltunKSt#w)8wxL&mUu6u+VLi9gR;2B-wb41o6Wt z@-noUD3)~vNY1&tK(lO6>$!1R+*)P36M$KGqmbg6%89B$|8#DEq1SMblk?6*2nm(~ zVN3PNT~miw_tIsJPDUrwtFDEvP0Q*KlL8OeEXv`TI*cZE=D=X?VgrHf5F>gW6?q8y ztPG#$w$<~Xd0o2@7IO%V?g+*A2lZAe) zgKH2O>rrbWNtPmck=w)9jiTxa$P#u&(Pxrjk+3KZNsM`Llq#CZ&HF9|s$MFYnb zEoRrqETsAffl%?(93hGEh(1HPL}MP8;M5lW>!lZdsaQVq80pJ~^;05n>Ng|^6)bSo z0PLV?(AtauvL8pcIR)4GhwU3z>f{b85W6sE4_ViB=W*FNDImE~jARKNSa<6< z45K-kBb`vBU?STtqu+LM2WJzC(R`FQo&TrzRd^Z0svriV=>$+#|4q}T25RZFQM!@h zjiy|6eyQjId@b|$FRYjp@RA^vp4oYYHze^;b&$WK2hUl5Qryk0j7p|I&O-dG@#|LJFQBZ2RK*!gX9is&~id#0vXY5 l-JFi#wpva2zcZbRPBrFtMz=edZ@+m6wAA!eE0k?9{{xi(f8788 literal 4964 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 G@_zt!zP9oJ literal 3853 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 W7)JP4rHcNw0Gso6mKEkVaQ^~tlp{O< diff --git a/tests/visual_tests/styles/orientation.xml b/tests/visual_tests/styles/orientation.xml index 387b5c8c2..aaf34575c 100644 --- a/tests/visual_tests/styles/orientation.xml +++ b/tests/visual_tests/styles/orientation.xml @@ -17,52 +17,52 @@