From 64827c3f89c3f8b7b68f4f6104af84c749b298ce Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Tue, 5 Sep 2017 19:51:05 +0200 Subject: [PATCH] update emoji lib with compressed emojis --- Habitica/AndroidManifest.xml | 1 - Habitica/build.gradle | 28 +- Habitica/proguard-rules.pro | 21 +- .../res/drawable-hdpi/ic_header_healer.png | Bin 1969 -> 0 bytes Habitica/res/drawable-hdpi/ic_header_mage.png | Bin 1869 -> 0 bytes .../res/drawable-hdpi/ic_header_rogue.png | Bin 2002 -> 0 bytes .../res/drawable-hdpi/ic_header_warrior.png | Bin 2013 -> 0 bytes .../res/drawable-mdpi/ic_header_healer.png | Bin 1194 -> 0 bytes Habitica/res/drawable-mdpi/ic_header_mage.png | Bin 1107 -> 0 bytes .../res/drawable-mdpi/ic_header_rogue.png | Bin 1157 -> 0 bytes .../res/drawable-mdpi/ic_header_warrior.png | Bin 1158 -> 0 bytes .../res/drawable-xhdpi/ic_header_healer.png | Bin 2721 -> 0 bytes .../res/drawable-xhdpi/ic_header_mage.png | Bin 2612 -> 0 bytes .../res/drawable-xhdpi/ic_header_rogue.png | Bin 2473 -> 0 bytes .../res/drawable-xhdpi/ic_header_warrior.png | Bin 2714 -> 0 bytes .../res/drawable-xxhdpi/ic_header_healer.png | Bin 4207 -> 0 bytes .../res/drawable-xxhdpi/ic_header_mage.png | Bin 3981 -> 0 bytes .../res/drawable-xxhdpi/ic_header_rogue.png | Bin 3854 -> 0 bytes .../res/drawable-xxhdpi/ic_header_warrior.png | Bin 4156 -> 0 bytes Habitica/res/layout/activity_full_profile.xml | 2 - Habitica/res/layout/avatar_with_bars.xml | 2 - .../habitica/ui/AvatarWithBarsViewModel.java | 13 +- .../viewHolders/tasks/BaseTaskViewHolder.java | 6 +- .../habitica/ui/views/HabiticaIcons.java | 4119 ++++++++++++++--- .../ui/views/HabiticaIconsHelper.java | 126 +- build.gradle | 2 +- 26 files changed, 3695 insertions(+), 625 deletions(-) delete mode 100644 Habitica/res/drawable-hdpi/ic_header_healer.png delete mode 100644 Habitica/res/drawable-hdpi/ic_header_mage.png delete mode 100644 Habitica/res/drawable-hdpi/ic_header_rogue.png delete mode 100644 Habitica/res/drawable-hdpi/ic_header_warrior.png delete mode 100644 Habitica/res/drawable-mdpi/ic_header_healer.png delete mode 100644 Habitica/res/drawable-mdpi/ic_header_mage.png delete mode 100644 Habitica/res/drawable-mdpi/ic_header_rogue.png delete mode 100644 Habitica/res/drawable-mdpi/ic_header_warrior.png delete mode 100644 Habitica/res/drawable-xhdpi/ic_header_healer.png delete mode 100644 Habitica/res/drawable-xhdpi/ic_header_mage.png delete mode 100644 Habitica/res/drawable-xhdpi/ic_header_rogue.png delete mode 100644 Habitica/res/drawable-xhdpi/ic_header_warrior.png delete mode 100644 Habitica/res/drawable-xxhdpi/ic_header_healer.png delete mode 100644 Habitica/res/drawable-xxhdpi/ic_header_mage.png delete mode 100644 Habitica/res/drawable-xxhdpi/ic_header_rogue.png delete mode 100644 Habitica/res/drawable-xxhdpi/ic_header_warrior.png diff --git a/Habitica/AndroidManifest.xml b/Habitica/AndroidManifest.xml index 22a61a98d..12380ffe0 100644 --- a/Habitica/AndroidManifest.xml +++ b/Habitica/AndroidManifest.xml @@ -19,7 +19,6 @@ - ; } -#dbFlow --keep class * extends com.raizlabs.android.dbflow.config.DatabaseHolder { *; } --keep class * extends com.raizlabs.android.dbflow.config.BaseDatabaseDefinition { *; } --keep class com.raizlabs.android.dbflow.** {*;} - #gson # JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter) -keep class * implements com.google.gson.TypeAdapterFactory @@ -69,7 +64,15 @@ -keep class * implements com.google.gson.JsonDeserializer #keep models --keep class com.magicmicky.habitrpgwrapper.lib.models.** { *; } +-keep class com.habitrpg.android.habitica.models.** { *; } + +#realm +-keep class io.realm.annotations.RealmModule +-keep @io.realm.annotations.RealmModule class * +-keep class io.realm.internal.Keep +-keep @io.realm.internal.Keep class * +-dontwarn javax.** +-dontwarn io.realm.** #eventbus -keepclassmembers class ** { @@ -147,6 +150,9 @@ #checkout -keep class com.android.vending.billing.** +#seeds sdk +-keep class com.playseeds.** { *; } + -assumenosideeffects class org.solovyev.android.checkout.Billing { public static void debug(...); public static void warning(...); @@ -164,5 +170,8 @@ -dontwarn okio.** -dontwarn rx.** -dontwarn com.android.volley.toolbox.** +-dontwarn com.facebook.infer.** +-dontwarn com.roughike.bottombar.** +-dontwarn com.viewpagerindicator.** #-ignorewarnings diff --git a/Habitica/res/drawable-hdpi/ic_header_healer.png b/Habitica/res/drawable-hdpi/ic_header_healer.png deleted file mode 100644 index fedf7aeec592978798814d401c6b5d288d4079cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1969 zcmV;i2Tu5jP)Px+Ye_^wR9FeUSZj!!R~dfZ@01KwA6kq*RPdkv@sAaSnr(jwNo@t8L}?Og8A)MQvF8cw1ZIx@T0~4zPjWmE zkonK40yb)2f^QyXj_gbdwN}m($SQ$MM9T^&+g`PEwbpbd;qG|=?#S+l#|{L4Xa7Cy zJN9HhU_F4$;^`8$s$Zlx9^yBd)YiIk4$>^AfQ0n+rDq6eC7jyc5Lv_Bfz0m1aL4zg zXpH5HaLf=>rJn?Ex21 zefd|&PaWiRC|rs?k^&Nuqd^K7x94TlM+_1_&#b|J?H5?P{9csy-)GlZ%SyqZ$3w!L zp>Vr_Hy2+(efeJ)o%tZd8--|St^p)e8ukG&Am;%i!vV03s$lVQ29h}!1A^HW%A`Xk zbO-U6X2r(6R;{6N{wYlEBp@d9)tWD9RY~4@gQ4UBC>HMlY&riV&1$DDRKz`DW3MX1pk4R*i2F+H; zmRRMIU{eW_9S%-Zhijk_CkHe3&JI@)h6?j#5T;H>SboQKBRL9KySmVoiRQmt8&_nG zE6krjwXgY?kOw_zM)!k95b&GyYoISnp4yg+dc&aL84P(o6Ism!Ex9q*%Z1DAMeW+w z1xPM(pR`2#nJfV{EK|Ehtyu*}_VN8NMP8hGs@gS6hu?r{w-{Ojx8w5~J+;+zEvO-a z)7JK5bY5;Gkk!AUc7xU(vWVd3SU5VZ867&NSnYM*1N2B{1g7)xwTN0}-Ey~RRKGS4 zta>aLogbhT>EZflRC+WZ{|s%VJ!E1+wopQCJ-EGFHq|>KEGV+{dsaC{cJu%}$4c%^ z&_g~!5GO%sWiIC0d^mkS47H8Ois8sWa^1DO2{bU3x9CiL{Y(UI`{Z8c4A=hQ=C+qNtAK3(*5xUPLaE58gGino6#sz*)c(Pkx98uDl_ zIU5PK}`dvVM>D0P3?LA=VB4Z`L@i=osAcQQC~ool=Y7DNa}kRnH>kPElJ9G4hR$14dfq-Q1gG&tP zCke_PNek+(&qm=>J#_|mdDTIAowcI6h1H6Sa@B>s`#Oe(iUrKx^EG4&QDt64*7+14 zYkiO8V83@1nuRCc$EtXW2{dMxc+5A>J%-KY*HgFpX0w1wHMskfPpkCQ-aD}K(BY0I zc7m7SWyjdkg}VLPaa}yv|dbw;?1SASbym$)VG4COcKz@*f`$to;i49 zw}k8j!=KbrxL5Ywedd%hD7O__TI(PmsbBou0R}*Nl`woANSz00000NkvXXu0mjf Db~3^S diff --git a/Habitica/res/drawable-hdpi/ic_header_mage.png b/Habitica/res/drawable-hdpi/ic_header_mage.png deleted file mode 100644 index c07ea299810bb1348fcda682e27cfa7c3a1a57cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1869 zcmV-T2eSByP)Px+2T4RhR9FeMS8Hq(RTMsV_A%RT*_L80w6s`BK|v9DR1HMY7_b;MBJqLZD;kMG zequt@XhMR2_#v1Wqb3+hNKo*X?G|5%_yTP~nqpZMy3=mk-EF(O-R;iI?#%U^nVn_Z zZeLqGN%zh@_ndRTdtUbz;2MzEFYoYntJ|-EDPXfTf?NNv#}}6 zMwxWEuDy@HP7d4!8XTCdy;%WjmXt?1hxHZ+&iTeBzr4|!7c$NY5a|3(+O%_U1bqE5 zbAQg?Dg=n7Q!pU%1cvE$GIYE%0AI9Twrs9D(UV$dO=db43<#5WCvA2mnuLg)f?zBO zfyjulzow;)wV8q;`GNp_9pJSb;6XBQE|>`wez*Duh=n=M9&732*PD}>{T2jBORLWS z=Yo!?&IgCHJGS}5#y5u2!4>7H?7|E_3Ic@HWHiBlF+{^^I=kIqLV>OU6Ch$Os8P-s z&bW~R1-%uveb@t>qfhibM0{W&)zR|MLBBiOn zRMNaHr@E|lYi#Q>s|~^5;0>s&EPk#ni#K+h5Dz7&>G;rDLPxHUx8wz>wa#{)xSlu?uZoW=}%hTbRZV6PSps83~VewedAuf`Fim~Vz7++nqmP;3UhK$e>k90f2G92?o z;p?tpAlt~?=9LtDx{Rh#fV_V7bs)k;hf<~}m zcJ`TlN*YeVFTLhHC&f~5Qi|hijvUWlZIa~Ia!q9cwR9)%8@m`@tGoDNvApd40I&4XeG35+I}C_>$$ zg-}~l1*%;H8FO&STqmroC;}~+gt>Ozu-%R!{Ch~Da5}i2{@g3^abhwXrar$~h5byc7v;LVFY;Bg9AjO@$CTGtlrHS!J=`hb-GiX`Ai ze-O~a;|Lvw9udJ)TnrBE0l7rs3`fzcHd`(mQmHfyg~Jez3>!d3E#ky(7vQNo>S5Kw zxyF)Uvpp*?r+6Hb<#*yNDRaZJc^+eN><=Y+LRFwY5`mbUq$vFBnq3r+z^e3{HQ-=zV20Dtt`2bwxRf@!U*;zM(k$&@%w3Nvg?--Y9dIfXi+- zDkc~)dt5x8fZo0kD5^@P@=~$W4v(+75pJt7(uTry+*Kn!jg3+^0Ff4+%7%U60FJNH zJcecaoj(M<37Mu7lG|y9v422?Kz|5gvB{feeWeGsH7tg*Vxz55C*R*#Bko2}Mj2-T zSvxjM@-7U=egtNxsQejI|PAves2kA<*$qVB$}6&&M!4W zRPHvtf&~%)!M?R|q2rga3V8vM(6NuP5MxR7`kuyG@jV1JVf-frWNk=qW0ulC!4TeQ@wzd5KX!*9qNMP3aW!P~Jw>o} zO&u(*$Y~!8PT3iIX=9DcXX#HgP74qzqqkU#q`ZQc{XU#wJI03^p7VS#0&ST1zRnhrE*f9D>@1K(JK{yD@2xOn3ADP40Av&!Ow*T5Rwix7kOL+d3oa00000NkvXX Hu0mjf&3Px+j7da6R9Fe!S8q&P*A@TW=Vy$882?EFNr0pcNk&3q0;EctKg3z9W>u9b+SE?_ zGHLs|Pg~n)TBhYgD@EO=O`9}LoAzOw)^(jKEn2r`YYL@=G)u67z>;)eU=TuRz{Y?9 z+q`#o&U4?3jSV=}K2*Ds-@W(T^XGTZIrrRa;IrDKl;X31%>of>i=LH`-;xp^60uW2 zbm}hmmF8xV`dyE9!BV_B>jREg3*p3A#*gkVYYTA3*#zk0xa;EWw z`>kyHr<(=aVuvKOA3(|@nHmIa%}poVL8e)NdV6JQDiWO`X7%pS94cx`VN;c~oDi2) zo9){T$I7o|Dk^l`-4@-hL!PI!cp*ndV6h2amk5YuUi-u%;P;ETkmzONLL9j8%Uc-e zndT{YN1CQx?P`tuKGYfAmL{(M?dpn@2U{br=~CX#3x-q(DXyDfSfd4qCsGmZ+}G5W zVf)@HTzPv0Z~e3%_eSOj6DPg=s-DzuceO>%4_uWl=FQh+n^c2sk#AxSgOryq(a({O zk7=Z|Gjq)f854Wk7OGNM9Dqdeop2J9qjB_g4j~>(qISOzhn}rLxv$ue7ed@8h~ICL zo?m6|Fw`DBrEB_Y#I)OBTD!^UVS8cQRRX08s+EH7Uas z9`C)e6edQJ(3Vr^>j-0EE@{XXm#R4UR2Axn`jTDkQx7Y?7=hDWxR8GP%0gcx>i@_cUZ zUXgZrhCq&ocx~rSkszpNdF-uFQCyN{v#CYc-|`rorFLGj+W62c-uy`)F1;~``I#IW z7N0p#1iqUO46o<)5HIjC556A_(V!tVtzqcq5|fRlrxNHUPbC(NT4s`s-fmZL@@qR$ zv)h|RHz#yW1RDdMgA_7p(lYzJ9%2R-unFa59+&%UD04kvRqPJC~cPG_=$jg;G%k?vC9z?2Qhldt*W$Ddg{(j(KmG z^VRxw0kNP0ah7(Na5xqCHfMW@*HuT_Q@$z%N%9W2|AaFD2`o7je9u@|=Ti_MDwZR( z$DgyV%9^5_>a6g~K_;-lQ-UH#x+IJZer%bh8~tbdT6|*`VU0mSfLLA##YhUS+?CZF zIvsjy9+B}0gl~-E&cHMlXC&(CcTsg$=?Rm-)Wj#Zf+8l?z>u|65TNe&V+ZL?^P(wP zL4Y=HrW~~`)5AbF$wt4ts9?`N0_9LCY*PkJ>iR38)@Vx><0_L?3!}*&Y@KPM19FK9 zrQ4*f?2}6xrtZ#TYJ36rC*~2GT0+&X%}6dJQTKQme3dRf3~?yp3r)wp9V_KC=W7D$ zX^$Szbom~E@nj0EH%=uqeAFF5xPKDi@W1i(7f-_NE1|GsUQzJOffnDD)pV>HvQS6V zzpP32%-Ue+kwv>|B^UgL>eV0{vO8?3KlBK;*SQd%Tf&Eb9Yrj%NVgEmG#wZDvA-H1 z!$W*;h1z0`uIloBzF523Bl{>dT1mskRRyW)QZ0U!ZtZKC7iH*je2YvbeoQZg=UMiH zclt3kED@O-$Ctiw6rPQxOrBL$^=Z4$)sy^qW)EdyLu0%9x8j`84M6A4N#(g?5siGx zMdUVR>Sj8}K9I<4ujoA4t!adAX-!9Dn&^J03sc$CD>(vB6E( z5Y;C7*l5#SCl;Cl-ZH)stQ-oqPEXQ~H|5d4lJpOs@P6^pfOv5IujHUPg9;(?CWYxV zFaPb0>qyNykrFX{{IAir2wiUo)+2#d%Ha+(lrn;hO#>v<+qj{k;J zjy+GIc$?{s$E#3VzYV+V>oG%r`D~{33}=`mDiLdX=o;M%&s9Gu7BdYNGUkM*e4|_v zA?9y7T4#tkoC3wAY4emSR&*>tQjr!h$B@7%?RFuDULb*!pOTgA(qqr7!v91m_B0!H z$l^jOh(0I0-si{hQG^(zfY>|aTGm^qad8$CbvvW(p>pjZzE%5Wk6yz`KlHT7Ai z%p`POj?^fcXwWq@2%$Gfhz8nQ4O|}Ar}a{>eXdSwsf%Q+M<}vKLg`V3=<&C>hfTW= k)zc0YE}jo1^#8*AU#DibAp(;p-T(jq07*qoM6N<$f@f~elK=n! diff --git a/Habitica/res/drawable-hdpi/ic_header_warrior.png b/Habitica/res/drawable-hdpi/ic_header_warrior.png deleted file mode 100644 index a5be97c1db708706a06785da75f5e113de1c2999..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2013 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 IM6N<$g0!|TB>(^b diff --git a/Habitica/res/drawable-mdpi/ic_header_mage.png b/Habitica/res/drawable-mdpi/ic_header_mage.png deleted file mode 100644 index 3f1d58d513314563801102b8d7d5319ac9818af9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1107 zcmV-Z1g!gsP)Px(4M{{nR7ef2luJxpRT#(r=Q2;;lmTfeeONJ2h^-B17rG!uX-3l}zV(FF|H29ug-D=jPp+JzmscbF;jfMK5ZG4~w5b8&_#NF5Ts z$=t`e-}(Q}_nq%Mz&31T(R^}DHTt(P1xmHf6GHfy%`bByF3$+zsdiq~09`dd5JDUh z5Iw49ytAVKxq5)VKa|Q z9O7JgaEphB0;psj8O2ObD@thp`4Y1mFXz~ zZfk34Vw}IB7mcfei!Xz!ab+?hYD+%yUIt81t?LEjiplv4vnx7`q8Q+Uzp17RSf&cv zXfYaJq*T$W&*v=r$c<$p zi=yE47QC0iUkM#!^I2G23~QQsspRAUMi=zAsFBW0C-X>KHu{>qIJ(OZo4krOF6?ct zTMw1S7-I;uwjg489i5^5^?0h?i#SDkUCTm79$YY;>SMvMc|_R!k5ESU%~NG)t7#O9 zHjcG5K~Y?Y8iXdxTSaQJRpb*nbUYG($Fp|c^))f1GdcV+7eS-ni{1mf(cjUCo`63O zHyd;bTb!hF^O=@~yNP9@J9_wYDFsHqI;-`+=^VW zGq#*9;KpnShZ-NF3iH)63&Tzg2N(4BIK$V`Y(crE#*s0LYm|SlE=560T^+n`4`Qhz ztvHMO_v4U@s z;HpvZeD5AS*V74?OOfZrw_RP{i+zl(pD84=2_PZTg5kmt=j=P`q{mZ+h2O$SEYc>* z2zqxnxe%~i2+E}#Yvm^JBuz7q`H3zpN Z_75Px(KS@MER7efARb5P*RTzHG_qD}>r9ZH)6c}uSF*g|-EoPGOQ?i&PE^#*|CMGjp zcw^$-X3U~jUYKk#@xqxUns}v&7rI+52K}pN{|gD{TnXKdzAa+Qd32qrc(}F(E-+*U_wKA7N~W}lnXwow z4g>7YQZUATGys=de2&qlkp=r#UtyYljf0=a`Z4ya*XKAR)-r<=9kxkA3|pOL`2E&A zZht?Cjac$rnqxTVU-@bx`xu;EBw)G0449l5;w1{2n!75(Vx1-6 zRGbixjK^Z`$N#|(U);yy+-g?0BRp({{YIg37s1I+>j3TKJJ$gd494vQodqNoC&&2x zxjZbUC?7B%OXn$Rv5P=B7!Ar5gUXVw1KU{$T`tL1at$+oZP!NFsKo=GZu?Cs7yK0^ zkoSUGwzA5I67!QX36dkNm3S0h#_Z%WbX{In>TdN?0d96#lt5TjqwxkKY58sMs@o$7HSNFtrmV1gA# zn-AjAlqfXwQ0Ki_3|#1*3ZQn2n+Sco`axyEV%8 zEo#wk3S;sJo(4_;4>(vq-D1wbyC|n)qXS|5IWmjWz9v*3swhe#3FsaAmddG}blP?LhhH>Sy)*jo>l0e*E z+I>eZfRy(D&-i6XLV*d)Pp+ehI;`QvYI*Jo)7x5o`+~B_oMR{xl${A2iuzjN&a-wB zJUx#08Q3+?nZu}VuwXH)V){Wsx|F~?D+EcPFlAV3bN(ps9dDQIryNyLQIas$+uU{# z&MGS$PF47A9_ucXH<3PC)PXAQGL6wGQT=uXJr`LyquXnyTG+(1a^$30dZDXDa^- X5ND#v^?UHM00000NkvXXu0mjftjsNo diff --git a/Habitica/res/drawable-mdpi/ic_header_warrior.png b/Habitica/res/drawable-mdpi/ic_header_warrior.png deleted file mode 100644 index c85761fefed87225a21a4c4bac43d3a7c010c982..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1158 zcmV;11bO?3P)Px(KuJVFR7ef2mETVsRTRg+cV>2Xc7R=e?9yU@;6@+?v6@0;DO(%$!I-EqMr@i! z>w`}=(fHzHE z8ieIsAZQSl4X7%h>EMC{Rv#v`lYU?i`1s_L;MPT$X4qL?g^2s)B^&zq9`S+<_JF$;lR&)(C~9(a2nby}3n( zmo0bU?hwNv_jcKx4wM5vJsm|!9f9q%sxz|?G>SP5V`Bq$fu0$ISW^S$dcY2-fT|^g zk~U26PW#HQu+}%=uaaTwD)Px0Pmxqti-xnOTtyrL8*>*cJmBec7@BnivNXkddreP@ zCZ0^XRq{QR-&6Y4IRx&NhFL11G*yQCBJ~764Ixx*k%qG@9-rQ!0J`-Oxcx0ON9AKl ziXkT}#Bn(Gy97_@v)5tW%_0yD!KUz((!Y2%_zpLs;jL4YTtx$fAvPHQ?jPeSJOFo| z=fwh;ss#}Yo`9m90HgY*q0cSASfXCL>&LR?fwmUZpLrcD5LhQqUto!+)BlFM z&y{7$*jHjSLJ_f0Tv{fxb=Y(_Z?AfCURb8eaJfB3mcQY`S0J(k8{7%ssh}?O4OPI3 ze6$DFojWiM9YU!HZWxpT8>Q)TLW5nMs6YK0;PcHBe2@})&9mS>Q-uetyW60DJ`=J}esTKUSP1@z5!UH~@Iz#X;^~@FIMw8IjHnDMG6zYw6 zIK?8I0@ZzT3bfg%QS$gM%!*}+TJDSVH(mTNmFcV6Oh(YBrXe>)p#HH2rK=rgb_<2n zW%yf~A-A-`Ue7{26ggf&+U14upC`VCW4-NUv(TYVSCGTGVqAC@+ZvM-{4mQkg9_)*0-Sabd}+ZeL|I0 z2y{O7K3x&x<{|_|A&2Q`bm$}lhWAzg9$^B5rCaWKfrjIKP;)sb&pzWet&iE@z(+2C z`qX)-#ykF4+c~O%Thz=(Ac?bk!QF2ZqU3ud{<)T!g}F$3#xEhz-43z2CCL&4`-<~k zN(6#@0VaGPKhXubrxOxwf3dOAm08(KaKGQYeL&ssJRh5YudVeQIkiT9tr1|)*zQ-s Y->MA2^y4^Ba{vGU07*qoM6N<$f>JmmrvLx| diff --git a/Habitica/res/drawable-xhdpi/ic_header_healer.png b/Habitica/res/drawable-xhdpi/ic_header_healer.png deleted file mode 100644 index c4ca17543b1d463ca7ab7c53adcffcca2436ade3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2721 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 bwW9wIKBbSfLo)sc00000NkvXXu0mjf4FEGG diff --git a/Habitica/res/drawable-xhdpi/ic_header_mage.png b/Habitica/res/drawable-xhdpi/ic_header_mage.png deleted file mode 100644 index 4005242c284569af470b9cf30402b8f41e44904e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2612 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 diff --git a/Habitica/res/drawable-xhdpi/ic_header_warrior.png b/Habitica/res/drawable-xhdpi/ic_header_warrior.png deleted file mode 100644 index 789f41511c57c1aa1be7f1ffe8f597a0d4b4f6e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2714 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 UyBsE~-2eap07*qoM6N<$f=nMSs{jB1 diff --git a/Habitica/res/drawable-xxhdpi/ic_header_healer.png b/Habitica/res/drawable-xxhdpi/ic_header_healer.png deleted file mode 100644 index 5fa73654d88f92bd547a6870286c2850c4c42d00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4207 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 FV1ic9>CXTF diff --git a/Habitica/res/drawable-xxhdpi/ic_header_mage.png b/Habitica/res/drawable-xxhdpi/ic_header_mage.png deleted file mode 100644 index 2d61d9d045bc7d558b2e891fe47e2dc58a9c958a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3981 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 diff --git a/Habitica/res/drawable-xxhdpi/ic_header_rogue.png b/Habitica/res/drawable-xxhdpi/ic_header_rogue.png deleted file mode 100644 index dabc6b26ecceac720a25f31deb657e593a53ef67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3854 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 diff --git a/Habitica/res/drawable-xxhdpi/ic_header_warrior.png b/Habitica/res/drawable-xxhdpi/ic_header_warrior.png deleted file mode 100644 index c0cd8774ac441114c31107e2cafad32409794485..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4156 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 diff --git a/Habitica/res/layout/avatar_with_bars.xml b/Habitica/res/layout/avatar_with_bars.xml index 06abdfbcf..dd98ed567 100644 --- a/Habitica/res/layout/avatar_with_bars.xml +++ b/Habitica/res/layout/avatar_with_bars.xml @@ -74,8 +74,6 @@ android:id="@+id/lvl_tv" android:layout_width="wrap_content" android:layout_height="36dp" - android:drawableLeft="@drawable/ic_header_warrior" - android:drawableStart="@drawable/ic_header_warrior" android:drawablePadding="6dp" android:gravity="center" android:textSize="14sp" diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.java index 286191e93..fdd7c731b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.java @@ -2,6 +2,7 @@ package com.habitrpg.android.habitica.ui; import android.annotation.TargetApi; import android.content.Context; +import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Build; import android.support.v4.content.res.ResourcesCompat; @@ -93,22 +94,20 @@ public class AvatarWithBarsViewModel { lvlText.setCompoundDrawables(null, null, null, null); } else { lvlText.setText(context.getString(R.string.user_level_with_class, user.getStats().getLvl(), userClass.substring(0, 1).toUpperCase(Locale.getDefault()) + userClass.substring(1))); - Drawable drawable; + Drawable drawable = null; switch (stats.getHabitClass()) { case "warrior": - drawable = ResourcesCompat.getDrawable(res, R.drawable.ic_header_warrior, null); + drawable = new BitmapDrawable(context.getResources(), HabiticaIconsHelper.imageOfWarriorDarkBg()); break; case "rogue": - drawable = ResourcesCompat.getDrawable(res, R.drawable.ic_header_rogue, null); + drawable = new BitmapDrawable(context.getResources(), HabiticaIconsHelper.imageOfRogueDarkBg()); break; case "wizard": - drawable = ResourcesCompat.getDrawable(res, R.drawable.ic_header_mage, null); + drawable = new BitmapDrawable(context.getResources(), HabiticaIconsHelper.imageOfMageDarkBg()); break; case "healer": - drawable = ResourcesCompat.getDrawable(res, R.drawable.ic_header_healer, null); + drawable = new BitmapDrawable(context.getResources(), HabiticaIconsHelper.imageOfHealerDarkBg()); break; - default: - drawable = ResourcesCompat.getDrawable(res, R.drawable.ic_header_warrior, null); } if (drawable != null) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.java index cbc1fc9d2..ffea64557 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.java @@ -13,6 +13,8 @@ import com.habitrpg.android.habitica.events.TaskTappedEvent; import com.habitrpg.android.habitica.models.tasks.Task; import com.habitrpg.android.habitica.ui.helpers.MarkdownParser; +import net.pherth.android.emoji_library.EmojiTextView; + import org.greenrobot.eventbus.EventBus; import butterknife.BindColor; @@ -28,10 +30,10 @@ public abstract class BaseTaskViewHolder extends RecyclerView.ViewHolder impleme public Task task; protected Context context; @BindView(R.id.checkedTextView) - TextView titleTextView; + EmojiTextView titleTextView; @BindView(R.id.notesTextView) - TextView notesTextView; + EmojiTextView notesTextView; @Nullable @BindView(R.id.rightBorderView) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIcons.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIcons.java index 1772026a7..7141f8624 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIcons.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIcons.java @@ -76,11 +76,11 @@ public class HabiticaIcons { Paint paint = CacheForHeart.paint; // Local Colors - int heartLightBackground = Color.argb(255, 247, 78, 82); - int fillColor6 = Color.argb(128, 181, 36, 40); - int fillColor3 = Color.argb(128, 255, 255, 255); int heartDarkBackground = Color.argb(178, 255, 255, 255); int fillColor5 = Color.argb(64, 255, 255, 255); + int fillColor6 = Color.argb(128, 181, 36, 40); + int fillColor3 = Color.argb(128, 255, 255, 255); + int heartLightBackground = Color.argb(255, 247, 78, 82); int fillColor2 = Color.argb(255, 255, 97, 101); int fillColor4 = Color.argb(89, 181, 36, 40); @@ -356,11 +356,11 @@ public class HabiticaIcons { Paint paint = CacheForExperience.paint; // Local Colors - int fillColor12 = Color.argb(128, 191, 125, 26); - int fillColor3 = Color.argb(128, 255, 255, 255); int fillColor11 = Color.argb(64, 191, 125, 26); + int fillColor3 = Color.argb(128, 255, 255, 255); int fillColor5 = Color.argb(64, 255, 255, 255); int fillColor10 = Color.argb(255, 255, 166, 35); + int fillColor12 = Color.argb(128, 191, 125, 26); // Resize to Target Frame canvas.save(); @@ -587,11 +587,11 @@ public class HabiticaIcons { Paint paint = CacheForMagic.paint; // Local Colors - int fillColor5 = Color.argb(64, 255, 255, 255); - int fillColor3 = Color.argb(128, 255, 255, 255); int fillColor9 = Color.argb(64, 31, 112, 154); + int fillColor3 = Color.argb(128, 255, 255, 255); int fillColor8 = Color.argb(255, 80, 181, 233); int fillColor7 = Color.argb(255, 41, 149, 205); + int fillColor5 = Color.argb(64, 255, 255, 255); // Resize to Target Frame canvas.save(); @@ -738,11 +738,11 @@ public class HabiticaIcons { Paint paint = CacheForGold.paint; // Local Colors - int fillColor12 = Color.argb(128, 191, 125, 26); int fillColor13 = Color.argb(191, 191, 125, 26); int fillColor5 = Color.argb(64, 255, 255, 255); int fillColor3 = Color.argb(128, 255, 255, 255); int fillColor10 = Color.argb(255, 255, 166, 35); + int fillColor12 = Color.argb(128, 191, 125, 26); // Resize to Target Frame canvas.save(); @@ -892,10 +892,10 @@ public class HabiticaIcons { Paint paint = CacheForGem.paint; // Local Colors - int fillColor3 = Color.argb(128, 255, 255, 255); - int fillColor5 = Color.argb(64, 255, 255, 255); int fillColor15 = Color.argb(89, 27, 153, 107); + int fillColor3 = Color.argb(128, 255, 255, 255); int fillColor14 = Color.argb(255, 36, 204, 143); + int fillColor5 = Color.argb(64, 255, 255, 255); // Resize to Target Frame canvas.save(); @@ -1101,10 +1101,10 @@ public class HabiticaIcons { Paint paint = CacheForHourglass.paint; // Local Colors - int fillColor18 = Color.argb(255, 154, 98, 255); int fillColor19 = Color.argb(255, 79, 42, 147); int fillColor17 = Color.argb(230, 255, 255, 255); int fillColor16 = Color.argb(204, 169, 220, 246); + int fillColor18 = Color.argb(255, 154, 98, 255); // Resize to Target Frame canvas.save(); @@ -1400,7 +1400,7 @@ public class HabiticaIcons { private static class CacheForWarrior { private static Paint paint = new Paint(); - private static RectF originalFrame = new RectF(0f, 0f, 25f, 25f); + private static RectF originalFrame = new RectF(0f, 0f, 32f, 32f); private static RectF resizedFrame = new RectF(); private static RectF bezierRect = new RectF(); private static Path bezierPath = new Path(); @@ -1448,19 +1448,71 @@ public class HabiticaIcons { private static Path bezier18Path = new Path(); private static RectF bezier19Rect = new RectF(); private static Path bezier19Path = new Path(); - private static RectF group = new RectF(); + private static RectF group3 = new RectF(); private static Path clipPath = new Path(); private static RectF bezier20Rect = new RectF(); private static Path bezier20Path = new Path(); private static RectF rectangle5Rect = new RectF(); private static Path rectangle5Path = new Path(); + private static RectF bezier21Rect = new RectF(); + private static Path bezier21Path = new Path(); + private static RectF bezier22Rect = new RectF(); + private static Path bezier22Path = new Path(); + private static RectF rectangle6Rect = new RectF(); + private static Path rectangle6Path = new Path(); + private static RectF bezier23Rect = new RectF(); + private static Path bezier23Path = new Path(); + private static RectF bezier24Rect = new RectF(); + private static Path bezier24Path = new Path(); + private static RectF bezier25Rect = new RectF(); + private static Path bezier25Path = new Path(); + private static RectF bezier26Rect = new RectF(); + private static Path bezier26Path = new Path(); + private static RectF bezier27Rect = new RectF(); + private static Path bezier27Path = new Path(); + private static RectF bezier28Rect = new RectF(); + private static Path bezier28Path = new Path(); + private static RectF bezier29Rect = new RectF(); + private static Path bezier29Path = new Path(); + private static RectF bezier30Rect = new RectF(); + private static Path bezier30Path = new Path(); + private static RectF bezier31Rect = new RectF(); + private static Path bezier31Path = new Path(); + private static RectF bezier32Rect = new RectF(); + private static Path bezier32Path = new Path(); + private static RectF bezier33Rect = new RectF(); + private static Path bezier33Path = new Path(); + private static RectF bezier34Rect = new RectF(); + private static Path bezier34Path = new Path(); + private static RectF bezier35Rect = new RectF(); + private static Path bezier35Path = new Path(); + private static RectF rectangle7Rect = new RectF(); + private static Path rectangle7Path = new Path(); + private static RectF rectangle8Rect = new RectF(); + private static Path rectangle8Path = new Path(); + private static RectF rectangle9Rect = new RectF(); + private static Path rectangle9Path = new Path(); + private static RectF bezier36Rect = new RectF(); + private static Path bezier36Path = new Path(); + private static RectF bezier37Rect = new RectF(); + private static Path bezier37Path = new Path(); + private static RectF bezier38Rect = new RectF(); + private static Path bezier38Path = new Path(); + private static RectF bezier39Rect = new RectF(); + private static Path bezier39Path = new Path(); + private static RectF group5 = new RectF(); + private static Path clip2Path = new Path(); + private static RectF bezier40Rect = new RectF(); + private static Path bezier40Path = new Path(); + private static RectF rectangle10Rect = new RectF(); + private static Path rectangle10Path = new Path(); } - public static void drawWarrior(Canvas canvas) { - HabiticaIcons.drawWarrior(canvas, new RectF(0f, 0f, 25f, 25f), ResizingBehavior.AspectFit); + public static void drawWarrior(Canvas canvas, boolean darkBackground) { + HabiticaIcons.drawWarrior(canvas, new RectF(0f, 0f, 32f, 32f), ResizingBehavior.AspectFit, darkBackground); } - public static void drawWarrior(Canvas canvas, RectF targetFrame, ResizingBehavior resizing) { + public static void drawWarrior(Canvas canvas, RectF targetFrame, ResizingBehavior resizing, boolean darkBackground) { // General Declarations Stack currentTransformation = new Stack(); currentTransformation.push(new Matrix()); @@ -1470,561 +1522,1120 @@ public class HabiticaIcons { int fillColor21 = Color.argb(255, 255, 182, 184); int fillColor23 = Color.argb(255, 229, 65, 77); int fillColor22 = Color.argb(255, 242, 123, 134); + int fillColor41 = Color.argb(255, 255, 149, 152); + int fillColor43 = Color.argb(255, 200, 43, 43); + int fillColor42 = Color.argb(255, 255, 149, 152); int fillColor = Color.argb(255, 240, 97, 102); - int fillColor20 = Color.argb(255, 200, 43, 43); + int fillColor20 = Color.argb(255, 255, 181, 183); + + // Local Variables + boolean lightBackground = !darkBackground; // Resize to Target Frame canvas.save(); RectF resizedFrame = CacheForWarrior.resizedFrame; HabiticaIcons.resizingBehaviorApply(resizing, CacheForWarrior.originalFrame, targetFrame, resizedFrame); canvas.translate(resizedFrame.left, resizedFrame.top); - canvas.scale(resizedFrame.width() / 25f, resizedFrame.height() / 25f); + canvas.scale(resizedFrame.width() / 32f, resizedFrame.height() / 32f); - // Bezier - RectF bezierRect = CacheForWarrior.bezierRect; - bezierRect.set(4.65f, 11.19f, 13.89f, 20.43f); - Path bezierPath = CacheForWarrior.bezierPath; - bezierPath.reset(); - bezierPath.moveTo(9.58f, 15.5f); - bezierPath.lineTo(12.88f, 17.02f); - bezierPath.cubicTo(13.15f, 17.15f, 13.33f, 17.4f, 13.4f, 17.7f); - bezierPath.cubicTo(13.51f, 18.19f, 13.86f, 19.34f, 13.89f, 19.95f); - bezierPath.cubicTo(13.9f, 20.29f, 13.55f, 20.53f, 13.24f, 20.39f); - bezierPath.lineTo(7.73f, 17.75f); - bezierPath.cubicTo(7.56f, 17.66f, 7.42f, 17.52f, 7.33f, 17.35f); - bezierPath.lineTo(4.69f, 11.84f); - bezierPath.cubicTo(4.55f, 11.53f, 4.79f, 11.18f, 5.13f, 11.19f); - bezierPath.cubicTo(5.74f, 11.22f, 6.86f, 11.55f, 7.38f, 11.68f); - bezierPath.cubicTo(7.67f, 11.76f, 7.93f, 11.93f, 8.06f, 12.2f); - bezierPath.lineTo(9.58f, 15.5f); - bezierPath.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezierPath.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor); - canvas.drawPath(bezierPath, paint); - - // Bezier 2 - RectF bezier2Rect = CacheForWarrior.bezier2Rect; - bezier2Rect.set(0.18f, 0.9f, 24.18f, 24.91f); - Path bezier2Path = CacheForWarrior.bezier2Path; - bezier2Path.reset(); - bezier2Path.moveTo(1.6f, 23.48f); - bezier2Path.lineTo(3.02f, 24.91f); - bezier2Path.lineTo(6.71f, 24.62f); - bezier2Path.lineTo(6.9f, 22.19f); - bezier2Path.lineTo(9.02f, 20.07f); - bezier2Path.lineTo(12.88f, 21.91f); - bezier2Path.lineTo(15.76f, 21.13f); - bezier2Path.lineTo(14.55f, 15.93f); - bezier2Path.lineTo(22.63f, 8.39f); - bezier2Path.lineTo(24.18f, 0.91f); - bezier2Path.lineTo(24.17f, 0.91f); - bezier2Path.lineTo(24.18f, 0.91f); - bezier2Path.lineTo(24.18f, 0.9f); - bezier2Path.lineTo(16.7f, 2.45f); - bezier2Path.lineTo(9.16f, 10.53f); - bezier2Path.lineTo(3.95f, 9.32f); - bezier2Path.lineTo(3.18f, 12.2f); - bezier2Path.lineTo(5.01f, 16.06f); - bezier2Path.lineTo(2.89f, 18.18f); - bezier2Path.lineTo(0.47f, 18.37f); - bezier2Path.lineTo(0.18f, 22.06f); - bezier2Path.lineTo(1.6f, 23.48f); - bezier2Path.lineTo(1.6f, 23.48f); - bezier2Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier2Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor20); - canvas.drawPath(bezier2Path, paint); - - // Rectangle - canvas.save(); - canvas.translate(6f, 19.05f); - currentTransformation.peek().postTranslate(6f, 19.05f); - canvas.rotate(45f); - currentTransformation.peek().postRotate(45f); - RectF rectangleRect = CacheForWarrior.rectangleRect; - rectangleRect.set(-1.3f, -3.23f, 1.3f, 3.23f); - Path rectanglePath = CacheForWarrior.rectanglePath; - rectanglePath.reset(); - rectanglePath.moveTo(rectangleRect.left, rectangleRect.top); - rectanglePath.lineTo(rectangleRect.right, rectangleRect.top); - rectanglePath.lineTo(rectangleRect.right, rectangleRect.bottom); - rectanglePath.lineTo(rectangleRect.left, rectangleRect.bottom); - rectanglePath.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor); - canvas.drawPath(rectanglePath, paint); - canvas.restore(); - - // Bezier 3 - RectF bezier3Rect = CacheForWarrior.bezier3Rect; - bezier3Rect.set(1.76f, 19.66f, 5.42f, 23.32f); - Path bezier3Path = CacheForWarrior.bezier3Path; - bezier3Path.reset(); - bezier3Path.moveTo(1.76f, 21.47f); - bezier3Path.lineTo(1.89f, 19.79f); - bezier3Path.lineTo(3.58f, 19.66f); - bezier3Path.lineTo(5.42f, 21.5f); - bezier3Path.lineTo(5.29f, 23.19f); - bezier3Path.lineTo(3.61f, 23.32f); - bezier3Path.lineTo(1.76f, 21.47f); - bezier3Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier3Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor); - canvas.drawPath(bezier3Path, paint); - - // Bezier 4 - RectF bezier4Rect = CacheForWarrior.bezier4Rect; - bezier4Rect.set(17.67f, 3.02f, 22.05f, 7.25f); - Path bezier4Path = CacheForWarrior.bezier4Path; - bezier4Path.reset(); - bezier4Path.moveTo(17.67f, 3.92f); - bezier4Path.lineTo(17.83f, 7.25f); - bezier4Path.lineTo(22.05f, 3.03f); - bezier4Path.cubicTo(21.98f, 2.95f, 18.79f, 3.32f, 17.67f, 3.92f); - bezier4Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier4Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor21); - canvas.drawPath(bezier4Path, paint); - - // Bezier 5 - RectF bezier5Rect = CacheForWarrior.bezier5Rect; - bezier5Rect.set(8.68f, 3.92f, 17.83f, 14.12f); - Path bezier5Path = CacheForWarrior.bezier5Path; - bezier5Path.reset(); - bezier5Path.moveTo(17.6f, 3.96f); - bezier5Path.lineTo(8.68f, 13.32f); - bezier5Path.lineTo(10.96f, 14.12f); - bezier5Path.lineTo(17.83f, 7.25f); - bezier5Path.lineTo(17.67f, 3.92f); - bezier5Path.cubicTo(17.65f, 3.93f, 17.6f, 3.96f, 17.6f, 3.96f); - bezier5Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier5Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor22); - canvas.drawPath(bezier5Path, paint); - - // Bezier 6 - RectF bezier6Rect = CacheForWarrior.bezier6Rect; - bezier6Rect.set(8.6f, 13.32f, 10.96f, 15.51f); - Path bezier6Path = CacheForWarrior.bezier6Path; - bezier6Path.reset(); - bezier6Path.moveTo(8.68f, 13.32f); - bezier6Path.cubicTo(8.65f, 13.34f, 8.62f, 13.37f, 8.6f, 13.4f); - bezier6Path.lineTo(9.57f, 15.51f); - bezier6Path.lineTo(10.96f, 14.12f); - bezier6Path.lineTo(8.68f, 13.32f); - bezier6Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier6Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor22); - canvas.drawPath(bezier6Path, paint); - - // Bezier 7 - RectF bezier7Rect = CacheForWarrior.bezier7Rect; - bezier7Rect.set(17.83f, 3.03f, 22.06f, 7.41f); - Path bezier7Path = CacheForWarrior.bezier7Path; - bezier7Path.reset(); - bezier7Path.moveTo(21.16f, 7.41f); - bezier7Path.lineTo(17.83f, 7.25f); - bezier7Path.lineTo(22.05f, 3.03f); - bezier7Path.cubicTo(22.13f, 3.11f, 21.76f, 6.29f, 21.16f, 7.41f); - bezier7Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier7Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor22); - canvas.drawPath(bezier7Path, paint); - - // Bezier 8 - RectF bezier8Rect = CacheForWarrior.bezier8Rect; - bezier8Rect.set(10.96f, 7.25f, 21.16f, 16.4f); - Path bezier8Path = CacheForWarrior.bezier8Path; - bezier8Path.reset(); - bezier8Path.moveTo(21.12f, 7.48f); - bezier8Path.lineTo(11.76f, 16.4f); - bezier8Path.lineTo(10.96f, 14.12f); - bezier8Path.lineTo(17.83f, 7.25f); - bezier8Path.lineTo(21.16f, 7.41f); - bezier8Path.cubicTo(21.14f, 7.43f, 21.12f, 7.48f, 21.12f, 7.48f); - bezier8Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier8Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor23); - canvas.drawPath(bezier8Path, paint); - - // Bezier 9 - RectF bezier9Rect = CacheForWarrior.bezier9Rect; - bezier9Rect.set(9.57f, 14.12f, 11.76f, 16.48f); - Path bezier9Path = CacheForWarrior.bezier9Path; - bezier9Path.reset(); - bezier9Path.moveTo(11.76f, 16.4f); - bezier9Path.cubicTo(11.73f, 16.43f, 11.7f, 16.46f, 11.68f, 16.48f); - bezier9Path.lineTo(9.57f, 15.51f); - bezier9Path.lineTo(10.96f, 14.12f); - bezier9Path.lineTo(11.76f, 16.4f); - bezier9Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier9Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor23); - canvas.drawPath(bezier9Path, paint); - - // Bezier 10 - RectF bezier10Rect = CacheForWarrior.bezier10Rect; - bezier10Rect.set(1.89f, 19.66f, 3.58f, 21.09f); - Path bezier10Path = CacheForWarrior.bezier10Path; - bezier10Path.reset(); - bezier10Path.moveTo(3.58f, 19.66f); - bezier10Path.lineTo(3.19f, 21.09f); - bezier10Path.lineTo(1.89f, 19.79f); - bezier10Path.lineTo(3.58f, 19.66f); - bezier10Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier10Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor21); - canvas.drawPath(bezier10Path, paint); - - // Bezier 11 - RectF bezier11Rect = CacheForWarrior.bezier11Rect; - bezier11Rect.set(3.99f, 21.5f, 5.42f, 23.19f); - Path bezier11Path = CacheForWarrior.bezier11Path; - bezier11Path.reset(); - bezier11Path.moveTo(5.42f, 21.5f); - bezier11Path.lineTo(3.99f, 21.89f); - bezier11Path.lineTo(5.29f, 23.19f); - bezier11Path.lineTo(5.42f, 21.5f); - bezier11Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier11Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor21); - canvas.drawPath(bezier11Path, paint); - - // Bezier 12 - RectF bezier12Rect = CacheForWarrior.bezier12Rect; - bezier12Rect.set(3.19f, 19.66f, 5.42f, 21.89f); - Path bezier12Path = CacheForWarrior.bezier12Path; - bezier12Path.reset(); - bezier12Path.moveTo(3.58f, 19.66f); - bezier12Path.lineTo(5.42f, 21.5f); - bezier12Path.lineTo(3.99f, 21.89f); - bezier12Path.lineTo(3.19f, 21.09f); - bezier12Path.lineTo(3.58f, 19.66f); - bezier12Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier12Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor21); - canvas.drawPath(bezier12Path, paint); - - // Bezier 13 - RectF bezier13Rect = CacheForWarrior.bezier13Rect; - bezier13Rect.set(1.76f, 19.79f, 3.19f, 21.48f); - Path bezier13Path = CacheForWarrior.bezier13Path; - bezier13Path.reset(); - bezier13Path.moveTo(1.76f, 21.48f); - bezier13Path.lineTo(3.19f, 21.09f); - bezier13Path.lineTo(1.89f, 19.79f); - bezier13Path.lineTo(1.76f, 21.48f); - bezier13Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier13Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor22); - canvas.drawPath(bezier13Path, paint); - - // Bezier 14 - RectF bezier14Rect = CacheForWarrior.bezier14Rect; - bezier14Rect.set(3.6f, 21.89f, 5.29f, 23.32f); - Path bezier14Path = CacheForWarrior.bezier14Path; - bezier14Path.reset(); - bezier14Path.moveTo(3.6f, 23.32f); - bezier14Path.lineTo(3.99f, 21.89f); - bezier14Path.lineTo(5.29f, 23.19f); - bezier14Path.lineTo(3.6f, 23.32f); - bezier14Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier14Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor22); - canvas.drawPath(bezier14Path, paint); - - // Bezier 15 - RectF bezier15Rect = CacheForWarrior.bezier15Rect; - bezier15Rect.set(1.76f, 21.09f, 3.99f, 23.32f); - Path bezier15Path = CacheForWarrior.bezier15Path; - bezier15Path.reset(); - bezier15Path.moveTo(1.76f, 21.48f); - bezier15Path.lineTo(3.61f, 23.32f); - bezier15Path.lineTo(3.99f, 21.89f); - bezier15Path.lineTo(3.19f, 21.09f); - bezier15Path.lineTo(1.76f, 21.48f); - bezier15Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier15Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor22); - canvas.drawPath(bezier15Path, paint); - - // Rectangle 2 - canvas.save(); - canvas.translate(7.3f, 17.8f); - currentTransformation.peek().postTranslate(7.3f, 17.8f); - canvas.rotate(45f); - currentTransformation.peek().postRotate(45f); - RectF rectangle2Rect = CacheForWarrior.rectangle2Rect; - rectangle2Rect.set(-1.3f, -0.8f, 1.3f, 0.8f); - Path rectangle2Path = CacheForWarrior.rectangle2Path; - rectangle2Path.reset(); - rectangle2Path.moveTo(rectangle2Rect.left, rectangle2Rect.top); - rectangle2Path.lineTo(rectangle2Rect.right, rectangle2Rect.top); - rectangle2Path.lineTo(rectangle2Rect.right, rectangle2Rect.bottom); - rectangle2Path.lineTo(rectangle2Rect.left, rectangle2Rect.bottom); - rectangle2Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor23); - canvas.drawPath(rectangle2Path, paint); - canvas.restore(); - - // Rectangle 3 - canvas.save(); - canvas.translate(6.15f, 18.9f); - currentTransformation.peek().postTranslate(6.15f, 18.9f); - canvas.rotate(45f); - currentTransformation.peek().postRotate(45f); - RectF rectangle3Rect = CacheForWarrior.rectangle3Rect; - rectangle3Rect.set(-1.3f, -0.8f, 1.3f, 0.8f); - Path rectangle3Path = CacheForWarrior.rectangle3Path; - rectangle3Path.reset(); - rectangle3Path.moveTo(rectangle3Rect.left, rectangle3Rect.top); - rectangle3Path.lineTo(rectangle3Rect.right, rectangle3Rect.top); - rectangle3Path.lineTo(rectangle3Rect.right, rectangle3Rect.bottom); - rectangle3Path.lineTo(rectangle3Rect.left, rectangle3Rect.bottom); - rectangle3Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor); - canvas.drawPath(rectangle3Path, paint); - canvas.restore(); - - // Rectangle 4 - canvas.save(); - canvas.translate(5.05f, 20f); - currentTransformation.peek().postTranslate(5.05f, 20f); - canvas.rotate(45f); - currentTransformation.peek().postRotate(45f); - RectF rectangle4Rect = CacheForWarrior.rectangle4Rect; - rectangle4Rect.set(-1.3f, -0.8f, 1.3f, 0.8f); - Path rectangle4Path = CacheForWarrior.rectangle4Path; - rectangle4Path.reset(); - rectangle4Path.moveTo(rectangle4Rect.left, rectangle4Rect.top); - rectangle4Path.lineTo(rectangle4Rect.right, rectangle4Rect.top); - rectangle4Path.lineTo(rectangle4Rect.right, rectangle4Rect.bottom); - rectangle4Path.lineTo(rectangle4Rect.left, rectangle4Rect.bottom); - rectangle4Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor23); - canvas.drawPath(rectangle4Path, paint); - canvas.restore(); - - // Bezier 16 - RectF bezier16Rect = CacheForWarrior.bezier16Rect; - bezier16Rect.set(4.75f, 11.19f, 9.58f, 16.49f); - Path bezier16Path = CacheForWarrior.bezier16Path; - bezier16Path.reset(); - bezier16Path.moveTo(9.58f, 15.5f); - bezier16Path.lineTo(8.06f, 12.2f); - bezier16Path.cubicTo(8f, 12.08f, 7.92f, 11.98f, 7.82f, 11.9f); - bezier16Path.cubicTo(7.7f, 11.8f, 7.55f, 11.72f, 7.38f, 11.68f); - bezier16Path.cubicTo(6.87f, 11.55f, 5.74f, 11.22f, 5.13f, 11.2f); - bezier16Path.cubicTo(4.97f, 11.19f, 4.84f, 11.26f, 4.75f, 11.37f); - bezier16Path.lineTo(6.97f, 13.26f); - bezier16Path.lineTo(8.6f, 16.49f); - bezier16Path.lineTo(9.58f, 15.5f); - bezier16Path.lineTo(9.58f, 15.5f); - bezier16Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier16Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor21); - canvas.drawPath(bezier16Path, paint); - - // Bezier 17 - RectF bezier17Rect = CacheForWarrior.bezier17Rect; - bezier17Rect.set(4.65f, 11.37f, 8.6f, 17.59f); - Path bezier17Path = CacheForWarrior.bezier17Path; - bezier17Path.reset(); - bezier17Path.moveTo(6.97f, 13.26f); - bezier17Path.lineTo(4.75f, 11.37f); - bezier17Path.cubicTo(4.65f, 11.5f, 4.61f, 11.67f, 4.69f, 11.84f); - bezier17Path.lineTo(7.33f, 17.36f); - bezier17Path.cubicTo(7.37f, 17.44f, 7.43f, 17.52f, 7.5f, 17.59f); - bezier17Path.lineTo(8.6f, 16.49f); - bezier17Path.lineTo(6.97f, 13.26f); - bezier17Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier17Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor); - canvas.drawPath(bezier17Path, paint); - - // Bezier 18 - RectF bezier18Rect = CacheForWarrior.bezier18Rect; - bezier18Rect.set(8.6f, 15.5f, 13.89f, 20.33f); - Path bezier18Path = CacheForWarrior.bezier18Path; - bezier18Path.reset(); - bezier18Path.moveTo(13.89f, 19.95f); - bezier18Path.cubicTo(13.86f, 19.34f, 13.54f, 18.22f, 13.4f, 17.7f); - bezier18Path.cubicTo(13.36f, 17.54f, 13.29f, 17.39f, 13.18f, 17.26f); - bezier18Path.cubicTo(13.1f, 17.16f, 13.01f, 17.08f, 12.88f, 17.02f); - bezier18Path.lineTo(9.59f, 15.5f); - bezier18Path.lineTo(9.58f, 15.5f); - bezier18Path.lineTo(8.6f, 16.49f); - bezier18Path.lineTo(11.82f, 18.12f); - bezier18Path.lineTo(13.72f, 20.33f); - bezier18Path.cubicTo(13.83f, 20.25f, 13.9f, 20.11f, 13.89f, 19.95f); - bezier18Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier18Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor22); - canvas.drawPath(bezier18Path, paint); - - // Bezier 19 - RectF bezier19Rect = CacheForWarrior.bezier19Rect; - bezier19Rect.set(7.5f, 16.49f, 13.72f, 20.43f); - Path bezier19Path = CacheForWarrior.bezier19Path; - bezier19Path.reset(); - bezier19Path.moveTo(11.82f, 18.12f); - bezier19Path.lineTo(13.72f, 20.33f); - bezier19Path.cubicTo(13.59f, 20.43f, 13.41f, 20.47f, 13.25f, 20.39f); - bezier19Path.lineTo(7.73f, 17.75f); - bezier19Path.cubicTo(7.65f, 17.71f, 7.57f, 17.65f, 7.5f, 17.58f); - bezier19Path.lineTo(8.6f, 16.49f); - bezier19Path.lineTo(11.82f, 18.12f); - bezier19Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier19Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor23); - canvas.drawPath(bezier19Path, paint); - - // Group - { - RectF group = CacheForWarrior.group; - group.set(12.81f, 5.27f, 16.35f, 12.27f); + // Group 2 + if (darkBackground) { + // Bezier + RectF bezierRect = CacheForWarrior.bezierRect; + bezierRect.set(7.65f, 15.19f, 16.89f, 24.43f); + Path bezierPath = CacheForWarrior.bezierPath; + bezierPath.reset(); + bezierPath.moveTo(12.58f, 19.5f); + bezierPath.lineTo(15.88f, 21.02f); + bezierPath.cubicTo(16.15f, 21.15f, 16.33f, 21.4f, 16.4f, 21.7f); + bezierPath.cubicTo(16.51f, 22.19f, 16.86f, 23.34f, 16.89f, 23.95f); + bezierPath.cubicTo(16.9f, 24.29f, 16.55f, 24.53f, 16.24f, 24.39f); + bezierPath.lineTo(10.73f, 21.75f); + bezierPath.cubicTo(10.56f, 21.66f, 10.42f, 21.52f, 10.33f, 21.35f); + bezierPath.lineTo(7.69f, 15.84f); + bezierPath.cubicTo(7.55f, 15.53f, 7.79f, 15.18f, 8.13f, 15.19f); + bezierPath.cubicTo(8.74f, 15.22f, 9.86f, 15.55f, 10.38f, 15.68f); + bezierPath.cubicTo(10.67f, 15.76f, 10.93f, 15.93f, 11.06f, 16.2f); + bezierPath.lineTo(12.58f, 19.5f); + bezierPath.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezierPath.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor); + canvas.drawPath(bezierPath, paint); + + // Bezier 2 + RectF bezier2Rect = CacheForWarrior.bezier2Rect; + bezier2Rect.set(3.18f, 4.9f, 27.18f, 28.91f); + Path bezier2Path = CacheForWarrior.bezier2Path; + bezier2Path.reset(); + bezier2Path.moveTo(4.6f, 27.48f); + bezier2Path.lineTo(6.02f, 28.91f); + bezier2Path.lineTo(9.71f, 28.62f); + bezier2Path.lineTo(9.9f, 26.19f); + bezier2Path.lineTo(12.02f, 24.07f); + bezier2Path.lineTo(15.88f, 25.91f); + bezier2Path.lineTo(18.76f, 25.13f); + bezier2Path.lineTo(17.55f, 19.93f); + bezier2Path.lineTo(25.63f, 12.39f); + bezier2Path.lineTo(27.18f, 4.91f); + bezier2Path.lineTo(27.17f, 4.91f); + bezier2Path.lineTo(27.18f, 4.91f); + bezier2Path.lineTo(27.18f, 4.9f); + bezier2Path.lineTo(19.7f, 6.45f); + bezier2Path.lineTo(12.16f, 14.53f); + bezier2Path.lineTo(6.95f, 13.32f); + bezier2Path.lineTo(6.18f, 16.2f); + bezier2Path.lineTo(8.01f, 20.06f); + bezier2Path.lineTo(5.89f, 22.18f); + bezier2Path.lineTo(3.47f, 22.37f); + bezier2Path.lineTo(3.18f, 26.06f); + bezier2Path.lineTo(4.6f, 27.48f); + bezier2Path.lineTo(4.6f, 27.48f); + bezier2Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier2Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor20); + canvas.drawPath(bezier2Path, paint); + + // Rectangle canvas.save(); - - // Clip - Path clipPath = CacheForWarrior.clipPath; - clipPath.reset(); - clipPath.moveTo(16.35f, 5.27f); - clipPath.lineTo(12.81f, 8.98f); - clipPath.lineTo(12.81f, 12.27f); - clipPath.lineTo(16.35f, 8.73f); - clipPath.lineTo(16.35f, 5.27f); - clipPath.lineTo(16.35f, 5.27f); - clipPath.close(); - canvas.clipPath(clipPath); - - // Bezier 20 - RectF bezier20Rect = CacheForWarrior.bezier20Rect; - bezier20Rect.set(15.35f, 5f, 15.86f, 12.65f); - Path bezier20Path = CacheForWarrior.bezier20Path; - bezier20Path.reset(); - bezier20Path.moveTo(15.86f, 12.61f); - bezier20Path.lineTo(15.35f, 12.65f); - bezier20Path.cubicTo(15.35f, 12.65f, 15.35f, 7.56f, 15.35f, 5f); - bezier20Path.lineTo(15.86f, 5f); - bezier20Path.cubicTo(15.86f, 7.56f, 15.86f, 12.65f, 15.86f, 12.65f); - bezier20Path.lineTo(15.86f, 12.61f); - bezier20Path.close(); + canvas.translate(9f, 23.05f); + currentTransformation.peek().postTranslate(9f, 23.05f); + canvas.rotate(45f); + currentTransformation.peek().postRotate(45f); + RectF rectangleRect = CacheForWarrior.rectangleRect; + rectangleRect.set(-1.3f, -3.23f, 1.3f, 3.23f); + Path rectanglePath = CacheForWarrior.rectanglePath; + rectanglePath.reset(); + rectanglePath.moveTo(rectangleRect.left, rectangleRect.top); + rectanglePath.lineTo(rectangleRect.right, rectangleRect.top); + rectanglePath.lineTo(rectangleRect.right, rectangleRect.bottom); + rectanglePath.lineTo(rectangleRect.left, rectangleRect.bottom); + rectanglePath.close(); paint.reset(); paint.setFlags(Paint.ANTI_ALIAS_FLAG); paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor21); - canvas.drawPath(bezier20Path, paint); - - // Rectangle 5 - RectF rectangle5Rect = CacheForWarrior.rectangle5Rect; - rectangle5Rect.set(12.8f, 5.88f, 14.3f, 13.03f); - Path rectangle5Path = CacheForWarrior.rectangle5Path; - rectangle5Path.reset(); - rectangle5Path.moveTo(rectangle5Rect.left, rectangle5Rect.top); - rectangle5Path.lineTo(rectangle5Rect.right, rectangle5Rect.top); - rectangle5Path.lineTo(rectangle5Rect.right, rectangle5Rect.bottom); - rectangle5Path.lineTo(rectangle5Rect.left, rectangle5Rect.bottom); - rectangle5Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor21); - canvas.drawPath(rectangle5Path, paint); - + paint.setColor(fillColor); + canvas.drawPath(rectanglePath, paint); canvas.restore(); + + // Bezier 3 + RectF bezier3Rect = CacheForWarrior.bezier3Rect; + bezier3Rect.set(4.76f, 23.66f, 8.42f, 27.32f); + Path bezier3Path = CacheForWarrior.bezier3Path; + bezier3Path.reset(); + bezier3Path.moveTo(4.76f, 25.47f); + bezier3Path.lineTo(4.89f, 23.79f); + bezier3Path.lineTo(6.58f, 23.66f); + bezier3Path.lineTo(8.42f, 25.5f); + bezier3Path.lineTo(8.29f, 27.19f); + bezier3Path.lineTo(6.61f, 27.32f); + bezier3Path.lineTo(4.76f, 25.47f); + bezier3Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier3Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor); + canvas.drawPath(bezier3Path, paint); + + // Bezier 4 + RectF bezier4Rect = CacheForWarrior.bezier4Rect; + bezier4Rect.set(20.67f, 7.02f, 25.05f, 11.25f); + Path bezier4Path = CacheForWarrior.bezier4Path; + bezier4Path.reset(); + bezier4Path.moveTo(20.67f, 7.92f); + bezier4Path.lineTo(20.83f, 11.25f); + bezier4Path.lineTo(25.05f, 7.03f); + bezier4Path.cubicTo(24.98f, 6.95f, 21.79f, 7.32f, 20.67f, 7.92f); + bezier4Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier4Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor41); + canvas.drawPath(bezier4Path, paint); + + // Bezier 5 + RectF bezier5Rect = CacheForWarrior.bezier5Rect; + bezier5Rect.set(11.68f, 7.92f, 20.83f, 18.12f); + Path bezier5Path = CacheForWarrior.bezier5Path; + bezier5Path.reset(); + bezier5Path.moveTo(20.6f, 7.96f); + bezier5Path.lineTo(11.68f, 17.32f); + bezier5Path.lineTo(13.96f, 18.12f); + bezier5Path.lineTo(20.83f, 11.25f); + bezier5Path.lineTo(20.67f, 7.92f); + bezier5Path.cubicTo(20.65f, 7.93f, 20.6f, 7.96f, 20.6f, 7.96f); + bezier5Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier5Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier5Path, paint); + + // Bezier 6 + RectF bezier6Rect = CacheForWarrior.bezier6Rect; + bezier6Rect.set(11.6f, 17.32f, 13.96f, 19.51f); + Path bezier6Path = CacheForWarrior.bezier6Path; + bezier6Path.reset(); + bezier6Path.moveTo(11.68f, 17.32f); + bezier6Path.cubicTo(11.65f, 17.34f, 11.62f, 17.37f, 11.6f, 17.4f); + bezier6Path.lineTo(12.57f, 19.51f); + bezier6Path.lineTo(13.96f, 18.12f); + bezier6Path.lineTo(11.68f, 17.32f); + bezier6Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier6Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier6Path, paint); + + // Bezier 7 + RectF bezier7Rect = CacheForWarrior.bezier7Rect; + bezier7Rect.set(20.83f, 7.03f, 25.06f, 11.41f); + Path bezier7Path = CacheForWarrior.bezier7Path; + bezier7Path.reset(); + bezier7Path.moveTo(24.16f, 11.41f); + bezier7Path.lineTo(20.83f, 11.25f); + bezier7Path.lineTo(25.05f, 7.03f); + bezier7Path.cubicTo(25.13f, 7.1f, 24.76f, 10.29f, 24.16f, 11.41f); + bezier7Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier7Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier7Path, paint); + + // Bezier 8 + RectF bezier8Rect = CacheForWarrior.bezier8Rect; + bezier8Rect.set(13.96f, 11.25f, 24.16f, 20.4f); + Path bezier8Path = CacheForWarrior.bezier8Path; + bezier8Path.reset(); + bezier8Path.moveTo(24.12f, 11.48f); + bezier8Path.lineTo(14.76f, 20.4f); + bezier8Path.lineTo(13.96f, 18.12f); + bezier8Path.lineTo(20.83f, 11.25f); + bezier8Path.lineTo(24.16f, 11.41f); + bezier8Path.cubicTo(24.14f, 11.43f, 24.12f, 11.48f, 24.12f, 11.48f); + bezier8Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier8Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor23); + canvas.drawPath(bezier8Path, paint); + + // Bezier 9 + RectF bezier9Rect = CacheForWarrior.bezier9Rect; + bezier9Rect.set(12.57f, 18.12f, 14.76f, 20.48f); + Path bezier9Path = CacheForWarrior.bezier9Path; + bezier9Path.reset(); + bezier9Path.moveTo(14.76f, 20.4f); + bezier9Path.cubicTo(14.73f, 20.43f, 14.7f, 20.46f, 14.68f, 20.48f); + bezier9Path.lineTo(12.57f, 19.51f); + bezier9Path.lineTo(13.96f, 18.12f); + bezier9Path.lineTo(14.76f, 20.4f); + bezier9Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier9Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor23); + canvas.drawPath(bezier9Path, paint); + + // Bezier 10 + RectF bezier10Rect = CacheForWarrior.bezier10Rect; + bezier10Rect.set(4.89f, 23.66f, 6.58f, 25.09f); + Path bezier10Path = CacheForWarrior.bezier10Path; + bezier10Path.reset(); + bezier10Path.moveTo(6.58f, 23.66f); + bezier10Path.lineTo(6.19f, 25.09f); + bezier10Path.lineTo(4.89f, 23.79f); + bezier10Path.lineTo(6.58f, 23.66f); + bezier10Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier10Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor42); + canvas.drawPath(bezier10Path, paint); + + // Bezier 11 + RectF bezier11Rect = CacheForWarrior.bezier11Rect; + bezier11Rect.set(6.99f, 25.5f, 8.42f, 27.19f); + Path bezier11Path = CacheForWarrior.bezier11Path; + bezier11Path.reset(); + bezier11Path.moveTo(8.42f, 25.5f); + bezier11Path.lineTo(6.99f, 25.89f); + bezier11Path.lineTo(8.29f, 27.19f); + bezier11Path.lineTo(8.42f, 25.5f); + bezier11Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier11Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor42); + canvas.drawPath(bezier11Path, paint); + + // Bezier 12 + RectF bezier12Rect = CacheForWarrior.bezier12Rect; + bezier12Rect.set(6.19f, 23.66f, 8.42f, 25.89f); + Path bezier12Path = CacheForWarrior.bezier12Path; + bezier12Path.reset(); + bezier12Path.moveTo(6.58f, 23.66f); + bezier12Path.lineTo(8.42f, 25.5f); + bezier12Path.lineTo(6.99f, 25.89f); + bezier12Path.lineTo(6.19f, 25.09f); + bezier12Path.lineTo(6.58f, 23.66f); + bezier12Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier12Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor42); + canvas.drawPath(bezier12Path, paint); + + // Bezier 13 + RectF bezier13Rect = CacheForWarrior.bezier13Rect; + bezier13Rect.set(4.76f, 23.79f, 6.19f, 25.48f); + Path bezier13Path = CacheForWarrior.bezier13Path; + bezier13Path.reset(); + bezier13Path.moveTo(4.76f, 25.48f); + bezier13Path.lineTo(6.19f, 25.09f); + bezier13Path.lineTo(4.89f, 23.79f); + bezier13Path.lineTo(4.76f, 25.48f); + bezier13Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier13Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier13Path, paint); + + // Bezier 14 + RectF bezier14Rect = CacheForWarrior.bezier14Rect; + bezier14Rect.set(6.6f, 25.89f, 8.29f, 27.32f); + Path bezier14Path = CacheForWarrior.bezier14Path; + bezier14Path.reset(); + bezier14Path.moveTo(6.6f, 27.32f); + bezier14Path.lineTo(6.99f, 25.89f); + bezier14Path.lineTo(8.29f, 27.19f); + bezier14Path.lineTo(6.6f, 27.32f); + bezier14Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier14Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier14Path, paint); + + // Bezier 15 + RectF bezier15Rect = CacheForWarrior.bezier15Rect; + bezier15Rect.set(4.76f, 25.09f, 6.99f, 27.32f); + Path bezier15Path = CacheForWarrior.bezier15Path; + bezier15Path.reset(); + bezier15Path.moveTo(4.76f, 25.48f); + bezier15Path.lineTo(6.61f, 27.32f); + bezier15Path.lineTo(6.99f, 25.89f); + bezier15Path.lineTo(6.19f, 25.09f); + bezier15Path.lineTo(4.76f, 25.48f); + bezier15Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier15Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier15Path, paint); + + // Rectangle 2 + canvas.save(); + canvas.translate(10.3f, 21.8f); + currentTransformation.peek().postTranslate(10.3f, 21.8f); + canvas.rotate(45f); + currentTransformation.peek().postRotate(45f); + RectF rectangle2Rect = CacheForWarrior.rectangle2Rect; + rectangle2Rect.set(-1.3f, -0.8f, 1.3f, 0.8f); + Path rectangle2Path = CacheForWarrior.rectangle2Path; + rectangle2Path.reset(); + rectangle2Path.moveTo(rectangle2Rect.left, rectangle2Rect.top); + rectangle2Path.lineTo(rectangle2Rect.right, rectangle2Rect.top); + rectangle2Path.lineTo(rectangle2Rect.right, rectangle2Rect.bottom); + rectangle2Path.lineTo(rectangle2Rect.left, rectangle2Rect.bottom); + rectangle2Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor23); + canvas.drawPath(rectangle2Path, paint); + canvas.restore(); + + // Rectangle 3 + canvas.save(); + canvas.translate(9.15f, 22.9f); + currentTransformation.peek().postTranslate(9.15f, 22.9f); + canvas.rotate(45f); + currentTransformation.peek().postRotate(45f); + RectF rectangle3Rect = CacheForWarrior.rectangle3Rect; + rectangle3Rect.set(-1.3f, -0.8f, 1.3f, 0.8f); + Path rectangle3Path = CacheForWarrior.rectangle3Path; + rectangle3Path.reset(); + rectangle3Path.moveTo(rectangle3Rect.left, rectangle3Rect.top); + rectangle3Path.lineTo(rectangle3Rect.right, rectangle3Rect.top); + rectangle3Path.lineTo(rectangle3Rect.right, rectangle3Rect.bottom); + rectangle3Path.lineTo(rectangle3Rect.left, rectangle3Rect.bottom); + rectangle3Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor); + canvas.drawPath(rectangle3Path, paint); + canvas.restore(); + + // Rectangle 4 + canvas.save(); + canvas.translate(8.05f, 24f); + currentTransformation.peek().postTranslate(8.05f, 24f); + canvas.rotate(45f); + currentTransformation.peek().postRotate(45f); + RectF rectangle4Rect = CacheForWarrior.rectangle4Rect; + rectangle4Rect.set(-1.3f, -0.8f, 1.3f, 0.8f); + Path rectangle4Path = CacheForWarrior.rectangle4Path; + rectangle4Path.reset(); + rectangle4Path.moveTo(rectangle4Rect.left, rectangle4Rect.top); + rectangle4Path.lineTo(rectangle4Rect.right, rectangle4Rect.top); + rectangle4Path.lineTo(rectangle4Rect.right, rectangle4Rect.bottom); + rectangle4Path.lineTo(rectangle4Rect.left, rectangle4Rect.bottom); + rectangle4Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor23); + canvas.drawPath(rectangle4Path, paint); + canvas.restore(); + + // Bezier 16 + RectF bezier16Rect = CacheForWarrior.bezier16Rect; + bezier16Rect.set(7.75f, 15.19f, 12.58f, 20.49f); + Path bezier16Path = CacheForWarrior.bezier16Path; + bezier16Path.reset(); + bezier16Path.moveTo(12.58f, 19.5f); + bezier16Path.lineTo(11.06f, 16.2f); + bezier16Path.cubicTo(11f, 16.08f, 10.92f, 15.98f, 10.82f, 15.9f); + bezier16Path.cubicTo(10.7f, 15.8f, 10.55f, 15.72f, 10.38f, 15.68f); + bezier16Path.cubicTo(9.87f, 15.55f, 8.74f, 15.22f, 8.13f, 15.2f); + bezier16Path.cubicTo(7.97f, 15.19f, 7.84f, 15.26f, 7.75f, 15.37f); + bezier16Path.lineTo(9.97f, 17.26f); + bezier16Path.lineTo(11.6f, 20.49f); + bezier16Path.lineTo(12.58f, 19.5f); + bezier16Path.lineTo(12.58f, 19.5f); + bezier16Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier16Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor42); + canvas.drawPath(bezier16Path, paint); + + // Bezier 17 + RectF bezier17Rect = CacheForWarrior.bezier17Rect; + bezier17Rect.set(7.65f, 15.37f, 11.6f, 21.59f); + Path bezier17Path = CacheForWarrior.bezier17Path; + bezier17Path.reset(); + bezier17Path.moveTo(9.97f, 17.26f); + bezier17Path.lineTo(7.75f, 15.37f); + bezier17Path.cubicTo(7.65f, 15.5f, 7.61f, 15.67f, 7.69f, 15.84f); + bezier17Path.lineTo(10.33f, 21.36f); + bezier17Path.cubicTo(10.37f, 21.44f, 10.43f, 21.52f, 10.5f, 21.59f); + bezier17Path.lineTo(11.6f, 20.49f); + bezier17Path.lineTo(9.97f, 17.26f); + bezier17Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier17Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor); + canvas.drawPath(bezier17Path, paint); + + // Bezier 18 + RectF bezier18Rect = CacheForWarrior.bezier18Rect; + bezier18Rect.set(11.6f, 19.5f, 16.89f, 24.33f); + Path bezier18Path = CacheForWarrior.bezier18Path; + bezier18Path.reset(); + bezier18Path.moveTo(16.89f, 23.95f); + bezier18Path.cubicTo(16.86f, 23.34f, 16.54f, 22.22f, 16.4f, 21.7f); + bezier18Path.cubicTo(16.36f, 21.54f, 16.29f, 21.39f, 16.18f, 21.26f); + bezier18Path.cubicTo(16.1f, 21.16f, 16.01f, 21.08f, 15.88f, 21.02f); + bezier18Path.lineTo(12.59f, 19.5f); + bezier18Path.lineTo(12.58f, 19.5f); + bezier18Path.lineTo(11.6f, 20.49f); + bezier18Path.lineTo(14.82f, 22.12f); + bezier18Path.lineTo(16.72f, 24.33f); + bezier18Path.cubicTo(16.83f, 24.25f, 16.9f, 24.11f, 16.89f, 23.95f); + bezier18Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier18Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier18Path, paint); + + // Bezier 19 + RectF bezier19Rect = CacheForWarrior.bezier19Rect; + bezier19Rect.set(10.5f, 20.49f, 16.72f, 24.43f); + Path bezier19Path = CacheForWarrior.bezier19Path; + bezier19Path.reset(); + bezier19Path.moveTo(14.82f, 22.12f); + bezier19Path.lineTo(16.72f, 24.33f); + bezier19Path.cubicTo(16.59f, 24.43f, 16.41f, 24.47f, 16.25f, 24.39f); + bezier19Path.lineTo(10.73f, 21.75f); + bezier19Path.cubicTo(10.65f, 21.71f, 10.57f, 21.65f, 10.5f, 21.58f); + bezier19Path.lineTo(11.6f, 20.49f); + bezier19Path.lineTo(14.82f, 22.12f); + bezier19Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier19Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor23); + canvas.drawPath(bezier19Path, paint); + + // Group 3 + { + RectF group3 = CacheForWarrior.group3; + group3.set(15.81f, 9.27f, 19.35f, 16.27f); + canvas.save(); + + // Clip + Path clipPath = CacheForWarrior.clipPath; + clipPath.reset(); + clipPath.moveTo(19.35f, 9.27f); + clipPath.lineTo(15.81f, 12.98f); + clipPath.lineTo(15.81f, 16.27f); + clipPath.lineTo(19.35f, 12.73f); + clipPath.lineTo(19.35f, 9.27f); + clipPath.lineTo(19.35f, 9.27f); + clipPath.close(); + canvas.clipPath(clipPath); + + // Bezier 20 + RectF bezier20Rect = CacheForWarrior.bezier20Rect; + bezier20Rect.set(18.35f, 9f, 18.86f, 16.65f); + Path bezier20Path = CacheForWarrior.bezier20Path; + bezier20Path.reset(); + bezier20Path.moveTo(18.86f, 16.61f); + bezier20Path.lineTo(18.35f, 16.65f); + bezier20Path.cubicTo(18.35f, 16.65f, 18.35f, 11.56f, 18.35f, 9f); + bezier20Path.lineTo(18.86f, 9f); + bezier20Path.cubicTo(18.86f, 11.56f, 18.86f, 16.65f, 18.86f, 16.65f); + bezier20Path.lineTo(18.86f, 16.61f); + bezier20Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor42); + canvas.drawPath(bezier20Path, paint); + + // Rectangle 5 + RectF rectangle5Rect = CacheForWarrior.rectangle5Rect; + rectangle5Rect.set(15.8f, 9.88f, 17.3f, 17.02f); + Path rectangle5Path = CacheForWarrior.rectangle5Path; + rectangle5Path.reset(); + rectangle5Path.moveTo(rectangle5Rect.left, rectangle5Rect.top); + rectangle5Path.lineTo(rectangle5Rect.right, rectangle5Rect.top); + rectangle5Path.lineTo(rectangle5Rect.right, rectangle5Rect.bottom); + rectangle5Path.lineTo(rectangle5Rect.left, rectangle5Rect.bottom); + rectangle5Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor42); + canvas.drawPath(rectangle5Path, paint); + + canvas.restore(); + } + } + + // Group 4 + if (lightBackground) { + // Bezier 21 + RectF bezier21Rect = CacheForWarrior.bezier21Rect; + bezier21Rect.set(7.65f, 15.19f, 16.89f, 24.43f); + Path bezier21Path = CacheForWarrior.bezier21Path; + bezier21Path.reset(); + bezier21Path.moveTo(12.58f, 19.5f); + bezier21Path.lineTo(15.88f, 21.02f); + bezier21Path.cubicTo(16.15f, 21.15f, 16.33f, 21.4f, 16.4f, 21.7f); + bezier21Path.cubicTo(16.51f, 22.19f, 16.86f, 23.34f, 16.89f, 23.95f); + bezier21Path.cubicTo(16.9f, 24.29f, 16.55f, 24.53f, 16.24f, 24.39f); + bezier21Path.lineTo(10.73f, 21.75f); + bezier21Path.cubicTo(10.56f, 21.66f, 10.42f, 21.52f, 10.33f, 21.35f); + bezier21Path.lineTo(7.69f, 15.84f); + bezier21Path.cubicTo(7.55f, 15.53f, 7.79f, 15.18f, 8.13f, 15.19f); + bezier21Path.cubicTo(8.74f, 15.22f, 9.86f, 15.55f, 10.38f, 15.68f); + bezier21Path.cubicTo(10.67f, 15.76f, 10.93f, 15.93f, 11.06f, 16.2f); + bezier21Path.lineTo(12.58f, 19.5f); + bezier21Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier21Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor); + canvas.drawPath(bezier21Path, paint); + + // Bezier 22 + RectF bezier22Rect = CacheForWarrior.bezier22Rect; + bezier22Rect.set(3.18f, 4.9f, 27.18f, 28.91f); + Path bezier22Path = CacheForWarrior.bezier22Path; + bezier22Path.reset(); + bezier22Path.moveTo(4.6f, 27.48f); + bezier22Path.lineTo(6.02f, 28.91f); + bezier22Path.lineTo(9.71f, 28.62f); + bezier22Path.lineTo(9.9f, 26.19f); + bezier22Path.lineTo(12.02f, 24.07f); + bezier22Path.lineTo(15.88f, 25.91f); + bezier22Path.lineTo(18.76f, 25.13f); + bezier22Path.lineTo(17.55f, 19.93f); + bezier22Path.lineTo(25.63f, 12.39f); + bezier22Path.lineTo(27.18f, 4.91f); + bezier22Path.lineTo(27.17f, 4.91f); + bezier22Path.lineTo(27.18f, 4.91f); + bezier22Path.lineTo(27.18f, 4.9f); + bezier22Path.lineTo(19.7f, 6.45f); + bezier22Path.lineTo(12.16f, 14.53f); + bezier22Path.lineTo(6.95f, 13.32f); + bezier22Path.lineTo(6.18f, 16.2f); + bezier22Path.lineTo(8.01f, 20.06f); + bezier22Path.lineTo(5.89f, 22.18f); + bezier22Path.lineTo(3.47f, 22.37f); + bezier22Path.lineTo(3.18f, 26.06f); + bezier22Path.lineTo(4.6f, 27.48f); + bezier22Path.lineTo(4.6f, 27.48f); + bezier22Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier22Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor43); + canvas.drawPath(bezier22Path, paint); + + // Rectangle 6 + canvas.save(); + canvas.translate(9f, 23.05f); + currentTransformation.peek().postTranslate(9f, 23.05f); + canvas.rotate(45f); + currentTransformation.peek().postRotate(45f); + RectF rectangle6Rect = CacheForWarrior.rectangle6Rect; + rectangle6Rect.set(-1.3f, -3.23f, 1.3f, 3.23f); + Path rectangle6Path = CacheForWarrior.rectangle6Path; + rectangle6Path.reset(); + rectangle6Path.moveTo(rectangle6Rect.left, rectangle6Rect.top); + rectangle6Path.lineTo(rectangle6Rect.right, rectangle6Rect.top); + rectangle6Path.lineTo(rectangle6Rect.right, rectangle6Rect.bottom); + rectangle6Path.lineTo(rectangle6Rect.left, rectangle6Rect.bottom); + rectangle6Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor); + canvas.drawPath(rectangle6Path, paint); + canvas.restore(); + + // Bezier 23 + RectF bezier23Rect = CacheForWarrior.bezier23Rect; + bezier23Rect.set(4.76f, 23.66f, 8.42f, 27.32f); + Path bezier23Path = CacheForWarrior.bezier23Path; + bezier23Path.reset(); + bezier23Path.moveTo(4.76f, 25.47f); + bezier23Path.lineTo(4.89f, 23.79f); + bezier23Path.lineTo(6.58f, 23.66f); + bezier23Path.lineTo(8.42f, 25.5f); + bezier23Path.lineTo(8.29f, 27.19f); + bezier23Path.lineTo(6.61f, 27.32f); + bezier23Path.lineTo(4.76f, 25.47f); + bezier23Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier23Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor); + canvas.drawPath(bezier23Path, paint); + + // Bezier 24 + RectF bezier24Rect = CacheForWarrior.bezier24Rect; + bezier24Rect.set(20.67f, 7.02f, 25.05f, 11.25f); + Path bezier24Path = CacheForWarrior.bezier24Path; + bezier24Path.reset(); + bezier24Path.moveTo(20.67f, 7.92f); + bezier24Path.lineTo(20.83f, 11.25f); + bezier24Path.lineTo(25.05f, 7.03f); + bezier24Path.cubicTo(24.98f, 6.95f, 21.79f, 7.32f, 20.67f, 7.92f); + bezier24Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier24Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor21); + canvas.drawPath(bezier24Path, paint); + + // Bezier 25 + RectF bezier25Rect = CacheForWarrior.bezier25Rect; + bezier25Rect.set(11.68f, 7.92f, 20.83f, 18.12f); + Path bezier25Path = CacheForWarrior.bezier25Path; + bezier25Path.reset(); + bezier25Path.moveTo(20.6f, 7.96f); + bezier25Path.lineTo(11.68f, 17.32f); + bezier25Path.lineTo(13.96f, 18.12f); + bezier25Path.lineTo(20.83f, 11.25f); + bezier25Path.lineTo(20.67f, 7.92f); + bezier25Path.cubicTo(20.65f, 7.93f, 20.6f, 7.96f, 20.6f, 7.96f); + bezier25Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier25Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier25Path, paint); + + // Bezier 26 + RectF bezier26Rect = CacheForWarrior.bezier26Rect; + bezier26Rect.set(11.6f, 17.32f, 13.96f, 19.51f); + Path bezier26Path = CacheForWarrior.bezier26Path; + bezier26Path.reset(); + bezier26Path.moveTo(11.68f, 17.32f); + bezier26Path.cubicTo(11.65f, 17.34f, 11.62f, 17.37f, 11.6f, 17.4f); + bezier26Path.lineTo(12.57f, 19.51f); + bezier26Path.lineTo(13.96f, 18.12f); + bezier26Path.lineTo(11.68f, 17.32f); + bezier26Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier26Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier26Path, paint); + + // Bezier 27 + RectF bezier27Rect = CacheForWarrior.bezier27Rect; + bezier27Rect.set(20.83f, 7.03f, 25.06f, 11.41f); + Path bezier27Path = CacheForWarrior.bezier27Path; + bezier27Path.reset(); + bezier27Path.moveTo(24.16f, 11.41f); + bezier27Path.lineTo(20.83f, 11.25f); + bezier27Path.lineTo(25.05f, 7.03f); + bezier27Path.cubicTo(25.13f, 7.1f, 24.76f, 10.29f, 24.16f, 11.41f); + bezier27Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier27Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier27Path, paint); + + // Bezier 28 + RectF bezier28Rect = CacheForWarrior.bezier28Rect; + bezier28Rect.set(13.96f, 11.25f, 24.16f, 20.4f); + Path bezier28Path = CacheForWarrior.bezier28Path; + bezier28Path.reset(); + bezier28Path.moveTo(24.12f, 11.48f); + bezier28Path.lineTo(14.76f, 20.4f); + bezier28Path.lineTo(13.96f, 18.12f); + bezier28Path.lineTo(20.83f, 11.25f); + bezier28Path.lineTo(24.16f, 11.41f); + bezier28Path.cubicTo(24.14f, 11.43f, 24.12f, 11.48f, 24.12f, 11.48f); + bezier28Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier28Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor23); + canvas.drawPath(bezier28Path, paint); + + // Bezier 29 + RectF bezier29Rect = CacheForWarrior.bezier29Rect; + bezier29Rect.set(12.57f, 18.12f, 14.76f, 20.48f); + Path bezier29Path = CacheForWarrior.bezier29Path; + bezier29Path.reset(); + bezier29Path.moveTo(14.76f, 20.4f); + bezier29Path.cubicTo(14.73f, 20.43f, 14.7f, 20.46f, 14.68f, 20.48f); + bezier29Path.lineTo(12.57f, 19.51f); + bezier29Path.lineTo(13.96f, 18.12f); + bezier29Path.lineTo(14.76f, 20.4f); + bezier29Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier29Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor23); + canvas.drawPath(bezier29Path, paint); + + // Bezier 30 + RectF bezier30Rect = CacheForWarrior.bezier30Rect; + bezier30Rect.set(4.89f, 23.66f, 6.58f, 25.09f); + Path bezier30Path = CacheForWarrior.bezier30Path; + bezier30Path.reset(); + bezier30Path.moveTo(6.58f, 23.66f); + bezier30Path.lineTo(6.19f, 25.09f); + bezier30Path.lineTo(4.89f, 23.79f); + bezier30Path.lineTo(6.58f, 23.66f); + bezier30Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier30Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor21); + canvas.drawPath(bezier30Path, paint); + + // Bezier 31 + RectF bezier31Rect = CacheForWarrior.bezier31Rect; + bezier31Rect.set(6.99f, 25.5f, 8.42f, 27.19f); + Path bezier31Path = CacheForWarrior.bezier31Path; + bezier31Path.reset(); + bezier31Path.moveTo(8.42f, 25.5f); + bezier31Path.lineTo(6.99f, 25.89f); + bezier31Path.lineTo(8.29f, 27.19f); + bezier31Path.lineTo(8.42f, 25.5f); + bezier31Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier31Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor21); + canvas.drawPath(bezier31Path, paint); + + // Bezier 32 + RectF bezier32Rect = CacheForWarrior.bezier32Rect; + bezier32Rect.set(6.19f, 23.66f, 8.42f, 25.89f); + Path bezier32Path = CacheForWarrior.bezier32Path; + bezier32Path.reset(); + bezier32Path.moveTo(6.58f, 23.66f); + bezier32Path.lineTo(8.42f, 25.5f); + bezier32Path.lineTo(6.99f, 25.89f); + bezier32Path.lineTo(6.19f, 25.09f); + bezier32Path.lineTo(6.58f, 23.66f); + bezier32Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier32Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor21); + canvas.drawPath(bezier32Path, paint); + + // Bezier 33 + RectF bezier33Rect = CacheForWarrior.bezier33Rect; + bezier33Rect.set(4.76f, 23.79f, 6.19f, 25.48f); + Path bezier33Path = CacheForWarrior.bezier33Path; + bezier33Path.reset(); + bezier33Path.moveTo(4.76f, 25.48f); + bezier33Path.lineTo(6.19f, 25.09f); + bezier33Path.lineTo(4.89f, 23.79f); + bezier33Path.lineTo(4.76f, 25.48f); + bezier33Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier33Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier33Path, paint); + + // Bezier 34 + RectF bezier34Rect = CacheForWarrior.bezier34Rect; + bezier34Rect.set(6.6f, 25.89f, 8.29f, 27.32f); + Path bezier34Path = CacheForWarrior.bezier34Path; + bezier34Path.reset(); + bezier34Path.moveTo(6.6f, 27.32f); + bezier34Path.lineTo(6.99f, 25.89f); + bezier34Path.lineTo(8.29f, 27.19f); + bezier34Path.lineTo(6.6f, 27.32f); + bezier34Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier34Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier34Path, paint); + + // Bezier 35 + RectF bezier35Rect = CacheForWarrior.bezier35Rect; + bezier35Rect.set(4.76f, 25.09f, 6.99f, 27.32f); + Path bezier35Path = CacheForWarrior.bezier35Path; + bezier35Path.reset(); + bezier35Path.moveTo(4.76f, 25.48f); + bezier35Path.lineTo(6.61f, 27.32f); + bezier35Path.lineTo(6.99f, 25.89f); + bezier35Path.lineTo(6.19f, 25.09f); + bezier35Path.lineTo(4.76f, 25.48f); + bezier35Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier35Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier35Path, paint); + + // Rectangle 7 + canvas.save(); + canvas.translate(10.3f, 21.8f); + currentTransformation.peek().postTranslate(10.3f, 21.8f); + canvas.rotate(45f); + currentTransformation.peek().postRotate(45f); + RectF rectangle7Rect = CacheForWarrior.rectangle7Rect; + rectangle7Rect.set(-1.3f, -0.8f, 1.3f, 0.8f); + Path rectangle7Path = CacheForWarrior.rectangle7Path; + rectangle7Path.reset(); + rectangle7Path.moveTo(rectangle7Rect.left, rectangle7Rect.top); + rectangle7Path.lineTo(rectangle7Rect.right, rectangle7Rect.top); + rectangle7Path.lineTo(rectangle7Rect.right, rectangle7Rect.bottom); + rectangle7Path.lineTo(rectangle7Rect.left, rectangle7Rect.bottom); + rectangle7Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor23); + canvas.drawPath(rectangle7Path, paint); + canvas.restore(); + + // Rectangle 8 + canvas.save(); + canvas.translate(9.15f, 22.9f); + currentTransformation.peek().postTranslate(9.15f, 22.9f); + canvas.rotate(45f); + currentTransformation.peek().postRotate(45f); + RectF rectangle8Rect = CacheForWarrior.rectangle8Rect; + rectangle8Rect.set(-1.3f, -0.8f, 1.3f, 0.8f); + Path rectangle8Path = CacheForWarrior.rectangle8Path; + rectangle8Path.reset(); + rectangle8Path.moveTo(rectangle8Rect.left, rectangle8Rect.top); + rectangle8Path.lineTo(rectangle8Rect.right, rectangle8Rect.top); + rectangle8Path.lineTo(rectangle8Rect.right, rectangle8Rect.bottom); + rectangle8Path.lineTo(rectangle8Rect.left, rectangle8Rect.bottom); + rectangle8Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor); + canvas.drawPath(rectangle8Path, paint); + canvas.restore(); + + // Rectangle 9 + canvas.save(); + canvas.translate(8.05f, 24f); + currentTransformation.peek().postTranslate(8.05f, 24f); + canvas.rotate(45f); + currentTransformation.peek().postRotate(45f); + RectF rectangle9Rect = CacheForWarrior.rectangle9Rect; + rectangle9Rect.set(-1.3f, -0.8f, 1.3f, 0.8f); + Path rectangle9Path = CacheForWarrior.rectangle9Path; + rectangle9Path.reset(); + rectangle9Path.moveTo(rectangle9Rect.left, rectangle9Rect.top); + rectangle9Path.lineTo(rectangle9Rect.right, rectangle9Rect.top); + rectangle9Path.lineTo(rectangle9Rect.right, rectangle9Rect.bottom); + rectangle9Path.lineTo(rectangle9Rect.left, rectangle9Rect.bottom); + rectangle9Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor23); + canvas.drawPath(rectangle9Path, paint); + canvas.restore(); + + // Bezier 36 + RectF bezier36Rect = CacheForWarrior.bezier36Rect; + bezier36Rect.set(7.75f, 15.19f, 12.58f, 20.49f); + Path bezier36Path = CacheForWarrior.bezier36Path; + bezier36Path.reset(); + bezier36Path.moveTo(12.58f, 19.5f); + bezier36Path.lineTo(11.06f, 16.2f); + bezier36Path.cubicTo(11f, 16.08f, 10.92f, 15.98f, 10.82f, 15.9f); + bezier36Path.cubicTo(10.7f, 15.8f, 10.55f, 15.72f, 10.38f, 15.68f); + bezier36Path.cubicTo(9.87f, 15.55f, 8.74f, 15.22f, 8.13f, 15.2f); + bezier36Path.cubicTo(7.97f, 15.19f, 7.84f, 15.26f, 7.75f, 15.37f); + bezier36Path.lineTo(9.97f, 17.26f); + bezier36Path.lineTo(11.6f, 20.49f); + bezier36Path.lineTo(12.58f, 19.5f); + bezier36Path.lineTo(12.58f, 19.5f); + bezier36Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier36Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor21); + canvas.drawPath(bezier36Path, paint); + + // Bezier 37 + RectF bezier37Rect = CacheForWarrior.bezier37Rect; + bezier37Rect.set(7.65f, 15.37f, 11.6f, 21.59f); + Path bezier37Path = CacheForWarrior.bezier37Path; + bezier37Path.reset(); + bezier37Path.moveTo(9.97f, 17.26f); + bezier37Path.lineTo(7.75f, 15.37f); + bezier37Path.cubicTo(7.65f, 15.5f, 7.61f, 15.67f, 7.69f, 15.84f); + bezier37Path.lineTo(10.33f, 21.36f); + bezier37Path.cubicTo(10.37f, 21.44f, 10.43f, 21.52f, 10.5f, 21.59f); + bezier37Path.lineTo(11.6f, 20.49f); + bezier37Path.lineTo(9.97f, 17.26f); + bezier37Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier37Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor); + canvas.drawPath(bezier37Path, paint); + + // Bezier 38 + RectF bezier38Rect = CacheForWarrior.bezier38Rect; + bezier38Rect.set(11.6f, 19.5f, 16.89f, 24.33f); + Path bezier38Path = CacheForWarrior.bezier38Path; + bezier38Path.reset(); + bezier38Path.moveTo(16.89f, 23.95f); + bezier38Path.cubicTo(16.86f, 23.34f, 16.54f, 22.22f, 16.4f, 21.7f); + bezier38Path.cubicTo(16.36f, 21.54f, 16.29f, 21.39f, 16.18f, 21.26f); + bezier38Path.cubicTo(16.1f, 21.16f, 16.01f, 21.08f, 15.88f, 21.02f); + bezier38Path.lineTo(12.59f, 19.5f); + bezier38Path.lineTo(12.58f, 19.5f); + bezier38Path.lineTo(11.6f, 20.49f); + bezier38Path.lineTo(14.82f, 22.12f); + bezier38Path.lineTo(16.72f, 24.33f); + bezier38Path.cubicTo(16.83f, 24.25f, 16.9f, 24.11f, 16.89f, 23.95f); + bezier38Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier38Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier38Path, paint); + + // Bezier 39 + RectF bezier39Rect = CacheForWarrior.bezier39Rect; + bezier39Rect.set(10.5f, 20.49f, 16.72f, 24.43f); + Path bezier39Path = CacheForWarrior.bezier39Path; + bezier39Path.reset(); + bezier39Path.moveTo(14.82f, 22.12f); + bezier39Path.lineTo(16.72f, 24.33f); + bezier39Path.cubicTo(16.59f, 24.43f, 16.41f, 24.47f, 16.25f, 24.39f); + bezier39Path.lineTo(10.73f, 21.75f); + bezier39Path.cubicTo(10.65f, 21.71f, 10.57f, 21.65f, 10.5f, 21.58f); + bezier39Path.lineTo(11.6f, 20.49f); + bezier39Path.lineTo(14.82f, 22.12f); + bezier39Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier39Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor23); + canvas.drawPath(bezier39Path, paint); + + // Group 5 + { + RectF group5 = CacheForWarrior.group5; + group5.set(15.81f, 9.27f, 19.35f, 16.27f); + canvas.save(); + + // Clip 2 + Path clip2Path = CacheForWarrior.clip2Path; + clip2Path.reset(); + clip2Path.moveTo(19.35f, 9.27f); + clip2Path.lineTo(15.81f, 12.98f); + clip2Path.lineTo(15.81f, 16.27f); + clip2Path.lineTo(19.35f, 12.73f); + clip2Path.lineTo(19.35f, 9.27f); + clip2Path.lineTo(19.35f, 9.27f); + clip2Path.close(); + canvas.clipPath(clip2Path); + + // Bezier 40 + RectF bezier40Rect = CacheForWarrior.bezier40Rect; + bezier40Rect.set(18.35f, 9f, 18.86f, 16.65f); + Path bezier40Path = CacheForWarrior.bezier40Path; + bezier40Path.reset(); + bezier40Path.moveTo(18.86f, 16.61f); + bezier40Path.lineTo(18.35f, 16.65f); + bezier40Path.cubicTo(18.35f, 16.65f, 18.35f, 11.56f, 18.35f, 9f); + bezier40Path.lineTo(18.86f, 9f); + bezier40Path.cubicTo(18.86f, 11.56f, 18.86f, 16.65f, 18.86f, 16.65f); + bezier40Path.lineTo(18.86f, 16.61f); + bezier40Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor21); + canvas.drawPath(bezier40Path, paint); + + // Rectangle 10 + RectF rectangle10Rect = CacheForWarrior.rectangle10Rect; + rectangle10Rect.set(15.8f, 9.88f, 17.3f, 17.02f); + Path rectangle10Path = CacheForWarrior.rectangle10Path; + rectangle10Path.reset(); + rectangle10Path.moveTo(rectangle10Rect.left, rectangle10Rect.top); + rectangle10Path.lineTo(rectangle10Rect.right, rectangle10Rect.top); + rectangle10Path.lineTo(rectangle10Rect.right, rectangle10Rect.bottom); + rectangle10Path.lineTo(rectangle10Rect.left, rectangle10Rect.bottom); + rectangle10Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor21); + canvas.drawPath(rectangle10Path, paint); + + canvas.restore(); + } } canvas.restore(); @@ -2082,10 +2693,10 @@ public class HabiticaIcons { public static void drawDifficultyStars(Canvas canvas, RectF targetFrame, ResizingBehavior resizing, float difficulty) { // Local Variables - float _3StarDifficulty = difficulty >= 3f ? 1f : (difficulty >= 2.5f ? 0.5f : 0f); - float _4StarDifficulty = difficulty >= 4f ? 1f : (difficulty >= 3.5f ? 0.5f : 0f); - float _1StarDifficulty = difficulty >= 1f ? 1f : (difficulty >= 0.5f ? 0.5f : 0f); float _2StarDifficulty = difficulty >= 2f ? 1f : (difficulty >= 1.5f ? 0.5f : 0f); + float _1StarDifficulty = difficulty >= 1f ? 1f : (difficulty >= 0.5f ? 0.5f : 0f); + float _4StarDifficulty = difficulty >= 4f ? 1f : (difficulty >= 3.5f ? 0.5f : 0f); + float _3StarDifficulty = difficulty >= 3f ? 1f : (difficulty >= 2.5f ? 0.5f : 0f); // Resize to Target Frame canvas.save(); @@ -2272,8 +2883,8 @@ public class HabiticaIcons { Paint paint = CacheForStarSmall.paint; // Local Colors - int fillColor27 = Color.argb(255, 229, 220, 255); int fillColor26 = Color.argb(102, 229, 220, 255); + int fillColor27 = Color.argb(255, 229, 220, 255); // Resize to Target Frame canvas.save(); @@ -2415,11 +3026,11 @@ public class HabiticaIcons { Paint paint = CacheForStarLarge.paint; // Local Colors - int fillColor31 = Color.argb(191, 229, 220, 255); int fillColor28 = Color.argb(64, 229, 220, 255); int fillColor30 = Color.argb(166, 229, 220, 255); int fillColor29 = Color.argb(128, 229, 220, 255); int fillColor27 = Color.argb(255, 229, 220, 255); + int fillColor31 = Color.argb(191, 229, 220, 255); // Resize to Target Frame canvas.save(); @@ -2820,9 +3431,9 @@ public class HabiticaIcons { // Local Colors int fillColor27 = Color.argb(255, 229, 220, 255); - int fillColor34 = Color.argb(38, 229, 220, 255); int fillColor33 = Color.argb(77, 229, 220, 255); int fillColor32 = Color.argb(153, 229, 220, 255); + int fillColor34 = Color.argb(38, 229, 220, 255); // Resize to Target Frame canvas.save(); @@ -3149,8 +3760,8 @@ public class HabiticaIcons { Paint paint = CacheForAddRemovePin.paint; // Local Colors - int fillColor2 = Color.argb(255, 255, 97, 101); int fillColor36 = Color.argb(255, 97, 51, 180); + int fillColor2 = Color.argb(255, 255, 97, 101); // Local Variables int pinColor = addPin ? fillColor36 : fillColor2; @@ -3351,14 +3962,14 @@ public class HabiticaIcons { Paint paint = CacheForItemIndicator.paint; // Local Colors - int strokeColor2 = Color.argb(255, 189, 168, 255); - int shadowTint = Color.argb(255, 26, 24, 29); - int indicatorLocked = Color.argb(255, 237, 236, 238); int strokeColor = Color.argb(255, 97, 51, 180); + int indicatorLocked = Color.argb(255, 237, 236, 238); int fillColor39 = Color.argb(255, 189, 168, 255); - int fillColor37 = Color.argb(255, 255, 255, 255); - int fillColor40 = Color.argb(255, 165, 161, 172); int fillColor38 = Color.argb(255, 255, 148, 76); + int fillColor37 = Color.argb(255, 255, 255, 255); + int strokeColor2 = Color.argb(255, 189, 168, 255); + int fillColor40 = Color.argb(255, 165, 161, 172); + int shadowTint = Color.argb(255, 26, 24, 29); // Local Shadows PaintCodeShadow shadow = CacheForItemIndicator.shadow.get(PaintCodeColor.colorByChangingAlpha(shadowTint, (int) (Color.alpha(shadowTint) * 0.12f * 255f)), 84f, 1f, 1f); @@ -3647,6 +4258,2270 @@ public class HabiticaIcons { canvas.restore(); } + private static class CacheForWarriorLightBg { + private static RectF originalFrame = new RectF(0f, 0f, 32f, 32f); + private static RectF resizedFrame = new RectF(); + private static RectF symbolRect = new RectF(); + private static RectF symbolTargetRect = new RectF(); + } + + public static void drawWarriorLightBg(Canvas canvas) { + HabiticaIcons.drawWarriorLightBg(canvas, new RectF(0f, 0f, 32f, 32f), ResizingBehavior.AspectFit); + } + + public static void drawWarriorLightBg(Canvas canvas, RectF targetFrame, ResizingBehavior resizing) { + // Resize to Target Frame + canvas.save(); + RectF resizedFrame = CacheForWarriorLightBg.resizedFrame; + HabiticaIcons.resizingBehaviorApply(resizing, CacheForWarriorLightBg.originalFrame, targetFrame, resizedFrame); + canvas.translate(resizedFrame.left, resizedFrame.top); + canvas.scale(resizedFrame.width() / 32f, resizedFrame.height() / 32f); + + // Symbol + RectF symbolRect = CacheForWarriorLightBg.symbolRect; + symbolRect.set(0f, 0f, 32f, 32f); + canvas.save(); + canvas.clipRect(symbolRect); + canvas.translate(symbolRect.left, symbolRect.top); + RectF symbolTargetRect = CacheForWarriorLightBg.symbolTargetRect; + symbolTargetRect.set(0f, 0f, symbolRect.width(), symbolRect.height()); + HabiticaIcons.drawWarrior(canvas, symbolTargetRect, ResizingBehavior.Stretch, false); + canvas.restore(); + + canvas.restore(); + } + + private static class CacheForWarriorDarkBg { + private static RectF originalFrame = new RectF(0f, 0f, 32f, 32f); + private static RectF resizedFrame = new RectF(); + private static RectF symbolRect = new RectF(); + private static RectF symbolTargetRect = new RectF(); + } + + public static void drawWarriorDarkBg(Canvas canvas) { + HabiticaIcons.drawWarriorDarkBg(canvas, new RectF(0f, 0f, 32f, 32f), ResizingBehavior.AspectFit); + } + + public static void drawWarriorDarkBg(Canvas canvas, RectF targetFrame, ResizingBehavior resizing) { + // Resize to Target Frame + canvas.save(); + RectF resizedFrame = CacheForWarriorDarkBg.resizedFrame; + HabiticaIcons.resizingBehaviorApply(resizing, CacheForWarriorDarkBg.originalFrame, targetFrame, resizedFrame); + canvas.translate(resizedFrame.left, resizedFrame.top); + canvas.scale(resizedFrame.width() / 32f, resizedFrame.height() / 32f); + + // Symbol + RectF symbolRect = CacheForWarriorDarkBg.symbolRect; + symbolRect.set(0f, 0f, 32f, 32f); + canvas.save(); + canvas.clipRect(symbolRect); + canvas.translate(symbolRect.left, symbolRect.top); + RectF symbolTargetRect = CacheForWarriorDarkBg.symbolTargetRect; + symbolTargetRect.set(0f, 0f, symbolRect.width(), symbolRect.height()); + HabiticaIcons.drawWarrior(canvas, symbolTargetRect, ResizingBehavior.Stretch, true); + canvas.restore(); + + canvas.restore(); + } + + private static class CacheForRogue { + private static Paint paint = new Paint(); + private static RectF originalFrame = new RectF(0f, 0f, 32f, 32f); + private static RectF resizedFrame = new RectF(); + private static RectF bezierRect = new RectF(); + private static Path bezierPath = new Path(); + private static RectF bezier2Rect = new RectF(); + private static Path bezier2Path = new Path(); + private static RectF bezier3Rect = new RectF(); + private static Path bezier3Path = new Path(); + private static RectF bezier4Rect = new RectF(); + private static Path bezier4Path = new Path(); + private static RectF bezier5Rect = new RectF(); + private static Path bezier5Path = new Path(); + private static RectF bezier6Rect = new RectF(); + private static Path bezier6Path = new Path(); + private static RectF bezier7Rect = new RectF(); + private static Path bezier7Path = new Path(); + private static RectF bezier8Rect = new RectF(); + private static Path bezier8Path = new Path(); + private static RectF bezier9Rect = new RectF(); + private static Path bezier9Path = new Path(); + private static RectF bezier10Rect = new RectF(); + private static Path bezier10Path = new Path(); + private static RectF bezier11Rect = new RectF(); + private static Path bezier11Path = new Path(); + private static RectF starRect = new RectF(); + private static Path starPath = new Path(); + private static RectF star2Rect = new RectF(); + private static Path star2Path = new Path(); + private static RectF bezier12Rect = new RectF(); + private static Path bezier12Path = new Path(); + private static RectF bezier13Rect = new RectF(); + private static Path bezier13Path = new Path(); + private static RectF bezier14Rect = new RectF(); + private static Path bezier14Path = new Path(); + private static RectF bezier15Rect = new RectF(); + private static Path bezier15Path = new Path(); + private static RectF bezier16Rect = new RectF(); + private static Path bezier16Path = new Path(); + private static RectF bezier17Rect = new RectF(); + private static Path bezier17Path = new Path(); + private static RectF bezier18Rect = new RectF(); + private static Path bezier18Path = new Path(); + private static RectF bezier19Rect = new RectF(); + private static Path bezier19Path = new Path(); + private static RectF bezier20Rect = new RectF(); + private static Path bezier20Path = new Path(); + private static RectF bezier21Rect = new RectF(); + private static Path bezier21Path = new Path(); + private static RectF bezier22Rect = new RectF(); + private static Path bezier22Path = new Path(); + private static RectF bezier23Rect = new RectF(); + private static Path bezier23Path = new Path(); + private static RectF star3Rect = new RectF(); + private static Path star3Path = new Path(); + private static RectF bezier24Rect = new RectF(); + private static Path bezier24Path = new Path(); + private static RectF bezier25Rect = new RectF(); + private static Path bezier25Path = new Path(); + private static RectF bezier26Rect = new RectF(); + private static Path bezier26Path = new Path(); + private static RectF bezier27Rect = new RectF(); + private static Path bezier27Path = new Path(); + } + + public static void drawRogue(Canvas canvas, boolean darkBackground) { + HabiticaIcons.drawRogue(canvas, new RectF(0f, 0f, 32f, 32f), ResizingBehavior.AspectFit, darkBackground); + } + + public static void drawRogue(Canvas canvas, RectF targetFrame, ResizingBehavior resizing, boolean darkBackground) { + // General Declarations + Stack currentTransformation = new Stack(); + currentTransformation.push(new Matrix()); + Paint paint = CacheForRogue.paint; + + // Local Colors + int fillColor19 = Color.argb(255, 79, 42, 147); + int fillColor45 = Color.argb(255, 155, 129, 226); + int fillColor48 = Color.argb(255, 137, 102, 199); + int fillColor47 = Color.argb(255, 198, 182, 228); + int fillColor46 = Color.argb(255, 122, 84, 192); + int fillColor36 = Color.argb(255, 97, 51, 180); + int fillColor44 = Color.argb(255, 204, 190, 237); + + // Local Variables + boolean lightBackground = !darkBackground; + + // Resize to Target Frame + canvas.save(); + RectF resizedFrame = CacheForRogue.resizedFrame; + HabiticaIcons.resizingBehaviorApply(resizing, CacheForRogue.originalFrame, targetFrame, resizedFrame); + canvas.translate(resizedFrame.left, resizedFrame.top); + canvas.scale(resizedFrame.width() / 32f, resizedFrame.height() / 32f); + + // Group 2 + if (darkBackground) { + // Bezier + RectF bezierRect = CacheForRogue.bezierRect; + bezierRect.set(5f, 6f, 26.6f, 27.3f); + Path bezierPath = CacheForRogue.bezierPath; + bezierPath.reset(); + bezierPath.moveTo(24.35f, 22.01f); + bezierPath.lineTo(20.83f, 18.48f); + bezierPath.cubicTo(20.78f, 18.3f, 20.74f, 18.12f, 20.69f, 17.94f); + bezierPath.lineTo(25.48f, 9.27f); + bezierPath.lineTo(26.2f, 6.1f); + bezierPath.lineTo(22.99f, 6.85f); + bezierPath.lineTo(15.9f, 10.76f); + bezierPath.lineTo(8.56f, 6.72f); + bezierPath.lineTo(5.4f, 6f); + bezierPath.lineTo(6.15f, 9.21f); + bezierPath.lineTo(10.94f, 17.9f); + bezierPath.cubicTo(10.89f, 18.13f, 10.83f, 18.36f, 10.77f, 18.59f); + bezierPath.lineTo(7.25f, 22.11f); + bezierPath.lineTo(5f, 21.7f); + bezierPath.lineTo(5.88f, 26.43f); + bezierPath.lineTo(10.61f, 27.3f); + bezierPath.lineTo(10.19f, 25.06f); + bezierPath.lineTo(13.72f, 21.53f); + bezierPath.cubicTo(14.5f, 21.34f, 15.3f, 21.14f, 16.01f, 20.97f); + bezierPath.cubicTo(16.61f, 21.11f, 17.25f, 21.27f, 17.89f, 21.43f); + bezierPath.lineTo(21.41f, 24.95f); + bezierPath.lineTo(20.99f, 27.2f); + bezierPath.lineTo(25.72f, 26.32f); + bezierPath.lineTo(26.6f, 21.59f); + bezierPath.lineTo(24.35f, 22.01f); + bezierPath.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezierPath.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor44); + canvas.drawPath(bezierPath, paint); + + // Bezier 2 + RectF bezier2Rect = CacheForRogue.bezier2Rect; + bezier2Rect.set(7.21f, 7.84f, 16.8f, 18.7f); + Path bezier2Path = CacheForRogue.bezier2Path; + bezier2Path.reset(); + bezier2Path.moveTo(12.83f, 18.3f); + bezier2Path.cubicTo(12.93f, 18.49f, 13.04f, 18.62f, 13.14f, 18.7f); + bezier2Path.lineTo(16.8f, 17.4f); + bezier2Path.lineTo(7.24f, 7.84f); + bezier2Path.cubicTo(7.16f, 7.93f, 7.27f, 8.19f, 7.43f, 8.5f); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier2Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor45); + canvas.drawPath(bezier2Path, paint); + + // Bezier 3 + RectF bezier3Rect = CacheForRogue.bezier3Rect; + bezier3Rect.set(13.14f, 17.4f, 19.07f, 20.1f); + Path bezier3Path = CacheForRogue.bezier3Path; + bezier3Path.reset(); + bezier3Path.moveTo(13.14f, 18.71f); + bezier3Path.cubicTo(13.33f, 18.86f, 13.51f, 18.89f, 13.71f, 18.92f); + bezier3Path.cubicTo(14f, 18.96f, 18.63f, 20.1f, 18.63f, 20.1f); + bezier3Path.lineTo(19.07f, 19.67f); + bezier3Path.lineTo(16.8f, 17.4f); + bezier3Path.lineTo(13.14f, 18.71f); + bezier3Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier3Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor46); + canvas.drawPath(bezier3Path, paint); + + // Bezier 4 + RectF bezier4Rect = CacheForRogue.bezier4Rect; + bezier4Rect.set(7.24f, 7.81f, 18.11f, 17.4f); + Path bezier4Path = CacheForRogue.bezier4Path; + bezier4Path.reset(); + bezier4Path.moveTo(17.7f, 13.43f); + bezier4Path.cubicTo(17.89f, 13.53f, 18.02f, 13.63f, 18.11f, 13.74f); + bezier4Path.lineTo(16.8f, 17.4f); + bezier4Path.lineTo(7.24f, 7.84f); + bezier4Path.cubicTo(7.33f, 7.76f, 7.58f, 7.86f, 7.89f, 8.01f); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier4Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor36); + canvas.drawPath(bezier4Path, paint); + + // Bezier 5 + RectF bezier5Rect = CacheForRogue.bezier5Rect; + bezier5Rect.set(16.8f, 13.74f, 19.5f, 19.67f); + Path bezier5Path = CacheForRogue.bezier5Path; + bezier5Path.reset(); + bezier5Path.moveTo(18.11f, 13.74f); + bezier5Path.cubicTo(18.27f, 13.93f, 18.29f, 14.11f, 18.32f, 14.31f); + bezier5Path.cubicTo(18.36f, 14.6f, 19.5f, 19.23f, 19.5f, 19.23f); + bezier5Path.lineTo(19.07f, 19.67f); + bezier5Path.lineTo(16.8f, 17.4f); + bezier5Path.lineTo(18.11f, 13.74f); + bezier5Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier5Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor19); + canvas.drawPath(bezier5Path, paint); + + // Bezier 6 + RectF bezier6Rect = CacheForRogue.bezier6Rect; + bezier6Rect.set(20.38f, 20.33f, 21.32f, 22.57f); + Path bezier6Path = CacheForRogue.bezier6Path; + bezier6Path.reset(); + bezier6Path.moveTo(21.1f, 22.57f); + bezier6Path.lineTo(20.38f, 21.86f); + bezier6Path.lineTo(20.61f, 20.33f); + bezier6Path.lineTo(21.32f, 21.05f); + bezier6Path.lineTo(21.1f, 22.57f); + bezier6Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier6Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor46); + canvas.drawPath(bezier6Path, paint); + + // Bezier 7 + RectF bezier7Rect = CacheForRogue.bezier7Rect; + bezier7Rect.set(21.82f, 21.77f, 22.76f, 24f); + Path bezier7Path = CacheForRogue.bezier7Path; + bezier7Path.reset(); + bezier7Path.moveTo(22.53f, 24f); + bezier7Path.lineTo(21.82f, 23.29f); + bezier7Path.lineTo(22.04f, 21.77f); + bezier7Path.lineTo(22.76f, 22.48f); + bezier7Path.lineTo(22.53f, 24f); + bezier7Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier7Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor46); + canvas.drawPath(bezier7Path, paint); + + // Bezier 8 + RectF bezier8Rect = CacheForRogue.bezier8Rect; + bezier8Rect.set(18.63f, 19.23f, 19.89f, 21.14f); + Path bezier8Path = CacheForRogue.bezier8Path; + bezier8Path.reset(); + bezier8Path.moveTo(19.5f, 19.23f); + bezier8Path.lineTo(19.89f, 19.62f); + bezier8Path.lineTo(19.67f, 21.14f); + bezier8Path.lineTo(18.63f, 20.1f); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier8Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor46); + canvas.drawPath(bezier8Path, paint); + + // Bezier 9 + RectF bezier9Rect = CacheForRogue.bezier9Rect; + bezier9Rect.set(19.67f, 19.62f, 20.61f, 21.86f); + Path bezier9Path = CacheForRogue.bezier9Path; + bezier9Path.reset(); + bezier9Path.moveTo(20.38f, 21.86f); + bezier9Path.lineTo(19.67f, 21.14f); + bezier9Path.lineTo(19.89f, 19.62f); + bezier9Path.lineTo(20.61f, 20.33f); + bezier9Path.lineTo(20.38f, 21.86f); + bezier9Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier9Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor19); + canvas.drawPath(bezier9Path, paint); + + // Bezier 10 + RectF bezier10Rect = CacheForRogue.bezier10Rect; + bezier10Rect.set(21.1f, 21.05f, 22.04f, 23.29f); + Path bezier10Path = CacheForRogue.bezier10Path; + bezier10Path.reset(); + bezier10Path.moveTo(21.82f, 23.29f); + bezier10Path.lineTo(21.1f, 22.57f); + bezier10Path.lineTo(21.32f, 21.05f); + bezier10Path.lineTo(22.04f, 21.77f); + bezier10Path.lineTo(21.82f, 23.29f); + bezier10Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier10Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor19); + canvas.drawPath(bezier10Path, paint); + + // Bezier 11 + RectF bezier11Rect = CacheForRogue.bezier11Rect; + bezier11Rect.set(22.53f, 22.48f, 24.12f, 24.72f); + Path bezier11Path = CacheForRogue.bezier11Path; + bezier11Path.reset(); + bezier11Path.moveTo(23.25f, 24.72f); + bezier11Path.lineTo(22.53f, 24f); + bezier11Path.lineTo(22.76f, 22.48f); + bezier11Path.lineTo(24.12f, 23.85f); + bezier11Path.lineTo(23.25f, 24.72f); + bezier11Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier11Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor19); + canvas.drawPath(bezier11Path, paint); + + // Star + canvas.save(); + canvas.translate(19.05f, 19.65f); + currentTransformation.peek().postTranslate(19.05f, 19.65f); + canvas.rotate(-135f); + currentTransformation.peek().postRotate(-135f); + RectF starRect = CacheForRogue.starRect; + starRect.set(-0.6f, -0.6f, 0.6f, 0.6f); + Path starPath = CacheForRogue.starPath; + starPath.reset(); + starPath.moveTo(0f, -0.6f); + starPath.lineTo(0.5f, 0f); + starPath.lineTo(0f, 0.6f); + starPath.lineTo(-0.5f, 0f); + starPath.lineTo(0f, -0.6f); + starPath.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor45); + canvas.drawPath(starPath, paint); + canvas.restore(); + + // Star 2 + canvas.save(); + canvas.translate(23.8f, 24.4f); + currentTransformation.peek().postTranslate(23.8f, 24.4f); + canvas.rotate(-135f); + currentTransformation.peek().postRotate(-135f); + RectF star2Rect = CacheForRogue.star2Rect; + star2Rect.set(-1.4f, -1.4f, 1.4f, 1.4f); + Path star2Path = CacheForRogue.star2Path; + star2Path.reset(); + star2Path.moveTo(0f, -1.4f); + star2Path.lineTo(0.95f, 0f); + star2Path.lineTo(0f, 1.4f); + star2Path.lineTo(-0.95f, 0f); + star2Path.lineTo(0f, -1.4f); + star2Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor45); + canvas.drawPath(star2Path, paint); + canvas.restore(); + } + + // Group 3 + if (lightBackground) { + // Bezier 12 + RectF bezier12Rect = CacheForRogue.bezier12Rect; + bezier12Rect.set(4.86f, 6.36f, 26.06f, 27.55f); + Path bezier12Path = CacheForRogue.bezier12Path; + bezier12Path.reset(); + bezier12Path.moveTo(7.11f, 22.37f); + bezier12Path.lineTo(10.64f, 18.84f); + bezier12Path.cubicTo(11.14f, 16.79f, 11.66f, 14.65f, 11.7f, 14.42f); + bezier12Path.cubicTo(11.73f, 14.18f, 11.81f, 13.65f, 12.24f, 13.15f); + bezier12Path.cubicTo(12.46f, 12.89f, 12.73f, 12.68f, 13.06f, 12.5f); + bezier12Path.lineTo(22.86f, 7.1f); + bezier12Path.lineTo(26.06f, 6.36f); + bezier12Path.lineTo(25.35f, 9.52f); + bezier12Path.lineTo(19.92f, 19.36f); + bezier12Path.cubicTo(19.74f, 19.68f, 19.55f, 19.93f, 19.32f, 20.14f); + bezier12Path.lineTo(19.28f, 20.17f); + bezier12Path.cubicTo(18.77f, 20.6f, 18.26f, 20.68f, 17.98f, 20.72f); + bezier12Path.cubicTo(17.77f, 20.76f, 15.58f, 21.29f, 13.58f, 21.78f); + bezier12Path.lineTo(10.05f, 25.31f); + bezier12Path.lineTo(10.47f, 27.55f); + bezier12Path.lineTo(5.74f, 26.68f); + bezier12Path.lineTo(4.86f, 21.95f); + bezier12Path.lineTo(7.11f, 22.37f); + bezier12Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier12Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor19); + canvas.drawPath(bezier12Path, paint); + + // Bezier 13 + RectF bezier13Rect = CacheForRogue.bezier13Rect; + bezier13Rect.set(5.27f, 6.25f, 26.46f, 27.45f); + Path bezier13Path = CacheForRogue.bezier13Path; + bezier13Path.reset(); + bezier13Path.moveTo(21.27f, 25.2f); + bezier13Path.lineTo(17.75f, 21.68f); + bezier13Path.cubicTo(15.7f, 21.18f, 13.55f, 20.66f, 13.33f, 20.61f); + bezier13Path.cubicTo(13.09f, 20.58f, 12.56f, 20.5f, 12.06f, 20.07f); + bezier13Path.cubicTo(11.8f, 19.86f, 11.59f, 19.59f, 11.41f, 19.25f); + bezier13Path.lineTo(6.01f, 9.46f); + bezier13Path.lineTo(5.27f, 6.25f); + bezier13Path.lineTo(8.43f, 6.97f); + bezier13Path.lineTo(18.27f, 12.4f); + bezier13Path.cubicTo(18.58f, 12.57f, 18.84f, 12.77f, 19.04f, 13f); + bezier13Path.lineTo(19.08f, 13.04f); + bezier13Path.cubicTo(19.51f, 13.55f, 19.59f, 14.06f, 19.63f, 14.33f); + bezier13Path.cubicTo(19.67f, 14.55f, 20.2f, 16.74f, 20.69f, 18.74f); + bezier13Path.lineTo(24.22f, 22.26f); + bezier13Path.lineTo(26.46f, 21.85f); + bezier13Path.lineTo(25.59f, 26.58f); + bezier13Path.lineTo(20.86f, 27.45f); + bezier13Path.lineTo(21.27f, 25.2f); + bezier13Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier13Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor19); + canvas.drawPath(bezier13Path, paint); + + // Bezier 14 + RectF bezier14Rect = CacheForRogue.bezier14Rect; + bezier14Rect.set(7.08f, 8.09f, 16.66f, 18.96f); + Path bezier14Path = CacheForRogue.bezier14Path; + bezier14Path.reset(); + bezier14Path.moveTo(12.69f, 18.55f); + bezier14Path.cubicTo(12.8f, 18.74f, 12.9f, 18.87f, 13f, 18.96f); + bezier14Path.lineTo(16.66f, 17.65f); + bezier14Path.lineTo(7.11f, 8.09f); + bezier14Path.cubicTo(7.03f, 8.18f, 7.13f, 8.44f, 7.29f, 8.75f); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier14Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor47); + canvas.drawPath(bezier14Path, paint); + + // Bezier 15 + RectF bezier15Rect = CacheForRogue.bezier15Rect; + bezier15Rect.set(13f, 17.65f, 18.93f, 20.36f); + Path bezier15Path = CacheForRogue.bezier15Path; + bezier15Path.reset(); + bezier15Path.moveTo(13f, 18.96f); + bezier15Path.cubicTo(13.19f, 19.12f, 13.38f, 19.14f, 13.57f, 19.17f); + bezier15Path.cubicTo(13.87f, 19.22f, 18.49f, 20.36f, 18.49f, 20.36f); + bezier15Path.lineTo(18.93f, 19.92f); + bezier15Path.lineTo(16.66f, 17.65f); + bezier15Path.lineTo(13f, 18.96f); + bezier15Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier15Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor48); + canvas.drawPath(bezier15Path, paint); + + // Bezier 16 + RectF bezier16Rect = CacheForRogue.bezier16Rect; + bezier16Rect.set(7.11f, 8.07f, 17.97f, 17.65f); + Path bezier16Path = CacheForRogue.bezier16Path; + bezier16Path.reset(); + bezier16Path.moveTo(17.56f, 13.68f); + bezier16Path.cubicTo(17.75f, 13.79f, 17.88f, 13.89f, 17.97f, 13.99f); + bezier16Path.lineTo(16.67f, 17.65f); + bezier16Path.lineTo(7.11f, 8.09f); + bezier16Path.cubicTo(7.19f, 8.02f, 7.45f, 8.11f, 7.75f, 8.27f); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier16Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor46); + canvas.drawPath(bezier16Path, paint); + + // Bezier 17 + RectF bezier17Rect = CacheForRogue.bezier17Rect; + bezier17Rect.set(16.67f, 13.99f, 19.37f, 19.92f); + Path bezier17Path = CacheForRogue.bezier17Path; + bezier17Path.reset(); + bezier17Path.moveTo(17.97f, 13.99f); + bezier17Path.cubicTo(18.13f, 14.18f, 18.16f, 14.37f, 18.18f, 14.56f); + bezier17Path.cubicTo(18.23f, 14.86f, 19.37f, 19.48f, 19.37f, 19.48f); + bezier17Path.lineTo(18.93f, 19.92f); + bezier17Path.lineTo(16.67f, 17.65f); + bezier17Path.lineTo(17.97f, 13.99f); + bezier17Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier17Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor36); + canvas.drawPath(bezier17Path, paint); + + // Bezier 18 + RectF bezier18Rect = CacheForRogue.bezier18Rect; + bezier18Rect.set(20.25f, 20.59f, 21.19f, 22.82f); + Path bezier18Path = CacheForRogue.bezier18Path; + bezier18Path.reset(); + bezier18Path.moveTo(20.96f, 22.82f); + bezier18Path.lineTo(20.25f, 22.11f); + bezier18Path.lineTo(20.47f, 20.59f); + bezier18Path.lineTo(21.19f, 21.3f); + bezier18Path.lineTo(20.96f, 22.82f); + bezier18Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier18Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor48); + canvas.drawPath(bezier18Path, paint); + + // Bezier 19 + RectF bezier19Rect = CacheForRogue.bezier19Rect; + bezier19Rect.set(21.68f, 22.02f, 22.62f, 24.26f); + Path bezier19Path = CacheForRogue.bezier19Path; + bezier19Path.reset(); + bezier19Path.moveTo(22.4f, 24.26f); + bezier19Path.lineTo(21.68f, 23.54f); + bezier19Path.lineTo(21.9f, 22.02f); + bezier19Path.lineTo(22.62f, 22.73f); + bezier19Path.lineTo(22.4f, 24.26f); + bezier19Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier19Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor48); + canvas.drawPath(bezier19Path, paint); + + // Bezier 20 + RectF bezier20Rect = CacheForRogue.bezier20Rect; + bezier20Rect.set(18.49f, 19.48f, 19.76f, 21.39f); + Path bezier20Path = CacheForRogue.bezier20Path; + bezier20Path.reset(); + bezier20Path.moveTo(19.37f, 19.48f); + bezier20Path.lineTo(19.76f, 19.87f); + bezier20Path.lineTo(19.53f, 21.39f); + bezier20Path.lineTo(18.49f, 20.36f); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier20Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor48); + canvas.drawPath(bezier20Path, paint); + + // Bezier 21 + RectF bezier21Rect = CacheForRogue.bezier21Rect; + bezier21Rect.set(19.53f, 19.87f, 20.47f, 22.11f); + Path bezier21Path = CacheForRogue.bezier21Path; + bezier21Path.reset(); + bezier21Path.moveTo(20.25f, 22.11f); + bezier21Path.lineTo(19.53f, 21.39f); + bezier21Path.lineTo(19.76f, 19.87f); + bezier21Path.lineTo(20.47f, 20.59f); + bezier21Path.lineTo(20.25f, 22.11f); + bezier21Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier21Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor36); + canvas.drawPath(bezier21Path, paint); + + // Bezier 22 + RectF bezier22Rect = CacheForRogue.bezier22Rect; + bezier22Rect.set(20.96f, 21.3f, 21.9f, 23.54f); + Path bezier22Path = CacheForRogue.bezier22Path; + bezier22Path.reset(); + bezier22Path.moveTo(21.68f, 23.54f); + bezier22Path.lineTo(20.96f, 22.82f); + bezier22Path.lineTo(21.19f, 21.3f); + bezier22Path.lineTo(21.9f, 22.02f); + bezier22Path.lineTo(21.68f, 23.54f); + bezier22Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier22Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor36); + canvas.drawPath(bezier22Path, paint); + + // Bezier 23 + RectF bezier23Rect = CacheForRogue.bezier23Rect; + bezier23Rect.set(22.4f, 22.73f, 23.98f, 24.97f); + Path bezier23Path = CacheForRogue.bezier23Path; + bezier23Path.reset(); + bezier23Path.moveTo(23.11f, 24.97f); + bezier23Path.lineTo(22.4f, 24.26f); + bezier23Path.lineTo(22.62f, 22.73f); + bezier23Path.lineTo(23.98f, 24.1f); + bezier23Path.lineTo(23.11f, 24.97f); + bezier23Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier23Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor36); + canvas.drawPath(bezier23Path, paint); + + // Star 3 + canvas.save(); + canvas.translate(18.95f, 19.9f); + currentTransformation.peek().postTranslate(18.95f, 19.9f); + canvas.rotate(-135f); + currentTransformation.peek().postRotate(-135f); + RectF star3Rect = CacheForRogue.star3Rect; + star3Rect.set(-0.6f, -0.6f, 0.6f, 0.6f); + Path star3Path = CacheForRogue.star3Path; + star3Path.reset(); + star3Path.moveTo(0f, -0.6f); + star3Path.lineTo(0.5f, 0f); + star3Path.lineTo(0f, 0.6f); + star3Path.lineTo(-0.5f, 0f); + star3Path.lineTo(0f, -0.6f); + star3Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor47); + canvas.drawPath(star3Path, paint); + canvas.restore(); + + // Bezier 24 + RectF bezier24Rect = CacheForRogue.bezier24Rect; + bezier24Rect.set(22.69f, 23.98f, 23.66f, 25.62f); + Path bezier24Path = CacheForRogue.bezier24Path; + bezier24Path.reset(); + bezier24Path.moveTo(22.99f, 23.98f); + bezier24Path.lineTo(22.69f, 25.62f); + bezier24Path.lineTo(22.69f, 25.62f); + bezier24Path.lineTo(23.66f, 24.65f); + bezier24Path.lineTo(22.99f, 23.98f); + bezier24Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier24Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor47); + canvas.drawPath(bezier24Path, paint); + + // Bezier 25 + RectF bezier25Rect = CacheForRogue.bezier25Rect; + bezier25Rect.set(22.99f, 23.67f, 24.64f, 24.65f); + Path bezier25Path = CacheForRogue.bezier25Path; + bezier25Path.reset(); + bezier25Path.moveTo(24.64f, 23.67f); + bezier25Path.lineTo(22.99f, 23.98f); + bezier25Path.lineTo(23.66f, 24.65f); + bezier25Path.lineTo(24.64f, 23.67f); + bezier25Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier25Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor47); + canvas.drawPath(bezier25Path, paint); + + // Bezier 26 + RectF bezier26Rect = CacheForRogue.bezier26Rect; + bezier26Rect.set(22.69f, 24.65f, 24.33f, 25.62f); + Path bezier26Path = CacheForRogue.bezier26Path; + bezier26Path.reset(); + bezier26Path.moveTo(23.66f, 24.65f); + bezier26Path.lineTo(22.69f, 25.62f); + bezier26Path.lineTo(24.33f, 25.32f); + bezier26Path.lineTo(23.66f, 24.65f); + bezier26Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier26Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor47); + canvas.drawPath(bezier26Path, paint); + + // Bezier 27 + RectF bezier27Rect = CacheForRogue.bezier27Rect; + bezier27Rect.set(23.66f, 23.67f, 24.64f, 25.32f); + Path bezier27Path = CacheForRogue.bezier27Path; + bezier27Path.reset(); + bezier27Path.moveTo(24.33f, 25.32f); + bezier27Path.lineTo(24.64f, 23.67f); + bezier27Path.lineTo(24.64f, 23.67f); + bezier27Path.lineTo(23.66f, 24.65f); + bezier27Path.lineTo(24.33f, 25.32f); + bezier27Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier27Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor47); + canvas.drawPath(bezier27Path, paint); + } + + canvas.restore(); + } + + private static class CacheForRogueLightBg { + private static RectF originalFrame = new RectF(0f, 0f, 32f, 32f); + private static RectF resizedFrame = new RectF(); + private static RectF symbolRect = new RectF(); + private static RectF symbolTargetRect = new RectF(); + } + + public static void drawRogueLightBg(Canvas canvas) { + HabiticaIcons.drawRogueLightBg(canvas, new RectF(0f, 0f, 32f, 32f), ResizingBehavior.AspectFit); + } + + public static void drawRogueLightBg(Canvas canvas, RectF targetFrame, ResizingBehavior resizing) { + // Resize to Target Frame + canvas.save(); + RectF resizedFrame = CacheForRogueLightBg.resizedFrame; + HabiticaIcons.resizingBehaviorApply(resizing, CacheForRogueLightBg.originalFrame, targetFrame, resizedFrame); + canvas.translate(resizedFrame.left, resizedFrame.top); + canvas.scale(resizedFrame.width() / 32f, resizedFrame.height() / 32f); + + // Symbol + RectF symbolRect = CacheForRogueLightBg.symbolRect; + symbolRect.set(0f, 0f, 32f, 32f); + canvas.save(); + canvas.clipRect(symbolRect); + canvas.translate(symbolRect.left, symbolRect.top); + RectF symbolTargetRect = CacheForRogueLightBg.symbolTargetRect; + symbolTargetRect.set(0f, 0f, symbolRect.width(), symbolRect.height()); + HabiticaIcons.drawRogue(canvas, symbolTargetRect, ResizingBehavior.Stretch, false); + canvas.restore(); + + canvas.restore(); + } + + private static class CacheForRogueDarkBg { + private static RectF originalFrame = new RectF(0f, 0f, 32f, 32f); + private static RectF resizedFrame = new RectF(); + private static RectF symbolRect = new RectF(); + private static RectF symbolTargetRect = new RectF(); + } + + public static void drawRogueDarkBg(Canvas canvas) { + HabiticaIcons.drawRogueDarkBg(canvas, new RectF(0f, 0f, 32f, 32f), ResizingBehavior.AspectFit); + } + + public static void drawRogueDarkBg(Canvas canvas, RectF targetFrame, ResizingBehavior resizing) { + // Resize to Target Frame + canvas.save(); + RectF resizedFrame = CacheForRogueDarkBg.resizedFrame; + HabiticaIcons.resizingBehaviorApply(resizing, CacheForRogueDarkBg.originalFrame, targetFrame, resizedFrame); + canvas.translate(resizedFrame.left, resizedFrame.top); + canvas.scale(resizedFrame.width() / 32f, resizedFrame.height() / 32f); + + // Symbol + RectF symbolRect = CacheForRogueDarkBg.symbolRect; + symbolRect.set(0f, 0f, 32f, 32f); + canvas.save(); + canvas.clipRect(symbolRect); + canvas.translate(symbolRect.left, symbolRect.top); + RectF symbolTargetRect = CacheForRogueDarkBg.symbolTargetRect; + symbolTargetRect.set(0f, 0f, symbolRect.width(), symbolRect.height()); + HabiticaIcons.drawRogue(canvas, symbolTargetRect, ResizingBehavior.Stretch, true); + canvas.restore(); + + canvas.restore(); + } + + private static class CacheForHealer { + private static Paint paint = new Paint(); + private static RectF originalFrame = new RectF(0f, 0f, 32f, 32f); + private static RectF resizedFrame = new RectF(); + private static RectF bezierRect = new RectF(); + private static Path bezierPath = new Path(); + private static RectF bezier2Rect = new RectF(); + private static Path bezier2Path = new Path(); + private static RectF bezier3Rect = new RectF(); + private static Path bezier3Path = new Path(); + private static RectF bezier4Rect = new RectF(); + private static Path bezier4Path = new Path(); + private static RectF bezier5Rect = new RectF(); + private static Path bezier5Path = new Path(); + private static RectF bezier6Rect = new RectF(); + private static Path bezier6Path = new Path(); + private static RectF bezier7Rect = new RectF(); + private static Path bezier7Path = new Path(); + private static RectF bezier8Rect = new RectF(); + private static Path bezier8Path = new Path(); + private static RectF bezier9Rect = new RectF(); + private static Path bezier9Path = new Path(); + private static RectF bezier10Rect = new RectF(); + private static Path bezier10Path = new Path(); + private static RectF bezier11Rect = new RectF(); + private static Path bezier11Path = new Path(); + private static RectF bezier12Rect = new RectF(); + private static Path bezier12Path = new Path(); + private static RectF bezier13Rect = new RectF(); + private static Path bezier13Path = new Path(); + private static RectF bezier14Rect = new RectF(); + private static Path bezier14Path = new Path(); + private static RectF bezier15Rect = new RectF(); + private static Path bezier15Path = new Path(); + private static RectF bezier16Rect = new RectF(); + private static Path bezier16Path = new Path(); + private static RectF bezier17Rect = new RectF(); + private static Path bezier17Path = new Path(); + private static RectF bezier18Rect = new RectF(); + private static Path bezier18Path = new Path(); + private static RectF bezier19Rect = new RectF(); + private static Path bezier19Path = new Path(); + private static RectF bezier20Rect = new RectF(); + private static Path bezier20Path = new Path(); + private static RectF bezier21Rect = new RectF(); + private static Path bezier21Path = new Path(); + private static RectF bezier22Rect = new RectF(); + private static Path bezier22Path = new Path(); + private static RectF bezier23Rect = new RectF(); + private static Path bezier23Path = new Path(); + private static RectF bezier24Rect = new RectF(); + private static Path bezier24Path = new Path(); + private static RectF bezier25Rect = new RectF(); + private static Path bezier25Path = new Path(); + private static RectF bezier26Rect = new RectF(); + private static Path bezier26Path = new Path(); + private static RectF bezier27Rect = new RectF(); + private static Path bezier27Path = new Path(); + private static RectF bezier28Rect = new RectF(); + private static Path bezier28Path = new Path(); + private static RectF bezier29Rect = new RectF(); + private static Path bezier29Path = new Path(); + private static RectF bezier30Rect = new RectF(); + private static Path bezier30Path = new Path(); + private static RectF bezier31Rect = new RectF(); + private static Path bezier31Path = new Path(); + private static RectF bezier32Rect = new RectF(); + private static Path bezier32Path = new Path(); + } + + public static void drawHealer(Canvas canvas, boolean darkBackground) { + HabiticaIcons.drawHealer(canvas, new RectF(0f, 0f, 32f, 32f), ResizingBehavior.AspectFit, darkBackground); + } + + public static void drawHealer(Canvas canvas, RectF targetFrame, ResizingBehavior resizing, boolean darkBackground) { + // General Declarations + Paint paint = CacheForHealer.paint; + + // Local Colors + int fillColor55 = Color.argb(255, 253, 198, 126); + int fillColor57 = Color.argb(255, 255, 221, 181); + int fillColor52 = Color.argb(255, 253, 198, 126); + int fillColor51 = Color.argb(255, 229, 144, 37); + int fillColor59 = Color.argb(255, 255, 228, 201); + int fillColor49 = Color.argb(255, 255, 215, 168); + int fillColor10 = Color.argb(255, 255, 166, 35); + int fillColor58 = Color.argb(255, 229, 144, 37); + int fillColor56 = Color.argb(255, 255, 166, 35); + int fillColor53 = Color.argb(255, 206, 129, 41); + int fillColor54 = Color.argb(255, 207, 130, 41); + int fillColor50 = Color.argb(255, 226, 158, 69); + + // Local Variables + boolean lightBackground = !darkBackground; + + // Resize to Target Frame + canvas.save(); + RectF resizedFrame = CacheForHealer.resizedFrame; + HabiticaIcons.resizingBehaviorApply(resizing, CacheForHealer.originalFrame, targetFrame, resizedFrame); + canvas.translate(resizedFrame.left, resizedFrame.top); + canvas.scale(resizedFrame.width() / 32f, resizedFrame.height() / 32f); + + // Group 2 + if (darkBackground) { + // Bezier + RectF bezierRect = CacheForHealer.bezierRect; + bezierRect.set(4.98f, 4.79f, 25.53f, 28.79f); + Path bezierPath = CacheForHealer.bezierPath; + bezierPath.reset(); + bezierPath.moveTo(13.91f, 28.2f); + bezierPath.lineTo(13.81f, 28.15f); + bezierPath.cubicTo(11.14f, 26.81f, 8.32f, 25.14f, 6.58f, 21.85f); + bezierPath.cubicTo(4.62f, 18.12f, 5f, 12.18f, 5.04f, 11.51f); + bezierPath.cubicTo(5.08f, 10.99f, 5.24f, 9.71f, 5.24f, 9.71f); + bezierPath.cubicTo(5.24f, 9.71f, 6.25f, 9.26f, 6.75f, 9.03f); + bezierPath.lineTo(13.97f, 5.37f); + bezierPath.cubicTo(14.37f, 5.18f, 15.26f, 4.79f, 15.26f, 4.79f); + bezierPath.cubicTo(15.26f, 4.79f, 16.14f, 5.18f, 16.54f, 5.37f); + bezierPath.lineTo(23.76f, 9.02f); + bezierPath.cubicTo(24.26f, 9.26f, 25.35f, 9.71f, 25.35f, 9.71f); + bezierPath.cubicTo(25.35f, 9.71f, 25.43f, 10.99f, 25.47f, 11.51f); + bezierPath.cubicTo(25.52f, 12.18f, 25.89f, 18.12f, 23.93f, 21.85f); + bezierPath.cubicTo(22.19f, 25.14f, 19.37f, 26.81f, 16.7f, 28.15f); + bezierPath.lineTo(16.6f, 28.2f); + bezierPath.cubicTo(16.19f, 28.41f, 15.26f, 28.79f, 15.26f, 28.79f); + bezierPath.cubicTo(15.26f, 28.79f, 14.32f, 28.41f, 13.91f, 28.2f); + bezierPath.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezierPath.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor49); + canvas.drawPath(bezierPath, paint); + + // Bezier 2 + RectF bezier2Rect = CacheForHealer.bezier2Rect; + bezier2Rect.set(7.21f, 7.04f, 15.26f, 12.42f); + Path bezier2Path = CacheForHealer.bezier2Path; + bezier2Path.reset(); + bezier2Path.moveTo(9.05f, 12.41f); + bezier2Path.lineTo(14.81f, 9.44f); + bezier2Path.cubicTo(14.95f, 9.38f, 15.1f, 9.34f, 15.26f, 9.34f); + bezier2Path.lineTo(15.26f, 7.04f); + bezier2Path.cubicTo(15.1f, 7.04f, 14.95f, 7.07f, 14.81f, 7.14f); + bezier2Path.lineTo(7.59f, 10.79f); + bezier2Path.cubicTo(7.43f, 10.86f, 7.31f, 10.97f, 7.21f, 11.1f); + bezier2Path.lineTo(9.05f, 12.42f); + bezier2Path.lineTo(9.05f, 12.41f); + bezier2Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier2Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor50); + canvas.drawPath(bezier2Path, paint); + + // Bezier 3 + RectF bezier3Rect = CacheForHealer.bezier3Rect; + bezier3Rect.set(6.94f, 7.03f, 15.26f, 26.56f); + Path bezier3Path = CacheForHealer.bezier3Path; + bezier3Path.reset(); + bezier3Path.moveTo(14.81f, 7.13f); + bezier3Path.lineTo(7.59f, 10.78f); + bezier3Path.cubicTo(7.25f, 10.94f, 7.02f, 11.27f, 6.99f, 11.65f); + bezier3Path.cubicTo(6.97f, 11.89f, 6.57f, 17.63f, 8.31f, 20.93f); + bezier3Path.cubicTo(9.76f, 23.67f, 12.14f, 25.12f, 14.69f, 26.4f); + bezier3Path.lineTo(14.79f, 26.45f); + bezier3Path.cubicTo(14.93f, 26.52f, 15.09f, 26.56f, 15.26f, 26.56f); + bezier3Path.lineTo(15.26f, 26.56f); + bezier3Path.lineTo(15.26f, 7.03f); + bezier3Path.cubicTo(15.1f, 7.03f, 14.95f, 7.06f, 14.81f, 7.13f); + bezier3Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier3Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor10); + canvas.drawPath(bezier3Path, paint); + + // Bezier 4 + RectF bezier4Rect = CacheForHealer.bezier4Rect; + bezier4Rect.set(15.26f, 7.03f, 23.57f, 26.56f); + Path bezier4Path = CacheForHealer.bezier4Path; + bezier4Path.reset(); + bezier4Path.moveTo(15.82f, 26.4f); + bezier4Path.cubicTo(18.37f, 25.12f, 20.75f, 23.67f, 22.2f, 20.93f); + bezier4Path.cubicTo(23.94f, 17.63f, 23.54f, 11.89f, 23.52f, 11.65f); + bezier4Path.cubicTo(23.49f, 11.27f, 23.26f, 10.94f, 22.92f, 10.78f); + bezier4Path.lineTo(15.7f, 7.13f); + bezier4Path.cubicTo(15.56f, 7.06f, 15.41f, 7.03f, 15.26f, 7.03f); + bezier4Path.lineTo(15.26f, 26.56f); + bezier4Path.cubicTo(15.42f, 26.56f, 15.58f, 26.52f, 15.73f, 26.45f); + bezier4Path.lineTo(15.82f, 26.4f); + bezier4Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier4Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor51); + canvas.drawPath(bezier4Path, paint); + + // Bezier 5 + RectF bezier5Rect = CacheForHealer.bezier5Rect; + bezier5Rect.set(7.21f, 7.03f, 15.26f, 12.41f); + Path bezier5Path = CacheForHealer.bezier5Path; + bezier5Path.reset(); + bezier5Path.moveTo(9.05f, 12.4f); + bezier5Path.lineTo(14.81f, 9.44f); + bezier5Path.cubicTo(14.95f, 9.37f, 15.1f, 9.34f, 15.26f, 9.34f); + bezier5Path.lineTo(15.26f, 7.03f); + bezier5Path.cubicTo(15.1f, 7.03f, 14.95f, 7.06f, 14.81f, 7.13f); + bezier5Path.lineTo(7.59f, 10.78f); + bezier5Path.cubicTo(7.43f, 10.85f, 7.31f, 10.96f, 7.21f, 11.1f); + bezier5Path.lineTo(9.05f, 12.41f); + bezier5Path.lineTo(9.05f, 12.4f); + bezier5Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier5Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor52); + canvas.drawPath(bezier5Path, paint); + + // Bezier 6 + RectF bezier6Rect = CacheForHealer.bezier6Rect; + bezier6Rect.set(15.26f, 7.03f, 23.3f, 12.41f); + Path bezier6Path = CacheForHealer.bezier6Path; + bezier6Path.reset(); + bezier6Path.moveTo(22.92f, 10.78f); + bezier6Path.lineTo(15.7f, 7.13f); + bezier6Path.cubicTo(15.56f, 7.06f, 15.41f, 7.03f, 15.26f, 7.03f); + bezier6Path.lineTo(15.26f, 9.34f); + bezier6Path.cubicTo(15.41f, 9.34f, 15.56f, 9.37f, 15.7f, 9.44f); + bezier6Path.lineTo(21.47f, 12.41f); + bezier6Path.lineTo(21.47f, 12.41f); + bezier6Path.lineTo(23.3f, 11.1f); + bezier6Path.cubicTo(23.2f, 10.96f, 23.08f, 10.85f, 22.92f, 10.78f); + bezier6Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier6Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor10); + canvas.drawPath(bezier6Path, paint); + + // Bezier 7 + RectF bezier7Rect = CacheForHealer.bezier7Rect; + bezier7Rect.set(6.94f, 11.1f, 15.26f, 26.56f); + Path bezier7Path = CacheForHealer.bezier7Path; + bezier7Path.reset(); + bezier7Path.moveTo(15.05f, 24.24f); + bezier7Path.cubicTo(12.86f, 23.13f, 11.2f, 21.93f, 10.16f, 19.95f); + bezier7Path.cubicTo(8.99f, 17.74f, 9f, 13.89f, 9.05f, 12.41f); + bezier7Path.lineTo(7.21f, 11.1f); + bezier7Path.cubicTo(7.09f, 11.25f, 7.01f, 11.44f, 6.99f, 11.65f); + bezier7Path.cubicTo(6.98f, 11.76f, 6.9f, 12.95f, 6.96f, 14.53f); + bezier7Path.cubicTo(7.04f, 16.51f, 7.34f, 19.09f, 8.31f, 20.93f); + bezier7Path.cubicTo(9.76f, 23.67f, 12.14f, 25.12f, 14.69f, 26.4f); + bezier7Path.lineTo(14.79f, 26.45f); + bezier7Path.cubicTo(14.93f, 26.52f, 15.09f, 26.56f, 15.26f, 26.56f); + bezier7Path.lineTo(15.26f, 26.56f); + bezier7Path.lineTo(15.26f, 24.3f); + bezier7Path.cubicTo(15.2f, 24.3f, 15.15f, 24.28f, 15.05f, 24.24f); + bezier7Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier7Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor51); + canvas.drawPath(bezier7Path, paint); + + // Bezier 8 + RectF bezier8Rect = CacheForHealer.bezier8Rect; + bezier8Rect.set(15.26f, 11.09f, 23.57f, 26.56f); + Path bezier8Path = CacheForHealer.bezier8Path; + bezier8Path.reset(); + bezier8Path.moveTo(20.35f, 19.95f); + bezier8Path.cubicTo(19.31f, 21.93f, 17.64f, 23.13f, 15.45f, 24.24f); + bezier8Path.cubicTo(15.35f, 24.28f, 15.31f, 24.3f, 15.26f, 24.3f); + bezier8Path.lineTo(15.26f, 26.56f); + bezier8Path.cubicTo(15.42f, 26.56f, 15.58f, 26.52f, 15.72f, 26.45f); + bezier8Path.lineTo(15.82f, 26.4f); + bezier8Path.cubicTo(18.37f, 25.12f, 20.75f, 23.67f, 22.2f, 20.93f); + bezier8Path.cubicTo(23.17f, 19.09f, 23.47f, 16.51f, 23.55f, 14.53f); + bezier8Path.cubicTo(23.61f, 12.95f, 23.53f, 11.76f, 23.52f, 11.65f); + bezier8Path.cubicTo(23.5f, 11.44f, 23.42f, 11.25f, 23.3f, 11.09f); + bezier8Path.lineTo(21.47f, 12.41f); + bezier8Path.cubicTo(21.53f, 14.25f, 21.43f, 17.91f, 20.35f, 19.95f); + bezier8Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier8Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor53); + canvas.drawPath(bezier8Path, paint); + + // Bezier 9 + RectF bezier9Rect = CacheForHealer.bezier9Rect; + bezier9Rect.set(10.81f, 15.31f, 15.26f, 16.79f); + Path bezier9Path = CacheForHealer.bezier9Path; + bezier9Path.reset(); + bezier9Path.moveTo(10.81f, 16.79f); + bezier9Path.lineTo(13.77f, 15.31f); + bezier9Path.lineTo(15.26f, 16.79f); + bezier9Path.lineTo(10.81f, 16.79f); + bezier9Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier9Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor52); + canvas.drawPath(bezier9Path, paint); + + // Bezier 10 + RectF bezier10Rect = CacheForHealer.bezier10Rect; + bezier10Rect.set(13.77f, 16.79f, 15.26f, 21.24f); + Path bezier10Path = CacheForHealer.bezier10Path; + bezier10Path.reset(); + bezier10Path.moveTo(15.26f, 21.24f); + bezier10Path.lineTo(13.77f, 18.28f); + bezier10Path.lineTo(15.26f, 16.79f); + bezier10Path.lineTo(15.26f, 21.24f); + bezier10Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier10Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor52); + canvas.drawPath(bezier10Path, paint); + + // Bezier 11 + RectF bezier11Rect = CacheForHealer.bezier11Rect; + bezier11Rect.set(15.26f, 16.79f, 19.7f, 18.28f); + Path bezier11Path = CacheForHealer.bezier11Path; + bezier11Path.reset(); + bezier11Path.moveTo(19.7f, 16.79f); + bezier11Path.lineTo(16.74f, 18.28f); + bezier11Path.lineTo(15.26f, 16.79f); + bezier11Path.lineTo(19.7f, 16.79f); + bezier11Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier11Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor53); + canvas.drawPath(bezier11Path, paint); + + // Bezier 12 + RectF bezier12Rect = CacheForHealer.bezier12Rect; + bezier12Rect.set(15.26f, 12.35f, 16.74f, 16.79f); + Path bezier12Path = CacheForHealer.bezier12Path; + bezier12Path.reset(); + bezier12Path.moveTo(15.26f, 12.35f); + bezier12Path.lineTo(16.74f, 15.31f); + bezier12Path.lineTo(15.26f, 16.79f); + bezier12Path.lineTo(15.26f, 12.35f); + bezier12Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier12Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor53); + canvas.drawPath(bezier12Path, paint); + + // Bezier 13 + RectF bezier13Rect = CacheForHealer.bezier13Rect; + bezier13Rect.set(15.26f, 15.31f, 19.7f, 16.79f); + Path bezier13Path = CacheForHealer.bezier13Path; + bezier13Path.reset(); + bezier13Path.moveTo(19.7f, 16.79f); + bezier13Path.lineTo(16.74f, 15.31f); + bezier13Path.lineTo(15.26f, 16.79f); + bezier13Path.lineTo(19.7f, 16.79f); + bezier13Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier13Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor53); + canvas.drawPath(bezier13Path, paint); + + // Bezier 14 + RectF bezier14Rect = CacheForHealer.bezier14Rect; + bezier14Rect.set(15.26f, 16.79f, 16.74f, 21.24f); + Path bezier14Path = CacheForHealer.bezier14Path; + bezier14Path.reset(); + bezier14Path.moveTo(15.26f, 21.24f); + bezier14Path.lineTo(16.74f, 18.28f); + bezier14Path.lineTo(15.26f, 16.79f); + bezier14Path.lineTo(15.26f, 21.24f); + bezier14Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier14Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor53); + canvas.drawPath(bezier14Path, paint); + + // Bezier 15 + RectF bezier15Rect = CacheForHealer.bezier15Rect; + bezier15Rect.set(10.81f, 16.79f, 15.26f, 18.28f); + Path bezier15Path = CacheForHealer.bezier15Path; + bezier15Path.reset(); + bezier15Path.moveTo(10.81f, 16.79f); + bezier15Path.lineTo(13.77f, 18.28f); + bezier15Path.lineTo(15.26f, 16.79f); + bezier15Path.lineTo(10.81f, 16.79f); + bezier15Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier15Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor52); + canvas.drawPath(bezier15Path, paint); + + // Bezier 16 + RectF bezier16Rect = CacheForHealer.bezier16Rect; + bezier16Rect.set(13.77f, 12.35f, 15.26f, 16.79f); + Path bezier16Path = CacheForHealer.bezier16Path; + bezier16Path.reset(); + bezier16Path.moveTo(15.26f, 12.35f); + bezier16Path.lineTo(13.77f, 15.31f); + bezier16Path.lineTo(15.26f, 16.79f); + bezier16Path.lineTo(15.26f, 12.35f); + bezier16Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier16Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor52); + canvas.drawPath(bezier16Path, paint); + } + + // Group 3 + if (lightBackground) { + // Bezier 17 + RectF bezier17Rect = CacheForHealer.bezier17Rect; + bezier17Rect.set(4.98f, 4.79f, 25.53f, 28.79f); + Path bezier17Path = CacheForHealer.bezier17Path; + bezier17Path.reset(); + bezier17Path.moveTo(15.26f, 28.79f); + bezier17Path.cubicTo(15.26f, 28.79f, 14.32f, 28.41f, 13.91f, 28.2f); + bezier17Path.lineTo(13.81f, 28.15f); + bezier17Path.cubicTo(11.14f, 26.81f, 8.32f, 25.14f, 6.58f, 21.85f); + bezier17Path.cubicTo(4.62f, 18.12f, 5f, 12.18f, 5.04f, 11.51f); + bezier17Path.cubicTo(5.08f, 10.99f, 5.24f, 9.71f, 5.24f, 9.71f); + bezier17Path.cubicTo(5.24f, 9.71f, 6.25f, 9.26f, 6.75f, 9.03f); + bezier17Path.lineTo(13.97f, 5.37f); + bezier17Path.cubicTo(14.37f, 5.18f, 15.26f, 4.79f, 15.26f, 4.79f); + bezier17Path.cubicTo(15.26f, 4.79f, 16.14f, 5.18f, 16.54f, 5.37f); + bezier17Path.lineTo(23.76f, 9.02f); + bezier17Path.cubicTo(24.26f, 9.26f, 25.35f, 9.71f, 25.35f, 9.71f); + bezier17Path.cubicTo(25.35f, 9.71f, 25.43f, 10.99f, 25.47f, 11.51f); + bezier17Path.cubicTo(25.52f, 12.18f, 25.89f, 18.12f, 23.93f, 21.85f); + bezier17Path.cubicTo(22.19f, 25.14f, 19.37f, 26.81f, 16.7f, 28.15f); + bezier17Path.lineTo(16.6f, 28.2f); + bezier17Path.cubicTo(16.19f, 28.41f, 15.26f, 28.79f, 15.26f, 28.79f); + bezier17Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier17Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor54); + canvas.drawPath(bezier17Path, paint); + + // Bezier 18 + RectF bezier18Rect = CacheForHealer.bezier18Rect; + bezier18Rect.set(7.21f, 7.04f, 15.26f, 12.42f); + Path bezier18Path = CacheForHealer.bezier18Path; + bezier18Path.reset(); + bezier18Path.moveTo(9.05f, 12.41f); + bezier18Path.lineTo(14.81f, 9.44f); + bezier18Path.cubicTo(14.95f, 9.38f, 15.1f, 9.34f, 15.26f, 9.34f); + bezier18Path.lineTo(15.26f, 7.04f); + bezier18Path.cubicTo(15.1f, 7.04f, 14.95f, 7.07f, 14.81f, 7.14f); + bezier18Path.lineTo(7.59f, 10.79f); + bezier18Path.cubicTo(7.43f, 10.86f, 7.31f, 10.97f, 7.21f, 11.1f); + bezier18Path.lineTo(9.05f, 12.42f); + bezier18Path.lineTo(9.05f, 12.41f); + bezier18Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier18Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor50); + canvas.drawPath(bezier18Path, paint); + + // Bezier 19 + RectF bezier19Rect = CacheForHealer.bezier19Rect; + bezier19Rect.set(6.94f, 7.03f, 15.26f, 26.56f); + Path bezier19Path = CacheForHealer.bezier19Path; + bezier19Path.reset(); + bezier19Path.moveTo(14.81f, 7.13f); + bezier19Path.lineTo(7.59f, 10.78f); + bezier19Path.cubicTo(7.25f, 10.94f, 7.02f, 11.27f, 6.99f, 11.65f); + bezier19Path.cubicTo(6.97f, 11.89f, 6.57f, 17.63f, 8.31f, 20.93f); + bezier19Path.cubicTo(9.76f, 23.67f, 12.14f, 25.12f, 14.69f, 26.4f); + bezier19Path.lineTo(14.79f, 26.45f); + bezier19Path.cubicTo(14.93f, 26.52f, 15.09f, 26.56f, 15.26f, 26.56f); + bezier19Path.lineTo(15.26f, 26.56f); + bezier19Path.lineTo(15.26f, 7.03f); + bezier19Path.cubicTo(15.1f, 7.03f, 14.95f, 7.06f, 14.81f, 7.13f); + bezier19Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier19Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor55); + canvas.drawPath(bezier19Path, paint); + + // Bezier 20 + RectF bezier20Rect = CacheForHealer.bezier20Rect; + bezier20Rect.set(15.26f, 7.03f, 23.57f, 26.56f); + Path bezier20Path = CacheForHealer.bezier20Path; + bezier20Path.reset(); + bezier20Path.moveTo(15.73f, 26.45f); + bezier20Path.lineTo(15.82f, 26.4f); + bezier20Path.cubicTo(18.37f, 25.12f, 20.75f, 23.67f, 22.2f, 20.93f); + bezier20Path.cubicTo(23.94f, 17.63f, 23.54f, 11.89f, 23.52f, 11.65f); + bezier20Path.cubicTo(23.49f, 11.27f, 23.26f, 10.94f, 22.92f, 10.78f); + bezier20Path.lineTo(15.7f, 7.13f); + bezier20Path.cubicTo(15.56f, 7.06f, 15.41f, 7.03f, 15.26f, 7.03f); + bezier20Path.lineTo(15.26f, 26.56f); + bezier20Path.cubicTo(15.42f, 26.56f, 15.58f, 26.52f, 15.73f, 26.45f); + bezier20Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier20Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor56); + canvas.drawPath(bezier20Path, paint); + + // Bezier 21 + RectF bezier21Rect = CacheForHealer.bezier21Rect; + bezier21Rect.set(7.21f, 7.03f, 15.26f, 12.41f); + Path bezier21Path = CacheForHealer.bezier21Path; + bezier21Path.reset(); + bezier21Path.moveTo(9.05f, 12.4f); + bezier21Path.lineTo(14.81f, 9.44f); + bezier21Path.cubicTo(14.95f, 9.37f, 15.1f, 9.34f, 15.26f, 9.34f); + bezier21Path.lineTo(15.26f, 7.03f); + bezier21Path.cubicTo(15.1f, 7.03f, 14.95f, 7.06f, 14.81f, 7.13f); + bezier21Path.lineTo(7.59f, 10.78f); + bezier21Path.cubicTo(7.43f, 10.85f, 7.31f, 10.96f, 7.21f, 11.1f); + bezier21Path.lineTo(9.05f, 12.41f); + bezier21Path.lineTo(9.05f, 12.4f); + bezier21Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier21Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor57); + canvas.drawPath(bezier21Path, paint); + + // Bezier 22 + RectF bezier22Rect = CacheForHealer.bezier22Rect; + bezier22Rect.set(15.26f, 7.03f, 23.3f, 12.41f); + Path bezier22Path = CacheForHealer.bezier22Path; + bezier22Path.reset(); + bezier22Path.moveTo(22.92f, 10.78f); + bezier22Path.lineTo(15.7f, 7.13f); + bezier22Path.cubicTo(15.56f, 7.06f, 15.41f, 7.03f, 15.26f, 7.03f); + bezier22Path.lineTo(15.26f, 9.34f); + bezier22Path.cubicTo(15.41f, 9.34f, 15.56f, 9.37f, 15.7f, 9.44f); + bezier22Path.lineTo(21.47f, 12.41f); + bezier22Path.lineTo(21.47f, 12.41f); + bezier22Path.lineTo(23.3f, 11.1f); + bezier22Path.cubicTo(23.2f, 10.96f, 23.08f, 10.85f, 22.92f, 10.78f); + bezier22Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier22Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor55); + canvas.drawPath(bezier22Path, paint); + + // Bezier 23 + RectF bezier23Rect = CacheForHealer.bezier23Rect; + bezier23Rect.set(6.94f, 11.1f, 15.26f, 26.56f); + Path bezier23Path = CacheForHealer.bezier23Path; + bezier23Path.reset(); + bezier23Path.moveTo(15.05f, 24.24f); + bezier23Path.cubicTo(12.86f, 23.13f, 11.2f, 21.93f, 10.16f, 19.95f); + bezier23Path.cubicTo(8.99f, 17.74f, 9f, 13.89f, 9.05f, 12.41f); + bezier23Path.lineTo(7.21f, 11.1f); + bezier23Path.cubicTo(7.09f, 11.25f, 7.01f, 11.44f, 6.99f, 11.65f); + bezier23Path.cubicTo(6.98f, 11.76f, 6.9f, 12.95f, 6.96f, 14.53f); + bezier23Path.cubicTo(7.04f, 16.51f, 7.34f, 19.09f, 8.31f, 20.93f); + bezier23Path.cubicTo(9.76f, 23.67f, 12.14f, 25.12f, 14.69f, 26.4f); + bezier23Path.lineTo(14.79f, 26.45f); + bezier23Path.cubicTo(14.93f, 26.52f, 15.09f, 26.56f, 15.26f, 26.56f); + bezier23Path.lineTo(15.26f, 26.56f); + bezier23Path.lineTo(15.26f, 24.3f); + bezier23Path.cubicTo(15.2f, 24.3f, 15.15f, 24.28f, 15.05f, 24.24f); + bezier23Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier23Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor56); + canvas.drawPath(bezier23Path, paint); + + // Bezier 24 + RectF bezier24Rect = CacheForHealer.bezier24Rect; + bezier24Rect.set(15.26f, 11.09f, 23.57f, 26.56f); + Path bezier24Path = CacheForHealer.bezier24Path; + bezier24Path.reset(); + bezier24Path.moveTo(20.35f, 19.95f); + bezier24Path.cubicTo(19.31f, 21.93f, 17.64f, 23.13f, 15.45f, 24.24f); + bezier24Path.cubicTo(15.35f, 24.28f, 15.31f, 24.3f, 15.26f, 24.3f); + bezier24Path.lineTo(15.26f, 26.56f); + bezier24Path.cubicTo(15.42f, 26.56f, 15.58f, 26.52f, 15.72f, 26.45f); + bezier24Path.lineTo(15.82f, 26.4f); + bezier24Path.cubicTo(18.37f, 25.12f, 20.75f, 23.67f, 22.2f, 20.93f); + bezier24Path.cubicTo(23.17f, 19.09f, 23.47f, 16.51f, 23.55f, 14.53f); + bezier24Path.cubicTo(23.61f, 12.95f, 23.53f, 11.76f, 23.52f, 11.65f); + bezier24Path.cubicTo(23.5f, 11.44f, 23.42f, 11.25f, 23.3f, 11.09f); + bezier24Path.lineTo(21.47f, 12.41f); + bezier24Path.cubicTo(21.53f, 14.25f, 21.43f, 17.91f, 20.35f, 19.95f); + bezier24Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier24Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor58); + canvas.drawPath(bezier24Path, paint); + + // Bezier 25 + RectF bezier25Rect = CacheForHealer.bezier25Rect; + bezier25Rect.set(10.81f, 15.31f, 15.26f, 16.79f); + Path bezier25Path = CacheForHealer.bezier25Path; + bezier25Path.reset(); + bezier25Path.moveTo(10.81f, 16.79f); + bezier25Path.lineTo(13.77f, 15.31f); + bezier25Path.lineTo(15.26f, 16.79f); + bezier25Path.lineTo(10.81f, 16.79f); + bezier25Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier25Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor59); + canvas.drawPath(bezier25Path, paint); + + // Bezier 26 + RectF bezier26Rect = CacheForHealer.bezier26Rect; + bezier26Rect.set(13.77f, 16.79f, 15.26f, 21.24f); + Path bezier26Path = CacheForHealer.bezier26Path; + bezier26Path.reset(); + bezier26Path.moveTo(15.26f, 21.24f); + bezier26Path.lineTo(13.77f, 18.28f); + bezier26Path.lineTo(15.26f, 16.79f); + bezier26Path.lineTo(15.26f, 21.24f); + bezier26Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier26Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor59); + canvas.drawPath(bezier26Path, paint); + + // Bezier 27 + RectF bezier27Rect = CacheForHealer.bezier27Rect; + bezier27Rect.set(15.26f, 16.79f, 19.7f, 18.28f); + Path bezier27Path = CacheForHealer.bezier27Path; + bezier27Path.reset(); + bezier27Path.moveTo(19.7f, 16.79f); + bezier27Path.lineTo(16.74f, 18.28f); + bezier27Path.lineTo(15.26f, 16.79f); + bezier27Path.lineTo(19.7f, 16.79f); + bezier27Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier27Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor58); + canvas.drawPath(bezier27Path, paint); + + // Bezier 28 + RectF bezier28Rect = CacheForHealer.bezier28Rect; + bezier28Rect.set(15.26f, 12.35f, 16.74f, 16.79f); + Path bezier28Path = CacheForHealer.bezier28Path; + bezier28Path.reset(); + bezier28Path.moveTo(15.26f, 12.35f); + bezier28Path.lineTo(16.74f, 15.31f); + bezier28Path.lineTo(15.26f, 16.79f); + bezier28Path.lineTo(15.26f, 12.35f); + bezier28Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier28Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor58); + canvas.drawPath(bezier28Path, paint); + + // Bezier 29 + RectF bezier29Rect = CacheForHealer.bezier29Rect; + bezier29Rect.set(15.26f, 15.31f, 19.7f, 16.79f); + Path bezier29Path = CacheForHealer.bezier29Path; + bezier29Path.reset(); + bezier29Path.moveTo(19.7f, 16.79f); + bezier29Path.lineTo(16.74f, 15.31f); + bezier29Path.lineTo(15.26f, 16.79f); + bezier29Path.lineTo(19.7f, 16.79f); + bezier29Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier29Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor58); + canvas.drawPath(bezier29Path, paint); + + // Bezier 30 + RectF bezier30Rect = CacheForHealer.bezier30Rect; + bezier30Rect.set(15.26f, 16.79f, 16.74f, 21.24f); + Path bezier30Path = CacheForHealer.bezier30Path; + bezier30Path.reset(); + bezier30Path.moveTo(15.26f, 21.24f); + bezier30Path.lineTo(16.74f, 18.28f); + bezier30Path.lineTo(15.26f, 16.79f); + bezier30Path.lineTo(15.26f, 21.24f); + bezier30Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier30Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor58); + canvas.drawPath(bezier30Path, paint); + + // Bezier 31 + RectF bezier31Rect = CacheForHealer.bezier31Rect; + bezier31Rect.set(10.81f, 16.79f, 15.26f, 18.28f); + Path bezier31Path = CacheForHealer.bezier31Path; + bezier31Path.reset(); + bezier31Path.moveTo(10.81f, 16.79f); + bezier31Path.lineTo(13.77f, 18.28f); + bezier31Path.lineTo(15.26f, 16.79f); + bezier31Path.lineTo(10.81f, 16.79f); + bezier31Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier31Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor59); + canvas.drawPath(bezier31Path, paint); + + // Bezier 32 + RectF bezier32Rect = CacheForHealer.bezier32Rect; + bezier32Rect.set(13.77f, 12.35f, 15.26f, 16.79f); + Path bezier32Path = CacheForHealer.bezier32Path; + bezier32Path.reset(); + bezier32Path.moveTo(15.26f, 12.35f); + bezier32Path.lineTo(13.77f, 15.31f); + bezier32Path.lineTo(15.26f, 16.79f); + bezier32Path.lineTo(15.26f, 12.35f); + bezier32Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier32Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor59); + canvas.drawPath(bezier32Path, paint); + } + + canvas.restore(); + } + + private static class CacheForHealerLightBg { + private static RectF originalFrame = new RectF(0f, 0f, 32f, 32f); + private static RectF resizedFrame = new RectF(); + private static RectF symbolRect = new RectF(); + private static RectF symbolTargetRect = new RectF(); + } + + public static void drawHealerLightBg(Canvas canvas) { + HabiticaIcons.drawHealerLightBg(canvas, new RectF(0f, 0f, 32f, 32f), ResizingBehavior.AspectFit); + } + + public static void drawHealerLightBg(Canvas canvas, RectF targetFrame, ResizingBehavior resizing) { + // Resize to Target Frame + canvas.save(); + RectF resizedFrame = CacheForHealerLightBg.resizedFrame; + HabiticaIcons.resizingBehaviorApply(resizing, CacheForHealerLightBg.originalFrame, targetFrame, resizedFrame); + canvas.translate(resizedFrame.left, resizedFrame.top); + canvas.scale(resizedFrame.width() / 32f, resizedFrame.height() / 32f); + + // Symbol + RectF symbolRect = CacheForHealerLightBg.symbolRect; + symbolRect.set(0f, 0f, 32f, 32f); + canvas.save(); + canvas.clipRect(symbolRect); + canvas.translate(symbolRect.left, symbolRect.top); + RectF symbolTargetRect = CacheForHealerLightBg.symbolTargetRect; + symbolTargetRect.set(0f, 0f, symbolRect.width(), symbolRect.height()); + HabiticaIcons.drawHealer(canvas, symbolTargetRect, ResizingBehavior.Stretch, false); + canvas.restore(); + + canvas.restore(); + } + + private static class CacheForHealerDarkBg { + private static RectF originalFrame = new RectF(0f, 0f, 32f, 32f); + private static RectF resizedFrame = new RectF(); + private static RectF symbolRect = new RectF(); + private static RectF symbolTargetRect = new RectF(); + } + + public static void drawHealerDarkBg(Canvas canvas) { + HabiticaIcons.drawHealerDarkBg(canvas, new RectF(0f, 0f, 32f, 32f), ResizingBehavior.AspectFit); + } + + public static void drawHealerDarkBg(Canvas canvas, RectF targetFrame, ResizingBehavior resizing) { + // Resize to Target Frame + canvas.save(); + RectF resizedFrame = CacheForHealerDarkBg.resizedFrame; + HabiticaIcons.resizingBehaviorApply(resizing, CacheForHealerDarkBg.originalFrame, targetFrame, resizedFrame); + canvas.translate(resizedFrame.left, resizedFrame.top); + canvas.scale(resizedFrame.width() / 32f, resizedFrame.height() / 32f); + + // Symbol + RectF symbolRect = CacheForHealerDarkBg.symbolRect; + symbolRect.set(0f, 0f, 32f, 32f); + canvas.save(); + canvas.clipRect(symbolRect); + canvas.translate(symbolRect.left, symbolRect.top); + RectF symbolTargetRect = CacheForHealerDarkBg.symbolTargetRect; + symbolTargetRect.set(0f, 0f, symbolRect.width(), symbolRect.height()); + HabiticaIcons.drawHealer(canvas, symbolTargetRect, ResizingBehavior.Stretch, true); + canvas.restore(); + + canvas.restore(); + } + + private static class CacheForMage { + private static Paint paint = new Paint(); + private static RectF originalFrame = new RectF(0f, 0f, 32f, 32f); + private static RectF resizedFrame = new RectF(); + private static RectF bezierRect = new RectF(); + private static Path bezierPath = new Path(); + private static RectF bezier2Rect = new RectF(); + private static Path bezier2Path = new Path(); + private static RectF bezier3Rect = new RectF(); + private static Path bezier3Path = new Path(); + private static RectF bezier4Rect = new RectF(); + private static Path bezier4Path = new Path(); + private static RectF bezier5Rect = new RectF(); + private static Path bezier5Path = new Path(); + private static RectF bezier6Rect = new RectF(); + private static Path bezier6Path = new Path(); + private static RectF bezier7Rect = new RectF(); + private static Path bezier7Path = new Path(); + private static RectF bezier8Rect = new RectF(); + private static Path bezier8Path = new Path(); + private static RectF bezier9Rect = new RectF(); + private static Path bezier9Path = new Path(); + private static RectF bezier10Rect = new RectF(); + private static Path bezier10Path = new Path(); + private static RectF bezier11Rect = new RectF(); + private static Path bezier11Path = new Path(); + private static RectF bezier12Rect = new RectF(); + private static Path bezier12Path = new Path(); + private static RectF bezier13Rect = new RectF(); + private static Path bezier13Path = new Path(); + private static RectF bezier14Rect = new RectF(); + private static Path bezier14Path = new Path(); + private static RectF bezier15Rect = new RectF(); + private static Path bezier15Path = new Path(); + private static RectF bezier16Rect = new RectF(); + private static Path bezier16Path = new Path(); + private static RectF bezier17Rect = new RectF(); + private static Path bezier17Path = new Path(); + private static RectF bezier18Rect = new RectF(); + private static Path bezier18Path = new Path(); + } + + public static void drawMage(Canvas canvas, boolean darkBackground) { + HabiticaIcons.drawMage(canvas, new RectF(0f, 0f, 32f, 32f), ResizingBehavior.AspectFit, darkBackground); + } + + public static void drawMage(Canvas canvas, RectF targetFrame, ResizingBehavior resizing, boolean darkBackground) { + // General Declarations + Paint paint = CacheForMage.paint; + + // Local Colors + int fillColor65 = Color.argb(255, 107, 196, 233); + int fillColor67 = Color.argb(255, 83, 180, 229); + int fillColor66 = Color.argb(255, 107, 196, 233); + int fillColor70 = Color.argb(255, 132, 207, 242); + int fillColor61 = Color.argb(255, 39, 138, 191); + int fillColor69 = Color.argb(255, 169, 219, 245); + int fillColor62 = Color.argb(255, 83, 180, 229); + int fillColor60 = Color.argb(255, 182, 225, 247); + int fillColor64 = Color.argb(255, 77, 178, 214); + int fillColor63 = Color.argb(255, 42, 160, 207); + int fillColor68 = Color.argb(255, 31, 110, 162); + + // Local Variables + boolean lightBackground = !darkBackground; + + // Resize to Target Frame + canvas.save(); + RectF resizedFrame = CacheForMage.resizedFrame; + HabiticaIcons.resizingBehaviorApply(resizing, CacheForMage.originalFrame, targetFrame, resizedFrame); + canvas.translate(resizedFrame.left, resizedFrame.top); + canvas.scale(resizedFrame.width() / 32f, resizedFrame.height() / 32f); + + // Group 2 + if (darkBackground) { + // Bezier + RectF bezierRect = CacheForMage.bezierRect; + bezierRect.set(3.74f, 5.08f, 27.74f, 28.73f); + Path bezierPath = CacheForMage.bezierPath; + bezierPath.reset(); + bezierPath.moveTo(15.74f, 5.08f); + bezierPath.cubicTo(13.82f, 7.01f, 11.93f, 12.69f, 10.93f, 15.97f); + bezierPath.cubicTo(10.49f, 15.42f, 9.99f, 14.89f, 9.29f, 14.24f); + bezierPath.cubicTo(6.78f, 16.07f, 5.45f, 18.01f, 3.74f, 20.39f); + bezierPath.cubicTo(8.38f, 24.52f, 9.59f, 25.21f, 15.72f, 28.73f); + bezierPath.lineTo(15.74f, 28.72f); + bezierPath.lineTo(15.74f, 28.72f); + bezierPath.lineTo(15.76f, 28.73f); + bezierPath.cubicTo(21.89f, 25.21f, 23.1f, 24.52f, 27.74f, 20.39f); + bezierPath.cubicTo(26.03f, 18.01f, 24.7f, 16.07f, 22.2f, 14.24f); + bezierPath.cubicTo(21.49f, 14.89f, 20.99f, 15.42f, 20.55f, 15.97f); + bezierPath.cubicTo(19.55f, 12.69f, 17.66f, 7.01f, 15.74f, 5.08f); + bezierPath.lineTo(15.74f, 5.08f); + bezierPath.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezierPath.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor60); + canvas.drawPath(bezierPath, paint); + + // Bezier 2 + RectF bezier2Rect = CacheForMage.bezier2Rect; + bezier2Rect.set(15.74f, 18.72f, 25.66f, 26.81f); + Path bezier2Path = CacheForMage.bezier2Path; + bezier2Path.reset(); + bezier2Path.moveTo(15.74f, 21.2f); + bezier2Path.lineTo(17.6f, 20.54f); + bezier2Path.cubicTo(20.76f, 20.23f, 21.98f, 19.36f, 22.51f, 18.72f); + bezier2Path.lineTo(25.66f, 20.13f); + bezier2Path.cubicTo(25.66f, 20.13f, 25.66f, 20.14f, 25.66f, 20.14f); + bezier2Path.cubicTo(25.66f, 20.19f, 25.64f, 20.24f, 25.6f, 20.29f); + bezier2Path.cubicTo(25.56f, 20.34f, 25.5f, 20.4f, 25.44f, 20.46f); + bezier2Path.cubicTo(23.66f, 22.19f, 15.94f, 26.7f, 15.74f, 26.81f); + bezier2Path.lineTo(15.74f, 26.81f); + bezier2Path.lineTo(15.74f, 21.2f); + bezier2Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier2Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor61); + canvas.drawPath(bezier2Path, paint); + + // Bezier 3 + RectF bezier3Rect = CacheForMage.bezier3Rect; + bezier3Rect.set(20.73f, 16.3f, 25.66f, 20.13f); + Path bezier3Path = CacheForMage.bezier3Path; + bezier3Path.reset(); + bezier3Path.moveTo(21.96f, 16.48f); + bezier3Path.cubicTo(22.08f, 16.38f, 22.11f, 16.3f, 22.31f, 16.3f); + bezier3Path.cubicTo(22.93f, 16.34f, 25f, 19f, 25.47f, 19.67f); + bezier3Path.cubicTo(25.57f, 19.81f, 25.66f, 19.99f, 25.66f, 20.13f); + bezier3Path.lineTo(22.51f, 18.72f); + bezier3Path.cubicTo(22.63f, 18.53f, 22.6f, 18.24f, 22.32f, 18.07f); + bezier3Path.cubicTo(21.89f, 17.81f, 21f, 18.56f, 20.78f, 18.22f); + bezier3Path.cubicTo(20.47f, 17.73f, 21.84f, 16.58f, 21.96f, 16.48f); + bezier3Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier3Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor62); + canvas.drawPath(bezier3Path, paint); + + // Bezier 4 + RectF bezier4Rect = CacheForMage.bezier4Rect; + bezier4Rect.set(11f, 8.04f, 15.74f, 23.26f); + Path bezier4Path = CacheForMage.bezier4Path; + bezier4Path.reset(); + bezier4Path.moveTo(15.29f, 8.38f); + bezier4Path.cubicTo(12.48f, 16.41f, 11f, 20.78f, 11f, 20.78f); + bezier4Path.lineTo(15.74f, 23.26f); + bezier4Path.lineTo(15.74f, 8.04f); + bezier4Path.cubicTo(15.55f, 8.04f, 15.37f, 8.15f, 15.29f, 8.38f); + bezier4Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier4Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor63); + canvas.drawPath(bezier4Path, paint); + + // Bezier 5 + RectF bezier5Rect = CacheForMage.bezier5Rect; + bezier5Rect.set(15.74f, 8.04f, 20.48f, 23.26f); + Path bezier5Path = CacheForMage.bezier5Path; + bezier5Path.reset(); + bezier5Path.moveTo(16.19f, 8.38f); + bezier5Path.cubicTo(16.11f, 8.15f, 15.93f, 8.04f, 15.74f, 8.04f); + bezier5Path.lineTo(15.74f, 23.26f); + bezier5Path.lineTo(20.48f, 20.78f); + bezier5Path.cubicTo(20.48f, 20.78f, 19f, 16.41f, 16.19f, 8.38f); + bezier5Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier5Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor61); + canvas.drawPath(bezier5Path, paint); + + // Bezier 6 + RectF bezier6Rect = CacheForMage.bezier6Rect; + bezier6Rect.set(5.82f, 18.72f, 15.74f, 26.81f); + Path bezier6Path = CacheForMage.bezier6Path; + bezier6Path.reset(); + bezier6Path.moveTo(15.74f, 21.2f); + bezier6Path.lineTo(13.89f, 20.54f); + bezier6Path.cubicTo(10.72f, 20.23f, 9.54f, 19.32f, 8.98f, 18.72f); + bezier6Path.lineTo(5.82f, 20.13f); + bezier6Path.cubicTo(5.82f, 20.13f, 5.82f, 20.14f, 5.82f, 20.14f); + bezier6Path.cubicTo(5.83f, 20.19f, 5.84f, 20.24f, 5.88f, 20.29f); + bezier6Path.cubicTo(5.92f, 20.34f, 5.98f, 20.4f, 6.04f, 20.46f); + bezier6Path.cubicTo(7.82f, 22.19f, 15.54f, 26.7f, 15.74f, 26.81f); + bezier6Path.lineTo(15.74f, 26.81f); + bezier6Path.lineTo(15.74f, 21.2f); + bezier6Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier6Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor64); + canvas.drawPath(bezier6Path, paint); + + // Bezier 7 + RectF bezier7Rect = CacheForMage.bezier7Rect; + bezier7Rect.set(5.82f, 16.3f, 10.75f, 20.13f); + Path bezier7Path = CacheForMage.bezier7Path; + bezier7Path.reset(); + bezier7Path.moveTo(9.52f, 16.48f); + bezier7Path.cubicTo(9.4f, 16.38f, 9.37f, 16.3f, 9.17f, 16.3f); + bezier7Path.cubicTo(8.55f, 16.34f, 6.48f, 19f, 6.01f, 19.67f); + bezier7Path.cubicTo(5.91f, 19.81f, 5.82f, 19.99f, 5.82f, 20.13f); + bezier7Path.lineTo(8.98f, 18.72f); + bezier7Path.cubicTo(8.85f, 18.53f, 8.88f, 18.24f, 9.16f, 18.07f); + bezier7Path.cubicTo(9.59f, 17.81f, 10.48f, 18.56f, 10.7f, 18.22f); + bezier7Path.cubicTo(11.01f, 17.73f, 9.64f, 16.58f, 9.52f, 16.48f); + bezier7Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier7Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor65); + canvas.drawPath(bezier7Path, paint); + + // Bezier 8 + RectF bezier8Rect = CacheForMage.bezier8Rect; + bezier8Rect.set(11.22f, 17.9f, 15.74f, 22.71f); + Path bezier8Path = CacheForMage.bezier8Path; + bezier8Path.reset(); + bezier8Path.moveTo(15.74f, 22.71f); + bezier8Path.lineTo(15.74f, 20.05f); + bezier8Path.lineTo(11.99f, 17.9f); + bezier8Path.lineTo(11.22f, 20.01f); + bezier8Path.lineTo(15.74f, 22.71f); + bezier8Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier8Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor66); + canvas.drawPath(bezier8Path, paint); + + // Bezier 9 + RectF bezier9Rect = CacheForMage.bezier9Rect; + bezier9Rect.set(15.74f, 17.9f, 20.27f, 22.71f); + Path bezier9Path = CacheForMage.bezier9Path; + bezier9Path.reset(); + bezier9Path.moveTo(15.74f, 22.71f); + bezier9Path.lineTo(15.74f, 20.05f); + bezier9Path.lineTo(19.5f, 17.9f); + bezier9Path.lineTo(20.27f, 20.01f); + bezier9Path.lineTo(15.74f, 22.71f); + bezier9Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier9Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor67); + canvas.drawPath(bezier9Path, paint); + } + + // Group 3 + if (lightBackground) { + // Bezier 10 + RectF bezier10Rect = CacheForMage.bezier10Rect; + bezier10Rect.set(3.74f, 5.08f, 27.74f, 28.73f); + Path bezier10Path = CacheForMage.bezier10Path; + bezier10Path.reset(); + bezier10Path.moveTo(15.74f, 5.08f); + bezier10Path.cubicTo(13.82f, 7.01f, 11.93f, 12.69f, 10.93f, 15.97f); + bezier10Path.cubicTo(10.49f, 15.42f, 9.99f, 14.89f, 9.29f, 14.24f); + bezier10Path.cubicTo(6.78f, 16.07f, 5.45f, 18.01f, 3.74f, 20.39f); + bezier10Path.cubicTo(8.38f, 24.52f, 9.59f, 25.21f, 15.72f, 28.73f); + bezier10Path.lineTo(15.74f, 28.72f); + bezier10Path.lineTo(15.74f, 28.72f); + bezier10Path.lineTo(15.76f, 28.73f); + bezier10Path.cubicTo(21.89f, 25.21f, 23.1f, 24.52f, 27.74f, 20.39f); + bezier10Path.cubicTo(26.03f, 18.01f, 24.7f, 16.07f, 22.2f, 14.24f); + bezier10Path.cubicTo(21.49f, 14.89f, 20.99f, 15.42f, 20.55f, 15.97f); + bezier10Path.cubicTo(19.55f, 12.69f, 17.66f, 7.01f, 15.74f, 5.08f); + bezier10Path.lineTo(15.74f, 5.08f); + bezier10Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier10Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor68); + canvas.drawPath(bezier10Path, paint); + + // Bezier 11 + RectF bezier11Rect = CacheForMage.bezier11Rect; + bezier11Rect.set(15.74f, 18.72f, 25.66f, 26.81f); + Path bezier11Path = CacheForMage.bezier11Path; + bezier11Path.reset(); + bezier11Path.moveTo(15.74f, 21.2f); + bezier11Path.lineTo(17.6f, 20.54f); + bezier11Path.cubicTo(20.76f, 20.23f, 21.98f, 19.36f, 22.51f, 18.72f); + bezier11Path.lineTo(25.66f, 20.13f); + bezier11Path.cubicTo(25.66f, 20.13f, 25.66f, 20.14f, 25.66f, 20.14f); + bezier11Path.cubicTo(25.66f, 20.19f, 25.64f, 20.24f, 25.6f, 20.29f); + bezier11Path.cubicTo(25.56f, 20.34f, 25.5f, 20.4f, 25.44f, 20.46f); + bezier11Path.cubicTo(23.66f, 22.19f, 15.94f, 26.7f, 15.74f, 26.81f); + bezier11Path.lineTo(15.74f, 26.81f); + bezier11Path.lineTo(15.74f, 21.2f); + bezier11Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier11Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor61); + canvas.drawPath(bezier11Path, paint); + + // Bezier 12 + RectF bezier12Rect = CacheForMage.bezier12Rect; + bezier12Rect.set(20.73f, 16.3f, 25.66f, 20.13f); + Path bezier12Path = CacheForMage.bezier12Path; + bezier12Path.reset(); + bezier12Path.moveTo(21.96f, 16.48f); + bezier12Path.cubicTo(22.08f, 16.38f, 22.11f, 16.3f, 22.31f, 16.3f); + bezier12Path.cubicTo(22.93f, 16.34f, 25f, 19f, 25.47f, 19.67f); + bezier12Path.cubicTo(25.57f, 19.81f, 25.66f, 19.99f, 25.66f, 20.13f); + bezier12Path.lineTo(22.51f, 18.72f); + bezier12Path.cubicTo(22.63f, 18.53f, 22.6f, 18.24f, 22.32f, 18.07f); + bezier12Path.cubicTo(21.89f, 17.81f, 21f, 18.56f, 20.78f, 18.22f); + bezier12Path.cubicTo(20.47f, 17.73f, 21.84f, 16.58f, 21.96f, 16.48f); + bezier12Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier12Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor62); + canvas.drawPath(bezier12Path, paint); + + // Bezier 13 + RectF bezier13Rect = CacheForMage.bezier13Rect; + bezier13Rect.set(11f, 8.04f, 15.74f, 23.26f); + Path bezier13Path = CacheForMage.bezier13Path; + bezier13Path.reset(); + bezier13Path.moveTo(15.29f, 8.38f); + bezier13Path.cubicTo(12.48f, 16.41f, 11f, 20.78f, 11f, 20.78f); + bezier13Path.lineTo(15.74f, 23.26f); + bezier13Path.lineTo(15.74f, 8.04f); + bezier13Path.cubicTo(15.55f, 8.04f, 15.37f, 8.15f, 15.29f, 8.38f); + bezier13Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier13Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor63); + canvas.drawPath(bezier13Path, paint); + + // Bezier 14 + RectF bezier14Rect = CacheForMage.bezier14Rect; + bezier14Rect.set(15.74f, 8.04f, 20.48f, 23.26f); + Path bezier14Path = CacheForMage.bezier14Path; + bezier14Path.reset(); + bezier14Path.moveTo(16.19f, 8.38f); + bezier14Path.cubicTo(16.11f, 8.15f, 15.93f, 8.04f, 15.74f, 8.04f); + bezier14Path.lineTo(15.74f, 23.26f); + bezier14Path.lineTo(20.48f, 20.78f); + bezier14Path.cubicTo(20.48f, 20.78f, 19f, 16.41f, 16.19f, 8.38f); + bezier14Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier14Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor61); + canvas.drawPath(bezier14Path, paint); + + // Bezier 15 + RectF bezier15Rect = CacheForMage.bezier15Rect; + bezier15Rect.set(5.82f, 18.72f, 15.74f, 26.81f); + Path bezier15Path = CacheForMage.bezier15Path; + bezier15Path.reset(); + bezier15Path.moveTo(15.74f, 21.2f); + bezier15Path.lineTo(13.89f, 20.54f); + bezier15Path.cubicTo(10.72f, 20.23f, 9.54f, 19.32f, 8.98f, 18.72f); + bezier15Path.lineTo(5.82f, 20.13f); + bezier15Path.cubicTo(5.82f, 20.13f, 5.82f, 20.14f, 5.82f, 20.14f); + bezier15Path.cubicTo(5.83f, 20.19f, 5.84f, 20.24f, 5.88f, 20.29f); + bezier15Path.cubicTo(5.92f, 20.34f, 5.98f, 20.4f, 6.04f, 20.46f); + bezier15Path.cubicTo(7.82f, 22.19f, 15.54f, 26.7f, 15.74f, 26.81f); + bezier15Path.lineTo(15.74f, 26.81f); + bezier15Path.lineTo(15.74f, 21.2f); + bezier15Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier15Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor64); + canvas.drawPath(bezier15Path, paint); + + // Bezier 16 + RectF bezier16Rect = CacheForMage.bezier16Rect; + bezier16Rect.set(5.82f, 16.3f, 10.75f, 20.13f); + Path bezier16Path = CacheForMage.bezier16Path; + bezier16Path.reset(); + bezier16Path.moveTo(9.52f, 16.48f); + bezier16Path.cubicTo(9.4f, 16.38f, 9.37f, 16.3f, 9.17f, 16.3f); + bezier16Path.cubicTo(8.55f, 16.34f, 6.48f, 19f, 6.01f, 19.67f); + bezier16Path.cubicTo(5.91f, 19.81f, 5.82f, 19.99f, 5.82f, 20.13f); + bezier16Path.lineTo(8.98f, 18.72f); + bezier16Path.cubicTo(8.85f, 18.53f, 8.88f, 18.24f, 9.16f, 18.07f); + bezier16Path.cubicTo(9.59f, 17.81f, 10.48f, 18.56f, 10.7f, 18.22f); + bezier16Path.cubicTo(11.01f, 17.73f, 9.64f, 16.58f, 9.52f, 16.48f); + bezier16Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier16Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor65); + canvas.drawPath(bezier16Path, paint); + + // Bezier 17 + RectF bezier17Rect = CacheForMage.bezier17Rect; + bezier17Rect.set(11.22f, 17.9f, 15.74f, 22.71f); + Path bezier17Path = CacheForMage.bezier17Path; + bezier17Path.reset(); + bezier17Path.moveTo(15.74f, 22.71f); + bezier17Path.lineTo(15.74f, 20.05f); + bezier17Path.lineTo(11.99f, 17.9f); + bezier17Path.lineTo(11.22f, 20.01f); + bezier17Path.lineTo(15.74f, 22.71f); + bezier17Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier17Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor69); + canvas.drawPath(bezier17Path, paint); + + // Bezier 18 + RectF bezier18Rect = CacheForMage.bezier18Rect; + bezier18Rect.set(15.74f, 17.9f, 20.27f, 22.71f); + Path bezier18Path = CacheForMage.bezier18Path; + bezier18Path.reset(); + bezier18Path.moveTo(15.74f, 22.71f); + bezier18Path.lineTo(15.74f, 20.05f); + bezier18Path.lineTo(19.5f, 17.9f); + bezier18Path.lineTo(20.27f, 20.01f); + bezier18Path.lineTo(15.74f, 22.71f); + bezier18Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier18Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor70); + canvas.drawPath(bezier18Path, paint); + } + + canvas.restore(); + } + + private static class CacheForMageDarkBg { + private static RectF originalFrame = new RectF(0f, 0f, 32f, 32f); + private static RectF resizedFrame = new RectF(); + private static RectF symbolRect = new RectF(); + private static RectF symbolTargetRect = new RectF(); + } + + public static void drawMageDarkBg(Canvas canvas) { + HabiticaIcons.drawMageDarkBg(canvas, new RectF(0f, 0f, 32f, 32f), ResizingBehavior.AspectFit); + } + + public static void drawMageDarkBg(Canvas canvas, RectF targetFrame, ResizingBehavior resizing) { + // Resize to Target Frame + canvas.save(); + RectF resizedFrame = CacheForMageDarkBg.resizedFrame; + HabiticaIcons.resizingBehaviorApply(resizing, CacheForMageDarkBg.originalFrame, targetFrame, resizedFrame); + canvas.translate(resizedFrame.left, resizedFrame.top); + canvas.scale(resizedFrame.width() / 32f, resizedFrame.height() / 32f); + + // Symbol + RectF symbolRect = CacheForMageDarkBg.symbolRect; + symbolRect.set(0f, 0f, 32f, 32f); + canvas.save(); + canvas.clipRect(symbolRect); + canvas.translate(symbolRect.left, symbolRect.top); + RectF symbolTargetRect = CacheForMageDarkBg.symbolTargetRect; + symbolTargetRect.set(0f, 0f, symbolRect.width(), symbolRect.height()); + HabiticaIcons.drawMage(canvas, symbolTargetRect, ResizingBehavior.Stretch, true); + canvas.restore(); + + canvas.restore(); + } + + private static class CacheForMageLightBg { + private static RectF originalFrame = new RectF(0f, 0f, 32f, 32f); + private static RectF resizedFrame = new RectF(); + private static RectF symbolRect = new RectF(); + private static RectF symbolTargetRect = new RectF(); + } + + public static void drawMageLightBg(Canvas canvas) { + HabiticaIcons.drawMageLightBg(canvas, new RectF(0f, 0f, 32f, 32f), ResizingBehavior.AspectFit); + } + + public static void drawMageLightBg(Canvas canvas, RectF targetFrame, ResizingBehavior resizing) { + // Resize to Target Frame + canvas.save(); + RectF resizedFrame = CacheForMageLightBg.resizedFrame; + HabiticaIcons.resizingBehaviorApply(resizing, CacheForMageLightBg.originalFrame, targetFrame, resizedFrame); + canvas.translate(resizedFrame.left, resizedFrame.top); + canvas.scale(resizedFrame.width() / 32f, resizedFrame.height() / 32f); + + // Symbol + RectF symbolRect = CacheForMageLightBg.symbolRect; + symbolRect.set(0f, 0f, 32f, 32f); + canvas.save(); + canvas.clipRect(symbolRect); + canvas.translate(symbolRect.left, symbolRect.top); + RectF symbolTargetRect = CacheForMageLightBg.symbolTargetRect; + symbolTargetRect.set(0f, 0f, symbolRect.width(), symbolRect.height()); + HabiticaIcons.drawMage(canvas, symbolTargetRect, ResizingBehavior.Stretch, false); + canvas.restore(); + + canvas.restore(); + } + // Canvas Images // Tab @@ -3759,14 +6634,10 @@ public class HabiticaIcons { return imageOfHeartLightBg; } - private static Bitmap imageOfWarrior = null; - public static Bitmap imageOfWarrior() { - if (imageOfWarrior != null) - return imageOfWarrior; - - imageOfWarrior = Bitmap.createBitmap(25, 25, Bitmap.Config.ARGB_8888); + public static Bitmap imageOfWarrior(boolean darkBackground) { + Bitmap imageOfWarrior = Bitmap.createBitmap(32, 32, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(imageOfWarrior); - HabiticaIcons.drawWarrior(canvas); + HabiticaIcons.drawWarrior(canvas, darkBackground); return imageOfWarrior; } @@ -3911,6 +6782,102 @@ public class HabiticaIcons { return imageOfGem_36; } + private static Bitmap imageOfWarriorLightBg = null; + public static Bitmap imageOfWarriorLightBg() { + if (imageOfWarriorLightBg != null) + return imageOfWarriorLightBg; + + imageOfWarriorLightBg = Bitmap.createBitmap(32, 32, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfWarriorLightBg); + HabiticaIcons.drawWarriorLightBg(canvas); + + return imageOfWarriorLightBg; + } + + private static Bitmap imageOfWarriorDarkBg = null; + public static Bitmap imageOfWarriorDarkBg() { + if (imageOfWarriorDarkBg != null) + return imageOfWarriorDarkBg; + + imageOfWarriorDarkBg = Bitmap.createBitmap(32, 32, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfWarriorDarkBg); + HabiticaIcons.drawWarriorDarkBg(canvas); + + return imageOfWarriorDarkBg; + } + + private static Bitmap imageOfRogueLightBg = null; + public static Bitmap imageOfRogueLightBg() { + if (imageOfRogueLightBg != null) + return imageOfRogueLightBg; + + imageOfRogueLightBg = Bitmap.createBitmap(32, 32, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfRogueLightBg); + HabiticaIcons.drawRogueLightBg(canvas); + + return imageOfRogueLightBg; + } + + private static Bitmap imageOfRogueDarkBg = null; + public static Bitmap imageOfRogueDarkBg() { + if (imageOfRogueDarkBg != null) + return imageOfRogueDarkBg; + + imageOfRogueDarkBg = Bitmap.createBitmap(32, 32, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfRogueDarkBg); + HabiticaIcons.drawRogueDarkBg(canvas); + + return imageOfRogueDarkBg; + } + + private static Bitmap imageOfHealerLightBg = null; + public static Bitmap imageOfHealerLightBg() { + if (imageOfHealerLightBg != null) + return imageOfHealerLightBg; + + imageOfHealerLightBg = Bitmap.createBitmap(32, 32, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfHealerLightBg); + HabiticaIcons.drawHealerLightBg(canvas); + + return imageOfHealerLightBg; + } + + private static Bitmap imageOfHealerDarkBg = null; + public static Bitmap imageOfHealerDarkBg() { + if (imageOfHealerDarkBg != null) + return imageOfHealerDarkBg; + + imageOfHealerDarkBg = Bitmap.createBitmap(32, 32, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfHealerDarkBg); + HabiticaIcons.drawHealerDarkBg(canvas); + + return imageOfHealerDarkBg; + } + + private static Bitmap imageOfMageDarkBg = null; + public static Bitmap imageOfMageDarkBg() { + if (imageOfMageDarkBg != null) + return imageOfMageDarkBg; + + imageOfMageDarkBg = Bitmap.createBitmap(32, 32, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfMageDarkBg); + HabiticaIcons.drawMageDarkBg(canvas); + + return imageOfMageDarkBg; + } + + private static Bitmap imageOfMageLightBg = null; + public static Bitmap imageOfMageLightBg() { + if (imageOfMageLightBg != null) + return imageOfMageLightBg; + + imageOfMageLightBg = Bitmap.createBitmap(32, 32, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfMageLightBg); + HabiticaIcons.drawMageLightBg(canvas); + + return imageOfMageLightBg; + } + // Resizing Behavior public static void resizingBehaviorApply(ResizingBehavior behavior, RectF rect, RectF target, RectF result) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIconsHelper.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIconsHelper.java index 014dc2384..85d9e1739 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIconsHelper.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIconsHelper.java @@ -146,20 +146,6 @@ public class HabiticaIconsHelper { return imageOfHeartLightBg; } - private static Bitmap imageOfWarrior = null; - public static Bitmap imageOfWarrior() { - if (imageOfWarrior != null) - return imageOfWarrior; - - int size = scaleSize(25); - imageOfWarrior = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas(imageOfWarrior); - canvas.scale(displayDensity, displayDensity); - HabiticaIcons.drawWarrior(canvas); - - return imageOfWarrior; - } - private static Bitmap imageOfHeartLarge = null; public static Bitmap imageOfHeartLarge() { if (imageOfHeartLarge != null) @@ -322,4 +308,116 @@ public class HabiticaIconsHelper { return imageOfGem_36; } + + private static Bitmap imageOfWarriorLightBg = null; + public static Bitmap imageOfWarriorLightBg() { + if (imageOfWarriorLightBg != null) + return imageOfWarriorLightBg; + + int size = scaleSize(32); + imageOfWarriorLightBg = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfWarriorLightBg); + canvas.scale(displayDensity, displayDensity); + HabiticaIcons.drawWarriorLightBg(canvas); + + return imageOfWarriorLightBg; + } + + private static Bitmap imageOfWarriorDarkBg = null; + public static Bitmap imageOfWarriorDarkBg() { + if (imageOfWarriorDarkBg != null) + return imageOfWarriorDarkBg; + + int size = scaleSize(32); + imageOfWarriorDarkBg = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfWarriorDarkBg); + canvas.scale(displayDensity, displayDensity); + HabiticaIcons.drawWarriorDarkBg(canvas); + + return imageOfWarriorDarkBg; + } + + private static Bitmap imageOfRogueLightBg = null; + public static Bitmap imageOfRogueLightBg() { + if (imageOfRogueLightBg != null) + return imageOfRogueLightBg; + + int size = scaleSize(32); + imageOfRogueLightBg = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfRogueLightBg); + canvas.scale(displayDensity, displayDensity); + HabiticaIcons.drawRogueLightBg(canvas); + + return imageOfRogueLightBg; + } + + private static Bitmap imageOfRogueDarkBg = null; + public static Bitmap imageOfRogueDarkBg() { + if (imageOfRogueDarkBg != null) + return imageOfRogueDarkBg; + + int size = scaleSize(32); + imageOfRogueDarkBg = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfRogueDarkBg); + canvas.scale(displayDensity, displayDensity); + HabiticaIcons.drawRogueDarkBg(canvas); + + return imageOfRogueDarkBg; + } + + private static Bitmap imageOfHealerLightBg = null; + public static Bitmap imageOfHealerLightBg() { + if (imageOfHealerLightBg != null) + return imageOfHealerLightBg; + + int size = scaleSize(32); + imageOfHealerLightBg = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfHealerLightBg); + canvas.scale(displayDensity, displayDensity); + HabiticaIcons.drawHealerLightBg(canvas); + + return imageOfHealerLightBg; + } + + private static Bitmap imageOfHealerDarkBg = null; + public static Bitmap imageOfHealerDarkBg() { + if (imageOfHealerDarkBg != null) + return imageOfHealerDarkBg; + + int size = scaleSize(32); + imageOfHealerDarkBg = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfHealerDarkBg); + canvas.scale(displayDensity, displayDensity); + HabiticaIcons.drawHealerDarkBg(canvas); + + return imageOfHealerDarkBg; + } + + private static Bitmap imageOfMageDarkBg = null; + public static Bitmap imageOfMageDarkBg() { + if (imageOfMageDarkBg != null) + return imageOfMageDarkBg; + + int size = scaleSize(32); + imageOfMageDarkBg = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfMageDarkBg); + canvas.scale(displayDensity, displayDensity); + HabiticaIcons.drawMageDarkBg(canvas); + + return imageOfMageDarkBg; + } + + private static Bitmap imageOfMageLightBg = null; + public static Bitmap imageOfMageLightBg() { + if (imageOfMageLightBg != null) + return imageOfMageLightBg; + + int size = scaleSize(32); + imageOfMageLightBg = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfMageLightBg); + canvas.scale(displayDensity, displayDensity); + HabiticaIcons.drawMageLightBg(canvas); + + return imageOfMageLightBg; + } } diff --git a/build.gradle b/build.gradle index 36b2772de..a6e98594e 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ buildscript { classpath 'com.google.gms:google-services:3.0.0' classpath 'me.tatarka:gradle-retrolambda:3.3.1' classpath 'me.tatarka.retrolambda.projectlombok:lombok.ast:0.2.3.a2' - classpath "io.realm:realm-gradle-plugin:3.5.0" + classpath "io.realm:realm-gradle-plugin:3.7.0" } // Exclude the version that the android plugin depends on.