From 1a2c4c1645e305a63b9381e3fc3574ce06627074 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Mon, 22 Jul 2013 09:14:17 +0200 Subject: [PATCH] Fix build --- OsmAnd/build.xml | 17 +- .../res/drawable-hdpi/mx_amenity_college.png | Bin 1579 -> 1530 bytes .../drawable-hdpi/mx_amenity_kindergarten.png | Bin 2576 -> 2479 bytes .../res/drawable-hdpi/mx_amenity_school.png | Bin 1535 -> 1485 bytes .../drawable-hdpi/mx_amenity_university.png | Bin 1402 -> 1354 bytes OsmAnd/res/drawable-hdpi/mx_education.png | Bin 1402 -> 1354 bytes .../res/drawable-mdpi/mx_amenity_college.png | Bin 1173 -> 1115 bytes .../drawable-mdpi/mx_amenity_kindergarten.png | Bin 1437 -> 1432 bytes .../res/drawable-mdpi/mx_amenity_school.png | Bin 1017 -> 1014 bytes .../drawable-mdpi/mx_amenity_university.png | Bin 857 -> 849 bytes OsmAnd/res/drawable-mdpi/mx_education.png | Bin 857 -> 849 bytes .../res/drawable-xhdpi/mx_amenity_college.png | Bin 2064 -> 1990 bytes .../mx_amenity_kindergarten.png | Bin 3760 -> 3644 bytes .../res/drawable-xhdpi/mx_amenity_school.png | Bin 2053 -> 1987 bytes .../drawable-xhdpi/mx_amenity_university.png | Bin 1870 -> 1788 bytes OsmAnd/res/drawable-xhdpi/mx_education.png | Bin 1870 -> 1788 bytes .../osmand/plus/render/RendererRegistry.java | 3 + .../osmand/plus/render/TextRenderer.java.bak | 494 ------------------ 18 files changed, 8 insertions(+), 506 deletions(-) delete mode 100644 OsmAnd/src/net/osmand/plus/render/TextRenderer.java.bak diff --git a/OsmAnd/build.xml b/OsmAnd/build.xml index 0df9000fd9..0faf89b34c 100644 --- a/OsmAnd/build.xml +++ b/OsmAnd/build.xml @@ -13,7 +13,7 @@ - + @@ -29,22 +29,22 @@ - + - + - + - + @@ -56,13 +56,6 @@ - - - - - - - diff --git a/OsmAnd/res/drawable-hdpi/mx_amenity_college.png b/OsmAnd/res/drawable-hdpi/mx_amenity_college.png index b435c17d74ee95a7ab41ee9156519a16a78879be..ff12f1237475966b5ca05a42024e5d5f46714f6a 100644 GIT binary patch delta 1494 zcmV;{1u6Qg4EhU@Hh-^4L_t(&f$dmdh!s^B|9$7~U3ISiLnJB`iLg>(jk3ZDA2dYM z#C*sHsVIChS;aXsH;8%i&aB)57YerMMM-H5Q!}GKMt|5!f*vd-WBY@ciOMFfd#~-x z`Fhxy?dxS&yS8b%Q2CM9Kp=10f3p$12`R;mOGAP)H`0?30%8&?GYlH4FJr1kci#^03tG~ z)#}Q6$E!O5A%DcWa9Al63dg#;yT1f*5df4@>zJA98830N9Xoa`&gF8;M?D$QOr_LQ z;rJAQuR>D`Gv6PMj}g(?(az1x=RD8bJ1l0BvuT=LMD);TgEShx@6Rol%fIWo#1bN+ ze3JgZh7h7@m@dVa8=OnskVt@;|2G7NEeQY+5d#1-?|&0Qyrr48GV^L?-YSGR6)Bl{ zFMz2;GIUNK+rBEmsN~r=7Ed{U%K+T`qL;?|n5Wl#t z`$;65rn#PoKt$iUuG!srZziGV`XkwzfZF`s)CC0PF{_UrPA| zfIR@FjekTS^&H><1S!OlN^HnnK@h}!j`sBQtkjclZEc-oS=Kz;wrA;%p64B5<`n=c zV#4aKhx3C(H|)+%i7S~+zxBsh-qHxYf5m0;!`Afot9>I9HlLS4EL z1i}1hY#7E5G2chi;u6sin^LMf%@-JX1r~1EvSqLodU|?30Pt&k6NhB?#1eT}6Z>NR zGk?uYZdW;uQeZgr6VsJnv*An5MZ5zyn$FvIq>; zIWs>-MBhp&m!>(}wmnNq*#V%OV1Cdv&6gvgR4SbzqUQkgYd)ua-+w+5!iRzOtmHEZ zB=mE41NcHp`ID6LUfm$2d`~HL4!{fX9}&^#M6_85aX#D|007r@_c8Ns&2NoJ88qXSR_0V(AoW}X88M0B*X zv$LTGlMo_W;hEKHHTB{%=wHK}Ys0@j5gi$GW;LR>xA$WJR{=mNwRQyeYyx2my%Ye5 z=<8Ccbh#c$W}&^k{W>!r4^Lw*)L$x+kV&AasmTD41HeLv1NBQY8~J?xAOHmbLWs0> wrZ(8NJ>RmdmU<*M%DDH$+xBscV;sZr4`*v4EnUV(7XSbN07*qoM6N<$f|N(Vd;kCd delta 1544 zcmV+j2KV{;3#$x}Hh{ueIDnOv@sOYjtY}l{?q#{wNAT|xOvS$+9&<63Rw6vLVEG!l!i6|-v zRi#u-2x*XGduHxo5x?o1nfGQU&J2Gff2()SJ@20H(>?buY=2@C|GUV|=eF*h-Fr(f zbGTl0JXRRn<;#9<#jTtiJ2Cc&UghbT0P}X#umPaYd;i5=<>`rl@t=)vH*8vkoX{Zvp?81_04Cc%a%yC#+v&P4Aeaj#fZG8u zPLg7Fy=ka#wSVtGxAS#>1RM{qe_b1}fz!j~;a3sw0Z4inL)}al+gY}deZYCQe*^vP zFxm9__j#FKThFrFus!Sk(=xra0j6&kr;Ep%-7yH}f+8Zg;UqnVq&tgK#lJ>#7N;u92S$j^KE!YSlL@uJUe>4}P90WIh_Umu5i4Vf ze;?!BjR^o`+FoZ%S6alr7qz|lTKzh?`G)YX0sS%EWO65Rnb0^lb8Zdsi&h*H1xPZW z{wC#F1dxv{p<>h!s!if_HT{Q%*iRL6x}N-gOw3UPf9w5s3eg}J`2U4 zNM+c^y!^HX|NYRk>4n6K#UsV1h@N;uFyS);3cYNoEPdAhhoWM(9qN zI(b?=w2^C6&)!D=Q%D>E!&+VJy@)*zVKNg+tot@|qDtJb8-pnJ@Rul{2=#SsX15}S z0E8|Y7QeI^u^c);pJBHF5?TTNS!)p(c6FdU&~&u!=#^~b)W}eJHJt~x0Dr$t3+S9S+G`KP@A zLxz10K&FesHvH;Mv21}e(`U{Bf4ZL54(|QU-nPqpTLGgdNACxA0hqHF=4R%4x-rQq z9N`_ymzNVSJ|Wr)Ncq&{`hRD|%b&U#a-Cq?;I>}^R{@-NlWoFV3&_pqwwl>EfTYsm z;l)c`Vc7zwKXZCjrtnU1U-YFS4lM;#s0_&|1(-LV?-t2+kkd(-JV2Us?E2p^f_!jy ukPmiuh1m@tGn=`$@z}nJO>CkW{{}O13~DciA`<`r002ovPDHLkU;%>De*&=p diff --git a/OsmAnd/res/drawable-hdpi/mx_amenity_kindergarten.png b/OsmAnd/res/drawable-hdpi/mx_amenity_kindergarten.png index f9d5f052e940c4a303f9f009424c5f2bbedc5e13..e1e55ec38a0db5523aceb437d2137f0c1deebfef 100644 GIT binary patch delta 2451 zcmV;E32gR|6t5GIHh*MEL_t(&f$f=nj9k@u#(&SbGwYqT4K{Y%rYW?hD5+~=NFg7M zNGYfZQ4|VoKxtCiB&y`93QBFfJ9ic<)kwwKnY&gfa!TtcRr-+@MWiXN+Cb8X1VM@k zB`yTVf^?lwFg5|>V7%+~?#_Ao$33$hufMPfNR{^eYwo@0<9~V1`=0lG&Ka1ud7HO+ zo3~eCdMyUc^ZYzu1o!~(qU~?Q82@JT=FJcOwCDP%5*Qj9`d|p*)3z@Gko1D>DzHRS z0A2(;GXQmfT&i7|c{SPqN>dn7$)y8~cbk`@8WB%Nb> zv28*K`+#o&cYn58t!+Sj-3Y8-zy5-1wYmwoT2jsS0bmcXUy@JJy&pISSSo3$?TYQr zz`($H&1Uo2)4@?W6Yv{0Y`7}RvU?;!xoSHlJ%1WQOxk{q(qk3dNXiZ$KD-oo?FnRA zR+B`UH~_1GX#1d~G0Ip!kp*Ctq~(AlP1+sb$?SDO8EN4WZTCF}aGc$vv{gfV9 z3@iYa0GGH7`U%@(l3wfqzM3+01Weez&-T;6Dxh=gt+&2->};3K;Y>O;o6UUywgYg)_Wic^N}2-p z1AAkP`+w7Ouss0K>2w~p{e?N;k+cAqc-;t4#(O8N=x2(e_;67amrAnQPO!a#wS7utJbbvTOAo0c{0!QZIXUB5k4t_ z7~_GHd_OY+!^6XW9AmtVGSeKC^sBbt1LTqp0kVDf=;-JeFa~_Hw||WBen}sZgrsPn zuzx@=2q7F892|USrBb;DxGc$!-)gm5Cna`V0=Cs?G`D?6TcS05V_^@Qajb za~1HNdcD3Fcu3NINgr#qTDv*As-DmTDa?L5%d(HVoMas6xBWz(=U24b?VTs;d(0*t z9v)uSXf(bDTt~U8k9S2GfTRxaQco4Waew{#_2(2t@v`lI1g87@`(FgevTTC?(_6qI^IG_(k}r&Z~JRSQG9?NZz_TRofzXkr4G}Q4gmiHoT|74;BB@S zCvi8Oh(9msb1}v*h7i6BywUa!;D2FB%YgR+izMxdG46f^@*Ch>;C$fWTCH|Pv)P>J z0-)3B>`dS-sS2zBE(LxAc(?5ffwSh0C~0K^KV|zt%51en()qxrvn<=*tz(iRa4~SL z?XxJw+}JAw5AZbbL*N|~6B94g>-C?5o)D_n>r;{@fxiRJxBYI)Y?F0CB!7a_ltpKT za%HC_{k`p(1oT5d4H%$w^%P}B8J9Fb8Di76-<X=YB_J5&3R3gzJh^eN!B5W@SjEPHE=@p9X{Q=e*#aZh)Q*@Z6C8_J3 z$EwxpA8y*TX-`j^=YQ(;`rW`M6Xw~<+$$x%o+dxL(P;catJV6^;NalGEX(c!?j9K# z`AoCfykTNuVwbELPgTsZNEX%$BLqOrgz*;n>IZS{6Nw> zD7Am@oLznO-G5fA^++14t9_o5v>~1J_5xMgop!tZz2g#)w2N{hUokW^bn(`$TdTI8 zY`5EQX}8-C05qG;Zc2+ir>&L1MZjOR+wE<0S2+Q_k}`8#Nvc1R26_%V+k0?SZSM~u ztZTJecf=TfP0|~a2aeK9b7T0cz%?<(_lFR!92*;(kbg9u=lPws@914e8TpZ6WRZ=y*$;3j-=VUB-Ja^=;M zejj)bWzkWR52mcloe;wNTCLW-ry`In)a&&}B)ysPz;glRRm>Fd9OZTV1(ag1-}Zu3 zl_RALxwdx?oYv*;#*G`#ot~clBS{~m%nW_D?|&$Y;-jZC&P_MnbZ)g;eVkIBRBZ1{ z+P`1r9Z_FudQj4K+h3^FYF}U2&O5spMkxS z?(1|qTSrGn?>p5vugO0&uhjB9-(mYA;K>lezhqgqC8gYXo40wJxBn;hzXQ31Ppp`j RW()uT002ovPDHLkV1itK<~RTV delta 2548 zcmVI_6szaML3Z6l6hnEmTkXp`_U`mk(~|s!efOyFN6zE2!V)_25q0PXXHHz<58j45KClbQ@xpy zx{-yzJ1-z1Y0M~tqahH8v?8L=S;PU`=Vs_0gq9mGp?|spMu7uB>*>>{k6kI3SqY$l z!;AreAz2Y_w_DD+XB!Hw~yA`p>Shh!GJ!Sb-U^$Qs{>I?RcSS%Qbw?u+ zSpiW2P6=To3C5^mm0@C%KAcXizsk`*4QdjAt zF%wrC{~&Eu5gM|5JpKJDu;-%YtOnb!&xXqE1XM956o~xF%HEYXAY8t;JW%Q`eNNIE z+tuB~=|b@gdwifCF{`9DyCANjVw{n5v!kCVY=18NJK|R0Z~D9X|F)yI<1?9<*^X#P zNnTQbqUs5pnGK1{3RtyeRX!3QH%8WrmWv6=_b{VEEtVe+A$&WD$ue0l3N3GcxV>)I zx?L~jH|MtseHu~qz$MbA<$77C-gW``p8RhmF?k445jqR}GUj6$GJgQP4oHc%^>_6j zpntk${;0OU&@;yO31KqgXy%bY-9GGopXv46PGTX-Jm1`c5MO%`Q9`uz+6go4n6g-wM; zeQWy8Vg3a%mJQiz^0G!IgP4oQfN>7U2vvaRWbHJ5*7hEtIjJPOS8QIf=28Nt_;kgl z746FC`C>hCwG9eAgIcc}~a84u4u9>mYdy52a*8nt{@s0bVa z{-@Yoe5kOga1DXIz#`-4gvtPxgHYb~4ZwM!L34>bPz{_9$a-HSe!tvRzN@zE7C^o? zzmCY3wEY-xDiU82nlZT;2ceG$wSO2-^c}W+Lg;Jb9{+YWWPc1?joE|PZM;}PpKx?D za0GGia^*LGq@~8!3hl1sDz^=+9vGPvuxjh7>*HAbFJm)pSqW8apH{f_NN zC&}h}@)e;`;G1cqmFX!eBSbpG2F4I)Fyn};iHsq>1&pU&=@M$R-2_CT3Zj7w!;Wsk z93nENpbr8kjrY#Lc_HvV%zOe_j3&4wA?ez^Zg+3(Hadh^faoiAmmb8Zu%)nHXufey zs0qj!=VZNyD%-^JcZ9}k?0=jG{yRhF_oCuo8-GLyCvL(Vko07__cZ{^5I11j%J(0e9 z!_C$6LFilG_e`<7*iN7o(I+$}>8CYKpFo_FwFI~YbF1;S#?2}D1b-M2Iw9-0(21aM z);K8W%tRp9=7Bvx)^^*(0|)=e_)*LMVSJ%xMn<{V0d`=2lM95v+-5=f6f0wiPE9AZ??^AYHE5M*j8Fs`bz7j){XO- zzZG$#ZG@(mB8|rHmGyG%!_mxWOO71I$#lWSL8_J+#s?c>Lx1;<7j}%~x8#3c*6q>p zu|U{J_1Kval7q_={U>K?@BMp+F~dMMWI`*zHA}7;7kaVIM;wgPOsYug3HpBSG@vPm;Qaj;kdhJ|cumWsI9_Io1nv*nHD!?kvw zUiiFK?Yb%K#qr?Lf4AyKSWe zo6^rHRH_kG2MhsUEOr+k4M`{nT@7TX*Gp5@aN^{9L1B&UPdfPa+@ah^;$*n6rLdWV zM=Rr%gSjoaUj^nXD5e)#R{^(5DiynnpT8J+fbz!j;f_rm4}=hUgl+`>6S0Kq)lyP> zmlU$$zJGIP&c(g=?;T#zvtlDKQN(3|SEfw*ltDI>zeZ#Q=IcU-ffh;EIQk0&cI0xo zpVJNno4 zKY2L;0DOs1Xe|sNK8QJrxXySeO^B}{PGYW02{#DU0~y;<(jl^}t&M>zy4=0x@mrQw z#w))W2zMJV2XdH4i|dP@xe_}!|I^J&GcB2Y3Tnb+jgJdufQIyjFQ;mloRw5coIFw< zEN%DjrD=)qN(D?u`y=fi9(Z8j`OCL_Gdg=ZSC2EkRY<@XP=_#)V~D4SJY3vReCl#` z-jRQ3{;w$X6!sY3DD+Yc@w@e*{;N-~efrh^Pfl}~!yM*tW%ytEZNVUfZJ+-D0000< KMNUMnLSTZgBLWQo diff --git a/OsmAnd/res/drawable-hdpi/mx_amenity_school.png b/OsmAnd/res/drawable-hdpi/mx_amenity_school.png index a6bf64782994affc998cbfb83a234a8ba733dfd5..2d9653ea7e3146c122064b81ef3c023eeddf1ebb 100644 GIT binary patch delta 1449 zcmV;a1y=h13(X6VHh+RiL_t(&f$f=HXdG1($A4!gag$v?)@oI3(fS~$SijH*ttdkM zuGNBCDIydxKGaGp$=qp+WkBritO*Lm2aEcog61J=sTH*#Rx1icebAy%QL)sIHlnsW z8?!UVhs?$?Ci{`hh(iA`aPPV2p8xsJo%=B}a16)r-^JRsYkzZ|=k;XCVPzHAb=^hz ze10Sdg6#tX1D9mQlbHZjy&LESx&qa9#IgU}>W+B3JbH_n(smS5_l%3(%c3 z*tWeq3!>Boc%Eme>M{UTJ*cW*#7)<)U%$RLZNAh6jE#*g0nPwW)e+0GhU2C}cX#*A zY4fEnAc~?D0Dr1lD-;Sl_wV1o8~7POL{_M(q{%mJuz`Vr%WT`ezT;pb^P(uaGp_Cv zk=+2QdKqwe?DGcjeW$Ti^?>jDFZ_dZI%mgm-WQQ2oswjYdcD4AXlUr$q;1+qNJP2- z{a3Q;0G4HSO||{Q(15BUGC4rs0UxXCD1e9*Rds=gTz|>j=h0CS*%d|64~^Ks5@10) zoo5sfBT&@`DwWEM(={4nt^#%fCw7o<60e3~_~78+;7>_oUteE$u~=LqB15#eL9GNl z+eqH?JgZi#-5y2JynH@C?0MdAzVGjGU3aUhZkk2%yLx+j@A5pa9>+iK$dMz(!NI|w zwr$%s4u3pljF}H?oQr^~jWN#y-&CvB1tQWXBDGqrHVTXYh{zt*&ZmoIS&uf7H^wXu zf?$_z+ou|19utwLq9{67Rew%A#p!ORegA9Xy_1t<2cKMAUGf*!8He13N-J3RTIx|s!FTwc%a3Qb^cnCP!EKpMc zwr!72I$BmQa0qz1r>AG6VUMCHIRTD}$h^h{?3gL``1tsJjk53i&jKq&&B$<#PEgKz-kTCE4z}?jluvu33KV2zbI6vlw_&L`H%6s=5-m#&umk_5rBJu{v3f zdQ|mI*LAn6>Km&1wPjfvhGCCoSxZ&*et+QjISBx4U^TFM>Qbqy?u#Esj(Lh{)7Qyn=~$j&o|Y+JE^8 z`&VgkW;z1Eq*>C;=SARyyJ4Y+%{ldS{!Nb1E&~c-cHo7HO8z0-UbRm5Znfw zl_ueg0;Jso`QMQv@l7C=#)VMqb{E}=`)!zz* z!jDrswRM;K`}+&FZ4Wc?x%?B~_aB*KveUvC;{rDVk!{=eZrQTsV5>fDP2#Sut{a$0 z9uawcPFXgAs=n69D-6SB?eu9!fB?70170 zx&77Iuwlb_uIpyD5jEkxU?StjjTimfyvJ}1|2O;zN`47HlX9q500000NkvXXu0mjf Dg&@k) delta 1499 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 delta 1366 zcmV-c1*!VV3i=9=HGc&!NklfK+In%5o$E0fZ7q87KX@R zd}Fv4e~p)11AkavXs_$D7-!2hAR}u&4e3+B`!`S+D%|hrqrfiUuFZQWNrk2*o#;$E ze>Qw%_$t7<4fGa!4@AdjF?RzyH%w+DQPNZ-{w^v${X+i>@6_L1vw_}X?*Zdu#=C%> zwl_@aGK`osE=u}Qxxf6Mm4aF}kUN#@3kt`K@3y^}BY%#h2}ci0`hMw9>CIJR-z!<} zbgm~5jw3$4*}{P-#F*tL%KhbYt#oK=AU~MjE9sYnEfIbhc!|gp_i)dv4TMl%4@52Y%q`?%}0#ml%B=C6oQ2A{B_xXoOIS$+jbRqtgD*eLp zgc1Am2L;Y-HHg+93jBYwsBqJzIz>972?r`U5KIGhCT0&aab$T$kUR-LZydHKS3mZxP^foqnllBNJ0eQ809dnA1e*bXF3%7QSFOOjIK6!S)QXZFj(2ZrZc zHh-|^#GXv&ot+nf%d_vy-do#I({^pYV6AzLq`>S#L1m1a?LR3C3;Uw1=Pm!KtE20s z;e*4I%@VJ=k#%%;^bxrOcy{c&V{`da`3Eg$R_oJ*gvH0{`T=e^=Cb8Kryc1JUVQk) z@m3SBY9Pe$0Dyvq0Bk=dX?v^5TgCQ-qOC%rpy+0EjFmyJBo(-?xPNN&}^Tv@ZJw%?%h)+} zp%UV}@f84B-H7`zUj+6DDH1;@wDj>4Zz-sE^x)_}*CT#a1N%pB4&>{|HQl z5bhoAA6@a2?q<_41G0W9ss3zv3n^dQQdMi9VG$eerfy~=Wq_`&6txx_*MOO`9qX={ znVmVcm7>d;Dk>?4V2gYSx=5&!@I07*qoM6N<$f^$KeNB{r; diff --git a/OsmAnd/res/drawable-hdpi/mx_education.png b/OsmAnd/res/drawable-hdpi/mx_education.png index 33db3c042a7bd3cb735b911428467a68d28135bf..f234db87f91cc4480fa4070e4167a173766b7c75 100644 GIT binary patch delta 1318 zcmV+>1=;%g3d#zQHGc&ENkl=li|)+;h$i(4aws27e72G`Mw0trBnBwr!c~ zx=tpOnQUrmx-mF7I97{s=G{Ov8toyuhvfYL3;>7-j4_Tq91ZW~F62uRMF z=bt`Gsk~SKG=IjVMZ_hU5s|F`=58PoiL3#zhvZTKcg!_kDMUmANGhccHa9oNeBYl0 z<}igk&s!}b`$*m;BDc?*(gH-pkQ@i_iBf7uEEfASuf5uYp69IwuphwES_((@JxP%K z+!*ur@bK^-#X41NAQFkJBDufTcN_pnjso~jYyH;9$bZPia(!nt5RFEAj4=mD-dk(o z0LB5FB)KUFf-{u_lr&&hmG|o;{2G8$05+XJfBtlLcXuy<&BmB@LqkL7$_36aV1>U2 zU>SfrYa;h1<0LPV+&DBeblmg2my}WmNZtk@1mIVt)FXv2ZZ7{Ch(scfkvssP8$eC( zxQI-Uyno_2&YJ@R1K)1nzJ0aU`Y^J~a7#{C1K^z2dgbu&@Ki|y(P;Dut@UvcA%Mx8 zfpn40hlO=^qbYov0zehUib&EJvm+c1f1FCC9wzybh};LDy_i6f*8v<0hr?@q-#0}K zl*0G@)^s}UXmo9)(M;MLlQhJ5tQKi&Z>2&(k-o1MhrE-@&3$?YitpczFz`jF= z4&CVM>szOka?8aO!`|ryvvj*g@@v<1`*!Wxb*a+aWetePS^#hy=ZGygkX&48@+uf5 z`9=@~UsM}7+iCPE09OYF27dB=Ka@(PdVfmvBeHW}+v{fgtAyW`QmbOI*v}RA&!e0H z0q_vX?*TBGOg^iWa_tg2jqF?%5jjEf2N5|7V8X_B7-Lq5$fE#OiinVGLw5e>i8sbP z8IQ+*`7h$j8tCuuzX!lV5jlgb(hVeCl9vD+1aPF%^NQzrD@5dZ0Iva93Sc3C34f*3 znz@KCYXCr(Eic&e1b}yfAUIa-AlB#^06{bw?I8K$^z`(}-Me?6t~OU8B@Kwk-6TQs zG62Nm@tt!W3;<%W*i`_B=OY&|bF0s#)0V%@*I>1vr~%LOUIDNX0364udfl%lGj`%g zB=R!J&v4V+xYl}ksZY9F&5S2N@_$|A8(RS2xwb}y1Lr!Um8hUl`+Od z>o2Qv@(e6mv?vYWD9N+-$Z)x(rRAGjBds!ue$Z^$vSmpq6nao=-4O)Amml>O)u2Ix c2LB)a21bJ=PdS$bvH$=807*qoM6N<$f?AkzdjJ3c delta 1366 zcmV-c1*!VV3i=9=HGc&!NklfK+In%5o$E0fZ7q87KX@R zd}Fv4e~p)11AkavXs_$D7-!2hAR}u&4e3+B`!`S+D%|hrqrfiUuFZQWNrk2*o#;$E ze>Qw%_$t7<4fGa!4@AdjF?RzyH%w+DQPNZ-{w^v${X+i>@6_L1vw_}X?*Zdu#=C%> zwl_@aGK`osE=u}Qxxf6Mm4aF}kUN#@3kt`K@3y^}BY%#h2}ci0`hMw9>CIJR-z!<} zbgm~5jw3$4*}{P-#F*tL%KhbYt#oK=AU~MjE9sYnEfIbhc!|gp_i)dv4TMl%4@52Y%q`?%}0#ml%B=C6oQ2A{B_xXoOIS$+jbRqtgD*eLp zgc1Am2L;Y-HHg+93jBYwsBqJzIz>972?r`U5KIGhCT0&aab$T$kUR-LZydHKS3mZxP^foqnllBNJ0eQ809dnA1e*bXF3%7QSFOOjIK6!S)QXZFj(2ZrZc zHh-|^#GXv&ot+nf%d_vy-do#I({^pYV6AzLq`>S#L1m1a?LR3C3;Uw1=Pm!KtE20s z;e*4I%@VJ=k#%%;^bxrOcy{c&V{`da`3Eg$R_oJ*gvH0{`T=e^=Cb8Kryc1JUVQk) z@m3SBY9Pe$0Dyvq0Bk=dX?v^5TgCQ-qOC%rpy+0EjFmyJBo(-?xPNN&}^Tv@ZJw%?%h)+} zp%UV}@f84B-H7`zUj+6DDH1;@wDj>4Zz-sE^x)_}*CT#a1N%pB4&>{|HQl z5bhoAA6@a2?q<_41G0W9ss3zv3n^dQQdMi9VG$eerfy~=Wq_`&6txx_*MOO`9qX={ znVmVcm7>d;Dk>?4V2gYSx=5&!@I07*qoM6N<$f^$KeNB{r; diff --git a/OsmAnd/res/drawable-mdpi/mx_amenity_college.png b/OsmAnd/res/drawable-mdpi/mx_amenity_college.png index f909c837f6e34478ec2019b032def64c25072c68..f4f813c9ab0cb398a548b89700649978769e40bb 100644 GIT binary patch delta 1076 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 B-t7PY delta 1400 zcmV-;1&8{W3!Mv)Hh)q{L_t(oh3%GaXq{Ib$3Ne5@6AopByAUGCe|`C2eF;jH%abo zx~zzHe_(EG_z@V?~{A0w;W*mueX1&(pY(#z=N1s zU<#P6yEJ3&u)R*Gg}^^ChqKx2oWx@<&OdpGjB{#Xtg{S2qU&B;YI+2=7g$Bv~PT1{K3ES^P-KZv=zy8ZzrH2nZoSiMtjv03w z3xlMKwqtR3u@j*8H@$5WPfX0^pU?M`@S;%7^0TXbY(L@PE+U^&&^_y$)_-;Ek+I6V z0&E-E)_+-Z?GO+UuVIWyOZot&Ev|`ovq*1<;TZ+>*Ql*aIduZF1U$FeD=2(6Iwr>d zu6Hd|TdI9WA3FNR6>*nuawEA<)?7Od%mM%4ay5w>MnF?2ho6R8I2vMjtgy2%EvqaG zulfeICDfBRiN=2gPS>x6hWUn5-6P%oZ_7Y_B!9op_Txe)uUOkFQO%h9gc^y=ICxUl z{ALx=z5(U zjeo{nLS2}|a@9DC`IFFjOx|*O%7%N3zUNoPcTS&2o=fyKDELDmt=|3XaIK4rUr=>mFz zexZKjPA+X^CB&4_Te40p0|bS?2xVs$XMeid8{1FY{x#j8!C+T=PN8 zJB+6RBbry$LkqC5s-1h<98N(}M4`QiMR5nsS0Kt|Rl zfNvchIDBFiI1{@jik81G>0`EoaS%$9ah&@r@mXz5z4|Q)%D}4lW4soy+YtKv$P9DG2^W4_|kNyK4Mx06%Mg`#j00000j7%=#O6&Jcl79vs$qN1)! zBt@te)S^}tC6snE?@bb@4~ootlSNPw5$sZ^HlU>+D7q8Dg(3w%Kn78%Skcz1WF{T+ z?%ze;#7R2&deN@>hvCgT_uT*a-+Rxw=fM?h0_Ae~_8<&H%+$ ztF?Q2dis1G9+y|Z+}zvz`|@xt$$^Q9iNX2#`FosmYvslhz%9Vbz`Udbz*#dpyjDO-UnfcORr`I(wt4UO znOPv|?^OuQ%zw53J`;eXqL~d#x);zY@e9CdU|XkQ2{{Y9(g%D4{A6ZDNrS+xfHPa% zoF1SE&|xcO&z7Xm&1@F94j5V{qWen+o==kGjZQ0POeP zA8NH)X9|VFF<|eS0?e!j*yEf#;=P~j@9+PzV{A@Z?TGR9di~REArruZW;R+VtX!d& zl%b>xrBZ2ok|fj4xjoHh^Ym&Fm-7t`4Yl*&m+X1m%nnI~hY12Ye4qN!n^=kH&F)v{I>*CDoR3df;_4n*sjv-e2vUds@=t+4vVplHAdD?v?{4 zX;RW;yS%!bdwYj|Ftf+Z?8h`spEa{5S=iMvNq=J*U$^;-$aNK)nE;X`dB=NyqFSwf zQmfUT0zTU)SKemi0m3lcVP<~>L9i>czj|2&c<%)u={6Ql?dELg*Nt-JYN2L!G5b3s zX(&z8qnUkpjeFw15dh2s^z`)HP_0&<0~ChgO<7mmw1D+|rX3E$aMpW&eHe!4fHT0I zEPphy`~oEX?3`<6T@gvWS;k*n<~P8@3{_Jz0+aE)rMiX6F6XI zuf%cu?gkdMh#&~=H?xCg_GTQ%Z*}uosR~Te!;%`ky}cjg2@cTL*Y`1SPSR);MO|Zc zHHKk0Y-U@552Gk*3L_t(oh3%G2Y!y`)hM#w)x7scUQe#C$UEu;28jQDdMFn@H zT7oSl{ty+T(GUU~UDyPTxHoECnCQ|(dv8&~Pc)iHA~2I63le`4!vYOPO$Dl?(9(O) z>!K~(wzsq$A}hYlOwKvq`##_KnK^Jht|ChPrF)b9WQak4}^qpn0sh6KDaNg2MW|I{5&M9NZ;q7&s%TbIrGFnywi@ad)u@++lgY;hw`kHUx;r z;%&yS5ivHqJAaB4HQNqC?-B#1AZexX!wAos8)yoIz2C$;i&DC zjm#SZz)<=_+L3iVqG-|aI=Hza8f36#;{C6Q=U&7v%$M^8xWJnP0Ly<{-d5K) zxx-(GM}Olbz#G$(N1~DK0AVD&Ld3eot&2CN-RVxm*+u{}_JHkMOO?{wl-X}N1A3B5 zav$a-qK1KpbBCTjbT+9Z7iK7$w~|V-)OICQ!{E^H(CX4a>3Q2v&I>@2Z1)k-H?`w( z{R$eNA^fY*Q&g0~LbNaI&JL#=)8{08 zzfi4Q0Mhsjbd)>Rg|YBYX`s{tVEg@R0uZX>GoVQK0CMo%0LFt0)ynq^jiXV3K&Zru zS0Ks&l2%?50NYgnS+^hQKJpU6tNT~qS#xd2Lho3Oj^UgVvOZ2K$*}F)l1g%#3a6@6 z?|&C+U6}ne0NZ~cE=)oQ-H5R5(P?>YKpO(%cAy=w@$eK-=?099N9x*6Oc^s9S+QJP zFKLIQ_tNh4^MzIhP#h?(m9>+IkFqDSPa2JBd<}B`x0prwMf7 z#$F8@lX9{WxJ%O4#~wd+J}-lKmK*eh%3YPGJ%{}TTJ2-c05+m{I900000NkvXXu0mjfCtlr` diff --git a/OsmAnd/res/drawable-mdpi/mx_amenity_university.png b/OsmAnd/res/drawable-mdpi/mx_amenity_university.png index c49808b0f18d6bfcca6a1473d2bae8e0cc66bee2..25872ea58d44f54e7b23a3715df7b2142d54d1a8 100644 GIT binary patch delta 808 zcmV+@1K0f72GItPHh%_5L_t(oh3%9*Y#db-h0nP!-pv{jAsQka3yWU`9D#%g5<)@H zq@baJf{KDV0)l7onqni_JL}OVK+05zg2thxfd&vl2!kLHNMo%w60!tFUdNWl`!nxQ zWNqTjU^{kxnmygTci%nV-23hW`s%B%J1p+zP_bCNFHO@((ti^GQUDz@YfADYTasFm zmd$Jlz!J$7NekZlD`wX4-mjQhb8c?#!VLke8v{57;Gx~X13(w(t5&P^>W%<{AUH(w zw4`TAKClPlc}d>_I5|B%eHqxM1wjxTGP5(@`=fg`2JnOT{=GPk|Jby*h4F^~j!GKd zt+Av9GyC4miht#D`9db#wI34`6GQEG`>dHgvln9k4M`Uzjgx#3z+29_6Hyd>lL>GW zjh6uYBB?}jSkl`h9|KU3RLkXZFHcTRUf+T+49}5#+licUMKMCMD07E?~1>i3LO_HBgDwTKEH}+)#bbB|SBnbh$>%AWa0PlTo9B}m^ zTI(*|)st!-z$HoN&Fu3^rBd(0{8yD;^HQl~Ns=rAcwW*AX7-UJ%L3g>B!BO8I&W61 z)$g{7yML|%Ns=4}fI^{gF-elM*O)H@SR}b7DJAK=_k$!4X5{&ig8nSI^qbUv-u>$5X6GwFI@5CnHiI!^L6l7}VT51>{k6kaNoN>{cs z2Qpd^hT$nm2c2{8r)m0B9LHaxr*HqKVzD?XX@5S7qHX_tU0D?vB6+zxDqrk05df6S z<=<{39so97uJQ5l6OvxX)ls@F+GxSp*w`b^xmigENUnJAUyS2;_ErOIRKUz0m9!rK zB;^MN2C`neTL(Zgr|!!_vN<(1wdMTYbO7)DJ!V!1(3ErzJG}XO)y5RmYPC;BMn?X0 m&LJIXx7+7$hk0Lp0l>d%MtV}xg&Ly(0000s;o)lk$B+Sb3>M3-*=voe+8)m|2?7+hr|nQ$WVqWhb%f z!Qu0|>c0tni0MS!+m!F(wz#c#usHbF5(CZjobK6^I)6RjS$~qWC9h*1CNL{BRabpB zq~RY#ErvKrB(*)Qpp2v=whKbJWwjB1V&;HT<^J;9i$5~048$0Z%9^;Iy)L15Bz0gg zMivfUJT-_qP~*nZ4&8Jnp@~Sm7!*n|#BVAGDp$}#Z{djtBFI4A?zx3eE{5-iJAB3GxJZ4ynj6MU31@7qHwyKDhB_3K2 zVGbBuxGLYSH4(sY-|+A2iHD{cD3l6^fmeXSdJ}DwMho&^<{wd3qmp(C&7`EyR{N`? zciKRs0!dr)D9{FAdwb$!*=u(vXv~0dR?@-?!(91bdDSa)J7`ouQTJHBVmxPjVy%W%<{AUH(w zw4`TAKClPlc}d>_I5|B%eHqxM1wjxTGP5(@`=fg`2JnOT{=GPk|Jby*h4F^~j!GKd zt+Av9GyC4miht#D`9db#wI34`6GQEG`>dHgvln9k4M`Uzjgx#3z+29_6Hyd>lL>GW zjh6uYBB?}jSkl`h9|KU3RLkXZFHcTRUf+T+49}5#+licUMKMCMD07E?~1>i3LO_HBgDwTKEH}+)#bbB|SBnbh$>%AWa0PlTo9B}m^ zTI(*|)st!-z$HoN&Fu3^rBd(0{8yD;^HQl~Ns=rAcwW*AX7-UJ%L3g>B!BO8I&W61 z)$g{7yML|%Ns=4}fI^{gF-elM*O)H@SR}b7DJAK=_k$!4X5{&ig8nSI^qbUv-u>$5X6GwFI@5CnHiI!^L6l7}VT51>{k6kaNoN>{cs z2Qpd^hT$nm2c2{8r)m0B9LHaxr*HqKVzD?XX@5S7qHX_tU0D?vB6+zxDqrk05df6S z<=<{39so97uJQ5l6OvxX)ls@F+GxSp*w`b^xmigENUnJAUyS2;_ErOIRKUz0m9!rK zB;^MN2C`neTL(Zgr|!!_vN<(1wdMTYbO7)DJ!V!1(3ErzJG}XO)y5RmYPC;BMn?X0 m&LJIXx7+7$hk0Lp0l>d%MtV}xg&Ly(0000s;o)lk$B+Sb3>M3-*=voe+8)m|2?7+hr|nQ$WVqWhb%f z!Qu0|>c0tni0MS!+m!F(wz#c#usHbF5(CZjobK6^I)6RjS$~qWC9h*1CNL{BRabpB zq~RY#ErvKrB(*)Qpp2v=whKbJWwjB1V&;HT<^J;9i$5~048$0Z%9^;Iy)L15Bz0gg zMivfUJT-_qP~*nZ4&8Jnp@~Sm7!*n|#BVAGDp$}#Z{djtBFI4A?zx3eE{5-iJAB3GxJZ4ynj6MU31@7qHwyKDhB_3K2 zVGbBuxGLYSH4(sY-|+A2iHD{cD3l6^fmeXSdJ}DwMho&^<{wd3qmp(C&7`EyR{N`? zciKRs0!dr)D9{FAdwb$!*=u(vXv~0dR?@-?!(91bdDSa)J7`ouQTJHBVmxPjVy%Q*;V|$Y}vKvHQfhvbUXhoyYLXkjf zA)z5nTZ+Jy5Tz)p$U`L~Oq|)7goiq@cTd^1cXu^LO>M>Pz6D$s2~rn zkWfWZ6x>4U-Njzd93FPpoxPsfy=&~Vm5bX)+}bvKjzh|Y`1yE2)~`#Nn;#|0p{7l0L^!bsjD zowlc=0(hR+M}P8@5$ewX&eszn@=@1yH+RyejtWpL7VihJsh$>*ABSOhCQ`%-g5aS} z+SE}2lv0mIlGpnC`!5shRKucfbx$P25`Cq(30 z5ClgGg~F?G`KhFe`Si>v@|2Y*~$dNJ2zj1#l!TKk*Y79v)tY zHG26@Ln*aBF|U(`+=%E2&}{>{jl@YX24@i2w$`u{z>tXijpXmNyqf^*u03A>@DDA2 zJAik$=znt#)t%yR0bC)u4nSHdwUOi&0QVWR(GnM(jZ2;hS6 z`%h?jccLZ$$*1%A{CO?E0AMnqyVpn_0dOjx&%e>kF4uMM4a0B>z{gDAB?@B!=I7`2 zU*8xavg}hMNqzaN;TM)=Jw7!xrH`0c)FMf{Y=7Gx7m?#=Z&aJl0V5+LK~f$`uArYd zL4P?gFtFG3<)bF#^ZBof$m0N7+0uZv)JlSgv@L*AD%5nly0EbDnD6@wdh?Fs>?8Sk z0Ph4akLoDNPEAc+jTX%1azC(b`)(0AXllFh2$-FnO>|HUMnKEYhvebu>FL*W-f^67 zk$*e|;C=w3sQMG*K@hw&IXQWkUVdR2?a9ygJtBhUY;R4UKt z1#H{?49PDfnPgekcRkN*cn8n(N+NQ~&@OWUipAoFIJ)+~)d+Z9CrI8Dc|JEiJzdtz zh)B{ZQOEXTvH0PbdOvGXZwbZ%SeEq;oqr?wV*Rm6)rC^2^s-Kh$da?8l=_37KRG%1 zHURgwvP&uT37wmpn|l!kpB>QNPVjD>5RqpM>Rr_L4*-PZ()Ua9?|LQ6vbGu8^&Xw5 z_4iMc%Ekha{J75fzJCG0uaP_g!Y~ZKrjw52+ymg|dOB_uA!+J~CLO4(`UrTaHh(M| zAR_w!Ec*qOQY1N1C=@R0c_b&b^lf^XR4R4N#3+(ib*>gtyTzn_JNtk>%d)Zno{W;Y zT<&E6o?bYc&0YrZ7oB%q_l__OKdsRp(96xt%v>HF9legKPtgpz4}#(0;rEAOX!LIF zdV~8M$I*=k;y;09oacG{VHkcJ%YOqcdu-d@7$r`hJ{zHdo|jr&Ts(=YphifH_IjSTpGUy@57wvw0Jj2wh#bx3a$k+> z{C{rV&SnLQ#p1692M3qZBroZEi&}cT_6Nst zc9Cp|LBwIrLSjJ>n4Tpp+X8nIYbJnYS*8M1*2)GGtV%opz_8;u4O?ZBqlR_2x~{ve zQmOQ%QmI&%TSWT8@Xd{#Qffr+PY21Z&GPG5EdlnB+_S>EcZOkj*?+PuB!v}pp5#*i zo?2ml4S36k#d`vD+kkE(QGmI*xwfLKH!_;VEE6ZeW5`5^#FkAg@a}Oc&8vD zXA$ufNhW%mNmxldAbOc`#`pb~+U<0;kj-XiNj@K;c6*-J-%cBC32^Y>!5yd`PXPc( znnZ=y6iTV+2uv4?#kMY8wn5mTN`tYwKolc)abvXtAklfv*cmvuI zVCjx8$v@?CxxX4)xW@22?>d0z>gg~Hv}Kfc51=>+Z}FLbajPP?wk4fo^SRkPjtI z8nCpbr9gS<%+5Z?56ldA?wvb(FWsH7>HL#T_Bqcv&pG!$&wsu5obz00pn(P&_!vX# zxj8dOz2}*0N@zk7viKdBlKvQun zDyI0qT6%x2bA_o7Is&8| zDor`b-B-()YD$2JY`ihxT+95H(M*5lRYgxYJ*cq)=Of@6GPTI?XJBnj5^2`hO zypV^|PPi^d=0#tR-d(G>s%C=ru)PUk9Wo6Wqp}?MRDZ#%0n)%kF%DIY2{NlNe+hW$ zL;D2O=($Oq+ZVCi(Y5)mRq z-UPN+n)kg0u3f$s#qqlOC_|*Mvnrr|wZQ)g8U)lkfO^CCA?SvpDUlm#YeBdgxCM9} z;izkF4u7z=Fd9X8%Q-D7D-`|Q6mBo0><5lu@rJ5KEwx&Kb|Yq~g>`p;HL4;o0rOkt zfA`sYpUpaDcFNA6tO7>Ued$fkxkNJ2VK8d}jAeFY9?0x3vrXE+0Uq^ncOGH86|r_5 z-f;N+YH`Jqu`W^hCBoN(UW*ff33&VT+h%I5%73toRq0mqd$~SuqUOQOhRj<&^JN(8 zAIqSuiKpUQ6n&f!*90M+0pn-KCw(WSdZwVN9zQBtiO_#uGMCl`y?CepBmGByr=kzy zPi#emV#^m=-Kk}HcYqi%uKe;WhQSkqCvvW}#ZK9qf$ssg0a;ObzR7BO>|o!)vrg5q zzJIa5*-5(-_-WA41Mh&|RlU9iiXc@9Fvd)I`-sZc^kDkDTW+W9CxKl+53mHdLq)gb zHUCOivg=N_er{H78_F9~`70tY0fo%497;Zjt*Uw+WGdR~7+z4-r`sDE4mFk-6ifQS`&&+FKlQ(6bvmmW-CbL*(8 z-&>++w<6JzNK~-6VGeGXYEwy7LDV0dCyC!hbzh*URT1aedw`D}VTV zCy0Gu0tESnTXv-H$f$@M!vED{EVX{&7RE>7cL8%tf(maDK>}5xg7_V%Oz#c=?kjA| zGU%jk2JbJJH+dE0k;4Or4|;6e_qMXwqa%7QU|eV2g3jM}MuCMvjKkys&1&>9;0I1& zdN6$oWt&?$Gmtrn@E^ClYpClBK!0DEQ22^lZ*hL{$uriOOTZlWoXhs8TNGUo{W1Zs zEo?QoIi8I7d8Cyx!3wgTCwpdFmh~sRjh5cTo;hk^CJO2XDeGI5tvbZq0X(AicVp%G}nu|GIGXg2O~J?%bj<-ctA@mWr(r zm9id0CCpe$Of3z1mf%T&Yl)d7ARmwbDIJc~1=G?G5M)8uP*+*1Y=4QhB%t{+J83UB zm}U$WOYV!8FE*F`RLZSxe;(+KFHovsdKx0oYgtzBP1<$$lELefVGx+mEW~y6X!_E@yIs8nmvJy`3DhwJ6CT4l}8m9gEi+rzFCnt=R7 z{+o)HJ~$8+Z#`Zk7%_WsR*Ly5)us=^5ugZy^JB(W(}U?(!hbrQE*yQ}=({SKE{+9R z+jF32c9=Cn5fB@RtrV5pN&+EBS9oSINofbFXlwSJY^aZ}LlK~=rLR0i<%&#BU2e`a zG6R{H1UX$CtLVmR`fda!pmT5MLP1KWFe>_7rPG|6Lr@gwYi?1 zm%}2mThV2zIy-8jkB1F%rjehO-xQ=1llHX{{Em74cRDDPF)r1V)H*wP28P zOM*b|$tKx7@3()v&%1fEm+VHC%Z&S-**Wh%*Wd5^{GR9cdw+iK3zL|{BqlM5NlaoA zzoXErHSyxbi|3b0rB9@3dUv^8{2<(bV9Su^Q^<%oNYYH(TtkCAR+xI6M~blC(BW(>0QIj$@c0=>XdY0tZpB4xk@+ z4!Ew_Z2rSbmA5>0lkws5%P*h3b?eqI+CJHK6+qHv+kejj&)ZI=ar2$pUJtAXRs&Vr z2TPg_RDdIZzXM)71Z>%|zo1G zx7)sj-4-znk~-q=3!}B!C%GqL5P){Oy$-;3ko1f0?(W+GuD<%}r(3Po=Q=w(&yci` zY=4CZ5y{9s$9TL%z6E|W5pqu$0p)Ue4S*!sKB-o#eW_lr&&lf>jmAKCclXz-)#~ZC z|6`;vB#pZA1#|$UX*wYUOxPJPFfgztgaErq{R7+cYqi=Jfw$T20G2fxjk|%aBuPq= z&WFL(XD|D{h^ev9x`~i`p9x5kWQnBHB!At}ZnwYP)6?@SfPsO5XQoV<0=o~v|B|%M z_UnP8Bpn4@-)J;WXfztz+wJz1<#PF4vM`tELE6#p?+y7DShKIPkA!g(aPh?#cXW1k zejhj!!1g&IgjTIq+X_4Z+(#C}2T4C|Hk*G_?7wi~!UIdC(h8MCnN_OU~2A-F+Gs^aB;8&7Dnx@SqOO||YZ{xuT8KI?1 zmmb<~x9U9Z={BM5RfFvdnJ8~Y)@~t{qQ~} zG~NQdAwH*Mx4iAZBfyVs_t~!Y^z>W-uxQbux0cK0AG4c)>ll9dIe!dzFHnu!?=j%{ zamZ2yjwf4?Co7f8+$*oV^4Xz{2Dd^J9qA%O4$$4XZepb?rg)yd(nSbU~-~ixsvaIinNWdyd zCrLUJm>SDc+pEWUPZ$X%%N@)FrU4(EH*elsSFT+74JgC`lI{RLLbihU#{|czWM*6; zOH~J;6PRUtR!m&%0A7^zM4G0DN_tZyaINi|;_xeN-zDiUV_ikk0b~}pEha&b^v7hW z^tPn?f!Sp7#eciV%zw;C5x{l@I0`s822Ml0-I@8rU`4fB{eGeIbFEhEoNBdtWV_uy z)Ap@oFEcjT?sv57XeCuLGd^8XeoDV!`@6*%C8aSnz9EEgq3tK)%a8qIJyH37+uyN$ z4{&2#kP4ZH87*#^N_GIBYWoaHb0r;F$UZ@~9oliOFMkgspwVbN1?&RKl8yn?Xf$^8 z_V(TtLillPwq4Q-@shL7_Ld?c5d*+CM-eo&9hNOy_N7*-D1x zRSyo;M1PVcZOsW`cb0d@D9Y!32IuVV?!L9VyZeL?!hE1vP`W77F5BO*odT7p@JVEc z^As}oNvzMe<623-A=~@K$hDkjo<<}<(qnnUcDp?o&)a^4%&Z?`^h``UwylgtKs+;s znenn^%YGs$&lHWc&$mdrDGHyL~w+owo6*7gU;E^fr6Y+2IwR;xAm zUUHAiknQ^d12^XY4^z4oMwF1n~6AW4#U0iTfchlTF_0Fp|h-Ra{w zFycN=({x%00Z9WR^|!q?<_sv_He=a+X__XjR_m8Ty4{^5$yJg*tKF&gJrXH<2opm1 zVSjuq+di&1|3w#F)So2DVU0#3v|6ouTdmedfy)bmx}(Jb9Dy|EwFu0wOal7iWMt% zCP{Kck|Z~^+wGs%YPIfKt#+fNA4&SNIDc;Kt41Z@>tFx+E=ijul_VY6XfzHeOqL7w zmNZQ-DJXV1yHD3qWast3dw`v`&mXCQ?auf(TC{gyoG+hbi|vm!8jS(66~9i>iGQ)~ zf;e9hIRUp73x}5zre*nW&57||uw>-DZQP5%OTv!r5RGXU(ey*-4mDoxW}!13{xhqKREDlwuwAnv;h zdwP2QeJtgRsMTthk-6B-z&CC0lJw_fTWK4xxl*ajz2b^1o*3HqvVY4io88~v|7oK8 zi`WmCX1md9wLUc_0Y!9mb)8-+l`gbBADBhKYHasQ+8G7hnWpK1A%u>2v%~gRTdmfI z_eJ>}wOZ{qV7~1qf&Z3tA=$RvOh&>g+lyMQ)?=4mdg)>9cKa0D=K^Qho&rpfG}YOA zggl0r*VEIpvN+E^eSam^Xf*cg>+8D!_z;;Vm{zDxW2l=)f)BJ>trOYzBnALUlFR@e zmGp*qIKDfMytJUiDjYebi z3))K&u!u&ZF?Gj|9T%o)`bkNjX*QexG!f(0>-C!LZWs)-Hs*@6=XP8#X=S_JzOJ{o z_j`<-tr~_`?PKYEL9JH11vq<1accV+;MO!vSM>JwKJeR&J&~Wtylk+&K+^hX_P>zy wHQS$WwOSMMp(E5JCNYUgOkxs~_}#?+1E_bNao29l2><{907*qoM6N<$f(Gw4L;wH) delta 3743 zcmV;Q4q)-T9IzdbHGd9eNklh6o+mh7<9+;gw5Wy!KZdCWxLKe{?+Ki2xr+J9@Uz4nF~%wPsHn86HY zFoWMw=r=WS+nsGIVr~40?fkCcUEloq2Y$ZeHzCKbmw+`S*^vDx;={5Q8v|fFO4@AP zXZ)Rk_JR9;T_XKj2)N`Mmn%j-;~N;h5q~%dI0Fdjv$0%zuJ(<{42PT9 z8$vQG$ze{eqI8d>r)?iBJG<8fBgAQxtVvbRcfI~W4`JE}u>FdplZlkYoNGHPR0MV+ zo=<0)#38Ng4u%jAh&;SI7vM`H1B}1olaK*7i`^ z^|Vy^Bps({`w8HuW#d;=y=9Dly9fYw0N4&vNm?NTL#RXsW;W0$DNu4|bAgK_6)_km z#uz&gei0pioQ_d}<$3@~yQf3w=_4Sp1B1%imw#}8G=vEmu@~5DtUx#+5}VTHl2B@7 z%qGN-Y!@|AkTMPF(k=P*d4>pU^9qZI%rn zs~31cR&lav$`(Lm`*essZ3HN48$jx@f0pma_X4bc-}+6t_S{$NH`HHh`L7V04(lgb zE`NPe>ll(GR1XjoUY!oPr_TZcF9T4r+hy6V?6=x_+Ln}G_pa_8%dgDewYRwUV%y)X z?rK+-`J`XI3iYLi#c3g6+I&Ea@#R3kIHck5-9;ByWV^GsA>QHWdI$ggz{-I<=HuD! zY=XD}pvq|$k0EJl00_mfZ93#WZUVAh*?&(tI4kSXT57-lNc$tt0fZPf6F^k7`7cLr zQ_v~47fD(q>-J^$E<1lvgTtfW9sRqyy1HwDM$5>;(Zwl~b5oC?PIWIIx3&}DmCQYTbX}!UU~DP_Fs>J(c5dzF<56@n91{U;J#9;N4e#m&77C33FIt|3nPWT~ zI1h84q++@RwvHbo*O}YNxX@+$DM{Cr!=0HV^i@Gpy`;jP;+~|Xr{yN#O3X#ZZ$WH! z@VoMVod3UL(F=}&fNWRx>M@Vq34fd*wA*+ir7dY$pkRBpq&bneFgPTbbE?P4bZ2fC z`U7A~AbhO9y?-M>Lb4@Id`iAEGW8OGdQ8-?c1L1$>xem%$dj3_%(dkxG!>2-1u{LE zFIc`ORsJQ*PXLALHnt{eM82Of+^h zd29zvooyuTM{E|_C@F_{ROltlY{Wy^?(D~3KLKkiuTCNFkp_3gLsy(Uw10c34|r?3-ZvN@TM0@mm(>L9vppo~HQ;Y^?YZwy)Vz63 z^Rf`ay~d|d${_wz)kHR4A~w=JRKAsF2>>kp~iei{&N7??tkptfrk;N*cRqi zN#m{TRLm8Y8-aq*v&OF-gE)=Ac|en-7aNO>tq*rTyk$}XT6$W(5s9lXqGXznGj6>f zBjy8V2Eqx(IM|9B0rmr9z_6tEty{TnecKP(<`+kb8xg0Z^M0*roEo47^Y+y2cOss~ z9Mw;Z)2>EnsqOhf`+sa7;T$UjWV^Gk82?`7g@tjHGz`3o*<$%vQdNW&8JE*wmy;vo zQCUNXk<_Q$Cg~>QOVaT7wY1$yLhrUbTTw;JzW`oW;v*D{&jwBr8nL`8zcPPU`F+I+ z+Wt}L2NAGkQfG34@e<1yV=e)fOImDsVh3tYM=VJd+9LE#V1J|Kf>0eL3pq(>sie;U zX9-~&W64?uyazK|76?1~b)Om;N5u1z_8B+G`d+3hb7%Q|B@YmK6nMYo5lK%F+2P=f ztl7r3KtKeb$@bzvSZr)yL}&-4Z17~Ex2CaTtI!YA;rof?5Pz21TrDsUIKg-*-8&%b zk1U^-CR9(zI)B6RoDjl=k_MvVv6_D^u!vG6xgHZLr%?>b<#lWL@XF9OB`Uwi=eSU1%GyO=zD`fzmoJrwL<{)=na5jKt7?egC)e z9r-1};Y#Bt$ECl&kW?;qj9LDkq*0*GIIAFGW(zF^S`e248RIt_HwY>H*hSz#P}nZC zH7&jrN`FkmpBzCzidTgsG(YqG%v(6r>Z$RXq_w*Jz;>Z+#>1&1BasOx zV@y(;^iD{C?Pn_ui>~DJ$yo9QKC)hI7hB? zv9HRXlpd85rV-3eDLr0rYkBZCWiMmnD_uI;@a#m@tWwhti)lm~*R?^WcSph1Ppo zPh~ZszrFvb`IY&bjXzs8QUSnB5*|x0u|45_&-Sde|75vFsbnr6UM9ysnAbF~y{vrm zJS5xur5{W6ftNr_5%;^JZD6AX+3Hj3M4Ik$%Qa6;&rfU;%(*$pVb`jm5DK^{(z6 z!zjdXtI!1il5P@*DPK*%k0&LdByC!@7BvS72P(^;K;Z$L*8cGY<>!4@_w54u(}|s~ z)5>|iag*hD35DSB$$^yv`HA#Plz%**&U-Es6l#p;mgfMFb;tV7_1geids>$v&aY~I z!1$-OzYdiMRttE}wmFX+l>o~d(w{X+l2n$#VCUeT#L0Dt+YsLw*XNm3%CfL0rGF*s za-a$G!@l;uFHNL8K!1Dx7me3p<^wCnzZaUFj%k2c6D#+KEWfkz+kSbpet-15e0%=d zTGxIVSYj+7!3^Dh%l(J#ZjWF(DCBIvSEw!)<8|4!*_UDx|EKX_1YciYXM@D(1nOoZNISaoQ2m$MVxviZw|phd=Kx z?62e|MHhDj0=8e4b@SjggMY&vYdVrm$)+!+2eUO8EFZCG{K#%k_OGrC3sR}r~e z1wC^x9LyVkCDWbxT+7;)%C51kr)`O(t4mU*HX!Bzi!m429E>x~F&0}N>wN5m@qL%CS$;-P_`IZY_``UP&@9`l z^Bwt5Pf0*ETDw{=j(>`)fEC7z%Nvq(15*GF8jlJcw7o!5eOj~xxHH$DyYYCGFC)7) z`(q+2C>2!y+x99+b(p<~A;jaM7(UkD(f@3=D|;#l%WYpPbh&YzP+ht=s3%R%Ty$Ih zhJ62V5m1fhJDTT&hH#Ul_u9Sym{oq4UUoF45DMbS{D%Amtbd*)tWAN|ueZ*QbK*0I zHv{W1&4|Q!r_e-Yx+Fa`X-Eku7hx>4O;Y!|mFsR9-{}qA5?j7zdA260`E%Qs+g_Mn zd;loc4%eRb$e%uPgoz#xn%6eBg%}U?8002ov JPDHLkV1o6bJ%s=O diff --git a/OsmAnd/res/drawable-xhdpi/mx_amenity_school.png b/OsmAnd/res/drawable-xhdpi/mx_amenity_school.png index f4be7e86717e281c9221c76fd6e7beb9b882ae8e..3f34e6d76a99979ec53ed0ab6d1696077f1023ef 100644 GIT binary patch delta 1955 zcmV;U2VD4t5W^3UHh*|YL_t(|ob6g|j9gV2e%`Y?TgF{5?6w6WMO_w&r45TTXfOsF z#cH*Fv?(PR34iPlvB9>p_sm^mI1$agce`a1VcP%1VJ*aRhZ z6K$nvVQXPKvzhL_k3Tv?&(6+F@9oaq!MIN{$$j7R_1tI9J%1nXIluxIuz&^pA4A&J za6X?OAo(DGjEFqu`~H!3@KEh&6aYv%00sfvLh|dIH*e0ggGXBg&|0qqaFgY_y0^D? zbvwAUMF5iPt9?-vZEOdZ)CF)|cZrC6q}nec1H;3^E7InZx&UDqt_9Fxxn``i&!){M zRRN4Kog!ktl697cybQp$@?AWp6)mrIw zyV{m5TNVNM0cMZb^C41gf4)KXB>)DR(Jo1d$g2Pzsg+*$6X@&f%b-aw-)<Q%b4RBo_f#EFy~mtR#6STGw+X0UQ*OV*t*Q%#vKDl)8!J-2k#l zD@-E5q<@Hf(f9qQ8)ed3-wI$qfc~Up8lVK=8`*63JI0vlS{a6hhOSjg?FMj9l8R#s zpp^QO=XniZ9sq(Mc)@ku`=Tg%E(wtahydIZ1i>#FWh#&I_iC*>0nFKK)k9nXUhzEd zSGL1(ob^hnhe`I393L4O$yd@m&pWKOehI+)<9`yV2NC&^@B6b}K9|ca?dc^hvyX$1j#?y_Vo1heE_bvT!UR*T?H$DqWY5zf-eDZOQq5? zV`F1QJ0X|Lb&rmYp0j-FRr5hy0ZwJJ*;U4vx0H5Ww=WFCP37(F zAb@MD$~1#z))>=ijCm_&AR?2s_yM>YF@L{%8?hEbBoEpzZ;ZJj48x-$vIoE#0RK$d za7;+CSe!MEh{zKF?5Xf%Hk%y?f*?CHGqWTN!&?FTJZ=MV1vuLv`BW4|U#sDt)dNWG z7m*w7AAr|lH2;8Y_`W}(l=>(x>{IrL$m+_UvvcRp*Lr$-UM9IJM!f)HegaCVm4CKv zjF~pZET5j9UOG8Bd1CM0z2~dTh)B^MkVNDS-}fi%JX-6px?Bx>)pgw`JkL8+ad@70 z7{K9LnG1!&x5@){EX3Uld?KIEZ?GN4m?_`)C(fKX6Xo-Ht+iffr;~iSs*YsC^F?$; zQS?i#b;A{2E|=@h=kvQoWP6gz<9`lxF64R!$7Kym|cVSiuVYolzh z0MIC`T~B~NmIt=80Ino?FMxXA@NxjlD{VIesm0z{oAI_F2p-35aUOMD_kW=<3?G$d zPWW|@T0B5R<_Hi3!A~)_XVCM!T_UnC4PL1UP^Sk#YkfmGU^)xEy}g^!q~&xYw6zE1 z^Z88xCZZ_%tJZp(ou;*ZQ$+sIYF=#>fTW9y(W9@_NdI%IdA0i!u&2svYLuxN{b?rJ z+5-Um%X*#@w=c&TTZ%NJ!hcZ>-}kKNA66%lT;4i57m(&BFjegfg5bL%a)*el34-9; zcG~dp@HHZGN2__Iwh*dDC5Ynt{`0lcXJ%%;DIzUDm}%R=h={DxTJJQ*%;BK5en>>V zoCc3Hd%!0h$Fc7QTnAuXu~@t-pU?jUz)6zJa3QY$!L&%FDZrqJ41d<}-%j%O6nV@- z-A`a@YN|Qgt+xT{EyIBZJz#Wn^qk{3kBi8h?np9IHAhbYcyoR<6QdizRhE4Qvtxx7 zoG1BIy-F@?yXiR2kcg};n=_?SY17!)SgmMn%dm0d#*Y5}{+|J;{1HckAlTNZOf4jy z1sun@Qbayhu}S_e?SGdCfbsG1kfeQFcUvx(n{z^SDO}DpxCR%mvLK40hKH7|L`O%* zld$d?c64+kzG0SB00Cg%^P3nQ9epurqs@Znd9RDeA~fsv7sBYz}MRBWYGqsv!w5L1vUTQ;@; zBzvsq7psrC+6iOK8zg^gxq9kmu0rg+KsKA*S11(TEh6s-!*F*ZhABWPwKs~QcLM0j pWHR4xH=hM8U>pGpSit`R{tNq^$p3C&-fRE>002ovPDHLkV1jvhx`qG% delta 2021 zcmV)=V-KmIb`vFJ{X{d;g385hdKba_~KR{>`V=(G?rd`W4hD0MsVkcQtEmRsz zPzf5=Lc7w>eEU57NbKIkj(cw#Uo(+Mx{}}X`JBh+yyx8aTz_Bz3s}Gc{*S>*b?hXZ z1{<m%s(sl-RT!!lr@@p&^=zt`3?{-~vpTiERKvuB6G_51X~y zgXR;c04+ya!hZnrgCzJSgx}#x!sf<9jmv`M6sQ1W=f)lcury~&IzTbyDiW?5uliJw zoB|cVX6+++gE(EU`ah=Q>AwOvmQNR2r)Nqa2uy&cRMXuA@6FkQ4t2ykvH(EwfUD@z z>6sD;N}dFr4re!rPlEGsVifKHaNBgR7C;)nM4pEb0e?_EZJ!5m^t$^5Agj|^WuNJf z_n#`3Kj&22`s&u|bHnGJ0}z7dgNmCK0N~RlN-T%aFdto!L>S>y0G=t9Kj#t{xinIR zncLNS79^|Z%B$GB!2b%a#oPW3z-xj|8k*A%1P;34~Tt6CQ}uv>gjx>^ISn4qjBo`&rg>}FTdfoS;JibZg(ZE zgTb(cojTU}JhS+5f^SiLO494;czVR0vG#?vb%VPHFV85gd5Jd;7qm-!a6S)a-h2Rf za;$o6{Xpx$a4xMW)pT<>8{R2uJA`!rZhxI!Xywj5~*cW&;SbfujwQtl*xCGfcJ z-SB!4I_w^N%kwQYVH-XwY9D|tApYsMV~^n2>9HApB#dwpfO{((8m}I2NVlhJ$H&K) zTiE*`{Mu^=o&=zHzC`v(BlG2gI+nASKq|!0o$iO^nXC3~_?X-7igg_q)B@l+0Dt>n zu{rnW4D1>>Q+u)YZIbJ+)@}~ooS@Mfx83=8=V(i!Wz}S8a>dA*krM-77?>!iWH91h z0)j4d#k!8Wi#Q!l_G+F&(3hf#XtF2Xlg_1O+B3ZXdW)4GT|D|-g7sG)RgR_yNcwm* z8I8HqI^&&}x?)|&S1ws;qaD$&M}Lx$)>*{gp3%s)dxS*_={J#Nq~r;2?F(z`BFV^J zl3(%DxYu2Pg7!y}kpo7iAHd%&Z8gPvhB(v;U^T&GPSSCQv)(_m0baXH6qXR&?tW;hfxefAAf`-$@2hi zl=LWoxz_M1QL7;2`@Y^-O<=J%QH25+>`Aw!Uz)KzglC&#Tx&$Qs%VieC?J1W1o-jB8rY=KfK-7=(+2qfP)LB(#R)OvUmu9DBVwoS2Y@)cO zr>*CE?!4xM&9^{kDmSmd4nnh$3!?PIdismyn+fwB1aL7^v5S$qnt!_W(PZ@d_;w)& zC+R#1;B!In2yzB|!bv(yUG{B)TBB>C589;t1;rsz^#tPpnu8)0qyX!tpBa$UNU(A0 z-75Ic7Ux_7XGhP@_nmOXU}fhV%bYV{aQEP4C+WO|BGXY&6)|Ivz69Xnb+PmbNp&P| za*_HEh++q)35tj2YJcaN=A4sszA9+jv^h!3o#}YGShTim*pb)~8sgBeMCJa7qnY;1 zo|2V{!1pe&;oycF0em!PQ~X2Fg9m_)ct_U4y07c*Z%Q;3-cVfyz6F?^oZKQP|G|N! zEqQ5KPAH^T;QG$cgpBVm%=`%;(8z4RV(NHrd+(s%PUj1KZGV05lFUboX}P84NQ0)Ab28Y ziz@Z;RRKH;(0HhE8Nm(tj!<|>S`iR};NIr$Y)&+Lev9-hz@o8555e_vQpKt{_tv0c z>+Ej{UWp$PTVB1^^(=s(#V&Jj_BB@}(Yvkpf~4Q)Y=VnRm3PDQyMS)ceh%{k0B$fe zdwp^&JHoZ$pG=HRypP}_TK=@sd={{P1uS3z?*;r90A9X?fdOhB00000NkvXXu0mjf D%z@@F diff --git a/OsmAnd/res/drawable-xhdpi/mx_amenity_university.png b/OsmAnd/res/drawable-xhdpi/mx_amenity_university.png index 19c604cf4a61932422608365012acdbb29eb8c37..ba02c2778c8c3a35aba4b37c6f7e6af592c133e4 100644 GIT binary patch delta 1755 zcmV<11|<2;4*U&}HGc-NNklh8`ieei`nSsXnB%6EZo^yWZ_xtWWXMcXblYs#P1`HT5V8DO@ z0|pEj@c)PPd%`dbhYE$lcHrY?7E3x06rFP=U=gSQ7veZB20>5)79~~8?1FQy=)Etc z)9J-941G8J>6-vy7!H+6r5%#8z&c>K-X2&(3FbpfugC(#e@ZFNunAvd4K|MrL(ab#X?SD9q7xwSppI_SEH35<}{v}|q z_kQio5I8^(1bgE+{(cli7n=3EZUO3nOWH%j=5~W90nU5>g!eu-KR^HGwK}g@fSWCF zNoA|;fIpJ7FN&hSw==F|0dBUyscmj1>FGF*_sq}Fzuw8!n(@_+iSc#FA0@T09fo}ot2GT2;sEc@N|MjE5OfHvuB@DySVzD?0Yzcy3 z%f5a4{@JdvWd*1QE@`isy@wkgxPUV7N9WvQ*=+XZB(46knPn6IhJX{5O6A@I2M!e5 zF?y8%H(}ra1xcr!bGv3|XP*NslgWGmh=4U*nSWgtftOF8KK=<#NvfOixdLQqq&aCYtXYIl$nh*JR3H%#$~Y@XnbSVc<-;MHOy?iq{gCW z{Z&qxJzFRgez>r(P~N?J_j@IMH;&_nleSgY3aEh!uq~I%9bT?OM|r@mUAu-;sZ<&u zolaj0!|-A!<5w`(W5DByXe(WkB}w;0QGfK8W{n+HgQ-;NHR+02pz0J(zz0W)6Dw5Vp%19ca!+awtep1Qu zJ>#5vwOXw%TZy*)224#&eZ~pK#8Nc3@*UZmDm$OAj;W)CK}KfXM8XlT3lzSEPOZcs3@7tCx&Hk&v`F#FXy;A1aQvXBMC{z>&MZ~x$QJR$Sfx(ylLR9q}L?eLmf~05=R#I8g=jP_-UhF8kHfVSKemJ?F02mt^dqC2<Bbz*Xt{$;Pfx$Ip0PRSK9tR7PxZ=~ z8$ruzP11(?eJYiDqqpw#pOylc+53{)^Svy7ZWPxPU}|dWW0JlBU}lT`ajCy7o5oH} zO+9L6hk-kjN9#6k-h9WgW5<@Qt>2C`-2`W5X4ZS}U#FJLT+zolw|^y@%|6o)=la2N zOW=#t%F(L?^4>qtQ;+&gQvs^g>YdG=14vriJ9qj|Qvre?ShmV?&i%Z1?)0Cg0>p7_ z)Q+|qxtLC;pYN?p{iUe@&bixww;G>I`boEboOH9$Q~)!(P0|^zJaF)pN@cP?ZuO6* z#gL>?Gpm}}8AIuS1`HT5V8DQW@L%Ke-l&wh!4m)g002ovPDHLkV1gj4d}{yz delta 1838 zcmV+}2hsTa4bBdbHGc;KNkl%xtHfLR*vyB1B^}Mj;J9gfeY6 ztT7^m0O`lf4~v+HCPs~k7=pkL3w|^jG*Qv`$50I>X4w*{rd0xT#qQ4T#wL~8P$5wu zEx}0ZZt2d>%+8$KA3MA5ZfCo*?anO5xsu7ebKY~F^E~(Ycz@sLWS~u(Hf`FpY15`n zn>KCQ{Qsd=ci45HD_J~Q+#$3gpr_7#=Ipo=Aw%S zUp_d(PU2$t(=q|N4s<1pr;2wH*%cI48?TslyNamFvT+oWZP&a@*8EIPw`V&lsE8?J z#t~tlcjGroA+%_4Ht&L z06b`%7FyY?z8Yi{C`r11q&l+uXzpkkny>_>1^xhVF@LaPo+iy^thTJaHCh<`@e6mo zFgpF_q6yG-petEERsO8;!EVws!(+Sn9w<#dgH}o&;YX*gEjy`I(uA$>%umO~ku^<>%AU zqG6(>vgK!~a(_OTKho9Rby11Zy-xU6Cw=SS9fSXD)ZCl`Oa(3;#$1M$IB+l%>-=zt z;hz3nf4=rw{kcHcWqY}#r0o|m>+`w%*t{00BY(h*z~M5Mdc*B)SW!1rulER>$CD>P;~e`WQ`o1Vx$QJv5Be+Ae{$XuPd6Y&t{3dFJ|#j_9!#wQS8 z9N0GS48RRf+|VWIQQ-Z|y$_AqerzB+@TK`Wm=a(^&xRi3ZMC1Hz+CFdI7}}HgfP3z zc7KPY!1+-CMr}W^{LLmMU4q1;k+@z`2R`@yB~&uLFTXwi!*kcGvA$>h z2PM6C`prN{IXXS7%?bt0SQgQ7WpJ1|W5mT#aYnKwYb_=*qbz9cY^Q8Ly(YcpXZvs2 zU+Ub``R;MXe;{jea5~Nv&@9Tba{bx$=R{$_$hze#L z7{f$h1VGX-qGCKsq+q#>I0YbUSe7l1N-8^gmC${b(|Ez}8)KN1WhA{JbhMhN&VQMS zHY~u#o{b-k#LilvUmna3zRXSn2|i!T%K_3eQvGT3%M%IuRJqX9Z{sq;h-!4Sq+q<_ z>|=vEm?9z}Ya}W@C+TS-Lzk?)@UsNykP+%F;}}hme1y&1=x7?#*M}o)j8l; z5JD5v+cjYtX=4>FWBI3w+TEY)KYwyQeJ^AQ++6$q#biMw?wGx)wTOc8^VLwjb7jL2u1a6bG&UOh%akj9f;PA=5T;HD-9N|1PB!JL| zjgj>tz=`CE8;PuD;xOWM;D7t6Wa{zWExp5yc3czZVD0mbb-!G3>T4_2#C7`YV6MxjG-+v&X#GYn4)N1MqAWMkKjKT>)&Kx{)@VVx@)jH;y0hhwWdEFEO zS-)PaKPSCis6PXwOMy2K)0aXlBn$Vp%CS~aHyIMT$Z`eq24XdE1~_(j%i)Hzz5f;J z3Q#JQZeF%*+3lFS2ouNBwtv%F*IL88+2Hk0UjI%MZBKlJew?N|i-tpET307*qoM6N<$f)K-?z5oCK diff --git a/OsmAnd/res/drawable-xhdpi/mx_education.png b/OsmAnd/res/drawable-xhdpi/mx_education.png index 19c604cf4a61932422608365012acdbb29eb8c37..ba02c2778c8c3a35aba4b37c6f7e6af592c133e4 100644 GIT binary patch delta 1755 zcmV<11|<2;4*U&}HGc-NNklh8`ieei`nSsXnB%6EZo^yWZ_xtWWXMcXblYs#P1`HT5V8DO@ z0|pEj@c)PPd%`dbhYE$lcHrY?7E3x06rFP=U=gSQ7veZB20>5)79~~8?1FQy=)Etc z)9J-941G8J>6-vy7!H+6r5%#8z&c>K-X2&(3FbpfugC(#e@ZFNunAvd4K|MrL(ab#X?SD9q7xwSppI_SEH35<}{v}|q z_kQio5I8^(1bgE+{(cli7n=3EZUO3nOWH%j=5~W90nU5>g!eu-KR^HGwK}g@fSWCF zNoA|;fIpJ7FN&hSw==F|0dBUyscmj1>FGF*_sq}Fzuw8!n(@_+iSc#FA0@T09fo}ot2GT2;sEc@N|MjE5OfHvuB@DySVzD?0Yzcy3 z%f5a4{@JdvWd*1QE@`isy@wkgxPUV7N9WvQ*=+XZB(46knPn6IhJX{5O6A@I2M!e5 zF?y8%H(}ra1xcr!bGv3|XP*NslgWGmh=4U*nSWgtftOF8KK=<#NvfOixdLQqq&aCYtXYIl$nh*JR3H%#$~Y@XnbSVc<-;MHOy?iq{gCW z{Z&qxJzFRgez>r(P~N?J_j@IMH;&_nleSgY3aEh!uq~I%9bT?OM|r@mUAu-;sZ<&u zolaj0!|-A!<5w`(W5DByXe(WkB}w;0QGfK8W{n+HgQ-;NHR+02pz0J(zz0W)6Dw5Vp%19ca!+awtep1Qu zJ>#5vwOXw%TZy*)224#&eZ~pK#8Nc3@*UZmDm$OAj;W)CK}KfXM8XlT3lzSEPOZcs3@7tCx&Hk&v`F#FXy;A1aQvXBMC{z>&MZ~x$QJR$Sfx(ylLR9q}L?eLmf~05=R#I8g=jP_-UhF8kHfVSKemJ?F02mt^dqC2<Bbz*Xt{$;Pfx$Ip0PRSK9tR7PxZ=~ z8$ruzP11(?eJYiDqqpw#pOylc+53{)^Svy7ZWPxPU}|dWW0JlBU}lT`ajCy7o5oH} zO+9L6hk-kjN9#6k-h9WgW5<@Qt>2C`-2`W5X4ZS}U#FJLT+zolw|^y@%|6o)=la2N zOW=#t%F(L?^4>qtQ;+&gQvs^g>YdG=14vriJ9qj|Qvre?ShmV?&i%Z1?)0Cg0>p7_ z)Q+|qxtLC;pYN?p{iUe@&bixww;G>I`boEboOH9$Q~)!(P0|^zJaF)pN@cP?ZuO6* z#gL>?Gpm}}8AIuS1`HT5V8DQW@L%Ke-l&wh!4m)g002ovPDHLkV1gj4d}{yz delta 1838 zcmV+}2hsTa4bBdbHGc;KNkl%xtHfLR*vyB1B^}Mj;J9gfeY6 ztT7^m0O`lf4~v+HCPs~k7=pkL3w|^jG*Qv`$50I>X4w*{rd0xT#qQ4T#wL~8P$5wu zEx}0ZZt2d>%+8$KA3MA5ZfCo*?anO5xsu7ebKY~F^E~(Ycz@sLWS~u(Hf`FpY15`n zn>KCQ{Qsd=ci45HD_J~Q+#$3gpr_7#=Ipo=Aw%S zUp_d(PU2$t(=q|N4s<1pr;2wH*%cI48?TslyNamFvT+oWZP&a@*8EIPw`V&lsE8?J z#t~tlcjGroA+%_4Ht&L z06b`%7FyY?z8Yi{C`r11q&l+uXzpkkny>_>1^xhVF@LaPo+iy^thTJaHCh<`@e6mo zFgpF_q6yG-petEERsO8;!EVws!(+Sn9w<#dgH}o&;YX*gEjy`I(uA$>%umO~ku^<>%AU zqG6(>vgK!~a(_OTKho9Rby11Zy-xU6Cw=SS9fSXD)ZCl`Oa(3;#$1M$IB+l%>-=zt z;hz3nf4=rw{kcHcWqY}#r0o|m>+`w%*t{00BY(h*z~M5Mdc*B)SW!1rulER>$CD>P;~e`WQ`o1Vx$QJv5Be+Ae{$XuPd6Y&t{3dFJ|#j_9!#wQS8 z9N0GS48RRf+|VWIQQ-Z|y$_AqerzB+@TK`Wm=a(^&xRi3ZMC1Hz+CFdI7}}HgfP3z zc7KPY!1+-CMr}W^{LLmMU4q1;k+@z`2R`@yB~&uLFTXwi!*kcGvA$>h z2PM6C`prN{IXXS7%?bt0SQgQ7WpJ1|W5mT#aYnKwYb_=*qbz9cY^Q8Ly(YcpXZvs2 zU+Ub``R;MXe;{jea5~Nv&@9Tba{bx$=R{$_$hze#L z7{f$h1VGX-qGCKsq+q#>I0YbUSe7l1N-8^gmC${b(|Ez}8)KN1WhA{JbhMhN&VQMS zHY~u#o{b-k#LilvUmna3zRXSn2|i!T%K_3eQvGT3%M%IuRJqX9Z{sq;h-!4Sq+q<_ z>|=vEm?9z}Ya}W@C+TS-Lzk?)@UsNykP+%F;}}hme1y&1=x7?#*M}o)j8l; z5JD5v+cjYtX=4>FWBI3w+TEY)KYwyQeJ^AQ++6$q#biMw?wGx)wTOc8^VLwjb7jL2u1a6bG&UOh%akj9f;PA=5T;HD-9N|1PB!JL| zjgj>tz=`CE8;PuD;xOWM;D7t6Wa{zWExp5yc3czZVD0mbb-!G3>T4_2#C7`YV6MxjG-+v&X#GYn4)N1MqAWMkKjKT>)&Kx{)@VVx@)jH;y0hhwWdEFEO zS-)PaKPSCis6PXwOMy2K)0aXlBn$Vp%CS~aHyIMT$Z`eq24XdE1~_(j%i)Hzz5f;J z3Q#JQZeF%*+3lFS2ouNBwtv%F*IL88+2Hk0UjI%MZBKlJew?N|i-tpET307*qoM6N<$f)K-?z5oCK diff --git a/OsmAnd/src/net/osmand/plus/render/RendererRegistry.java b/OsmAnd/src/net/osmand/plus/render/RendererRegistry.java index 56f0e4709d..a9b6ad51cf 100644 --- a/OsmAnd/src/net/osmand/plus/render/RendererRegistry.java +++ b/OsmAnd/src/net/osmand/plus/render/RendererRegistry.java @@ -75,6 +75,9 @@ public class RendererRegistry { private RenderingRulesStorage loadRenderer(String name, final Map loadedRenderers, final Map renderingConstants) throws IOException, XmlPullParserException { InputStream is = getInputStream(name); + if(is == null) { + return null; + } try { XmlPullParser parser = PlatformUtil.newXMLPullParser(); parser.setInput(is, "UTF-8"); diff --git a/OsmAnd/src/net/osmand/plus/render/TextRenderer.java.bak b/OsmAnd/src/net/osmand/plus/render/TextRenderer.java.bak deleted file mode 100644 index 6935dd9173..0000000000 --- a/OsmAnd/src/net/osmand/plus/render/TextRenderer.java.bak +++ /dev/null @@ -1,494 +0,0 @@ -package net.osmand.plus.render; - - -import gnu.trove.map.hash.TIntObjectHashMap; -import gnu.trove.procedure.TIntObjectProcedure; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; - -import net.osmand.FloatMath; -import net.osmand.QuadRect; -import net.osmand.RenderingContext; -import net.osmand.binary.BinaryMapDataObject; -import net.osmand.binary.BinaryMapIndexReader.TagValuePair; -import net.osmand.data.QuadTree; -import net.osmand.plus.ClientContext; -import net.osmand.plus.api.render.Canvas; -import net.osmand.plus.api.render.Color; -import net.osmand.plus.api.render.Paint; -import net.osmand.plus.api.render.Paint.Align; -import net.osmand.plus.api.render.Paint.Style; -import net.osmand.plus.api.render.Path; -import net.osmand.plus.api.render.Typeface; -import net.osmand.render.RenderingRuleSearchRequest; -import net.osmand.render.RenderingRulesStorage; -import net.sf.junidecode.Junidecode; - -import org.w3c.dom.css.Rect; - - -public class TextRenderer { - - private Paint paintText; - private final ClientContext context; - private Paint paintIcon; - - static class TextDrawInfo { - - public TextDrawInfo(String text) { - this.text = text; - } - - String text = null; - Path drawOnPath = null; - QuadRect bounds = null; - float vOffset = 0; - float centerX = 0; - float pathRotate = 0; - float centerY = 0; - float textSize = 0; - float minDistance = 0; - int textColor = Color.BLACK; - int textShadow = 0; - int textWrap = 0; - boolean bold = false; - String shieldRes = null; - int textOrder = 100; - - public void fillProperties(RenderingRuleSearchRequest render, float centerX, float centerY) { - this.centerX = centerX; - this.centerY = centerY + render.getIntPropertyValue(render.ALL.R_TEXT_DY, 0); - // used only for draw on path where centerY doesn't play role - this.vOffset = render.getIntPropertyValue(render.ALL.R_TEXT_DY, 0); - textColor = render.getIntPropertyValue(render.ALL.R_TEXT_COLOR); - if (textColor == 0) { - textColor = Color.BLACK; - } - textSize = render.getIntPropertyValue(render.ALL.R_TEXT_SIZE); - textShadow = render.getIntPropertyValue(render.ALL.R_TEXT_HALO_RADIUS, 0); - textWrap = render.getIntPropertyValue(render.ALL.R_TEXT_WRAP_WIDTH, 0); - bold = render.getIntPropertyValue(render.ALL.R_TEXT_BOLD, 0) > 0; - minDistance = render.getIntPropertyValue(render.ALL.R_TEXT_MIN_DISTANCE, 0); - if (render.isSpecified(render.ALL.R_TEXT_SHIELD)) { - shieldRes = render.getStringPropertyValue(render.ALL.R_TEXT_SHIELD); - } - textOrder = render.getIntPropertyValue(render.ALL.R_TEXT_ORDER, 100); - } - } - - public TextRenderer(ClientContext context) { - this.context = context; - paintText = context.getRendererAPI().newPaint(); - paintText.setStyle(Style.FILL); - paintText.setStrokeWidth(1); - paintText.setColor(Color.BLACK); - paintText.setTextAlign(Align.CENTER); - paintText.setTypeface(Typeface.create("Droid Serif", Typeface.NORMAL)); //$NON-NLS-1$ - paintText.setAntiAlias(true); - - paintIcon = context.getRendererAPI().newPaint(); - paintIcon.setStyle(Style.STROKE); - } - - public Paint getPaintText() { - return paintText; - } - - private float sqr(float a) { - return a * a; - } - - boolean intersects(QuadRect tRect, float tRot, QuadRect sRect, float sRot) { - if (FloatMath.abs(tRot) < FloatMath.PI / 15 && FloatMath.abs(sRot) < FloatMath.PI / 15) { - return QuadRect.intersects(tRect, sRect); - } - double dist = FloatMath.sqrt(sqr(tRect.centerX() - sRect.centerX()) + sqr(tRect.centerY() - sRect.centerY())); - if (dist < 3) { - return true; - } - - // difference close to 90/270 degrees - if (FloatMath.abs(FloatMath.cos(tRot - sRot)) < 0.3) { - // rotate one rectangle to 90 degrees - tRot += FloatMath.PI / 2; - float l = tRect.centerX() - tRect.height() / 2; - float t = tRect.centerY() - tRect.width() / 2; - tRect = new QuadRect(l, t, l + tRect.height(), t + tRect.width()); - } - - // determine difference close to 180/0 degrees - if (FloatMath.abs(FloatMath.sin(tRot - sRot)) < 0.3) { - // rotate t box - // (calculate offset for t center suppose we rotate around s center) - float diff = (float) (-FloatMath.atan2(tRect.centerX() - sRect.centerX(), tRect.centerY() - sRect.centerY()) + Math.PI / 2); - diff -= sRot; - float left = sRect.centerX() + dist * FloatMath.cos(diff) - tRect.width() / 2f; - float top = sRect.centerY() - dist * FloatMath.sin(diff) - tRect.height() / 2f; - QuadRect nRect = new QuadRect(left, top, left + tRect.width(), top + tRect.height()); - return QuadRect.intersects(nRect, sRect); - } - - // TODO other cases not covered - return QuadRect.intersects(tRect, sRect); - } - - void drawTestBox(Canvas cv, RectF r, float rot, String text) { - cv.save(); - cv.translate(r.centerX(), r.centerY()); - cv.rotate((float) (rot * 180 / Math.PI)); - RectF rs = new RectF(-r.width() / 2, -r.height() / 2, r.width() / 2, r.height() / 2); - cv.drawRect(rs, paintIcon); - if (text != null) { - paintText.setTextSize(paintText.getTextSize() - 4); - cv.drawText(text, rs.centerX(), rs.centerY(), paintText); - paintText.setTextSize(paintText.getTextSize() + 4); - } - cv.restore(); - } - - List tempSearch = new ArrayList(); - - private boolean findTextIntersection(Canvas cv, RenderingContext rc, QuadTree boundIntersections, TextDrawInfo text) { - // for test purposes -// drawTestBox(cv, text.bounds, text.pathRotate, text.text); - boundIntersections.queryInBox(text.bounds, tempSearch); - for (int i = 0; i < tempSearch.size(); i++) { - TextDrawInfo t = tempSearch.get(i); - if (intersects(text.bounds, text.pathRotate, t.bounds, t.pathRotate)) { - return true; - } - } - if (text.minDistance > 0) { - QuadRect boundsSearch = new QuadRect(text.bounds); - boundsSearch.inset(-rc.getDensityValue(FloatMath.max(5.0f, text.minDistance)), -rc.getDensityValue(15)); - boundIntersections.queryInBox(boundsSearch, tempSearch); - // drawTestBox(cv, &boundsSearch, text.pathRotate, paintIcon, text.text, NULL/*paintText*/); - for (int i = 0; i < tempSearch.size(); i++) { - TextDrawInfo t = tempSearch.get(i); - if (t.minDistance > 0 && t.text.equals(text.text) && - intersects(boundsSearch, text.pathRotate, t.bounds, t.pathRotate)) { - return true; - } - } - } - boundIntersections.insert(text, text.bounds); - return false; - } - - private void drawTextOnCanvas(Canvas cv, String text, float centerX, float centerY, Paint paint, float textShadow) { - if (textShadow > 0) { - int c = paintText.getColor(); - paintText.setStyle(Style.STROKE); - paintText.setColor(Color.WHITE); - paintText.setStrokeWidth(2 + textShadow); - cv.drawText(text, centerX, centerY, paint); - // reset - paintText.setStrokeWidth(2); - paintText.setStyle(Style.FILL); - paintText.setColor(c); - } - cv.drawText(text, centerX, centerY, paint); - } - - public void drawTextOverCanvas(RenderingContext rc, Canvas cv, boolean useEnglishNames) { - int size = rc.textToDraw.size(); - - // 1. Sort text using text order - Collections.sort(rc.textToDraw, new Comparator() { - @Override - public int compare(TextDrawInfo object1, TextDrawInfo object2) { - return object1.textOrder - object2.textOrder; - } - }); - QuadRect r = new QuadRect(0, 0, rc.width, rc.height); - r.inset(-100, -100); - QuadTree nonIntersectedBounds = new QuadTree(r, 4, 0.6f); - - for (int i = 0; i < size; i++) { - TextDrawInfo text = rc.textToDraw.get(i); - if (text.text != null && text.text.length() > 0) { - if (useEnglishNames) { - text.text = Junidecode.unidecode(text.text); - } - - // sest text size before finding intersection (it is used there) - float textSize = rc.getDensityValue(text.textSize); - paintText.setTextSize(textSize); - paintText.setFakeBoldText(text.bold); - paintText.setColor(text.textColor); - // align center y - text.centerY += (-paintText.ascent()); - - // calculate if there is intersection - boolean intersects = findTextIntersection(cv, rc, nonIntersectedBounds, text); - if (!intersects) { - if (text.drawOnPath != null) { - if (text.textShadow > 0) { - paintText.setColor(Color.WHITE); - paintText.setStyle(Style.STROKE); - paintText.setStrokeWidth(2 + text.textShadow); - cv.drawTextOnPath(text.text, text.drawOnPath, 0, text.vOffset, paintText); - // reset - paintText.setStyle(Style.FILL); - paintText.setStrokeWidth(2); - paintText.setColor(text.textColor); - } - cv.drawTextOnPath(text.text, text.drawOnPath, 0, text.vOffset, paintText); - } else { - if (text.shieldRes != null) { - Bitmap ico = RenderingIcons.getIcon(context, text.shieldRes); - if (ico != null) { - if (rc.getDensityValue(1) != 1) { - float left = text.centerX - rc.getDensityValue(ico.getWidth() / 2) - 0.5f; - float top = text.centerY - rc.getDensityValue(ico.getHeight() / 2) - rc.getDensityValue(4.5f); - Rect rec = new Rect(0, 0, ico.getWidth(), ico.getHeight()); - cv.drawBitmap(ico, rec, - new RectF(left, top, left + rc.getDensityValue(ico.getWidth()), top - + rc.getDensityValue(ico.getHeight())), paintIcon); - } else { - float left = text.centerX - ico.getWidth() / 2 - 0.5f; - float top = text.centerY - ico.getHeight() / 2 - rc.getDensityValue(4.5f); - cv.drawBitmap(ico, left, top, paintIcon); - } - } - } - - drawWrappedText(cv, text, textSize); - } - } - } - } - } - - private void drawWrappedText(Canvas cv, TextDrawInfo text, float textSize) { - if (text.textWrap == 0) { - // set maximum for all text - text.textWrap = 40; - } - - if (text.text.length() > text.textWrap) { - int start = 0; - int end = text.text.length(); - int lastSpace = -1; - int line = 0; - int pos = 0; - int limit = 0; - while (pos < end) { - lastSpace = -1; - limit += text.textWrap; - while (pos < limit && pos < end) { - if (!Character.isLetterOrDigit(text.text.charAt(pos))) { - lastSpace = pos; - } - pos++; - } - if (lastSpace == -1 || pos == end) { - drawTextOnCanvas(cv, text.text.substring(start, pos), text.centerX, text.centerY + line * (textSize + 2), paintText, - text.textShadow); - start = pos; - } else { - drawTextOnCanvas(cv, text.text.substring(start, lastSpace), text.centerX, text.centerY + line * (textSize + 2), - paintText, text.textShadow); - start = lastSpace + 1; - limit += (start - pos) - 1; - } - line++; - - } - } else { - drawTextOnCanvas(cv, text.text, text.centerX, text.centerY, paintText, text.textShadow); - } - } - - private void createTextDrawInfo(BinaryMapDataObject o, RenderingRuleSearchRequest render, RenderingContext rc, TagValuePair pair, float xMid, float yMid, - Path path, PointF[] points, String name, String tagName) { - render.setInitialTagValueZoom(pair.tag, pair.value, rc.zoom, o); - render.setIntFilter(render.ALL.R_TEXT_LENGTH, name.length()); - render.setStringFilter(render.ALL.R_NAME_TAG, tagName); - if(render.search(RenderingRulesStorage.TEXT_RULES)){ - if(render.getIntPropertyValue(render.ALL.R_TEXT_SIZE) > 0){ - TextDrawInfo text = new TextDrawInfo(name); - text.fillProperties(render, xMid, yMid); - paintText.setTextSize(rc.getDensityValue(text.textSize)); - Rect bs = new Rect(); - paintText.getTextBounds(name, 0, name.length(), bs); - text.bounds = new QuadRect(bs.left, bs.top, bs.right, bs.bottom); - text.bounds.inset(-rc.getDensityValue(3), -rc.getDensityValue(10)); - boolean display = true; - if(path != null) { - text.drawOnPath = path; - display = calculatePathToRotate(rc, text, points, - render.getIntPropertyValue(render.ALL.R_TEXT_ON_PATH, 0) != 0); - } - if(text.drawOnPath == null) { - text.bounds.offset(text.centerX, text.centerY); - // shift to match alignment - text.bounds.offset(-text.bounds.width()/2, 0); - } else { - text.bounds.offset(text.centerX - text.bounds.width()/2, text.centerY - text.bounds.height()/2); - } - if(display) { - rc.textToDraw.add(text); - } - } - } - } - - public void renderText(final BinaryMapDataObject obj, final RenderingRuleSearchRequest render, final RenderingContext rc, - final TagValuePair pair, final float xMid, final float yMid, final Path path, final PointF[] points) { - TIntObjectHashMap map = obj.getObjectNames(); - if (map != null) { - map.forEachEntry(new TIntObjectProcedure() { - @Override - public boolean execute(int tag, String name) { - if (name != null && name.trim().length() > 0) { - createTextDrawInfo(obj, render, rc, pair, xMid, yMid, path, points, name, tag == obj.getMapIndex().nameEncodingType ? "" - : obj.getMapIndex().decodeType(tag).tag); - } - return true; - } - }); - } - } - - - boolean calculatePathToRotate(RenderingContext rc, TextDrawInfo p, PointF[] points, boolean drawOnPath) { - int len = points.length; - if (!drawOnPath) { - p.drawOnPath = null; - // simply calculate rotation of path used for shields - float px = 0; - float py = 0; - for (int i = 1; i < len; i++) { - px += points[i].x - points[i - 1].x; - py += points[i].y - points[i - 1].y; - } - if (px != 0 || py != 0) { - p.pathRotate = (float) (-FloatMath.atan2(px, py) + FloatMath.PI / 2); - } - return true; - } - - boolean inverse = false; - float roadLength = 0; - boolean prevInside = false; - float visibleRoadLength = 0; - float textw = p.bounds.width(); - int last = 0; - int startVisible = 0; - float[] distances = new float[points.length - 1]; - - float normalTextLen = 1.5f * textw; - for (int i = 0; i < len; i++, last++) { - boolean inside = points[i].x >= 0 && points[i].x <= rc.width && - points[i].x >= 0 && points[i].y <= rc.height; - if (i > 0) { - float d = FloatMath.sqrt(sqr(points[i].x - points[i - 1].x) + - sqr(points[i].y - points[i - 1].y)); - distances[i-1]= d; - roadLength += d; - if(inside) { - visibleRoadLength += d; - if(!prevInside) { - startVisible = i - 1; - } - } else if(prevInside) { - if(visibleRoadLength >= normalTextLen) { - break; - } - visibleRoadLength = 0; - } - - } - prevInside = inside; - } - if (textw >= roadLength) { - return false; - } - int startInd = 0; - int endInd = len; - - if(textw < visibleRoadLength && last - startVisible > 1) { - startInd = startVisible; - endInd = last; - // display long road name in center - if (visibleRoadLength > 3 * textw) { - boolean ch ; - do { - ch = false; - if(endInd - startInd > 2 && visibleRoadLength - distances[startInd] > normalTextLen){ - visibleRoadLength -= distances[startInd]; - startInd++; - ch = true; - } - if(endInd - startInd > 2 && visibleRoadLength - distances[endInd - 2] > normalTextLen){ - visibleRoadLength -= distances[endInd - 2]; - endInd--; - ch = true; - } - } while(ch); - } - } - // shrink path to display more text - if (startInd > 0 || endInd < len) { - // find subpath - Path path = new Path(); - for (int i = startInd; i < endInd; i++) { - if (i == startInd) { - path.moveTo(points[i].x, points[i].y); - } else { - path.lineTo(points[i].x, points[i].y); - } - } - p.drawOnPath = path; - } - // calculate vector of the road (px, py) to proper rotate it - float px = 0; - float py = 0; - for (int i = startInd + 1; i < endInd; i++) { - px += points[i].x - points[i - 1].x; - py += points[i].y - points[i - 1].y; - } - float scale = 0.5f; - float plen = (float) FloatMath.sqrt(px * px + py * py); - // vector ox,oy orthogonal to px,py to measure height - float ox = -py; - float oy = px; - if(plen > 0) { - float rot = (float) (-FloatMath.atan2(px, py) + FloatMath.PI / 2); - if (rot < 0) rot += FloatMath.PI * 2; - if (rot > FloatMath.PI / 2f && rot < 3 * FloatMath.PI / 2f) { - rot += FloatMath.PI; - inverse = true; - ox = -ox; - oy = -oy; - } - p.pathRotate = rot; - ox *= (p.bounds.height() / plen) / 2; - oy *= (p.bounds.height() / plen) / 2; - } - - p.centerX = points[startInd].x + scale * px + ox; - p.centerY = points[startInd].y + scale * py + oy; - p.vOffset += p.textSize / 2 - 1; -// p.hOffset = 0; - - if (inverse) { - Path path = new Path(); - for (int i = endInd - 1; i >= startInd; i--) { - if (i == endInd - 1) { - path.moveTo(points[i].x, points[i].y); - } else { - path.lineTo(points[i].x, points[i].y); - } - } - p.drawOnPath = path; - } - return true; - } - - -}