summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--install.cpp8
-rw-r--r--minui/font_10x18.h8
-rw-r--r--minui/graphics.cpp114
-rw-r--r--minui/minui.h16
-rw-r--r--res-hdpi/images/loop00000.pngbin9715 -> 9201 bytes
-rw-r--r--res-hdpi/images/loop00001.pngbin9823 -> 9276 bytes
-rw-r--r--res-hdpi/images/loop00002.pngbin9807 -> 9279 bytes
-rw-r--r--res-hdpi/images/loop00003.pngbin9748 -> 9267 bytes
-rw-r--r--res-hdpi/images/loop00004.pngbin9966 -> 9476 bytes
-rw-r--r--res-hdpi/images/loop00005.pngbin10030 -> 9528 bytes
-rw-r--r--res-hdpi/images/loop00006.pngbin10211 -> 9690 bytes
-rw-r--r--res-hdpi/images/loop00007.pngbin10300 -> 9779 bytes
-rw-r--r--res-hdpi/images/loop00008.pngbin10271 -> 9764 bytes
-rw-r--r--res-hdpi/images/loop00009.pngbin10172 -> 9678 bytes
-rw-r--r--res-hdpi/images/loop00010.pngbin10252 -> 9798 bytes
-rw-r--r--res-hdpi/images/loop00011.pngbin10194 -> 9731 bytes
-rw-r--r--res-hdpi/images/loop00012.pngbin10246 -> 9821 bytes
-rw-r--r--res-hdpi/images/loop00013.pngbin10280 -> 9829 bytes
-rw-r--r--res-hdpi/images/loop00014.pngbin10263 -> 9823 bytes
-rw-r--r--res-hdpi/images/loop00015.pngbin10214 -> 9800 bytes
-rw-r--r--res-hdpi/images/loop00016.pngbin10308 -> 9890 bytes
-rw-r--r--res-hdpi/images/loop00017.pngbin10082 -> 9641 bytes
-rw-r--r--res-hdpi/images/loop00018.pngbin10115 -> 9681 bytes
-rw-r--r--res-hdpi/images/loop00019.pngbin10004 -> 9578 bytes
-rw-r--r--res-hdpi/images/loop00020.pngbin9793 -> 9383 bytes
-rw-r--r--res-hdpi/images/loop00021.pngbin9952 -> 9529 bytes
-rw-r--r--res-hdpi/images/loop00022.pngbin9784 -> 9372 bytes
-rw-r--r--res-hdpi/images/loop00023.pngbin9758 -> 9307 bytes
-rw-r--r--res-hdpi/images/loop00024.pngbin9738 -> 9284 bytes
-rw-r--r--res-hdpi/images/loop00025.pngbin9716 -> 9279 bytes
-rw-r--r--res-hdpi/images/loop00026.pngbin9912 -> 9477 bytes
-rw-r--r--res-hdpi/images/loop00027.pngbin9716 -> 9265 bytes
-rw-r--r--res-hdpi/images/loop00028.pngbin10005 -> 9532 bytes
-rw-r--r--res-hdpi/images/loop00029.pngbin10038 -> 9536 bytes
-rw-r--r--res-hdpi/images/loop00030.pngbin9975 -> 9511 bytes
-rw-r--r--res-hdpi/images/loop00031.pngbin9855 -> 9368 bytes
-rw-r--r--res-hdpi/images/loop00032.pngbin9743 -> 9280 bytes
-rw-r--r--res-hdpi/images/loop00033.pngbin9989 -> 9513 bytes
-rw-r--r--res-hdpi/images/loop00034.pngbin10005 -> 9521 bytes
-rw-r--r--res-hdpi/images/loop00035.pngbin10192 -> 9692 bytes
-rw-r--r--res-hdpi/images/loop00036.pngbin10112 -> 9636 bytes
-rw-r--r--res-hdpi/images/loop00037.pngbin10325 -> 9833 bytes
-rw-r--r--res-hdpi/images/loop00038.pngbin10477 -> 10034 bytes
-rw-r--r--res-hdpi/images/loop00039.pngbin10458 -> 10005 bytes
-rw-r--r--res-hdpi/images/loop00040.pngbin10381 -> 9925 bytes
-rw-r--r--res-hdpi/images/loop00041.pngbin10791 -> 10310 bytes
-rw-r--r--res-hdpi/images/loop00042.pngbin10753 -> 10307 bytes
-rw-r--r--res-hdpi/images/loop00043.pngbin10721 -> 10253 bytes
-rw-r--r--res-hdpi/images/loop00044.pngbin10763 -> 10274 bytes
-rw-r--r--res-hdpi/images/loop00045.pngbin10839 -> 10364 bytes
-rw-r--r--res-hdpi/images/loop00046.pngbin10883 -> 10416 bytes
-rw-r--r--res-hdpi/images/loop00047.pngbin11049 -> 10593 bytes
-rw-r--r--res-hdpi/images/loop00048.pngbin10971 -> 10473 bytes
-rw-r--r--res-hdpi/images/loop00049.pngbin11018 -> 10521 bytes
-rw-r--r--res-hdpi/images/loop00050.pngbin10662 -> 10203 bytes
-rw-r--r--res-hdpi/images/loop00051.pngbin10500 -> 10022 bytes
-rw-r--r--res-hdpi/images/loop00052.pngbin10593 -> 10115 bytes
-rw-r--r--res-hdpi/images/loop00053.pngbin10591 -> 10126 bytes
-rw-r--r--res-hdpi/images/loop00054.pngbin10594 -> 10117 bytes
-rw-r--r--res-hdpi/images/loop00055.pngbin10338 -> 9845 bytes
-rw-r--r--res-hdpi/images/loop00056.pngbin10291 -> 9782 bytes
-rw-r--r--res-hdpi/images/loop00057.pngbin10227 -> 9735 bytes
-rw-r--r--res-hdpi/images/loop00058.pngbin10082 -> 9582 bytes
-rw-r--r--res-hdpi/images/loop00059.pngbin9914 -> 9391 bytes
-rw-r--r--res-hdpi/images/loop00060.pngbin10011 -> 9512 bytes
-rw-r--r--res-hdpi/images/loop00061.pngbin9884 -> 9383 bytes
-rw-r--r--res-hdpi/images/loop00062.pngbin9943 -> 9404 bytes
-rw-r--r--res-hdpi/images/loop00063.pngbin9961 -> 9421 bytes
-rw-r--r--res-hdpi/images/loop00064.pngbin9965 -> 9430 bytes
-rw-r--r--res-hdpi/images/loop00065.pngbin9969 -> 9429 bytes
-rw-r--r--res-hdpi/images/loop00066.pngbin9816 -> 9308 bytes
-rw-r--r--res-hdpi/images/loop00067.pngbin10008 -> 9516 bytes
-rw-r--r--res-hdpi/images/loop00068.pngbin9980 -> 9468 bytes
-rw-r--r--res-hdpi/images/loop00069.pngbin9829 -> 9302 bytes
-rw-r--r--res-hdpi/images/loop00070.pngbin10000 -> 9517 bytes
-rw-r--r--res-hdpi/images/loop00071.pngbin9831 -> 9358 bytes
-rw-r--r--res-hdpi/images/loop00072.pngbin9641 -> 9165 bytes
-rw-r--r--res-hdpi/images/loop00073.pngbin9616 -> 9171 bytes
-rw-r--r--res-hdpi/images/loop00074.pngbin9440 -> 8981 bytes
-rw-r--r--res-hdpi/images/loop00075.pngbin9238 -> 8780 bytes
-rw-r--r--res-hdpi/images/loop00076.pngbin9244 -> 8790 bytes
-rw-r--r--res-hdpi/images/loop00077.pngbin9056 -> 8609 bytes
-rw-r--r--res-hdpi/images/loop00078.pngbin9027 -> 8561 bytes
-rw-r--r--res-hdpi/images/loop00079.pngbin9030 -> 8543 bytes
-rw-r--r--res-hdpi/images/loop00080.pngbin9251 -> 8797 bytes
-rw-r--r--res-hdpi/images/loop00081.pngbin9435 -> 9012 bytes
-rw-r--r--res-hdpi/images/loop00082.pngbin9672 -> 9226 bytes
-rw-r--r--res-hdpi/images/loop00083.pngbin9581 -> 9140 bytes
-rw-r--r--res-hdpi/images/loop00084.pngbin9684 -> 9214 bytes
-rw-r--r--res-hdpi/images/loop00085.pngbin9824 -> 9336 bytes
-rw-r--r--res-hdpi/images/loop00086.pngbin9833 -> 9322 bytes
-rw-r--r--res-hdpi/images/loop00087.pngbin9827 -> 9309 bytes
-rw-r--r--res-hdpi/images/loop00088.pngbin9772 -> 9265 bytes
-rw-r--r--res-hdpi/images/loop00089.pngbin9626 -> 9137 bytes
-rw-r--r--res-hdpi/images/loop00090.pngbin9715 -> 9201 bytes
-rw-r--r--res-mdpi/images/loop00000.pngbin6155 -> 5900 bytes
-rw-r--r--res-mdpi/images/loop00001.pngbin6135 -> 5873 bytes
-rw-r--r--res-mdpi/images/loop00002.pngbin6122 -> 5854 bytes
-rw-r--r--res-mdpi/images/loop00003.pngbin6181 -> 5924 bytes
-rw-r--r--res-mdpi/images/loop00004.pngbin6224 -> 5981 bytes
-rw-r--r--res-mdpi/images/loop00005.pngbin6280 -> 6052 bytes
-rw-r--r--res-mdpi/images/loop00006.pngbin6318 -> 6096 bytes
-rw-r--r--res-mdpi/images/loop00007.pngbin6345 -> 6126 bytes
-rw-r--r--res-mdpi/images/loop00008.pngbin6382 -> 6132 bytes
-rw-r--r--res-mdpi/images/loop00009.pngbin6406 -> 6179 bytes
-rw-r--r--res-mdpi/images/loop00010.pngbin6299 -> 6078 bytes
-rw-r--r--res-mdpi/images/loop00011.pngbin6373 -> 6167 bytes
-rw-r--r--res-mdpi/images/loop00012.pngbin6269 -> 6079 bytes
-rw-r--r--res-mdpi/images/loop00013.pngbin6351 -> 6147 bytes
-rw-r--r--res-mdpi/images/loop00014.pngbin6257 -> 6052 bytes
-rw-r--r--res-mdpi/images/loop00015.pngbin6288 -> 6089 bytes
-rw-r--r--res-mdpi/images/loop00016.pngbin6273 -> 6069 bytes
-rw-r--r--res-mdpi/images/loop00017.pngbin6228 -> 6040 bytes
-rw-r--r--res-mdpi/images/loop00018.pngbin6248 -> 6055 bytes
-rw-r--r--res-mdpi/images/loop00019.pngbin6116 -> 5923 bytes
-rw-r--r--res-mdpi/images/loop00020.pngbin6031 -> 5831 bytes
-rw-r--r--res-mdpi/images/loop00021.pngbin6036 -> 5844 bytes
-rw-r--r--res-mdpi/images/loop00022.pngbin6049 -> 5839 bytes
-rw-r--r--res-mdpi/images/loop00023.pngbin6077 -> 5865 bytes
-rw-r--r--res-mdpi/images/loop00024.pngbin5992 -> 5789 bytes
-rw-r--r--res-mdpi/images/loop00025.pngbin6007 -> 5779 bytes
-rw-r--r--res-mdpi/images/loop00026.pngbin6029 -> 5819 bytes
-rw-r--r--res-mdpi/images/loop00027.pngbin5993 -> 5763 bytes
-rw-r--r--res-mdpi/images/loop00028.pngbin6004 -> 5769 bytes
-rw-r--r--res-mdpi/images/loop00029.pngbin6146 -> 5932 bytes
-rw-r--r--res-mdpi/images/loop00030.pngbin6196 -> 5973 bytes
-rw-r--r--res-mdpi/images/loop00031.pngbin6134 -> 5904 bytes
-rw-r--r--res-mdpi/images/loop00032.pngbin6114 -> 5872 bytes
-rw-r--r--res-mdpi/images/loop00033.pngbin6083 -> 5843 bytes
-rw-r--r--res-mdpi/images/loop00034.pngbin6132 -> 5903 bytes
-rw-r--r--res-mdpi/images/loop00035.pngbin6239 -> 6000 bytes
-rw-r--r--res-mdpi/images/loop00036.pngbin6260 -> 6023 bytes
-rw-r--r--res-mdpi/images/loop00037.pngbin6317 -> 6057 bytes
-rw-r--r--res-mdpi/images/loop00038.pngbin6424 -> 6204 bytes
-rw-r--r--res-mdpi/images/loop00039.pngbin6479 -> 6265 bytes
-rw-r--r--res-mdpi/images/loop00040.pngbin6515 -> 6307 bytes
-rw-r--r--res-mdpi/images/loop00041.pngbin6643 -> 6420 bytes
-rw-r--r--res-mdpi/images/loop00042.pngbin6654 -> 6448 bytes
-rw-r--r--res-mdpi/images/loop00043.pngbin6619 -> 6411 bytes
-rw-r--r--res-mdpi/images/loop00044.pngbin6730 -> 6504 bytes
-rw-r--r--res-mdpi/images/loop00045.pngbin6622 -> 6384 bytes
-rw-r--r--res-mdpi/images/loop00046.pngbin6683 -> 6447 bytes
-rw-r--r--res-mdpi/images/loop00047.pngbin6655 -> 6437 bytes
-rw-r--r--res-mdpi/images/loop00048.pngbin6768 -> 6532 bytes
-rw-r--r--res-mdpi/images/loop00049.pngbin6671 -> 6424 bytes
-rw-r--r--res-mdpi/images/loop00050.pngbin6572 -> 6323 bytes
-rw-r--r--res-mdpi/images/loop00051.pngbin6551 -> 6327 bytes
-rw-r--r--res-mdpi/images/loop00052.pngbin6561 -> 6342 bytes
-rw-r--r--res-mdpi/images/loop00053.pngbin6486 -> 6263 bytes
-rw-r--r--res-mdpi/images/loop00054.pngbin6559 -> 6347 bytes
-rw-r--r--res-mdpi/images/loop00055.pngbin6498 -> 6277 bytes
-rw-r--r--res-mdpi/images/loop00056.pngbin6369 -> 6133 bytes
-rw-r--r--res-mdpi/images/loop00057.pngbin6336 -> 6103 bytes
-rw-r--r--res-mdpi/images/loop00058.pngbin6329 -> 6083 bytes
-rw-r--r--res-mdpi/images/loop00059.pngbin6261 -> 6014 bytes
-rw-r--r--res-mdpi/images/loop00060.pngbin6168 -> 5930 bytes
-rw-r--r--res-mdpi/images/loop00061.pngbin6161 -> 5902 bytes
-rw-r--r--res-mdpi/images/loop00062.pngbin6185 -> 5927 bytes
-rw-r--r--res-mdpi/images/loop00063.pngbin6235 -> 5952 bytes
-rw-r--r--res-mdpi/images/loop00064.pngbin6226 -> 5965 bytes
-rw-r--r--res-mdpi/images/loop00065.pngbin6280 -> 6010 bytes
-rw-r--r--res-mdpi/images/loop00066.pngbin6167 -> 5918 bytes
-rw-r--r--res-mdpi/images/loop00067.pngbin6161 -> 5916 bytes
-rw-r--r--res-mdpi/images/loop00068.pngbin6234 -> 5976 bytes
-rw-r--r--res-mdpi/images/loop00069.pngbin6190 -> 5941 bytes
-rw-r--r--res-mdpi/images/loop00070.pngbin6168 -> 5948 bytes
-rw-r--r--res-mdpi/images/loop00071.pngbin6083 -> 5867 bytes
-rw-r--r--res-mdpi/images/loop00072.pngbin5992 -> 5777 bytes
-rw-r--r--res-mdpi/images/loop00073.pngbin5967 -> 5757 bytes
-rw-r--r--res-mdpi/images/loop00074.pngbin5818 -> 5602 bytes
-rw-r--r--res-mdpi/images/loop00075.pngbin5717 -> 5468 bytes
-rw-r--r--res-mdpi/images/loop00076.pngbin5724 -> 5507 bytes
-rw-r--r--res-mdpi/images/loop00077.pngbin5644 -> 5417 bytes
-rw-r--r--res-mdpi/images/loop00078.pngbin5660 -> 5415 bytes
-rw-r--r--res-mdpi/images/loop00079.pngbin5670 -> 5430 bytes
-rw-r--r--res-mdpi/images/loop00080.pngbin5718 -> 5478 bytes
-rw-r--r--res-mdpi/images/loop00081.pngbin5872 -> 5633 bytes
-rw-r--r--res-mdpi/images/loop00082.pngbin5929 -> 5706 bytes
-rw-r--r--res-mdpi/images/loop00083.pngbin6009 -> 5783 bytes
-rw-r--r--res-mdpi/images/loop00084.pngbin5988 -> 5750 bytes
-rw-r--r--res-mdpi/images/loop00085.pngbin6026 -> 5778 bytes
-rw-r--r--res-mdpi/images/loop00086.pngbin6021 -> 5782 bytes
-rw-r--r--res-mdpi/images/loop00087.pngbin6163 -> 5927 bytes
-rw-r--r--res-mdpi/images/loop00088.pngbin6127 -> 5882 bytes
-rw-r--r--res-mdpi/images/loop00089.pngbin6243 -> 5992 bytes
-rw-r--r--res-mdpi/images/loop00090.pngbin6155 -> 5900 bytes
-rw-r--r--res-xhdpi/images/loop00000.pngbin13121 -> 12215 bytes
-rw-r--r--res-xhdpi/images/loop00001.pngbin12986 -> 12095 bytes
-rw-r--r--res-xhdpi/images/loop00002.pngbin13588 -> 12714 bytes
-rw-r--r--res-xhdpi/images/loop00003.pngbin13584 -> 12748 bytes
-rw-r--r--res-xhdpi/images/loop00004.pngbin13685 -> 12846 bytes
-rw-r--r--res-xhdpi/images/loop00005.pngbin13802 -> 12919 bytes
-rw-r--r--res-xhdpi/images/loop00006.pngbin14188 -> 13349 bytes
-rw-r--r--res-xhdpi/images/loop00007.pngbin14027 -> 13162 bytes
-rw-r--r--res-xhdpi/images/loop00008.pngbin14273 -> 13426 bytes
-rw-r--r--res-xhdpi/images/loop00009.pngbin14122 -> 13291 bytes
-rw-r--r--res-xhdpi/images/loop00010.pngbin14226 -> 13407 bytes
-rw-r--r--res-xhdpi/images/loop00011.pngbin14155 -> 13346 bytes
-rw-r--r--res-xhdpi/images/loop00012.pngbin14375 -> 13566 bytes
-rw-r--r--res-xhdpi/images/loop00013.pngbin14231 -> 13444 bytes
-rw-r--r--res-xhdpi/images/loop00014.pngbin14037 -> 13322 bytes
-rw-r--r--res-xhdpi/images/loop00015.pngbin14052 -> 13292 bytes
-rw-r--r--res-xhdpi/images/loop00016.pngbin13930 -> 13175 bytes
-rw-r--r--res-xhdpi/images/loop00017.pngbin14127 -> 13359 bytes
-rw-r--r--res-xhdpi/images/loop00018.pngbin14157 -> 13405 bytes
-rw-r--r--res-xhdpi/images/loop00019.pngbin13666 -> 12973 bytes
-rw-r--r--res-xhdpi/images/loop00020.pngbin13677 -> 12998 bytes
-rw-r--r--res-xhdpi/images/loop00021.pngbin13777 -> 13037 bytes
-rw-r--r--res-xhdpi/images/loop00022.pngbin13546 -> 12811 bytes
-rw-r--r--res-xhdpi/images/loop00023.pngbin13674 -> 12911 bytes
-rw-r--r--res-xhdpi/images/loop00024.pngbin13465 -> 12696 bytes
-rw-r--r--res-xhdpi/images/loop00025.pngbin13421 -> 12677 bytes
-rw-r--r--res-xhdpi/images/loop00026.pngbin13507 -> 12789 bytes
-rw-r--r--res-xhdpi/images/loop00027.pngbin13272 -> 12504 bytes
-rw-r--r--res-xhdpi/images/loop00028.pngbin13692 -> 12906 bytes
-rw-r--r--res-xhdpi/images/loop00029.pngbin13709 -> 12916 bytes
-rw-r--r--res-xhdpi/images/loop00030.pngbin13650 -> 12847 bytes
-rw-r--r--res-xhdpi/images/loop00031.pngbin13519 -> 12718 bytes
-rw-r--r--res-xhdpi/images/loop00032.pngbin13523 -> 12708 bytes
-rw-r--r--res-xhdpi/images/loop00033.pngbin13526 -> 12751 bytes
-rw-r--r--res-xhdpi/images/loop00034.pngbin13751 -> 12940 bytes
-rw-r--r--res-xhdpi/images/loop00035.pngbin14005 -> 13215 bytes
-rw-r--r--res-xhdpi/images/loop00036.pngbin14137 -> 13399 bytes
-rw-r--r--res-xhdpi/images/loop00037.pngbin14320 -> 13587 bytes
-rw-r--r--res-xhdpi/images/loop00038.pngbin14322 -> 13600 bytes
-rw-r--r--res-xhdpi/images/loop00039.pngbin14536 -> 13801 bytes
-rw-r--r--res-xhdpi/images/loop00040.pngbin14550 -> 13828 bytes
-rw-r--r--res-xhdpi/images/loop00041.pngbin14691 -> 13956 bytes
-rw-r--r--res-xhdpi/images/loop00042.pngbin14935 -> 14150 bytes
-rw-r--r--res-xhdpi/images/loop00043.pngbin14884 -> 14067 bytes
-rw-r--r--res-xhdpi/images/loop00044.pngbin14958 -> 14166 bytes
-rw-r--r--res-xhdpi/images/loop00045.pngbin14868 -> 14042 bytes
-rw-r--r--res-xhdpi/images/loop00046.pngbin15135 -> 14322 bytes
-rw-r--r--res-xhdpi/images/loop00047.pngbin14967 -> 14156 bytes
-rw-r--r--res-xhdpi/images/loop00048.pngbin15144 -> 14298 bytes
-rw-r--r--res-xhdpi/images/loop00049.pngbin15063 -> 14274 bytes
-rw-r--r--res-xhdpi/images/loop00050.pngbin14846 -> 14025 bytes
-rw-r--r--res-xhdpi/images/loop00051.pngbin14867 -> 14001 bytes
-rw-r--r--res-xhdpi/images/loop00052.pngbin14738 -> 13965 bytes
-rw-r--r--res-xhdpi/images/loop00053.pngbin14750 -> 13886 bytes
-rw-r--r--res-xhdpi/images/loop00054.pngbin14430 -> 13573 bytes
-rw-r--r--res-xhdpi/images/loop00055.pngbin14483 -> 13665 bytes
-rw-r--r--res-xhdpi/images/loop00056.pngbin14106 -> 13313 bytes
-rw-r--r--res-xhdpi/images/loop00057.pngbin14331 -> 13505 bytes
-rw-r--r--res-xhdpi/images/loop00058.pngbin13771 -> 12874 bytes
-rw-r--r--res-xhdpi/images/loop00059.pngbin13765 -> 12906 bytes
-rw-r--r--res-xhdpi/images/loop00060.pngbin13502 -> 12708 bytes
-rw-r--r--res-xhdpi/images/loop00061.pngbin13758 -> 12947 bytes
-rw-r--r--res-xhdpi/images/loop00062.pngbin13659 -> 12817 bytes
-rw-r--r--res-xhdpi/images/loop00063.pngbin13836 -> 13004 bytes
-rw-r--r--res-xhdpi/images/loop00064.pngbin13734 -> 12871 bytes
-rw-r--r--res-xhdpi/images/loop00065.pngbin13620 -> 12785 bytes
-rw-r--r--res-xhdpi/images/loop00066.pngbin13530 -> 12684 bytes
-rw-r--r--res-xhdpi/images/loop00067.pngbin13549 -> 12712 bytes
-rw-r--r--res-xhdpi/images/loop00068.pngbin13608 -> 12809 bytes
-rw-r--r--res-xhdpi/images/loop00069.pngbin13454 -> 12696 bytes
-rw-r--r--res-xhdpi/images/loop00070.pngbin13830 -> 12995 bytes
-rw-r--r--res-xhdpi/images/loop00071.pngbin13616 -> 12807 bytes
-rw-r--r--res-xhdpi/images/loop00072.pngbin13308 -> 12497 bytes
-rw-r--r--res-xhdpi/images/loop00073.pngbin13150 -> 12366 bytes
-rw-r--r--res-xhdpi/images/loop00074.pngbin13091 -> 12355 bytes
-rw-r--r--res-xhdpi/images/loop00075.pngbin12954 -> 12181 bytes
-rw-r--r--res-xhdpi/images/loop00076.pngbin12621 -> 11868 bytes
-rw-r--r--res-xhdpi/images/loop00077.pngbin12465 -> 11726 bytes
-rw-r--r--res-xhdpi/images/loop00078.pngbin12583 -> 11873 bytes
-rw-r--r--res-xhdpi/images/loop00079.pngbin12643 -> 11893 bytes
-rw-r--r--res-xhdpi/images/loop00080.pngbin12859 -> 12119 bytes
-rw-r--r--res-xhdpi/images/loop00081.pngbin13182 -> 12445 bytes
-rw-r--r--res-xhdpi/images/loop00082.pngbin13031 -> 12273 bytes
-rw-r--r--res-xhdpi/images/loop00083.pngbin12974 -> 12183 bytes
-rw-r--r--res-xhdpi/images/loop00084.pngbin13116 -> 12329 bytes
-rw-r--r--res-xhdpi/images/loop00085.pngbin13734 -> 12875 bytes
-rw-r--r--res-xhdpi/images/loop00086.pngbin13390 -> 12559 bytes
-rw-r--r--res-xhdpi/images/loop00087.pngbin13576 -> 12706 bytes
-rw-r--r--res-xhdpi/images/loop00088.pngbin13439 -> 12610 bytes
-rw-r--r--res-xhdpi/images/loop00089.pngbin13377 -> 12531 bytes
-rw-r--r--res-xhdpi/images/loop00090.pngbin13121 -> 12215 bytes
-rw-r--r--res-xxhdpi/images/loop00000.pngbin23844 -> 22250 bytes
-rw-r--r--res-xxhdpi/images/loop00001.pngbin23888 -> 22260 bytes
-rw-r--r--res-xxhdpi/images/loop00002.pngbin23921 -> 22323 bytes
-rw-r--r--res-xxhdpi/images/loop00003.pngbin23643 -> 22069 bytes
-rw-r--r--res-xxhdpi/images/loop00004.pngbin24601 -> 22969 bytes
-rw-r--r--res-xxhdpi/images/loop00005.pngbin24930 -> 23280 bytes
-rw-r--r--res-xxhdpi/images/loop00006.pngbin25409 -> 23713 bytes
-rw-r--r--res-xxhdpi/images/loop00007.pngbin25252 -> 23577 bytes
-rw-r--r--res-xxhdpi/images/loop00008.pngbin25374 -> 23713 bytes
-rw-r--r--res-xxhdpi/images/loop00009.pngbin25053 -> 23372 bytes
-rw-r--r--res-xxhdpi/images/loop00010.pngbin25072 -> 23521 bytes
-rw-r--r--res-xxhdpi/images/loop00011.pngbin25067 -> 23468 bytes
-rw-r--r--res-xxhdpi/images/loop00012.pngbin24800 -> 23188 bytes
-rw-r--r--res-xxhdpi/images/loop00013.pngbin24816 -> 23279 bytes
-rw-r--r--res-xxhdpi/images/loop00014.pngbin24964 -> 23440 bytes
-rw-r--r--res-xxhdpi/images/loop00015.pngbin25074 -> 23498 bytes
-rw-r--r--res-xxhdpi/images/loop00016.pngbin25015 -> 23475 bytes
-rw-r--r--res-xxhdpi/images/loop00017.pngbin25105 -> 23496 bytes
-rw-r--r--res-xxhdpi/images/loop00018.pngbin25231 -> 23561 bytes
-rw-r--r--res-xxhdpi/images/loop00019.pngbin24874 -> 23270 bytes
-rw-r--r--res-xxhdpi/images/loop00020.pngbin24930 -> 23358 bytes
-rw-r--r--res-xxhdpi/images/loop00021.pngbin24971 -> 23377 bytes
-rw-r--r--res-xxhdpi/images/loop00022.pngbin25078 -> 23475 bytes
-rw-r--r--res-xxhdpi/images/loop00023.pngbin24149 -> 22471 bytes
-rw-r--r--res-xxhdpi/images/loop00024.pngbin24109 -> 22493 bytes
-rw-r--r--res-xxhdpi/images/loop00025.pngbin23882 -> 22297 bytes
-rw-r--r--res-xxhdpi/images/loop00026.pngbin24783 -> 23125 bytes
-rw-r--r--res-xxhdpi/images/loop00027.pngbin24047 -> 22420 bytes
-rw-r--r--res-xxhdpi/images/loop00028.pngbin24328 -> 22678 bytes
-rw-r--r--res-xxhdpi/images/loop00029.pngbin24725 -> 23034 bytes
-rw-r--r--res-xxhdpi/images/loop00030.pngbin24785 -> 23109 bytes
-rw-r--r--res-xxhdpi/images/loop00031.pngbin24155 -> 22555 bytes
-rw-r--r--res-xxhdpi/images/loop00032.pngbin25102 -> 23459 bytes
-rw-r--r--res-xxhdpi/images/loop00033.pngbin24598 -> 23005 bytes
-rw-r--r--res-xxhdpi/images/loop00034.pngbin24534 -> 22961 bytes
-rw-r--r--res-xxhdpi/images/loop00035.pngbin25207 -> 23649 bytes
-rw-r--r--res-xxhdpi/images/loop00036.pngbin24850 -> 23331 bytes
-rw-r--r--res-xxhdpi/images/loop00037.pngbin25157 -> 23640 bytes
-rw-r--r--res-xxhdpi/images/loop00038.pngbin25568 -> 24031 bytes
-rw-r--r--res-xxhdpi/images/loop00039.pngbin25564 -> 24099 bytes
-rw-r--r--res-xxhdpi/images/loop00040.pngbin26059 -> 24521 bytes
-rw-r--r--res-xxhdpi/images/loop00041.pngbin25794 -> 24242 bytes
-rw-r--r--res-xxhdpi/images/loop00042.pngbin26273 -> 24703 bytes
-rw-r--r--res-xxhdpi/images/loop00043.pngbin25908 -> 24344 bytes
-rw-r--r--res-xxhdpi/images/loop00044.pngbin26792 -> 25285 bytes
-rw-r--r--res-xxhdpi/images/loop00045.pngbin26875 -> 25408 bytes
-rw-r--r--res-xxhdpi/images/loop00046.pngbin26449 -> 24991 bytes
-rw-r--r--res-xxhdpi/images/loop00047.pngbin27025 -> 25458 bytes
-rw-r--r--res-xxhdpi/images/loop00048.pngbin27182 -> 25598 bytes
-rw-r--r--res-xxhdpi/images/loop00049.pngbin27526 -> 25977 bytes
-rw-r--r--res-xxhdpi/images/loop00050.pngbin25743 -> 24186 bytes
-rw-r--r--res-xxhdpi/images/loop00051.pngbin26020 -> 24442 bytes
-rw-r--r--res-xxhdpi/images/loop00052.pngbin26003 -> 24436 bytes
-rw-r--r--res-xxhdpi/images/loop00053.pngbin25282 -> 23786 bytes
-rw-r--r--res-xxhdpi/images/loop00054.pngbin25708 -> 24167 bytes
-rw-r--r--res-xxhdpi/images/loop00055.pngbin25423 -> 23910 bytes
-rw-r--r--res-xxhdpi/images/loop00056.pngbin25506 -> 23882 bytes
-rw-r--r--res-xxhdpi/images/loop00057.pngbin25419 -> 23858 bytes
-rw-r--r--res-xxhdpi/images/loop00058.pngbin24999 -> 23387 bytes
-rw-r--r--res-xxhdpi/images/loop00059.pngbin24117 -> 22514 bytes
-rw-r--r--res-xxhdpi/images/loop00060.pngbin24146 -> 22566 bytes
-rw-r--r--res-xxhdpi/images/loop00061.pngbin24194 -> 22578 bytes
-rw-r--r--res-xxhdpi/images/loop00062.pngbin24219 -> 22564 bytes
-rw-r--r--res-xxhdpi/images/loop00063.pngbin24330 -> 22657 bytes
-rw-r--r--res-xxhdpi/images/loop00064.pngbin24550 -> 22874 bytes
-rw-r--r--res-xxhdpi/images/loop00065.pngbin24535 -> 22746 bytes
-rw-r--r--res-xxhdpi/images/loop00066.pngbin24626 -> 22808 bytes
-rw-r--r--res-xxhdpi/images/loop00067.pngbin24133 -> 22384 bytes
-rw-r--r--res-xxhdpi/images/loop00068.pngbin24107 -> 22328 bytes
-rw-r--r--res-xxhdpi/images/loop00069.pngbin24891 -> 23196 bytes
-rw-r--r--res-xxhdpi/images/loop00070.pngbin24404 -> 22758 bytes
-rw-r--r--res-xxhdpi/images/loop00071.pngbin24130 -> 22433 bytes
-rw-r--r--res-xxhdpi/images/loop00072.pngbin24004 -> 22350 bytes
-rw-r--r--res-xxhdpi/images/loop00073.pngbin23694 -> 22077 bytes
-rw-r--r--res-xxhdpi/images/loop00074.pngbin23131 -> 21585 bytes
-rw-r--r--res-xxhdpi/images/loop00075.pngbin23422 -> 21795 bytes
-rw-r--r--res-xxhdpi/images/loop00076.pngbin22994 -> 21463 bytes
-rw-r--r--res-xxhdpi/images/loop00077.pngbin23012 -> 21422 bytes
-rw-r--r--res-xxhdpi/images/loop00078.pngbin22839 -> 21289 bytes
-rw-r--r--res-xxhdpi/images/loop00079.pngbin23360 -> 21748 bytes
-rw-r--r--res-xxhdpi/images/loop00080.pngbin23761 -> 22136 bytes
-rw-r--r--res-xxhdpi/images/loop00081.pngbin23512 -> 21906 bytes
-rw-r--r--res-xxhdpi/images/loop00082.pngbin23673 -> 22050 bytes
-rw-r--r--res-xxhdpi/images/loop00083.pngbin24356 -> 22755 bytes
-rw-r--r--res-xxhdpi/images/loop00084.pngbin23987 -> 22357 bytes
-rw-r--r--res-xxhdpi/images/loop00085.pngbin24223 -> 22632 bytes
-rw-r--r--res-xxhdpi/images/loop00086.pngbin24309 -> 22726 bytes
-rw-r--r--res-xxhdpi/images/loop00087.pngbin24488 -> 22801 bytes
-rw-r--r--res-xxhdpi/images/loop00088.pngbin24539 -> 22898 bytes
-rw-r--r--res-xxhdpi/images/loop00089.pngbin24543 -> 22853 bytes
-rw-r--r--res-xxhdpi/images/loop00090.pngbin23844 -> 22250 bytes
-rw-r--r--res-xxxhdpi/images/loop00000.pngbin32138 -> 29744 bytes
-rw-r--r--res-xxxhdpi/images/loop00001.pngbin32195 -> 29762 bytes
-rw-r--r--res-xxxhdpi/images/loop00002.pngbin32040 -> 29731 bytes
-rw-r--r--res-xxxhdpi/images/loop00003.pngbin32554 -> 30210 bytes
-rw-r--r--res-xxxhdpi/images/loop00004.pngbin32935 -> 30518 bytes
-rw-r--r--res-xxxhdpi/images/loop00005.pngbin33131 -> 30698 bytes
-rw-r--r--res-xxxhdpi/images/loop00006.pngbin33508 -> 31133 bytes
-rw-r--r--res-xxxhdpi/images/loop00007.pngbin34862 -> 32354 bytes
-rw-r--r--res-xxxhdpi/images/loop00008.pngbin34026 -> 31543 bytes
-rw-r--r--res-xxxhdpi/images/loop00009.pngbin33660 -> 31303 bytes
-rw-r--r--res-xxxhdpi/images/loop00010.pngbin34391 -> 32007 bytes
-rw-r--r--res-xxxhdpi/images/loop00011.pngbin34154 -> 31710 bytes
-rw-r--r--res-xxxhdpi/images/loop00012.pngbin34256 -> 31918 bytes
-rw-r--r--res-xxxhdpi/images/loop00013.pngbin34040 -> 31732 bytes
-rw-r--r--res-xxxhdpi/images/loop00014.pngbin35473 -> 33175 bytes
-rw-r--r--res-xxxhdpi/images/loop00015.pngbin34333 -> 31977 bytes
-rw-r--r--res-xxxhdpi/images/loop00016.pngbin33916 -> 31668 bytes
-rw-r--r--res-xxxhdpi/images/loop00017.pngbin34493 -> 32141 bytes
-rw-r--r--res-xxxhdpi/images/loop00018.pngbin33763 -> 31503 bytes
-rw-r--r--res-xxxhdpi/images/loop00019.pngbin33855 -> 31538 bytes
-rw-r--r--res-xxxhdpi/images/loop00020.pngbin33288 -> 31061 bytes
-rw-r--r--res-xxxhdpi/images/loop00021.pngbin33174 -> 30781 bytes
-rw-r--r--res-xxxhdpi/images/loop00022.pngbin33157 -> 30730 bytes
-rw-r--r--res-xxxhdpi/images/loop00023.pngbin33287 -> 30866 bytes
-rw-r--r--res-xxxhdpi/images/loop00024.pngbin32859 -> 30482 bytes
-rw-r--r--res-xxxhdpi/images/loop00025.pngbin32260 -> 29882 bytes
-rw-r--r--res-xxxhdpi/images/loop00026.pngbin32597 -> 30197 bytes
-rw-r--r--res-xxxhdpi/images/loop00027.pngbin31878 -> 29631 bytes
-rw-r--r--res-xxxhdpi/images/loop00028.pngbin32518 -> 30156 bytes
-rw-r--r--res-xxxhdpi/images/loop00029.pngbin32930 -> 30608 bytes
-rw-r--r--res-xxxhdpi/images/loop00030.pngbin33688 -> 31201 bytes
-rw-r--r--res-xxxhdpi/images/loop00031.pngbin32547 -> 30294 bytes
-rw-r--r--res-xxxhdpi/images/loop00032.pngbin33104 -> 30856 bytes
-rw-r--r--res-xxxhdpi/images/loop00033.pngbin32907 -> 30695 bytes
-rw-r--r--res-xxxhdpi/images/loop00034.pngbin33611 -> 31456 bytes
-rw-r--r--res-xxxhdpi/images/loop00035.pngbin33202 -> 31051 bytes
-rw-r--r--res-xxxhdpi/images/loop00036.pngbin32973 -> 31007 bytes
-rw-r--r--res-xxxhdpi/images/loop00037.pngbin33595 -> 31503 bytes
-rw-r--r--res-xxxhdpi/images/loop00038.pngbin34809 -> 32686 bytes
-rw-r--r--res-xxxhdpi/images/loop00039.pngbin34692 -> 32568 bytes
-rw-r--r--res-xxxhdpi/images/loop00040.pngbin35484 -> 33303 bytes
-rw-r--r--res-xxxhdpi/images/loop00041.pngbin35146 -> 33036 bytes
-rw-r--r--res-xxxhdpi/images/loop00042.pngbin34815 -> 32627 bytes
-rw-r--r--res-xxxhdpi/images/loop00043.pngbin35465 -> 33272 bytes
-rw-r--r--res-xxxhdpi/images/loop00044.pngbin35643 -> 33420 bytes
-rw-r--r--res-xxxhdpi/images/loop00045.pngbin35835 -> 33601 bytes
-rw-r--r--res-xxxhdpi/images/loop00046.pngbin36635 -> 34392 bytes
-rw-r--r--res-xxxhdpi/images/loop00047.pngbin36481 -> 34190 bytes
-rw-r--r--res-xxxhdpi/images/loop00048.pngbin36482 -> 34209 bytes
-rw-r--r--res-xxxhdpi/images/loop00049.pngbin36341 -> 34099 bytes
-rw-r--r--res-xxxhdpi/images/loop00050.pngbin34835 -> 32586 bytes
-rw-r--r--res-xxxhdpi/images/loop00051.pngbin35569 -> 33282 bytes
-rw-r--r--res-xxxhdpi/images/loop00052.pngbin34899 -> 32691 bytes
-rw-r--r--res-xxxhdpi/images/loop00053.pngbin34589 -> 32340 bytes
-rw-r--r--res-xxxhdpi/images/loop00054.pngbin34365 -> 32088 bytes
-rw-r--r--res-xxxhdpi/images/loop00055.pngbin34332 -> 32066 bytes
-rw-r--r--res-xxxhdpi/images/loop00056.pngbin34188 -> 31890 bytes
-rw-r--r--res-xxxhdpi/images/loop00057.pngbin33961 -> 31671 bytes
-rw-r--r--res-xxxhdpi/images/loop00058.pngbin33300 -> 31028 bytes
-rw-r--r--res-xxxhdpi/images/loop00059.pngbin33405 -> 31030 bytes
-rw-r--r--res-xxxhdpi/images/loop00060.pngbin33229 -> 30831 bytes
-rw-r--r--res-xxxhdpi/images/loop00061.pngbin31814 -> 29450 bytes
-rw-r--r--res-xxxhdpi/images/loop00062.pngbin32900 -> 30420 bytes
-rw-r--r--res-xxxhdpi/images/loop00063.pngbin32809 -> 30289 bytes
-rw-r--r--res-xxxhdpi/images/loop00064.pngbin32625 -> 30063 bytes
-rw-r--r--res-xxxhdpi/images/loop00065.pngbin33560 -> 30967 bytes
-rw-r--r--res-xxxhdpi/images/loop00066.pngbin32825 -> 30301 bytes
-rw-r--r--res-xxxhdpi/images/loop00067.pngbin32885 -> 30273 bytes
-rw-r--r--res-xxxhdpi/images/loop00068.pngbin31901 -> 29460 bytes
-rw-r--r--res-xxxhdpi/images/loop00069.pngbin32514 -> 29991 bytes
-rw-r--r--res-xxxhdpi/images/loop00070.pngbin33063 -> 30574 bytes
-rw-r--r--res-xxxhdpi/images/loop00071.pngbin32486 -> 30057 bytes
-rw-r--r--res-xxxhdpi/images/loop00072.pngbin32218 -> 29668 bytes
-rw-r--r--res-xxxhdpi/images/loop00073.pngbin32100 -> 29647 bytes
-rw-r--r--res-xxxhdpi/images/loop00074.pngbin31018 -> 28742 bytes
-rw-r--r--res-xxxhdpi/images/loop00075.pngbin31186 -> 28865 bytes
-rw-r--r--res-xxxhdpi/images/loop00076.pngbin30704 -> 28477 bytes
-rw-r--r--res-xxxhdpi/images/loop00077.pngbin30379 -> 28217 bytes
-rw-r--r--res-xxxhdpi/images/loop00078.pngbin31001 -> 28767 bytes
-rw-r--r--res-xxxhdpi/images/loop00079.pngbin31273 -> 29012 bytes
-rw-r--r--res-xxxhdpi/images/loop00080.pngbin30904 -> 28594 bytes
-rw-r--r--res-xxxhdpi/images/loop00081.pngbin31821 -> 29414 bytes
-rw-r--r--res-xxxhdpi/images/loop00082.pngbin31287 -> 28937 bytes
-rw-r--r--res-xxxhdpi/images/loop00083.pngbin31149 -> 28804 bytes
-rw-r--r--res-xxxhdpi/images/loop00084.pngbin31294 -> 28994 bytes
-rw-r--r--res-xxxhdpi/images/loop00085.pngbin31875 -> 29510 bytes
-rw-r--r--res-xxxhdpi/images/loop00086.pngbin32357 -> 30033 bytes
-rw-r--r--res-xxxhdpi/images/loop00087.pngbin32312 -> 29930 bytes
-rw-r--r--res-xxxhdpi/images/loop00088.pngbin31914 -> 29559 bytes
-rw-r--r--res-xxxhdpi/images/loop00089.pngbin32685 -> 30335 bytes
-rw-r--r--res-xxxhdpi/images/loop00090.pngbin32138 -> 29744 bytes
-rw-r--r--screen_ui.cpp58
-rw-r--r--screen_ui.h45
-rw-r--r--wear_ui.cpp357
-rw-r--r--wear_ui.h74
463 files changed, 239 insertions, 441 deletions
diff --git a/install.cpp b/install.cpp
index d30890a9e..e144d9b29 100644
--- a/install.cpp
+++ b/install.cpp
@@ -373,6 +373,14 @@ try_update_binary(const char* path, ZipArchive* zip, bool* wipe_cache,
}
pid_t pid = fork();
+
+ if (pid == -1) {
+ close(pipefd[0]);
+ close(pipefd[1]);
+ LOGE("Failed to fork update binary: %s\n", strerror(errno));
+ return INSTALL_ERROR;
+ }
+
if (pid == 0) {
umask(022);
close(pipefd[0]);
diff --git a/minui/font_10x18.h b/minui/font_10x18.h
index 29d705344..30dfb9c56 100644
--- a/minui/font_10x18.h
+++ b/minui/font_10x18.h
@@ -1,14 +1,14 @@
struct {
unsigned width;
unsigned height;
- unsigned cwidth;
- unsigned cheight;
+ unsigned char_width;
+ unsigned char_height;
unsigned char rundata[2973];
} font = {
.width = 960,
.height = 18,
- .cwidth = 10,
- .cheight = 18,
+ .char_width = 10,
+ .char_height = 18,
.rundata = {
0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x55,0x82,0x06,0x82,0x02,0x82,0x10,0x82,
0x11,0x83,0x08,0x82,0x0a,0x82,0x04,0x82,0x46,0x82,0x08,0x82,0x07,0x84,0x06,
diff --git a/minui/graphics.cpp b/minui/graphics.cpp
index c0eea9e38..ab56a6fd6 100644
--- a/minui/graphics.cpp
+++ b/minui/graphics.cpp
@@ -35,12 +35,6 @@
#include "minui.h"
#include "graphics.h"
-struct GRFont {
- GRSurface* texture;
- int cwidth;
- int cheight;
-};
-
static GRFont* gr_font = NULL;
static minui_backend* gr_backend = NULL;
@@ -60,15 +54,20 @@ static bool outside(int x, int y)
return x < 0 || x >= gr_draw->width || y < 0 || y >= gr_draw->height;
}
-int gr_measure(const char *s)
+const GRFont* gr_sys_font()
+{
+ return gr_font;
+}
+
+int gr_measure(const GRFont* font, const char *s)
{
- return gr_font->cwidth * strlen(s);
+ return font->char_width * strlen(s);
}
-void gr_font_size(int *x, int *y)
+void gr_font_size(const GRFont* font, int *x, int *y)
{
- *x = gr_font->cwidth;
- *y = gr_font->cheight;
+ *x = font->char_width;
+ *y = font->char_height;
}
static void text_blend(unsigned char* src_p, int src_row_bytes,
@@ -103,34 +102,32 @@ static void text_blend(unsigned char* src_p, int src_row_bytes,
}
}
-void gr_text(int x, int y, const char *s, bool bold)
+void gr_text(const GRFont* font, int x, int y, const char *s, bool bold)
{
- GRFont* font = gr_font;
-
if (!font->texture || gr_current_a == 0) return;
- bold = bold && (font->texture->height != font->cheight);
+ bold = bold && (font->texture->height != font->char_height);
x += overscan_offset_x;
y += overscan_offset_y;
unsigned char ch;
while ((ch = *s++)) {
- if (outside(x, y) || outside(x+font->cwidth-1, y+font->cheight-1)) break;
+ if (outside(x, y) || outside(x+font->char_width-1, y+font->char_height-1)) break;
if (ch < ' ' || ch > '~') {
ch = '?';
}
- unsigned char* src_p = font->texture->data + ((ch - ' ') * font->cwidth) +
- (bold ? font->cheight * font->texture->row_bytes : 0);
+ unsigned char* src_p = font->texture->data + ((ch - ' ') * font->char_width) +
+ (bold ? font->char_height * font->texture->row_bytes : 0);
unsigned char* dst_p = gr_draw->data + y*gr_draw->row_bytes + x*gr_draw->pixel_bytes;
text_blend(src_p, font->texture->row_bytes,
dst_p, gr_draw->row_bytes,
- font->cwidth, font->cheight);
+ font->char_width, font->char_height);
- x += font->cwidth;
+ x += font->char_width;
}
}
@@ -267,40 +264,59 @@ unsigned int gr_get_height(GRSurface* surface) {
return surface->height;
}
+int gr_init_font(const char* name, GRFont** dest) {
+ GRFont* font = reinterpret_cast<GRFont*>(calloc(1, sizeof(*gr_font)));
+ if (font == nullptr) {
+ return -1;
+ }
+
+ int res = res_create_alpha_surface(name, &(font->texture));
+ if (res < 0) {
+ free(font);
+ return res;
+ }
+
+ // The font image should be a 96x2 array of character images. The
+ // columns are the printable ASCII characters 0x20 - 0x7f. The
+ // top row is regular text; the bottom row is bold.
+ font->char_width = font->texture->width / 96;
+ font->char_height = font->texture->height / 2;
+
+ *dest = font;
+
+ return 0;
+}
+
static void gr_init_font(void)
{
- gr_font = reinterpret_cast<GRFont*>(calloc(sizeof(*gr_font), 1));
-
- int res = res_create_alpha_surface("font", &(gr_font->texture));
+ int res = gr_init_font("font", &gr_font);
if (res == 0) {
- // The font image should be a 96x2 array of character images. The
- // columns are the printable ASCII characters 0x20 - 0x7f. The
- // top row is regular text; the bottom row is bold.
- gr_font->cwidth = gr_font->texture->width / 96;
- gr_font->cheight = gr_font->texture->height / 2;
- } else {
- printf("failed to read font: res=%d\n", res);
-
- // fall back to the compiled-in font.
- gr_font->texture = reinterpret_cast<GRSurface*>(malloc(sizeof(*gr_font->texture)));
- gr_font->texture->width = font.width;
- gr_font->texture->height = font.height;
- gr_font->texture->row_bytes = font.width;
- gr_font->texture->pixel_bytes = 1;
-
- unsigned char* bits = reinterpret_cast<unsigned char*>(malloc(font.width * font.height));
- gr_font->texture->data = reinterpret_cast<unsigned char*>(bits);
-
- unsigned char data;
- unsigned char* in = font.rundata;
- while((data = *in++)) {
- memset(bits, (data & 0x80) ? 255 : 0, data & 0x7f);
- bits += (data & 0x7f);
- }
+ return;
+ }
+
+ printf("failed to read font: res=%d\n", res);
+
- gr_font->cwidth = font.cwidth;
- gr_font->cheight = font.cheight;
+ // fall back to the compiled-in font.
+ gr_font = reinterpret_cast<GRFont*>(calloc(1, sizeof(*gr_font)));
+ gr_font->texture = reinterpret_cast<GRSurface*>(malloc(sizeof(*gr_font->texture)));
+ gr_font->texture->width = font.width;
+ gr_font->texture->height = font.height;
+ gr_font->texture->row_bytes = font.width;
+ gr_font->texture->pixel_bytes = 1;
+
+ unsigned char* bits = reinterpret_cast<unsigned char*>(malloc(font.width * font.height));
+ gr_font->texture->data = reinterpret_cast<unsigned char*>(bits);
+
+ unsigned char data;
+ unsigned char* in = font.rundata;
+ while((data = *in++)) {
+ memset(bits, (data & 0x80) ? 255 : 0, data & 0x7f);
+ bits += (data & 0x7f);
}
+
+ gr_font->char_width = font.char_width;
+ gr_font->char_height = font.char_height;
}
#if 0
diff --git a/minui/minui.h b/minui/minui.h
index fb0bbe10c..d30426dc8 100644
--- a/minui/minui.h
+++ b/minui/minui.h
@@ -33,6 +33,12 @@ struct GRSurface {
unsigned char* data;
};
+struct GRFont {
+ GRSurface* texture;
+ int char_width;
+ int char_height;
+};
+
int gr_init();
void gr_exit();
@@ -45,10 +51,14 @@ void gr_fb_blank(bool blank);
void gr_clear(); // clear entire surface to current color
void gr_color(unsigned char r, unsigned char g, unsigned char b, unsigned char a);
void gr_fill(int x1, int y1, int x2, int y2);
-void gr_text(int x, int y, const char *s, bool bold);
+
void gr_texticon(int x, int y, GRSurface* icon);
-int gr_measure(const char *s);
-void gr_font_size(int *x, int *y);
+
+const GRFont* gr_sys_font();
+int gr_init_font(const char* name, GRFont** dest);
+void gr_text(const GRFont* font, int x, int y, const char *s, bool bold);
+int gr_measure(const GRFont* font, const char *s);
+void gr_font_size(const GRFont* font, int *x, int *y);
void gr_blit(GRSurface* source, int sx, int sy, int w, int h, int dx, int dy);
unsigned int gr_get_width(GRSurface* surface);
diff --git a/res-hdpi/images/loop00000.png b/res-hdpi/images/loop00000.png
index 030fa2b36..9e9d1e320 100644
--- a/res-hdpi/images/loop00000.png
+++ b/res-hdpi/images/loop00000.png
Binary files differ
diff --git a/res-hdpi/images/loop00001.png b/res-hdpi/images/loop00001.png
index 546a10247..cd53cc6cd 100644
--- a/res-hdpi/images/loop00001.png
+++ b/res-hdpi/images/loop00001.png
Binary files differ
diff --git a/res-hdpi/images/loop00002.png b/res-hdpi/images/loop00002.png
index 262be3f24..d5b5cead4 100644
--- a/res-hdpi/images/loop00002.png
+++ b/res-hdpi/images/loop00002.png
Binary files differ
diff --git a/res-hdpi/images/loop00003.png b/res-hdpi/images/loop00003.png
index 1282fb308..50e08ded4 100644
--- a/res-hdpi/images/loop00003.png
+++ b/res-hdpi/images/loop00003.png
Binary files differ
diff --git a/res-hdpi/images/loop00004.png b/res-hdpi/images/loop00004.png
index 2ff7678ff..d69f76263 100644
--- a/res-hdpi/images/loop00004.png
+++ b/res-hdpi/images/loop00004.png
Binary files differ
diff --git a/res-hdpi/images/loop00005.png b/res-hdpi/images/loop00005.png
index 20b4d815b..32d368e28 100644
--- a/res-hdpi/images/loop00005.png
+++ b/res-hdpi/images/loop00005.png
Binary files differ
diff --git a/res-hdpi/images/loop00006.png b/res-hdpi/images/loop00006.png
index 0f5b28d49..fcc750bdf 100644
--- a/res-hdpi/images/loop00006.png
+++ b/res-hdpi/images/loop00006.png
Binary files differ
diff --git a/res-hdpi/images/loop00007.png b/res-hdpi/images/loop00007.png
index 008acc85b..d37ba5ca8 100644
--- a/res-hdpi/images/loop00007.png
+++ b/res-hdpi/images/loop00007.png
Binary files differ
diff --git a/res-hdpi/images/loop00008.png b/res-hdpi/images/loop00008.png
index ca1309dc2..5a1605470 100644
--- a/res-hdpi/images/loop00008.png
+++ b/res-hdpi/images/loop00008.png
Binary files differ
diff --git a/res-hdpi/images/loop00009.png b/res-hdpi/images/loop00009.png
index b2730f198..49ede64ad 100644
--- a/res-hdpi/images/loop00009.png
+++ b/res-hdpi/images/loop00009.png
Binary files differ
diff --git a/res-hdpi/images/loop00010.png b/res-hdpi/images/loop00010.png
index 3867e9c96..f9e219ff7 100644
--- a/res-hdpi/images/loop00010.png
+++ b/res-hdpi/images/loop00010.png
Binary files differ
diff --git a/res-hdpi/images/loop00011.png b/res-hdpi/images/loop00011.png
index 2761d8fcb..3fbe0b5aa 100644
--- a/res-hdpi/images/loop00011.png
+++ b/res-hdpi/images/loop00011.png
Binary files differ
diff --git a/res-hdpi/images/loop00012.png b/res-hdpi/images/loop00012.png
index 2d976ef62..32294612c 100644
--- a/res-hdpi/images/loop00012.png
+++ b/res-hdpi/images/loop00012.png
Binary files differ
diff --git a/res-hdpi/images/loop00013.png b/res-hdpi/images/loop00013.png
index 5c96bb52c..69773ec6c 100644
--- a/res-hdpi/images/loop00013.png
+++ b/res-hdpi/images/loop00013.png
Binary files differ
diff --git a/res-hdpi/images/loop00014.png b/res-hdpi/images/loop00014.png
index d481ec57a..56c15ccde 100644
--- a/res-hdpi/images/loop00014.png
+++ b/res-hdpi/images/loop00014.png
Binary files differ
diff --git a/res-hdpi/images/loop00015.png b/res-hdpi/images/loop00015.png
index 47716ede3..26126814d 100644
--- a/res-hdpi/images/loop00015.png
+++ b/res-hdpi/images/loop00015.png
Binary files differ
diff --git a/res-hdpi/images/loop00016.png b/res-hdpi/images/loop00016.png
index c0cffe85c..69f632ec4 100644
--- a/res-hdpi/images/loop00016.png
+++ b/res-hdpi/images/loop00016.png
Binary files differ
diff --git a/res-hdpi/images/loop00017.png b/res-hdpi/images/loop00017.png
index a0dc2e51f..af356150e 100644
--- a/res-hdpi/images/loop00017.png
+++ b/res-hdpi/images/loop00017.png
Binary files differ
diff --git a/res-hdpi/images/loop00018.png b/res-hdpi/images/loop00018.png
index c8eefc5f8..0f72ff090 100644
--- a/res-hdpi/images/loop00018.png
+++ b/res-hdpi/images/loop00018.png
Binary files differ
diff --git a/res-hdpi/images/loop00019.png b/res-hdpi/images/loop00019.png
index 0d9d8e0fe..f167644c3 100644
--- a/res-hdpi/images/loop00019.png
+++ b/res-hdpi/images/loop00019.png
Binary files differ
diff --git a/res-hdpi/images/loop00020.png b/res-hdpi/images/loop00020.png
index b4909a80d..202a0fe3e 100644
--- a/res-hdpi/images/loop00020.png
+++ b/res-hdpi/images/loop00020.png
Binary files differ
diff --git a/res-hdpi/images/loop00021.png b/res-hdpi/images/loop00021.png
index b3c5274c8..8c102d983 100644
--- a/res-hdpi/images/loop00021.png
+++ b/res-hdpi/images/loop00021.png
Binary files differ
diff --git a/res-hdpi/images/loop00022.png b/res-hdpi/images/loop00022.png
index 827c93707..4bde99c61 100644
--- a/res-hdpi/images/loop00022.png
+++ b/res-hdpi/images/loop00022.png
Binary files differ
diff --git a/res-hdpi/images/loop00023.png b/res-hdpi/images/loop00023.png
index 84440fec6..350acfb07 100644
--- a/res-hdpi/images/loop00023.png
+++ b/res-hdpi/images/loop00023.png
Binary files differ
diff --git a/res-hdpi/images/loop00024.png b/res-hdpi/images/loop00024.png
index cfc4c5bab..dde1a8e70 100644
--- a/res-hdpi/images/loop00024.png
+++ b/res-hdpi/images/loop00024.png
Binary files differ
diff --git a/res-hdpi/images/loop00025.png b/res-hdpi/images/loop00025.png
index fd048fdcf..a133ebd4d 100644
--- a/res-hdpi/images/loop00025.png
+++ b/res-hdpi/images/loop00025.png
Binary files differ
diff --git a/res-hdpi/images/loop00026.png b/res-hdpi/images/loop00026.png
index 68251873a..6825ad93d 100644
--- a/res-hdpi/images/loop00026.png
+++ b/res-hdpi/images/loop00026.png
Binary files differ
diff --git a/res-hdpi/images/loop00027.png b/res-hdpi/images/loop00027.png
index 238dad60a..91bf1cf74 100644
--- a/res-hdpi/images/loop00027.png
+++ b/res-hdpi/images/loop00027.png
Binary files differ
diff --git a/res-hdpi/images/loop00028.png b/res-hdpi/images/loop00028.png
index 55e058d2e..8cba9bba3 100644
--- a/res-hdpi/images/loop00028.png
+++ b/res-hdpi/images/loop00028.png
Binary files differ
diff --git a/res-hdpi/images/loop00029.png b/res-hdpi/images/loop00029.png
index fc761370e..bd0599357 100644
--- a/res-hdpi/images/loop00029.png
+++ b/res-hdpi/images/loop00029.png
Binary files differ
diff --git a/res-hdpi/images/loop00030.png b/res-hdpi/images/loop00030.png
index 920634f89..e30821a93 100644
--- a/res-hdpi/images/loop00030.png
+++ b/res-hdpi/images/loop00030.png
Binary files differ
diff --git a/res-hdpi/images/loop00031.png b/res-hdpi/images/loop00031.png
index f54846461..40198609b 100644
--- a/res-hdpi/images/loop00031.png
+++ b/res-hdpi/images/loop00031.png
Binary files differ
diff --git a/res-hdpi/images/loop00032.png b/res-hdpi/images/loop00032.png
index 4cff5c44c..41832bb94 100644
--- a/res-hdpi/images/loop00032.png
+++ b/res-hdpi/images/loop00032.png
Binary files differ
diff --git a/res-hdpi/images/loop00033.png b/res-hdpi/images/loop00033.png
index 5d2d27222..583f19cba 100644
--- a/res-hdpi/images/loop00033.png
+++ b/res-hdpi/images/loop00033.png
Binary files differ
diff --git a/res-hdpi/images/loop00034.png b/res-hdpi/images/loop00034.png
index b4d73416e..bffa72bcd 100644
--- a/res-hdpi/images/loop00034.png
+++ b/res-hdpi/images/loop00034.png
Binary files differ
diff --git a/res-hdpi/images/loop00035.png b/res-hdpi/images/loop00035.png
index 49025b82d..d65d6b4e8 100644
--- a/res-hdpi/images/loop00035.png
+++ b/res-hdpi/images/loop00035.png
Binary files differ
diff --git a/res-hdpi/images/loop00036.png b/res-hdpi/images/loop00036.png
index b3aa58da5..a26cda154 100644
--- a/res-hdpi/images/loop00036.png
+++ b/res-hdpi/images/loop00036.png
Binary files differ
diff --git a/res-hdpi/images/loop00037.png b/res-hdpi/images/loop00037.png
index ff47e85d6..660530dca 100644
--- a/res-hdpi/images/loop00037.png
+++ b/res-hdpi/images/loop00037.png
Binary files differ
diff --git a/res-hdpi/images/loop00038.png b/res-hdpi/images/loop00038.png
index 8039b925f..a3c9f31b9 100644
--- a/res-hdpi/images/loop00038.png
+++ b/res-hdpi/images/loop00038.png
Binary files differ
diff --git a/res-hdpi/images/loop00039.png b/res-hdpi/images/loop00039.png
index e76d4bc96..609d8cac2 100644
--- a/res-hdpi/images/loop00039.png
+++ b/res-hdpi/images/loop00039.png
Binary files differ
diff --git a/res-hdpi/images/loop00040.png b/res-hdpi/images/loop00040.png
index 963cce7b6..41904445b 100644
--- a/res-hdpi/images/loop00040.png
+++ b/res-hdpi/images/loop00040.png
Binary files differ
diff --git a/res-hdpi/images/loop00041.png b/res-hdpi/images/loop00041.png
index dcd5f1117..9c3c37188 100644
--- a/res-hdpi/images/loop00041.png
+++ b/res-hdpi/images/loop00041.png
Binary files differ
diff --git a/res-hdpi/images/loop00042.png b/res-hdpi/images/loop00042.png
index 72fe63ab4..dd5baae16 100644
--- a/res-hdpi/images/loop00042.png
+++ b/res-hdpi/images/loop00042.png
Binary files differ
diff --git a/res-hdpi/images/loop00043.png b/res-hdpi/images/loop00043.png
index c109af88f..814724ef5 100644
--- a/res-hdpi/images/loop00043.png
+++ b/res-hdpi/images/loop00043.png
Binary files differ
diff --git a/res-hdpi/images/loop00044.png b/res-hdpi/images/loop00044.png
index 6648ec226..63c7392a1 100644
--- a/res-hdpi/images/loop00044.png
+++ b/res-hdpi/images/loop00044.png
Binary files differ
diff --git a/res-hdpi/images/loop00045.png b/res-hdpi/images/loop00045.png
index 90bf4313d..5c666effc 100644
--- a/res-hdpi/images/loop00045.png
+++ b/res-hdpi/images/loop00045.png
Binary files differ
diff --git a/res-hdpi/images/loop00046.png b/res-hdpi/images/loop00046.png
index 50473f0eb..6fa4667ab 100644
--- a/res-hdpi/images/loop00046.png
+++ b/res-hdpi/images/loop00046.png
Binary files differ
diff --git a/res-hdpi/images/loop00047.png b/res-hdpi/images/loop00047.png
index db4702369..52537ea6e 100644
--- a/res-hdpi/images/loop00047.png
+++ b/res-hdpi/images/loop00047.png
Binary files differ
diff --git a/res-hdpi/images/loop00048.png b/res-hdpi/images/loop00048.png
index 462a42131..412fd1c71 100644
--- a/res-hdpi/images/loop00048.png
+++ b/res-hdpi/images/loop00048.png
Binary files differ
diff --git a/res-hdpi/images/loop00049.png b/res-hdpi/images/loop00049.png
index f86af40f2..6cc8ef01b 100644
--- a/res-hdpi/images/loop00049.png
+++ b/res-hdpi/images/loop00049.png
Binary files differ
diff --git a/res-hdpi/images/loop00050.png b/res-hdpi/images/loop00050.png
index 8c0af52ff..caf36c504 100644
--- a/res-hdpi/images/loop00050.png
+++ b/res-hdpi/images/loop00050.png
Binary files differ
diff --git a/res-hdpi/images/loop00051.png b/res-hdpi/images/loop00051.png
index 2360fc0db..1cf8fb4a5 100644
--- a/res-hdpi/images/loop00051.png
+++ b/res-hdpi/images/loop00051.png
Binary files differ
diff --git a/res-hdpi/images/loop00052.png b/res-hdpi/images/loop00052.png
index dd5220018..7ee60e82a 100644
--- a/res-hdpi/images/loop00052.png
+++ b/res-hdpi/images/loop00052.png
Binary files differ
diff --git a/res-hdpi/images/loop00053.png b/res-hdpi/images/loop00053.png
index c7f0c1886..691bca0ea 100644
--- a/res-hdpi/images/loop00053.png
+++ b/res-hdpi/images/loop00053.png
Binary files differ
diff --git a/res-hdpi/images/loop00054.png b/res-hdpi/images/loop00054.png
index 7f16eff59..fa8d0002d 100644
--- a/res-hdpi/images/loop00054.png
+++ b/res-hdpi/images/loop00054.png
Binary files differ
diff --git a/res-hdpi/images/loop00055.png b/res-hdpi/images/loop00055.png
index b9af0ce54..3b7acb052 100644
--- a/res-hdpi/images/loop00055.png
+++ b/res-hdpi/images/loop00055.png
Binary files differ
diff --git a/res-hdpi/images/loop00056.png b/res-hdpi/images/loop00056.png
index 40b9e9b32..1c94d3094 100644
--- a/res-hdpi/images/loop00056.png
+++ b/res-hdpi/images/loop00056.png
Binary files differ
diff --git a/res-hdpi/images/loop00057.png b/res-hdpi/images/loop00057.png
index 51068cb20..703f48e95 100644
--- a/res-hdpi/images/loop00057.png
+++ b/res-hdpi/images/loop00057.png
Binary files differ
diff --git a/res-hdpi/images/loop00058.png b/res-hdpi/images/loop00058.png
index eba4486ac..8dae68a71 100644
--- a/res-hdpi/images/loop00058.png
+++ b/res-hdpi/images/loop00058.png
Binary files differ
diff --git a/res-hdpi/images/loop00059.png b/res-hdpi/images/loop00059.png
index 28761ac84..1105b4381 100644
--- a/res-hdpi/images/loop00059.png
+++ b/res-hdpi/images/loop00059.png
Binary files differ
diff --git a/res-hdpi/images/loop00060.png b/res-hdpi/images/loop00060.png
index 6532eb93a..8ae4a864c 100644
--- a/res-hdpi/images/loop00060.png
+++ b/res-hdpi/images/loop00060.png
Binary files differ
diff --git a/res-hdpi/images/loop00061.png b/res-hdpi/images/loop00061.png
index fbe2e2e9d..c4fca2f7e 100644
--- a/res-hdpi/images/loop00061.png
+++ b/res-hdpi/images/loop00061.png
Binary files differ
diff --git a/res-hdpi/images/loop00062.png b/res-hdpi/images/loop00062.png
index 54341e34a..d59b9d40d 100644
--- a/res-hdpi/images/loop00062.png
+++ b/res-hdpi/images/loop00062.png
Binary files differ
diff --git a/res-hdpi/images/loop00063.png b/res-hdpi/images/loop00063.png
index cfe9c802c..7ac8fdf08 100644
--- a/res-hdpi/images/loop00063.png
+++ b/res-hdpi/images/loop00063.png
Binary files differ
diff --git a/res-hdpi/images/loop00064.png b/res-hdpi/images/loop00064.png
index e1fe674ea..1fa8fe817 100644
--- a/res-hdpi/images/loop00064.png
+++ b/res-hdpi/images/loop00064.png
Binary files differ
diff --git a/res-hdpi/images/loop00065.png b/res-hdpi/images/loop00065.png
index efa35b64a..542ed34cf 100644
--- a/res-hdpi/images/loop00065.png
+++ b/res-hdpi/images/loop00065.png
Binary files differ
diff --git a/res-hdpi/images/loop00066.png b/res-hdpi/images/loop00066.png
index d8c20fef1..7b6af52f5 100644
--- a/res-hdpi/images/loop00066.png
+++ b/res-hdpi/images/loop00066.png
Binary files differ
diff --git a/res-hdpi/images/loop00067.png b/res-hdpi/images/loop00067.png
index ddf1ea4cc..58d4fb732 100644
--- a/res-hdpi/images/loop00067.png
+++ b/res-hdpi/images/loop00067.png
Binary files differ
diff --git a/res-hdpi/images/loop00068.png b/res-hdpi/images/loop00068.png
index 827cfc6af..1f1616e82 100644
--- a/res-hdpi/images/loop00068.png
+++ b/res-hdpi/images/loop00068.png
Binary files differ
diff --git a/res-hdpi/images/loop00069.png b/res-hdpi/images/loop00069.png
index 6ab833f4b..a2dbbfaec 100644
--- a/res-hdpi/images/loop00069.png
+++ b/res-hdpi/images/loop00069.png
Binary files differ
diff --git a/res-hdpi/images/loop00070.png b/res-hdpi/images/loop00070.png
index a4cc06f12..60a345fc9 100644
--- a/res-hdpi/images/loop00070.png
+++ b/res-hdpi/images/loop00070.png
Binary files differ
diff --git a/res-hdpi/images/loop00071.png b/res-hdpi/images/loop00071.png
index 96653c188..ac444273e 100644
--- a/res-hdpi/images/loop00071.png
+++ b/res-hdpi/images/loop00071.png
Binary files differ
diff --git a/res-hdpi/images/loop00072.png b/res-hdpi/images/loop00072.png
index 44a15f874..a9171eb7d 100644
--- a/res-hdpi/images/loop00072.png
+++ b/res-hdpi/images/loop00072.png
Binary files differ
diff --git a/res-hdpi/images/loop00073.png b/res-hdpi/images/loop00073.png
index 8352c7ce0..7911d324c 100644
--- a/res-hdpi/images/loop00073.png
+++ b/res-hdpi/images/loop00073.png
Binary files differ
diff --git a/res-hdpi/images/loop00074.png b/res-hdpi/images/loop00074.png
index 914f1b7fb..dcea580a2 100644
--- a/res-hdpi/images/loop00074.png
+++ b/res-hdpi/images/loop00074.png
Binary files differ
diff --git a/res-hdpi/images/loop00075.png b/res-hdpi/images/loop00075.png
index 372b87139..0a7a5a527 100644
--- a/res-hdpi/images/loop00075.png
+++ b/res-hdpi/images/loop00075.png
Binary files differ
diff --git a/res-hdpi/images/loop00076.png b/res-hdpi/images/loop00076.png
index ffbf28570..674c9d233 100644
--- a/res-hdpi/images/loop00076.png
+++ b/res-hdpi/images/loop00076.png
Binary files differ
diff --git a/res-hdpi/images/loop00077.png b/res-hdpi/images/loop00077.png
index 8dc6a4002..e344f47f3 100644
--- a/res-hdpi/images/loop00077.png
+++ b/res-hdpi/images/loop00077.png
Binary files differ
diff --git a/res-hdpi/images/loop00078.png b/res-hdpi/images/loop00078.png
index cf1ea6120..e0968ce3c 100644
--- a/res-hdpi/images/loop00078.png
+++ b/res-hdpi/images/loop00078.png
Binary files differ
diff --git a/res-hdpi/images/loop00079.png b/res-hdpi/images/loop00079.png
index 8674c822a..2ff1fb088 100644
--- a/res-hdpi/images/loop00079.png
+++ b/res-hdpi/images/loop00079.png
Binary files differ
diff --git a/res-hdpi/images/loop00080.png b/res-hdpi/images/loop00080.png
index 3d84259bb..26de5af76 100644
--- a/res-hdpi/images/loop00080.png
+++ b/res-hdpi/images/loop00080.png
Binary files differ
diff --git a/res-hdpi/images/loop00081.png b/res-hdpi/images/loop00081.png
index aed44c53b..1ef6cdd98 100644
--- a/res-hdpi/images/loop00081.png
+++ b/res-hdpi/images/loop00081.png
Binary files differ
diff --git a/res-hdpi/images/loop00082.png b/res-hdpi/images/loop00082.png
index a39769bdb..334874ff1 100644
--- a/res-hdpi/images/loop00082.png
+++ b/res-hdpi/images/loop00082.png
Binary files differ
diff --git a/res-hdpi/images/loop00083.png b/res-hdpi/images/loop00083.png
index 905355d9e..3b0deb1cb 100644
--- a/res-hdpi/images/loop00083.png
+++ b/res-hdpi/images/loop00083.png
Binary files differ
diff --git a/res-hdpi/images/loop00084.png b/res-hdpi/images/loop00084.png
index c86deea16..4b8494c4c 100644
--- a/res-hdpi/images/loop00084.png
+++ b/res-hdpi/images/loop00084.png
Binary files differ
diff --git a/res-hdpi/images/loop00085.png b/res-hdpi/images/loop00085.png
index 3744ab708..2e5702753 100644
--- a/res-hdpi/images/loop00085.png
+++ b/res-hdpi/images/loop00085.png
Binary files differ
diff --git a/res-hdpi/images/loop00086.png b/res-hdpi/images/loop00086.png
index 0bb9b0963..ab6f437bc 100644
--- a/res-hdpi/images/loop00086.png
+++ b/res-hdpi/images/loop00086.png
Binary files differ
diff --git a/res-hdpi/images/loop00087.png b/res-hdpi/images/loop00087.png
index 83f97bdd0..d6c3dcdde 100644
--- a/res-hdpi/images/loop00087.png
+++ b/res-hdpi/images/loop00087.png
Binary files differ
diff --git a/res-hdpi/images/loop00088.png b/res-hdpi/images/loop00088.png
index 6fd37909a..88b386842 100644
--- a/res-hdpi/images/loop00088.png
+++ b/res-hdpi/images/loop00088.png
Binary files differ
diff --git a/res-hdpi/images/loop00089.png b/res-hdpi/images/loop00089.png
index 09500f87f..5b4551be9 100644
--- a/res-hdpi/images/loop00089.png
+++ b/res-hdpi/images/loop00089.png
Binary files differ
diff --git a/res-hdpi/images/loop00090.png b/res-hdpi/images/loop00090.png
index 030fa2b36..9e9d1e320 100644
--- a/res-hdpi/images/loop00090.png
+++ b/res-hdpi/images/loop00090.png
Binary files differ
diff --git a/res-mdpi/images/loop00000.png b/res-mdpi/images/loop00000.png
index d7092b68f..0e11c0100 100644
--- a/res-mdpi/images/loop00000.png
+++ b/res-mdpi/images/loop00000.png
Binary files differ
diff --git a/res-mdpi/images/loop00001.png b/res-mdpi/images/loop00001.png
index e04a5255a..9d87ecc7d 100644
--- a/res-mdpi/images/loop00001.png
+++ b/res-mdpi/images/loop00001.png
Binary files differ
diff --git a/res-mdpi/images/loop00002.png b/res-mdpi/images/loop00002.png
index e2a783102..4a4798645 100644
--- a/res-mdpi/images/loop00002.png
+++ b/res-mdpi/images/loop00002.png
Binary files differ
diff --git a/res-mdpi/images/loop00003.png b/res-mdpi/images/loop00003.png
index 28f79bf4b..5e01eabd2 100644
--- a/res-mdpi/images/loop00003.png
+++ b/res-mdpi/images/loop00003.png
Binary files differ
diff --git a/res-mdpi/images/loop00004.png b/res-mdpi/images/loop00004.png
index e4bec8084..cebf84a4b 100644
--- a/res-mdpi/images/loop00004.png
+++ b/res-mdpi/images/loop00004.png
Binary files differ
diff --git a/res-mdpi/images/loop00005.png b/res-mdpi/images/loop00005.png
index de673e03a..4d0e8b039 100644
--- a/res-mdpi/images/loop00005.png
+++ b/res-mdpi/images/loop00005.png
Binary files differ
diff --git a/res-mdpi/images/loop00006.png b/res-mdpi/images/loop00006.png
index 71d420311..00f9543cd 100644
--- a/res-mdpi/images/loop00006.png
+++ b/res-mdpi/images/loop00006.png
Binary files differ
diff --git a/res-mdpi/images/loop00007.png b/res-mdpi/images/loop00007.png
index dee70b3b4..95642214c 100644
--- a/res-mdpi/images/loop00007.png
+++ b/res-mdpi/images/loop00007.png
Binary files differ
diff --git a/res-mdpi/images/loop00008.png b/res-mdpi/images/loop00008.png
index 9eccc7fe4..8d41cc514 100644
--- a/res-mdpi/images/loop00008.png
+++ b/res-mdpi/images/loop00008.png
Binary files differ
diff --git a/res-mdpi/images/loop00009.png b/res-mdpi/images/loop00009.png
index d6672ac0f..2761756b8 100644
--- a/res-mdpi/images/loop00009.png
+++ b/res-mdpi/images/loop00009.png
Binary files differ
diff --git a/res-mdpi/images/loop00010.png b/res-mdpi/images/loop00010.png
index 1bb8f5c38..d8b4865de 100644
--- a/res-mdpi/images/loop00010.png
+++ b/res-mdpi/images/loop00010.png
Binary files differ
diff --git a/res-mdpi/images/loop00011.png b/res-mdpi/images/loop00011.png
index 849ce3dd0..84423537e 100644
--- a/res-mdpi/images/loop00011.png
+++ b/res-mdpi/images/loop00011.png
Binary files differ
diff --git a/res-mdpi/images/loop00012.png b/res-mdpi/images/loop00012.png
index cee9dcf04..cb986c532 100644
--- a/res-mdpi/images/loop00012.png
+++ b/res-mdpi/images/loop00012.png
Binary files differ
diff --git a/res-mdpi/images/loop00013.png b/res-mdpi/images/loop00013.png
index 1ef61d734..63b89b29e 100644
--- a/res-mdpi/images/loop00013.png
+++ b/res-mdpi/images/loop00013.png
Binary files differ
diff --git a/res-mdpi/images/loop00014.png b/res-mdpi/images/loop00014.png
index bc84637bd..9713813a4 100644
--- a/res-mdpi/images/loop00014.png
+++ b/res-mdpi/images/loop00014.png
Binary files differ
diff --git a/res-mdpi/images/loop00015.png b/res-mdpi/images/loop00015.png
index f5607f237..3f666d7c6 100644
--- a/res-mdpi/images/loop00015.png
+++ b/res-mdpi/images/loop00015.png
Binary files differ
diff --git a/res-mdpi/images/loop00016.png b/res-mdpi/images/loop00016.png
index 235527c33..3d76b046e 100644
--- a/res-mdpi/images/loop00016.png
+++ b/res-mdpi/images/loop00016.png
Binary files differ
diff --git a/res-mdpi/images/loop00017.png b/res-mdpi/images/loop00017.png
index 88307a6b6..1438d77b8 100644
--- a/res-mdpi/images/loop00017.png
+++ b/res-mdpi/images/loop00017.png
Binary files differ
diff --git a/res-mdpi/images/loop00018.png b/res-mdpi/images/loop00018.png
index 02472d753..c285fc6e9 100644
--- a/res-mdpi/images/loop00018.png
+++ b/res-mdpi/images/loop00018.png
Binary files differ
diff --git a/res-mdpi/images/loop00019.png b/res-mdpi/images/loop00019.png
index f06bdaae5..d6969ec44 100644
--- a/res-mdpi/images/loop00019.png
+++ b/res-mdpi/images/loop00019.png
Binary files differ
diff --git a/res-mdpi/images/loop00020.png b/res-mdpi/images/loop00020.png
index dc522c071..89aa0124e 100644
--- a/res-mdpi/images/loop00020.png
+++ b/res-mdpi/images/loop00020.png
Binary files differ
diff --git a/res-mdpi/images/loop00021.png b/res-mdpi/images/loop00021.png
index 3a53ee53d..b0bd51402 100644
--- a/res-mdpi/images/loop00021.png
+++ b/res-mdpi/images/loop00021.png
Binary files differ
diff --git a/res-mdpi/images/loop00022.png b/res-mdpi/images/loop00022.png
index 09b8eea14..684d023de 100644
--- a/res-mdpi/images/loop00022.png
+++ b/res-mdpi/images/loop00022.png
Binary files differ
diff --git a/res-mdpi/images/loop00023.png b/res-mdpi/images/loop00023.png
index ebc677d41..d008e9873 100644
--- a/res-mdpi/images/loop00023.png
+++ b/res-mdpi/images/loop00023.png
Binary files differ
diff --git a/res-mdpi/images/loop00024.png b/res-mdpi/images/loop00024.png
index a4fd8e508..8fe2185eb 100644
--- a/res-mdpi/images/loop00024.png
+++ b/res-mdpi/images/loop00024.png
Binary files differ
diff --git a/res-mdpi/images/loop00025.png b/res-mdpi/images/loop00025.png
index 9435624ee..c534bbd92 100644
--- a/res-mdpi/images/loop00025.png
+++ b/res-mdpi/images/loop00025.png
Binary files differ
diff --git a/res-mdpi/images/loop00026.png b/res-mdpi/images/loop00026.png
index b7e808154..61b11b555 100644
--- a/res-mdpi/images/loop00026.png
+++ b/res-mdpi/images/loop00026.png
Binary files differ
diff --git a/res-mdpi/images/loop00027.png b/res-mdpi/images/loop00027.png
index 757d8ed90..5c01dfc7b 100644
--- a/res-mdpi/images/loop00027.png
+++ b/res-mdpi/images/loop00027.png
Binary files differ
diff --git a/res-mdpi/images/loop00028.png b/res-mdpi/images/loop00028.png
index 8eefa3a57..c3e61c08e 100644
--- a/res-mdpi/images/loop00028.png
+++ b/res-mdpi/images/loop00028.png
Binary files differ
diff --git a/res-mdpi/images/loop00029.png b/res-mdpi/images/loop00029.png
index 8d890dee6..e0b23ffaa 100644
--- a/res-mdpi/images/loop00029.png
+++ b/res-mdpi/images/loop00029.png
Binary files differ
diff --git a/res-mdpi/images/loop00030.png b/res-mdpi/images/loop00030.png
index 8e0eeb6f8..6618ef7dc 100644
--- a/res-mdpi/images/loop00030.png
+++ b/res-mdpi/images/loop00030.png
Binary files differ
diff --git a/res-mdpi/images/loop00031.png b/res-mdpi/images/loop00031.png
index 178b29d6e..dfde81e69 100644
--- a/res-mdpi/images/loop00031.png
+++ b/res-mdpi/images/loop00031.png
Binary files differ
diff --git a/res-mdpi/images/loop00032.png b/res-mdpi/images/loop00032.png
index 39192c75a..dc6a01ea2 100644
--- a/res-mdpi/images/loop00032.png
+++ b/res-mdpi/images/loop00032.png
Binary files differ
diff --git a/res-mdpi/images/loop00033.png b/res-mdpi/images/loop00033.png
index 0647e5001..86d104bc9 100644
--- a/res-mdpi/images/loop00033.png
+++ b/res-mdpi/images/loop00033.png
Binary files differ
diff --git a/res-mdpi/images/loop00034.png b/res-mdpi/images/loop00034.png
index d6bc079a6..07a6d7cdd 100644
--- a/res-mdpi/images/loop00034.png
+++ b/res-mdpi/images/loop00034.png
Binary files differ
diff --git a/res-mdpi/images/loop00035.png b/res-mdpi/images/loop00035.png
index 68352e85c..3e5cb4ea9 100644
--- a/res-mdpi/images/loop00035.png
+++ b/res-mdpi/images/loop00035.png
Binary files differ
diff --git a/res-mdpi/images/loop00036.png b/res-mdpi/images/loop00036.png
index 92d9da27b..6ac7e35e6 100644
--- a/res-mdpi/images/loop00036.png
+++ b/res-mdpi/images/loop00036.png
Binary files differ
diff --git a/res-mdpi/images/loop00037.png b/res-mdpi/images/loop00037.png
index a0e4d337f..527c48d20 100644
--- a/res-mdpi/images/loop00037.png
+++ b/res-mdpi/images/loop00037.png
Binary files differ
diff --git a/res-mdpi/images/loop00038.png b/res-mdpi/images/loop00038.png
index c52317363..41c6a0356 100644
--- a/res-mdpi/images/loop00038.png
+++ b/res-mdpi/images/loop00038.png
Binary files differ
diff --git a/res-mdpi/images/loop00039.png b/res-mdpi/images/loop00039.png
index aae776583..d24d6429c 100644
--- a/res-mdpi/images/loop00039.png
+++ b/res-mdpi/images/loop00039.png
Binary files differ
diff --git a/res-mdpi/images/loop00040.png b/res-mdpi/images/loop00040.png
index af9e0188b..f3f077f8b 100644
--- a/res-mdpi/images/loop00040.png
+++ b/res-mdpi/images/loop00040.png
Binary files differ
diff --git a/res-mdpi/images/loop00041.png b/res-mdpi/images/loop00041.png
index 8e089c200..33e0715f2 100644
--- a/res-mdpi/images/loop00041.png
+++ b/res-mdpi/images/loop00041.png
Binary files differ
diff --git a/res-mdpi/images/loop00042.png b/res-mdpi/images/loop00042.png
index e3e3b8a49..b1ef14691 100644
--- a/res-mdpi/images/loop00042.png
+++ b/res-mdpi/images/loop00042.png
Binary files differ
diff --git a/res-mdpi/images/loop00043.png b/res-mdpi/images/loop00043.png
index cc8acbaeb..d835f3399 100644
--- a/res-mdpi/images/loop00043.png
+++ b/res-mdpi/images/loop00043.png
Binary files differ
diff --git a/res-mdpi/images/loop00044.png b/res-mdpi/images/loop00044.png
index 9a3a9b998..47ee00f0a 100644
--- a/res-mdpi/images/loop00044.png
+++ b/res-mdpi/images/loop00044.png
Binary files differ
diff --git a/res-mdpi/images/loop00045.png b/res-mdpi/images/loop00045.png
index ec5e3c4d1..2c9dd7127 100644
--- a/res-mdpi/images/loop00045.png
+++ b/res-mdpi/images/loop00045.png
Binary files differ
diff --git a/res-mdpi/images/loop00046.png b/res-mdpi/images/loop00046.png
index 925e2b788..7b0a557bb 100644
--- a/res-mdpi/images/loop00046.png
+++ b/res-mdpi/images/loop00046.png
Binary files differ
diff --git a/res-mdpi/images/loop00047.png b/res-mdpi/images/loop00047.png
index 62fff8864..60368fef6 100644
--- a/res-mdpi/images/loop00047.png
+++ b/res-mdpi/images/loop00047.png
Binary files differ
diff --git a/res-mdpi/images/loop00048.png b/res-mdpi/images/loop00048.png
index 46efe7032..8da21b50b 100644
--- a/res-mdpi/images/loop00048.png
+++ b/res-mdpi/images/loop00048.png
Binary files differ
diff --git a/res-mdpi/images/loop00049.png b/res-mdpi/images/loop00049.png
index 678dce473..8604a1748 100644
--- a/res-mdpi/images/loop00049.png
+++ b/res-mdpi/images/loop00049.png
Binary files differ
diff --git a/res-mdpi/images/loop00050.png b/res-mdpi/images/loop00050.png
index cbc6fdbf0..230ebd99c 100644
--- a/res-mdpi/images/loop00050.png
+++ b/res-mdpi/images/loop00050.png
Binary files differ
diff --git a/res-mdpi/images/loop00051.png b/res-mdpi/images/loop00051.png
index afa906677..3165ae893 100644
--- a/res-mdpi/images/loop00051.png
+++ b/res-mdpi/images/loop00051.png
Binary files differ
diff --git a/res-mdpi/images/loop00052.png b/res-mdpi/images/loop00052.png
index 4d2d98c53..bf4311234 100644
--- a/res-mdpi/images/loop00052.png
+++ b/res-mdpi/images/loop00052.png
Binary files differ
diff --git a/res-mdpi/images/loop00053.png b/res-mdpi/images/loop00053.png
index 48136a5da..7d801fa0a 100644
--- a/res-mdpi/images/loop00053.png
+++ b/res-mdpi/images/loop00053.png
Binary files differ
diff --git a/res-mdpi/images/loop00054.png b/res-mdpi/images/loop00054.png
index 09f706af6..f3ee2468d 100644
--- a/res-mdpi/images/loop00054.png
+++ b/res-mdpi/images/loop00054.png
Binary files differ
diff --git a/res-mdpi/images/loop00055.png b/res-mdpi/images/loop00055.png
index 7565a1c21..fb9fcfff5 100644
--- a/res-mdpi/images/loop00055.png
+++ b/res-mdpi/images/loop00055.png
Binary files differ
diff --git a/res-mdpi/images/loop00056.png b/res-mdpi/images/loop00056.png
index 2765831a9..f6b1ee7f3 100644
--- a/res-mdpi/images/loop00056.png
+++ b/res-mdpi/images/loop00056.png
Binary files differ
diff --git a/res-mdpi/images/loop00057.png b/res-mdpi/images/loop00057.png
index de440e0dd..af009d1ec 100644
--- a/res-mdpi/images/loop00057.png
+++ b/res-mdpi/images/loop00057.png
Binary files differ
diff --git a/res-mdpi/images/loop00058.png b/res-mdpi/images/loop00058.png
index 67d49c78f..1cd550adc 100644
--- a/res-mdpi/images/loop00058.png
+++ b/res-mdpi/images/loop00058.png
Binary files differ
diff --git a/res-mdpi/images/loop00059.png b/res-mdpi/images/loop00059.png
index a622f4587..cf8d18c7b 100644
--- a/res-mdpi/images/loop00059.png
+++ b/res-mdpi/images/loop00059.png
Binary files differ
diff --git a/res-mdpi/images/loop00060.png b/res-mdpi/images/loop00060.png
index 06d6eec8b..cfa53848d 100644
--- a/res-mdpi/images/loop00060.png
+++ b/res-mdpi/images/loop00060.png
Binary files differ
diff --git a/res-mdpi/images/loop00061.png b/res-mdpi/images/loop00061.png
index 7f11945a0..5fcbf4717 100644
--- a/res-mdpi/images/loop00061.png
+++ b/res-mdpi/images/loop00061.png
Binary files differ
diff --git a/res-mdpi/images/loop00062.png b/res-mdpi/images/loop00062.png
index 8197c94cf..d360d2437 100644
--- a/res-mdpi/images/loop00062.png
+++ b/res-mdpi/images/loop00062.png
Binary files differ
diff --git a/res-mdpi/images/loop00063.png b/res-mdpi/images/loop00063.png
index 4093c9b06..7f59a6673 100644
--- a/res-mdpi/images/loop00063.png
+++ b/res-mdpi/images/loop00063.png
Binary files differ
diff --git a/res-mdpi/images/loop00064.png b/res-mdpi/images/loop00064.png
index d09bd1ebd..e02809f50 100644
--- a/res-mdpi/images/loop00064.png
+++ b/res-mdpi/images/loop00064.png
Binary files differ
diff --git a/res-mdpi/images/loop00065.png b/res-mdpi/images/loop00065.png
index cbb6c1b80..597e7965f 100644
--- a/res-mdpi/images/loop00065.png
+++ b/res-mdpi/images/loop00065.png
Binary files differ
diff --git a/res-mdpi/images/loop00066.png b/res-mdpi/images/loop00066.png
index aed0a700a..3f308f007 100644
--- a/res-mdpi/images/loop00066.png
+++ b/res-mdpi/images/loop00066.png
Binary files differ
diff --git a/res-mdpi/images/loop00067.png b/res-mdpi/images/loop00067.png
index dd0da799f..643598277 100644
--- a/res-mdpi/images/loop00067.png
+++ b/res-mdpi/images/loop00067.png
Binary files differ
diff --git a/res-mdpi/images/loop00068.png b/res-mdpi/images/loop00068.png
index 161802c8e..580790b16 100644
--- a/res-mdpi/images/loop00068.png
+++ b/res-mdpi/images/loop00068.png
Binary files differ
diff --git a/res-mdpi/images/loop00069.png b/res-mdpi/images/loop00069.png
index 4ee0372a5..ae2f4e816 100644
--- a/res-mdpi/images/loop00069.png
+++ b/res-mdpi/images/loop00069.png
Binary files differ
diff --git a/res-mdpi/images/loop00070.png b/res-mdpi/images/loop00070.png
index 41a64fff6..82403915a 100644
--- a/res-mdpi/images/loop00070.png
+++ b/res-mdpi/images/loop00070.png
Binary files differ
diff --git a/res-mdpi/images/loop00071.png b/res-mdpi/images/loop00071.png
index c4793d79c..03f157ce8 100644
--- a/res-mdpi/images/loop00071.png
+++ b/res-mdpi/images/loop00071.png
Binary files differ
diff --git a/res-mdpi/images/loop00072.png b/res-mdpi/images/loop00072.png
index 9399d193c..b62dfd0d8 100644
--- a/res-mdpi/images/loop00072.png
+++ b/res-mdpi/images/loop00072.png
Binary files differ
diff --git a/res-mdpi/images/loop00073.png b/res-mdpi/images/loop00073.png
index d4e55adc9..ba746f2cb 100644
--- a/res-mdpi/images/loop00073.png
+++ b/res-mdpi/images/loop00073.png
Binary files differ
diff --git a/res-mdpi/images/loop00074.png b/res-mdpi/images/loop00074.png
index f29a0af5f..bafd21374 100644
--- a/res-mdpi/images/loop00074.png
+++ b/res-mdpi/images/loop00074.png
Binary files differ
diff --git a/res-mdpi/images/loop00075.png b/res-mdpi/images/loop00075.png
index 020568e4a..fe1f3a4df 100644
--- a/res-mdpi/images/loop00075.png
+++ b/res-mdpi/images/loop00075.png
Binary files differ
diff --git a/res-mdpi/images/loop00076.png b/res-mdpi/images/loop00076.png
index 51a54cc98..49960e5ee 100644
--- a/res-mdpi/images/loop00076.png
+++ b/res-mdpi/images/loop00076.png
Binary files differ
diff --git a/res-mdpi/images/loop00077.png b/res-mdpi/images/loop00077.png
index f6e80a918..a112cb8d2 100644
--- a/res-mdpi/images/loop00077.png
+++ b/res-mdpi/images/loop00077.png
Binary files differ
diff --git a/res-mdpi/images/loop00078.png b/res-mdpi/images/loop00078.png
index 944452120..5d69ab843 100644
--- a/res-mdpi/images/loop00078.png
+++ b/res-mdpi/images/loop00078.png
Binary files differ
diff --git a/res-mdpi/images/loop00079.png b/res-mdpi/images/loop00079.png
index b1ef2c308..31f3b5589 100644
--- a/res-mdpi/images/loop00079.png
+++ b/res-mdpi/images/loop00079.png
Binary files differ
diff --git a/res-mdpi/images/loop00080.png b/res-mdpi/images/loop00080.png
index 8a911fba8..42730befa 100644
--- a/res-mdpi/images/loop00080.png
+++ b/res-mdpi/images/loop00080.png
Binary files differ
diff --git a/res-mdpi/images/loop00081.png b/res-mdpi/images/loop00081.png
index f848df4c8..5ea003ef7 100644
--- a/res-mdpi/images/loop00081.png
+++ b/res-mdpi/images/loop00081.png
Binary files differ
diff --git a/res-mdpi/images/loop00082.png b/res-mdpi/images/loop00082.png
index 35b1325aa..ead63597d 100644
--- a/res-mdpi/images/loop00082.png
+++ b/res-mdpi/images/loop00082.png
Binary files differ
diff --git a/res-mdpi/images/loop00083.png b/res-mdpi/images/loop00083.png
index 1571fb5a4..1d10991a1 100644
--- a/res-mdpi/images/loop00083.png
+++ b/res-mdpi/images/loop00083.png
Binary files differ
diff --git a/res-mdpi/images/loop00084.png b/res-mdpi/images/loop00084.png
index 92b529509..5aafdec1d 100644
--- a/res-mdpi/images/loop00084.png
+++ b/res-mdpi/images/loop00084.png
Binary files differ
diff --git a/res-mdpi/images/loop00085.png b/res-mdpi/images/loop00085.png
index cde8880c7..6813c3375 100644
--- a/res-mdpi/images/loop00085.png
+++ b/res-mdpi/images/loop00085.png
Binary files differ
diff --git a/res-mdpi/images/loop00086.png b/res-mdpi/images/loop00086.png
index 45889e551..5d63072c6 100644
--- a/res-mdpi/images/loop00086.png
+++ b/res-mdpi/images/loop00086.png
Binary files differ
diff --git a/res-mdpi/images/loop00087.png b/res-mdpi/images/loop00087.png
index 9cad9aa39..9c65826dd 100644
--- a/res-mdpi/images/loop00087.png
+++ b/res-mdpi/images/loop00087.png
Binary files differ
diff --git a/res-mdpi/images/loop00088.png b/res-mdpi/images/loop00088.png
index dcf98c8b6..6cb1bf0cf 100644
--- a/res-mdpi/images/loop00088.png
+++ b/res-mdpi/images/loop00088.png
Binary files differ
diff --git a/res-mdpi/images/loop00089.png b/res-mdpi/images/loop00089.png
index 584cb8994..b3d742dbf 100644
--- a/res-mdpi/images/loop00089.png
+++ b/res-mdpi/images/loop00089.png
Binary files differ
diff --git a/res-mdpi/images/loop00090.png b/res-mdpi/images/loop00090.png
index d7092b68f..0e11c0100 100644
--- a/res-mdpi/images/loop00090.png
+++ b/res-mdpi/images/loop00090.png
Binary files differ
diff --git a/res-xhdpi/images/loop00000.png b/res-xhdpi/images/loop00000.png
index f5bf7a73b..b438e9e67 100644
--- a/res-xhdpi/images/loop00000.png
+++ b/res-xhdpi/images/loop00000.png
Binary files differ
diff --git a/res-xhdpi/images/loop00001.png b/res-xhdpi/images/loop00001.png
index 95c14ebf3..343a18572 100644
--- a/res-xhdpi/images/loop00001.png
+++ b/res-xhdpi/images/loop00001.png
Binary files differ
diff --git a/res-xhdpi/images/loop00002.png b/res-xhdpi/images/loop00002.png
index 5910fd106..aa5bc616f 100644
--- a/res-xhdpi/images/loop00002.png
+++ b/res-xhdpi/images/loop00002.png
Binary files differ
diff --git a/res-xhdpi/images/loop00003.png b/res-xhdpi/images/loop00003.png
index e6861d2a2..5385340ca 100644
--- a/res-xhdpi/images/loop00003.png
+++ b/res-xhdpi/images/loop00003.png
Binary files differ
diff --git a/res-xhdpi/images/loop00004.png b/res-xhdpi/images/loop00004.png
index 453cdc615..cdead7d74 100644
--- a/res-xhdpi/images/loop00004.png
+++ b/res-xhdpi/images/loop00004.png
Binary files differ
diff --git a/res-xhdpi/images/loop00005.png b/res-xhdpi/images/loop00005.png
index 12157c961..8eb502fdf 100644
--- a/res-xhdpi/images/loop00005.png
+++ b/res-xhdpi/images/loop00005.png
Binary files differ
diff --git a/res-xhdpi/images/loop00006.png b/res-xhdpi/images/loop00006.png
index 5e7838535..60b0f4a61 100644
--- a/res-xhdpi/images/loop00006.png
+++ b/res-xhdpi/images/loop00006.png
Binary files differ
diff --git a/res-xhdpi/images/loop00007.png b/res-xhdpi/images/loop00007.png
index c69abf4f2..a76c588a1 100644
--- a/res-xhdpi/images/loop00007.png
+++ b/res-xhdpi/images/loop00007.png
Binary files differ
diff --git a/res-xhdpi/images/loop00008.png b/res-xhdpi/images/loop00008.png
index 78c3b993c..80e160322 100644
--- a/res-xhdpi/images/loop00008.png
+++ b/res-xhdpi/images/loop00008.png
Binary files differ
diff --git a/res-xhdpi/images/loop00009.png b/res-xhdpi/images/loop00009.png
index e510b6b80..b8f4954c1 100644
--- a/res-xhdpi/images/loop00009.png
+++ b/res-xhdpi/images/loop00009.png
Binary files differ
diff --git a/res-xhdpi/images/loop00010.png b/res-xhdpi/images/loop00010.png
index 9d775faa4..b58d6ac57 100644
--- a/res-xhdpi/images/loop00010.png
+++ b/res-xhdpi/images/loop00010.png
Binary files differ
diff --git a/res-xhdpi/images/loop00011.png b/res-xhdpi/images/loop00011.png
index 36c01957e..0b67f3736 100644
--- a/res-xhdpi/images/loop00011.png
+++ b/res-xhdpi/images/loop00011.png
Binary files differ
diff --git a/res-xhdpi/images/loop00012.png b/res-xhdpi/images/loop00012.png
index ac65096d9..234d77a84 100644
--- a/res-xhdpi/images/loop00012.png
+++ b/res-xhdpi/images/loop00012.png
Binary files differ
diff --git a/res-xhdpi/images/loop00013.png b/res-xhdpi/images/loop00013.png
index e3fdaafa7..13c65243e 100644
--- a/res-xhdpi/images/loop00013.png
+++ b/res-xhdpi/images/loop00013.png
Binary files differ
diff --git a/res-xhdpi/images/loop00014.png b/res-xhdpi/images/loop00014.png
index 6e85108df..92e30e3d8 100644
--- a/res-xhdpi/images/loop00014.png
+++ b/res-xhdpi/images/loop00014.png
Binary files differ
diff --git a/res-xhdpi/images/loop00015.png b/res-xhdpi/images/loop00015.png
index 9e6032951..9c6076dc9 100644
--- a/res-xhdpi/images/loop00015.png
+++ b/res-xhdpi/images/loop00015.png
Binary files differ
diff --git a/res-xhdpi/images/loop00016.png b/res-xhdpi/images/loop00016.png
index 68417aa54..6f626c07b 100644
--- a/res-xhdpi/images/loop00016.png
+++ b/res-xhdpi/images/loop00016.png
Binary files differ
diff --git a/res-xhdpi/images/loop00017.png b/res-xhdpi/images/loop00017.png
index 4ac5dded3..ff67d5bd6 100644
--- a/res-xhdpi/images/loop00017.png
+++ b/res-xhdpi/images/loop00017.png
Binary files differ
diff --git a/res-xhdpi/images/loop00018.png b/res-xhdpi/images/loop00018.png
index d6511287e..67b5d8fe4 100644
--- a/res-xhdpi/images/loop00018.png
+++ b/res-xhdpi/images/loop00018.png
Binary files differ
diff --git a/res-xhdpi/images/loop00019.png b/res-xhdpi/images/loop00019.png
index 374273574..06ca98012 100644
--- a/res-xhdpi/images/loop00019.png
+++ b/res-xhdpi/images/loop00019.png
Binary files differ
diff --git a/res-xhdpi/images/loop00020.png b/res-xhdpi/images/loop00020.png
index 04489a10f..c2288b424 100644
--- a/res-xhdpi/images/loop00020.png
+++ b/res-xhdpi/images/loop00020.png
Binary files differ
diff --git a/res-xhdpi/images/loop00021.png b/res-xhdpi/images/loop00021.png
index 59c70166c..ba5df4618 100644
--- a/res-xhdpi/images/loop00021.png
+++ b/res-xhdpi/images/loop00021.png
Binary files differ
diff --git a/res-xhdpi/images/loop00022.png b/res-xhdpi/images/loop00022.png
index 0b9a59f38..2b1e947ad 100644
--- a/res-xhdpi/images/loop00022.png
+++ b/res-xhdpi/images/loop00022.png
Binary files differ
diff --git a/res-xhdpi/images/loop00023.png b/res-xhdpi/images/loop00023.png
index 31abae79f..292e07472 100644
--- a/res-xhdpi/images/loop00023.png
+++ b/res-xhdpi/images/loop00023.png
Binary files differ
diff --git a/res-xhdpi/images/loop00024.png b/res-xhdpi/images/loop00024.png
index 98d8ee39c..11352f6f7 100644
--- a/res-xhdpi/images/loop00024.png
+++ b/res-xhdpi/images/loop00024.png
Binary files differ
diff --git a/res-xhdpi/images/loop00025.png b/res-xhdpi/images/loop00025.png
index 9f074d266..4212c76a7 100644
--- a/res-xhdpi/images/loop00025.png
+++ b/res-xhdpi/images/loop00025.png
Binary files differ
diff --git a/res-xhdpi/images/loop00026.png b/res-xhdpi/images/loop00026.png
index 063fca2de..774d00f76 100644
--- a/res-xhdpi/images/loop00026.png
+++ b/res-xhdpi/images/loop00026.png
Binary files differ
diff --git a/res-xhdpi/images/loop00027.png b/res-xhdpi/images/loop00027.png
index 67e503a70..1827471b2 100644
--- a/res-xhdpi/images/loop00027.png
+++ b/res-xhdpi/images/loop00027.png
Binary files differ
diff --git a/res-xhdpi/images/loop00028.png b/res-xhdpi/images/loop00028.png
index 7e76be845..f4e79f91d 100644
--- a/res-xhdpi/images/loop00028.png
+++ b/res-xhdpi/images/loop00028.png
Binary files differ
diff --git a/res-xhdpi/images/loop00029.png b/res-xhdpi/images/loop00029.png
index 4902f6b5e..863850011 100644
--- a/res-xhdpi/images/loop00029.png
+++ b/res-xhdpi/images/loop00029.png
Binary files differ
diff --git a/res-xhdpi/images/loop00030.png b/res-xhdpi/images/loop00030.png
index 387b893b0..94fd37619 100644
--- a/res-xhdpi/images/loop00030.png
+++ b/res-xhdpi/images/loop00030.png
Binary files differ
diff --git a/res-xhdpi/images/loop00031.png b/res-xhdpi/images/loop00031.png
index ad116280f..441a52d9e 100644
--- a/res-xhdpi/images/loop00031.png
+++ b/res-xhdpi/images/loop00031.png
Binary files differ
diff --git a/res-xhdpi/images/loop00032.png b/res-xhdpi/images/loop00032.png
index 7d809e6b2..a10598ff6 100644
--- a/res-xhdpi/images/loop00032.png
+++ b/res-xhdpi/images/loop00032.png
Binary files differ
diff --git a/res-xhdpi/images/loop00033.png b/res-xhdpi/images/loop00033.png
index 59fcdc108..96bf45389 100644
--- a/res-xhdpi/images/loop00033.png
+++ b/res-xhdpi/images/loop00033.png
Binary files differ
diff --git a/res-xhdpi/images/loop00034.png b/res-xhdpi/images/loop00034.png
index cb4301c31..59baf8c64 100644
--- a/res-xhdpi/images/loop00034.png
+++ b/res-xhdpi/images/loop00034.png
Binary files differ
diff --git a/res-xhdpi/images/loop00035.png b/res-xhdpi/images/loop00035.png
index 6b1687807..400a8959b 100644
--- a/res-xhdpi/images/loop00035.png
+++ b/res-xhdpi/images/loop00035.png
Binary files differ
diff --git a/res-xhdpi/images/loop00036.png b/res-xhdpi/images/loop00036.png
index 3aa78502f..fda7acc21 100644
--- a/res-xhdpi/images/loop00036.png
+++ b/res-xhdpi/images/loop00036.png
Binary files differ
diff --git a/res-xhdpi/images/loop00037.png b/res-xhdpi/images/loop00037.png
index a60e8512c..d474e6f76 100644
--- a/res-xhdpi/images/loop00037.png
+++ b/res-xhdpi/images/loop00037.png
Binary files differ
diff --git a/res-xhdpi/images/loop00038.png b/res-xhdpi/images/loop00038.png
index 50107f3aa..c5632e191 100644
--- a/res-xhdpi/images/loop00038.png
+++ b/res-xhdpi/images/loop00038.png
Binary files differ
diff --git a/res-xhdpi/images/loop00039.png b/res-xhdpi/images/loop00039.png
index c85201e25..3cf8b867b 100644
--- a/res-xhdpi/images/loop00039.png
+++ b/res-xhdpi/images/loop00039.png
Binary files differ
diff --git a/res-xhdpi/images/loop00040.png b/res-xhdpi/images/loop00040.png
index 6ae161218..ef55a9281 100644
--- a/res-xhdpi/images/loop00040.png
+++ b/res-xhdpi/images/loop00040.png
Binary files differ
diff --git a/res-xhdpi/images/loop00041.png b/res-xhdpi/images/loop00041.png
index 7602b04a7..60bf78084 100644
--- a/res-xhdpi/images/loop00041.png
+++ b/res-xhdpi/images/loop00041.png
Binary files differ
diff --git a/res-xhdpi/images/loop00042.png b/res-xhdpi/images/loop00042.png
index 054da6d75..cee69800b 100644
--- a/res-xhdpi/images/loop00042.png
+++ b/res-xhdpi/images/loop00042.png
Binary files differ
diff --git a/res-xhdpi/images/loop00043.png b/res-xhdpi/images/loop00043.png
index d28be8b8e..fe5abc15a 100644
--- a/res-xhdpi/images/loop00043.png
+++ b/res-xhdpi/images/loop00043.png
Binary files differ
diff --git a/res-xhdpi/images/loop00044.png b/res-xhdpi/images/loop00044.png
index 83271268f..f33fcee56 100644
--- a/res-xhdpi/images/loop00044.png
+++ b/res-xhdpi/images/loop00044.png
Binary files differ
diff --git a/res-xhdpi/images/loop00045.png b/res-xhdpi/images/loop00045.png
index d749e22d7..e61b2a04e 100644
--- a/res-xhdpi/images/loop00045.png
+++ b/res-xhdpi/images/loop00045.png
Binary files differ
diff --git a/res-xhdpi/images/loop00046.png b/res-xhdpi/images/loop00046.png
index 60025d1be..4d919c036 100644
--- a/res-xhdpi/images/loop00046.png
+++ b/res-xhdpi/images/loop00046.png
Binary files differ
diff --git a/res-xhdpi/images/loop00047.png b/res-xhdpi/images/loop00047.png
index b0be5c69c..deaf9a377 100644
--- a/res-xhdpi/images/loop00047.png
+++ b/res-xhdpi/images/loop00047.png
Binary files differ
diff --git a/res-xhdpi/images/loop00048.png b/res-xhdpi/images/loop00048.png
index be926d9f2..82d8b2b88 100644
--- a/res-xhdpi/images/loop00048.png
+++ b/res-xhdpi/images/loop00048.png
Binary files differ
diff --git a/res-xhdpi/images/loop00049.png b/res-xhdpi/images/loop00049.png
index 456085442..a310cc9e6 100644
--- a/res-xhdpi/images/loop00049.png
+++ b/res-xhdpi/images/loop00049.png
Binary files differ
diff --git a/res-xhdpi/images/loop00050.png b/res-xhdpi/images/loop00050.png
index 967dd87ff..ad802300e 100644
--- a/res-xhdpi/images/loop00050.png
+++ b/res-xhdpi/images/loop00050.png
Binary files differ
diff --git a/res-xhdpi/images/loop00051.png b/res-xhdpi/images/loop00051.png
index c1698597a..52f1ce673 100644
--- a/res-xhdpi/images/loop00051.png
+++ b/res-xhdpi/images/loop00051.png
Binary files differ
diff --git a/res-xhdpi/images/loop00052.png b/res-xhdpi/images/loop00052.png
index 27c23830a..c579e8757 100644
--- a/res-xhdpi/images/loop00052.png
+++ b/res-xhdpi/images/loop00052.png
Binary files differ
diff --git a/res-xhdpi/images/loop00053.png b/res-xhdpi/images/loop00053.png
index cd2ca21c8..2c1bc91b5 100644
--- a/res-xhdpi/images/loop00053.png
+++ b/res-xhdpi/images/loop00053.png
Binary files differ
diff --git a/res-xhdpi/images/loop00054.png b/res-xhdpi/images/loop00054.png
index 588586b3a..888547519 100644
--- a/res-xhdpi/images/loop00054.png
+++ b/res-xhdpi/images/loop00054.png
Binary files differ
diff --git a/res-xhdpi/images/loop00055.png b/res-xhdpi/images/loop00055.png
index 0984d01fe..00d67dacf 100644
--- a/res-xhdpi/images/loop00055.png
+++ b/res-xhdpi/images/loop00055.png
Binary files differ
diff --git a/res-xhdpi/images/loop00056.png b/res-xhdpi/images/loop00056.png
index bab299846..00ad26a5e 100644
--- a/res-xhdpi/images/loop00056.png
+++ b/res-xhdpi/images/loop00056.png
Binary files differ
diff --git a/res-xhdpi/images/loop00057.png b/res-xhdpi/images/loop00057.png
index 4acfce540..351179569 100644
--- a/res-xhdpi/images/loop00057.png
+++ b/res-xhdpi/images/loop00057.png
Binary files differ
diff --git a/res-xhdpi/images/loop00058.png b/res-xhdpi/images/loop00058.png
index d49fea46f..9d28f7d1c 100644
--- a/res-xhdpi/images/loop00058.png
+++ b/res-xhdpi/images/loop00058.png
Binary files differ
diff --git a/res-xhdpi/images/loop00059.png b/res-xhdpi/images/loop00059.png
index fdd75c6b9..776f40e42 100644
--- a/res-xhdpi/images/loop00059.png
+++ b/res-xhdpi/images/loop00059.png
Binary files differ
diff --git a/res-xhdpi/images/loop00060.png b/res-xhdpi/images/loop00060.png
index 06ac591ef..7f728fc03 100644
--- a/res-xhdpi/images/loop00060.png
+++ b/res-xhdpi/images/loop00060.png
Binary files differ
diff --git a/res-xhdpi/images/loop00061.png b/res-xhdpi/images/loop00061.png
index 63be53676..deba02149 100644
--- a/res-xhdpi/images/loop00061.png
+++ b/res-xhdpi/images/loop00061.png
Binary files differ
diff --git a/res-xhdpi/images/loop00062.png b/res-xhdpi/images/loop00062.png
index e25c906cb..e6b618497 100644
--- a/res-xhdpi/images/loop00062.png
+++ b/res-xhdpi/images/loop00062.png
Binary files differ
diff --git a/res-xhdpi/images/loop00063.png b/res-xhdpi/images/loop00063.png
index 1fcaefe25..0e590a573 100644
--- a/res-xhdpi/images/loop00063.png
+++ b/res-xhdpi/images/loop00063.png
Binary files differ
diff --git a/res-xhdpi/images/loop00064.png b/res-xhdpi/images/loop00064.png
index fe373d042..c7b8102ba 100644
--- a/res-xhdpi/images/loop00064.png
+++ b/res-xhdpi/images/loop00064.png
Binary files differ
diff --git a/res-xhdpi/images/loop00065.png b/res-xhdpi/images/loop00065.png
index c5feed6ed..2ccad2577 100644
--- a/res-xhdpi/images/loop00065.png
+++ b/res-xhdpi/images/loop00065.png
Binary files differ
diff --git a/res-xhdpi/images/loop00066.png b/res-xhdpi/images/loop00066.png
index bc336e755..c5573b992 100644
--- a/res-xhdpi/images/loop00066.png
+++ b/res-xhdpi/images/loop00066.png
Binary files differ
diff --git a/res-xhdpi/images/loop00067.png b/res-xhdpi/images/loop00067.png
index a4cdcaea4..005e9a6f6 100644
--- a/res-xhdpi/images/loop00067.png
+++ b/res-xhdpi/images/loop00067.png
Binary files differ
diff --git a/res-xhdpi/images/loop00068.png b/res-xhdpi/images/loop00068.png
index 65d41a280..b8d6a6a07 100644
--- a/res-xhdpi/images/loop00068.png
+++ b/res-xhdpi/images/loop00068.png
Binary files differ
diff --git a/res-xhdpi/images/loop00069.png b/res-xhdpi/images/loop00069.png
index 5707b62c7..7e3ba3063 100644
--- a/res-xhdpi/images/loop00069.png
+++ b/res-xhdpi/images/loop00069.png
Binary files differ
diff --git a/res-xhdpi/images/loop00070.png b/res-xhdpi/images/loop00070.png
index 50ea15925..b9810b301 100644
--- a/res-xhdpi/images/loop00070.png
+++ b/res-xhdpi/images/loop00070.png
Binary files differ
diff --git a/res-xhdpi/images/loop00071.png b/res-xhdpi/images/loop00071.png
index 244a91060..726030ca1 100644
--- a/res-xhdpi/images/loop00071.png
+++ b/res-xhdpi/images/loop00071.png
Binary files differ
diff --git a/res-xhdpi/images/loop00072.png b/res-xhdpi/images/loop00072.png
index e5ee2abe7..30c1e87e1 100644
--- a/res-xhdpi/images/loop00072.png
+++ b/res-xhdpi/images/loop00072.png
Binary files differ
diff --git a/res-xhdpi/images/loop00073.png b/res-xhdpi/images/loop00073.png
index fced739ae..207a5acfc 100644
--- a/res-xhdpi/images/loop00073.png
+++ b/res-xhdpi/images/loop00073.png
Binary files differ
diff --git a/res-xhdpi/images/loop00074.png b/res-xhdpi/images/loop00074.png
index 1b739d346..4482b0c5d 100644
--- a/res-xhdpi/images/loop00074.png
+++ b/res-xhdpi/images/loop00074.png
Binary files differ
diff --git a/res-xhdpi/images/loop00075.png b/res-xhdpi/images/loop00075.png
index 989144f69..72afd0876 100644
--- a/res-xhdpi/images/loop00075.png
+++ b/res-xhdpi/images/loop00075.png
Binary files differ
diff --git a/res-xhdpi/images/loop00076.png b/res-xhdpi/images/loop00076.png
index 458c2a9a2..4b66068f5 100644
--- a/res-xhdpi/images/loop00076.png
+++ b/res-xhdpi/images/loop00076.png
Binary files differ
diff --git a/res-xhdpi/images/loop00077.png b/res-xhdpi/images/loop00077.png
index 9cecb1d0d..a94989efc 100644
--- a/res-xhdpi/images/loop00077.png
+++ b/res-xhdpi/images/loop00077.png
Binary files differ
diff --git a/res-xhdpi/images/loop00078.png b/res-xhdpi/images/loop00078.png
index c2c8dee86..810e22308 100644
--- a/res-xhdpi/images/loop00078.png
+++ b/res-xhdpi/images/loop00078.png
Binary files differ
diff --git a/res-xhdpi/images/loop00079.png b/res-xhdpi/images/loop00079.png
index 4f4fdd142..8085b2595 100644
--- a/res-xhdpi/images/loop00079.png
+++ b/res-xhdpi/images/loop00079.png
Binary files differ
diff --git a/res-xhdpi/images/loop00080.png b/res-xhdpi/images/loop00080.png
index b224378de..4aefa4c94 100644
--- a/res-xhdpi/images/loop00080.png
+++ b/res-xhdpi/images/loop00080.png
Binary files differ
diff --git a/res-xhdpi/images/loop00081.png b/res-xhdpi/images/loop00081.png
index 57d958755..c4a79fbcd 100644
--- a/res-xhdpi/images/loop00081.png
+++ b/res-xhdpi/images/loop00081.png
Binary files differ
diff --git a/res-xhdpi/images/loop00082.png b/res-xhdpi/images/loop00082.png
index c00f82a04..0fc9caa21 100644
--- a/res-xhdpi/images/loop00082.png
+++ b/res-xhdpi/images/loop00082.png
Binary files differ
diff --git a/res-xhdpi/images/loop00083.png b/res-xhdpi/images/loop00083.png
index 078311f09..f5fb15db5 100644
--- a/res-xhdpi/images/loop00083.png
+++ b/res-xhdpi/images/loop00083.png
Binary files differ
diff --git a/res-xhdpi/images/loop00084.png b/res-xhdpi/images/loop00084.png
index cac170893..ada5a2533 100644
--- a/res-xhdpi/images/loop00084.png
+++ b/res-xhdpi/images/loop00084.png
Binary files differ
diff --git a/res-xhdpi/images/loop00085.png b/res-xhdpi/images/loop00085.png
index 2ea4b0afc..f05e8d620 100644
--- a/res-xhdpi/images/loop00085.png
+++ b/res-xhdpi/images/loop00085.png
Binary files differ
diff --git a/res-xhdpi/images/loop00086.png b/res-xhdpi/images/loop00086.png
index 9ba6ca615..28c5dfd88 100644
--- a/res-xhdpi/images/loop00086.png
+++ b/res-xhdpi/images/loop00086.png
Binary files differ
diff --git a/res-xhdpi/images/loop00087.png b/res-xhdpi/images/loop00087.png
index 75694a387..d969905ce 100644
--- a/res-xhdpi/images/loop00087.png
+++ b/res-xhdpi/images/loop00087.png
Binary files differ
diff --git a/res-xhdpi/images/loop00088.png b/res-xhdpi/images/loop00088.png
index 971e50848..653300297 100644
--- a/res-xhdpi/images/loop00088.png
+++ b/res-xhdpi/images/loop00088.png
Binary files differ
diff --git a/res-xhdpi/images/loop00089.png b/res-xhdpi/images/loop00089.png
index 41b6ce6b1..0d5cdea7a 100644
--- a/res-xhdpi/images/loop00089.png
+++ b/res-xhdpi/images/loop00089.png
Binary files differ
diff --git a/res-xhdpi/images/loop00090.png b/res-xhdpi/images/loop00090.png
index f5bf7a73b..b438e9e67 100644
--- a/res-xhdpi/images/loop00090.png
+++ b/res-xhdpi/images/loop00090.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00000.png b/res-xxhdpi/images/loop00000.png
index c5172629d..003c2f875 100644
--- a/res-xxhdpi/images/loop00000.png
+++ b/res-xxhdpi/images/loop00000.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00001.png b/res-xxhdpi/images/loop00001.png
index 1b1ce7397..05de3ddcf 100644
--- a/res-xxhdpi/images/loop00001.png
+++ b/res-xxhdpi/images/loop00001.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00002.png b/res-xxhdpi/images/loop00002.png
index e984a24c9..3b025475a 100644
--- a/res-xxhdpi/images/loop00002.png
+++ b/res-xxhdpi/images/loop00002.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00003.png b/res-xxhdpi/images/loop00003.png
index b11dddcb8..21f0dcc66 100644
--- a/res-xxhdpi/images/loop00003.png
+++ b/res-xxhdpi/images/loop00003.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00004.png b/res-xxhdpi/images/loop00004.png
index 10272b271..6a8b75891 100644
--- a/res-xxhdpi/images/loop00004.png
+++ b/res-xxhdpi/images/loop00004.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00005.png b/res-xxhdpi/images/loop00005.png
index 9558d7e68..a179aef45 100644
--- a/res-xxhdpi/images/loop00005.png
+++ b/res-xxhdpi/images/loop00005.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00006.png b/res-xxhdpi/images/loop00006.png
index 0e6c92d69..ef9f5e849 100644
--- a/res-xxhdpi/images/loop00006.png
+++ b/res-xxhdpi/images/loop00006.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00007.png b/res-xxhdpi/images/loop00007.png
index 0a353ad02..80a477d48 100644
--- a/res-xxhdpi/images/loop00007.png
+++ b/res-xxhdpi/images/loop00007.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00008.png b/res-xxhdpi/images/loop00008.png
index 2f0c1620c..6c5cec08b 100644
--- a/res-xxhdpi/images/loop00008.png
+++ b/res-xxhdpi/images/loop00008.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00009.png b/res-xxhdpi/images/loop00009.png
index 960d683fa..ac5dd30ee 100644
--- a/res-xxhdpi/images/loop00009.png
+++ b/res-xxhdpi/images/loop00009.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00010.png b/res-xxhdpi/images/loop00010.png
index b65c3011a..18f10a17e 100644
--- a/res-xxhdpi/images/loop00010.png
+++ b/res-xxhdpi/images/loop00010.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00011.png b/res-xxhdpi/images/loop00011.png
index 21444fa54..eac89e933 100644
--- a/res-xxhdpi/images/loop00011.png
+++ b/res-xxhdpi/images/loop00011.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00012.png b/res-xxhdpi/images/loop00012.png
index 587db0990..390f3cfd4 100644
--- a/res-xxhdpi/images/loop00012.png
+++ b/res-xxhdpi/images/loop00012.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00013.png b/res-xxhdpi/images/loop00013.png
index 57f2f66e2..18339e93f 100644
--- a/res-xxhdpi/images/loop00013.png
+++ b/res-xxhdpi/images/loop00013.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00014.png b/res-xxhdpi/images/loop00014.png
index d308a6530..77b5be491 100644
--- a/res-xxhdpi/images/loop00014.png
+++ b/res-xxhdpi/images/loop00014.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00015.png b/res-xxhdpi/images/loop00015.png
index 3585facad..7c16937af 100644
--- a/res-xxhdpi/images/loop00015.png
+++ b/res-xxhdpi/images/loop00015.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00016.png b/res-xxhdpi/images/loop00016.png
index fd5089c44..50ea46e76 100644
--- a/res-xxhdpi/images/loop00016.png
+++ b/res-xxhdpi/images/loop00016.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00017.png b/res-xxhdpi/images/loop00017.png
index 2c8c6a434..40bb9db17 100644
--- a/res-xxhdpi/images/loop00017.png
+++ b/res-xxhdpi/images/loop00017.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00018.png b/res-xxhdpi/images/loop00018.png
index 23d7ca287..55b4d70f6 100644
--- a/res-xxhdpi/images/loop00018.png
+++ b/res-xxhdpi/images/loop00018.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00019.png b/res-xxhdpi/images/loop00019.png
index cdefe2c55..a443090e9 100644
--- a/res-xxhdpi/images/loop00019.png
+++ b/res-xxhdpi/images/loop00019.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00020.png b/res-xxhdpi/images/loop00020.png
index ae78e4cfe..96e77eec9 100644
--- a/res-xxhdpi/images/loop00020.png
+++ b/res-xxhdpi/images/loop00020.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00021.png b/res-xxhdpi/images/loop00021.png
index ad83cfe04..35260af50 100644
--- a/res-xxhdpi/images/loop00021.png
+++ b/res-xxhdpi/images/loop00021.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00022.png b/res-xxhdpi/images/loop00022.png
index 850076ac1..1861848d8 100644
--- a/res-xxhdpi/images/loop00022.png
+++ b/res-xxhdpi/images/loop00022.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00023.png b/res-xxhdpi/images/loop00023.png
index cd30b3997..4b2e7da5f 100644
--- a/res-xxhdpi/images/loop00023.png
+++ b/res-xxhdpi/images/loop00023.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00024.png b/res-xxhdpi/images/loop00024.png
index e7ae4b277..1ffc765f4 100644
--- a/res-xxhdpi/images/loop00024.png
+++ b/res-xxhdpi/images/loop00024.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00025.png b/res-xxhdpi/images/loop00025.png
index 4e24bd118..9fb29d44b 100644
--- a/res-xxhdpi/images/loop00025.png
+++ b/res-xxhdpi/images/loop00025.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00026.png b/res-xxhdpi/images/loop00026.png
index 27713cce9..143def39f 100644
--- a/res-xxhdpi/images/loop00026.png
+++ b/res-xxhdpi/images/loop00026.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00027.png b/res-xxhdpi/images/loop00027.png
index 34e4ade2e..623d6bed2 100644
--- a/res-xxhdpi/images/loop00027.png
+++ b/res-xxhdpi/images/loop00027.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00028.png b/res-xxhdpi/images/loop00028.png
index 0e6fdee75..b7b43d27f 100644
--- a/res-xxhdpi/images/loop00028.png
+++ b/res-xxhdpi/images/loop00028.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00029.png b/res-xxhdpi/images/loop00029.png
index 21c1c635b..c9f183db1 100644
--- a/res-xxhdpi/images/loop00029.png
+++ b/res-xxhdpi/images/loop00029.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00030.png b/res-xxhdpi/images/loop00030.png
index 984c24f9b..b85c7e35c 100644
--- a/res-xxhdpi/images/loop00030.png
+++ b/res-xxhdpi/images/loop00030.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00031.png b/res-xxhdpi/images/loop00031.png
index 25fe1de26..4d938e25a 100644
--- a/res-xxhdpi/images/loop00031.png
+++ b/res-xxhdpi/images/loop00031.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00032.png b/res-xxhdpi/images/loop00032.png
index c089cb8a4..0a1787602 100644
--- a/res-xxhdpi/images/loop00032.png
+++ b/res-xxhdpi/images/loop00032.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00033.png b/res-xxhdpi/images/loop00033.png
index 82a2d9b54..c8919c312 100644
--- a/res-xxhdpi/images/loop00033.png
+++ b/res-xxhdpi/images/loop00033.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00034.png b/res-xxhdpi/images/loop00034.png
index 1aa76b94c..1584d5dbb 100644
--- a/res-xxhdpi/images/loop00034.png
+++ b/res-xxhdpi/images/loop00034.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00035.png b/res-xxhdpi/images/loop00035.png
index 4399143e4..2220cd3c8 100644
--- a/res-xxhdpi/images/loop00035.png
+++ b/res-xxhdpi/images/loop00035.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00036.png b/res-xxhdpi/images/loop00036.png
index 975ae666e..97ae5485d 100644
--- a/res-xxhdpi/images/loop00036.png
+++ b/res-xxhdpi/images/loop00036.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00037.png b/res-xxhdpi/images/loop00037.png
index dcf9a9050..84fca9758 100644
--- a/res-xxhdpi/images/loop00037.png
+++ b/res-xxhdpi/images/loop00037.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00038.png b/res-xxhdpi/images/loop00038.png
index f10b8b723..bba2181d6 100644
--- a/res-xxhdpi/images/loop00038.png
+++ b/res-xxhdpi/images/loop00038.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00039.png b/res-xxhdpi/images/loop00039.png
index 9c0d1e361..4659625fd 100644
--- a/res-xxhdpi/images/loop00039.png
+++ b/res-xxhdpi/images/loop00039.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00040.png b/res-xxhdpi/images/loop00040.png
index b6b4908f6..6b3092ae5 100644
--- a/res-xxhdpi/images/loop00040.png
+++ b/res-xxhdpi/images/loop00040.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00041.png b/res-xxhdpi/images/loop00041.png
index 12a1a1e9a..5b3cd1663 100644
--- a/res-xxhdpi/images/loop00041.png
+++ b/res-xxhdpi/images/loop00041.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00042.png b/res-xxhdpi/images/loop00042.png
index f1fc35baf..dbb8a7f3a 100644
--- a/res-xxhdpi/images/loop00042.png
+++ b/res-xxhdpi/images/loop00042.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00043.png b/res-xxhdpi/images/loop00043.png
index 50ac99e5e..582454237 100644
--- a/res-xxhdpi/images/loop00043.png
+++ b/res-xxhdpi/images/loop00043.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00044.png b/res-xxhdpi/images/loop00044.png
index f115dcc9b..d814246ad 100644
--- a/res-xxhdpi/images/loop00044.png
+++ b/res-xxhdpi/images/loop00044.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00045.png b/res-xxhdpi/images/loop00045.png
index adf7a671e..e6a8d3089 100644
--- a/res-xxhdpi/images/loop00045.png
+++ b/res-xxhdpi/images/loop00045.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00046.png b/res-xxhdpi/images/loop00046.png
index 588eeb3fb..2f616bf01 100644
--- a/res-xxhdpi/images/loop00046.png
+++ b/res-xxhdpi/images/loop00046.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00047.png b/res-xxhdpi/images/loop00047.png
index 9dea7701d..39b74d95f 100644
--- a/res-xxhdpi/images/loop00047.png
+++ b/res-xxhdpi/images/loop00047.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00048.png b/res-xxhdpi/images/loop00048.png
index d5eaeb126..2a94b8c70 100644
--- a/res-xxhdpi/images/loop00048.png
+++ b/res-xxhdpi/images/loop00048.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00049.png b/res-xxhdpi/images/loop00049.png
index fb837295b..6d86e2e14 100644
--- a/res-xxhdpi/images/loop00049.png
+++ b/res-xxhdpi/images/loop00049.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00050.png b/res-xxhdpi/images/loop00050.png
index 72441db4f..c6cb34417 100644
--- a/res-xxhdpi/images/loop00050.png
+++ b/res-xxhdpi/images/loop00050.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00051.png b/res-xxhdpi/images/loop00051.png
index bf7170a53..dc510fa03 100644
--- a/res-xxhdpi/images/loop00051.png
+++ b/res-xxhdpi/images/loop00051.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00052.png b/res-xxhdpi/images/loop00052.png
index c512b56d4..9fdd3ad72 100644
--- a/res-xxhdpi/images/loop00052.png
+++ b/res-xxhdpi/images/loop00052.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00053.png b/res-xxhdpi/images/loop00053.png
index 6ac3ca6f3..8fff9cc12 100644
--- a/res-xxhdpi/images/loop00053.png
+++ b/res-xxhdpi/images/loop00053.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00054.png b/res-xxhdpi/images/loop00054.png
index ba194a6ad..1f9dfaf3e 100644
--- a/res-xxhdpi/images/loop00054.png
+++ b/res-xxhdpi/images/loop00054.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00055.png b/res-xxhdpi/images/loop00055.png
index 9623f0d5c..b0f669070 100644
--- a/res-xxhdpi/images/loop00055.png
+++ b/res-xxhdpi/images/loop00055.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00056.png b/res-xxhdpi/images/loop00056.png
index e785e690f..79144d962 100644
--- a/res-xxhdpi/images/loop00056.png
+++ b/res-xxhdpi/images/loop00056.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00057.png b/res-xxhdpi/images/loop00057.png
index 9a5747ae3..a451181c9 100644
--- a/res-xxhdpi/images/loop00057.png
+++ b/res-xxhdpi/images/loop00057.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00058.png b/res-xxhdpi/images/loop00058.png
index 9a097cf12..eb6af3af5 100644
--- a/res-xxhdpi/images/loop00058.png
+++ b/res-xxhdpi/images/loop00058.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00059.png b/res-xxhdpi/images/loop00059.png
index fee2db1e1..d9a976dfd 100644
--- a/res-xxhdpi/images/loop00059.png
+++ b/res-xxhdpi/images/loop00059.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00060.png b/res-xxhdpi/images/loop00060.png
index 0e00e709f..93ff5d9f0 100644
--- a/res-xxhdpi/images/loop00060.png
+++ b/res-xxhdpi/images/loop00060.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00061.png b/res-xxhdpi/images/loop00061.png
index 0ecce17bd..13dcd2ab9 100644
--- a/res-xxhdpi/images/loop00061.png
+++ b/res-xxhdpi/images/loop00061.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00062.png b/res-xxhdpi/images/loop00062.png
index 0a296d129..1ffc8f885 100644
--- a/res-xxhdpi/images/loop00062.png
+++ b/res-xxhdpi/images/loop00062.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00063.png b/res-xxhdpi/images/loop00063.png
index 56c3b8b9b..6ec7dae5c 100644
--- a/res-xxhdpi/images/loop00063.png
+++ b/res-xxhdpi/images/loop00063.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00064.png b/res-xxhdpi/images/loop00064.png
index e6d639a3d..3c5bcc36e 100644
--- a/res-xxhdpi/images/loop00064.png
+++ b/res-xxhdpi/images/loop00064.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00065.png b/res-xxhdpi/images/loop00065.png
index 02e382b99..541fa8893 100644
--- a/res-xxhdpi/images/loop00065.png
+++ b/res-xxhdpi/images/loop00065.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00066.png b/res-xxhdpi/images/loop00066.png
index fe89ed00a..e65ca8ff9 100644
--- a/res-xxhdpi/images/loop00066.png
+++ b/res-xxhdpi/images/loop00066.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00067.png b/res-xxhdpi/images/loop00067.png
index a8f6ce50c..c93125b77 100644
--- a/res-xxhdpi/images/loop00067.png
+++ b/res-xxhdpi/images/loop00067.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00068.png b/res-xxhdpi/images/loop00068.png
index f9b7fb1c9..f7ef8e93e 100644
--- a/res-xxhdpi/images/loop00068.png
+++ b/res-xxhdpi/images/loop00068.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00069.png b/res-xxhdpi/images/loop00069.png
index d0dc50768..e3a16c507 100644
--- a/res-xxhdpi/images/loop00069.png
+++ b/res-xxhdpi/images/loop00069.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00070.png b/res-xxhdpi/images/loop00070.png
index 63f9e4df1..24cfdb111 100644
--- a/res-xxhdpi/images/loop00070.png
+++ b/res-xxhdpi/images/loop00070.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00071.png b/res-xxhdpi/images/loop00071.png
index 5ba39724f..efffad470 100644
--- a/res-xxhdpi/images/loop00071.png
+++ b/res-xxhdpi/images/loop00071.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00072.png b/res-xxhdpi/images/loop00072.png
index de834e398..63d62f368 100644
--- a/res-xxhdpi/images/loop00072.png
+++ b/res-xxhdpi/images/loop00072.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00073.png b/res-xxhdpi/images/loop00073.png
index 4be2aed88..de0f41041 100644
--- a/res-xxhdpi/images/loop00073.png
+++ b/res-xxhdpi/images/loop00073.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00074.png b/res-xxhdpi/images/loop00074.png
index 235e9a228..45c9a74bc 100644
--- a/res-xxhdpi/images/loop00074.png
+++ b/res-xxhdpi/images/loop00074.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00075.png b/res-xxhdpi/images/loop00075.png
index f6d806d5a..a26893783 100644
--- a/res-xxhdpi/images/loop00075.png
+++ b/res-xxhdpi/images/loop00075.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00076.png b/res-xxhdpi/images/loop00076.png
index 1e916d723..9edd577e7 100644
--- a/res-xxhdpi/images/loop00076.png
+++ b/res-xxhdpi/images/loop00076.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00077.png b/res-xxhdpi/images/loop00077.png
index 0dbac748e..23a7cc77c 100644
--- a/res-xxhdpi/images/loop00077.png
+++ b/res-xxhdpi/images/loop00077.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00078.png b/res-xxhdpi/images/loop00078.png
index 504d34a44..67dbf2d06 100644
--- a/res-xxhdpi/images/loop00078.png
+++ b/res-xxhdpi/images/loop00078.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00079.png b/res-xxhdpi/images/loop00079.png
index 51f4e8d7c..0ef021faf 100644
--- a/res-xxhdpi/images/loop00079.png
+++ b/res-xxhdpi/images/loop00079.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00080.png b/res-xxhdpi/images/loop00080.png
index 6ef03b82e..0de307b7a 100644
--- a/res-xxhdpi/images/loop00080.png
+++ b/res-xxhdpi/images/loop00080.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00081.png b/res-xxhdpi/images/loop00081.png
index e2ebc394d..cc31e9201 100644
--- a/res-xxhdpi/images/loop00081.png
+++ b/res-xxhdpi/images/loop00081.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00082.png b/res-xxhdpi/images/loop00082.png
index 9de83a733..6809fa37b 100644
--- a/res-xxhdpi/images/loop00082.png
+++ b/res-xxhdpi/images/loop00082.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00083.png b/res-xxhdpi/images/loop00083.png
index c5c0099de..c3e3a5827 100644
--- a/res-xxhdpi/images/loop00083.png
+++ b/res-xxhdpi/images/loop00083.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00084.png b/res-xxhdpi/images/loop00084.png
index 84c794f31..fc0df350f 100644
--- a/res-xxhdpi/images/loop00084.png
+++ b/res-xxhdpi/images/loop00084.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00085.png b/res-xxhdpi/images/loop00085.png
index 29a40c628..38baf7e71 100644
--- a/res-xxhdpi/images/loop00085.png
+++ b/res-xxhdpi/images/loop00085.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00086.png b/res-xxhdpi/images/loop00086.png
index 89a471735..c6616ebe3 100644
--- a/res-xxhdpi/images/loop00086.png
+++ b/res-xxhdpi/images/loop00086.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00087.png b/res-xxhdpi/images/loop00087.png
index ef8d4d5db..2e6b715cd 100644
--- a/res-xxhdpi/images/loop00087.png
+++ b/res-xxhdpi/images/loop00087.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00088.png b/res-xxhdpi/images/loop00088.png
index 5fc6c6224..660d0df8f 100644
--- a/res-xxhdpi/images/loop00088.png
+++ b/res-xxhdpi/images/loop00088.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00089.png b/res-xxhdpi/images/loop00089.png
index d6d99f42f..a6b82c588 100644
--- a/res-xxhdpi/images/loop00089.png
+++ b/res-xxhdpi/images/loop00089.png
Binary files differ
diff --git a/res-xxhdpi/images/loop00090.png b/res-xxhdpi/images/loop00090.png
index c5172629d..003c2f875 100644
--- a/res-xxhdpi/images/loop00090.png
+++ b/res-xxhdpi/images/loop00090.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00000.png b/res-xxxhdpi/images/loop00000.png
index 1bc9db5b1..d6640c540 100644
--- a/res-xxxhdpi/images/loop00000.png
+++ b/res-xxxhdpi/images/loop00000.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00001.png b/res-xxxhdpi/images/loop00001.png
index f835b8567..e1b82b938 100644
--- a/res-xxxhdpi/images/loop00001.png
+++ b/res-xxxhdpi/images/loop00001.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00002.png b/res-xxxhdpi/images/loop00002.png
index e3bff326c..9b8a381f4 100644
--- a/res-xxxhdpi/images/loop00002.png
+++ b/res-xxxhdpi/images/loop00002.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00003.png b/res-xxxhdpi/images/loop00003.png
index d864c15d7..b4d244c78 100644
--- a/res-xxxhdpi/images/loop00003.png
+++ b/res-xxxhdpi/images/loop00003.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00004.png b/res-xxxhdpi/images/loop00004.png
index 5d861c9b4..c9231596e 100644
--- a/res-xxxhdpi/images/loop00004.png
+++ b/res-xxxhdpi/images/loop00004.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00005.png b/res-xxxhdpi/images/loop00005.png
index e9e860c3c..ed739fae4 100644
--- a/res-xxxhdpi/images/loop00005.png
+++ b/res-xxxhdpi/images/loop00005.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00006.png b/res-xxxhdpi/images/loop00006.png
index d7c516e52..68116922b 100644
--- a/res-xxxhdpi/images/loop00006.png
+++ b/res-xxxhdpi/images/loop00006.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00007.png b/res-xxxhdpi/images/loop00007.png
index fa6d39716..bbeee0111 100644
--- a/res-xxxhdpi/images/loop00007.png
+++ b/res-xxxhdpi/images/loop00007.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00008.png b/res-xxxhdpi/images/loop00008.png
index 888d3a278..2c28032e7 100644
--- a/res-xxxhdpi/images/loop00008.png
+++ b/res-xxxhdpi/images/loop00008.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00009.png b/res-xxxhdpi/images/loop00009.png
index 9e6ead241..4ea659cfa 100644
--- a/res-xxxhdpi/images/loop00009.png
+++ b/res-xxxhdpi/images/loop00009.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00010.png b/res-xxxhdpi/images/loop00010.png
index 30e13e058..45928bc4c 100644
--- a/res-xxxhdpi/images/loop00010.png
+++ b/res-xxxhdpi/images/loop00010.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00011.png b/res-xxxhdpi/images/loop00011.png
index d8abc2bb5..8a8f2f7be 100644
--- a/res-xxxhdpi/images/loop00011.png
+++ b/res-xxxhdpi/images/loop00011.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00012.png b/res-xxxhdpi/images/loop00012.png
index 2d88cfb6a..1714d1be0 100644
--- a/res-xxxhdpi/images/loop00012.png
+++ b/res-xxxhdpi/images/loop00012.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00013.png b/res-xxxhdpi/images/loop00013.png
index 0250f7494..18ab24f2d 100644
--- a/res-xxxhdpi/images/loop00013.png
+++ b/res-xxxhdpi/images/loop00013.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00014.png b/res-xxxhdpi/images/loop00014.png
index c3d9239c9..5099bc502 100644
--- a/res-xxxhdpi/images/loop00014.png
+++ b/res-xxxhdpi/images/loop00014.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00015.png b/res-xxxhdpi/images/loop00015.png
index 644c9c6bd..b7e68683d 100644
--- a/res-xxxhdpi/images/loop00015.png
+++ b/res-xxxhdpi/images/loop00015.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00016.png b/res-xxxhdpi/images/loop00016.png
index eff6e5b4e..bc1337574 100644
--- a/res-xxxhdpi/images/loop00016.png
+++ b/res-xxxhdpi/images/loop00016.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00017.png b/res-xxxhdpi/images/loop00017.png
index b472a86be..8a9bd869d 100644
--- a/res-xxxhdpi/images/loop00017.png
+++ b/res-xxxhdpi/images/loop00017.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00018.png b/res-xxxhdpi/images/loop00018.png
index b17b6ce12..2150d630e 100644
--- a/res-xxxhdpi/images/loop00018.png
+++ b/res-xxxhdpi/images/loop00018.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00019.png b/res-xxxhdpi/images/loop00019.png
index d89b4da52..ec0cc589c 100644
--- a/res-xxxhdpi/images/loop00019.png
+++ b/res-xxxhdpi/images/loop00019.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00020.png b/res-xxxhdpi/images/loop00020.png
index 7e757b845..6596ea215 100644
--- a/res-xxxhdpi/images/loop00020.png
+++ b/res-xxxhdpi/images/loop00020.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00021.png b/res-xxxhdpi/images/loop00021.png
index 1a8ce3ec5..c874649cb 100644
--- a/res-xxxhdpi/images/loop00021.png
+++ b/res-xxxhdpi/images/loop00021.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00022.png b/res-xxxhdpi/images/loop00022.png
index e9ab39a5f..d5f834d45 100644
--- a/res-xxxhdpi/images/loop00022.png
+++ b/res-xxxhdpi/images/loop00022.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00023.png b/res-xxxhdpi/images/loop00023.png
index e1a7bf782..eb8af82fa 100644
--- a/res-xxxhdpi/images/loop00023.png
+++ b/res-xxxhdpi/images/loop00023.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00024.png b/res-xxxhdpi/images/loop00024.png
index f77f70cff..7da550688 100644
--- a/res-xxxhdpi/images/loop00024.png
+++ b/res-xxxhdpi/images/loop00024.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00025.png b/res-xxxhdpi/images/loop00025.png
index 8348cdfca..884414973 100644
--- a/res-xxxhdpi/images/loop00025.png
+++ b/res-xxxhdpi/images/loop00025.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00026.png b/res-xxxhdpi/images/loop00026.png
index 55fecc8bb..ee36358aa 100644
--- a/res-xxxhdpi/images/loop00026.png
+++ b/res-xxxhdpi/images/loop00026.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00027.png b/res-xxxhdpi/images/loop00027.png
index f4edf0641..0299dae07 100644
--- a/res-xxxhdpi/images/loop00027.png
+++ b/res-xxxhdpi/images/loop00027.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00028.png b/res-xxxhdpi/images/loop00028.png
index 6dbe90446..a8f5cef33 100644
--- a/res-xxxhdpi/images/loop00028.png
+++ b/res-xxxhdpi/images/loop00028.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00029.png b/res-xxxhdpi/images/loop00029.png
index 764f27a05..6b2ab3fcd 100644
--- a/res-xxxhdpi/images/loop00029.png
+++ b/res-xxxhdpi/images/loop00029.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00030.png b/res-xxxhdpi/images/loop00030.png
index 2d2156930..2d5b48de3 100644
--- a/res-xxxhdpi/images/loop00030.png
+++ b/res-xxxhdpi/images/loop00030.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00031.png b/res-xxxhdpi/images/loop00031.png
index e02db9c8b..40c4296cd 100644
--- a/res-xxxhdpi/images/loop00031.png
+++ b/res-xxxhdpi/images/loop00031.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00032.png b/res-xxxhdpi/images/loop00032.png
index 03f045684..f130b0ab9 100644
--- a/res-xxxhdpi/images/loop00032.png
+++ b/res-xxxhdpi/images/loop00032.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00033.png b/res-xxxhdpi/images/loop00033.png
index 5bdbbdbaf..24151ba62 100644
--- a/res-xxxhdpi/images/loop00033.png
+++ b/res-xxxhdpi/images/loop00033.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00034.png b/res-xxxhdpi/images/loop00034.png
index c8164e204..f74f89555 100644
--- a/res-xxxhdpi/images/loop00034.png
+++ b/res-xxxhdpi/images/loop00034.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00035.png b/res-xxxhdpi/images/loop00035.png
index ed5721d7c..4a0f8053f 100644
--- a/res-xxxhdpi/images/loop00035.png
+++ b/res-xxxhdpi/images/loop00035.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00036.png b/res-xxxhdpi/images/loop00036.png
index 08dffd26b..74658622d 100644
--- a/res-xxxhdpi/images/loop00036.png
+++ b/res-xxxhdpi/images/loop00036.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00037.png b/res-xxxhdpi/images/loop00037.png
index 583b665e4..5d10d10a5 100644
--- a/res-xxxhdpi/images/loop00037.png
+++ b/res-xxxhdpi/images/loop00037.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00038.png b/res-xxxhdpi/images/loop00038.png
index cc2933d6a..15d5db2f2 100644
--- a/res-xxxhdpi/images/loop00038.png
+++ b/res-xxxhdpi/images/loop00038.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00039.png b/res-xxxhdpi/images/loop00039.png
index 1f0496adb..b92d49d08 100644
--- a/res-xxxhdpi/images/loop00039.png
+++ b/res-xxxhdpi/images/loop00039.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00040.png b/res-xxxhdpi/images/loop00040.png
index 05bf33593..5c19c0254 100644
--- a/res-xxxhdpi/images/loop00040.png
+++ b/res-xxxhdpi/images/loop00040.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00041.png b/res-xxxhdpi/images/loop00041.png
index a868c7b2d..2c9d406b7 100644
--- a/res-xxxhdpi/images/loop00041.png
+++ b/res-xxxhdpi/images/loop00041.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00042.png b/res-xxxhdpi/images/loop00042.png
index 7c7220f29..bb24da5b4 100644
--- a/res-xxxhdpi/images/loop00042.png
+++ b/res-xxxhdpi/images/loop00042.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00043.png b/res-xxxhdpi/images/loop00043.png
index 30336a77b..0a9efd8a2 100644
--- a/res-xxxhdpi/images/loop00043.png
+++ b/res-xxxhdpi/images/loop00043.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00044.png b/res-xxxhdpi/images/loop00044.png
index 80d373584..70e1cbc84 100644
--- a/res-xxxhdpi/images/loop00044.png
+++ b/res-xxxhdpi/images/loop00044.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00045.png b/res-xxxhdpi/images/loop00045.png
index 71a52c20c..0ecb787b9 100644
--- a/res-xxxhdpi/images/loop00045.png
+++ b/res-xxxhdpi/images/loop00045.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00046.png b/res-xxxhdpi/images/loop00046.png
index b3b37029d..c2c425abd 100644
--- a/res-xxxhdpi/images/loop00046.png
+++ b/res-xxxhdpi/images/loop00046.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00047.png b/res-xxxhdpi/images/loop00047.png
index 6ce2b37ab..71812b3a7 100644
--- a/res-xxxhdpi/images/loop00047.png
+++ b/res-xxxhdpi/images/loop00047.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00048.png b/res-xxxhdpi/images/loop00048.png
index 0b428cd73..6ef44ce22 100644
--- a/res-xxxhdpi/images/loop00048.png
+++ b/res-xxxhdpi/images/loop00048.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00049.png b/res-xxxhdpi/images/loop00049.png
index 53c1a4774..5c7b1c50a 100644
--- a/res-xxxhdpi/images/loop00049.png
+++ b/res-xxxhdpi/images/loop00049.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00050.png b/res-xxxhdpi/images/loop00050.png
index 0e17bbdff..10dcf213c 100644
--- a/res-xxxhdpi/images/loop00050.png
+++ b/res-xxxhdpi/images/loop00050.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00051.png b/res-xxxhdpi/images/loop00051.png
index 78a99dcc7..e850b32aa 100644
--- a/res-xxxhdpi/images/loop00051.png
+++ b/res-xxxhdpi/images/loop00051.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00052.png b/res-xxxhdpi/images/loop00052.png
index efd0df559..7abf444a3 100644
--- a/res-xxxhdpi/images/loop00052.png
+++ b/res-xxxhdpi/images/loop00052.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00053.png b/res-xxxhdpi/images/loop00053.png
index 0c417eef9..f680849af 100644
--- a/res-xxxhdpi/images/loop00053.png
+++ b/res-xxxhdpi/images/loop00053.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00054.png b/res-xxxhdpi/images/loop00054.png
index 072077e6f..012c14dee 100644
--- a/res-xxxhdpi/images/loop00054.png
+++ b/res-xxxhdpi/images/loop00054.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00055.png b/res-xxxhdpi/images/loop00055.png
index 693083ac8..ae335dbb9 100644
--- a/res-xxxhdpi/images/loop00055.png
+++ b/res-xxxhdpi/images/loop00055.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00056.png b/res-xxxhdpi/images/loop00056.png
index 07cbd75d1..8e928ea85 100644
--- a/res-xxxhdpi/images/loop00056.png
+++ b/res-xxxhdpi/images/loop00056.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00057.png b/res-xxxhdpi/images/loop00057.png
index cc98ab21a..c23d4f0d7 100644
--- a/res-xxxhdpi/images/loop00057.png
+++ b/res-xxxhdpi/images/loop00057.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00058.png b/res-xxxhdpi/images/loop00058.png
index f55d21821..d5144aa69 100644
--- a/res-xxxhdpi/images/loop00058.png
+++ b/res-xxxhdpi/images/loop00058.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00059.png b/res-xxxhdpi/images/loop00059.png
index 4bfed350a..f8f3a7c16 100644
--- a/res-xxxhdpi/images/loop00059.png
+++ b/res-xxxhdpi/images/loop00059.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00060.png b/res-xxxhdpi/images/loop00060.png
index 59f158b10..8894a236f 100644
--- a/res-xxxhdpi/images/loop00060.png
+++ b/res-xxxhdpi/images/loop00060.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00061.png b/res-xxxhdpi/images/loop00061.png
index fd0dc558d..1c33e84fd 100644
--- a/res-xxxhdpi/images/loop00061.png
+++ b/res-xxxhdpi/images/loop00061.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00062.png b/res-xxxhdpi/images/loop00062.png
index 2c316ce69..c2242ff49 100644
--- a/res-xxxhdpi/images/loop00062.png
+++ b/res-xxxhdpi/images/loop00062.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00063.png b/res-xxxhdpi/images/loop00063.png
index 5b83c81cd..c357ffaae 100644
--- a/res-xxxhdpi/images/loop00063.png
+++ b/res-xxxhdpi/images/loop00063.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00064.png b/res-xxxhdpi/images/loop00064.png
index ced0a9ab5..f9466997e 100644
--- a/res-xxxhdpi/images/loop00064.png
+++ b/res-xxxhdpi/images/loop00064.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00065.png b/res-xxxhdpi/images/loop00065.png
index 6e699dda6..52d976b25 100644
--- a/res-xxxhdpi/images/loop00065.png
+++ b/res-xxxhdpi/images/loop00065.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00066.png b/res-xxxhdpi/images/loop00066.png
index 8853cfffe..cf37f2f97 100644
--- a/res-xxxhdpi/images/loop00066.png
+++ b/res-xxxhdpi/images/loop00066.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00067.png b/res-xxxhdpi/images/loop00067.png
index 24d11d14b..d8a1e7835 100644
--- a/res-xxxhdpi/images/loop00067.png
+++ b/res-xxxhdpi/images/loop00067.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00068.png b/res-xxxhdpi/images/loop00068.png
index d54fff0ba..8bbaf020d 100644
--- a/res-xxxhdpi/images/loop00068.png
+++ b/res-xxxhdpi/images/loop00068.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00069.png b/res-xxxhdpi/images/loop00069.png
index 67f8d7884..99d1072cd 100644
--- a/res-xxxhdpi/images/loop00069.png
+++ b/res-xxxhdpi/images/loop00069.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00070.png b/res-xxxhdpi/images/loop00070.png
index d56fb78a5..bd8979e73 100644
--- a/res-xxxhdpi/images/loop00070.png
+++ b/res-xxxhdpi/images/loop00070.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00071.png b/res-xxxhdpi/images/loop00071.png
index e787b8a5a..e823dccce 100644
--- a/res-xxxhdpi/images/loop00071.png
+++ b/res-xxxhdpi/images/loop00071.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00072.png b/res-xxxhdpi/images/loop00072.png
index 81f2e4c4b..475190fd0 100644
--- a/res-xxxhdpi/images/loop00072.png
+++ b/res-xxxhdpi/images/loop00072.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00073.png b/res-xxxhdpi/images/loop00073.png
index ad46ed162..84c4874c9 100644
--- a/res-xxxhdpi/images/loop00073.png
+++ b/res-xxxhdpi/images/loop00073.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00074.png b/res-xxxhdpi/images/loop00074.png
index d835a2bd3..e2d90a292 100644
--- a/res-xxxhdpi/images/loop00074.png
+++ b/res-xxxhdpi/images/loop00074.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00075.png b/res-xxxhdpi/images/loop00075.png
index aa35a84ba..ff13dfeb8 100644
--- a/res-xxxhdpi/images/loop00075.png
+++ b/res-xxxhdpi/images/loop00075.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00076.png b/res-xxxhdpi/images/loop00076.png
index 6ea547e29..01886ae45 100644
--- a/res-xxxhdpi/images/loop00076.png
+++ b/res-xxxhdpi/images/loop00076.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00077.png b/res-xxxhdpi/images/loop00077.png
index c80938309..4bac4ea9b 100644
--- a/res-xxxhdpi/images/loop00077.png
+++ b/res-xxxhdpi/images/loop00077.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00078.png b/res-xxxhdpi/images/loop00078.png
index 827a75c9f..6ced1a27f 100644
--- a/res-xxxhdpi/images/loop00078.png
+++ b/res-xxxhdpi/images/loop00078.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00079.png b/res-xxxhdpi/images/loop00079.png
index 18dc1cf90..f7baed340 100644
--- a/res-xxxhdpi/images/loop00079.png
+++ b/res-xxxhdpi/images/loop00079.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00080.png b/res-xxxhdpi/images/loop00080.png
index df06b5628..fbb0a138d 100644
--- a/res-xxxhdpi/images/loop00080.png
+++ b/res-xxxhdpi/images/loop00080.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00081.png b/res-xxxhdpi/images/loop00081.png
index a5ba60379..3fc7a4959 100644
--- a/res-xxxhdpi/images/loop00081.png
+++ b/res-xxxhdpi/images/loop00081.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00082.png b/res-xxxhdpi/images/loop00082.png
index e3298c5f3..3114002bc 100644
--- a/res-xxxhdpi/images/loop00082.png
+++ b/res-xxxhdpi/images/loop00082.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00083.png b/res-xxxhdpi/images/loop00083.png
index c395662c4..df1b8301a 100644
--- a/res-xxxhdpi/images/loop00083.png
+++ b/res-xxxhdpi/images/loop00083.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00084.png b/res-xxxhdpi/images/loop00084.png
index f80af8e78..11a72f2e3 100644
--- a/res-xxxhdpi/images/loop00084.png
+++ b/res-xxxhdpi/images/loop00084.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00085.png b/res-xxxhdpi/images/loop00085.png
index c89675830..ba0a43ecc 100644
--- a/res-xxxhdpi/images/loop00085.png
+++ b/res-xxxhdpi/images/loop00085.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00086.png b/res-xxxhdpi/images/loop00086.png
index 97716923f..c4111b2a3 100644
--- a/res-xxxhdpi/images/loop00086.png
+++ b/res-xxxhdpi/images/loop00086.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00087.png b/res-xxxhdpi/images/loop00087.png
index e805dfa01..13b83c7e5 100644
--- a/res-xxxhdpi/images/loop00087.png
+++ b/res-xxxhdpi/images/loop00087.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00088.png b/res-xxxhdpi/images/loop00088.png
index aa1a88e26..e7d9d6d7a 100644
--- a/res-xxxhdpi/images/loop00088.png
+++ b/res-xxxhdpi/images/loop00088.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00089.png b/res-xxxhdpi/images/loop00089.png
index 5bf7781d0..fd1951c6f 100644
--- a/res-xxxhdpi/images/loop00089.png
+++ b/res-xxxhdpi/images/loop00089.png
Binary files differ
diff --git a/res-xxxhdpi/images/loop00090.png b/res-xxxhdpi/images/loop00090.png
index 1bc9db5b1..d6640c540 100644
--- a/res-xxxhdpi/images/loop00090.png
+++ b/res-xxxhdpi/images/loop00090.png
Binary files differ
diff --git a/screen_ui.cpp b/screen_ui.cpp
index 2a0769e49..95b97d15c 100644
--- a/screen_ui.cpp
+++ b/screen_ui.cpp
@@ -53,8 +53,6 @@ static double now() {
ScreenRecoveryUI::ScreenRecoveryUI() :
currentIcon(NONE),
locale(nullptr),
- intro_done(false),
- current_frame(0),
progressBarType(EMPTY),
progressScopeStart(0),
progressScopeSize(0),
@@ -75,6 +73,8 @@ ScreenRecoveryUI::ScreenRecoveryUI() :
file_viewer_text_(nullptr),
intro_frames(0),
loop_frames(0),
+ current_frame(0),
+ intro_done(false),
animation_fps(30), // TODO: there's currently no way to infer this.
stage(-1),
max_stage(-1),
@@ -259,7 +259,7 @@ void ScreenRecoveryUI::DrawHorizontalRule(int* y) {
}
void ScreenRecoveryUI::DrawTextLine(int x, int* y, const char* line, bool bold) {
- gr_text(x, *y, line, bold);
+ gr_text(gr_sys_font(), x, *y, line, bold);
*y += char_height_ + 4;
}
@@ -315,10 +315,10 @@ void ScreenRecoveryUI::draw_screen_locked() {
gr_fill(0, y - 2, gr_fb_width(), y + char_height_ + 2);
// Bold white text for the selected item.
SetColor(MENU_SEL_FG);
- gr_text(4, y, menu_[i], true);
+ gr_text(gr_sys_font(), 4, y, menu_[i], true);
SetColor(MENU);
} else {
- gr_text(4, y, menu_[i], false);
+ gr_text(gr_sys_font(), 4, y, menu_[i], false);
}
y += char_height_ + 4;
}
@@ -334,7 +334,7 @@ void ScreenRecoveryUI::draw_screen_locked() {
for (int ty = gr_fb_height() - char_height_;
ty >= y && count < text_rows_;
ty -= char_height_, ++count) {
- gr_text(0, ty, text_[row], false);
+ gr_text(gr_sys_font(), 0, ty, text_[row], false);
--row;
if (row < 0) row = text_rows_ - 1;
}
@@ -447,9 +447,18 @@ void ScreenRecoveryUI::SetSystemUpdateText(bool security_update) {
Redraw();
}
-void ScreenRecoveryUI::Init() {
+void ScreenRecoveryUI::InitTextParams() {
gr_init();
+ gr_font_size(gr_sys_font(), &char_width_, &char_height_);
+ text_rows_ = gr_fb_height() / char_height_;
+ text_cols_ = gr_fb_width() / char_width_;
+}
+
+void ScreenRecoveryUI::Init() {
+ RecoveryUI::Init();
+ InitTextParams();
+
density_ = static_cast<float>(property_get_int32("ro.sf.lcd_density", 160)) / 160.f;
// Are we portrait or landscape?
@@ -457,10 +466,6 @@ void ScreenRecoveryUI::Init() {
// Are we the large variant of our base layout?
if (gr_fb_height() > PixelsFromDp(800)) ++layout_;
- gr_font_size(&char_width_, &char_height_);
- text_rows_ = gr_fb_height() / char_height_;
- text_cols_ = gr_fb_width() / char_width_;
-
text_ = Alloc2d(text_rows_, text_cols_ + 1);
file_viewer_text_ = Alloc2d(text_rows_, text_cols_ + 1);
menu_ = Alloc2d(text_rows_, text_cols_ + 1);
@@ -487,37 +492,42 @@ void ScreenRecoveryUI::Init() {
LoadAnimation();
pthread_create(&progress_thread_, nullptr, ProgressThreadStartRoutine, this);
-
- RecoveryUI::Init();
}
void ScreenRecoveryUI::LoadAnimation() {
- // How many frames of intro and loop do we have?
std::unique_ptr<DIR, decltype(&closedir)> dir(opendir("/res/images"), closedir);
dirent* de;
+ std::vector<std::string> intro_frame_names;
+ std::vector<std::string> loop_frame_names;
+
while ((de = readdir(dir.get())) != nullptr) {
- int value;
- if (sscanf(de->d_name, "intro%d", &value) == 1 && intro_frames < (value + 1)) {
- intro_frames = value + 1;
- } else if (sscanf(de->d_name, "loop%d", &value) == 1 && loop_frames < (value + 1)) {
- loop_frames = value + 1;
+ int value, num_chars;
+ if (sscanf(de->d_name, "intro%d%n.png", &value, &num_chars) == 1) {
+ intro_frame_names.emplace_back(de->d_name, num_chars);
+ } else if (sscanf(de->d_name, "loop%d%n.png", &value, &num_chars) == 1) {
+ loop_frame_names.emplace_back(de->d_name, num_chars);
}
}
+ intro_frames = intro_frame_names.size();
+ loop_frames = loop_frame_names.size();
+
// It's okay to not have an intro.
if (intro_frames == 0) intro_done = true;
// But you must have an animation.
if (loop_frames == 0) abort();
+ std::sort(intro_frame_names.begin(), intro_frame_names.end());
+ std::sort(loop_frame_names.begin(), loop_frame_names.end());
+
introFrames = new GRSurface*[intro_frames];
- for (int i = 0; i < intro_frames; ++i) {
- // TODO: remember the names above, so we don't have to hard-code the number of 0s.
- LoadBitmap(android::base::StringPrintf("intro%05d", i).c_str(), &introFrames[i]);
+ for (size_t i = 0; i < intro_frames; i++) {
+ LoadBitmap(intro_frame_names.at(i).c_str(), &introFrames[i]);
}
loopFrames = new GRSurface*[loop_frames];
- for (int i = 0; i < loop_frames; ++i) {
- LoadBitmap(android::base::StringPrintf("loop%05d", i).c_str(), &loopFrames[i]);
+ for (size_t i = 0; i < loop_frames; i++) {
+ LoadBitmap(loop_frame_names.at(i).c_str(), &loopFrames[i]);
}
}
diff --git a/screen_ui.h b/screen_ui.h
index 898775778..de7b6442e 100644
--- a/screen_ui.h
+++ b/screen_ui.h
@@ -37,16 +37,16 @@ class ScreenRecoveryUI : public RecoveryUI {
void SetSystemUpdateText(bool security_update);
// progress indicator
- void SetProgressType(ProgressType type);
- void ShowProgress(float portion, float seconds);
- void SetProgress(float fraction);
+ void SetProgressType(ProgressType type) override;
+ void ShowProgress(float portion, float seconds) override;
+ void SetProgress(float fraction) override;
- void SetStage(int current, int max);
+ void SetStage(int current, int max) override;
// text log
- void ShowText(bool visible);
- bool IsTextVisible();
- bool WasTextEverVisible();
+ void ShowText(bool visible) override;
+ bool IsTextVisible() override;
+ bool WasTextEverVisible() override;
// printing messages
void Print(const char* fmt, ...) __printflike(2, 3);
@@ -72,8 +72,6 @@ class ScreenRecoveryUI : public RecoveryUI {
Icon currentIcon;
const char* locale;
- bool intro_done;
- int current_frame;
// The scale factor from dp to pixels. 1.0 for mdpi, 4.0 for xxxhdpi.
float density_;
@@ -123,8 +121,11 @@ class ScreenRecoveryUI : public RecoveryUI {
pthread_t progress_thread_;
// Number of intro frames and loop frames in the animation.
- int intro_frames;
- int loop_frames;
+ size_t intro_frames;
+ size_t loop_frames;
+
+ size_t current_frame;
+ bool intro_done;
// Number of frames per sec (default: 30) for both parts of the animation.
int animation_fps;
@@ -136,11 +137,13 @@ class ScreenRecoveryUI : public RecoveryUI {
pthread_mutex_t updateMutex;
bool rtl_locale;
- void draw_background_locked();
- void draw_foreground_locked();
- void draw_screen_locked();
- void update_screen_locked();
- void update_progress_locked();
+ virtual void InitTextParams();
+
+ virtual void draw_background_locked();
+ virtual void draw_foreground_locked();
+ virtual void draw_screen_locked();
+ virtual void update_screen_locked();
+ virtual void update_progress_locked();
GRSurface* GetCurrentFrame();
GRSurface* GetCurrentText();
@@ -148,8 +151,8 @@ class ScreenRecoveryUI : public RecoveryUI {
static void* ProgressThreadStartRoutine(void* data);
void ProgressThreadLoop();
- void ShowFile(FILE*);
- void PrintV(const char*, bool, va_list);
+ virtual void ShowFile(FILE*);
+ virtual void PrintV(const char*, bool, va_list);
void PutChar(char);
void ClearText();
@@ -158,9 +161,9 @@ class ScreenRecoveryUI : public RecoveryUI {
void LoadLocalizedBitmap(const char* filename, GRSurface** surface);
int PixelsFromDp(int dp);
- int GetAnimationBaseline();
- int GetProgressBaseline();
- int GetTextBaseline();
+ virtual int GetAnimationBaseline();
+ virtual int GetProgressBaseline();
+ virtual int GetTextBaseline();
void DrawHorizontalRule(int* y);
void DrawTextLine(int x, int* y, const char* line, bool bold);
diff --git a/wear_ui.cpp b/wear_ui.cpp
index b437fd0ae..bfa7097ea 100644
--- a/wear_ui.cpp
+++ b/wear_ui.cpp
@@ -47,32 +47,13 @@ static double now() {
}
WearRecoveryUI::WearRecoveryUI() :
- progress_bar_height(3),
- progress_bar_width(200),
progress_bar_y(259),
outer_height(0),
outer_width(0),
- menu_unusable_rows(0),
- intro_frames(22),
- loop_frames(60),
- animation_fps(30),
- currentIcon(NONE),
- intro_done(false),
- current_frame(0),
- progressBarType(EMPTY),
- progressScopeStart(0),
- progressScopeSize(0),
- progress(0),
- text_cols(0),
- text_rows(0),
- text_col(0),
- text_row(0),
- text_top(0),
- show_text(false),
- show_text_ever(false),
- show_menu(false),
- menu_items(0),
- menu_sel(0) {
+ menu_unusable_rows(0) {
+ intro_frames = 22;
+ loop_frames = 60;
+ animation_fps = 30;
for (size_t i = 0; i < 5; i++)
backgroundIcon[i] = NULL;
@@ -80,16 +61,22 @@ WearRecoveryUI::WearRecoveryUI() :
self = this;
}
+int WearRecoveryUI::GetProgressBaseline() {
+ return progress_bar_y;
+}
+
// Draw background frame on the screen. Does not flip pages.
// Should only be called with updateMutex locked.
-void WearRecoveryUI::draw_background_locked(Icon icon)
+// TODO merge drawing routines with screen_ui
+void WearRecoveryUI::draw_background_locked()
{
+ pagesIdentical = false;
gr_color(0, 0, 0, 255);
gr_fill(0, 0, gr_fb_width(), gr_fb_height());
- if (icon) {
+ if (currentIcon != NONE) {
GRSurface* surface;
- if (icon == INSTALLING_UPDATE || icon == ERASING) {
+ if (currentIcon == INSTALLING_UPDATE || currentIcon == ERASING) {
if (!intro_done) {
surface = introFrames[current_frame];
} else {
@@ -97,7 +84,7 @@ void WearRecoveryUI::draw_background_locked(Icon icon)
}
}
else {
- surface = backgroundIcon[icon];
+ surface = backgroundIcon[currentIcon];
}
int width = gr_get_width(surface);
@@ -110,36 +97,6 @@ void WearRecoveryUI::draw_background_locked(Icon icon)
}
}
-// Draw the progress bar (if any) on the screen. Does not flip pages.
-// Should only be called with updateMutex locked.
-void WearRecoveryUI::draw_progress_locked()
-{
- if (currentIcon == ERROR) return;
- if (progressBarType != DETERMINATE) return;
-
- int width = progress_bar_width;
- int height = progress_bar_height;
- int dx = (gr_fb_width() - width)/2;
- int dy = progress_bar_y;
-
- float p = progressScopeStart + progress * progressScopeSize;
- int pos = (int) (p * width);
-
- gr_color(0x43, 0x43, 0x43, 0xff);
- gr_fill(dx, dy, dx + width, dy + height);
-
- if (pos > 0) {
- gr_color(0x02, 0xa8, 0xf3, 255);
- if (rtl_locale) {
- // Fill the progress bar from right to left.
- gr_fill(dx + width - pos, dy, dx + width, dy + height);
- } else {
- // Fill the progress bar from left to right.
- gr_fill(dx, dy, dx + pos, dy + height);
- }
- }
-}
-
static const char* HEADERS[] = {
"Swipe up/down to move.",
"Swipe left/right to select.",
@@ -147,13 +104,15 @@ static const char* HEADERS[] = {
NULL
};
+// TODO merge drawing routines with screen_ui
void WearRecoveryUI::draw_screen_locked()
{
- draw_background_locked(currentIcon);
- draw_progress_locked();
char cur_selection_str[50];
- if (show_text) {
+ draw_background_locked();
+ if (!show_text) {
+ draw_foreground_locked();
+ } else {
SetColor(TEXT_FILL);
gr_fill(0, 0, gr_fb_width(), gr_fb_height());
@@ -177,7 +136,7 @@ void WearRecoveryUI::draw_screen_locked()
// items don't fit on the screen.
if (menu_items > menu_end - menu_start) {
sprintf(cur_selection_str, "Current item: %d/%d", menu_sel + 1, menu_items);
- gr_text(x+4, y, cur_selection_str, 1);
+ gr_text(gr_sys_font(), x+4, y, cur_selection_str, 1);
y += char_height_+4;
}
@@ -192,10 +151,12 @@ void WearRecoveryUI::draw_screen_locked()
gr_fill(x, y-2, gr_fb_width()-x, y+char_height_+2);
// white text of selected item
SetColor(MENU_SEL_FG);
- if (menu[i][0]) gr_text(x+4, y, menu[i], 1);
+ if (menu_[i][0]) {
+ gr_text(gr_sys_font(), x + 4, y, menu_[i], 1);
+ }
SetColor(MENU);
- } else {
- if (menu[i][0]) gr_text(x+4, y, menu[i], 0);
+ } else if (menu_[i][0]) {
+ gr_text(gr_sys_font(), x + 4, y, menu_[i], 0);
}
y += char_height_+4;
}
@@ -211,163 +172,42 @@ void WearRecoveryUI::draw_screen_locked()
// screen, the bottom of the menu, or we've displayed the
// entire text buffer.
int ty;
- int row = (text_top+text_rows-1) % text_rows;
+ int row = (text_top_ + text_rows_ - 1) % text_rows_;
size_t count = 0;
for (int ty = gr_fb_height() - char_height_ - outer_height;
- ty > y+2 && count < text_rows;
+ ty > y + 2 && count < text_rows_;
ty -= char_height_, ++count) {
- gr_text(x+4, ty, text[row], 0);
+ gr_text(gr_sys_font(), x+4, ty, text_[row], 0);
--row;
- if (row < 0) row = text_rows-1;
+ if (row < 0) row = text_rows_ - 1;
}
}
}
-void WearRecoveryUI::update_screen_locked()
-{
+// TODO merge drawing routines with screen_ui
+void WearRecoveryUI::update_progress_locked() {
draw_screen_locked();
gr_flip();
}
-// Keeps the progress bar updated, even when the process is otherwise busy.
-void* WearRecoveryUI::progress_thread(void *cookie) {
- self->progress_loop();
- return NULL;
-}
+void WearRecoveryUI::InitTextParams() {
+ ScreenRecoveryUI::InitTextParams();
-void WearRecoveryUI::progress_loop() {
- double interval = 1.0 / animation_fps;
- for (;;) {
- double start = now();
- pthread_mutex_lock(&updateMutex);
- int redraw = 0;
+ text_cols_ = (gr_fb_width() - (outer_width * 2)) / char_width_;
- if ((currentIcon == INSTALLING_UPDATE || currentIcon == ERASING)
- && !show_text) {
- if (!intro_done) {
- if (current_frame >= intro_frames - 1) {
- intro_done = true;
- current_frame = 0;
- } else {
- current_frame++;
- }
- } else {
- current_frame = (current_frame + 1) % loop_frames;
- }
- redraw = 1;
- }
+ if (text_rows_ > kMaxRows) text_rows_ = kMaxRows;
+ if (text_cols_ > kMaxCols) text_cols_ = kMaxCols;
- // move the progress bar forward on timed intervals, if configured
- int duration = progressScopeDuration;
- if (progressBarType == DETERMINATE && duration > 0) {
- double elapsed = now() - progressScopeTime;
- float p = 1.0 * elapsed / duration;
- if (p > 1.0) p = 1.0;
- if (p > progress) {
- progress = p;
- redraw = 1;
- }
- }
-
- if (redraw)
- update_screen_locked();
-
- pthread_mutex_unlock(&updateMutex);
- double end = now();
- // minimum of 20ms delay between frames
- double delay = interval - (end-start);
- if (delay < 0.02) delay = 0.02;
- usleep((long)(delay * 1000000));
- }
-}
-
-void WearRecoveryUI::Init()
-{
- gr_init();
-
- gr_font_size(&char_width_, &char_height_);
-
- text_col = text_row = 0;
- text_rows = (gr_fb_height()) / char_height_;
visible_text_rows = (gr_fb_height() - (outer_height * 2)) / char_height_;
- if (text_rows > kMaxRows) text_rows = kMaxRows;
- text_top = 1;
+}
- text_cols = (gr_fb_width() - (outer_width * 2)) / char_width_;
- if (text_cols > kMaxCols - 1) text_cols = kMaxCols - 1;
+void WearRecoveryUI::Init() {
+ ScreenRecoveryUI::Init();
LoadBitmap("icon_installing", &backgroundIcon[INSTALLING_UPDATE]);
backgroundIcon[ERASING] = backgroundIcon[INSTALLING_UPDATE];
LoadBitmap("icon_error", &backgroundIcon[ERROR]);
backgroundIcon[NO_COMMAND] = backgroundIcon[ERROR];
-
- introFrames = (GRSurface**)malloc(intro_frames * sizeof(GRSurface*));
- for (int i = 0; i < intro_frames; ++i) {
- char filename[40];
- sprintf(filename, "intro%02d", i);
- LoadBitmap(filename, introFrames + i);
- }
-
- loopFrames = (GRSurface**)malloc(loop_frames * sizeof(GRSurface*));
- for (int i = 0; i < loop_frames; ++i) {
- char filename[40];
- sprintf(filename, "loop%02d", i);
- LoadBitmap(filename, loopFrames + i);
- }
-
- pthread_create(&progress_t, NULL, progress_thread, NULL);
- RecoveryUI::Init();
-}
-
-void WearRecoveryUI::SetBackground(Icon icon)
-{
- pthread_mutex_lock(&updateMutex);
- currentIcon = icon;
- update_screen_locked();
- pthread_mutex_unlock(&updateMutex);
-}
-
-void WearRecoveryUI::SetProgressType(ProgressType type)
-{
- pthread_mutex_lock(&updateMutex);
- if (progressBarType != type) {
- progressBarType = type;
- }
- progressScopeStart = 0;
- progressScopeSize = 0;
- progress = 0;
- update_screen_locked();
- pthread_mutex_unlock(&updateMutex);
-}
-
-void WearRecoveryUI::ShowProgress(float portion, float seconds)
-{
- pthread_mutex_lock(&updateMutex);
- progressBarType = DETERMINATE;
- progressScopeStart += progressScopeSize;
- progressScopeSize = portion;
- progressScopeTime = now();
- progressScopeDuration = seconds;
- progress = 0;
- update_screen_locked();
- pthread_mutex_unlock(&updateMutex);
-}
-
-void WearRecoveryUI::SetProgress(float fraction)
-{
- pthread_mutex_lock(&updateMutex);
- if (fraction < 0.0) fraction = 0.0;
- if (fraction > 1.0) fraction = 1.0;
- if (progressBarType == DETERMINATE && fraction > progress) {
- // Skip updates that aren't visibly different.
- int width = progress_bar_width;
- float scale = width * progressScopeSize;
- if ((int) (progress * scale) != (int) (fraction * scale)) {
- progress = fraction;
- update_screen_locked();
- }
- }
- pthread_mutex_unlock(&updateMutex);
}
void WearRecoveryUI::SetStage(int current, int max)
@@ -386,40 +226,40 @@ void WearRecoveryUI::Print(const char *fmt, ...)
// This can get called before ui_init(), so be careful.
pthread_mutex_lock(&updateMutex);
- if (text_rows > 0 && text_cols > 0) {
+ if (text_rows_ > 0 && text_cols_ > 0) {
char *ptr;
for (ptr = buf; *ptr != '\0'; ++ptr) {
- if (*ptr == '\n' || text_col >= text_cols) {
- text[text_row][text_col] = '\0';
- text_col = 0;
- text_row = (text_row + 1) % text_rows;
- if (text_row == text_top) text_top = (text_top + 1) % text_rows;
+ if (*ptr == '\n' || text_col_ >= text_cols_) {
+ text_[text_row_][text_col_] = '\0';
+ text_col_ = 0;
+ text_row_ = (text_row_ + 1) % text_rows_;
+ if (text_row_ == text_top_) text_top_ = (text_top_ + 1) % text_rows_;
}
- if (*ptr != '\n') text[text_row][text_col++] = *ptr;
+ if (*ptr != '\n') text_[text_row_][text_col_++] = *ptr;
}
- text[text_row][text_col] = '\0';
+ text_[text_row_][text_col_] = '\0';
update_screen_locked();
}
pthread_mutex_unlock(&updateMutex);
}
void WearRecoveryUI::StartMenu(const char* const * headers, const char* const * items,
- int initial_selection) {
+ int initial_selection) {
pthread_mutex_lock(&updateMutex);
- if (text_rows > 0 && text_cols > 0) {
+ if (text_rows_ > 0 && text_cols_ > 0) {
menu_headers_ = headers;
size_t i = 0;
- // "i < text_rows" is removed from the loop termination condition,
+ // "i < text_rows_" is removed from the loop termination condition,
// which is different from the one in ScreenRecoveryUI::StartMenu().
// Because WearRecoveryUI supports scrollable menu, it's fine to have
- // more entries than text_rows. The menu may be truncated otherwise.
+ // more entries than text_rows_. The menu may be truncated otherwise.
// Bug: 23752519
for (; items[i] != nullptr; i++) {
- strncpy(menu[i], items[i], text_cols - 1);
- menu[i][text_cols - 1] = '\0';
+ strncpy(menu_[i], items[i], text_cols_ - 1);
+ menu_[i][text_cols_ - 1] = '\0';
}
menu_items = i;
- show_menu = 1;
+ show_menu = true;
menu_sel = initial_selection;
menu_start = 0;
menu_end = visible_text_rows - 1 - menu_unusable_rows;
@@ -433,7 +273,7 @@ void WearRecoveryUI::StartMenu(const char* const * headers, const char* const *
int WearRecoveryUI::SelectMenu(int sel) {
int old_sel;
pthread_mutex_lock(&updateMutex);
- if (show_menu > 0) {
+ if (show_menu) {
old_sel = menu_sel;
menu_sel = sel;
if (menu_sel < 0) menu_sel = 0;
@@ -452,53 +292,6 @@ int WearRecoveryUI::SelectMenu(int sel) {
return sel;
}
-void WearRecoveryUI::EndMenu() {
- int i;
- pthread_mutex_lock(&updateMutex);
- if (show_menu > 0 && text_rows > 0 && text_cols > 0) {
- show_menu = 0;
- update_screen_locked();
- }
- pthread_mutex_unlock(&updateMutex);
-}
-
-bool WearRecoveryUI::IsTextVisible()
-{
- pthread_mutex_lock(&updateMutex);
- int visible = show_text;
- pthread_mutex_unlock(&updateMutex);
- return visible;
-}
-
-bool WearRecoveryUI::WasTextEverVisible()
-{
- pthread_mutex_lock(&updateMutex);
- int ever_visible = show_text_ever;
- pthread_mutex_unlock(&updateMutex);
- return ever_visible;
-}
-
-void WearRecoveryUI::ShowText(bool visible)
-{
- pthread_mutex_lock(&updateMutex);
- // Don't show text during ota install or factory reset
- if (currentIcon == INSTALLING_UPDATE || currentIcon == ERASING) {
- pthread_mutex_unlock(&updateMutex);
- return;
- }
- show_text = visible;
- if (show_text) show_text_ever = 1;
- update_screen_locked();
- pthread_mutex_unlock(&updateMutex);
-}
-
-void WearRecoveryUI::Redraw()
-{
- pthread_mutex_lock(&updateMutex);
- update_screen_locked();
- pthread_mutex_unlock(&updateMutex);
-}
-
void WearRecoveryUI::ShowFile(FILE* fp) {
std::vector<long> offsets;
offsets.push_back(ftell(fp));
@@ -538,12 +331,12 @@ void WearRecoveryUI::ShowFile(FILE* fp) {
int ch = getc(fp);
if (ch == EOF) {
- text_row = text_top = text_rows - 2;
+ text_row_ = text_top_ = text_rows_ - 2;
show_prompt = true;
} else {
PutChar(ch);
- if (text_col == 0 && text_row >= text_rows - 2) {
- text_top = text_row;
+ if (text_col_ == 0 && text_row_ >= text_rows_ - 2) {
+ text_top_ = text_row_;
show_prompt = true;
}
}
@@ -552,10 +345,10 @@ void WearRecoveryUI::ShowFile(FILE* fp) {
void WearRecoveryUI::PutChar(char ch) {
pthread_mutex_lock(&updateMutex);
- if (ch != '\n') text[text_row][text_col++] = ch;
- if (ch == '\n' || text_col >= text_cols) {
- text_col = 0;
- ++text_row;
+ if (ch != '\n') text_[text_row_][text_col_++] = ch;
+ if (ch == '\n' || text_col_ >= text_cols_) {
+ text_col_ = 0;
+ ++text_row_;
}
pthread_mutex_unlock(&updateMutex);
}
@@ -572,11 +365,11 @@ void WearRecoveryUI::ShowFile(const char* filename) {
void WearRecoveryUI::ClearText() {
pthread_mutex_lock(&updateMutex);
- text_col = 0;
- text_row = 0;
- text_top = 1;
- for (size_t i = 0; i < text_rows; ++i) {
- memset(text[i], 0, text_cols + 1);
+ text_col_ = 0;
+ text_row_ = 0;
+ text_top_ = 1;
+ for (size_t i = 0; i < text_rows_; ++i) {
+ memset(text_[i], 0, text_cols_ + 1);
}
pthread_mutex_unlock(&updateMutex);
}
@@ -597,17 +390,17 @@ void WearRecoveryUI::PrintV(const char* fmt, bool copy_to_stdout, va_list ap) {
}
pthread_mutex_lock(&updateMutex);
- if (text_rows > 0 && text_cols > 0) {
+ if (text_rows_ > 0 && text_cols_ > 0) {
for (const char* ptr = str.c_str(); *ptr != '\0'; ++ptr) {
- if (*ptr == '\n' || text_col >= text_cols) {
- text[text_row][text_col] = '\0';
- text_col = 0;
- text_row = (text_row + 1) % text_rows;
- if (text_row == text_top) text_top = (text_top + 1) % text_rows;
+ if (*ptr == '\n' || text_col_ >= text_cols_) {
+ text_[text_row_][text_col_] = '\0';
+ text_col_ = 0;
+ text_row_ = (text_row_ + 1) % text_rows_;
+ if (text_row_ == text_top_) text_top_ = (text_top_ + 1) % text_rows_;
}
- if (*ptr != '\n') text[text_row][text_col++] = *ptr;
+ if (*ptr != '\n') text_[text_row_][text_col_++] = *ptr;
}
- text[text_row][text_col] = '\0';
+ text_[text_row_][text_col_] = '\0';
update_screen_locked();
}
pthread_mutex_unlock(&updateMutex);
diff --git a/wear_ui.h b/wear_ui.h
index e2d6fe072..9351d4166 100644
--- a/wear_ui.h
+++ b/wear_ui.h
@@ -23,39 +23,22 @@ class WearRecoveryUI : public ScreenRecoveryUI {
public:
WearRecoveryUI();
- void Init();
- // overall recovery state ("background image")
- void SetBackground(Icon icon);
+ void Init() override;
- // progress indicator
- void SetProgressType(ProgressType type);
- void ShowProgress(float portion, float seconds);
- void SetProgress(float fraction);
-
- void SetStage(int current, int max);
-
- // text log
- void ShowText(bool visible);
- bool IsTextVisible();
- bool WasTextEverVisible();
+ void SetStage(int current, int max) override;
// printing messages
- void Print(const char* fmt, ...);
- void PrintOnScreenOnly(const char* fmt, ...) __printflike(2, 3);
- void ShowFile(const char* filename);
- void ShowFile(FILE* fp);
+ void Print(const char* fmt, ...) override;
+ void PrintOnScreenOnly(const char* fmt, ...) override __printflike(2, 3);
+ void ShowFile(const char* filename) override;
+ void ShowFile(FILE* fp) override;
// menu display
void StartMenu(const char* const * headers, const char* const * items,
- int initial_selection);
- int SelectMenu(int sel);
- void EndMenu();
-
- void Redraw();
+ int initial_selection) override;
+ int SelectMenu(int sel) override;
protected:
- int progress_bar_height, progress_bar_width;
-
// progress bar vertical position, it's centered horizontally
int progress_bar_y;
@@ -67,59 +50,34 @@ class WearRecoveryUI : public ScreenRecoveryUI {
// that may otherwise go out of the screen.
int menu_unusable_rows;
- // number of intro frames (default: 22) and loop frames (default: 60)
- int intro_frames;
- int loop_frames;
-
- // Number of frames per sec (default: 30) for both of intro and loop.
- int animation_fps;
+ int GetProgressBaseline() override;
- private:
- Icon currentIcon;
+ void InitTextParams() override;
- bool intro_done;
+ void update_progress_locked() override;
- int current_frame;
+ void PrintV(const char*, bool, va_list) override;
+ private:
GRSurface* backgroundIcon[5];
- GRSurface* *introFrames;
- GRSurface* *loopFrames;
-
- ProgressType progressBarType;
-
- float progressScopeStart, progressScopeSize, progress;
- double progressScopeTime, progressScopeDuration;
static const int kMaxCols = 96;
static const int kMaxRows = 96;
- // Log text overlay, displayed when a magic key is pressed
- char text[kMaxRows][kMaxCols];
- size_t text_cols, text_rows;
// Number of text rows seen on screen
int visible_text_rows;
- size_t text_col, text_row, text_top;
- bool show_text;
- bool show_text_ever; // has show_text ever been true?
- char menu[kMaxRows][kMaxCols];
- bool show_menu;
const char* const* menu_headers_;
- int menu_items, menu_sel;
int menu_start, menu_end;
pthread_t progress_t;
- private:
- void draw_background_locked(Icon icon);
+ void draw_background_locked() override;
+ void draw_screen_locked() override;
void draw_progress_locked();
- void draw_screen_locked();
- void update_screen_locked();
- static void* progress_thread(void* cookie);
- void progress_loop();
+
void PutChar(char);
void ClearText();
- void PrintV(const char*, bool, va_list);
};
#endif // RECOVERY_WEAR_UI_H