From 19d42fba3ee3d74d164935652fca3729b425c5a6 Mon Sep 17 00:00:00 2001 From: "y.ridkous@gmail.com" Date: Sun, 27 Mar 2016 23:46:23 +0300 Subject: [PATCH 01/16] Update LanesDrawable --- .../src/net/osmand/router/TurnType.java | 11 + .../map_turn_forward_keep_right.png | Bin 0 -> 2315 bytes .../map_turn_forward_keep_right_small.png | Bin 0 -> 1559 bytes .../map_turn_forward_turn_sharp.png | Bin 0 -> 1937 bytes .../map_turn_forward_turn_sharp_small.png | Bin 0 -> 1368 bytes .../res/drawable-hdpi/map_turn_keep_right.png | Bin 0 -> 2268 bytes .../map_turn_keep_right_small.png | Bin 0 -> 1539 bytes .../drawable-hdpi/map_turn_sharp_right.png | Bin 0 -> 1925 bytes .../map_turn_sharp_right_small.png | Bin 0 -> 1373 bytes .../map_turn_forward_keep_right.png | Bin 0 -> 1842 bytes .../map_turn_forward_keep_right_small.png | Bin 0 -> 1360 bytes .../map_turn_forward_turn_sharp.png | Bin 0 -> 1579 bytes .../map_turn_forward_turn_sharp_small.png | Bin 0 -> 1236 bytes .../res/drawable-mdpi/map_turn_keep_right.png | Bin 0 -> 1790 bytes .../map_turn_keep_right_small.png | Bin 0 -> 1346 bytes .../drawable-mdpi/map_turn_sharp_right.png | Bin 0 -> 1578 bytes .../map_turn_sharp_right_small.png | Bin 0 -> 1216 bytes .../map_turn_forward_keep_right.png | Bin 0 -> 2856 bytes .../map_turn_forward_keep_right_small.png | Bin 0 -> 1759 bytes .../map_turn_forward_turn_sharp.png | Bin 0 -> 2308 bytes .../map_turn_forward_turn_sharp_small.png | Bin 0 -> 1560 bytes .../drawable-xhdpi/map_turn_keep_right.png | Bin 0 -> 2706 bytes .../map_turn_keep_right_small.png | Bin 0 -> 1728 bytes .../drawable-xhdpi/map_turn_sharp_right.png | Bin 0 -> 2334 bytes .../map_turn_sharp_right_small.png | Bin 0 -> 1533 bytes .../map_turn_forward_keep_right.png | Bin 0 -> 3869 bytes .../map_turn_forward_keep_right_small.png | Bin 0 -> 2216 bytes .../map_turn_forward_turn_sharp.png | Bin 0 -> 3029 bytes .../map_turn_forward_turn_sharp_small.png | Bin 0 -> 1881 bytes .../drawable-xxhdpi/map_turn_keep_right.png | Bin 0 -> 3713 bytes .../map_turn_keep_right_small.png | Bin 0 -> 2158 bytes .../drawable-xxhdpi/map_turn_sharp_right.png | Bin 0 -> 3075 bytes .../map_turn_sharp_right_small.png | Bin 0 -> 1810 bytes .../net/osmand/plus/views/TurnPathHelper.java | 193 +++++++++++++++++- .../mapwidgets/RouteInfoWidgetsFactory.java | 147 ++----------- 35 files changed, 209 insertions(+), 142 deletions(-) create mode 100644 OsmAnd/res/drawable-hdpi/map_turn_forward_keep_right.png create mode 100644 OsmAnd/res/drawable-hdpi/map_turn_forward_keep_right_small.png create mode 100644 OsmAnd/res/drawable-hdpi/map_turn_forward_turn_sharp.png create mode 100644 OsmAnd/res/drawable-hdpi/map_turn_forward_turn_sharp_small.png create mode 100644 OsmAnd/res/drawable-hdpi/map_turn_keep_right.png create mode 100644 OsmAnd/res/drawable-hdpi/map_turn_keep_right_small.png create mode 100644 OsmAnd/res/drawable-hdpi/map_turn_sharp_right.png create mode 100644 OsmAnd/res/drawable-hdpi/map_turn_sharp_right_small.png create mode 100644 OsmAnd/res/drawable-mdpi/map_turn_forward_keep_right.png create mode 100644 OsmAnd/res/drawable-mdpi/map_turn_forward_keep_right_small.png create mode 100644 OsmAnd/res/drawable-mdpi/map_turn_forward_turn_sharp.png create mode 100644 OsmAnd/res/drawable-mdpi/map_turn_forward_turn_sharp_small.png create mode 100644 OsmAnd/res/drawable-mdpi/map_turn_keep_right.png create mode 100644 OsmAnd/res/drawable-mdpi/map_turn_keep_right_small.png create mode 100644 OsmAnd/res/drawable-mdpi/map_turn_sharp_right.png create mode 100644 OsmAnd/res/drawable-mdpi/map_turn_sharp_right_small.png create mode 100644 OsmAnd/res/drawable-xhdpi/map_turn_forward_keep_right.png create mode 100644 OsmAnd/res/drawable-xhdpi/map_turn_forward_keep_right_small.png create mode 100644 OsmAnd/res/drawable-xhdpi/map_turn_forward_turn_sharp.png create mode 100644 OsmAnd/res/drawable-xhdpi/map_turn_forward_turn_sharp_small.png create mode 100644 OsmAnd/res/drawable-xhdpi/map_turn_keep_right.png create mode 100644 OsmAnd/res/drawable-xhdpi/map_turn_keep_right_small.png create mode 100644 OsmAnd/res/drawable-xhdpi/map_turn_sharp_right.png create mode 100644 OsmAnd/res/drawable-xhdpi/map_turn_sharp_right_small.png create mode 100644 OsmAnd/res/drawable-xxhdpi/map_turn_forward_keep_right.png create mode 100644 OsmAnd/res/drawable-xxhdpi/map_turn_forward_keep_right_small.png create mode 100644 OsmAnd/res/drawable-xxhdpi/map_turn_forward_turn_sharp.png create mode 100644 OsmAnd/res/drawable-xxhdpi/map_turn_forward_turn_sharp_small.png create mode 100644 OsmAnd/res/drawable-xxhdpi/map_turn_keep_right.png create mode 100644 OsmAnd/res/drawable-xxhdpi/map_turn_keep_right_small.png create mode 100644 OsmAnd/res/drawable-xxhdpi/map_turn_sharp_right.png create mode 100644 OsmAnd/res/drawable-xxhdpi/map_turn_sharp_right_small.png diff --git a/OsmAnd-java/src/net/osmand/router/TurnType.java b/OsmAnd-java/src/net/osmand/router/TurnType.java index ada4a472dc..7e01406590 100644 --- a/OsmAnd-java/src/net/osmand/router/TurnType.java +++ b/OsmAnd-java/src/net/osmand/router/TurnType.java @@ -158,6 +158,7 @@ public class TurnType { // 0 bit - 0/1 - to use or not // 1-5 bits - additional turn info // 6-10 bits - secondary turn + // 11-15 bits - tertiary turn public void setLanes(int[] lanes) { this.lanes = lanes; } @@ -183,6 +184,16 @@ public class TurnType { return (laneValue >> 5); } + public static void setTertiaryTurn(int[] lanes, int lane, int turnType) { + lanes[lane] &= ~(15 << 10); + lanes[lane] |= (turnType << 10); + } + + public static int getTertiaryTurn(int laneValue) { + // Get the primary turn modifier for the lane + return (laneValue >> 10); + } + public int[] getLanes() { return lanes; diff --git a/OsmAnd/res/drawable-hdpi/map_turn_forward_keep_right.png b/OsmAnd/res/drawable-hdpi/map_turn_forward_keep_right.png new file mode 100644 index 0000000000000000000000000000000000000000..930a6ed29a2073ce87cc53a693ec1ea862be93a1 GIT binary patch literal 2315 zcmbVOc~ld39#6qi5hyh-1+SV0QC!V2xhE1>NH{`>C{j5DA;$z_NG4=P6G4hfW#z4B z!9hr_uE!vs;-Xt2Mtov<$`XLVr1d^9)~T@Nczy+jA$0_Ct2A_&!z6etRk z$hW0mf&6ed$F0ifSTt4~!Ii;kvc!%d8`N5ijl=l`7_<_Z3PK4|C`GB^5pDI2M1oSz zBgQbrRI!#1r7FWRbkO>YHPNyRl?;><1N;eo1}>&R4WSZ(L7k>SxCS0^N-r0i+qWr1 z!W0Bm@rbXSiWRRV@L?T9V3JuR82|tTHb@4T96F7;ia?_RObQjG08|nc-~v=GjY^n) zh?q5*-`zmqGzR5TsCP6dH|$AxOwJ4Jt8^G>G?% z1_6Y~bV@C%gf#@aMu`;Og7S!%r>{a#YsKQ%iZ#e|qOg=v3=%B`AX6!7wLPvWG=fG! zzq|2PG!nf{3sIsV1m2>PVf9dW&yca){jniC5c7r`sZ(M_k)#P=*%mdVL4^Vy5j!Ev zm2$3(A)`YQ2q3XQ27{#FFjypzDr1o#30)?ISb$tA1!wfUjUU3IgB&oB9YPDF0YES_ zh(l)v)7b(J1E2%cK+X(Ts6kMPMh4B;R${iNxvW3ra``$)g2K9J7*3nH1#44b6h=~E zErHLUsye|pMyZj*dSr#YOs}FAKsx1CNFJht)r6@$bCqxLfg`1}0L4_mayp60VMs|* z7K=?%$k}WLoz20*ml3D=^8Yt~6wE1#{j$7qd1kh-8)=`uZUt=dx|tvi)MlEFZXPYk?5HC*Y-IGWkCOmwm^UkQDTlss)`?mT|1=aRO?}w2grS;DF!2^M*}NjMjRj z?eTc&SXOpJJ5oCEg{^6D@avrI;Ewe>%x{X9>&LFHt{4C9pgdUCMQFRy~hLdMwW?|0bLyNxdXHGbh9OVVTJcs-6JVO=ujxWmz0}H?czjbd@)PE z(u|CMkQ#sBrmY~if+EziW9KFt0juo-^|)h#cVeQnQB`@;_eW(>s_1rAN1V^G1&7)S zCdvg>S4uoum~Dk41haBkcScK+h`y3#5*L$(mztHQ8N1HP?hJ$qweimWJ?`lW!DgL_ z;j3O|R#y9!pKV*B0-e`*n>|IUM1bTqk3NDQa>VzRk9AyK&@%kI+be-Gul30#X(^n8 zw+7{vZZ@(%>=ULu+wbXfF0hc1Y)mg7B{*wX=I`4uR8{0d_oa37a~CqYp4a9IwRGqA zOYZO6E&fZl;Nom&W042x$o=idR?c5`UDR{-R&2tG#Lzrrl_16ra%;`Kd;cT+qN2=s z)Gn{lf9{?Yx~95P?|Z0dbocg>9CNzcgtfT@IB_0+^n@CYCUhUq>c?S5pD42tnj}0s}9G&Xl^j~x`)f`2eiS5#=2-w#J!sIi$Qcw+@QJ8 zpFu`P!w2)+H_KbPhPu};UVU_~#=)ItjCtnTw#fBTa?_0T`}O3Qt+xl8hV>Gy$;-9( z)AyY8e-k;H`u3QuQc3^Qh19y$-RHkU9LAnkr^zBbL&_~ZOI`Ad zvA-HgZog(|$L)`_P-O|?+wS~ z*goHcwEFu(#EHT}p?lpgH{*PNeDTvqLp_2`KWy#$M|@(8<9K2J{j3!cJ3SNAD^*)c z_KjZSJd02!I`DpGHdq>JTiW*KjJ5Cd2h>OFtz(^K$OO1Sy#JjSJDc5}6sn(EKD^x1 z+Epeh6WYR-yl9JlT=0#1_-MMZ?yHSH-`5TfdkiJU^d5)le)TsDN%@0Waq;F}aff%u zNwv?xS&^m58-{S(e!S|mNz~X`@-6pD))7=BMAXVwG1Ma7*DD$=$G?b;)W@+3 zR^7q#u8k@9_mEQqnWZ*2cIVu3LD8K#p8j!-btldqKXk_Y*ugX@$XIPUeDI9?|Hd^tCJmKUzIpI<}&Qgy`sdm;>8BQORf@A?hz*vGyA literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-hdpi/map_turn_forward_keep_right_small.png b/OsmAnd/res/drawable-hdpi/map_turn_forward_keep_right_small.png new file mode 100644 index 0000000000000000000000000000000000000000..4f061a8f65003e863b3056e4dbf6484fb3985410 GIT binary patch literal 1559 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SL1|)l2v+e>Z$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%w?G&5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT-VtFWlg~VrW1CgG|37u|VHY&pf(~1RD?6IsxA(xEJ)Q4 zN-fSWElLK)N18HBGcfG%TLe-Fbd8mNQ6?}_5_4SglS^|`^GZBjY?XjAdMTMHR>>yG z#;J*^hPq~!CMLRR7A9u8mIldYx~YlA$w{eZhABx&mN0X$>31_TwzRNxbaFFtG%_@F zHFdHuHgz>Ncd;-rG&VGFw1DaL%quQQ%u7y%*_{cr8>-h4uU;$XqSVBa{GyQj{2W*+ z2*}7U$uG{xFHmrH2FJRBMtEjkN`85VCUZ|0$B>F!Z)V!+vpC8eE7un-o9L?yo*Zv)63iT)h3wyE8NE zKWU$tb=r2`%=GksC5H{RB(0ecwq$9`$*@Gh{ZrPxwlV(ZDAvRDdxFA4MX5Qn7AJ9B zK4ah4vGT=(2-O`-U%xz$zQ8mu^?tIqSl|+=gH3PxOq;m_W*Ph4$znF&WVJ0%xhq66 zVzQ|Xn{H#`arGC|b2TT0mh$YfyzJ*NU-G}=#3M7FT*;AJpYAsj+V?8IIz5U{IX*46`lkKF8g!BYhDK3Ieur_Rh6q!0f+Xi)=2*2T$VVu=VSHF*0aXP&Zmlr zF$edgvpbcql+p5w-&H1lru;(6a@7}MQm<2^*^eF2d;VrA5f09lXa^M*mr=`e3W-F$sT*&PfmLt{s%P|HWiWjfd-} z|EoLBF6PM1%Zk%+wQqTPH*!*L|H^soLd#k-6TM~#sl7evY`LuEZ*gKg6Ay#@nrNn_ S9LuvoMYX4^pUXO@geCx}1VQlt literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-hdpi/map_turn_forward_turn_sharp.png b/OsmAnd/res/drawable-hdpi/map_turn_forward_turn_sharp.png new file mode 100644 index 0000000000000000000000000000000000000000..08cc5042a73effa4d6288cb87ed2536fa0a46042 GIT binary patch literal 1937 zcmbVNc~BE)6i$o82X3NU~wGB;l%>j(F9h z3Uw$_fmZ8<2cD=SgIGYSGT>DZu}T9vq6UjfJi7s+cIx;?cV_o}-+RAzzc;%&DstAa z!D9zA7>r?Iv*pn=wYuJcp7d9O2^(lKhEl{)^NB>tf{-{P7$ej;5T-{ocr=b+X({LM z00zUutX0KPamqPTl+d#g7lv)s8)`VAW%X| zV+fw4ot;kN^V1_$XnHa#!I(jTK!89dQ?VFEo6Dp|(t z4Ju9<1%wbJ4hYyn5QSkF5J}juK+NL``~fZm3pkL314AGLOJPXLg@C??NqZx)L}|1< zw9glPlQEMh$|&V68+rDbnQOu$OWXMkg)pX8OWbzerynX5@f3m(aVR&K3&RS*OfgTO;ECj7KFoum zV6j^_%wVDr1B$zSYiZwox}p#2N<&B-p$Jk%5IXl1L?savVM-#5KuAbW*8$c7tpOt} zrY~J>>djh?lUg&5g_49G=&7?*`<@uYYMu~I>`55ofdVmK4XTAg5txXHM0}n|Os9`B z`}DE@TR#pR6vs6z?+lNdMNg#b_+}O8%bR7w4fF<)^s4-MBmV-ufd|9n!76K0M}Z{C zd!Fw~jS@OL&ifPqggef7c+Uh@tXb}DV})N1l@C!)PVzt8d6sD#uqt8b#Rv-V^l0l zm;nK!M+_b4+0U<+c-TIox&3-cpD@&oadBzrTj9F~JZvLfcHBbS#N^AG$7jg0=JK0U z3&OXQHoS6{k+aH*Gv`z~pFO)PD%<-iZu~UsCNiQ?b^G`198>KeyT+&gYnjmpEz`4M z`A;nH$TNifG!RQ0+OkvUSArn)r8L~ zwl8i4pJmlNSu~Z{>)2X(EMrN1@{7`fs{Bg-xuuI1|B+=ce0ikF;Eaw}bv@mmgV%aZ z_>_OOB3GNj4vrFpfA&^ySqUgI5*~WjJPfJ zhp@Xv=ZE zYS`VO^86&g>rhr&&S3MB3P1Q>lfhoYN^TZImb}>hE1q9g9T?!5+j=ynRtc_wr z=N{E9(>Lx&4O-LI9g|pK6R*-NxuV;$;9K}q z+sAfjl<(aBpB;)V`*qHf%=otKs!g}^WTQH^tgdYw{nyy@GW+LK;ycN&<0rJ<)6c(J zU)-v#Z)>@4@5g?)t5nJgFh{I?BHvTeGAVAKZ=vmFjKkOdJ(p7v@dDFyPS}}Hy>0w< z5mJ^trgqGf_y=&wLD}T?(l1!e&SJ%MUHwDd+Q=am`vH%N2mSI766tH$sk4WV)7C$@ zqil3`ZFyduo~hVzJ+{*aH%E0ZRe1jGdxbxsT68jI*u?3p)1X@;&;!r$=-ml<{PjhO zYcod0dW_ndGUB_ptMH#m&c~kQ`4|3cz8&4I8yFspgp>pMyS#1;b^Rp66p`|MGZSq8 E0OgqU6951J literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-hdpi/map_turn_forward_turn_sharp_small.png b/OsmAnd/res/drawable-hdpi/map_turn_forward_turn_sharp_small.png new file mode 100644 index 0000000000000000000000000000000000000000..4d2072a5dde3ea17c12eb020ee453667e15c6927 GIT binary patch literal 1368 zcmbVMeM}Q)7(bn10@1m@1WdNubrKf2-dC?5M^6H6!A6UGbkMkrc)fc|59r--chG_} z#w{CRBW}^e5ZpgXHe)7i1TvCoGMx*k7|{@t%8+H*Lbe1qHl~YXF?(AmTQcGwdz1I` zp5OEQp0DevuBzOYQ;>ro$Tt5zZ!O&Iskt=^uD!nI`*6!QeIc_>jhJyk2S}Nuh5_o2 z2~D6D2vTR;4d6zQXFB9y$P5JzaH1Ns3Mmdr?E`5oi zvczKzY=8`C9uSrHb?Kn4t12jVwTLbWE8UB_6C6|!1Ezo`Vy%k7C3q~YmxJfjGl8LL z5wnHIR!M~d)u>0+0m@qKxJXeH>Tp>p*2&OpF-nsZOOP&tB5{)9D3YT|bZubJnl44S zT5rXgEqLRxsA*~(LB!*6Yn-vFdJ{ppTrPs737W>C1a5RHrjWoD!;;b91%{~0nklOa zn$jqQ)pnD|Ak$SBVp<@uu2?bF0tG`xBm|A1tRxYOrTj`u8)hx|hsK7|MzB)@L@hAX zc3p(|h*&aU7`vw%N(n+X+(BK2NfBDTs@NU_is|?A82n zJMJPyI}QX!3jHW0bTkd37ALH;kZ4^V1WzG!NuNbDF zh#+HIhPKzRzMM7QQ#%?tf|Lg`DK_ zj=tY}wpa7@p_9}6><7zy)BL3$H{lbT_m@=WS{B^z@1?tkd$J23-hH88TbOHmGFGsw z_(9g-y~no?X^;MxbcdE!`lyd@Z9j3>GF$N5H#uKu!mINW6@xeZS7#2COm`LC3{{Tp z)&hfMeqFTGm|4DXKL7Ly-;tW7<45m32wrP`^klTBk=MGZD^l^<_;Y>kes=U)7v+*>Pj#(EiC&-7DxG;@tG^j)$8k53f)@Vwpek*h7f7s literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-hdpi/map_turn_keep_right.png b/OsmAnd/res/drawable-hdpi/map_turn_keep_right.png new file mode 100644 index 0000000000000000000000000000000000000000..53bf1bbd5a415b5c569b6a25b42abd9417c8707e GIT binary patch literal 2268 zcmbVOc~nzp7LQ0kL5Uk8>xn@r1hOZOBoGk@*eDUCk);J8Brg)kM&6SI6cL=FxBvra zD*`T9mzGVAY~=ur9*xxjCZbSegeVMPgHp9_Q^a{eu=9tff6P1Qz56Y{-@W&{%XeOW z#MVtqZJcaSDAZEk=iEp{YR&H=E9A=(19uSN2#3VLUnnK8MyLi+fnsG6h~>$JJHbd$ zD9%Xx8T3b?7N$!DF>nk&j4e{ii9$1msFkY_HVWk*pj8P)sUVC^0(VLk9Nbh}Ck`tW zb8yiNKAEoy29u?qXR5(3GPepunW-X{7#FYs>#t=a3gjRx#A@X-1;o~JaI<>Z$k@D0 z!eM72a4HA)!KoO21U6Wy2C)nxKoC(V6s#|cNMSH(RE7_hN~SPKWEP1+CXgv?3YkqM zW9J?mVofcUup_ylbGDEf2bT=PDmICv(P)So8d0gQh_yV6ecNm!5kdo>4zi8Reb(O#R_OHP)Nu~TA_+WA(BaQx%phP zXb6r3|8(P%Xh@Ku0!fh|q}-(zA^DKF&y$hZ{k0)85b=f`u9hN65z4qq(JnctfO%XF z4%s1!rDC>-E~0@#kU{`hbUH!8qyq#NSp*P3Ax)G70u*sl5^G-1r}%-sj364992!ca zaw(J$1``OTFuB1@Ae2S(4dMdxT%H1gg$fZkZ(EAkp5uo6C6^tn28FOvEl?_D^HmU$ ztb~m@|)0e^|izFmB&NakYspW>NcLMqZc{MZV}nthWpYuxewF4UufM1UC%h1c$&8%DX z_Yj^#iKP%tjbCNC7!o;1xP3<>Bf4uekG{r6=Gf;PV}b6E;x0;8#vUxlcIhl^x6Tum zvr?aAy^2k(7|(III}k9kx4Ze(P-;bcdd-eH+jF-GE*6#xa~J6LC2k~R*DO2oK`dF6 zH;V30X{0_sG*&8!cp)=9xgJEwdw6w)-Goh-Z<*KI;ksnEd()5FbTN6cgJ<%a!u9&9 zQK#mV4QKMV?*HaRitFu?vhkAl@Ml9@O>%*BY-n^`&)7o$MtXMS+)j(u8$n$s1*&rU zJ#}N@T}ODw{pwo7XT3zCng)b?@@{A@yx7L>OoROMc)HaceLuRlO* zG*P|Zy**`Pclh;|B0u%}X*YY9D0EN%bnS_#JH!JFOtRG_Bl%4|w>5NA2OrPeXVY|f zXlkAFYM+&U6KSHM!G$w_L4h| zPUrJ$k5}4^Ztf^_!?)bGQNY#BKGnS=d%F?@D#q_op3%>-pZeaoYE#MiEkNnS^Y+KFW!aOM zCBWZ$ekf2|hmPLi9w_7#jj`Wd4di`$*K*L`^@U6Sz^MjfX}7LW+F{>(!A<7$aJTsG z5qA0hYvS{g=9Yjv4dEUqh>LYK`t#$%Rk6m)Py36RUUWkn-I+PFNp%h%abjygdBFx884-c8xy@$iBDuD2EC7 z4`D7D`x?%i{#WMA0>|UPS`QrnK6Hqbjj?wBBShhh51$7*%tYSTWyY`CXoR>r%=yP5XncWW(scEt@u9}aK(wj>cSfK(l1KO>WC1d9Q4PMArZf#Iv?tcNxnx%{Y literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-hdpi/map_turn_keep_right_small.png b/OsmAnd/res/drawable-hdpi/map_turn_keep_right_small.png new file mode 100644 index 0000000000000000000000000000000000000000..4628fa7a9b60c12c66740682534f259f9b08389b GIT binary patch literal 1539 zcmbVMdr;GM9IqlOIvtyj&3QshCx=R#q-jEvvnXvS)>*`g%I0w9Ra$MElBBeVp0A?f z*wh_9aEPv+=Q-V0#q)GN$3*5G^D*^gI~Av*b9l&PK8E9NDN?sTJpWkklHcq5`FuaW z?<3{8IoX2-yfZ+hQVp_BrtHdyN8kQ^m2XAX{A3M7Z}0kqVjFIfLRcE0Mp_c7C{goozNnf0o7q?fDT452qqu|*1!mfz@!cadLB^m zCUOqaPFZ?Isw*GAKyj)9ffz1mUKP*Fop6J1JDXg4LWeh=@Jt&|Z|PPCkhBUwF*@-&ZV za6+%wI1GARL%=Mq;c1j*cpTvvhKTXJ44;{fnNSKrEvSw{kSxrAn-K$LHsBTlO*c_^ z3~TjDGVNvgm~WTjy9cX#C6+XcJS_`io*=kmRgmixWI=KYKEQ15&N`4f+vVkifHXFm zrsub&c+pkNa~4tX0NrsWT`$pqaj-$hqNv7!={XIK>KP4#bEw9Uju>FpL0}Gs1$*$^ z|BWA{h=QWU@}J^~Z7CHQoxW%VW$~h!c(2kyqS7jpY=`tJRd2PG%FGM?a(~OY@znI8 z4bA8&h8evkZRo%?w*yQj!m**ufS~|VmbnUk}mBU|uXsS6ldZn0uYtgp*rDGHE*X&x_3U5CW5q&LhZuqrY zj5`r3>bJJ!{AW9k#WfZUc9;5RS=*hxi*hqRToUiOu~8lLoo)J(s*I%O(<8T@X-JWt z4y*68YHd+k{WxF3?;VRyjdJ=oI<{}R$@B_`u%%_&q58S)1t)clK&RXnyP93S7YrYQ zp4qG83z9mYEV~D^vD0$)x7H`MXZV->&{j~~+j0^!#IL%cx;h#6tS|muW%)M$TeIFf(A=tZuXe6&O`96(7;&a%*H`fR zq(_NYiYr5NR+?&)j}EE&8_A}3--LIKa$CWh`}Ys}sbR#BaMBq6mHOtEZ@#aeujD%0S)bq<*KW-VC^6_TJdTDan#wyatX=qW^+qKNC1O`TaJ;cNp=Gfk`2iM2|{CWI;bd4 zEr^PP7hpxjLFBM1h)zevgAo-KkDwG##MFZkP=Ri^YG)jObZ2(IZ@+z?=e?eHc5_%r zp#8LY(AJ@=$gQxi}O4u|y=UAkw8;jN*&pG7J!_qzPCACPfV? zS1@l1#X3zH6-&fQg86b>MVDG^=z5igL{li&>Y=}n6& z_z|LjabM({fSO1U8a@c7r>E1?5jw6-0AU`F2SN;x!Jv^AG@U_BNcA+eZqWpT2-C^6 zN)4gJ)qsUjD#KF=0hNq&ECrQDBAFys>&6R3mJHNOH6TofK$Xgp*Qm9Qh`|00x zm=uF)Y#x(IQ*fDV8V{1QX_yp|%P=;K%4EC=p3mU}*c`;4C4vGNz6==lXZdjvmOsJ~ zahWgzL%!SztXQohq-r@f;af@i9>WR)zKG=uwV0H^wNW^pJfVWHM4Z5NiMR$33P-yR zxW_2fD4wqKu(W9`YZ0bZreSD+7FPkIb>=HS69ZR!+)Mq%DPKzryQXf7FweVCQo@`$=em36j#oWWBJ8qDXj86RSunlRU-YKr z?5@Dh@O;Q4=q=E>RXJ69Y=boAEMABvEMHA5HCediK}6j`RWqN z6s62=)^s~t8|!SV#tmziLE{TBmpl!CMi*NfAygK3W!?7jW3Nc6#E*}M2xOmB6SHMCq&?RYtyN$edy zdtwibC=FGXO?}{T^G;s^r^_{nQbaGGpcQ!w|Niv!PSQ2H*T(lDF+az4z7WHx#yoEoLWKrRid4F?u|DHL|e^JKx`RZ^)3rc;{;67&n^(@jsTY zcW>d;+H0mAYy4|M3;!$ z?2K7ucQAyf4|{FV(EEc2r(}0LHUG--_cj$@?k;M{^}1^WyI;}j`#cB39pmmlDSrE| zi!iSg+i(ANcVl&PyP@e;NqykY2Q>ZdS07HJMi@Gs`#7_4n=RhPF~Rc;QS!& zxPOvFEq>8ru7{&e}q6)vY G+5Z64qx3ug literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-hdpi/map_turn_sharp_right_small.png b/OsmAnd/res/drawable-hdpi/map_turn_sharp_right_small.png new file mode 100644 index 0000000000000000000000000000000000000000..0bd7e71845df7fb923ac31c8ae695d643bc3bb53 GIT binary patch literal 1373 zcmbVMYfKzf6dt7ygknQW6)d5XK@w^@J3ITBot?7OWgm7!7wNJMq?O1#?y^&uM`s3h zp^CK|jgV@pNgrtlhG4M`mX_9-T1=}JLVN^?e?&?RsWnZsTGDD;4L8!4LCMWBOECfMv0$aTyxKhbCa|Qe!@a?_|mjc6AXVfSWBgSd~aSI9u z(164?f)HSZwmqMLG6czJ6~lE#U2q%2E0T##>X_n^3egBswk58zd=oHG4m66g3%fOZ z2}4D}h1J@F=Ah~UQE_X#25Q=?!hCxZ?-Z~tQOX++D#PBlO%~coF>vvTP^lYsKrd$3A2+R&A6FlNHb$GqYDoP zy=g*(33>eszTnP?Sic9z2XDYwt+sj&DhZVO5J>=m@t?z1|)w2icqW;dP2 z24vk}Wget`i_rH1mV6+V@o0cG6fLYM&FL(Icv4kIOKU}0P-6PVWSQn! zdx0jl0>Q5-5}L|0BQ6mG%~>fjk|HcvaXW3}aE_uJctmhGY*q&i>GRkEUiiQHBVbTO zvRVGqJn19Ykx6lJ6yRoYn1Bo?NQ0x&J7#=}AP>D5@VdkCshh_xRc4U+udc_JXLltg zTGuf2d1vQvV&Ipng_|?q_)Ssu+`{SU(cYSO2kY0ppO|p>HXKjf@9R;}l_k@MhNr)+ z9K5yitFQZmJ(U+b0w-q6P9Gerd+NHa)K7M8KfvYb%=Pi&jj!3&jPg&A?!?Z+-v=vi z?!0@FT!Ejtc6O3}`pX-+h5o{O$Nw12*fsJ|rt$Iks+0Az15@SuK<&trYt?mcy(FEI zE|(0QnY)r5y|b)qu=Dq_fw|$Fw!bIC+uqqTkykPIjku#rdHJ+B^j`L_o9R&H=Qb)4 zk$RRh(Sp~*kC&)f->o|GQ^SSFrVjGOKNraRvS%eU#+^I5;mVAue=@stEcXj;?F*~R zxsLvakA3jN(IWivbL;o-*mdMu`Taokz47J~{OubZ^?OgP{_&9u?W6Gls>rr?cVE*Q zt$+B<4R^a6Hyye&S@C>MUj2s`XTYPQY4UyfP#o%hW#;XX^wBxuuVwkj`9IGdzP;UD Ql>FfZd{y4TiiZ9F0OeQbGynhq literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-mdpi/map_turn_forward_keep_right.png b/OsmAnd/res/drawable-mdpi/map_turn_forward_keep_right.png new file mode 100644 index 0000000000000000000000000000000000000000..a2a0f3d7b801881338deef8d1cb69fbea0a90e31 GIT binary patch literal 1842 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 BImZA1 literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-mdpi/map_turn_forward_turn_sharp_small.png b/OsmAnd/res/drawable-mdpi/map_turn_forward_turn_sharp_small.png new file mode 100644 index 0000000000000000000000000000000000000000..ed6c1c4cbb644c5f9964fca5bffdc530f9a0f0f8 GIT binary patch literal 1236 zcmbVMZD<>196uYk%+bcp4{ACr&#rOK;l1T9m)y}?ljf2&u+)%cEXdH_%ai74?`3z_ zCG9}Awy+9gQy91x9NQG;3kVaW>X1l@WAX?MVp<}1RWpV3x=8^A~2z^fTlTRd16z-+q@#$2Vx2bZ54k~ z!q=Rt7E2&&yAUKup3oSE0ZD;m5-B#Gcmc#|CPC2x#n1%Jhzu>pY0!CaWX;uUVp-02 zY@w5c*L~j+DXP(EkPVi!-3f{j1c9RCR6I@~4Z@qTe5FZP-e8wOhMwjcj&Il&2pARB zp7tdidAb&Y=@g6W#Fp1d6iOM@R2+&SY05N%xZ2vDUxxp>v7xqCnQMJ+?uI12T=Ynz~*XVKWe zhm^|lOsyTT&Ju|frxGg9CyAP#Omb{8g~HeH4qpGi`J<3iRM0H{X`ZeKb!4zz9|d$+ zA0}v_33Ab>yv1MGiN@^Df}E)|zgJfuJQ)6Byk~#!eD5i-emnDaq<{LmcjxoZaCa}S z{026cjx9dX`{;6dHL`dQJJSE@rG<<8Hif0|`I8H0Lf1D9+?WX6cV7~J8Gds0sl}gr zuE#EXz9+pJe*df2FGc27{!Sn6{c@^w?76`f5#17A{{0|`gns;XRK0nkdU_xtj=eLO z`Q*$%r01uPV&K*M!hCw?uJmMh8GC%&5_Uh?b9&FUH|NJMFC0e~tvnTe@9MMq;nW*1 zM{xecD|6?+9y$5hAJX=_dzYU+b@s1cqtWQCzVX-+x#R4|(l_ZPF2AE5yVkn($Ol*M cfa6#QBX0ljSm{pdVDO(Q2YlAv=(4nk*15IiyA9 zC>9a5MMMiaa%dHciq?pZNTDjAV5t`IsB|b2FTiTC8wA@w9RKLf?*5MbzW3hmd+*I| z2@eghw_RjQp-}8)fl>uIhMON7EAn0H@VJp2J|g_0i3mJ_NP~1J#T&tuC?HcqiKqgF zko3*Lwh-oCWvDULR07E3S zwLCdXuJuJ#SYU<@jmQX%gfo(0Awu)=1jGgrX+Vt<5MWRzYxE+6gf?wgM9$6IOd2o^ zA(AAt*Fi(ey^WT0#GuCo@T zs2B5saBiMHI3F23iRJF z-ip>orfX5A0@dRwI+)Byg6k}q)b8Dm%s?_4QJ4-RlL946aX3YdY6zKBLLI1g$P_1iQ~z$RS>Si30$wjwSceh zbk+g)wU`FM)ASzZG`&8x6xCs=DB`cf)xfmQBJ3?O@DP@O4Rbj31RfWm^Eq54UCBo{ zbiqncz=9KmyaXjoo8cq>S3f2h6w_QR|0$l?EwUob(>JX^F5WZ~sv$c_N4APC=i)rF z1D$13??}VIpWlXUmakddeg*x|6)ZS%bvuhaPqye)P(#R3qyGm#sCMkT7Omnt7R5xz zZaJ!ihvH;%McdP_1GY)a72J~DYcEdpuX>!2G4b+p=ERxIv99MEM}7^d@=E*dz*zc3 z+7*eM3xd$Wzj#G9Hf5B#WfTv~rK>IHDd^aG_pSS43mfvrI>JvZoEql1k6LeXZ?x;P zFnOGApPI7qEDOj@U*8t6{Pvdd^My|)3x5am8nx#bLqYEkF-}~do=T~+6?cm!xlY4< zib=^$=iaF~8yb;;&_49aDWY_=lN#y~;oK*v zEl%(98QA%YDcGPdiTE+Uduh;)Zx$Sd#0)=w_=-`b6i%ph$_Zu7N@S)H=lJe8anLi?gmx6SQhuk z7Nx?whK}>_{ig{ z1FGXp-sR`j^$kw$ZX+m%*w*umniX+|XT8%{!m&@>jL0HaBeL8felKnHbS1_( sys~FI1?Ex%a~D`R0^}XlI%UhE-2Alvg=KJXr}>X0^9z+W`NZe{16JO*r~m)} literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-mdpi/map_turn_keep_right_small.png b/OsmAnd/res/drawable-mdpi/map_turn_keep_right_small.png new file mode 100644 index 0000000000000000000000000000000000000000..e2633db3194ac5dc746265998f2c3cd80f9e35b7 GIT binary patch literal 1346 zcmbVMTTC2P7@h@PN&}QM4YugwFw2@Mot?{GXTnO^on2Y%Qd~&8v593aXW0qt%rG-_ z7otTZ+AZOM^h%7En)HEq!C<0^ng&xa725}5HLZ#o#E1HXBsNw<#IwMn52O!HGIMU< z_x=C*FLS!B^{Mim)jJUcDUUXDaX8lH-yK%?T|~ym;jqsPC(L#=X=ZpGAWf1g05qEB zyFeW9Qh)CpXh4wS6LLqwOvDbcqMCN{d5klg)*u@}8XB`2FLnbH6+oA)1hC~#r!iEP z0@zVcjErd^kdm7RbkIJ~+93{fi;RRdK8ZGDStyVOCXZ&*J&M6*1K7GQ3+MT50z=m! zW_JMFa4HdNLqn<#P><7#ixfqnKE_FT{4Uya0HsOFLy!zXkvK`Q6v@&gy7^$xnl2^T zI2YNp1y=zqWttjG5SdKInQ=K)y^Ek2h9O9rplKW;aHC%_`7Ev&_JRTj3{jUgQ&tr; zugD8(pBccQryEyDYq8jtuwrZm3Wkix@)|)oNg|!j-)kLhm~rs08{49dj(!agabT!@ zx(M@;v=_)QcK0`w2SRVy!@3NU!uN2h*p~*18RY^PJaJ00#ENdw1$aQ=UdHXllYX}s zXGqbD1KuSHz)MMjz!Y@0;|JX#CP+uPh>PYZD(qo6e^bQe=iFh=-PA<;3*4w;n7kr_ zf^8Yv-sFbv%Vk44;7wKUP}QD76||*PQ#DemhK54xSx5IDl@&?N7?0=Ev~g<==<*35 zMRYZduE&{`xADOvk$zfqx$vaNE#Y35TfhacKq?o2%@s z4O4cz{Rof#Xq}xNy8USGnca>#dC%pc#Axy5gEq_6m2=~}J{k^|oGw~mL>uFd?6j*a72Y_k=!x2F8oSKcq8>X{16_x(j=%39NpqfW+5hF)-dqebE^@kbnY2M;)W z-#YHjPhQU<%X5=66MKSJQ>(t>A67MP>A0=AWXjT8{_5?MBlg#Cyj^_m?1f9`ndui3 zuPv~nUw!hf?de+o*)z|+vAg7RvG;}@t*YKpQi`k`b6jKu()CIPy?5w=37U^hE2O#Y=0cUr&`D|1+|D r=C7NnpH8C4(w%$r6T|x-KrB{de(7b)$7Rur`M+8;+{#S`J74+-!hOgG literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-mdpi/map_turn_sharp_right.png b/OsmAnd/res/drawable-mdpi/map_turn_sharp_right.png new file mode 100644 index 0000000000000000000000000000000000000000..26a5fdeda260aa56c61fbb9fa5e67b3ea1eff36c GIT binary patch literal 1578 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r51|<6gKdl8)k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n9DLlB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuk&``nLQqR!T z!q~`EN5ROz&{W^RQs2-(*TB%q(7?*bKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD#PU%0_}#n6BP2AO_EVu8M)o`HUDF34YC)x{-2sR(CaRb3oXS&*t9 zlv*bW;1^>GjMjE=kNwPKDW>3A7uk*95O#E9aur#FG4?ko^1{SSkp} z$S=t+&d4uNaCQdAx`IY{W?o8ud9fxanjpS*NiE7OOHFYr%Fk5*hqF~C7B^TV8JiiV zfjyjJtZQmvlBAntW@fINmSS#hVr*^!^nS7uRDTM&;inIDls+i2ASE7{5HLl8nDDFs z)ztfRfZjrP1*0DW1Dq42E zwmf}X>AmO7=QE%GHRLxwQ}evF_mRc9iO-4|Svg!3m;^lpIviM(CMXCr0=X|W8UsZn zxgJf`=$!wkxk4}R#{Jt((`P)^nXgg#@utlxuK1%{cKq4z7I6A+cJqOyQlGRmyWBa} z=oKtyY~*}@BtTg1*HLlnOY$vh27V_eMhLcw$X(M~_g^h9Ei&OyV};_nc@H1-O^vI3 zYsBPl5d66_@5Ksaqhl}c`2_iz3H&YT5$ICh2;h3@)mXXEw6Tp zR-PxYz#rMMCP>hXYX|!7JFZ;={r~E(!_tJAH(hx6|6Tje77dxMT3`0 z)`Rb%A8$O&&b{sW%6;`;dw%7DV;gNI-~P5j=ZBz$lGzbg{`KFY?*#wvR_s3@>i@}S zUB}N0;uGc0f0yTteX!)ml%)ML)T)#8xL0rZetuTu4fe8}U7M~%%5Ux!1VxHKBMT@} zm^hh0Tp^GEhYBLn+U9oDZ%9EG1xDqDUQ4kAhM5_&`|me5e*u-=p00i_>zopr0I20c A4FCWD literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-mdpi/map_turn_sharp_right_small.png b/OsmAnd/res/drawable-mdpi/map_turn_sharp_right_small.png new file mode 100644 index 0000000000000000000000000000000000000000..dc43a0bd91a0cc64ec9ebbcefca64b03878c9f5d GIT binary patch literal 1216 zcmbVMO=#Oz9M|H`X}dJZVT2_#>qF@w8`YO(%a(|nIF{YG)QNG;8rWgc$FnVB>8a9l zZHK~01A~rTwq;PZ!&b&dPdoH5*h)zufiiYUpr=vFR%o`d&{BFSrK5Xt>}-e7!yZWQ z|DOK8-~U^e3$v$=93DALQPh##j9Mi7@!&ZaChy;=Q4D0WTA;%=ZI_@aYGShKYQ`eOK!+8}Nz#vQtkJ+S zlk~Y*p3l2!ShZ%BJa~3#wqz_V8nQ`Go&*z3g%H>fYoKY@9A9ZB={B!If65I|gJg;+w2#7=++FT^-r<^-PM1x4VM2oE}oCe}Q&tQ6I3 z#}+vy=_ZazlY4@kW{REK(G$rXr(mLkH*7Bu&1sre!Kd)DWQt1xAviQKp=TN{q}K5(72S z(4i!lx-NHl_QUhj0x!j~*=!^w3PL6(%bCPLRx2q1u&smO%8va{BnRcUAp=VuyX4XSCXy;k6_VFR1 zi;_@o2W*N=ED_ZiU6SHV*^I}dVmv{@H|P%D{J;6*h*Mn9EdObq?iK0CK-?Pza@ZRt z=#UBW$f*2L`{F$^X20gtRH^xk{`|#@$@PVvGkq(4A1T#4snP zdthVY&i9{|dY6wrId*6*eE$R}50Cf$eR~=8oCiZUeh)p~UUmojj)nEtuH9UkdOq;> zL#5FFY@ohz8r=I}d-D~4kli^w(A%OOx9Cy4`ey&7&*0Y7#V-$@`eAE5#or2VjLsYy zu8eQ}oVvKVGdI3^_s<7kJy5^>X8q~T!d0C){_4h~%Z1w?&VBOn>d+WjKk8ZUuj^ae zz4BFYWcus=k^1Jfm2ha`=xFVYK+Jx=LiO}f@4tJGIXU%C`=^r2%&Ol_FI@Tu;OCDB literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-xhdpi/map_turn_forward_keep_right.png b/OsmAnd/res/drawable-xhdpi/map_turn_forward_keep_right.png new file mode 100644 index 0000000000000000000000000000000000000000..5c290d77071fa09d7cd8d8aac940eb4fe4ac5cee GIT binary patch literal 2856 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 Bsy_e# literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-xhdpi/map_turn_forward_turn_sharp.png b/OsmAnd/res/drawable-xhdpi/map_turn_forward_turn_sharp.png new file mode 100644 index 0000000000000000000000000000000000000000..f3482f0c23417798500372ab3ba7c6e648385994 GIT binary patch literal 2308 zcmbVOc~nzp7Ed5(q+qdHWhwFqSV2r)9%LVaKth1h1Y|K-77fV@q>#ld5TKQaBcdFo zP)DpRQtc>4r7i^uK}4k#)B)xQE@MF$Vo^YrAX*S*9td{+@O0+%o%7ze-QT^xyM5>F z3*!Y^TiRQqP$=u*Aa*!1me0M|CCE3gJrR!#cItp=b%b23P7^3$l%GhR00Y5NK_VOu z3q9GuVE{|6gaI;vf)_#%1W@S&h)nbHByR*fi4Yki(m{xbCqfK}$nYcr z3l9#lrWA=8;cU)=Eo8;SC8^a41_-95r4iD+2y$g22+`?ukmw0|dg2iYyeeI$7HIJ@ zmCK?AHmnjVB?`4fE(7K?3KHZRH4}$0edB^u!R5YHEK@B63JDpg6(~T6Km?`IIltzm zRqAl~cN*`MRz;>OU@#n3$u&wLk`J-VA{dF?9~+tzMA$Gwl@cT=f)ut~sFA`lbugQW zLrw@HiHIR23B6ze4B;ts5(zJ+ktldNQAokV0xw|#Oo2oR3G_uh@4^R=0|JN;jmGix z^Ms%PvL6}pqER_?jz673_9symvB5HxS|Ag`i?$_*?FB6L53vlE5*DcC%1F69Ww8pv zlH_W+DoL&YSgiT118#hYOe9ZJxzDBPjn`~gDM^Jz9Hm?e%*UA_c?Sntf)@o6&pRyg z!joyF1bhO8LdAF;^iGe*BxdKBeyID# z=^|i49 z04(-@9RFF|g4*Bho%cSgwp^Vk7K=xUcn4Arp3N_b%6dA`5?D~<;&k{o#$QU?L~Wzr z?cDLLS5cMCr_ zUld!tl`2Np5XKA>RdHUyXtHw%)%m6-yC=`ve(FNsF$2XEVr;Q!m`yjDP8!tQpmgKR zSTS_#{n2=KgR!tBZskjJJ~}1>oj4I=+^7F$^7<%lVB`1^=A`g>g|1={K6Y+$jCNyY zY`>2&gjeD5J#72Ywc*L@UVF8#OU=DgRm_hZvaPR96b_|+ALVa+++szcel{`NeAd%dUsheb(kT_+8y&AG3%@k2o!V$@_U?vg9k>Qh*?I#$Yum1$%dA^fzv^IqV^0)! zJ*P}xw`POm<_`DYK&7OsyXkW*A-ZvG?H7fkNoSGzwff~N+w2D+TMCCX+tW_p|H6o<+SeW zb2?S6n<;~7tg3Qu#m8*Z>u$HUWn9dP5%J&42MsT%OJ+{swhKg0S{~?19PWo}UZAV@ zdAOw6W}i}F%kppQM?UVf=58t5L3PdPeInp9T?aa5w&vLvo{DO`e!{E`Z|mUl{gxBb z8v9JvaWmff+D}#G7N$x2!n>ST<}TZ}#>Q!C`fHwOIiCkvU43MAH9e*#e`tzd+)_*} zrPeq@n9w!J`jN}RJJnpb>K zgRu8xrhgw_{~rBLeS7aygpytMMCHla=G0ifQyvb5^*P4(S&I8c`v=dj8HdQO=5d|8 z##B?7vCcpL)$5ii%*NuSmOjr@f~H@y-BpdLZRlD3>RIo)>PwsI8Cxti7CG*5n%&>* zlnbu|!>2Fx_CJ(i37J@)>GH#+E_XRR{j|Yj@MzBdPkQ1sUAp$xQbs!KnY4g^?MxOn zx>^??bhP>Dhg*$JK47#3+wQ67|9P1pmqJtDff$vq#k=mJllik2wy5g|Ha7*HXm~aE OUlJU^V^{ib&;Ab+9fgtr literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-xhdpi/map_turn_forward_turn_sharp_small.png b/OsmAnd/res/drawable-xhdpi/map_turn_forward_turn_sharp_small.png new file mode 100644 index 0000000000000000000000000000000000000000..27bfb349b9fe73d9e778f43e2b5487459a6e3a66 GIT binary patch literal 1560 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 literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-xhdpi/map_turn_keep_right_small.png b/OsmAnd/res/drawable-xhdpi/map_turn_keep_right_small.png new file mode 100644 index 0000000000000000000000000000000000000000..94dee3729788611d7599b072eee73a4bd56acbad GIT binary patch literal 1728 zcmbVNc~BE~6wZiI8SO!k0!0uxwKma$X zz+{;LGT1a&CLWV(#}aenlF-~NRAB-mKLaA1O2&Z|qY=PqwGfojsRD=mDw(-wTLc0_ zCUlkxd`&9F5D#cbI|j&vasdj%Ffdaggk|9pu`CP_L$FK)DMTV9D+ui0)h(mdeCAN zYR7FfP7;8}BVr_%(khT)`uYl1o5AqLF+mLr#YiS{A~q2$ghW=W=UzkB6rF(mOXIE9 zR8o!&6D432xzvs_`7j52!HjnA4&*Up*eK`PaV9BkgLZFy8HqOKz#%kY*Rch=QLX-9+lC*fMAU>0%Nh*`H0UFIv)&YJp zPMAms72-+L>sxCvJD!c1bav7T4C$=I-@-v=g2Kh9L?STDq$Yt}A~gz(a+5?5J`)ay zP_sg2HlpA#-t>R<6EUPjo?`h=@p!kGiu6q1v;wnu(@Yq_bda5Cm0dwcPqJ7eI`vw0 zlC%9$nIS)JUclLl*qP+@Iz9YJ6&!q9g6+}r4*BPukJ`?jS3He(u#Y=+vM+X0x4k9m zoVm6~v2p#@&0*6{->D9K*uOG&b6HR0#fA>5yWxJ$V1HIw!~MpcD|*Y1^p@up&)H*? z)=T2J`vGp1E2)T+pq|0UwocKXa4SOB7Oaa``_78o_Tt8^$kpzd9h;|XK_oVD{hrLJ>YoV^NQ)&zfHK<)TexUWYygYpRoGp6}(XQ z^lM*PET4&86CeK+e2r+Fg!3*4F8 zt9-jm2O_@>%a7wZAe7Ma=rOG|)bf_U7lUl;h`eoZsiEIFzZ~dl5d{qfURM-MKHbpC zx$I6P%DRe^=eZt?{d$+S)e(?4YhksTOL4>O0eK(wtpoX+eI#A=2iA=9JK~mKJ*!yR zmkxjIc$8hD$+&(aDl@*frXsbIeYq$>*UY=LC~H;?_sU&hpV4u}J*{bAl6LChn@9&@ zYaSW&U93g0qQkuYrtIp|6`YmG@qEt0ZpeJ1u$+;4&b?>u@kjeX_7al%LOeBpuDT<% zad{hii6|_hRG7)3Ub<=ZCck4Dzqq>Y?g-Ium?-_;1r~S;YJd67;|q#7ZQdH=L`1R! YSP${&k}0)$J3apteRQ1mKvcTxA3+(CvH$=8 literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-xhdpi/map_turn_sharp_right.png b/OsmAnd/res/drawable-xhdpi/map_turn_sharp_right.png new file mode 100644 index 0000000000000000000000000000000000000000..8c8876b63f5737caa751d22d26c9283a70f50305 GIT binary patch literal 2334 zcmbVOc~ld39uFal0m=$m^$DoMBw82EF-ayD1VoZ>NlGCsD2L>jK#0kN9FVXoENww? z5u>72aM6l*z*>rkRS;-BP()zWw%`>jhl|e@1zuac*a?c;KV0|i&U-Vz>-+hBKi}i` zeX}`666WFN?S{kQJR-t{vDmoZ@e*CI@0RX#3O39)i4sk5sLGThGa$GSB`QaN2(2s~ ziA7{eYu05X5QlTlR!b92iP5Y03RFv#Ib^67tsX<;aDl-Vy-cA&On@9oSL+1eNK-2a zsFeaR0gk3e>qC(Yb$G4;iOZEp6}cJ(PYDJG0f81ira+6BWPnAxPG{s>1mKijJ~nr3 z(?DQK#H0~`uSq3F#{i+I0Rdnto1%aq2;lIj5X@yV;N<{=4#6}!j|R~xbchep`3ySn z<^eHl2BnH0D-^%6g{=f&hRLMo(`Y$4In*2`6*Z*OARdoLqcdm>1_hI#7_B;!%tFx_ zNz)pHh*4os>rHA@2RJm!Iqu(ml8Q%m73mMHK)6*a-ou<_~{F;(B znqrZE(|D(}QEJsAv{=N5nhgppA1cx`7>nKe4LJlcHvEqbYAh+TbwX5O)*?Dngirut zCsd_c$ycxxOhkr26gH2=qNunmHibu5uqlX)sgNUVNGX@|ruDoFFM>rPI>e)k86gY^ z62T!b#N=|sJn>2%8(zs`Ph%r=Mw3jZK&EZ0G25@PT=9Fc{7?fTGoc14imsckf|v}{ zgc>tYJrEi?m33fgf?B6UbBup*r0KQSLd2lXMwDU$ss*Ov%vZmI16R&uL#iojC@Q7peHp6M;DA|2DWR{>kRy-bJ>yFmu* zsyyoQE5YG@7Zf23ky>s(x|8&mlsMn^rvmr@)x0Ik>O~NN=9%Cp=q69wH!dY0R3Q93 zd~;M;P>)b(FAk48AG(%IUN{~>_V>?HSEX)~?p#`Yq_I5@8L{o{9PHd9F#ddVY+^~P z=~`D`dgY1M^p`*8Ri4b5!QUrw8sB2Qi}&;-5Qs!Pop#yY)JC;EAYG|`(j%~)v<=!SiQ#R-L`#%1rL?@)%L>*nsV~nb zR2<8n(Z0wo+`4C|x}{d!^UF}|?4FT+dm;7Lt=j7#$hCG?Xc^ zS{9{tPuNPqJYmr0WcxEe?gN7T&~7NSZ{d8ZYQ*&YQ`_2$y`@FBa$np6?j4{1p`KhB zHn+PVU(;@Vb;CF1rr7CL&u5)O?!7T3;-vJnTcNfQ((}@>k)ytAJ^N~0_cT?Z2`xv4 zirh2r{(Q|9Bas9r|Lr?sZ@?|ERFqnymPXn;mRAhqG$t%~)-7J)n{c&{{XIRnxz2q; z+%fKUSXM_%4-4AVyxRQr**c|L>z{H40v9K`F5J=z){ttzfTs1GPVu~8xm)*+uGy){ z=1Y!!=% zW8|NnWepXn{Vv1{bOA8A+tYK0B#y+HGdOW>Fn-U%pB_ejmm1-5nMV+Ed}B)zll=X5 ze8G_z%b$x<9~+Jzb=RfMyFJ|h?epaZRrIHA`$Ser?7WKkts?5O4)l$Z_jdR+OeXl2oBn)lPJE-P!9LvFKWj19J}Yppy5#N#(dlvjqRkuE)SEM5 z3`zkg6L|-gqGL9R`H}Y5SJj2eLtb?P(!Gppqcsipk*sq*+Z&Xc6JB*2s;JC;0juot z^)-HeX|0xJhBYwfc3<1erlp3aS+`pp`VU<>mML9#?FdsH`X%Air_y4S+7aKeh*RsQ z9>+-4?rxB7RGu7dEPQlbU^_wN=7b+sr*00sv%j$F>!?N|msv%fxZv{7kN0}tu69+U zv+HRe%^PIAI8b;tez>LAJ&Z%%yDd8_abTZI$8PSKkn4DSS5LBL!{6^L`2DjB`s?1a z@ISQg5Lrvm>%n9id=%p;NKV+9&^*|-I65<&<#!!jDe>>1y_}~UZ#*>l%|~|-P0~S8j|4dgX;{wM$-DOL4Q; z>ILn29H+6lbWO#K^A)O|q%;;2FYj83wSoV&Km4|R{P(^hto~r=6`sGZEB{=^doBG3 fRckJ`;y=K}&ZMPUc9nnS_+yC>NrcB&rWO1PJ*0hh literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-xhdpi/map_turn_sharp_right_small.png b/OsmAnd/res/drawable-xhdpi/map_turn_sharp_right_small.png new file mode 100644 index 0000000000000000000000000000000000000000..2628857cd568ee87e0977483bf9ccdc7a5f53e2e GIT binary patch literal 1533 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 Z=wR*9Y^_Vs_PGyMACCa{G9qRF{{e7rZ&&~T literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-xxhdpi/map_turn_forward_keep_right_small.png b/OsmAnd/res/drawable-xxhdpi/map_turn_forward_keep_right_small.png new file mode 100644 index 0000000000000000000000000000000000000000..7ee6716151476388c745dcd2799e25b41f3cb3fc GIT binary patch literal 2216 zcmbVOdr%X19*=?;2}nb^G_vPx8WwjFOCTPv!ILoqo(o$Ll2ngr5r)DHXCP_> z*4uL~AhSp$kCnz04X#lpiglQo1-p4zHgh&1O(M;TwPnM)ECgq0kqjd$0UkG>1{g-Y z1X#>hg39bTB-5CXXF-zl7NqF%vUDOn5F5joWfKz$%m@xMY-ST`7271hh+Z*)-DEbv z7-7M)B*1&8G|D7K9A-fne3pQzgCK|zEn-1@A(z9CVsJo+&jv+o2xNkg7y`u{kn!OG z2x}I-L9CX^KiDF65+D=Dv&C$7Zf-6sm&?K|8Ei--60t!Jo5Nue989Yn#bFy0wT6yr zkReu`#h8s7F_huf2y3wwxC9_PeIJ53TdDl07`1*#6p=Ev4bEmmERbzByW<++w&H5! zKW==I+nQp}M%Ze^imkBdh*p{kb7GBjJr$Wib*(flV?@x5A8|xI!iYh!d9H zs2A&aIxYeu5K|!H@t6i7Prwv`Isp@bxjHQ(fb?3eXjIRqt{#xY9@hM7jYASn~WF>5B4 z&4`N|sXAlEVk4@@a;@R+GQE#lhFFX%5xv}knHeK_78^g|gHX#AK!%Zk^;{-j$kQ^l z0zov>ppTB`aifJq_&VT&y#D{qADeKB?QWL;YMxON(UETWaTJKn$6-QHVuCEhs4VGR z9YP{`b|_@h6x+4mtCl4METo^mR1?2hh99O}mhd?db>(NqKRET*Mbo-;)PU__DYDNl zk6RnHc3<9;kfu58%gg-U(888XsHwmqph<4u=U%^l?b$K8xX=F#NIFaMDTGPIW9VK4qC_6nxHeR5`f}4!MccJEQq}sM z@Xqq7$2Qk=T)L!at43uSVXx>+R82v{@&|JZ$pezsX`yoAE{0*5RXr*lp`k7o5bYkQ5 zl6uk~Q+HeJO6#4NP5vI=x59zgT#<2#dSC3_W;75xAK7(XkHi43L<0MCp)yA-wPsoS z%F#+pc6jOT>ajA1_?VZ=|C!@h3HXA%ikZA^ zf;ipL1fO1ar4}6eX?fJXx&8{dsR>ry+f{xYR_$4?YN1UleTyhB%*6ube&uYHzZdV%%L znl!+V6BDLPy;|(s$DeiM?b`z9!M@egmaBPX_8yF;*47(#Pfh*Gv?}%f?1WNhGH{@U zQXR1&?(HV(&`{bM*}Uh+Ce>|wSr^fn-{Z%Nj09Z!TjbMy!tQSEzwm36(<`ItYOrcq zMBdf zZ-V!n_pEgvvi>Vr`GN*U@lUq8e7k_N zHw!DLH$80RZ4lQg{Csy^2~B=tXYUEy=c08n;ZtmrH|wT7{FkyX@4oo)$Oio4libWL zshMS!ss{`8f4N`Ra@$(jErm}d-T2qtZ}-2N+#cD%qaX4-O{s0Z?|J{HixZDL6qPq` zbdEF8(%>NA#GIz6fHz)8-v%|#*I;X2jZ;l&RIzg>{G)B|mUrbTQY?s-$&;M2sI-Wha( z^l-j)+IOaaL$WKM_qByDUlF}`o==4{arl|zkS}o=cz{0cYayNPMrS}bDuCUHL^K`Q mS2Nj%`ah%snBn`iC!MtHHGMwVGV_-E-$4<-K<1p2zV_dVI%c&1 literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-xxhdpi/map_turn_forward_turn_sharp.png b/OsmAnd/res/drawable-xxhdpi/map_turn_forward_turn_sharp.png new file mode 100644 index 0000000000000000000000000000000000000000..06d941c1ba317fc5b5f1d6f9ea0249ef34131d44 GIT binary patch literal 3029 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 literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-xxhdpi/map_turn_keep_right_small.png b/OsmAnd/res/drawable-xxhdpi/map_turn_keep_right_small.png new file mode 100644 index 0000000000000000000000000000000000000000..8ade02d36e8f714adec1a4ac6505826aa9c337b9 GIT binary patch literal 2158 zcmbVOdr(tX8cz!XMkt`jLRa7#5W^$M%?px{2;_l84J8mH6u0&!xp^!kHzq+MqOua8 z3}{t?f>efgWk6JXR1stvb$N)3x{j#ODzJdvvRGY<%XF2!L9n|sPXE|DbMHCdIp6Pl z|7LD+V!}o@?8jIP2ID4-=O>|Sru}tsLcd=sQ*WV*uSp;^B_m2xHe`S?u?j>6141pN zf|FoKv1>;k%*J3Gc4{P2lT@^YB}cSG$gV>)YxO7^gJDOT^^iORHUTnNrO|P4&#rXi z0F8o!OQnlIk)8*uHSswHI5{UlBG1W?GZnb#4FKEBLJeqP69kyGnK~oO%)u?#Wubff zF$o7OsF*T1xVJ$`MTr0pF~9(w7(tMe$z&jsNhH%5R0=&DpnzmL31pJUAOR$^$RLXX z0*en0^=42gSxNl3MPI1I!KqCqJ&Q!j&dw%gQ;CQ{MItkqOcF>TQ78mdgJ9gHGeKs8 z&KS64fe#zy294gNL3DuKA|ykyOdK2<>Dv^vdXeazVV!ZYP-w|WW=KyW6G4(zYtL&z z+h|IHe+}ck+D6GPJxof1jYyV3j`l+txCBOP_uG!_ifA;fPYfEgDNrUKk!NXPok_^& z;LsbQLZe{GX>uwI!DK=NlSU&b8MFuj6O=~~V2CQ0!4YJIOvYTY^FBO-5gW;*a|Ll! z3ZG0C&=~>-j~6EZW66vNYFsRN2`khYO^{9wFZtG>z8A6l-^8+b1{g9S1_^>>E=@tA z8ZjY8HKGT2yoIg<_*9Kffn*y)>}`6RH6J!;cEXA{1EK{M>dex-CkDC#WKiT(DnUu7 zDF_i%nv5WeP*4esNHPPIE17hqOpaT`EB@d5k_F?(2;aNIDC(^!sM+H=PMrbb3bM(6YA zxm~ZWzM2_))@dB%yb5APMJ;o2@6uxd*BGBX(8a;S32?PxEFZY!gC0hxm~T5}P5LzC zbV$`#{v>tKe#*aoyxaFMhWU76>ajJ&+S1|d`sj(-YH_P$*On&Cy{7iB*|gisBKRSy zwe$CB1CsvglexVoCDILzg?FzMb!R6kZ~l>2;9I!P?~}lizFNui`DHo9lOeSO-<r`+q7s`fYQFzNbMjH~%oEl?G<4b8 zV-+4JrEU(X`8U7psrzofUYSz7vsU=>Yg?1pzqhSp)m8BeJV^}s=adg6Gl^?j0vcBi zLEpERx7%)vpQ_J9QKB+N=?g1mWa60a$dFR2Uin?4%^}Uz-RD@nZRFIMb=Gv-m9sHd zk&Agp_yx@Mo6XVs3>C)LmYEdXnjZMsHHY3t^~w|U;_;9y>zfT-2L{_6?v@6NzuXi6 zli9bP;E(e;X0GV)pN0rcUUfoA#!6?G4DKx{51Cp92Tw#D=kK15#FtdYKPl|1dwHL^_F04{fc*&oo|e$=E7M+IxD($H^@*Cq>tVUEF|;Y4K@6 zt;?Hp^R3R6r;{(!6=tfYP?wg=w?oYHHd0c&LkEVj z1T3j+9z zsTl8JyyxHldTH&JG6(C#N3+r1y10j}HJacK){rsmL z?Pj+dV_Vv92X*x1K*+ZfGiG8~OA5cDX8G``%K@81y*w+LnSwx66bi93&(uCpw8;tk}=&r%LTRc#Qk!5$Il0QhaOC| zwuR>wF;&%n-jISTbQC=By77HrLvYwtMi2gHD#pRXbC!TWef?tY0X-Age9T z!BQ#6>N@ml$7*lu3RQXJx9)UB)E?0`#xFgop7JvZ&M3E0mO~hn<@VklD&$Lx)QO97 i!Uz9z{Zo1Ohpw1T=k-0zy`)k5AAnGhz;EMzzW+azpii#= literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-xxhdpi/map_turn_sharp_right.png b/OsmAnd/res/drawable-xxhdpi/map_turn_sharp_right.png new file mode 100644 index 0000000000000000000000000000000000000000..bf0582845e2fbed08254ea2313b61aaf12f5d13e GIT binary patch literal 3075 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 TH1O=w{FXaAx;qrv1;qUe(QgZ( literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-xxhdpi/map_turn_sharp_right_small.png b/OsmAnd/res/drawable-xxhdpi/map_turn_sharp_right_small.png new file mode 100644 index 0000000000000000000000000000000000000000..0e675dcb8bb0c0b0bf2214845300825301852047 GIT binary patch literal 1810 zcmbVNdrT8|9Ivq=Q>vhILlEf>GIX=OYfGP@Lg@pmysdyQq`h8C)5mq!gBCV{;d}En z(LxnOW46qVXu%l9beqvkXp=}$(KfRZ)+0Dog=lpqAuxER383oKLLi-; z0412kNVaZSK8CE!PgKD9dYG>UqL)&mYy!f75y6#Io6%sh2y8-N+^&FFdyheYIu610 zLf}PE841Z$F^VBnHl0I*84L!M%cnEgJQkC^gvx{%Y!Kpu42T9X1Pn;Pgs2k_KzPH{ z8bPW=HsOod34v@JHw!?}YPHg>EINv5K?a}C2O%cNWYP!(&5~!rl{T8m5;kc;f>>Zo zXU27?iR!heRG~Sz5FjFbk%G~jknqy5$udzWqGX^=X$Bc|2s9eKd5xnjcq;O57_UWJ z6nSO@Ohqhc4h9qb(1cAY6SaG@BQKDMMv#Q*h^8nF5){rcA|_le5dy>wU9D3K;7FK- zC=mvY!;g%lX?T$w8Xtl=G(^dQRS1WnR;l=tc3!71;WD{=cC1v!6fqeLDVxs_@uVU# zB;#^KOi03<)RmhoxY7h8lfHF??+IPW8+8R@3{m1Jra)1{Bny(WQ5>~oqh_jDJl=Kc zqI8`}jan^>y={7twFJR*xrkbZp+@R>odvqr#K2RrI1J5r!fFl`@5-##~mv{kD}+e;%$@5clW>Qf|DWPM6X%GK>h>}f8V^_uLmY#=IzJaZm-wX?d~ znJPNByjvPP`xjY?YdG`P^A@tb*`V2%7su?G9;(~tP&U@*l{n<=7CpyTAmdE4&!?{2I=cI`uC&V5m;XGSxymu;C#3xJt(gC@`9$KcO#Y*X5?;h zqT;vG-0p4e_fE~TU+8(hdL*FO6WTgj+x+a%6u%6+4t$*3);fa9$ryg-t=>z{w9>ZeAY>_er{$9yJS~Q zV&mwcEwyf=oqMgP?4wvyh2I>1rbnBQeDxHjgjNa}C8*nv6fJO3pAFsJVv z47zG6{|Z@ApzVI-e73Z7th%It7kyyuu{#Z?Z_m1>PmCJzugbgIvM_I5ftgp@Ox7Qc z9*R{o)aE2UtEq21jd5LTZl4-B@U7>FCx`M~AR?_B9s7W<=u}s9Nu8fS?NOPSb7B9n zDqmOMh2OC6H{}dVeyt>hUFWq<>t2f;J)5&81gTg!P}OzQR?+XtEk?B4qW;izM;M8G zC>-#c%nc8R&+njM!LBQo%(kI=N(1Me&fQ$-(ne=9L@#}YAWQZ#7$f*u%d3F|7wswZNV|GoI>>M^d*^$_7s=d8_H1ka|p-bl9?h(Hv* v0u;si7docNyj1+p-8g5x)HOUvDw;y_%lLS(wEyi8?_WwTO_ZF7%_{x}7Ie3F literal 0 HcmV?d00001 diff --git a/OsmAnd/src/net/osmand/plus/views/TurnPathHelper.java b/OsmAnd/src/net/osmand/plus/views/TurnPathHelper.java index fbdde88cba..48afc83a83 100644 --- a/OsmAnd/src/net/osmand/plus/views/TurnPathHelper.java +++ b/OsmAnd/src/net/osmand/plus/views/TurnPathHelper.java @@ -1,18 +1,14 @@ package net.osmand.plus.views; +import android.graphics.*; import net.osmand.plus.R; import net.osmand.router.TurnType; import android.content.res.Resources; -import android.graphics.Canvas; -import android.graphics.ColorFilter; -import android.graphics.Matrix; -import android.graphics.Paint; import android.graphics.Paint.Style; -import android.graphics.Path; -import android.graphics.Rect; -import android.graphics.RectF; import android.graphics.drawable.Drawable; +import java.util.Map; + public class TurnPathHelper { // 72x72 @@ -298,4 +294,187 @@ public class TurnPathHelper { } + public static class TurnResource { + boolean flip; + int resourceId; + + public TurnResource(){} + + public TurnResource(int resourceId, boolean value) { + this.resourceId = resourceId; + this.flip = value; + } + + @Override + public boolean equals(Object o) { + return super.equals(o); + } + + @Override + public int hashCode() { + return resourceId * (flip ? -1 : 1); + } + } + + private static TurnResource getTallArrow(int tt){ + + TurnResource result = new TurnResource(); + + switch (tt){ + case TurnType.C: + result.resourceId = R.drawable.map_turn_forward_small; + break; + case TurnType.TR: + case TurnType.TL: + result.resourceId = R.drawable.map_turn_right2_small; + break; + case TurnType.KR: + case TurnType.KL: + result.resourceId = R.drawable.map_turn_keep_right_small; + break; + case TurnType.TSLR: + case TurnType.TSLL: + result.resourceId = R.drawable.map_turn_slight_right_small; + break; + case TurnType.TSHR: + case TurnType.TSHL: + result.resourceId = R.drawable.map_turn_sharp_right_small; + break; + case TurnType.TRU: + case TurnType.TU: + result.resourceId = R.drawable.map_turn_uturn_small; + break; + default: + result.resourceId = R.drawable.map_turn_forward_small; + break; + } + + if(tt == TurnType.TL || tt == TurnType.KL || tt == TurnType.TSLL + || tt == TurnType.TSHL || tt == TurnType.TU){ + result.flip = true; + } + + return result; + + } + + private static TurnResource getShortArrow(int tt){ + + TurnResource result = new TurnResource(); + + switch (tt) { + case TurnType.C: + result.resourceId = R.drawable.map_turn_forward_small; + break; + case TurnType.TR: + case TurnType.TL: + result.resourceId = R.drawable.map_turn_forward_right_turn_small; + break; + case TurnType.KR: + case TurnType.KL: + result.resourceId = R.drawable.map_turn_forward_keep_right_small; + break; + case TurnType.TSLR: + case TurnType.TSLL: + result.resourceId = R.drawable.map_turn_forward_slight_right_turn_small; + break; + case TurnType.TSHR: + case TurnType.TSHL: + result.resourceId = R.drawable.map_turn_forward_turn_sharp_small; + break; + case TurnType.TRU: + case TurnType.TU: + result.resourceId = R.drawable.map_turn_forward_uturn_right_small; + break; + default: + result.resourceId = R.drawable.map_turn_forward_small; + break; + } + + if(tt == TurnType.TL || tt == TurnType.KL || tt == TurnType.TSLL + || tt == TurnType.TSHL || tt == TurnType.TU){ + result.flip = true; + } + + return result; + + } + + public static Bitmap getBitmapFromTurnType(Resources res, Map cache, int firstTurn, int secondTurn, int thirdTurn, int turn, Bitmap defaultType, float coef, boolean leftSide) { + + int firstTurnType = TurnType.valueOf(firstTurn, leftSide).getValue(); + int secondTurnType = TurnType.valueOf(secondTurn, leftSide).getValue(); + int thirdTurnType = TurnType.valueOf(thirdTurn, leftSide).getValue(); + + TurnResource turnResource = new TurnResource(R.drawable.map_turn_forward_small, false); + + if(turn == 1){ + if(firstTurn == 0) return defaultType; + if(secondTurnType == 0) { + turnResource = getTallArrow(firstTurnType); + }else if(secondTurnType != TurnType.C){ + if(firstTurnType == TurnType.TU || firstTurnType == TurnType.TRU){ + turnResource = getShortArrow(firstTurnType); + }else { + turnResource = getTallArrow(firstTurnType); + } + }else{ + // get the small one + turnResource = getShortArrow(firstTurnType); + } + }else if(turn == 2){ + if(firstTurnType == TurnType.C){ + // get the small one + turnResource = getShortArrow(secondTurnType); + }else{ + turnResource = getTallArrow(secondTurnType); + } + }else if(turn == 3){ + if(secondTurnType == TurnType.C){ + // get the small one + turnResource = getShortArrow(thirdTurnType); + }else{ + // ? slightly turn? + } + } + + Bitmap b = cache.get(turnResource); + if(b == null) { + b = turnResource.flip ? getFlippedBitmap(res, turnResource.resourceId) : BitmapFactory.decodeResource(res, turnResource.resourceId); + cache.put(turnResource, b); + } + + //Maybe redundant scaling + /* + float bRatio = (float)b.getWidth() / (float)b.getHeight(); + float s = 72f * coef; + int wq = Math.round(s / bRatio); + int hq = Math.round(s); + b = Bitmap.createScaledBitmap(b, wq, hq, false); + */ + + return b; + } + + public static Bitmap getFlippedBitmap(Resources res, int resId){ + + BitmapFactory.Options opt = new BitmapFactory.Options(); + opt.inJustDecodeBounds = true; + //Below line is necessary to fill in opt.outWidth, opt.outHeight + Bitmap b = BitmapFactory.decodeResource(res, resId, opt); + + b = Bitmap.createBitmap(opt.outWidth, opt.outHeight, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(b); + + Matrix flipHorizontalMatrix = new Matrix(); + flipHorizontalMatrix.setScale(-1, 1); + flipHorizontalMatrix.postTranslate(b.getWidth(), 0); + + Bitmap bb = BitmapFactory.decodeResource(res, resId); + canvas.drawBitmap(bb, flipHorizontalMatrix, null); + + return b; + } + + } diff --git a/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java b/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java index 29b91c300e..96ae130df2 100644 --- a/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java +++ b/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java @@ -1,12 +1,10 @@ package net.osmand.plus.views.mapwidgets; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; -import android.content.res.Resources; import android.graphics.*; +import android.util.ArrayMap; import net.osmand.Location; import net.osmand.binary.RouteDataObject; import net.osmand.data.LatLon; @@ -515,132 +513,6 @@ public class RouteInfoWidgetsFactory { return p; } - private static Bitmap getPathBitmapFromTurnType(Resources res, List paths, int laneType, int secondTurnType, Bitmap defaultType, float coef) { - if(laneType == 0) { - return defaultType; - } - /*while (paths.size() <= laneType) { - paths.add(null); - } - - if(secondTurnType == 0) { - Bitmap b = paths.get(laneType); - if (b != null) { - return b; - } - }*/ - - boolean flip = false; - - int turnResourceId = R.drawable.map_turn_right; - if(secondTurnType == 0){ - TurnType tp = TurnType.valueOf(laneType, false); - switch (tp.getValue()){ - case TurnType.C: - turnResourceId = R.drawable.map_turn_forward; - break; - case TurnType.TR: - turnResourceId = R.drawable.map_turn_right; - break; - case TurnType.TL: - turnResourceId = R.drawable.map_turn_right; - flip = true; - break; - case TurnType.KR: - turnResourceId = R.drawable.map_turn_right; - break; - case TurnType.KL: - turnResourceId = R.drawable.map_turn_right; - flip = true; - break; - case TurnType.TSLR: - turnResourceId = R.drawable.map_turn_slight_right; - break; - case TurnType.TSLL: - turnResourceId = R.drawable.map_turn_slight_right; - flip = true; - break; - case TurnType.TRU: - turnResourceId = R.drawable.map_turn_uturn_right; - break; - case TurnType.TU: - turnResourceId = R.drawable.map_turn_uturn; - flip = true; - break; - } - }else{ - TurnType tp = TurnType.valueOf(laneType, false); - switch (tp.getValue()) { - case TurnType.C: - turnResourceId = R.drawable.map_turn_forward; - break; - case TurnType.TR: - turnResourceId = R.drawable.map_turn_forward_right_turn; - break; - case TurnType.TL: - turnResourceId = R.drawable.map_turn_forward_right_turn; - flip = true; - break; - case TurnType.KR: - turnResourceId = R.drawable.map_turn_forward_slight_right_turn; - break; - case TurnType.KL: - turnResourceId = R.drawable.map_turn_forward_slight_right_turn; - flip = true; - break; - case TurnType.TSLR: - turnResourceId = R.drawable.map_turn_forward_slight_right_turn; - break; - case TurnType.TSLL: - turnResourceId = R.drawable.map_turn_forward_slight_right_turn; - flip = true; - break; - case TurnType.TRU: - turnResourceId = R.drawable.map_turn_forward_uturn_right; - break; - case TurnType.TU: - turnResourceId = R.drawable.map_turn_forward_uturn_right; - flip = true; - break; - default: - turnResourceId = R.drawable.map_turn_forward_right_turn; - break; - } - - } - - Bitmap b = flip ? getFlippedBitmap(res, turnResourceId) : BitmapFactory.decodeResource(res, turnResourceId); - - //Maybe redundant scaling - float bRatio = (float)b.getWidth() / (float)b.getHeight(); - float s = 72f * coef; - int wq = Math.round(s / bRatio); - int hq = Math.round(s); - b = Bitmap.createScaledBitmap(b, wq, hq, false); - - //paths.set(laneType, b); - return b; - } - - public static Bitmap getFlippedBitmap(Resources res, int resId){ - - BitmapFactory.Options opt = new BitmapFactory.Options(); - opt.inJustDecodeBounds = true; - //Below line is necessary to fill in opt.outWidth, opt.outHeight - Bitmap b = BitmapFactory.decodeResource(res, resId, opt); - - b = Bitmap.createBitmap(opt.outWidth, opt.outHeight, Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas(b); - - Matrix flipHorizontalMatrix = new Matrix(); - flipHorizontalMatrix.setScale(-1, 1); - flipHorizontalMatrix.postTranslate(b.getWidth(), 0); - - Bitmap bb = BitmapFactory.decodeResource(res, resId); - canvas.drawBitmap(bb, flipHorizontalMatrix, null); - - return b; - } public static class LanesControl { private MapViewTrackingUtilities trackingUtilities; @@ -758,7 +630,7 @@ public class RouteInfoWidgetsFactory { boolean imminent = false; private Context ctx; private ArrayList paths = new ArrayList(); - private ArrayList pathBitmaps = new ArrayList(); + private Map bitmapCache = new ArrayMap(); private Paint paintBlack; private Path laneStraight; private final Bitmap laneStraightBitmap; @@ -768,12 +640,16 @@ public class RouteInfoWidgetsFactory { private int height; private int width; private static final float miniCoeff = 2f; + private final boolean leftSide; - public LanesDrawable(Context ctx, float scaleCoefficent) { + public LanesDrawable(MapActivity ctx, float scaleCoefficent) { this.ctx = ctx; + OsmandSettings settings = ctx.getMyApplication().getSettings(); + leftSide = settings.DRIVING_REGION.get().leftHandDriving; + this.scaleCoefficient = scaleCoefficent; laneStraight = getPathFromTurnType(paths, TurnType.C, null, scaleCoefficient / miniCoeff); - laneStraightBitmap = getPathBitmapFromTurnType(ctx.getResources(), pathBitmaps, TurnType.C, 0, null, scaleCoefficient / miniCoeff); + laneStraightBitmap = TurnPathHelper.getBitmapFromTurnType(ctx.getResources(), bitmapCache, TurnType.C, 0, 0, 1, null, scaleCoefficient / miniCoeff, leftSide); paintBlack = new Paint(); paintBlack.setStyle(Style.STROKE); paintBlack.setColor(Color.BLACK); @@ -827,11 +703,12 @@ public class RouteInfoWidgetsFactory { turnType = TurnType.getPrimaryTurn(lanes[i]); secondTurnType = TurnType.getSecondaryTurn(lanes[i]); - Bitmap b = getPathBitmapFromTurnType(ctx.getResources(), pathBitmaps, turnType, secondTurnType, laneStraightBitmap, scaleCoefficient / miniCoeff); + float coef = scaleCoefficient / miniCoeff; + Bitmap b = TurnPathHelper.getBitmapFromTurnType(ctx.getResources(), bitmapCache, turnType, secondTurnType, 0, 1, laneStraightBitmap, coef, leftSide); if(secondTurnType > 0){ Bitmap bSecond = null; - bSecond = getPathBitmapFromTurnType(ctx.getResources(), pathBitmaps, secondTurnType, secondTurnType, laneStraightBitmap, scaleCoefficient / miniCoeff); + bSecond = TurnPathHelper.getBitmapFromTurnType(ctx.getResources(), bitmapCache, turnType, secondTurnType, 0, 2, laneStraightBitmap, coef, leftSide); if (bSecond != null){ paintSecondTurn.setColorFilter(new PorterDuffColorFilter(paintSecondTurn.getColor(), PorterDuff.Mode.SRC_ATOP)); canvas.drawBitmap(bSecond, 0f, 0f, paintSecondTurn); From adc1a8c2ab82d30be1ebbbf9f2bb967d59ffff34 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Fri, 25 Mar 2016 10:55:19 +0100 Subject: [PATCH 02/16] Update version --- OsmAnd/no_translate.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/no_translate.xml b/OsmAnd/no_translate.xml index 702dd1adfc..5778a33e00 100644 --- a/OsmAnd/no_translate.xml +++ b/OsmAnd/no_translate.xml @@ -1,7 +1,7 @@ OsmAnd~ - 2.3.0 + 2.4.0