From f8408e927365f3650c74cb52b2d3085c41237ab9 Mon Sep 17 00:00:00 2001 From: Zakk Roberts Date: Tue, 20 Feb 2007 01:27:19 +0000 Subject: [PATCH] git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12407 a1c6a512-1295-4272-9138-f99709370657 --- .../bitmaps/mono/clock_logo.112x64x1.bmp | Bin 654 -> 0 bytes .../bitmaps/mono/clock_logo.128x128x1.bmp | Bin 974 -> 0 bytes .../bitmaps/mono/clock_logo.138x110x1.bmp | Bin 1282 -> 0 bytes .../bitmaps/mono/clock_logo.160x128x1.bmp | Bin 1482 -> 0 bytes .../bitmaps/mono/clock_logo.176x132x1.bmp | Bin 1934 -> 0 bytes .../bitmaps/mono/clock_logo.220x176x1.bmp | Bin 2918 -> 0 bytes .../bitmaps/mono/clock_logo.240x320x1.bmp | Bin 3454 -> 0 bytes .../bitmaps/mono/clock_logo.320x240x1.bmp | Bin 5742 -> 0 bytes apps/plugins/bitmaps/native/SOURCES | 59 + .../bitmaps/native/clock_digits.112x64x1.bmp | Bin 0 -> 1262 bytes .../native/clock_digits.128x128x16.bmp | Bin 0 -> 25256 bytes .../bitmaps/native/clock_digits.138x110x2.bmp | Bin 0 -> 12600 bytes .../native/clock_digits.160x128x16.bmp | Bin 0 -> 39956 bytes .../bitmaps/native/clock_digits.160x128x2.bmp | Bin 0 -> 15776 bytes .../native/clock_digits.220x176x16.bmp | Bin 0 -> 79436 bytes .../native/clock_digits.320x240x16.bmp | Bin 0 -> 159656 bytes .../bitmaps/native/clock_logo.112x64x1.bmp | Bin 0 -> 864 bytes .../bitmaps/native/clock_logo.128x128x16.bmp | Bin 0 -> 24632 bytes .../bitmaps/native/clock_logo.138x110x2.bmp | Bin 0 -> 10740 bytes .../bitmaps/native/clock_logo.160x128x16.bmp | Bin 0 -> 38456 bytes .../bitmaps/native/clock_logo.160x128x2.bmp | Bin 0 -> 13880 bytes .../bitmaps/native/clock_logo.176x132x16.bmp | Bin 0 -> 46520 bytes .../bitmaps/native/clock_logo.220x176x16.bmp | Bin 0 -> 72656 bytes .../bitmaps/native/clock_logo.320x240x16.bmp | Bin 0 -> 153656 bytes .../native/clock_messages.112x64x1.bmp | Bin 0 -> 1408 bytes .../native/clock_messages.128x128x16.bmp | Bin 0 -> 36920 bytes .../native/clock_messages.138x110x2.bmp | Bin 0 -> 15360 bytes .../native/clock_messages.160x128x16.bmp | Bin 0 -> 57656 bytes .../native/clock_messages.160x128x2.bmp | Bin 0 -> 20280 bytes .../native/clock_messages.176x132x16.bmp | Bin 0 -> 69752 bytes .../native/clock_messages.220x176x16.bmp | Bin 0 -> 106976 bytes .../native/clock_messages.320x240x16.bmp | Bin 0 -> 230456 bytes .../native/clock_segments.112x64x1.bmp | Bin 0 -> 1102 bytes .../native/clock_segments.128x128x16.bmp | Bin 0 -> 21896 bytes .../native/clock_segments.138x110x2.bmp | Bin 0 -> 11064 bytes .../native/clock_segments.160x128x16.bmp | Bin 0 -> 34636 bytes .../native/clock_segments.160x128x2.bmp | Bin 0 -> 13820 bytes .../native/clock_segments.220x176x16.bmp | Bin 0 -> 68852 bytes .../native/clock_segments.320x240x16.bmp | Bin 0 -> 138376 bytes .../native/clock_smalldigits.112x64x1.bmp | Bin 0 -> 582 bytes .../native/clock_smalldigits.128x128x16.bmp | Bin 0 -> 5880 bytes .../native/clock_smalldigits.160x128x16.bmp | Bin 0 -> 5880 bytes .../native/clock_smalldigits.160x128x2.bmp | Bin 0 -> 3264 bytes .../native/clock_smalldigits.220x176x16.bmp | Bin 0 -> 5880 bytes .../native/clock_smalldigits.320x240x16.bmp | Bin 0 -> 13160 bytes .../native/clock_smallsegments.112x64x1.bmp | Bin 0 -> 686 bytes .../native/clock_smallsegments.128x128x16.bmp | Bin 0 -> 5880 bytes .../native/clock_smallsegments.160x128x16.bmp | Bin 0 -> 5880 bytes .../native/clock_smallsegments.160x128x2.bmp | Bin 0 -> 3264 bytes .../native/clock_smallsegments.220x176x16.bmp | Bin 0 -> 5880 bytes .../native/clock_smallsegments.320x240x16.bmp | Bin 0 -> 13160 bytes apps/plugins/clock.c | 3585 ++++++----------- 52 files changed, 1269 insertions(+), 2375 deletions(-) delete mode 100644 apps/plugins/bitmaps/mono/clock_logo.112x64x1.bmp delete mode 100644 apps/plugins/bitmaps/mono/clock_logo.128x128x1.bmp delete mode 100644 apps/plugins/bitmaps/mono/clock_logo.138x110x1.bmp delete mode 100644 apps/plugins/bitmaps/mono/clock_logo.160x128x1.bmp delete mode 100644 apps/plugins/bitmaps/mono/clock_logo.176x132x1.bmp delete mode 100644 apps/plugins/bitmaps/mono/clock_logo.220x176x1.bmp delete mode 100644 apps/plugins/bitmaps/mono/clock_logo.240x320x1.bmp delete mode 100644 apps/plugins/bitmaps/mono/clock_logo.320x240x1.bmp create mode 100644 apps/plugins/bitmaps/native/clock_digits.112x64x1.bmp create mode 100644 apps/plugins/bitmaps/native/clock_digits.128x128x16.bmp create mode 100644 apps/plugins/bitmaps/native/clock_digits.138x110x2.bmp create mode 100644 apps/plugins/bitmaps/native/clock_digits.160x128x16.bmp create mode 100644 apps/plugins/bitmaps/native/clock_digits.160x128x2.bmp create mode 100644 apps/plugins/bitmaps/native/clock_digits.220x176x16.bmp create mode 100644 apps/plugins/bitmaps/native/clock_digits.320x240x16.bmp create mode 100644 apps/plugins/bitmaps/native/clock_logo.112x64x1.bmp create mode 100644 apps/plugins/bitmaps/native/clock_logo.128x128x16.bmp create mode 100644 apps/plugins/bitmaps/native/clock_logo.138x110x2.bmp create mode 100644 apps/plugins/bitmaps/native/clock_logo.160x128x16.bmp create mode 100644 apps/plugins/bitmaps/native/clock_logo.160x128x2.bmp create mode 100644 apps/plugins/bitmaps/native/clock_logo.176x132x16.bmp create mode 100644 apps/plugins/bitmaps/native/clock_logo.220x176x16.bmp create mode 100644 apps/plugins/bitmaps/native/clock_logo.320x240x16.bmp create mode 100644 apps/plugins/bitmaps/native/clock_messages.112x64x1.bmp create mode 100644 apps/plugins/bitmaps/native/clock_messages.128x128x16.bmp create mode 100644 apps/plugins/bitmaps/native/clock_messages.138x110x2.bmp create mode 100644 apps/plugins/bitmaps/native/clock_messages.160x128x16.bmp create mode 100644 apps/plugins/bitmaps/native/clock_messages.160x128x2.bmp create mode 100644 apps/plugins/bitmaps/native/clock_messages.176x132x16.bmp create mode 100644 apps/plugins/bitmaps/native/clock_messages.220x176x16.bmp create mode 100644 apps/plugins/bitmaps/native/clock_messages.320x240x16.bmp create mode 100644 apps/plugins/bitmaps/native/clock_segments.112x64x1.bmp create mode 100644 apps/plugins/bitmaps/native/clock_segments.128x128x16.bmp create mode 100644 apps/plugins/bitmaps/native/clock_segments.138x110x2.bmp create mode 100644 apps/plugins/bitmaps/native/clock_segments.160x128x16.bmp create mode 100644 apps/plugins/bitmaps/native/clock_segments.160x128x2.bmp create mode 100644 apps/plugins/bitmaps/native/clock_segments.220x176x16.bmp create mode 100644 apps/plugins/bitmaps/native/clock_segments.320x240x16.bmp create mode 100644 apps/plugins/bitmaps/native/clock_smalldigits.112x64x1.bmp create mode 100644 apps/plugins/bitmaps/native/clock_smalldigits.128x128x16.bmp create mode 100644 apps/plugins/bitmaps/native/clock_smalldigits.160x128x16.bmp create mode 100644 apps/plugins/bitmaps/native/clock_smalldigits.160x128x2.bmp create mode 100644 apps/plugins/bitmaps/native/clock_smalldigits.220x176x16.bmp create mode 100644 apps/plugins/bitmaps/native/clock_smalldigits.320x240x16.bmp create mode 100644 apps/plugins/bitmaps/native/clock_smallsegments.112x64x1.bmp create mode 100644 apps/plugins/bitmaps/native/clock_smallsegments.128x128x16.bmp create mode 100644 apps/plugins/bitmaps/native/clock_smallsegments.160x128x16.bmp create mode 100644 apps/plugins/bitmaps/native/clock_smallsegments.160x128x2.bmp create mode 100644 apps/plugins/bitmaps/native/clock_smallsegments.220x176x16.bmp create mode 100644 apps/plugins/bitmaps/native/clock_smallsegments.320x240x16.bmp diff --git a/apps/plugins/bitmaps/mono/clock_logo.112x64x1.bmp b/apps/plugins/bitmaps/mono/clock_logo.112x64x1.bmp deleted file mode 100644 index c56f831865edf9087dc09a81aa0e8ffa8788a9a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 654 zcmZ9KF;2uV5JksWVmjPXpml}B4WL*h5r$vw!eWJTPNxhc7yb`I%5 znGwimc4z*m`aRjs`aZsRB=INSE!-}wp}S)04q5tHFB-0SpJshoUoo)(-rG2n?u`Z<&fF8s9rby^VC_0`Xu RmmL21SatqFY4v}Te*w#3M^gX* diff --git a/apps/plugins/bitmaps/mono/clock_logo.128x128x1.bmp b/apps/plugins/bitmaps/mono/clock_logo.128x128x1.bmp deleted file mode 100644 index 6dc02aa564d54d8763df2a1df29f7da227e4083e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 974 zcmaLVF>c*33Mk<9XhA%2=`J?v?8JfXF6K*_T~?0#nNmhd+BgVK z9COM+OI&hPIQKhRPKy-=BZRARTHhT|etB3k7GZH2cDAVD1@ZgoP4B(=lN}M?_V3+y zXSZPrGhUlTutal-n>5!Qhx7lOX1vb)gHf5#G`AjlVTez zE}_H+hc{8L59SE3Gai094q9)PVezlNz_-{38!x{4;wd}%L?ai>~{%5+8mp! zZ$zO|Femd)6!B#=SNPq#S%#G;p*L4i74ot9cqP#l*PJ#Tc9jVO?4c$({tgmkYFX$x9Q*Z73V@J*ae zmc5&mv%6n@W6wW-`h4|L7Q5m3p7ovek>&W9{dysCchweOV#`cbMU&UrYw1+0)1%G_ zE>4Tn2|9DenUHutz zam>ETp~F9<5R*vi^O*bMGK^yy8)|_0$~mfO6m)SUSlH}H1LiiCdl>1Zn}r3_Wg=;; zGu??rW7D-U@-!V;+#37fjcH?#@z%rMowJ9uu($oHEBGE8lXG^TuFY2lbOfrV`!-!L zpND>B<4L!%ObJ(CpZgz+jy7$q^z28>|Fip*?Y^Zyv0?SCzWCp(&SJLss;~Yy-S9Ju z<-4%1`iG~igW1Tuw)(BQ?$0#B${VY_)vtE5dxQm;^=)PHmo~y)o!H#jY=$^!@p7O? z_!?uRVh@Wa#!L=m&j>H=uwKqKr$UioleGTA(!!XLGd2-u7V@!qP9uldf5u-N)!12) zPG@6GtfXPlRc2Qsvo#->XJaHId`}&7ly)`+Vj5P~Hyux`vCKYd2`;uWI(W(KlJ1OZ za0Yks39DArZNH|g+#c%53$w;%A()-D3R&ka88>-nRETp~{#jKurG4z>ViP7nz`l>~u zHm_ZRYL(QYzNpBobz+K^_bq5yMZB>hlWLY&gXYCpaZDX+N@%l67X)QuDoTto*EYsf zlo;5$GjA-xqOmF;h@Fi^SZeb!Rky&xB2N-6$L5!bQrJJ^L<_&pXS}$~)Nl zecE&qndmgN^UfURT7)idXgEG%p;|H;VNzF}r9PYwg@ETn_Elf|8_ZoTNj!NeF|u9D{q z(+9UOS*6UQR=6SQVAY@O8C~LB)+sY!ph|q6Rx?c6h2_v;0oL82%XV6XBFLi~p4$nU zs@KehIfw_VcK$QTu(iUn%26Gx5PZcr|J)}lRLX@xtVD7( z$(3%f^oEVv-sx7#aT^<$T7uW>!Pp`X`rb<5URm%JtAmmC9m9x3f%ZsBgN}N~dq%yZ kmRsE@`W53JAi3S@1}m_7#tznD?PNVDO_FvSx7MTn1@4rW+5i9m diff --git a/apps/plugins/bitmaps/mono/clock_logo.176x132x1.bmp b/apps/plugins/bitmaps/mono/clock_logo.176x132x1.bmp deleted file mode 100644 index 9d706be246a56043405675b071660f7fea94059c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1934 zcma)-O>Ue(5QPg*BzEBlz0EQQu-sDiiE@}Mt$>t$&XNN}5tc8~a|4z{LR7w2zzkz! zDQ$t_<8}29=Lzt`o;BytKv`XE8oAJmg|mpU25)bK3R6}TRqacq`UL2 zSRJo}fhJy_+|TgNPCmnWYura(I=aId4&KCfAH-XpZPqvwT;B;=iNmIq$9Dq2^UQQd zc#B@&6=37T!qc8l=vSWAFB6z?^Tb+<-78Kz+D9g9%)iTHa3(MrGh`7na+Vyt@)Epq zYqUQ2z`pe-|Lf8d7@k>dD&jTUG|{Q{zGj@@jakR8th~T^=~KVw4WTxkcKR!CI`O19 zq@nTg#5lxhx_ry4ap4Bnj6_} z;+S5Qar4C^8d{pw_2|X42;xxdz<8S5lFgl)gX;I=4z?W=v4Ne}yp2T4V~MZ6uDmb38QCY>Ogy9CGOM_)tSA{?Z(<0_A)oj%Um$is*~$3 zKQCuSJzLcBiB60R%SfXs9vEq^Y%%tDse6|>nSGKj;KH`|ZqsF?M;7)tDI3_c zbiU~P1!Dos<{Kl8NTsWcn%MFJQ z;_BGmXZBaR!l>z5XQuOFIFgS2b!0@(Ja!f;)3S}da$`p;W}H7VBGk@OVHd_oYotH6 zw!~U^*x087({#aFq>YvRr)A^Zf-R23z^1P5X|d!6%r1@z7RHRKzvMg_<~XE-*>#*R zJEQQVQMtqBww^s&Hl6tR8daN|dnd-}@4T^47oiOmEsT{>vquW{o7*j`WM^il z=nl-w-}D|UhtE{pR^@2AREpw~Z3piM*dQlcNcyQ3z2da5{vG!Au`Z(mmm;Z;1=J1-8O1R5Bi+yR6nj_uUOxu7uy40!EZ&)gE zs?_hYD7Kz$R^9XtvyVYO>*mcL4oTG=#sQJ@V@;(!cipMCysX}GeL+eW>u|SynEeC2 CM?gdX diff --git a/apps/plugins/bitmaps/mono/clock_logo.240x320x1.bmp b/apps/plugins/bitmaps/mono/clock_logo.240x320x1.bmp deleted file mode 100644 index e98530a201fcc5700969fd0e8ae90677eb3a4431..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3454 zcmai%O^)0)5JsuUumCTt8${bIa{|loJ{QR$OacacjhrDT2$PG1If1p*LJ;%5BB@rZ zr)M~pn&RVERV@BU{_@+`56;Rb?!R#T;QF1b<4@%?{Lgpg`iW;^gC@NuU%VKB(e&AawF*XxIgPz#(jqOxA?BS%h*5he9{N>UH*oVstBx`l zS6+7f&HmzE<2`Gi{HLBJTI{>?_`(Z(K97$h(dEVTQ`Ju=9>x8MN2d0HujsWEDR5g~ zHU6S6+?wE8zb!v-9SL6g7rD;2%5^^E$lK?v7oT>I9anjx?e{A;AV_0KIZj!$8a{g#>$gsGMZ1JoYHTkeo_@u*eu>`@x zg(o-Yj9;Aw0FM{Wi_;Z8>m;TN_RIOmqvxW`%#)+Ba^*!u9K+&eR^jU3xOSbr;5<3d z3l6USgkeQoLOljKfU7@02bWNfv2c=c;lU!axGf;#{-#H$bjh!A`q$HdwmC~Uz_F_j z0H6O6r=4QI2yHoq%IVm+?OL8Ebxydc11fJTd+`7QMk(cOZ3DjNYnx3av+}Zl>!~1h zDV5jVMy}>Y8lN=~xl(C<3goW9;dM7roepG`x40ZiAIbuF&>y@^;8TA30JsaF>C0|m z(OlwdJXKI;=4Rr?O9CJHWbrRGL07JTH9mb{sXXJX2`?Us8&$0|J&U-kndjUbJkt|{ zjqn*SyXn!t5~ldIn{3lu{2x5RXExO{p5EZvuK`XRi(Eu&nR&*<%13cu47Yz6btO`JVBgzpl?$wDqV=)1>E`K6vx3 zpXuZluiUkozd5Brl~I$JT3c#s;@|H4BylNqYUI@OK1WM!O)ToXF@u3*RTU^H9T{Pa z{vKLm*8>x1O9A~IA6j%$F4Q{OnsuRzrbp1vR7t6JN>Ag?hdNN*7AI?MCvJG6b&ZEQ zAQ#aCCn?r%drpXvO>i>9p`d~(qgpau?yAFFIaC4CRJp>ahO6D;Ht0#av*L1WQ zEpmNCQ|>#EHbiqy;=XO1mqR(*IKCOZaF}}_HnxulU{!~tZmRK`Dt9(_6fZ@D4Q{9j zF-G1<-Z^#dyv-c4*0DP^8|j>& zZE=UWk~%Mn^!4tZIShBXa|BQc*1H?-hI~7?A2CUkowj5g{ z6OD1haYIcDdA^o1Dn4&G&WBy@Hxin2C+uSbsoKJ>EVkZZ`go7yj@rsYz(!u-csahu zT^>0W{!tzr=j`mq1wVE<^l}NUIClI}9`0BBbXm0l$y;%j0EfR@u3O3ru7AQs*tNT@ zw=ZLY>;B<*A6IH}1 z57rzzjeP#E9I_tdou;$xYa3R2mG@h{yWB7@Hx_G}Zp6!=^(c6*VtM_V8{oJ-gX`{G zx8xKFao0!gwB^`AGgt2;(nAT@(h(h!r_FioWuFd56}Zgg9qtw!t5vzew2YHcsyu$_ zZ8_b68_vnvNxLss%S*abS6q)Z$cH;FIZ|uMIkMtDiSs2~3Z2T(3BYt1j~4 zhmVCIjNZqJtueqM@(_rwdCF z6qn&@H0f|PIGR{${o=|4hYA%qTR^Cva9NlPvt(b5JwEx@E4`FzLJ`NX7R(be&YzQi zwWzmoqlV38)fC4bTUQ*`FqNW;0^PVPoad^)PO+PgfoD{Cx8z$~RO9SsSKG6^32r_p z!vtyT#o6I1Z~FYmWw=3{GA8_({$!H-c!j*tqw1_R`D@|oQV9-6!Zl2#R-6II8%$}T zJWfwravglZ5%mp+x;|!JREx}en-^444zz5fqaX76;$@075w$afc? z&5vMkvWHUT`F83*a-Z>dSLrzQ}b|(QB^Ej=bjTE|tWx>xV9F6>*(w zuQ?q{)#Ea+w5P?Z$s-YB>0Wa_$Q1a z&f9u?lk>U$hCByQ++|m9{Rz&-GVa`0Gp%cYUI_aWe1)mm4Po#ohMh&75w= lw>T7w^IviGU6<1I>gw(_R@OkYM$2&HQg_C<%bh#A{{i7CyDI= 320) && (LCD_HEIGHT >= 240) && (LCD_DEPTH >= 16) +clock_digits.320x240x16.bmp +clock_smalldigits.320x240x16.bmp +clock_segments.320x240x16.bmp +clock_smallsegments.320x240x16.bmp +clock_logo.320x240x16.bmp +clock_messages.320x240x16.bmp +#elif (LCD_WIDTH >= 220) && (LCD_HEIGHT >= 176) && (LCD_DEPTH >= 16) +clock_digits.220x176x16.bmp +clock_smalldigits.220x176x16.bmp +clock_segments.220x176x16.bmp +clock_smallsegments.220x176x16.bmp +clock_logo.220x176x16.bmp +clock_messages.220x176x16.bmp +#elif (LCD_WIDTH >= 176) && (LCD_HEIGHT >= 132) && (LCD_DEPTH >= 16) +clock_digits.160x128x16.bmp +clock_smalldigits.160x128x16.bmp +clock_segments.160x128x16.bmp +clock_smallsegments.160x128x16.bmp +clock_logo.176x132x16.bmp +clock_messages.176x132x16.bmp +#elif (LCD_WIDTH >= 160) && (LCD_HEIGHT >= 128) && (LCD_DEPTH >= 16) +clock_digits.160x128x16.bmp +clock_smalldigits.160x128x16.bmp +clock_segments.160x128x16.bmp +clock_smallsegments.160x128x16.bmp +clock_logo.160x128x16.bmp +clock_messages.160x128x16.bmp +#elif (LCD_WIDTH >= 128) && (LCD_HEIGHT >= 128) && (LCD_DEPTH >= 16) +clock_digits.128x128x16.bmp +clock_smalldigits.128x128x16.bmp +clock_segments.128x128x16.bmp +clock_smallsegments.128x128x16.bmp +clock_logo.128x128x16.bmp +clock_messages.128x128x16.bmp +#elif (LCD_WIDTH >= 160) && (LCD_HEIGHT >= 128) && (LCD_DEPTH >= 2) +clock_digits.160x128x2.bmp +clock_smalldigits.160x128x2.bmp +clock_segments.160x128x2.bmp +clock_smallsegments.160x128x2.bmp +clock_logo.160x128x2.bmp +clock_messages.160x128x2.bmp +#elif (LCD_WIDTH >= 138) && (LCD_HEIGHT >= 110) && (LCD_DEPTH >= 2) +clock_digits.138x110x2.bmp +clock_smalldigits.160x128x2.bmp +clock_segments.138x110x2.bmp +clock_smallsegments.160x128x2.bmp +clock_logo.138x110x2.bmp +clock_messages.138x110x2.bmp +#elif (LCD_WIDTH >= 112) && (LCD_HEIGHT >= 64) && (LCD_DEPTH >= 1) +clock_digits.112x64x1.bmp +clock_smalldigits.112x64x1.bmp +clock_segments.112x64x1.bmp +clock_smallsegments.112x64x1.bmp +clock_logo.112x64x1.bmp +clock_messages.112x64x1.bmp +#endif + /* Flipit */ #ifdef HAVE_LCD_COLOR #if LCD_WIDTH >= 280 && LCD_HEIGHT >= 234 diff --git a/apps/plugins/bitmaps/native/clock_digits.112x64x1.bmp b/apps/plugins/bitmaps/native/clock_digits.112x64x1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c8738029cb40b3ed3c63e3e2bb27c9d94bad7aca GIT binary patch literal 1262 zcmbu8J5Iwu5QfJxl950GQ5gv(loS-Eb73VCJ$Fb&8M(tnWO4uwLrLk1BT)MU5oHRL z@cnCVVukRY=*zC>J-hbx&3w?a2ePQl-5wenlLeKtqQTE4Jf zvd+yip8q0a;=~jtZN3Tl^!#55E3;m17RSuFZ@iSK|MqncUh-%?-}J8Os@=u!7lV&by%ehc;-(hOUH54}be zF-TN5a}B3vh5UOPQerYYADQY>Kol)gbS1Vse6H|Ss%|><6JZNLGN?E|W=Z5k><7qY`09-0yUWGj zIi8z>%Gcui&v_Op=-he`LHN}6vmmBu<6>51-JkTkildL{O}N-Cp9H(+Qyz)$C1o#H zcOI;|7k3{u4>`yo208Jah=hHL&fh=Ubw0)ZmQ!NXm)<>B+vtP6-mQK?E!BhWJNVh& K`zo&c?Y#q#8<-pb literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_digits.128x128x16.bmp b/apps/plugins/bitmaps/native/clock_digits.128x128x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..87694982c9039c956697fd11b6e542c101d2f8b2 GIT binary patch literal 25256 zcmeI5hj$l8lE=XT2aL(VHa0n9u)&yYl0X500*VA7WQiaVBqR}pkOc-Il8}Uuhynp3 zCj%xMgMI6;=e2$7uzS1feed$!e{mnF>~e3<{N^`e_r3Ldt9iq`o}T)4S65eeRaf^< zOr3QmtwrPYCeMNV>%_m4EnBo`*`ixx{%XE=Xf6L5GkE;pSNH$-i`$QI102%7_nwW} z|NYr@y+6Nvgff4B_bfRiE>v%mPr2!Hxg~wEdK;grwibj<8lylGYnCj~oTr|8O0h4$ z(DnH?t%dT&(Q>fg+&L$OLnAjd%86q4y}Kr4;uy-5PuGr=fug19^Wvc&H{#W>$>S%D z9i@d+g<>a-9#L7Gd%boKZ6yE7!JUGwuPhlea=0*4up&KiW{9K}OY10HGG86kANDTo z-!9lcJ-FDlb0}{uHR?3zqgG2eTFA?<`zBdc-irk~4MEgjZhdDx3?D zXWzbkp)p%Q=5KGEdj0j+O>BMD_EqWg6(xz>7;4KI%N_lr&(5kB;(9)mX%W`fpY$OSuvYgQ=HVrjKo|jX$X`?jFHqEK6Rqzn;fc9 zAd|UQ?S&X4!D33hv4M;c@X*QQWvW*WrFN}1kTC)~d&U%4g5ZteLrCasELaa?1U4o- zB!BUbGxLGcjoL23dKe?HmaJ5~L5&euQ&yi}u2myKz23$MY*gq}krj4u_@I8=BCDXr z2<*;{`AIR6(cvLU(KBmGHvHlKdBJ)ZqqxXWfZRga)Mqo+zr>nl)hw$(5@^;1Qnuk7EtHYRj(pB~-Ywt24I^KJU} z=pGk7^+@T4|M=vp2lhl+@vwmniwmxH?b`M0*LUd9Aw7EZkem@i2AtnlqHwd`cUGkf z&DhbS-d(%u=J6`lBj4OUbN}q2%95gpu+S$Pt|w@Mz!h7yDG%WD&p)5DIOWUhC$w-) ze0%5Yj(66%af%>Vm{LI9!q(4fa=;YJ0rgo!7cuMHZ#&>y^XhFK~6~^yT~Y z2euVH`|PvbyLI{D!9`bMEAtN@UKlr~A)rvZv*?}G%V_D$DdQ~~kJm-X4Qy{%o>rK> z^zp|ZPfwifL2P}>$w&d4otC_-DF5lFpVr`jMdtd7Zv%GYiu4Ny%er;z*0ocIfBoQ` zE2WkB&8_;LuQbZGtoYlz=cl|ifpYe5S!ZeUe|zgR-Bh+|-E+@9M*x9= z;7YHVfBf(QC@RX!m?ygN{k?PHq0`A(IyXkioC!1sKdoiUmM?Yd{JXnn1Pj^i`u%Ub z@dohOArl{-sc{1Do!C2lLPNKr^Jn*Ng+Q^Suhmse51Gc-XPiV!B|iG&a|Z>;)54O& zg!9qG+N#px)me+@C&neriC(dI(axeZcTVh6lq8&3i@@Wx8S5b&>(ehvR)4)c!VGn6 z*OvPc?2#(7CcNzt_ChIL6Rnzk)TL#Fob-5U$;N^E5cR_)QY zf*fMAI08X?3gBapJw|D2kG{EeYGzm{Q#zf+nGtWk`DUL!eL8mR*t&IVh-rmD$U&a{`t&+pRxA^jHD7&n z{?MwWZ%>{)dGzSf@Gxl5p#F^)iGc$LCPqa(JhNYCJPS)c6V9EJ)un}b%QI5vCCrJ7 zo|QH)p*T0|{i79%a;?|;>iz1h*PGt_`U}LeM!;d?c3mvMya&$&vP7dun9bC*2X@@J zadfM|mEKHvV2|wCws7G>9H*=W@g_vm9$0Abu0OkcREe#GH`XGyUYoI&Ks;WXWn~J7 z(HCd{Lgpc>jHD##Ye|e*R$EJe3tn>$N zOCA{TsMloAHQkJL6^m=;FF{u9hOcY|W_oHt?n>^csHjn+Mv2!%G{9oO#BMKIbFOA5+xI4KH|zIjE>6c`ffG56 zpkGa_W?G3qe{?xJYe}zOy?~p{`@vGwpC4Y1i;WSFQ4aw4!~%b>wsQFJ;Z&{Dh<_~b zi11Lbx--=z?3VR8FTVI9aM@OC683aeDQ>n(%oQsNhDf(y5qbQKW+mnDga%ft$hRl|S* z19lhX5fr6x?)&EsuglJ&G*jWtdgWk=l>gzWYC)OLk`1}|OPxA(62?sI$YFzV)X6us z&cu>Nv2oZeERnkI-Mh1hAm17+Cj59si4%+Pap?hCBgF)gzH@S)98)o6b*rut`G6JS zTM&J{ajZfHquECk$l@p{_CQHN*RBoDtsJ?LK4QF&88e1V)pM=OOe~xeDeFFzjePCj zrEf39-~zX{j}?myJ9q2=0hbJ6#lBZtAu>cgXpmW@}wT5vjDYUHVm znb_~{o}E88S>QArfdHX8asF8bqL%BHE!0++STYHa7O&4k|5f*>2>H-8Eb-pW%Tyo< z3oD-9W_|tsNfQ_dYtaOHb*+~%MKh6@+@#6Tsa1=z zu-G!Bq$0HvNY9kNiA7t4m`E==zaTkbea`art5+l?#$%+~w{Oo^O4jL1vGke%p-G5} z_~c^4xi!5%xl)(6GE*ixx=dVMn_2?(S(~=9fO@Zw7>tCW|W{oQbHVZh5_vY6WhOc5AnYA ztJEvck1re%-BZ0)?1R%aue|aK#RghQQ9^WNxUAHy@q6=Fh3SWwHEKE~F;?u6rC0ar ztHri@nBXZB8tfgHg{5$W$xNl6v^q)9zvARTVDSvW(ee^Pe0-uSEpY*aADjx>>y#DP zA0A%LU9n6!rv!)@0^E!^Ub)!Id$AjbU~7dFm9xAupWeX_7p z!e{Rtui3Q)9w;OtB7*12C25Cu7XR`71tD;)*ZdSTZPkkakrKD-)M1roVfp&fPhmRe zpbLtv-nQ}OmtRIcNZ2B_UY+%_p+9NTB(UD|E#)||WEQW@k+THmXtgR0gnfAauqc?S zkP{dPOFmP*7+epDx$+G5(&0VgVKNK3R_amj4-YQsN-B_54OB11?kHL-ep(=jd0@Z2 zeMUV@SGGN{(C1`kh=XShXDP}Xd-+JYY=XN=%o|Jj^OF)}tHLRixvZfaMa236?{- zlIim)>MhvHch_UWus9wU1h{QD|G1+fF~R=R#oFV0w_`*7+y{0PZ^_R>dV*C|X;LB( z)(qUCiVPxCqofKa7AvOmv_yx?XO3bE3lKQ~!SP^Off}eh56n7V& zWKm+w*Ej05`JY~?TbA**gxz%hF|p{mFlmi7DdD@j=Mv)PxcXNRywJ6aERmdI5jayH z&MoCj;aczU-NkH`lCLZ&!PqE|P94S7kH#UA&m{y@!7HfjFCPS@J5`B9&L`S(yo)MtLpgd%Cv8I$r1weBg zQ6^ZCGoJ#n&5R+und28M!&7395KyeeIVuNz1Fwyj6t3-^K5eSFRl3+zKNgfIIUWe1 zmCX5Z(sspWq$HD1sVEik&sj4gvr?Gt;s>J2z{_uxNv@Q z_L9_-<(s8^C(lkE0_9j(hMu$w#^k24WV*`S#EMb)xnV|%9(O8?iDk-Sd4l7LhOEub zD$HBO_6>_chMp8-8Y3EFV#CA33sx@q^e+z~&}HWiRm8`~i(6=p6chXFt960I^5uEv%>0|6!fboEXdq;M`d{;{lFI5;G#(o`(;i&K)tW?A#36y^P#8#{|7KQey= ztVevqyHdgn9`OxtEIq3lB9wmQY#9_aHzt-j3Z+F3dZPwvP%zmTjs>w1%ASe6c6hg; z{y!&CCuSiG<(g%w3M64-*^xnMH z2z0q(@77miJ6Hj+H;ocH*GjT+?27&N&Y8N(QjaCl!JV5*)~;~HYNpSG*)qt(@KYQ29iY~=LGvLdkBTTz^g@_XOv5}@ir zNg>F2%D9G|BkxOuY|>By*mbKK;?)>9))8njDs5f(NU^c8&@kCDNZISbhZpSkA6!gL zS%BuN)1|$j34RzWo;iQQLNi4-&K}q;=Q;v8?dDR>!t#n^!^|AW`}OW$78hYN8dgBA zoO@%b`b^C(iP$(f4~q5R+z&Po=YFt(IQNNl<=j8k$+>^5lk@o5;Y}L*rnW?eOllHV zIcMCVFtSf)jbBt6CS7l|MOJw_e*I%9kkems+Fu55ldv3+czaPQ=diivUl=-edWhZEAnOhx;8dwrisPY-~=+6AXUA2RR_{4O|j6JQ<;_aULVCqOvf}6 z;ut%2?3|crT_3Su#w;g}VxaX=_OkTQ=^+)H*Xi*m;gI#w&6E3?3?&Gxixj>p&qSyB zjh@vaeWirA7cS`Bxif8{b&{`GB@2}J=)w_M&ZA>Z#X>(PYL)~sB$D92Ua2&i|3Z|d%)E{tGit|%9Q|7puKj!OR1Nx!0&}swNE)-tYR(+;0_17& zOepE&i?yf_CjsuBK2Tr1i)fn!?huiPHxO3y&BXP(eG=XYG>%MSXZq~^-QqLoK!C>L z*@@B|0+x+C{{qJ!7Px;b(PN3ItIYjl`}FEbrChF9s|&PUB%s&DzUG_t zq63K0Spq;rB%==%b;aVWHZs-VCQ%4CLx4V&Oh$c|P94pX&3f7Joi=TnM4^SACtfIv zajaqFjH%WEdlL&YU)?-SjIJ<0o2U^XsadmTv6q3fdTQ^_OAJ?@HPdH8>ZKJ3#Q!a= z7HptltF5*Y)B(f#fTDz9sLQ^bc96Fktlqg3LG@$1JH?d8HTi7PSoml^HSFBHXAgsXA zYB|{KDmo7=a5@fOMU=|vDS2aobJ&bfFmQ&y&T`~)2gM3p&imnM1RDENn(K4-<_)rO z5GaQ1ijqw1ROEc#$x1_JqhcosMYPR?>P$?hvZ@i9@da(@ILsVH~3c|OxW&(zLg zdx^S>HEa@=?R6QUPOR1S+DuJoR6$hKtQXBu`76C9C|LwWH#udc`=RnlQ6vDOR7{4L zQP)0VKT+a@l+28WF%qi;F*#iLgq$dI_04dwt4cSq*TZ5;=UX6HK)ME#G->=;(?$#nXD0!ndug`wQ_y;wv8K?PCQ@y>IV@}RbDS9_5z9!8GqG^s2%6)SQyIbI2;nwoiMR@$e>twV#3Oc^OQp*U%9PVPGX}unr~vo z8{y=@mb|4(pouL7dE$-eE`VbBBUj?yi+xmxCU9jrlK^8>A(@Ju6ERIz^sY+-A>O)v zwfK|b|0{MtzrGTJu!O1glHk|D;(;SlUIqJ`Yjv_zSAI;0rumtYc~n)f*N>Em90D~~ z;m+So?Rh6xoLgZ=DV+&^W+Eb`X;Sa@f@~RX;@mnRnnQ?EM2agVSmJ3uvF0Yl-xs^5 zc#ZT?(Dw4@Xe5fI?Y(lSOhRgAs7K{vCYVD+g&5J&-n%FF$#3+6_OG~kXf*{2_D>&P z^z*wm)K9PsWW|z5jEj-=i#fVYZb{ddzbh&v>`A@k@7cUw#N{!L_#-WHK1W2V*oWs1 z>FGGDI(bD2JGO5)w8`c4z1OVDl-+;l@*FsI2~fwH*2`B;P_qLIfpd{XLj=fEOE$5< z3Eobf+7SQbVp^jvZW6q*>cK3|j|rD1@U*bxoZep+6B8rbRgGn|U|)bamObBPDG3S` p?En1pEi;ESC+m*w-I2E{iwFZ3>!bYTi=Ag|0RA=qXGDt@{}1SAfr9`5 literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_digits.138x110x2.bmp b/apps/plugins/bitmaps/native/clock_digits.138x110x2.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d3a3ea15a4665aec4350d6cb30e14cd522b019a7 GIT binary patch literal 12600 zcmeHNd03Ry_dg&A%pfqs05WXj46=hD%OHp>qPQ@M;sPSLfx9A_c^VPRn~aNs})4-W^k*$fd85fB*}2~kl|5FH&2F)=Y1=($dmk$dDnBo}LaF85uBi=upVa z%!I70EXdBzhMb%nu-omBo0|*6h7E(fygbOy&xhf|heJU@0gMD|dNh=kmBE-XV_@vqu`q7jI2b>EJd~H0gTvu~2@@v3#EBE3 zqM`yOO_~IgCr^gT%1W3rWeQB4Iu)i(n+DUTPlu|iDyXimh8Z(vKut{z%$zwBYHMqu zuC5Md&6)+XXU~Q?bLPO@xpQIOym?SxUk?op4KRQHd|0qx0W4g&5Ed<31dA6hh9ygu zz|y5lVcD`}uzdM)Xl!hR6)RRiQ&SVHT)7ffty%?_TyhDlUcDMFz4TJJ?6S*X&6+i^ zcI{eNw{9J*U%wtUY}f#oUw%0>H#b8|OABn=xDhsO+5}fzaRqGNycxD^*#cX)ZiQ{z zw!!x8+u_P9uY?^tcED9vT?IRL?u6FXR@k*`7wq1>8}{tk1AF)Gg?;<>!PQq^4g2@+ zhik661`ZrJ0M}l7Ewr_@!FAVN2kq_caQ*ey!womw00$2qgd1_uU6aj~<2l@4p`&c;Eqe@WBV+*s){q&_fTw!w)|Uk38}S96x>>9)0vt zcVoH= ze;!_V;RSf{#TVhFmtKNXr%u7kFTV`0yz&aX`s%Cj+H0@D>#x5KZ@lpay!qyv@YY*z z!P{@Y4X00^hIih12i|@6U3l-k_u&2a--i!A_y9iq@I(0MqmSUsnKSV5#~;HdpL_zJ ze)=h#J$n{D`|LCL{PWM@i!Z(ar_%{ve)%PQ_0?C<-Q5jefBiLl^UXK#?YG~;ci(*n z-+%u-{P4pM@Z*m^!nt$j;HRH{g7fFk!_Pne48Q#H3;g=)ukhP%zrlqI7vT5be}|r) z9{A&rKj6{`%`L_|Jd-1AqVhH{JI|mb3-|+pAea30^i;;h~|_;xKdk z2sE>5D_)v)c&LuG;7n0NiGi_N#IFc4qk!623$qz<3+QJDum zRcm9%;K;e)W;O%)FAQvEY-|e3LjDpw&$F^Ah_lih*6r2Aai@O^W2gIfP9S`no-Nc< z-?g@KKDdcF4#HVfgOx^(8HCY_|%-Ul) z&N@!=d*^{41kMg!PxAYse{rFe|9(AitEZPKA>(nN!O@jPSUurM<&1R$8EUcvak6es z>4;axlZmBkakQ!d%ku3qZYXzDIq?bPT4H3o^-jS*E3~pYN#DxxP+T?H4wgo8X4#Op z0vAtud5aF8TW@5875S~uid@3nqwB34C;qL7C#DK>UpvTJj&f!o?zG`D&Gbs;<2`RR z68|Dh40N`=IQ9r!fJ99u!kq`(+m6z0*B&||^|T#Fyl?s!7kc?u5C2O&bS#}*TDknN zY)z8hI!2p4F*)^$9M4UU347})*Mn#9;M~M;Zx}FzKSKP@IOuPkyy4i{t{w9-^pHVb z8u6Y42rS+w2|hL}3eqofywuZYs)W*MRRmNJzSGxhhze$`Ccw9iSuWarecLtoiFg>v zELVp^wgzTws&B}RmZgEP(hc7f;@M=GF~CoGNvXZl3{x%B{S0T__)iala?4zQKORt3 zZS5gYX}LTUR;w_&T;}K5Xt^yF(6eYL3xeA$7v~1*v>jimhhlu+<4KUIVUGvDgQT~m zVK80QFa}^e*V~`dO^|s&YT1`+w&g>Hms@S}mo(sPp)64%mwsAxpu;S&7oLstl_J9` zeNNAc>=QpZB`>BgIjra4c}0v$jtiqJ*LePm@y@DZo7I|At$1PaUR9E70I*T^&xzi5 zZbW!OR(@VioWE;j5WXU({=fx{Z9Ar=0OYv%Py8ybSAd)>h=$rUy@cl&K-#xc%dTMqB|I_^QUxzRCWlIRQ~(W3p_m|YXV|Z8 zfCdlulg6K6P~-c8JtaL<3{?3$R%Zafb%}D;$BU^DJ(#`uDntBCfyuStsxTVSJ`!8X+>TgCV)pQ1=}|b- ze78t=38r~bvnfM7xTe@Byc6Or$Zcv9V%fo>0bsyu#0&AAT#je!Pyl>&#H~h}IE6-- z0IN8NV?KZrr_iWiX@29h^E)h1!cqNddkFTXTa+`;#%E3v)PPwDE=j~YMg+MY=++^Q z){Z!9#Im}yoLkLU6envU{6bxp57_V(x*a+Q3@##xgtMMCBSZ0#5?mc7>r_Gn&e-9a zL0q3+WhXc+<7|t~=pQl2%O<;eE{8d>U>})UU1kOy>V}BpPFy=dWvAG&8ZTOmN{W}7rG6bjYF~hD622`>?F(EuD-BWUNQGY-2UN^aNRq?O=K4duf-3SETNDGL z0xKG2e%6LF?pjUqc#x^wteQ;~zAceEeyI;d4!ckoB*iFda^Y;DjjvqsfC@j8<%`8& ziBveNHoN?v8dobxjkEEgih*hH%i@%tHTVU)PIjakoGpyuMyMS>-W^0G@i41?FBN&Kw9pw^qhuUVf01l+ckm$CwY@*he3%8 zczd)wN!i3xv&2uac1*fCP#+j(_R-+jvU}B>x|#*6I*{GPPd6&!aylCvwCwCvJCzo~ zDb10{P%pI*o@)q*NzERfpA(B4fE2M}2zR87TuXV*(G3--5ZAhBl#^T5)0pca;sEbg zl1Zo9B;lFd@iS=t6kOeL=7``Cs29EzmtY|-k^|9lv zTfg0Atcs}TOFYqno%Z8vg!4BznlaEeVMGFbkdeh_VY(Mj!pzj5tjHY zd+B;<2plhr^i5s9Zr!DA?@OpOp2Fb1?Gqy!Y>Swnbs>2q39eomGg1)^N|NjU^i7--`=11_Hg zx{({++R`jssT+=A0G%F^8*caM8!t3TuF;Jj@jm6?%n4W8o4-$dXpqdmu-s9O|Hq&o z9?)kS@S=rTFr4%z{GK%-$_tDM$;tRXlH}y9+&Gpgq zceWp(?_3+xr6JSnj|z2-e~L-Ts+szIyRxOdJo0Paw>eH4G<|V)$zg1gvg6d^CvhV! zrlTlW&CgoWq$E(?FO6?zn6Pwr+&RJv$ho=6!3|^zkF~vURue`x-Fse~1r%l6<)i4$ z$vCF0KIVPqKyV}(HRGqDGG~!D6#;tN!~SHNx!yQikQ=Yj8yACz3zcR0(S6y8^H2vR zKS*wN#W4kUHaSvo+1aawvL(E`1hX88%yNQ@a<=+;>Z4M!hv((QW1uHzh=lmAIg50f?Acr#M0 zr1|c6o>(yp-EmWYF30_w)k-YBP_k8~<#!r%UVOizmD6m5K>t<5x`OjN@!v%)RagUn zfrAAiwxwGnb^0bw?Gl1B_-W7JsE8PAls@N(Kp7jtFV1dQx2}0XIhLqo|E>3&lOY6lQzbLxJRyrRh|j7-Jdgh_6dFj2^<&rwNmx)+z(|@a&KYJV7x;Q&_ynH*$%8DImaP zNlB{tfdIyaiqp}SCd_^6mF+L%{Gv^BL>xmhQgaJV8UFA{wvM=L`>wOV`IjjJ{?|_; zJs_Tq`E9P%%R06i|JcT5eKk&kVMu{K3{mpjg|TA7OY2=Tn@*n|Zj zyz6BTyDdD{NcQ96-x&k6yLVp~Y&-6*5T|vanUJy|p2*VNJE~k_oJRaIjJIeftO{)M z0>B*Gldo;^SIh8YaY{Y9fX)Uiv-z7y?rQvKarlDX!5iIXaV4 zY2J(MyaM<1SWr)wb5&xZq<#S}W~N|tbj>@BbGxG;36}tp3m0+l=!Ti4d3LJ`SNulz zj)u{L`g~v3vwbE?6(r=ycdoOn2WNxbYD=k7)@6ZUsgfg)RQ_l69LFq1ACr-1Pw>e)_<@Vo-W&kDTUG=k$4L1hvfZ~T9S zJ3p^St?G^Qjk<;Hj`!8{JD1B}#Lg!wMNi(v6s(wVKa&)w*@fEqXB5=iNa+)zG@v0o zb7{nyr`jJe7R*&fX zmxda!Za{0A`>X0WFpBWrs`v9SI1#@Lf9zygIOrOjth-(he%?H#n@l)6G8&^0ry$c( pj!1s;)coPG!TyHm_!LRyYj`UjPG3=9SG{zjd^=CRa68un{14)_X+{75 literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_digits.160x128x16.bmp b/apps/plugins/bitmaps/native/clock_digits.160x128x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6b2b41c4963c55143a1b5b8533389d56a732fbf5 GIT binary patch literal 39956 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 AxBvhE literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_digits.320x240x16.bmp b/apps/plugins/bitmaps/native/clock_digits.320x240x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..0da719cd547932fe6a30dbfab4b7691c3695b065 GIT binary patch literal 159656 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 H)<5OHjtr}3 literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_logo.128x128x16.bmp b/apps/plugins/bitmaps/native/clock_logo.128x128x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..65e16e160aeb882edc3271a79cf203c627c63ccb GIT binary patch literal 24632 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 literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_logo.138x110x2.bmp b/apps/plugins/bitmaps/native/clock_logo.138x110x2.bmp new file mode 100644 index 0000000000000000000000000000000000000000..69a46fdbbb6cd4683157fac3476bc20e06fb3d33 GIT binary patch literal 10740 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 UT?!vT|Ni2?=jFHd|6m3F2RY79ZU6uP literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_logo.176x132x16.bmp b/apps/plugins/bitmaps/native/clock_logo.176x132x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..762136529560f1635ed0959b05eb15eab5f123d9 GIT binary patch literal 46520 zcmeI5ho4fPjtSKk>e6uXFa<=iGMgof{F&{Twdm-Z^LQ-&*Up$}Z>Ts+%{p zj4-b$ykEe74g7Z}|9xV_S9l*W;#vNF!>9E>^965z-`43gJ;@=Fe)O#{ap(W~9X7z!qxL z<3l=ThOhVh1wN;zP;P$>^(8z^(o5(X&$Gn8a_cd27mfdQt9RIrBG=^WW6+oHl}Y7w zyR+E-YHt~~-~o)SL11({jhr7243RGEN86XRMMOnO!SkhUVVEZX_{-KNj=yri4Wss9 zwwdboXkTKEbgV{9#b)3MHi4H9J~+)HxVS?qB!>w@7AkV&4TA~nHGG{Yp5*O208+uu z?fYbWNJngYz3{=1f%n|Hj@*@u56N2&VSqUXMx?boehdMlFNo@!Ba9@^3Q-a0;?G+e z^$?vKwdYZ~NKX-B~k!TH_~;7+TZRMY#iW} z>jxY1SWjxprg3SR5R@1nppA2xV89}Wl@C^AEJ9yz`vy`N7)X!9gn{1Q>Rr#_sb!!6 z?!~85wpU_Sw>v~m(;Xs%O0O5X8dappFIj;hAiUXA=QS=7QuLgZ4|)yn7QP){9)%KNAOdKBeekl%Ae)9&6h>P4tD-Ju*z=D{-&Oq7tP z@`ir3W!{lmZJn5rperu7|M(UYdB~-kb59Vp3avqpOCN0rU1i62URh z8{M^fC06h-dBn~lI@A~{wf(BpfSoeBI_3NEAZ}zO` zz*7=&=Ia}}lfF8t5sDCTsAoMXGF9Wshw$}v`JyY4N?R7eC1a-K15ou!OkgmBAtmNi zvc&uzyW8##b=L{7z73ie2xzZ&it6O(6a~taVzs(FQUbp?xVh@pc8+!82(V7tkCxdn z#mRUXjca$Wbyh=$H@fS{+G*|rl6QRv@aljE;566A|C4PQ-6}JaB0<$$;A5y(42REU z-~;B??*7gv=(3-XleL#MSJMeO8o{|sXL|DTg(;%tQbB9E2DeDR0HO= zz)%r=Sw3(j_R_!VJCF`+Ub}zO+CO&IXUP2%J<5LxMs4@zsuX zY04h=-fYj|1BTY_=nHI#?n#8?0;`sxw#xl&mAvPR5&+nC>y zD|a`QC?(Xm>El1~6I2S%FjnBb-c^&>a#r6!ONBw>=$wPdoH)49Hi^;z)&sTUFJK_u zWYuHLi{XQnmtIg2M`E}pi70+W#Vs71liG%FIO5^U4QqBamT=JQzShdUE#=g%F-6Gg zGUA)|1^5H)>xMS1rI1VC0`b#>*Hi)}UTLWSUizq#zCrAZGIurp1u_Q6eY}B)xK1Q_1d)rMx2%>KY~`&<`zdTVJ$& z!)i`;Z!Fv0R7(5956g*CPz-2CI~z-eHdVdST1hRJc$xbR0R&)r>})Jn!7)e9voRRd z6SjU07zl|6JF3&SMl{e{fB|wa2>!OpVQStLQ_nFyCf2_8G?(Kq9I0{>rr)~0P&Koo zUTnv~N1QIP<*dFTWenD=+FDo0v0Yj&-d?{3R-{6bzVS3#BK~McJL=a!21F+GrEiVD z5=<<-9U^rxQj^Wobd;)13Ub>N%ok3!t7@E!#GTQ$r`Hl1c+{z6S=a^{rbmP`z>hVyrLX7_2FPb&S*Fv|z6R zNt#@PWwjUD-_ugDYhxMpv%NRf2^av@54P%+h>yHm>x#g+r@4%To9eE_?;(S22Wz70 zy{(n|H^(ZL2oV7AFkr9sMO*3$`AG7DEs1@l`i5u>lar=X*+#?#g97YnOA-K9G8=R`3lcm^hBw@pQ<^ z?F`>i^$7T`%B5U0P*VUIb~Kh!*r&SK{hmbARUtPTcq>2!uevLj5-{VGcIcVBj5sPI zx6}LX<_eDZX^|FO41Mdsu#yJhXB-UZ5KYqcmb#);`UEFtRgl{@tN|oPdW1BE+EuHL za>RTP&(&eJ=QwYB*`m(!B}i=#K6aEXMhZd`Bd-Xt;U|Mr5*D=7D+g)|snt_;O@gBf z8b^~aHSFhMVk5z7bE(`bN2P}lZ1jso@O{EaBo3oqEQMS!+=_;xb~Kdi zY$^l5p-k0_ivi6O$rXQ642+)AV1U4awqhxcpOOy)4M0^BKpXspBRwBL$lNq6J`BH3cv4Imjirh*BU`R;U zLdAHY$%V(n1udk)!1rL_f-r`qE{0wlp|LdLR<;W)i%k`6e@%fvtuM~V2W|%#KB87Y zAy}%jVhP;qC|@$1!~rD;>CLO>b0A$?@k^V~He@JX*jg;_Eo(wYv-!yPT+?2*WT3Wa zaQ*5udM1o)ERvQxD_~CXK<(;-?Q!{l)KG#@u(4>Kh1XUR8(#U6-s*xa8`gjj(lQ5S zt&r6TCL>yIES%S}WZ)8mShpH0r{M#pY+fxb_pV#DWkWG8lV&XJA}4y|n<$5S zF%}x`s90vqw`i!f^6%SQ%#q7V#KFz$Xs4mz4^4&ho7XI8feEFHIXG!9Ueqk_FEy`` zgKyeO7q^!$?XFtYS6kRuThw1iGEJHMHg;J-nU>+W6{vnWVYwfk}=N4)$_r?yXdEQk*KI- zvFOKQP!*Ld+Elirqhfi_x>YErx2AAgL&=}FB$l9}A3_0|N9`E2yJ{uZ55fnQcw(uj zh52oC+XPpMmX*u9)-FfS7>L&PwN*+ZUOOl}CNaz{J6fn|cQh0uX+z=shN6WnC5zk2 zmTsz8zPWN```T5!Z(h5qqiR*>x`OWN!tR>FuIj=bByB8vy_<I+^ptu3L!&Z<@W+pGEB$LU|660HXh6%j~@PW1)z8i7|TttmW!3B1ac0laG974=jX zZEGlft*g#ci)bcecS$c$46P_1aT<%}*B8!jT#bsBw3ROx3;-|~P!t%@j6Hg5i*_|v zyagKr(`Xl-Tx`>7Dw>bZTT7R4Y_3?2dfy&s{QHiKD)LY<*VTou z$SLDSO{I5xj30xprui3O8fX9+jyv{f|Iyy;{{M+jeB!^%>rjyv|4%w2}BIPREZ9{<^WruX&)6?J^@N>BLm5oe!$c6VJdf@7To6)CVb zquvhG`@vBE19#sMX@QT&9((NAv14lsUh?&vTHYubdOqCW|G+&-+C1v0qrUKkFMP?o zzHDA6o_Hc(5+^Ny&wlo^;9v0UZ>@>Nl*$KTT93w|s0hqkueaMfkDM|(oofcoMWzo;NN|NQ4aPx`PI*b|J1DN!BFmwv6DlUJA# zG6)73HS+xPY=idX=%bIOUo->^qoFTj2r#($;<)3E``XvO)>&O7Cf@0>(RW4~@3XCO zf-=AU^{@BUm%qO^(PaW)NP#T4$>KS`b8p8qc-)vVW3IX8n#Qt~VN!+l?CIPmm=_s( z&~~Dvr=EK1$dMx_O`0@i%9Qcr$8&z3d7X34IVYcdGWzHBIrHLc@UNIR8~g+W<-aSe zjX7uuGF*4vbt~u3LBq-U5O9^qAcp9!Eslf*XmIA4XDYmlFTNNrP;9)Pb=Fx>4$>Zf z{PFPCRTMe>p4(@_e4mQe^%AtC7>IQeoeYM$;z(FPbPR{u(N6@!SHJpIhye^#gviii z^ytx7TyaJ3hEn4)(ywtDf^$1c!=@G|q(YgfsIQ^I;1qqD5DLgJ8TJYpmW0UwBusYg zwb$Nu+igu11-_&NZH>bTl6q|tZ8jT%B_YEpr<^ij!i1}?y6WnyuLj%HsZ+1N_UgNC zzwM4&Z|3;c%$u&bbQ*4mLQpuuVi&GV&Ico`eHX*XL3g1EWA|Ppv6zGyYeza z2~8Ycb_+!(t0M82Cr_#f^cuzWcE z^wW)oEFUBVdjn5DhvIak9%5bT;@{gFIXUgL(|~mI%{Ln|6q@{KB8;EJ!(y6%9JFbo z&HnyKWEeMY9C*I*jc>rQyY9TBcFnSPc6NPuVDQ8J90TSU2lLjELtSO6dT{NU;2ix52Fsv8+T^O?`!j5B7;xZ#EyK=|x$f8D&c=);3s z3_QigJMgyb?X3TwpZzF8Bp8BeFw>9k{SKaGv$;Ra_Y;<2F#cka9nr~c2NUBUH{Eno zCJcjMc>Z_4qTVKP5K%9??6ThV#0Re=P!&miMar;gAEQ|6usf9uUkbObIdWgB=Byz<(3EU zzi)SEz0d%uK_c)BHi2iL?(2iPhqkvraL>1G3!D%)$gRZlMRT7rgv5O!Spy7yB`lT- z`3t2&b{K~GX<_l~C(b-wl5Y5$Sx+YvmC3J}OvOSGeA-x891jfA*96UmI*gpTbWH@;#kM0dgr*Arirgk9@hO zO9}=q*vk_1?^iFFEf;v9Nk=ZmtnvBa!87BXeZ7lkhsq@U3wX%;;&cBiF+up>BLEzD z2Ajg`5@NvE1A|NEJn4!_T||qlz*2xI85YcaS`6pOm6i-pLL;GH z!&tXP`yv;s6lq%k3QvA3b#pQ!{m#E03 zR5w$QkHE%j{+$0KYKd#>$Wa+68uqbCsHYB;>Iic{=?EooCHO$)`O63IBL&+6PhtDP zLB@a#C@dK`p-=$;WQdCay1mko~UcS1-YUVH_O0|O0L(WxF&$6Nl z>dDxAkSxQL1zDTm;FQfI-y3hdk+k^0kAC>>ZkZ<$zw-t%WX7P=5H?|jH#&e4Zt6MX zj5990@Iq?-{XLDoD|t1W!Jq*uluRjNaX?h`%ZDE#IvGNy$6)49T>W^Y4bZ~j7<`}? zf-?bGxE+@aHVI-ZcOdVcYc$rHd8qHsTV_~3P(vaq3NKlMaa z-PnAHgp{FB*0zqhrL{)5Dv`k^CNm0i#guc)SZ_c_9N5#o-pb41Xw;}tj8dO_;!&}z z?@dAmEV#=HP;RwG-LAo5Z+8srlY}?iTOUVW4d@7zu_;k-!9M5&Lc~3;K!|ACwO|pBWC+ z3f70)j9_B(V ze~2fVOcy@?4DDor!GmX&4;_b#5p(j+r=Rml})* z!%QPET3_;lZI=3hVIwNt(N+`KR|^kGSfOOW?15q+I7qgVnRZ*MrS3hVlgP(7e2`(j z8Al%okpU?{u9a<$WRMW*D*WeGGt50gGaBF1*AU0%v~0yyb|zAST?vLIpMGA}&yq+rnG z;>FK+7?Nr!49s?C=c9TXDuoZPZi|eUCr+HGcpiT60j3HAG7F^mUTpZ_6_ddP5ipqO zV*={eKmV!8jBc_RuCQ5*F9QC^6p&R8g&(r>DqQqJ*2zMx5VS0nj5|HWm>oVmbpH>u zWvNkRY)C!@Loi{;Brs&)wR-W3a;29n;%h#I8Z+^sv#vA^8JHt_XIIW-0Fuv#umds! ztO|eX@kb%QS6StW{5kMJXC5pcSV>WM@WJwwlV4 zpPrjU12QuY1Y}-?FIfj1cBO=4hP~28>0mu8vVIX#P7te^SRS@5Y@(Do{|Fy+<16nvo2 zz4X#cSw3+2z%C2&+P80?_0H}diV9;XTj}MNxq>uGYc_zhI!_Me_4IG3ADDKt`G}d5 zVaS^kABcXD`hiVH3a_PVwa_LJO%$cuQ^n2lh8RkdaZLEL~q#nx$dQ^o=nQeRd=<3PH zSdXx&@Rq&!oU`_nl`UMsL-izSnvBfL7o1IWW_%GIZ(<UoiWoCG?<)euYGXJo@ z->z)3`9y8;hi875WB3Y3DtEj|%edk9?)k2^EbivbKZG!lQW=@@dg19O%#~(xJ5Mf? zSWgm;Oo4x6*ZMNI+QD<#0RkU9N`y*?RNGx590-53llkG*Lst4&7U6ZEzuDH$S&r$# z9r?*I%kgHbn8S<;-SCAM^LpS1_xcM5skUS%U{FsCyP?}M#RGi!)gur2g%jb|UsiTf zDu&RR?Yr)nm3Nm($_K4#bUrFF)riLRg?;mDJizzMJb{CKx8ppryybn_P|Cm zA8TVWbHc25v-mq}=FKku{q|G%U3z(gzT&TM25XU#wMC}udF4V^4~B-FJ~#X_YG4|i zS3~(KOEX#QPUbSq5m9{dDqJ|1l;JJ7doB}O{}GKDY-!?y^5H|)FAi>X)10LQJFyGq z&z6!VH%bTqbncDBc|^sQuPBEJ5WJwHwj?1$%Y$XLV2Lw#6{Y6`^5VI2 zgx5FOqCnPQKR?B1e`AGD2^ArJlnCj^O&NqBst5)+Gp@VF>_#Ij>nf*RB1tMT4JI5K z#PIL5Go>7D!UV^rmivdw-N z-(}p*#_S3}KRC|wPd+B&5r5$i%%X&p$tyuW_F^M%20rNi2id*M{)Yi~l@k&45s$Oa zJfp9nT&F8(O;TR`#NnDLTr$BlChB>A?ulPY<>n1%oc0qATYzq{g zxqc9RqPieuxHHB)G@-V*{+cVZ*sJCg1NfIqFy?+C126W2`N_hs2OJFU{z*avlZ3o@ z4rp*=l~c=cV`!tG>mx=#$yDU?KOG-J`=ey(3cEyhPHJs=`e~=;ND1LXa-Fl^1~M?h zrO+yv|C~<=vqew~Ezjs`db4L0g?n2@sl@D_TaOaP*<kOmm4meGn)qg$mjeq_QEGOz*lU20VEbfLW^vqA2a9BznUatsV; z>1*em`__&QLkYX(*zA8!sv;2TkxWHt_|T`%U$BWi_5MkH!U$G)lHF$l8<1{+G2xf45-g(f!KwqpMC zW@KSAqsFLEn4*$#??pdEX;d_2!r0yoWs*1uq?B`J&%e=+ry^lvpdTIz=-Sy_v8$y* z*=x8bDvH4ee~Y`nH#oATHbjZ~a^F*8Qz9H9A`d{3m0$()9-L6q@;r+X**uSf)UvTt z4pFrvHE(NQ{py!aJNcx!Py9k0R`Qp`Pvd1-#s@!&>cj;((REKI_QA&TAL-+!>#ls$ z#pZ1~4PgU0$%R!yTbgo0PNZ_6lDzx7cbVYel_Fvw>q=gj(!#sf9qiD8>IW+vf84Qz z9hfPB!aNfs#IP!|Pc7~1dtWx;cJ_eMs$QKJQblIM@2kR2c=cLOgPK)S@KAW7e!;m z2iL`v68d~r_>mm;u|NqPEjjCqGxm0F@Z(-QN=Uuu`>)BcxPVIu_@KhtcZ@HJ z+%*%IFmAr+az_7&%LxGAmasryrz(lN5Fz80eBiu6gi>+`;jt_6+rn( z2bmc0IGIzvP!IJfA=B4V?~&A8`hm^5r^S%wgxJN70@jOp5SUCMWRT4y0n~7C2xIW3 zr-TxZJ@iA{3zWbm?Z=EK4Ck4JrsOaK`KJ3$krG!4;9Xu2O20{dsAWHD-UMMY- zj4G)suivV4WwGgk-O8w z-~vXegeFwv^C9be;YTo+65cPvxDT=s1L=#|RB8#K#9*^8X8K8zC?!mxBA$pB@Dwe9 zPD2DbXHt~JhtX|$uX&0u>6$dbViVhG&^B|qhWvrBntx-@Ke%*Fq=cA5f6j=&g>PbO ze1Xv)(Fu^8qXd0{mVqHI2@_bCBz9qoIZr+QsxH{cKvjcSCN0^C6cZ&RN}FG*(Q<+i zAywt^#{&Qu6eqyIH^HEO%9qSv@zf6(AS9`(zoA@WxQxQc*YU;|hPO@xOQb}fKKP7U zm^5Q*g%|zOJ3nxDsJ~ImmCPwad?9F@yWkQIj>uSW>D;GoyYU;y#n=i-X>R7kv?a zS?@42`jc2L|K449mM)w3_BKXO*6IBE#H?T2utTWV#XGj=nVQE_PBIS_Y+jTw9xCQA zjBO}cdhZ>#oObFdV8a$_4j-EQAC|HT20XA`d(G9)Jn^f8tV7AOZ_ac<=EB?X)1id# zH8PBSb8Fk&-#t2U+-TL0s)$`H76wL96@dYldF+t~+p3BXfkvnSO#IJ{57uhlQj45zXZ*o<^7-+|BQ<*xz8e zbJolU@4I*5?57&bRvhSUltNw7F=UY7VC<-q&pFhS#tJrWN6aCNH4pNe`P;twvIWmR z@$BP2pE=_?i;a`Jzdh^O-#l8dV9xfo8n})53=`b>tBj*C7l!XOjH7jf1nHIGB#txG zzqeyU)yf5^=r1&z07T-F8P&$DCyg}|At@zv&!?KK zPo`y%7xQ5esVCzNF|5M%#8bO*YHVt@2@(9Ac?RhSx%7}uaW^~Ymf0Bk^)f|1`QQdI z%%KA=ndgz;oj}Qg0rAZ*lQ{6e7J(PcWE$U0v*O^Y-JZL_N`Fj1tl*JTVW1FSKSBU& z7iB_V8Z(^nd7djD0Oqq)bYdPO(z!vM0I~C9G6muH7%_T=k1Dd6(DpQMdhsUN?5}^A zDJje$hy9%pZ_+qWwIRRoD))S0ZQ;od&Ae$1qXCb!9z27`Q-zC7w!jHdjas-}xti2*-b;4Sv3&5IKcEg1P?1XhR8)NRzIBNrXm-E zX>C~f!s1EL2`2LnRFr?IjYCPxNsq9e9R?m2J|rpuZ6pU~RN-rb;GCm(*d7y4Oq(X` z=ZGOce6YY=JeDLXIPdndyqwr(O-G_zd!%Up@bV$jsSif2lM!2wnBMAN*zyi*&ba;dhBSvI1|M2m&a(rqX;lmL=xNJGXha-GA!iW6K zKm0r9jwA8mNPIXFACANamjmwke`0({@^dua`lkGQ2l;z;-qrKR<=pZi{5ZM&2^9Hx z0oFd!%~yYX(x?b)pU(|`UVsf1Y(;<)-oJ+;n*q$8Pnkse_(+!*sD=-+0%Ag_-Dt!f z26Y+#-$Rit1ZIxwW33;<2k$|rUc3K+4Lm$$Z#GlSamb&reK9Wz{}*q>;{zMO*k%*_ zdr9nJU;_`7;1L_Miy+JA+5bhQRzB#@;d=j`8k127%Qh7#A^&&^i-6vPF#mbM0jp^U zW#^UIBdYO%U0!UYVOtlJ@HgN3TT1>#4IMLT$uz#Vg>p|P|DGUQ%XEhoTX*<T`dN#rtA^J-PyNu6&Ns+Rl$bWu^lO$Vr zBD(rd_~^Tg-9qoE$lGt``OCjWJ~gY25+Y=Og55O2z8cv@BauNXNpCgqKY;)VGKz{= VulKjT1zV32_M7Fk-X1aH{{dso+p+)v literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_logo.220x176x16.bmp b/apps/plugins/bitmaps/native/clock_logo.220x176x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..1267a392e02b8b4b89a972e1c1841c4c1af6b5d3 GIT binary patch literal 72656 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 IA9mRP2Yjw%-2eap literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_logo.320x240x16.bmp b/apps/plugins/bitmaps/native/clock_logo.320x240x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..876543cebf109d8c5ed426a6523522456ed6238b GIT binary patch literal 153656 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 E6VYYMW&i*H literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_messages.128x128x16.bmp b/apps/plugins/bitmaps/native/clock_messages.128x128x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..958beaf5626d262860a868cc93331e36eab19f12 GIT binary patch literal 36920 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 literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_messages.160x128x16.bmp b/apps/plugins/bitmaps/native/clock_messages.160x128x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..2020aea5578f54a973c682c632ad7a68e3a0f740 GIT binary patch literal 57656 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 A@Bjb+ literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_messages.160x128x2.bmp b/apps/plugins/bitmaps/native/clock_messages.160x128x2.bmp new file mode 100644 index 0000000000000000000000000000000000000000..19b12510c2c0ca7f1b5495593564e0e6d6531c66 GIT binary patch literal 20280 zcmeHP2b45L@h^gcvLk|F)(E%*Vs=JFj0}j8u!|Yvo;mA`2?L7W0tQe)y+z3gs553U z>yA0+U31Pm=9~cM|NB*U&+gvs-gkGO_lf5?P_xMt6yDw-3a{cRHU-sXBf4RX8ZXh?j;SJ?RH@cDB z_{KMuo806ka?_jMRBm>&o5{^@esc-KP@*W3TioIna?4xZQf_stTgd?j93Z#8^{wT= z0}qtj+~ziN+uPn&Zg;!e$?b1{d%43M?jU!(;~nLogAS57j^*Hk50*m?IYjPsr#s1^ zhaM_-zVn^sE_b<$-1V+^mAl>TZgTg#-(Bu;k9){rhaDz|AAYzTal{dF9l058T50i&K{NeJ5M?69v`N&7gqaO7rdGwfp7_Kk%9Eb-Bzf|apDa&#%2Oms5=qlkp8C|M z%F~|qG8GDAXPj|{oO$M%a@JXA$=PS0E$5tbj+}e$xpLll=gI3{ z_c}TM{PX343oeigFT7A*|N7U<8{Y5+dE*=3C|Q zDsOw++vM$Uf4jWn9q*8LzVn@O(M1=@yWaIKdH1{DE$?~Hd*r?EeXqRleeaX^zyJO6 zfe(B@KKQ{8%7;GmAsGw?QWS-J_`@HTk9_1K^3jieR6h2xkIBbB{&D%lCq5yc{NyL) zQ=j^jeEQR$md||VGxFKbepWvBxzEYxKmU38!WX_EU;N@1fBIAT+0T9^KmYm980|ofBj3Us^Y(YcgeER zmQdzf?6)~$J#Kn_vAIrw)_%>+_uDL?{z_SmVz1nMzcKrbH`{M(@P2w(_ban}HHkqs z(5gYUu5^abqi$$B1C0gF^P$$|#9L;C1(^JdvSGCp;XTI#%E)#!r({-Tx>!rlA&f<2$8d2#3#kD1h7tG`77`uU4l075Mtp3B6&6RL=1G8xPDy# zbVvaDrC6R%`Q&E+16N;Qxqe%G+10RjE{Pm~_0N`9G& z2mP|C`K_v=BTJ}UW+yP#^{Wo%z|bKQVldbyT2c0z-Vk$?;q-#iSt4X#A8Y=MluW;V zC@a`;ddk)+{#1UJzZ{b>p)`&pAZtCZ8763{pr3_|EFJPkP7NKWf7P<*VP-3+6iev% zqj+ZJXU0Ws8u$`ZyHko5MZzRW!D|LusHIAc43%Znq)o!Gv>R?k53&UETOoWiwfuDf zL5cV=VV%|vrK78`srnMemOpJa@>>ElIc;h`O2ZGx2iBq1fImNsB7kMeR7%NIkq@*b z)t{W061L1QH<^(XRm}d0Z~5bnj0vw&L3`;_Kq#5?^*3!4RW$^GsrfbXYp@?=kg(sl z3Hj-IN3YQ0aQc_Sm`ny~7<8Aaf#-MArU#_vokaTBHrkMR7^F$F1s16vrSz0!6bEUW zn97!io`J<(1%8rX#gu{9?Rvp@DUdKKqNWGpMt*faK%gJ^Tfze;I9kQuFfG%l$a=#z z8pVU(2B za!1l+m`2SssfN_AUN(qz?UQ2M&)KgRht%1cKf?W|ik)9O;&rJ;kR=P&K8ktX(%)he zy@r@^ACUle3hJ*K{Z$a;gGxEAshs_9^BIk9}hjdO?uX4?9n~& zXa^1md2qkBZ`6Yg3foa&%A&v<;aLXI6s8TH)cm%_NkI&;VrUYp_F%7dO6GO?Sw9w> zKmkmxQQ+xW*_S{U8h(qa?7_4un;=`VbX&K8(hx$0o5I!Ba9)#R1G|BUi@cdW;7HS<>YLnf2%lXtNG^}F#?Ew5{mJZYJ4;o zJBDQUormOsib1}uv4Rq>EYTRUy!Pk_G55+&J4`AfhIeZI^XI~f*6XeP>Xpg6Nw zXtYWIe-+*k#$)AYCUu%W8c!C3ff*;h1RLE6M}ZpISxmJBri$Jl_kkSmS`vqSioXst zoUVg|fqE?DkE5>n!weLjgd06ch8^Sct4s>Iq6Kwr0NIpgelsX`*O*5W{(9CIssiIu zQJZG;Pvw`03W>(?lEVQ0n)IYMRuYKJ04pXsWL?!1Iz6GTk1ljEGpx32{ZpTlB#cYd z=a|;&UqUCvjMHN1P)9euG?pZA8Xv$*PN-2HrkDCV#5}w8NM`*ql4h-?m}kUn=(%ys zSiD`cX>0hVDw(cnre=k*y-#h0w5t*!Bn>6uhm)Z{so^gb-IaAK2AhCWaqHtY3~JKA zj6ec);X++qCZ`&sWC*)Y018xS8QM_X%=)O|iaL@z&Uv(#z&;AgTv z<^j*=Zyw}^>y{+!XL+*Gt$SoL$}^a;@l2#{bA1i8uA9nOl$vx(6s$R%s z9yluLV+S#+_%>yWIQ}dL02o;R0mio}Aa7TXo!?mvab_bM%K&C16=MC8hlmz95H$l~ zOVVn_swbLEna4XBC)3mN^F3oGteE*#@-_gkGhs)l*$~Q4t$$!(W7|L|#)W^l-rKrX zbtI}7EzGu25n{*ik+ICr)QImL}ZLV$8?M4}A?I4g=7Z)FkWVN8opxC6L(e zsu^Mp;1<4y386p_IGMJt+uIC}mN*kfGc-a<|MhurqI z36@#ya-Io#O-0luk-4=rwZ^3C7c_3MdPe`Yh@yX^ zM#>@|#07B*=OWY(GguipN<&*U>0_q6;89RICuP!)7qECoz=n?s+mdo$!SRtstT5q< z)CjF&SPEP( zZ}81r8PvoT?$0O#+PBsd!>9H(lT4XR$uBc=fw~+<^-2Lw$P9{=pUy8k>7}pB91 zmH7V)^JBr58(n ztg?@hpVB0M2F~E4MR+i#3`ZocDN#H|ek4W+g(ag#5*XURGpV$I6HO>C4*;aKr&a}B zZQ%T3Jf?t&u7(*gzgk1#>Gh=&sQIEgwZaErj~a4IFc;%0pA7czd z<~Iv>M^P6qz{3)H$oZvQRJasd-;n^+YQ<_8u?9#Vm~Gj2)n3lp?kMeEhj$%wD9kQi8UZfaZT-_3We6Sv)^QnULbiY8o5+Na*dQ+~&4K-H1FuuD z9XvY^Wc8OKMIHBhpA7CWPO6z`W=K6l7qs*;sKp!8@Qi&?8p8!Zl|Uu%*%j-vPo?VyqIk zOkgf8p>*-`65$3$NY1Jz{@Toj20Lwbgfz{CtkvNk7*9isj>N)< zSgge~#UJOz!kM@%q0IFZKCLQ_KSw=9;IyNGX3m4nSm>t>9g|f;|AEVd)bmTE2;O3@ zAbwjy(`qa_@;5cVse!9AA$o<&b)5NiF>V)2oVm|1wlg}$$3*$;oel9m*B~KoKXT{8ps<*lCMCEju5X%8L zb(xU9nKvar%O6HqMQ`CKm! zru;^1#q2Lk`It*og#-g;LX3t1XNU$T0#|ptN>)FNKMXkw(DQtH#zpFAKU9K#aJklSK z0ezQCQM@E!@hUPEEeWnFwfsWO;K}H-LKO>_dfsEDADS+iTqZ#@O>_S^8nYa+aP~B?W+;3&tGb8)pm@=EOxY3 zW1W599{#5G=UJp{-c}!lYXG*hV*WK&e3Q1(k`^0<+-|sDCyKfzJhMeyy-pZ*)q>t4 zg7vy#mrc^ZS_ta_E^NbwmnPeVVIgWXjP$5nw%;(W2f3)tVCZcJhDDgC>h%W2)cfWi zH;kdagH_e>H5``C)0jgzN1F+}YU7aarsVb2SN-CA5wp%%<&R98 zQ`EGz{F*;^lL|%?tOor|1jYux{eU4}AZTm&3k?R490($%278u{c%?dr%VTd~1^DoK zVt2yk(Oq8cB0Y-LXfijwOOHJ0COjoS^Pz`nQ92N63TPg-pb80B(` zKio%SQSA7I3yaA5Y^nJREg2f}NKU2Mko;MrMybrqPFlB3^bZ~^Zc_2v0sSUcFDlOP zrx@&6NITFTsRm|*D+bIq%$C|_b^IyA=F<--isesvn3)}7H=?v004;7(`OsmQceY>< zwpII@8F2h@grI<;FmTS>b50WH_qfk7FuyhkQSfVPwa={<8Tpx@G1sJRoAAf<9?R5c zA~k=?$pQ=<{fLhKoKnwky*{WD*nXhpF&R@gR@bl59#vEIeo~_?+NPM@6d>!urJ)y) zocxqO6FC>Oxi$fTD4Tl{!#`s@gD4yv*wfry| zZmLb7=bbkc-ERhTcEc|DGqV$}sJ}p{f^E?f+f1R0q6RkplLd_**>69L3zC@;h9P%l zO@CJgyJ8s7LD7T6Vbk9!{-D@XzD9i+hIw~gA9cUUi8q`?-%M+LLYgE{y*|wTS7Vr* zgTtB*?-|zs^+WyHP+c?cVV1vn5R2-p{@F#l2x@VCy}v95L5otMW^KCUNNA#%%UCO$ e$FK?h7>3!tvi%qq(C=}3*pmEa5N;ZS$o~P=X@Zyl literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_messages.176x132x16.bmp b/apps/plugins/bitmaps/native/clock_messages.176x132x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..ea2f9d9458a8148d59810a635716ee37092ae2d7 GIT binary patch literal 69752 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 literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_messages.220x176x16.bmp b/apps/plugins/bitmaps/native/clock_messages.220x176x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..9ca819d7e3d4a1062a1d1068dab40c7dce68fa30 GIT binary patch literal 106976 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 literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_segments.112x64x1.bmp b/apps/plugins/bitmaps/native/clock_segments.112x64x1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..15caccec22124a85f732b65fd045307f0c215199 GIT binary patch literal 1102 zcmb7CK?=e!5Zq!##Dm3G_ysQt-u31)e1eGhfcEOie#1ji@FPA!kAhlfQld+UHf@>i zHoKW*CYjFWv6yF!?+{3UI1-8Q@<~u1^eUJEe9E#kDZ_E~#TNMiD3-ti`ACFg>TqB&FkvyJGDeEZINpi95)B|s>YriJ$wA8=+Ve9k2UsK zKK^rD_c7;u+shcjXS6)Qjk&)4m8?OBiJl(nx&-b|YsovL? literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_segments.128x128x16.bmp b/apps/plugins/bitmaps/native/clock_segments.128x128x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..77090ced57afc351a767ff806437f09217bfa285 GIT binary patch literal 21896 zcmeI4d#qhW6~@1F3*}iT4=EOC&n*^}3XurK014q1)LJmS6p&VXi6B**@(OMI!v|8u zKdK4uN~MZGcqj-Z3O+)S1ki{E6igHd6&fIdJXOlm-~Q&#?%aF!p1Ut#f7|o#3mvJW9bJAT_1kU{{<$C~8%diDkA1OwL=bbUda=zW|cz4ZH$`qk16 zNiEH0Nv})qHFl}=XDKC;mvlV@>X%7>8D0xjFGzEYohv;H51bDPFNe0R{cu80EyI6U zTI^be0}byEu$WGeCON;aYd;Xn!{48KnB;l?D(O7wOVXDe&ywga@RQo>qz{@o6D8u7 z(n-?S;@dv&LER_aALAeV638R)o)4LfcY4~H@4cimrSYy^EnRMg1U~n`O>}4lnJbRPWptO&z1h@%txianX7Q)8Ru=1I3pcS(0T{zkgla?ZP3X62rIlwx*!@OOcI6(CNLJlsP^b{9uzhR zjZMS~{I0P*LUW>!;V|kn#C@dKq&?jA>Zpny zx+K(YQe%$>Y;n2?mh6wrLox?7ut&_xH69v<<|^AGN(lW~djx+{1$1` zvZ7fAss6t7?N+Lrv1>zY)hUSDO+po4C|xXlM_M6WDy@u>{CB10(lH|j(CL8YKncMc zHKH@;m2d-b;&zZuwqAWv`j_-i=^xVb_HLf`K@ckUdhf=ck|qSWvErBAOde!h#)?+(t z%W*=%PRbyCTo#rj3@-vSn`{OJ7W3yB3w0w?s_t;Vw}qOB-QHMC7(Q$!tTc8_IGu~w zt&HuCrj$-Mc8JvxyIEv4o_i)7Vk|RtIE^9}%MPo%5^}<^XI*6K1G^R`ShAoHfD5Gu zr3Y%_J$BYOAuKi_v0t);PfCwPsvxW~B9pj>@I1vHZ85&pOXdgCWmS;{Mb*o8{Weef zUE+>j^LjKD)yZI_XWs;SXe@;COgO+kHN%;kU}s1#8GcpH+!0>@fp^MWJEE)hkd5h290|Axk zE8Z9*_QhwO7|0?vcSn*cfo0(ev=IHmX{XLQh&9!qQa2U3HNwW+j zci(_LVuYOz%IbnEnGQE*1yp;h712hz%$^On1Z%udcPIzjPQXV2(f<3%d!1PQA;E3h5v|$^( zu_LsVaa?o+mRixRtMQL85Seg7RFbJZqA%!VjEp)HD(z9<+tokn_cUeL^^wTx)E+UL zu$o!MI2N*26On;u4PQtH(T0*mS`Z!tZ|C}m=|9FUQm=o6`9mz}y)GgHz~@-@(tZ)h zu8&?TS5PQK@Q$;!y_OHY3C)a@*8)e(GGRevSLz>arXjB%0y5!%D*vdIYLq}G?Bs8b zuS=)BZskz$KfxZ=z(2ae_GprIcz{AMVTsiR+HW^M)+Hzhv{^qVs7b$vMpct{MbU>{ z!?#GVGn$>((J$7Yt|ul~EbLl$ojurU&fg1PgPncE9wFamfU> z4bVKL(-{XmwmaL{mqt6U3#O;r(f9;AFR~h*=R?!XXv&I20hvduGJ!#NZD|tt19ggN~2hk z(QO~-KJH_I^hSJGww(_d zerln0h64T(lw4_d9xc>g6L<74>F(pcL5cKE_0#q{rdWMVt4VP}flrTaPU;^)73axi zWSd&XvTy>#hP9t$V!`Nt1D4UY{!yIs^?&C_ahe^<3U;>kXgz;M-xG`*r7}zs)IBdvU$tk{<565g6*i99|*syPTI{W>I16VA0*Ac&_2*wV? z>01;EYf=;o(%v8czlZ|cDRvGo8jhmNgz@eaI0O`-z!rBA*BEqtt=DN0dx^2njCQ|{9>MM$SRJva8q3CPUz1apFgj>v+g7kTVlm}m zrEvU}39t)36AL#gVtL!khA+sz))gg*Gc}Z@lEyj>mKy~GJznmK`lb; zH$3ew{WTJwF7`D4yuVVV;|0qQ5WFV#=+&P4-oYMC4iwaqC>o8;3x1|Htin{wc`xA$6$I>U%!=f+ltog3Ip zWJAkw+0eCsywfQbufW= ze4wW$t+YohnU{?HqEU>ZGIAdNteY)NXr?9p(XXUEeIAa-R~cdTF*WzSKWsOr>-EbL z?v0QKe9mxx5E72^kLfOoA7pVkdn1x?T-AN=C6Qh4_mJz71+iJ`A92^K39ApNy6-(B zvihvLE?vG;)qQV9x7J->mBo&KQ~w^e)2aM^1kW>JW}K1K9_{Z!P8-hn-~S$Vq19}l gkQFi5_W#>n_7NkT>zzj16K#BegFUf literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_segments.138x110x2.bmp b/apps/plugins/bitmaps/native/clock_segments.138x110x2.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e4b86e4ae034c3d657691f514fd79ff90f71d0df GIT binary patch literal 11064 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 G6#0KkA$ocM literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_segments.160x128x2.bmp b/apps/plugins/bitmaps/native/clock_segments.160x128x2.bmp new file mode 100644 index 0000000000000000000000000000000000000000..a486a292c7ad0da7b55c4a2bfb4b6ba2529e376e GIT binary patch literal 13820 zcmd^GcYGDqwqB>soRZ#2J1OTRr_G!YLJ5eXfZ`>hD2RjwV1i=3 z7DS4`wKw!yKtWNgfT$F^qCiL>wEfoFGbb~Xa)0ms_3nFblaq6D)^BF^?7hGJed}Ap z*%c?tfVZAjfMWcVfv?Rb027G(`%NVPi7w^EzfgafOeQd!&0w)uz-qOE&1M6;-422v zfGCRKa5%u}bb`y}0=L@@F)=X^8ygF8ad8kI9}fu$36PkW2uVpvker+hDJdzCnwkn} zX=#w2o(>rq8PKg;H^|J)gsiMA$j;7&oSYoU&CLam#{+qJd61u<4+RAUP*_+9UauE? zJ|7en6+v-vG5Gy{2m}HU3SQ3>W}spM5r* zbIv(1aNs}~G-wbE9y}P%J@;HV@4WM1$dDm${`u#_-~RSD7&>$)R8&;J1s7ZZ!-frm z3opD7F1qL<7(RSBTzv7xaLFZ?z=#neVC2Y=aOtI&!l+TB;IhjugUc_!9Im+H3b^vh zE8(iEu7c5{N5hygV_@vqu`q7jIJo-it6}{3@i1Y+1gNa6gsQ44xaOK`VB*AyP+eUO z*Is)qOqw(aCQqIWQ>ILTsZ*yyO-&6G!mPoEC8wY5-JR|oa=^>E#F*TIY#GvNB` zuZNj4XTl9P+yFP;cq7c3H4ARK=_a`O=9}S`TW*0{Z@m>}&z=o)=FEZHZo3U`zx{T& zM3~o>8D}EiWTt8Gta=vl`G-dXP<>t zt5(74)vIC6nl-R??OJ&5x#wWrx^=LA{d(B2VFUc*AOC>opMM@+c;N+j@x>S6rI%iU zmtTGvUU}sec=gp+;kDOZgV$ew9o~534S4g-H(}$(jqui6Z^7GdzYYKV=Re_{ciw?_ z-+dR}d+$AX|NZx2)22`0TUK;PcNvhcCYP0>1q6OZe)mui)#izlI$=?ARw!-n_$Kk|@6L9k6NjP=t6r4VN8W>{$A|e@Ej3A0O6Cye;J}w?N z3=x4@F8k$3M3($%f<0qkfh@@p**o?;E5+X3nxB=Eotaq}a>IEol}VY|nQ5WcM}cCG zv%$1~STaiDA;>mbthkrtv5j^c#^$o?X-~1Il%$%{T7FBiilQ}c@1bNX#x7?IDJI0p zSysmfr?M>g*}Q@knla{QE5U5FT5SG80Uls|_{KDk4F`-RpWKm=gd0vuuGayx*|p%n zO=~o}gJPDk`wuiV9X{Ohk_W7L51vs_TvX%>HT1-DI!!|k?%#`pzUT1AUaRAo>TF+L zzAt^VrpJE1LnM*gTBcVt2K= z`F^~V$xy}Sz`5*R$YM`mOfaos%a32TL>z19J6@NGL5~fq|b6W72g6W6Zd5CEnG_VTrvyEmI(*j}ob~cm4v4-6Y zX-9umFumt6$Mh%#)21G*0URHm$~GgWO)HpJhiOPT`L2fP`6{N5@9vhEnwpfp{X`mK zdJ?}t6w{;k{dpKSyMxE>H6f<^7obQe3O1I}IZfyNweS1y_w4!hmrXva^OZP8^qoY?1@Tig-EV7cm`U>6Qu3?JSkX>GOx7BB{8j%*12= zUop-1v;X~=?)(loZo3K*rvJxc$QsDeTGRE#95ZS{27xx(w3s#XJ;rv(xD!NMTTFmO zwAj~K?a`2Se*&zg*seHR$CwB+DE5#UnOALX=M?QRPcod;brPnE*N)7rH?xsTp8yyGQ*!2r#jkot)n`qWYM{(?Y{NBpTGm zpyz3dEwreY)W@tz`!RI9Bs$*um}ox#o7MxBZA-=w6CtH6SGx&gOtk7(VY^t{{LqL0 zxR^OAyVQ4eX;VKTf5e#a)l;TUudA=Gn?AL=B0*We7&8t2gN9hw7CZTo7_;~KQ1?B4 z+`4P6ou&d~Dc-_m$4;I&-g@k4OY@PY!=G(rM@eL3%$Y3tb92Rhg2_Zaf$u0|Q)!|w<_v_Tw6+B#T9bccY`z*3yrq=jJ)V@))=YBT2?VeE2Hj=Pkx)>0f@wONyX zVM<;liY7m90uylr)n>Q7z}Pb7I7=D|n7LYvcVIJ0Fua~E=2ONR^|6~7J470c_M=A` zdtX`1{IoFi6l?MEn1~q@JDkWDA+19bWF2LvFH~bw82hWt=MSJ)M6D?DHDj~YSQ%@5 z?LaeT#Q4J8xTR_9S8To#vnKtpWtU+l*p3~8m6&Lbyk-os=1Tx$PFiA+SC3wa)@~>U z2gStpn5OA63obe*VtVw1iBqOctE;c8n_hG6(8M-OLq8l@L(?#wvHlxFgl*l~hUppX zlQ)`lnEw1Nc9c^cUhf9R_K)aGn3e-kO!uaN$B8)WBx7T#YbvI_I!x!{0=QF~AdcyI z^f#U}8M}GE7UP(Hg2XY#Y%ekPrl?zGI!t3e&3;dzR8whsOv5Z(fw@sqz?DUq?yX=N z2A^an&d@Gs$-s2C7XQZUnRA*Mo36!d?oSxITZ!2ck!lu@4WTyF>`_b$mJN(O24=#v z1w91|K_!Z5bH$P4YgQnb3DoqqY8#sq#WeJ6h-TZ$jOa0)yy5syVNZ6-XM@TViDy#!~1b)ZPrVY(;BbTi_a zFx}G9v_->o;tyMP8fHR=X-ni)W5|GMPX|oXp5+t-+*aG;TE(>BOiV~fOiE5pN=E-X zDKWvWEOI-kjm5cZs^8DhZEo791YX5^Pz zL0(at9@F-uu#}t6Sz5ugq+wc!l{^>!slXY@+JI@%k<;s2BXBjIwhJqbAw8yT-p(=I zHBUQ{r$>&RFmdwKX?1n=waC*t?G0zN=jnSKd=JKZ&)Cp`r`OnNrZF~yefm1`bZb<5 z6Hk*FMloCfKa40ZC!P)#`|{H-)M@Vl|0YjIwKoYh15fKPZF})w@HB4fUGnse$SOJQ zcv{uoFsMCGYnblH)2O|>3u-m%i>D^0d zmiYQKXKgTQ?>%7$=@-<(n)b%>RU@kJ`v(?=a5JLgI%@Cah@7wH2&BDNm^JNf!)?0A zpmsy(R7Xe?0TLSawBrGiE?TFW5Bc!SDZ6uEy`|E z-uPOJ+Pe+Yg1L9AVVZU?(J<|OgPbL;?Fl)sZ?w)-Oq22^OgA*%Kd?YTI;2=9n3hWl zy2f<44bzxUcffRvid)R5^_Ui21Qi9FTzl&=EqW!KZjJ{o*L3-`DC83V@>mD$O+q10 z*-%1nC_sx6-;wGr(-_NG3`PzYZuVLG_13`cO$~KS8lOjio z65^;>9uwnsxy*xgJdIG15;XbACv%Fb%UvkIy2LbY>e(8M6pu{Jr*Q$41B+q zje2A`i0PrU)Q0OwBMxoGU zK7EVMBjY@+VVZkns`lm{S-K^f0t%-5R(5)rifQEO<{Sa@#u!W=-EK$XSB%Y3V`YrZ z@`SO&THUk&PTPp&GS!EgIj`G@izDcH(=t zY41*WdTmsDqwn2l@V#}~J2~RdQg}M-FD}eazetx)$A;vvL&wv4-`nMvU(y%E!%tJbb>gEaB9hH3j*r@F$lAVfABVw&%b z`Lr*%prN5*84)$UFV;LVlD>hq+BVGyW+~BpnnpB7liu9-*79jtGVGFud^#L1?lPZ7 ziPlv<9TPM-6x?`MF)ccZ!yWSJO7oG__?2C^I|-E>zMT`LFkbMxOpCOtTc~fiVHR zMoc&D9D~7``-Y*0f?f9SA>dX(Tf^Q4HUJ*LyF zB|UoM>dcCSz4~2J;psj-@tpQF+$D9&$E@&lsI(WJGXWh~J*KIYaR>C`F?S%WuMXPD zB58!O2%eKKgN`0qsI(`>gaSFz!6QrSMPr5@8RgyhL2U}A>+1XC-}dydRE(IWMxf@H z9)@d>Vo4HuWRy))3j~U|M^-br24jfnT=K|Bd2U-lxks{~kq5zRlf}jEk7NhoV;k7Irv*d83C_W}G z4y6kj-fW0S6_0-MqP470 z_cAn8I?t!8tEv#+va%7;sH?Rs^2o}ESMubmz3)xhyI*}Z`rfz#wF|b@r{#K_Tg(y( z-)iH&_iEJMRaNC8F-Lpfo3uBN#rZ>-Ip}(OJUL{4=b-ORwX9LYD{)1{WcVYf+(^7( zlYK?p_a0V@*Au8bA(jN>)37f%q8)hJZ$b{hSc)VWd~XHQ6&2+eOE5YVs`job zpMdw^4odn;g6ew@7(5U=fE^8Y#56xn6!A%CT}r0%^whd~JPv(t<6{fl_ddG>_bl9e zB&k?zlisTKR*%DNKM><`qwK~O6T`Ll?3(Lp@i-wi6v{3RVZ{d<{VMFcjV-9Ho`EsZ zQJjYlC-4eVI7}M6pzN(7b@k&YCb)BH?g(pGqClj{1+li0lHM*6|Hp>lM(vH78P+VPb$4Lp71FnMHD%W~p+LHgT2qMX;K(IYG1+8dua5y+pwVkR3+J){j1pE-%v zr=3?*HW9!jZZ$@4T7srI3iGensm6@1bo&MwYS|_ zGoji+_30IW{6|?4HhcgU^J%NI{G3{+>4GEdnp8q`4&pi|SFL3^BfY{d5&B<~hV?{R z4Lm0+Dx5A_adtf(muSj=phqDE5YyB`p=S}(&WpQyoHq9+w!JKs%2>Q*#xJ60P8_wB zKR3MQ&glkd%`8sD3?e90D|#6*I}XHK^6GC&FI)92QePa!TgcksyYnG)StOG1ugFUOYwhw{TE{2P(J_w literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_segments.220x176x16.bmp b/apps/plugins/bitmaps/native/clock_segments.220x176x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e5e04f15a41a1a60c1d43d87b395548e19cdac1e GIT binary patch literal 68852 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 literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_segments.320x240x16.bmp b/apps/plugins/bitmaps/native/clock_segments.320x240x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8528a75f7b22f80467991ce52ebd64aa284d5e52 GIT binary patch literal 138376 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 R);H{_`1zAw7J-oK_yg5nf9(JO literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_smalldigits.160x128x16.bmp b/apps/plugins/bitmaps/native/clock_smalldigits.160x128x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..3e084ab99bcf4ae4fc4bfe68ae39400e0f586e92 GIT binary patch literal 5880 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 R);H{_`1zAw7J-oK_yg5nf9(JO literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_smalldigits.160x128x2.bmp b/apps/plugins/bitmaps/native/clock_smalldigits.160x128x2.bmp new file mode 100644 index 0000000000000000000000000000000000000000..7f18582903498d7475f99d30d16fef3cae3c225d GIT binary patch literal 3264 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 R);H{_`1zAw7J-oK_yg5nf9(JO literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_smalldigits.320x240x16.bmp b/apps/plugins/bitmaps/native/clock_smalldigits.320x240x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c50c6d0a53fa0a0f568f27a83d323bf8e840b239 GIT binary patch literal 13160 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 KE3&ur=<#o~0x{VD literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_smallsegments.112x64x1.bmp b/apps/plugins/bitmaps/native/clock_smallsegments.112x64x1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..767e25556ee743bf33fb21a55c7eefbaa9d41618 GIT binary patch literal 686 zcmbV`!41MN3`GOSa$^dnKoxg(VT7;;DjP6Ex(Up{o$z0%RSTs-BGpSB`+wVq<82+v z+3VhkPF%!FALpd{cJrYmbmg2&m{SPP3F3cv$OkQNZAL9ej|6=PuLge9JwbgF` literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_smallsegments.128x128x16.bmp b/apps/plugins/bitmaps/native/clock_smallsegments.128x128x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..058c3cc98f408d71765a0e8ef2dcd2a634fee7aa GIT binary patch literal 5880 zcmeH~O{`s06vzMToOADaeJ!nr_O(T?ijOF%#8ciIVc;t%T1~{rfRI#L10|8r)Ih|* zz@#KTk|Ob0L5mP6c|#%5RNF)`5i>C zb*^52Y^l7hqrZUPD8Kjkna1g*Y4~Fc^Pf-98O_I0l*I9Z{E?ZA3J&Zzip@Theo51O zt8#fJM~k9Z`dpgnc6&aNbEVzfZ6jUzud$PHaFYMax-?_mBNGndH+b7_VKth7x&45d@hCJikDosC2Im{5}JO_H;Q@WCTA_16B?$%FO9 zu(aIVgabjduGys7dZ!!BZZe}^REn6L>oz+h{U-e?9g}{PUY7{OG_zBsRnlsyC!Hzr zxWQ%D6#Ox1xeu%EeCd0aV#bUp-y^(MT#1+Om$nx(Xp{Z>+B?#oVhS~Y`Q5(YVF`Lb z`bc`LUUHB0t#nX2ToU^~gh3P{)6yIMgxTjbDIJxT6#SjiXSH-T$t`~}yRzVKm5xX& zil^+4Lw#w+LA+h(I$K*j6@M>CWfVYp-$`#u&q=$So|Qh8UM)oN#9O6zowzpin)H;} z%1nP`woA-5nBDCCE#9A0ziXTHgY^3l{QM<*C2S5Y55jMUYp&i;YT|brX;nHc5D4)z zJKJA=QNU*y;FtOlo|YbT@CM{>Qen`X3OID#G@0!~d2# z{&)+H2!a1*>CsxAD{zF0IPrvZU+qzx|MXfq8%;I*4{zhzVM9Fdzmr`>;T6zA;D4j7 z_3Rb+A8NxspKw@q4e&o8x=Q*$!cqPQ{&&9wzE9Tr-qQ5HucWsmP%K-Y|6waQB8ZiU zwBslEtTJ0rY|xIMFjktC@poYS95pM0&gxeDd{KJDjBw_y9Y0@@o{6G!GUp@zO?dDe z7(eG@{%hgam;YM$O*ix3T*q&>J8zC3`2P3tvsasXW^ZBs^B_lj?Q22)!xe~`bF6+L zA|9;kmuo#5U)H<>QC0MXeytXIhy}Anr*5hH>cj#tUv#d zzLwV2*P+NItyc9X7bUEtQPe>*+tI2&Nh^31#^d~U{fS4hK2IJ)>Q7vh62cqx=i6S2 zSM}$1=?-b6;PVGQ;CG}1?-0dB13$pSg+u(NyeKa7*Brx-_<5rK{AcUWX8ff7?3D&x zSyd1}u^dVj3My<8TZ5YM6EEPifZ!R%&m~3toCDu~KOg7&?@#IS>fSz}zT8vH;D6*1 z90s4niy#Kg?}xjj>s>ARCj^R`Xna3>;w~J%f$ff#Awb&c-|u-q$)!+q5I?v6>)-G1 L^U-TY(3AcGs(F)( literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_smallsegments.160x128x16.bmp b/apps/plugins/bitmaps/native/clock_smallsegments.160x128x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..52281d29a4e4f838753d07a0e07dfd842d5a633d GIT binary patch literal 5880 zcmd6rZHygN8OQ%~&b-gPyW1@Yl(y`)wYx=mk-mb&wAEOnX~e|%NwGzPM$l4?CJN}T zQnhUYg7_}RFJc3l_}WO+M2%lSlWOFH3LhjvkZQ#G$&dc#nLBf5_TIY$6Ofa$vvcQ} zbLO1q|NQ^YGqeBTe_keQyErcLm-Ba;zd#pqlzxSMwy6H>f*rWaTR&ggC`I+p(9Wfv z-IYl{mi{VTHXK>rD^1n*?@51=F14T4fk9GQUzm~B)#ug!r2J<$b+6aI`sIn;RA1@- zpDus0_({!{9!#>9j-kEO?d*>wj_tN}Hc7`-c!Lv;AQDU9$5GlK%}JNEIzI^rW;Fb^ zN*743hMmiV$h-|UXuxcJInS^$Y|id7XwI`=jBgs}JammM%2vbOD;mos7!5yWWBw0G z%hHl{PHvJ2#~MFQzbic^{n0unKeR2_LjzksPh%qXT!k$wn;V1x4zmxBsFHjKULEa$=?VBR!IoO9ln z-30-EgLCIFfs14Pi7f-Nr zndLP`PP*gUmg@X@+ntNNpEHk@GmMP){s!q;=MI?DNA01%)Vuq<$Ma*ybFsaJYJS(* zQ#GmEJQYPdz1!*B4(E1ye@z@+8;0ivK@f#t5l2@^4@&=#o-+O9 z_y_5W=$<`43|}E#X`w>2&{4_jq-Uh9W{+d+ZB6C*+l&iuGJ6tlkv6wf7CT&cSo(;q zKZzk1!Apn}NL6QB4@jqMYf(sKGXFcIqtXYgzel=X`lQ+IA%~=&NxzfMSbtRdfpo-s zq}_Wq`H=MWnt2rqUqdcP;#XoXop_gxZ#$CsKbxknAK2e3{np6QIG0(@^a~bZ&)+XS zDP7)JZ6jZunflyd{G9Y_=^GLkz9fA``ZAfXUvLB@ph)7qd3G#G?nvULJX`7&%USxt zBFB+&TmVrNg4}lJ=)1h%?fqH?8NPYSA|7G2HGWUm_@%bA={^snBQay~>*e_L7q;ML z`89r}Yx49h(h~-IV{hY^rn{wc(n1X$5H|SX`Y1$d*zmG+^F;g(OFxxw?2w4p@-o{?~5A0 zD1txmqv`Wj8+{b)is@NaE< z0_i8lKU^P%J*%l$0t?|mbg+JBhkpdjR%0no=A4eGyx)5kZ6swRoychVUV^H^uMDzk zW{gck<*er*^`W^@ zv?I?xou%~UEQ5j{PvfISwpjBoj^W&@{Cj2s|7NBk`6~SD_l`{BpDleA{+T^ZR^cCt zHi3T+B6>zG3!=ka{{2b12hhDo<;L-k%ZT>oIJ%&;8$UOqpZ7`ci^3~f`q|5m<=JP_WGRVnPm|lS^uu{h=$H8~-0o4% z;40J4-J#!8<-aOFM%%4;`{xAwEdRZ#7EdH}=0(hZ@GmO)2j|Ftx3u)Li{GJc{sX_e zJNP}+)z6m(em6zol{J2Gv@g$285Wm&(U#Y*m z+yN0`*);UERew%d{=9WX{u|bxE{=9)X<2`wpG8@JF6DLo85Q1L5&9kEKUCB^65-WB zP`*Eyex@lw^oYF>JZ0|>XQiJ@d#D0U+GnPKlHSyxl!IHPIll6ky?7`1Uvv^GXNw_uoIidb+^z#L(KT*6>CVi9Z&rjL<4diWg{mDty5tSFb z{v7Hj_-(NdLhTShKkpvI$F%fvtD<>fA!g`A%)z042A0+qyjyUtJerU$WEu0~gedAq z(V8$^<2{_24Z~UIkdW%rOP;;9=3k|su<%jmZUJAKw07nm=MLejriI}}(ABxv?ET&W z=O~N0bM!Pq_xaxyd;`65zb_20^ZuV0<2^vQnjXi=bb(tiQ2 Cp_6F< literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_smallsegments.160x128x2.bmp b/apps/plugins/bitmaps/native/clock_smallsegments.160x128x2.bmp new file mode 100644 index 0000000000000000000000000000000000000000..7d411149356fbfa21dfe3605d6482166d86d854b GIT binary patch literal 3264 zcmc(icT^Kw7sa;(q$DIW2>}TSAwU915{kW7RP2hq_X+~`_QV4A-h1y|0UL^iVxR~3s+{P3h~A~(Ags@%KXS3< zEi71nl`2&VHa0d8iA1oqwS}FX9ZHuj4SRcgI5;@K(a{l3PEHVu#gIrOaCUZvR4Ro` zCIiDTU|AM&xf}|G0xm8tP%4#hb#;ZCn;XiMDFb(Rcc@e2&b+_J)s-4}5)nq1WqSFc{$H=Ldg(e*^>splsQ)2n-B_(P)IpWP;gjMo>@? zf`fw*5)y*Y&`^{sR}SUNmq&#P6;QEaMO3O(36(2XMwKd6P_=4RRI64E)vH%WjT$vj zvt~`ys#OcMYu84dI(1ODZe7%?R}b~;*GE`b7#cKafQAhlqEVwp2oDcOXxFYC+P80y4jnq6W5BT=%$_|PbLPy!+_`fxZ{9r2pFbZ97A(NR zg$uE0(IPBfyckQCEWy&HOR;R(GAv)d94l6=z{-^?v1-*StX{nuYu2p6+O=!3ZrwVp zU%wt3Hf+GgjT^CP(FMdn$jCruW+u*_J&SYa&f)y|^SE%~ z0xn*>h)b6)AuB5j+1c61$;m-(ZZ7ij@{pgOkIR=YqoAMwg@uKLnynFW!@87@2hYug{@#9B) z`t%8(KYzxTFJJKW>sNgH_6^^^f5(p>KTup;jGsS$;@7WV;5ZI)g;SNrVoI-^=7PlU zdT|FwOD#6O;CeV%YK3F{2$r?fa)pB(U-J8Zzy5!WzffB>VQCM2hF@1mMN$QALyN}dbi`H?&?5wq8bV|5Y zXSqTwmXz$LQ)!3wOog+E#}KY73Fyw>sBm3}1>9UZNLUy5IMs?eDb#Wq<4gxxYKsp<~85I?2l2Bdm6*+<93fxHtLr93(q#4Rpre}#Ez*#C4HTcxW5%3IB zu&l(ZXe&KiR6!C4M+c;5*#QdOn5k0|#@$&#dz|KS#dOY(wWO6(UZzZ~c5TeH2W(Oc z6%v`mn~MVM<~<8`WToz3r_!DdKO;mW_0beS8p37oO-|l->oReQV$Wu#rR8Ka1$2G; z#Y9IB36T=dS^<;GcO%a8m;P`r`06Gu;f&=B(h|`cSGELxY{hKqGyR;`cao-){WSI$t`8hcSX-!B6br~O>kA_tc zr_K~?GWpfq=tZ1Hf2GpJuCGN;Gqun@{BvK@N*7G+arP?OLVCJ~xXM_WeNHy%>Efr? zd3(FeT1?MrMr));T|mPn?sP3bJsCjKi0eS>K7k5WE;aC+tk&!zW2FKot1-$M#-gWO zR&U+m#KZ%)^GRDo;`PiaP4{(d*TgCDWA1MxPCJX91^#ruPFWeGr`p{}%r+ox| z`qG~Ezam7G5tV`1LaFabNr#qHc<{CU|;MxG3| z_T3rq^`~zkqOgyGKg}+G{245EEa|(8_vmQ}@uLM!^5;*wWeaCsCPSPmfitzxh37Q$ zoPs}DCQxtTv}IXFMKy6=+LxSscqwsG-wX0{a|^P=C|@c!ADy>`;WMQ(n~f&_8XNe& z2L`$-mA00?`Hi+*Cv8LeFJEGO7tcEWUP5- z)kdNue;y;X7luAk(24wM^+)AEP=i^Z_ml)r&lopAQ zcgD+_qXgQc4iGqx&|G2};yjdefX}MBLh+2 z`T5Cu1iLXrnvqJi(rC~d{M6Cs$OE==ji<&_?;Aj#>`!eU5+(HAns;H&lb*(sIbV`@ zK1V|-@5Cw0`CeR@Q^{O1A8hQQ(y5^M20W)YC!L-@7EYVgE3Q&2r*+P& m1b?>s)y9^UF~|5hPdVC?l(@S{n4go1imqL~eX$w;kI28l*_ssq literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_smallsegments.220x176x16.bmp b/apps/plugins/bitmaps/native/clock_smallsegments.220x176x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..058c3cc98f408d71765a0e8ef2dcd2a634fee7aa GIT binary patch literal 5880 zcmeH~O{`s06vzMToOADaeJ!nr_O(T?ijOF%#8ciIVc;t%T1~{rfRI#L10|8r)Ih|* zz@#KTk|Ob0L5mP6c|#%5RNF)`5i>C zb*^52Y^l7hqrZUPD8Kjkna1g*Y4~Fc^Pf-98O_I0l*I9Z{E?ZA3J&Zzip@Theo51O zt8#fJM~k9Z`dpgnc6&aNbEVzfZ6jUzud$PHaFYMax-?_mBNGndH+b7_VKth7x&45d@hCJikDosC2Im{5}JO_H;Q@WCTA_16B?$%FO9 zu(aIVgabjduGys7dZ!!BZZe}^REn6L>oz+h{U-e?9g}{PUY7{OG_zBsRnlsyC!Hzr zxWQ%D6#Ox1xeu%EeCd0aV#bUp-y^(MT#1+Om$nx(Xp{Z>+B?#oVhS~Y`Q5(YVF`Lb z`bc`LUUHB0t#nX2ToU^~gh3P{)6yIMgxTjbDIJxT6#SjiXSH-T$t`~}yRzVKm5xX& zil^+4Lw#w+LA+h(I$K*j6@M>CWfVYp-$`#u&q=$So|Qh8UM)oN#9O6zowzpin)H;} z%1nP`woA-5nBDCCE#9A0ziXTHgY^3l{QM<*C2S5Y55jMUYp&i;YT|brX;nHc5D4)z zJKJA=QNU*y;FtOlo|YbT@CM{>Qen`X3OID#G@0!~d2# z{&)+H2!a1*>CsxAD{zF0IPrvZU+qzx|MXfq8%;I*4{zhzVM9Fdzmr`>;T6zA;D4j7 z_3Rb+A8NxspKw@q4e&o8x=Q*$!cqPQ{&&9wzE9Tr-qQ5HucWsmP%K-Y|6waQB8ZiU zwBslEtTJ0rY|xIMFjktC@poYS95pM0&gxeDd{KJDjBw_y9Y0@@o{6G!GUp@zO?dDe z7(eG@{%hgam;YM$O*ix3T*q&>J8zC3`2P3tvsasXW^ZBs^B_lj?Q22)!xe~`bF6+L zA|9;kmuo#5U)H<>QC0MXeytXIhy}Anr*5hH>cj#tUv#d zzLwV2*P+NItyc9X7bUEtQPe>*+tI2&Nh^31#^d~U{fS4hK2IJ)>Q7vh62cqx=i6S2 zSM}$1=?-b6;PVGQ;CG}1?-0dB13$pSg+u(NyeKa7*Brx-_<5rK{AcUWX8ff7?3D&x zSyd1}u^dVj3My<8TZ5YM6EEPifZ!R%&m~3toCDu~KOg7&?@#IS>fSz}zT8vH;D6*1 z90s4niy#Kg?}xjj>s>ARCj^R`Xna3>;w~J%f$ff#Awb&c-|u-q$)!+q5I?v6>)-G1 L^U-TY(3AcGs(F)( literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/clock_smallsegments.320x240x16.bmp b/apps/plugins/bitmaps/native/clock_smallsegments.320x240x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..88366e6de7f386a4b8264669ec0e3d3c9b404087 GIT binary patch literal 13160 zcmeI2ZH!$-8OQ&#yYyx6mcCF$0l{ zg(l8@S30wBL2sele=OiTI_{O;wft63rKjAagnux_zuQwuW>ZK7ywy%g=eoLf6_Ea8 z3?Bv73+M37v?I;wXHGw%1}<$s^i;4(Z6z;%w)p0vLuu`df42Cr_e_2$Bm@-RtJUtT z1cO=WURvp1Qpg#AmrTADp3jVD{^eI$lMvt4^*QOs(vR|as-xqpQG8a|UzZRXUkwp%6JNUDj$u48{r#)Deo@DS53f|AU`_(CSClu@XkF)R95M(7W#_H zpFjWZ)LuQ`4!);ymGnAI=FQvF4j#;+o*rvefGawlA}IL$zQsGY$hpOqmpB*Zg~9NX z`8qdG`l0k^=@onaMS4~GtL48*r=`_d6T{=I(KF8F-_qOCzofUMH>EeMAxrk6RCnlx zU#jHzalNz>0!cSW*GiBP)-0EPYioV8@51nlq?@EAS*Q7zrwzX|z%P(in7}-+{^^L} z#{&EnHVnq&Vhwg1{#b^$m+P!aR}5b>{HZ+tYMX3F43D<|A^qJS&X})Zm@GO$3H{Qh zd|oe|uD_(H!ssR6};rGSxl%1s3xmyDK zgyD}iz$en2yEDLZU}QW`HNX#B?L>g@vl9BHYCNAuCC;rZ@go8LO6f`I57vr~%K5Bw zy92zO`-t?A^sw|T>6_9wEc3$0Z#(w|hMM7L!*}@dxM}!L?eN{Ec1C*H*7xm}e77;P z+z&{-#+sIV-(%W%tbyjseE+23f8GFp#A?TUE&6fpdK>c}GozGmnCE*pcsBD((mQ5V z^4R24&E%i*6{-G@TjAC+T8i@h{&bKV@??kmQNClc4%m{Fw+$uJCB83~rleoa@jYFU z4?Ym(=C6(s4> z{5u0HC$x7#;?TiMG9E+V-%$}R0NYZ?XbGo7_>@dA#WQlW#1hboxrdomSS5YN#AbMe zTx}9~7BYIiU3y;H8pvmvdTo`xn8NeZrqa;AGoB_Yx+&)03HcayR7Fw$P7IHnp2ASl zk0%*Y-oK+>@a(;4D)XIAQRcEJ+MGCsH1zM-?Q1P0yGOdW4gc;{blOyhsB$j*cUJ0a zbN=0QwbQQ)_g&7tm;OD82OuCu=^fjjQ?-}lR+uoTlrGJ`zmeyAbN_x` zy36;Q+6OlOR0IG1Q|apxY+{<3eSnE<$VTxzKmf@lMk=4S(~aYKtVdP)c!1~igmtlv zw^D){n6eviSgCv<2}7lQC9p5Rdh~KK4e%3&KiUA#d{;VG3GllNk7b7#`E8Ij_aIi)_tpZeqTq&6&Zdu@jN^5gL-~PLC)bL*nWxo zi=`vBE@Qq5{W$kO^Y3hua*FaD|L&bdqw{-#?}){ZpR=izJ;nJF-*I!#H8{V|@!hY{ z2c7ScU><{6*ng>gAgE*iU{nj4!nt@Jon2=h3O`j&QU6XPw$ctPW&EY_{q?+mM{E1*$e*d>QU| z?tVU7FZ?_F{Y2aM^F+Mp5IcW>-ULZzcHRB zCXsc&Sh}BQORShXzXvP$9-ZI0mzYV|2aAUvZ+t)h3p?D^o0vTr=LdKV?&n{VzGRmk zY_KF5{vliL2c+H--!TP*7FD~r^Z47G+ha<2EcqNs>|6HFLSHjJa7U~2J5<7!Vt$h} zK0Mayex7dOs4bP!t zL+O4VPf<0tc7ja5ub(fC*cYZzzQ17d6T!Fc+?@PN67#}IJ)0*x+{eHFO!|$q1<<;_ zTMgVU-#2ewZ+O=x-#7PfG(3;C_`bfsKgF{mtRt>7nogoX?(5d|`|*ImpMqzDMbo2( zzq5ZsHlDWb>o#x9^XnNW- zw$s<`Shs0b=l8y~;Ae4u@7u7>I%?v)YBruzemo;XL-yk1`RL^{+Pje5&mSCPw~#PO z7#WNbL@s2^0+&c{dXutt%^JhAdD^<4zpch{kPyOg-OrCs?lnAo@3mF7 zPsPW~{rphP+Xu$eL`CrKqWABqy+UGJeBUvMjq<52zK>4ck>Z>4y&li+AE<96OsOpa z8#tO61|*#rO!;MDJSt)qEJPU0^Nvy4 ) \___| < | \_\ ( <_> > < < * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ * \/ \/ \/ \/ \/ - * $Id: clock.c,v 3.00 2003/12/8 + * $Id$ * * Copyright (C) 2003 Zakk Roberts * @@ -26,9 +26,9 @@ and plain mode. The Time's Up logo could also be updated. ***** VERSION 3.00 ** New, simpler UI - every screen can be accessed from the new Main Menu. -Huge code cleanup - many major functions rewritten. Functions optimized, -targetting scalability. Number of variables reduced majorly. Faster, simpler. -New clock mode: plain (simple, large text). ON now controls counter +Huge code cleanup - many major functions rewritten and optimized, +targeting scalability. Number of variables reduced majorly. +New clock mode: Plain (simple, large text). ON now controls counter (press toggle/hold reset). Fancier credits roll. New logo. iRiver and iPod ports are working but not yet scaled to fit their LCDs. @@ -37,26 +37,25 @@ Fixed general settings typo, split up settings function, added cursor animations and updated cursor look (rounded edges). ***** VERSION 2.51 ** --"Show Counter" option is now saved to disk +"Show Counter" option is now saved to disk ***** VERSION 2.50 ** --New general settings mode added, -reworked options screen, --cleaned up a few things and removed redundant code, -faster -load_settings(), fixed a help-screen bug (thanks to zeekoe) +New general settings mode added, reworked options screen, cleaned up a few +things and removed redundant code, faster load_settings(), fixed a +help-screen bug (thanks to zeekoe) ***** VERSION 2.40 ** --Cleaned and optimized code, -removed unused code and bitmaps, --Progressbar and more animations at credits screen, -centered -text all over, -general settings added at ON+F3, -new arrow bitmap -for general settings and mode selector, -bugfix: 12:00AM is no longer -00:00AM +Cleaned and optimized code, removed unused code/bitmaps, credits screen updated, +centered text all over, general settings added at ON+F3, +new arrow bitmap for general settings and mode selector, +bugfix: 12:00AM is no longer 00:00AM ***** VERSION 2.31 ** Fixed credits roll - now displays all names. Features improved animations. Also revised release notes. ***** VERSION 2.30 ** -Tab indentation removed, and -Counter screen added +Tab indentation removed, and Counter screen added at ON+F2, with countdown options ***** VERSION 2.22 ** @@ -68,210 +67,251 @@ Digital settings are now independent of LCD settings -Changed the behaviour of F2 ***** VERSION 2.20 ** -Few small bugs taken care of. New features: -New binary mode, --new mode selector, -new feature, "counter", and -redesigned help screen. +Few small bugs taken care of. New features: +New binary mode, new mode selector, "counter", and redesigned help screen. ***** VERSION 2.10 ** -New bug fixes, and some new features: -an LCD imitation mode, and --American and European date modes are an option. +New bug fixes, and some new features: +an LCD imitation mode, and American and European date modes. -***** VERSION 2.00 [BETA] ** +***** VERSION 2.00 ** Major update, lots of bugfixes and new features. -New Features: -Fullscreen mode introduced, -modes have independent -settings, -credit roll added, -options screen reworked, -logo selector, -and -much- cleaner code. Analog changes include: -removed border option, -and -added both 12/24h time readouts. Digital changes include: -centered -second and date readouts and also -introduced two new additional ways -of graphically conveying second progress: a bar, and a LCD-invert mode. +Fullscreen mode introduced, modes have independent settings, credit roll +added, options screen reworked, logo selector, and -much- cleaner code. ***** VERSION 1.0 ** -Original release, featuring analog / digital modes and a few options. +Original release, featuring analog/digital modes and a few options. *****************************/ #include "plugin.h" #include "time.h" #include "checkbox.h" -#include +#include "xlcd.h" PLUGIN_HEADER -#define CLOCK_VERSION "v3.10" +/* External bitmap references */ +extern const fb_data clock_digits[]; +extern const fb_data clock_smalldigits[]; +extern const fb_data clock_segments[]; +extern const fb_data clock_smallsegments[]; +extern const fb_data clock_logo[]; +extern const fb_data clock_messages[]; +extern const fb_data clock_timesup[]; -#define ANALOG 1 -#define DIGITAL 2 -#define LCD 3 -#define FULLSCREEN 4 -#define BINARY 5 -#define PLAIN 6 +/* Bitmap sizes/positions/deltas, per LCD size */ +#if (LCD_WIDTH >= 320) && (LCD_HEIGHT >=240) && (LCD_DEPTH >= 16) /* iPod 5G */ +#define DIGIT_WIDTH 50 +#define DIGIT_HEIGHT 70 +#define SMALLDIGIT_WIDTH 15 +#define SMALLDIGIT_HEIGHT 21 +#define SMALLSEG_WIDTH 15 +#define SMALLSEG_HEIGHT 21 +#define MESSAGE_HEIGHT 40 +#define MESSAGE_WIDTH 320 +#define LOGO_WIDTH 320 +#define LOGO_HEIGHT 160 +#define LCD_OFFSET 1.5 +#define HAND_W 3 +#elif (LCD_WIDTH >= 220) && (LCD_HEIGHT >= 176) && (LCD_DEPTH >= 16) /* H300 */ +#define DIGIT_WIDTH 35 +#define DIGIT_HEIGHT 49 +#define SMALLDIGIT_WIDTH 10 +#define SMALLDIGIT_HEIGHT 14 +#define SMALLSEG_WIDTH 10 +#define SMALLSEG_HEIGHT 14 +#define MESSAGE_HEIGHT 27 +#define MESSAGE_WIDTH 220 +#define LOGO_WIDTH 220 +#define LOGO_HEIGHT 110 +#define LCD_OFFSET 1.5 +#define HAND_W 3 +#elif (LCD_WIDTH >= 176) && (LCD_HEIGHT >= 132) && (LCD_DEPTH >=16) /* Nano */ +#define DIGIT_WIDTH 25 +#define DIGIT_HEIGHT 35 +#define SMALLDIGIT_WIDTH 10 +#define SMALLDIGIT_HEIGHT 14 +#define SMALLSEG_WIDTH 10 +#define SMALLSEG_HEIGHT 14 +#define MESSAGE_HEIGHT 22 +#define MESSAGE_WIDTH 176 +#define LOGO_WIDTH 176 +#define LOGO_HEIGHT 88 +#define LCD_OFFSET 1.5 +#define HAND_W 3 +#elif (LCD_WIDTH >= 160) && (LCD_HEIGHT >= 128) && (LCD_DEPTH >=16) /* iAudio, H10 */ +#define DIGIT_WIDTH 25 +#define DIGIT_HEIGHT 35 +#define SMALLDIGIT_WIDTH 10 +#define SMALLDIGIT_HEIGHT 14 +#define SMALLSEG_WIDTH 10 +#define SMALLSEG_HEIGHT 14 +#define MESSAGE_HEIGHT 20 +#define MESSAGE_WIDTH 160 +#define LOGO_WIDTH 160 +#define LOGO_HEIGHT 80 +#define LCD_OFFSET 1.5 +#define HAND_W 3 +#elif (LCD_WIDTH >= 128) && (LCD_HEIGHT >= 128) && (LCD_DEPTH >=16) /* H10 5/6GB */ +#define DIGIT_WIDTH 20 +#define DIGIT_HEIGHT 28 +#define SMALLDIGIT_WIDTH 10 +#define SMALLDIGIT_HEIGHT 14 +#define SMALLSEG_WIDTH 10 +#define SMALLSEG_HEIGHT 14 +#define MESSAGE_HEIGHT 16 +#define MESSAGE_WIDTH 128 +#define LOGO_WIDTH 128 +#define LOGO_HEIGHT 64 +#define LCD_OFFSET 1.5 +#define HAND_W 3 +#elif (LCD_WIDTH >= 160) && (LCD_HEIGHT >= 128) && (LCD_DEPTH >=2) /* iPod 3G, 4G */ +#define DIGIT_WIDTH 25 +#define DIGIT_HEIGHT 35 +#define SMALLDIGIT_WIDTH 10 +#define SMALLDIGIT_HEIGHT 14 +#define SMALLSEG_WIDTH 10 +#define SMALLSEG_HEIGHT 14 +#define MESSAGE_HEIGHT 20 +#define MESSAGE_WIDTH 160 +#define LOGO_WIDTH 160 +#define LOGO_HEIGHT 80 +#define LCD_OFFSET 1.5 +#define HAND_W 3 +#elif (LCD_WIDTH >= 138) && (LCD_HEIGHT >= 110) && (LCD_DEPTH >=2) /* iPod mini */ +#define DIGIT_WIDTH 23 +#define DIGIT_HEIGHT 32 +#define SMALLDIGIT_WIDTH 10 +#define SMALLDIGIT_HEIGHT 14 +#define SMALLSEG_WIDTH 10 +#define SMALLSEG_HEIGHT 14 +#define MESSAGE_HEIGHT 17 +#define MESSAGE_WIDTH 138 +#define LOGO_WIDTH 138 +#define LOGO_HEIGHT 69 +#define LCD_OFFSET 1.5 +#define HAND_W 3 +#elif (LCD_WIDTH >= 112) && (LCD_HEIGHT >= 64) && (LCD_DEPTH >= 1) /* Archos */ +#define DIGIT_WIDTH 16 +#define DIGIT_HEIGHT 20 +#define SMALLDIGIT_WIDTH 8 +#define SMALLDIGIT_HEIGHT 10 +#define SMALLSEG_WIDTH 10 +#define SMALLSEG_HEIGHT 12 +#define MESSAGE_HEIGHT 14 +#define MESSAGE_WIDTH 112 +#define LOGO_WIDTH 112 +#define LOGO_HEIGHT 50 +#define LCD_OFFSET 1 +#define HAND_W 2 +#endif -#define OFFSET 1 +/* Parts of larger bitmaps */ +#define COLON 10 +#define DOT_FILLED 11 +#define DOT_EMPTY 12 +#define ICON_PM 13 +#define ICON_AM 14 +#define SEGMENT_AM 11 +#define SEGMENT_PM 12 +#define SLASH 11 +#define PERIOD 12 -#define UP 1 -#define DOWN -1 +/* Message names/values */ +#define MESSAGE_LOADING 0 +#define MESSAGE_LOADED 1 +#define MESSAGE_ERRLOAD 2 +#define MESSAGE_SAVING 3 +#define MESSAGE_SAVED 4 +#define MESSAGE_ERRSAVE 5 -/* we need to "fake" the LCD width/height, because this plugin isn't - * yet adapted to other screen sizes */ -#define LCDWIDTH LCD_WIDTH -#define LCDHEIGHT LCD_HEIGHT -#define CENTERX LCD_WIDTH/2 -#define CENTERY LCD_HEIGHT/2 +/* Some macros to simplify drawing et al */ +#define draw_digit( num, x, y )\ + rb->lcd_bitmap_part( clock_digits, 0, num * DIGIT_HEIGHT, \ + DIGIT_WIDTH, x, y, DIGIT_WIDTH, DIGIT_HEIGHT ) +#define draw_smalldigit( num, x, y )\ + rb->lcd_bitmap_part( clock_smalldigits, 0, num * SMALLDIGIT_HEIGHT, \ + SMALLDIGIT_WIDTH, x, y, SMALLDIGIT_WIDTH, SMALLDIGIT_HEIGHT ) +#define draw_segment( num, x, y )\ + rb->lcd_bitmap_part( clock_segments, 0, num * DIGIT_HEIGHT, \ + DIGIT_WIDTH, x, y, DIGIT_WIDTH, DIGIT_HEIGHT ) +#define draw_smallsegment( num, x, y )\ + rb->lcd_bitmap_part( clock_smallsegments, 0, num * SMALLSEG_HEIGHT, \ + SMALLSEG_WIDTH, x, y, SMALLSEG_WIDTH, SMALLSEG_HEIGHT ) +#define draw_message( msg, ypos )\ + rb->lcd_bitmap_part( clock_messages, 0, msg*MESSAGE_HEIGHT, MESSAGE_WIDTH, \ + 0, LCD_HEIGHT-(MESSAGE_HEIGHT*ypos), MESSAGE_WIDTH, MESSAGE_HEIGHT ) +#define DIGIT_XOFS(x) (LCD_WIDTH-x*DIGIT_WIDTH)/2 +#define DIGIT_YOFS(x) (LCD_HEIGHT-x*DIGIT_HEIGHT)/2 +#define SMALLDIGIT_XOFS(x) (LCD_WIDTH-x*SMALLDIGIT_WIDTH)/2 +#define SMALLDIGIT_YOFS(x) (LCD_HEIGHT-x*SMALLDIGIT_HEIGHT)/2 +#define SMALLSEG_XOFS(x) (LCD_WIDTH-x*SMALLSEG_WIDTH)/2 +#define SMALLSEG_YOFS(x) (LCD_HEIGHT-x*SMALLSEG_HEIGHT)/2 +/* Keymaps */ #if (CONFIG_KEYPAD == RECORDER_PAD) - #define COUNTER_TOGGLE_BUTTON (BUTTON_ON|BUTTON_REL) #define COUNTER_RESET_BUTTON (BUTTON_ON|BUTTON_REPEAT) #define MENU_BUTTON BUTTON_PLAY #define ALT_MENU_BUTTON BUTTON_F1 #define EXIT_BUTTON BUTTON_OFF -#define MOVE_UP_BUTTON BUTTON_UP -#define MOVE_DOWN_BUTTON BUTTON_DOWN -#define CHANGE_UP_BUTTON BUTTON_RIGHT -#define CHANGE_DOWN_BUTTON BUTTON_LEFT - -#define YESTEXT "Play" -#define NAVI_BUTTON_TEXT_LEFT "LEFT" -#define NAVI_BUTTON_TEXT_RIGHT "RIGHT" -#define EXIT_BUTTON_TEXT "OFF" -#define MENU_BUTTON_TEXT "PLAY" -#define COUNTER_BUTTON_TEXT "ON" - +#define MODE_NEXT_BUTTON BUTTON_RIGHT +#define MODE_PREV_BUTTON BUTTON_LEFT #elif (CONFIG_KEYPAD == ARCHOS_AV300_PAD) - #define COUNTER_TOGGLE_BUTTON (BUTTON_ON|BUTTON_REL) #define COUNTER_RESET_BUTTON (BUTTON_ON|BUTTON_REPEAT) #define MENU_BUTTON BUTTON_SELECT #define ALT_MENU_BUTTON BUTTON_F1 #define EXIT_BUTTON BUTTON_OFF -#define MOVE_UP_BUTTON BUTTON_UP -#define MOVE_DOWN_BUTTON BUTTON_DOWN -#define CHANGE_UP_BUTTON BUTTON_RIGHT -#define CHANGE_DOWN_BUTTON BUTTON_LEFT - -#define YESTEXT "Select" -#define NAVI_BUTTON_TEXT_LEFT "LEFT" -#define NAVI_BUTTON_TEXT_RIGHT "RIGHT" -#define EXIT_BUTTON_TEXT "OFF" -#define MENU_BUTTON_TEXT "SELECT" -#define COUNTER_BUTTON_TEXT "ON" - +#define MODE_NEXT_BUTTON BUTTON_RIGHT +#define MODE_PREV_BUTTON BUTTON_LEFT #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) - #define COUNTER_TOGGLE_BUTTON (BUTTON_PLAY|BUTTON_REL) #define COUNTER_RESET_BUTTON (BUTTON_PLAY|BUTTON_REPEAT) #define MENU_BUTTON BUTTON_SELECT #define EXIT_BUTTON BUTTON_MENU -#define MOVE_UP_BUTTON BUTTON_SCROLL_BACK -#define MOVE_DOWN_BUTTON BUTTON_SCROLL_FWD -#define CHANGE_UP_BUTTON BUTTON_RIGHT -#define CHANGE_DOWN_BUTTON BUTTON_LEFT - -#define YESTEXT "Select" -#define NAVI_BUTTON_TEXT_LEFT "LEFT" -#define NAVI_BUTTON_TEXT_RIGHT "RIGHT" -#define EXIT_BUTTON_TEXT "MENU" -#define MENU_BUTTON_TEXT "SELECT" -#define COUNTER_BUTTON_TEXT "PLAY" - +#define MODE_NEXT_BUTTON BUTTON_RIGHT +#define MODE_PREV_BUTTON BUTTON_LEFT #elif (CONFIG_KEYPAD == IRIVER_H300_PAD) - #define COUNTER_TOGGLE_BUTTON (BUTTON_ON|BUTTON_REL) #define COUNTER_RESET_BUTTON (BUTTON_ON|BUTTON_REPEAT) #define MENU_BUTTON BUTTON_SELECT #define EXIT_BUTTON BUTTON_OFF -#define MOVE_UP_BUTTON BUTTON_UP -#define MOVE_DOWN_BUTTON BUTTON_DOWN -#define CHANGE_UP_BUTTON BUTTON_RIGHT -#define CHANGE_DOWN_BUTTON BUTTON_LEFT - +#define MODE_NEXT_BUTTON BUTTON_RIGHT +#define MODE_PREV_BUTTON BUTTON_LEFT #define EXIT_RC_BUTTON BUTTON_RC_STOP - -#define YESTEXT "Select/Navi" -#define NAVI_BUTTON_TEXT_LEFT "LEFT" -#define NAVI_BUTTON_TEXT_RIGHT "RIGHT" -#define EXIT_BUTTON_TEXT "STOP" -#define MENU_BUTTON_TEXT "NAVI" -#define COUNTER_BUTTON_TEXT "PLAY" - #elif (CONFIG_KEYPAD == IAUDIO_X5_PAD) - #define COUNTER_TOGGLE_BUTTON (BUTTON_PLAY|BUTTON_REL) #define COUNTER_RESET_BUTTON (BUTTON_PLAY|BUTTON_REPEAT) #define MENU_BUTTON BUTTON_SELECT #define EXIT_BUTTON BUTTON_POWER -#define MOVE_UP_BUTTON BUTTON_UP -#define MOVE_DOWN_BUTTON BUTTON_DOWN -#define CHANGE_UP_BUTTON BUTTON_RIGHT -#define CHANGE_DOWN_BUTTON BUTTON_LEFT - -#define YESTEXT "Select" -#define NAVI_BUTTON_TEXT_LEFT "LEFT" -#define NAVI_BUTTON_TEXT_RIGHT "RIGHT" -#define EXIT_BUTTON_TEXT "POWER" -#define MENU_BUTTON_TEXT "SELECT" -#define COUNTER_BUTTON_TEXT "PLAY" - +#define MODE_NEXT_BUTTON BUTTON_RIGHT +#define MODE_PREV_BUTTON BUTTON_LEFT #elif (CONFIG_KEYPAD == SANSA_E200_PAD) - #define COUNTER_TOGGLE_BUTTON BUTTON_UP #define COUNTER_RESET_BUTTON BUTTON_DOWN #define MENU_BUTTON BUTTON_SELECT #define EXIT_BUTTON BUTTON_POWER -#define MOVE_UP_BUTTON BUTTON_SCROLL_UP -#define MOVE_DOWN_BUTTON BUTTON_SCROLL_DOWN -#define CHANGE_UP_BUTTON BUTTON_RIGHT -#define CHANGE_DOWN_BUTTON BUTTON_LEFT - -#define YESTEXT "Select" -#define NAVI_BUTTON_TEXT_LEFT "LEFT" -#define NAVI_BUTTON_TEXT_RIGHT "RIGHT" -#define EXIT_BUTTON_TEXT "POWER" -#define MENU_BUTTON_TEXT "PLAY" -#define COUNTER_BUTTON_TEXT "PLAY" - - - +#define MODE_NEXT_BUTTON BUTTON_RIGHT +#define MODE_PREV_BUTTON BUTTON_LEFT #elif (CONFIG_KEYPAD == IRIVER_H10_PAD) - #define COUNTER_TOGGLE_BUTTON (BUTTON_PLAY|BUTTON_REL) #define COUNTER_RESET_BUTTON (BUTTON_PLAY|BUTTON_REPEAT) #define MENU_BUTTON BUTTON_REW #define EXIT_BUTTON BUTTON_POWER -#define MOVE_UP_BUTTON BUTTON_SCROLL_UP -#define MOVE_DOWN_BUTTON BUTTON_SCROLL_DOWN -#define CHANGE_UP_BUTTON BUTTON_RIGHT -#define CHANGE_DOWN_BUTTON BUTTON_LEFT - -#define YESTEXT "Select" -#define NAVI_BUTTON_TEXT_LEFT "LEFT" -#define NAVI_BUTTON_TEXT_RIGHT "RIGHT" -#define EXIT_BUTTON_TEXT "POWER" -#define MENU_BUTTON_TEXT "PLAY" -#define COUNTER_BUTTON_TEXT "PLAY" - +#define MODE_NEXT_BUTTON BUTTON_RIGHT +#define MODE_PREV_BUTTON BUTTON_LEFT #elif (CONFIG_KEYPAD == GIGABEAT_PAD) - #define COUNTER_TOGGLE_BUTTON (BUTTON_SELECT|BUTTON_REL) #define COUNTER_RESET_BUTTON (BUTTON_SELECT|BUTTON_REPEAT) #define MENU_BUTTON BUTTON_MENU #define EXIT_BUTTON BUTTON_A -#define MOVE_UP_BUTTON BUTTON_UP -#define MOVE_DOWN_BUTTON BUTTON_DOWN -#define CHANGE_UP_BUTTON BUTTON_RIGHT -#define CHANGE_DOWN_BUTTON BUTTON_LEFT - -#define YESTEXT "Select" -#define NAVI_BUTTON_TEXT_LEFT "LEFT" -#define NAVI_BUTTON_TEXT_RIGHT "RIGHT" -#define EXIT_BUTTON_TEXT "A" -#define MENU_BUTTON_TEXT "CENTER" -#define COUNTER_BUTTON_TEXT "CENTER" - +#define MODE_NEXT_BUTTON BUTTON_RIGHT +#define MODE_PREV_BUTTON BUTTON_LEFT #endif /************ * Prototypes ***********/ -void show_clock_logo(bool animate, bool show_clock_text); -void exit_logo(void); void save_settings(bool interface); /******************** @@ -282,512 +322,209 @@ int passed_time = 0; int counter = 0; int displayed_value = 0; int count_h, count_m, count_s; -char count_text[8]; bool counting = false; -bool counting_up = true; -int target_hour=0, target_minute=0, target_second=0; -int remaining_h=0, remaining_m=0, remaining_s=0; -bool editing_target = false; - -/********************* - * Used to center text - ********************/ -char buf[20]; -int buf_w, buf_h; /******************** * Everything else... *******************/ -int menupos = 1; bool idle_poweroff = true; /* poweroff activated or not? */ - -/* This bool is used for most of the while loops */ -bool done = false; +bool done = false; /* used for most of the while loops */ +bool exit_clock = false; /* when true, the main plugin loop will exit */ static struct plugin_api* rb; -/*********************************************************** - * Used for hands to define lengths at a given time - ANALOG - **********************************************************/ +/*********************************************************************** + * Used for hands to define lengths at a given time, analog + fullscreen + **********************************************************************/ unsigned int xminute[61]; unsigned int yminute[61]; unsigned int yhour[61]; unsigned int xhour[61]; - -/************************************************************** - * Used for hands to define lengths at a give time - FULLSCREEN - *************************************************************/ -unsigned int xminute_full[61] = { -56,58,61,65,69,74,79,84,91,100,110,110,110,110,110,110,110,110,110,110,110,100, -91,84,79,74,69,65,61,58,56,54,51,47,43,38,33,28,21,12,1,1,1,1,1,1,1,1,1,1,1,12, -21,28,33,38,43,47,51,54 }; -unsigned int yminute_full[61] = { -62,62,62,62,62,62,62,62,62,62,62,53,45,40,36,32,28,24,19,11,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,11,19,24,28,32,36,40,45,53,62,62,62,62,62,62,62,62,62,62 }; -unsigned int xhour_full[61] = { -56,58,60,63,66,69,73,78,84,91,100,100,100,100,100,100,100,100,100,100,100,91,84, -78,73,69,66,63,60,58,56,54,52,49,46,43,39,34,28,21,12,12,12,12,12,12,12,12,12, -12,12,21,28,34,39,43,46,49,52,54 }; -unsigned int yhour_full[61] = { -52,52,52,52,52,52,52,52,52,52,52,46,41,37,34,32,30,27,23,18,12,12,12,12,12,12, -12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,18,23,27,30,32,34,37,41,46,52,52, -52,52,52,52,52,52,52,52 }; - -/**************************** - * BITMAPS - ****************************/ -/************************* - * "0" bitmap - for binary - ************************/ -static const unsigned char bitmap_0[] = { -0xc0, 0xf0, 0x3c, 0x0e, 0x06, 0x03, 0x03, 0x03, 0x03, 0x06, 0x0e, 0x3c, 0xf0, -0xc0, 0x00, 0x1f, 0x7f, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, -0xe0, 0x7f, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, -0x03, 0x03, 0x01, 0x00, 0x00, 0x00 }; -/************************* - * "1" bitmap - for binary - ************************/ -static const unsigned char bitmap_1[] = { -0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x07, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x00 }; -/********************************** - * Empty circle bitmap - for binary - *********************************/ -const unsigned char circle_empty[] = { -0xf0, 0x0c, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x0c, -0xf0, 0x03, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, -0x0c, 0x03 }; -/********************************* - * Full circle bitmap - for binary - ********************************/ -const unsigned char circle_full[] = { -0xf0, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfc, -0xf0, 0x03, 0x0f, 0x1f, 0x1f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x1f, 0x1f, -0x0f, 0x03 }; - -/******************************* - * Colon bitmap - for plain mode - ******************************/ -static const unsigned char plain_colon[] = { -0x00, 0x00, 0x00, 0x00, 0x00, -0x1e, 0x3f, 0x3f, 0x3f, 0x1e, -0x80, 0xc0, 0xc0, 0xc0, 0x80, -0x07, 0x0f, 0x0f, 0x0f, 0x07 }; -/***************************** - * "0" bitmap - for plain mode - ****************************/ -const unsigned char plain_0[] = { -0x00, 0xe0, 0xf8, 0xfc, 0xfe, 0x1e, 0x0f, 0x07, 0x07, 0x07, 0x0f, 0x1f, 0x7e, -0xfc, 0xfc, 0xf0, 0x80, -0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xff, 0xff, 0xff, 0xff, -0x0f, 0xff, 0xff, 0xff, 0xf0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf0, -0xff, 0xff, 0x7f, 0x0f, -0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x0f, 0x0e, 0x0e, 0x0e, 0x0f, 0x07, 0x07, -0x03, 0x01, 0x00, 0x00 }; -/***************************** - * "1" bitmap - for plain mode - ****************************/ -const unsigned char plain_1[] = { -0x00, 0x00, 0xc0, 0xe0, 0xe0, 0xf0, 0x78, 0xf8, 0xfc, 0xfe, 0xff, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00 }; -/***************************** - * "2" bitmap - for plain mode - ****************************/ -const unsigned char plain_2[] = { -0x18, 0x3c, 0x1e, 0x0e, 0x0f, 0x07, 0x07, 0x07, 0x07, 0x0f, 0x1e, 0xfe, 0xfc, -0xf8, 0xf0, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xf0, 0xfc, 0xff, 0x3f, -0x0f, 0x03, 0x00, 0x00, -0x00, 0x00, 0x80, 0xc0, 0xf0, 0xf8, 0xfe, 0x7f, 0x1f, 0x07, 0x03, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, -0x0c, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e }; -/***************************** - * "3" bitmap - for plain mode - ****************************/ -const unsigned char plain_3[] = { -0x00, 0x04, 0x0e, 0x0e, 0x0f, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0f, 0x1e, 0xfe, -0xfc, 0xf8, 0xf0, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0x70, 0xf8, 0xdc, 0xdf, -0x8f, 0x87, 0x01, 0x00, -0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, -0xff, 0xff, 0xff, 0x7c, -0x02, 0x07, 0x07, 0x0f, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x07, 0x07, -0x07, 0x03, 0x01, 0x00 }; -/***************************** - * "4" bitmap - for plain mode - ****************************/ -const unsigned char plain_4[] = { -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xf0, 0xf8, 0xfc, 0xfe, -0xff, 0x00, 0x00, 0x00, -0x00, 0x80, 0xe0, 0xf0, 0x78, 0x3c, 0x1f, 0x07, 0x03, 0x01, 0xff, 0xff, 0xff, -0xff, 0x00, 0x00, 0x00, -0x0f, 0x0f, 0x0f, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0xff, 0xff, 0xff, -0xff, 0x0e, 0x0e, 0x0e, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, -0x0f, 0x00, 0x00, 0x00 }; -/***************************** - * "5" bitmap - for plain mode - ****************************/ -const unsigned char plain_5[] = { -0x00, 0xff, 0xff, 0xff, 0xff, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x00, -0x00, 0x1f, 0x3f, 0x1f, 0x1f, 0x0c, 0x0e, 0x0e, 0x0e, 0x0e, 0x1e, 0x1e, 0x7c, -0xfc, 0xf8, 0xf0, 0xc0, -0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, -0xff, 0xff, 0xff, 0x3f, -0x02, 0x07, 0x07, 0x0f, 0x0f, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x07, 0x07, -0x03, 0x01, 0x00, 0x00 }; -/***************************** - * "6" bitmap - for plain mode - ****************************/ -const unsigned char plain_6[] = { -0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0xf8, 0x7c, 0x3e, 0x1e, 0x0f, 0x07, 0x02, -0x00, 0x00, 0x00, 0x00, -0xf0, 0xfc, 0xff, 0xff, 0xff, 0x73, 0x39, 0x38, 0x38, 0x38, 0x38, 0x78, 0xf0, -0xf0, 0xe0, 0xc0, 0x00, -0x1f, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, -0xff, 0xff, 0xff, 0x7f, -0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x07, -0x07, 0x03, 0x01, 0x00 }; -/***************************** - * "7" bitmap - for plain mode - ****************************/ -const unsigned char plain_7[] = { -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xc7, 0xf7, 0xff, -0xff, 0x7f, 0x1f, 0x07, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf8, 0xff, 0xff, 0x1f, 0x07, -0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x80, 0xe0, 0xfc, 0xff, 0x7f, 0x1f, 0x03, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00 }; -/***************************** - * "8" bitmap - for plain mode - ****************************/ -const unsigned char plain_8[] = { -0x00, 0xf0, 0xfc, 0xfe, 0xfe, 0x0f, 0x07, 0x07, 0x07, 0x07, 0x0f, 0x0f, 0xfe, -0xfe, 0xfc, 0xf0, 0x00, -0x00, 0x81, 0xc3, 0xef, 0xef, 0xff, 0x7e, 0x3c, 0x38, 0x78, 0xfc, 0xfe, 0xff, -0xcf, 0x87, 0x01, 0x00, -0x7e, 0xff, 0xff, 0xff, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, -0xff, 0xff, 0xff, 0x7e, -0x00, 0x01, 0x03, 0x07, 0x07, 0x0f, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x07, -0x07, 0x03, 0x01, 0x00 }; -/***************************** - * "9" bitmap - for plain mode - ****************************/ -const unsigned char plain_9[] = { -0xe0, 0xf8, 0xfc, 0xfe, 0x3e, 0x0f, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0e, 0x3e, -0xfc, 0xf8, 0xf0, 0x80, -0x0f, 0x3f, 0x7f, 0xff, 0xf8, 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, 0xf0, -0xff, 0xff, 0xff, 0xff, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x81, 0xc1, 0xe1, 0xf9, 0xfc, 0x7f, -0x3f, 0x0f, 0x03, 0x00, -0x00, 0x00, 0x00, 0x00, 0x04, 0x0e, 0x0f, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00 }; - -/********************** - * Digital colon bitmap - *********************/ -const unsigned char digital_colon[] = { -0x04, 0x0e, 0x1f, 0x0e, 0x04 }; - -/******************************************** - * Used to define current bitmap - PLAIN MODE - *******************************************/ -const char *plain_bitmaps[] = { -plain_0, plain_1, plain_2, plain_3, plain_4, plain_5, plain_6, -plain_7, plain_8, plain_9 }; - -/************** - * PM indicator - *************/ -static const unsigned char pm[] = { -0xFF,0xFF,0x33,0x33,0x33,0x1E,0x0C,0x00,0xFF,0xFF,0x06,0x0C,0x06,0xFF,0xFF }; -/************** - * AM Indicator - *************/ -static const unsigned char am[] = { -0xFE,0xFF,0x1B,0x1B,0xFF,0xFE,0x00,0x00,0xFF,0xFF,0x06,0x0C,0x06,0xFF,0xFF }; - -/************** - * Arrow bitmap - *************/ -static const unsigned char arrow[] = { -0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x1E, 0x0C }; - -/*************************** - * Unchecked checkbox bitmap - **************************/ -const unsigned char checkbox_empty[] = { -0x3F, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3F }; -/***************************** - * 1/3 checked checkbox bitmap - ****************************/ -const unsigned char checkbox_onethird[] = { -0x3F, 0x2B, 0x35, 0x21, 0x21, 0x21, 0x21, 0x3F }; -/***************************** - * 1/2 checked checkbox bitmap - ****************************/ -const unsigned char checkbox_half[] = { -0x3F, 0x2B, 0x35, 0x2B, 0x21, 0x21, 0x21, 0x3F }; -/***************************** - * 2/3 checked checkbox bitmap - ****************************/ -const unsigned char checkbox_twothird[] = { -0x3F, 0x2B, 0x35, 0x2B, 0x35, 0x21, 0x21, 0x3F }; -/************************* - * Checked checkbox bitmap - ************************/ -const unsigned char checkbox_full[] = { -0x3F, 0x2B, 0x35, 0x2B, 0x35, 0x2B, 0x35, 0x3F }; - -/********************* - * Clock logo (112x37) - ********************/ -extern const unsigned char clock_logo[]; // Should be LCD_WIDTH x (LCD_HEIGHT-28) - -/****************** - * Time's Up bitmap - *****************/ -const unsigned char timesup[] = { -0x78, 0x78, 0x78, 0x38, 0x08, 0x08, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x04, -0x04, 0x04, 0x0c, 0x3c, 0x3c, 0x3c, 0x04, 0x04, 0x04, 0xfc, 0xfc, 0xfc, 0xfc, -0xfe, 0xfe, 0x06, 0x03, 0x03, 0x05, 0x05, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, -0xfc, 0xfc, 0xf8, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0xfc, 0xfc, -0xfc, 0xfc, 0xfc, 0x20, 0x22, 0x22, 0x22, 0x22, 0x02, 0x02, 0x02, 0x02, 0x0e, -0xfe, 0xfe, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0e, 0x1c, 0x3c, 0x3c, -0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xfc, 0xfc, 0xfc, 0xfe, 0x00, -0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0xfe, 0xfe, 0xfe, -0x86, 0x0e, 0x3e, 0xfe, 0xfe, 0xfe, 0xfe, 0x1e, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x40, -0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, -0x03, 0x0f, 0x3f, 0xff, 0xff, 0xfc, 0xf0, 0xfc, 0xff, 0x7f, 0x1f, 0x03, 0xff, -0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xff, 0xff, 0xff, 0xff, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0e, 0x0e, 0x0e, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x40, -0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0xe0, 0xe0, 0xe3, 0xc7, 0x8f, 0x0f, -0x1f, 0x1f, 0x3e, 0xfe, 0xfc, 0xf8, 0xf8, 0xf0, -0x08, 0x08, 0x08, 0x08, 0x18, 0x18, 0x1f, 0x1f, 0x1f, 0x1f, 0x0f, 0x0f, 0x0c, -0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0c, 0x08, 0x08, 0x88, 0x80, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, -0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x07, 0x01, 0x10, 0x18, 0x1c, 0x0f, -0x0f, 0x0f, 0x0f, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0c, -0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1c, 0x1c, -0x1c, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0e, 0x0c, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x03, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xc8, 0xf8, 0xf8, 0xf8, 0x18, 0x08, -0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0x60, 0x60, 0xe0, 0xe0, -0xe0, 0xe0, 0xa0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc0, 0xc0, 0xe0, 0xf1, -0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, -0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3f, 0x7f, 0xff, 0xff, 0xf0, -0xe0, 0xc0, 0xc0, 0xc0, 0xe0, 0xf0, 0xf0, 0x7c, 0x7f, 0x3f, 0x07, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0xe4, 0xff, 0xff, 0xff, 0xc0, 0x80, 0x80, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, -0xe1, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x02, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +unsigned int xminute_full[61]; +unsigned int yminute_full[61]; +unsigned int xhour_full[61]; +unsigned int yhour_full[61]; /* settings are saved to this location */ static const char default_filename[] = "/.rockbox/rocks/.clock_settings"; -/* names of contributors */ -const char* credits[] = { -"Zakk Roberts", -"Linus Feltzing", -"BlueChip", -"T.P. Diffenbach", -"David McIntyre", -"Justin Young", -"Lee Pilgrim", -"top_bloke", -"Karl Kurbjun", -"Adam Spirer", -"Scott Myran", -"Tony Kirk", -"Jason Tye" }; - -/* ...and how they helped */ -const char* jobs[] = { -"Code", -"Code", -"Code", -"Code", -"Code", -"Code", -"Code", -"Code", -"Code", -"Pre-3.0 Logo", -"Design", -"Design", -"Design" }; - /********************************************************* * Some arrays/definitions for drawing settings/menu text. - * Modes are abbreviated to one letter i.e. "analog" = "a" ********************************************************/ -#define analog_digits_text "Digits" -const char* analog_date_text[] = { -"Date: Off", -"Date: American", -"Date: European" }; -#define analog_secondhand_text "Second Hand" -const char* analog_time_text[] = { -"Show Time: Off", -"Show Time: 24hr", -"Show Time: 12hr", }; -const char* digital_seconds_text[] = { -"Seconds: Off", -"Seconds: Digital", -"Seconds: Bar", -"Seconds: Inverse" }; -const char* digital_date_text[] = { -"Date: Off", -"Date: American", -"Date: European" }; -#define digital_blinkcolon_text "Blinking Colon" -#define digital_12h_text "12-Hour Format" -const char* lcd_seconds_text[] = { -"Seconds: Off", -"Seconds: Digital", -"Seconds: Bar", -"Seconds: Inverse" }; -const char* lcd_date_text[] = { -"Date: Off", -"Date: American", -"Date: European" }; -#define lcd_blinkcolon_text "Blinking Colon" -#define lcd_12h_text "12-Hour Format" -#define fullscreen_border_text "Show Border" -#define fullscreen_secondhand_text "Second Hand" -#define fullscreen_invertseconds_text "Invert Seconds" -#define binary_dots_text "Dot Mode" -#define plain_12h_text "12-Hour Format" -const char* plain_date_text[] = { -"Date: Off", -"Date: American", -"Date: European" }; -#define plain_blinkcolon_text "Blinking Colon" -const char* menu_entries[] = { -"View Clock", -"Mode Selector", -"Counter Settings", -"Mode Settings", -"General Settings", -"Help", -"Credits" }; -const char* mode_selector_entries[] = { -"Analog", -"Digital", -"LCD", -"Fullscreen", -"Binary", -"Plain" }; -#define general_reset_text "Reset Settings" -#define general_save_text "Save Settings" -#define general_counter_text "Show Counter" -const char* general_savesetting_text[] = { -"Save: Manually", -"Save: on Exit", -"Save: Automatic" }; -#define general_idle_text "Idle Poweroff" -const char* general_backlight_text[] = { -"Backlight: Off", -"Backlight: RB", -"Backlight: On" }; +#define ANALOG 1 +#define DIGITAL 2 +#define FULLSCREEN 3 +#define BINARY 4 +#define PLAIN 5 +#define CLOCK_MODES 5 -#define ANALOG_SETTINGS 4 -#define DIGITAL_SETTINGS 4 -#define LCD_SETTINGS 4 -#define FULLSCREEN_SETTINGS 3 -#define BINARY_SETTINGS 1 -#define PLAIN_SETTINGS 3 -#define GENERAL_SETTINGS 4 - -#define analog_digits 0 -#define analog_date 1 -#define analog_secondhand 2 -#define analog_time 3 +#define analog_date 0 +#define analog_secondhand 1 +#define analog_time 2 #define digital_seconds 0 #define digital_date 1 #define digital_blinkcolon 2 -#define digital_12h 3 -#define lcd_seconds 0 -#define lcd_date 1 -#define lcd_blinkcolon 2 -#define lcd_12h 3 +#define digital_format 3 #define fullscreen_border 0 #define fullscreen_secondhand 1 -#define fullscreen_invertseconds 2 -#define binary_dots 0 -#define plain_12h 0 -#define plain_date 1 -#define plain_blinkcolon 2 +#define binary_mode 0 +#define plain_format 0 +#define plain_seconds 1 +#define plain_date 2 +#define plain_blinkcolon 3 #define general_counter 0 #define general_savesetting 1 #define general_backlight 2 -/*********************************** - * This is saved to default_filename - **********************************/ +/* Menu structs (lists of menu items) */ +static const struct menu_item main_menu_items[] = { + { "View Clock", NULL }, + { "Mode Selector", NULL }, + { "Mode Settings", NULL }, + { "General Settings", NULL }, + { "Exit Plugin", NULL } +}; +static const struct menu_item mode_selector_items[] = { + { "Analog", NULL }, + { "Digital/LCD", NULL }, + { "Full-screen", NULL }, + { "Binary", NULL }, + { "Plain", NULL } +}; +static const struct menu_item general_settings_items[] = { + { "Reset Settings", NULL }, + { "Save Settings Now", NULL }, + { "Save On Exit", NULL }, + { "Show Counter", NULL }, + { "Backlight Settings", NULL }, + { "Idle Poweroff (temporary)", NULL } +}; +static const struct menu_item analog_items[] = { + { "Show Date", NULL }, + { "Show Second Hand", NULL }, + { "Show Time Readout", NULL } +}; +static const struct menu_item digital_items[] = { + { "Show Seconds", NULL }, + { "Show Date", NULL }, + { "Blinking Colon", NULL }, + { "Time Format", NULL } +}; +static const struct menu_item fullscreen_items[] = { + { "Show Border", NULL }, + { "Show Second Hand", NULL } +}; +static const struct menu_item binary_items[] = { + { "Display Mode", NULL } +}; +static const struct menu_item plain_items[] = { + { "Show Date", NULL }, + { "Show Seconds", NULL }, + { "Blinking Colon", NULL }, + { "Time Format", NULL } +}; + +/* Option structs (possible selections per each option) */ +static const struct opt_items noyes_text[2] = { + { "No", -1 }, + { "Yes", -1 } +}; +static const struct opt_items saving_options_text[2] = { + { "No", -1 }, + { "Yes", -1 } +}; +static const struct opt_items show_counter_text[2] = { + { "No", -1 }, + { "Yes", -1 } +}; +static const struct opt_items backlight_settings_text[3] = { + { "Always Off", -1 }, + { "Rockbox setting", -1 }, + { "Always On", -1 } +}; +static const struct opt_items idle_poweroff_text[2] = { + { "Disabled", -1 }, + { "Enabled", -1 } +}; +static const struct opt_items counting_direction_text[2] = { + {"Down", -1}, + {"Up", -1} +}; +static const struct opt_items analog_date_text[3] = { + { "No", -1 }, + { "American format", -1 }, + { "European format", -1 } +}; +static const struct opt_items analog_secondhand_text[2] = { + { "No", -1 }, + { "Yes", -1 } +}; +static const struct opt_items analog_time_text[3] = { + { "No", -1 }, + { "24-hour Format", -1 }, + { "12-hour Format", -1 } +}; +static const struct opt_items digital_seconds_text[2] = { + { "No", -1 }, + { "Yes", -1 } +}; +static const struct opt_items digital_date_text[3] = { + { "No", -1 }, + { "American format", -1 }, + { "European format", -1 } +}; +static const struct opt_items digital_blinkcolon_text[2] = { + { "No", -1 }, + { "Yes", -1 } +}; +static const struct opt_items digital_format_text[2] = { + { "24-hour Format", -1 }, + { "12-hour Format", -1 } +}; +static const struct opt_items fullscreen_border_text[2] = { + { "No", -1 }, + { "Yes", -1 } +}; +static const struct opt_items fullscreen_secondhand_text[2] = { + { "No", -1 }, + { "Yes", -1 } +}; +static const struct opt_items binary_mode_text[2] = { + { "Numbers", -1 }, + { "Dots", -1 } +}; +static const struct opt_items plain_date_text[3] = { + { "No", -1 }, + { "American format", -1 }, + { "European format", -1 } +}; +static const struct opt_items plain_seconds_text[3] = { + { "No", -1 }, + { "Yes", -1 } +}; +static const struct opt_items plain_blinkcolon_text[2] = { + { "No", -1 }, + { "Yes", -1 } +}; +static const struct opt_items plain_format_text[3] = { + { "24-hour Format", -1 }, + { "12-hour Format", -1 } +}; + +/***************************************** + * All settings, saved to default_filename + ****************************************/ struct saved_settings { - /* general */ - int clock; /* 1: analog, 2: digital, 3: lcd, 4: full, 5: binary, 6: plain */ - int general[GENERAL_SETTINGS]; - int analog[ANALOG_SETTINGS]; - int digital[DIGITAL_SETTINGS]; - int lcd[LCD_SETTINGS]; - int fullscreen[FULLSCREEN_SETTINGS]; - int binary[BINARY_SETTINGS]; - int plain[PLAIN_SETTINGS]; + int clock; /* clock mode */ + int general[4]; /* general settings*/ + int analog[3]; + int digital[4]; + int fullscreen[2]; + int binary[1]; + int plain[4]; } settings; -int analog_max[ANALOG_SETTINGS] = {1, 2, 1, 2}; -int digital_max[DIGITAL_SETTINGS] = {3, 2, 1, 1}; -#define fullscreen_max 1 -#define binary_max 1 -int plain_max[PLAIN_SETTINGS] = {1, 2, 1}; -int general_max[GENERAL_SETTINGS] = {1, 2, 2, 1}; - /************************ * Setting default values ***********************/ @@ -797,22 +534,17 @@ void reset_settings(void) settings.general[general_counter] = 1; settings.general[general_savesetting] = 1; settings.general[general_backlight] = 2; - settings.analog[analog_digits] = false; settings.analog[analog_date] = 0; settings.analog[analog_secondhand] = true; settings.analog[analog_time] = false; settings.digital[digital_seconds] = 1; settings.digital[digital_date] = 1; settings.digital[digital_blinkcolon] = false; - settings.digital[digital_12h] = true; - settings.lcd[lcd_seconds] = 1; - settings.lcd[lcd_date] = 1; - settings.lcd[lcd_blinkcolon] = false; - settings.lcd[lcd_12h] = true; + settings.digital[digital_format] = true; settings.fullscreen[fullscreen_border] = true; settings.fullscreen[fullscreen_secondhand] = true; - settings.fullscreen[fullscreen_invertseconds] = false; - settings.plain[plain_12h] = true; + settings.plain[plain_format] = true; + settings.plain[plain_seconds] = true; settings.plain[plain_date] = 1; settings.plain[plain_blinkcolon] = false; } @@ -831,11 +563,12 @@ static const short sin_table[91] = 14188, 14329, 14466, 14598, 14725, 14848, 14967, 15081, 15190, 15295, 15395, 15491, 15582, 15668, 15749, 15825, 15897, 15964, 16025, 16082, 16135, 16182, 16224, 16261, 16294, 16321, 16344, 16361, 16374, 16381, - 16384 }; + 16384 +}; -/****************************** - * Sine function (from plasma.c - *****************************/ +/******************************* + * Sine function (from plasma.c) + ******************************/ static short sin(int val) { /* value should be between 0 and 360 degree for correct lookup*/ @@ -861,14 +594,49 @@ static short sin(int val) return 0; } -/******************************** - * Simple function to center text - *******************************/ -void center_text(int y, char* text) +/************************************************************** + * Simple function to check if we're switching to digital mode, + * and if so, set bg/fg colors appropriately. + *************************************************************/ +void set_digital_colors(void) { - rb->snprintf(buf, sizeof(buf), "%s", text); - rb->lcd_getstringsize(buf, &buf_w, &buf_h); - rb->lcd_putsxy(LCDWIDTH/2 - buf_w/2, y, text); +#ifdef HAVE_LCD_COLOR /* color LCDs.. */ + if(settings.clock == DIGITAL) + { + rb->lcd_set_foreground(LCD_WHITE); + rb->lcd_set_background(LCD_BLACK); + } + else + { + rb->lcd_set_foreground(LCD_BLACK); + rb->lcd_set_background(LCD_RGBPACK(180,200,230)); + } +#elif LCD_DEPTH >= 2 + if(settings.clock == DIGITAL) + { + rb->lcd_set_foreground(LCD_WHITE); + rb->lcd_set_background(LCD_BLACK); + } + else + { + rb->lcd_set_foreground(LCD_BLACK); + rb->lcd_set_background(LCD_WHITE); + } +#endif +} + +/************************************************************* + * Simple function to set standard black-on-light blue colors. + ************************************************************/ +void set_standard_colors(void) +{ +#ifdef HAVE_LCD_COLOR /* color LCDs only.. */ + rb->lcd_set_foreground(LCD_BLACK); + rb->lcd_set_background(LCD_RGBPACK(180,200,230)); +#elif LCD_DEPTH >= 2 + rb->lcd_set_foreground(LCD_BLACK); + rb->lcd_set_background(LCD_WHITE); +#endif } /************************** @@ -885,6 +653,23 @@ void cleanup(void *parameter) rb->backlight_set_timeout(rb->global_settings->backlight_timeout); } +/**************** + * Shows the logo + ***************/ +void show_clock_logo(void) +{ +#ifdef HAVE_LCD_COLOR + rb->lcd_set_foreground(LCD_BLACK); + rb->lcd_set_background(LCD_RGBPACK(180,200,230)); +#endif + + rb->lcd_clear_display();; + + rb->lcd_bitmap(clock_logo, 0, 0, LOGO_WIDTH, LOGO_HEIGHT); + + rb->lcd_update(); +} + /******************************** * Saves "saved_settings" to disk *******************************/ @@ -895,10 +680,9 @@ void save_settings(bool interface) if(interface) { rb->lcd_clear_display(); + show_clock_logo(); - /* display information */ - center_text(56, "Saving Settings"); - show_clock_logo(true, true); + draw_message(MESSAGE_SAVING, 1); rb->lcd_update(); } @@ -913,9 +697,9 @@ void save_settings(bool interface) if(interface) { rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); - rb->lcd_fillrect(0, LCD_HEIGHT-8, LCD_WIDTH, 8); + rb->lcd_fillrect(0, LCD_HEIGHT-MESSAGE_HEIGHT, LCD_WIDTH, MESSAGE_HEIGHT); rb->lcd_set_drawmode(DRMODE_SOLID); - center_text(LCD_HEIGHT-8, "Saved Settings"); + draw_message(MESSAGE_SAVED, 1); } } else /* couldn't save for some reason */ @@ -923,19 +707,16 @@ void save_settings(bool interface) if(interface) { rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); - rb->lcd_fillrect(0, LCD_HEIGHT-8, LCD_WIDTH, 8); + rb->lcd_fillrect(0, LCD_HEIGHT-MESSAGE_HEIGHT, LCD_WIDTH, MESSAGE_HEIGHT); rb->lcd_set_drawmode(DRMODE_SOLID); - center_text(LCD_HEIGHT-8, "Save Failed!"); + draw_message(MESSAGE_ERRSAVE, 1); } } if(interface) { rb->lcd_update(); - rb->sleep(HZ); /* pause a second */ - - exit_logo(); } } @@ -948,10 +729,11 @@ void load_settings(void) int fd; fd = rb->open(default_filename, O_RDONLY); - center_text(LCD_HEIGHT-16, "Clock " CLOCK_VERSION); - center_text(LCD_HEIGHT-8, "Loading Settings"); + rb->lcd_clear_display(); + show_clock_logo(); + + draw_message(MESSAGE_LOADING, 1); - show_clock_logo(true, true); rb->lcd_update(); if(fd >= 0) /* does file exist? */ @@ -962,27 +744,27 @@ void load_settings(void) rb->close(fd); rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); - rb->lcd_fillrect(0, LCD_HEIGHT-8, LCD_WIDTH, 8); + rb->lcd_fillrect(0, LCD_HEIGHT-MESSAGE_HEIGHT, LCD_WIDTH, MESSAGE_HEIGHT); rb->lcd_set_drawmode(DRMODE_SOLID); - center_text(LCD_HEIGHT-8, "Loaded Settings"); + draw_message(MESSAGE_LOADED, 1); } else /* must be invalid, bail out */ { rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); - rb->lcd_fillrect(0, LCD_HEIGHT-8, LCD_WIDTH, 8); + rb->lcd_fillrect(0, LCD_HEIGHT-MESSAGE_HEIGHT, LCD_WIDTH, MESSAGE_HEIGHT); rb->lcd_set_drawmode(DRMODE_SOLID); - center_text(LCD_HEIGHT-8, "Old Settings File"); + draw_message(MESSAGE_ERRLOAD, 1); + reset_settings(); } } else /* must be missing, bail out */ { rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); - rb->lcd_fillrect(0, LCD_HEIGHT-8, LCD_WIDTH, 8); + rb->lcd_fillrect(0, LCD_HEIGHT-MESSAGE_HEIGHT, LCD_WIDTH, MESSAGE_HEIGHT); rb->lcd_set_drawmode(DRMODE_SOLID); - center_text(LCD_HEIGHT-8, "No Settings File"); + draw_message(MESSAGE_ERRLOAD, 1); - /* use the default in this case */ reset_settings(); } @@ -993,8 +775,6 @@ void load_settings(void) #endif rb->sleep(HZ); - - exit_logo(); } /******************************* @@ -1006,7 +786,7 @@ void init_clock(void) #define ANALOG_YCENTER (LCD_HEIGHT/2) #define ANALOG_XCENTER (LCD_WIDTH/2) #define ANALOG_MIN_RADIUS MIN(LCD_HEIGHT/2 -10, LCD_WIDTH/2 -10) - #define ANALOG_HR_RADIUS (ANALOG_MIN_RADIUS-8) + #define ANALOG_HR_RADIUS ((2 * ANALOG_MIN_RADIUS)/3) #define PI 3.141592 int i; @@ -1025,43 +805,53 @@ void init_clock(void) for(i=0; i> 14) + ANALOG_XCENTER; + yminute[i] = ((sin(360*i/ ANALOG_VALUES-90) + * ANALOG_MIN_RADIUS) >> 14) + ANALOG_YCENTER; + xhour[i] = ((sin(360 * i / ANALOG_VALUES) + * ANALOG_HR_RADIUS) >> 14) + ANALOG_XCENTER; + yhour[i] = ((sin(360 * i / ANALOG_VALUES-90) + * ANALOG_HR_RADIUS) >> 14) + ANALOG_YCENTER; /* Fullscreen initialization */ if(i==0) { - xminute_full[i]=LCD_WIDTH/2; - yminute_full[i]=1; + xminute_full[i] = LCD_WIDTH/2; + xhour_full[i] = LCD_WIDTH/2; + yminute_full[i] = 1; + yhour_full[i] = LCD_HEIGHT/6; } else if(i<10 || (i>50 && i <60) ) { xminute_full[i] = xminute_full[i-1]+LCD_WIDTH/20; + xhour_full[i] = xhour_full[i-1]+(LCD_WIDTH/30); yminute_full[i] = 1; + yhour_full[i] = LCD_HEIGHT/6; } else if (i>=10 && i < 20) { xminute_full[i] = LCD_WIDTH-2; - yminute_full[i] = (i-10)*LCD_HEIGHT/10; + xhour_full[i] = (5*LCD_WIDTH)/6; + yminute_full[i] = ((i-10)*LCD_HEIGHT)/10; + yhour_full[i] = (LCD_HEIGHT/6)+((i-10)*(LCD_HEIGHT))/15; } else if(i>=20&&i<40) { - xminute_full[i] = (40-i)*LCD_WIDTH/20; - yminute_full[i] = LCD_HEIGHT- 2; - + xminute_full[i] = ((40-i)*LCD_WIDTH)/20; + xhour_full[i] = (LCD_WIDTH/6)+((40-i)*(LCD_WIDTH))/30; + yminute_full[i] = LCD_HEIGHT-2; + yhour_full[i] = (5*LCD_HEIGHT)/6; + } else { xminute_full[i] = 1; - yminute_full[i] = (50-i)*LCD_HEIGHT/10; + xhour_full[i] = LCD_WIDTH/6; + yminute_full[i] = ((50-i)*LCD_HEIGHT)/10; + yhour_full[i] = LCD_HEIGHT/6 + ((50-i)*LCD_HEIGHT)/15; } } } @@ -1071,339 +861,132 @@ void init_clock(void) ******************/ void analog_clock(int hour, int minute, int second) { - int pos, i; - - /* Second hand */ - if(settings.analog[analog_secondhand]) - { - pos = 90-second; - if(pos >= 60) - pos -= 60; - - rb->lcd_drawline((LCDWIDTH/2), (LCDHEIGHT/2), - xminute[pos], yminute[pos]); - } - - pos = 90-minute; - if(pos >= 60) - pos -= 60; - - /* Minute hand, thicker than the second hand */ - rb->lcd_drawline(LCDWIDTH/2, LCDHEIGHT/2, - xminute[pos], yminute[pos]); - rb->lcd_drawline(LCDWIDTH/2-1, LCDHEIGHT/2-1, - xminute[pos], yminute[pos]); - rb->lcd_drawline(LCDWIDTH/2+1, LCDHEIGHT/2+1, - xminute[pos], yminute[pos]); - rb->lcd_drawline(LCDWIDTH/2-1, LCDHEIGHT/2+1, - xminute[pos], yminute[pos]); - rb->lcd_drawline(LCDWIDTH/2+1, LCDHEIGHT/2-1, - xminute[pos], yminute[pos]); - if(hour > 12) hour -= 12; - hour = (hour*5) + (minute/12); - pos = 90-hour; - if(pos >= 60) - pos -= 60; + int i; + int hourpos = (hour*5) + (minute/12); - /* Hour hand, thick as the minute hand but shorter */ - rb->lcd_drawline(LCDWIDTH/2, LCDHEIGHT/2, - xhour[pos], yhour[pos]); - rb->lcd_drawline(LCDWIDTH/2-1, LCDHEIGHT/2-1, - xhour[pos], yhour[pos]); - rb->lcd_drawline(LCDWIDTH/2+1, LCDHEIGHT/2+1, - xhour[pos], yhour[pos]); - rb->lcd_drawline(LCDWIDTH/2-1, LCDHEIGHT/2+1, - xhour[pos], yhour[pos]); - rb->lcd_drawline(LCDWIDTH/2+1, LCDHEIGHT/2-1, - xhour[pos], yhour[pos]); + /* Crappy fake antialiasing (color LCDs only)! + * how this works is we draw a large mid-gray hr/min/sec hand, + * then the actual (slightly smaller) hand on top of those. + * End result: mid-gray edges to the black hands, smooths them out. */ +#ifdef HAVE_LCD_COLOR + rb->lcd_set_foreground(LCD_RGBPACK(100,110,125)); + + /* second hand */ + if(settings.analog[analog_secondhand]) + { + xlcd_filltriangle(LCD_WIDTH/2, LCD_HEIGHT/2-2, LCD_WIDTH/2, LCD_HEIGHT/2+2, + xminute[second], yminute[second]); + xlcd_filltriangle(LCD_WIDTH/2-2, LCD_HEIGHT/2, LCD_WIDTH/2+2, LCD_HEIGHT/2, + xminute[second], yminute[second]); + } + + /* minute hand */ + xlcd_filltriangle(LCD_WIDTH/2, LCD_HEIGHT/2-4, LCD_WIDTH/2, LCD_HEIGHT/2+4, + xminute[minute], yminute[minute]); + xlcd_filltriangle(LCD_WIDTH/2-4, LCD_HEIGHT/2, LCD_WIDTH/2+4, LCD_HEIGHT/2, + xminute[minute], yminute[minute]); + + /* hour hand */ + xlcd_filltriangle(LCD_WIDTH/2, LCD_HEIGHT/2-4, LCD_WIDTH/2, LCD_HEIGHT/2+4, + xhour[hourpos], yhour[hourpos]); + xlcd_filltriangle(LCD_WIDTH/2-4, LCD_HEIGHT/2, LCD_WIDTH/2+4, LCD_HEIGHT/2, + xhour[hourpos], yhour[hourpos]); + + rb->lcd_set_foreground(LCD_BLACK); +#endif + + /* second hand, if needed */ + if(settings.analog[analog_secondhand]) + { + xlcd_filltriangle(LCD_WIDTH/2, LCD_HEIGHT/2-1, LCD_WIDTH/2, LCD_HEIGHT/2+1, + xminute[second], yminute[second]); + xlcd_filltriangle(LCD_WIDTH/2-1, LCD_HEIGHT/2, LCD_WIDTH/2+1, LCD_HEIGHT/2, + xminute[second], yminute[second]); + } + + /* minute hand */ + xlcd_filltriangle(LCD_WIDTH/2, LCD_HEIGHT/2-HAND_W, LCD_WIDTH/2, + LCD_HEIGHT/2+HAND_W, xminute[minute], yminute[minute]); + xlcd_filltriangle(LCD_WIDTH/2-HAND_W, LCD_HEIGHT/2, LCD_WIDTH/2 + +HAND_W, LCD_HEIGHT/2, xminute[minute], yminute[minute]); + + /* hour hand */ + xlcd_filltriangle(LCD_WIDTH/2, LCD_HEIGHT/2-HAND_W, LCD_WIDTH/2, + LCD_HEIGHT/2+HAND_W, xhour[hourpos], yhour[hourpos]); + xlcd_filltriangle(LCD_WIDTH/2-HAND_W, LCD_HEIGHT/2, LCD_WIDTH/2 + +HAND_W, LCD_HEIGHT/2, xhour[hourpos], yhour[hourpos]); /* Draw the circle */ for(i=0; i < 60; i+=5) rb->lcd_fillrect(xminute[i]-1, yminute[i]-1, 3, 3); /* Draw the cover over the center */ - rb->lcd_drawline((LCDWIDTH/2)-1, (LCDHEIGHT/2)+3, - (LCDWIDTH/2)+1, (LCDHEIGHT/2)+3); - rb->lcd_drawline((LCDWIDTH/2)-3, (LCDHEIGHT/2)+2, - (LCDWIDTH/2)+3, (LCDHEIGHT/2)+2); - rb->lcd_drawline((LCDWIDTH/2)-4, (LCDHEIGHT/2)+1, - (LCDWIDTH/2)+4, (LCDHEIGHT/2)+1); - rb->lcd_drawline((LCDWIDTH/2)-4, LCDHEIGHT/2, - (LCDWIDTH/2)+4, LCDHEIGHT/2); - rb->lcd_drawline((LCDWIDTH/2)-4, (LCDHEIGHT/2)-1, - (LCDWIDTH/2)+4, (LCDHEIGHT/2)-1); - rb->lcd_drawline((LCDWIDTH/2)-3, (LCDHEIGHT/2)-2, - (LCDWIDTH/2)+3, (LCDHEIGHT/2)-2); - rb->lcd_drawline((LCDWIDTH/2)-1, (LCDHEIGHT/2)-3, - (LCDWIDTH/2)+1, (LCDHEIGHT/2)-3); + rb->lcd_drawline((LCD_WIDTH/2)-1, (LCD_HEIGHT/2)+3, + (LCD_WIDTH/2)+1, (LCD_HEIGHT/2)+3); + rb->lcd_drawline((LCD_WIDTH/2)-3, (LCD_HEIGHT/2)+2, + (LCD_WIDTH/2)+3, (LCD_HEIGHT/2)+2); + rb->lcd_drawline((LCD_WIDTH/2)-4, (LCD_HEIGHT/2)+1, + (LCD_WIDTH/2)+4, (LCD_HEIGHT/2)+1); + rb->lcd_drawline((LCD_WIDTH/2)-4, LCD_HEIGHT/2, + (LCD_WIDTH/2)+4, LCD_HEIGHT/2); + rb->lcd_drawline((LCD_WIDTH/2)-4, (LCD_HEIGHT/2)-1, + (LCD_WIDTH/2)+4, (LCD_HEIGHT/2)-1); + rb->lcd_drawline((LCD_WIDTH/2)-3, (LCD_HEIGHT/2)-2, + (LCD_WIDTH/2)+3, (LCD_HEIGHT/2)-2); + rb->lcd_drawline((LCD_WIDTH/2)-1, (LCD_HEIGHT/2)-3, + (LCD_WIDTH/2)+1, (LCD_HEIGHT/2)-3); } -/************************************************************* - * 7-Segment LED/LCD imitation code, by Linus Nielsen Feltzing - ************************************************************/ -/* - a 0 b - #########c - # #` - # # - 1# #2 - # # - # 3 # - c ######### d - # # - # # - 4# #5 - # # - # 6 # - e ######### f -*/ -static unsigned int point_coords[6][2] = +/******************** + * Digital clock mode + *******************/ +void digital_clock(int hour, int minute, int second, bool colon) { - {0, 0}, /* a */ - {1, 0}, /* b */ - {0, 1}, /* c */ - {1, 1}, /* d */ - {0, 2}, /* e */ - {1, 2} /* f */ -}; + int x_ofs=0; -/******************************************** - * The end points (a-f) for each segment line - *******************************************/ -static unsigned int seg_points[7][2] = -{ - {0,1}, /* a to b */ - {0,2}, /* a to c */ - {1,3}, /* b to d */ - {2,3}, /* c to d */ - {2,4}, /* c to e */ - {3,5}, /* d to f */ - {4,5} /* e to f */ -}; + /* this basically detects if we draw an AM or PM bitmap. + * if we don't, we center the hh:mm display. */ + if(!settings.digital[digital_format]) + x_ofs=DIGIT_WIDTH/2; -/********************************************************************** - * Lists that tell which segments (0-6) to enable for each digit (0-9), - * the list is terminated with -1 - *********************************************************************/ -static int digit_segs[10][8] = -{ - {0,1,2,4,5,6, -1}, /* 0 */ - {2,5, -1}, /* 1 */ - {0,2,3,4,6, -1}, /* 2 */ - {0,2,3,5,6, -1}, /* 3 */ - {1,2,3,5, -1}, /* 4 */ - {0,1,3,5,6, -1}, /* 5 */ - {0,1,3,4,5,6, -1}, /* 6 */ - {0,2,5, -1}, /* 7 */ - {0,1,2,3,4,5,6, -1}, /* 8 */ - {0,1,2,3,5,6, -1} /* 9 */ -}; +#if LCD_DEPTH == 1 + rb->lcd_fillrect(0,0,112,64); +#endif -/*********************************** - * Draws one segment - LED imitation - **********************************/ -void draw_seg_led(int seg, int x, int y, int width, int height) -{ - int p1 = seg_points[seg][0]; - int p2 = seg_points[seg][1]; - int x1 = point_coords[p1][0]; - int y1 = point_coords[p1][1]; - int x2 = point_coords[p2][0]; - int y2 = point_coords[p2][1]; - - /* It draws parallel lines of different lengths for thicker segments */ - if(seg == 0 || seg == 3 || seg == 6) + if(settings.digital[digital_format]) { - rb->lcd_drawline(x + x1 * width + 1, y + y1 * height / 2, - x + x2 * width - 1 , y + y2 * height / 2); - - rb->lcd_drawline(x + x1 * width + 2, y + y1 * height / 2 - 1, - x + x2 * width - 2, y + y2 * height / 2 - 1); - rb->lcd_drawline(x + x1 * width + 2, y + y1 * height / 2 + 1, - x + x2 * width - 2, y + y2 * height / 2 + 1); - - rb->lcd_drawline(x + x1 * width + 3, y + y1 * height / 2 - 2, - x + x2 * width - 3, y + y2 * height / 2 - 2); - rb->lcd_drawline(x + x1 * width + 3, y + y1 * height / 2 + 2, - x + x2 * width - 3, y + y2 * height / 2 + 2); - } - else - { - rb->lcd_drawline(x + x1 * width, y + y1 * height / 2 + 1, - x + x2 * width , y + y2 * height / 2 - 1); - - rb->lcd_drawline(x + x1 * width - 1, y + y1 * height / 2 + 2, - x + x2 * width - 1, y + y2 * height / 2 - 2); - rb->lcd_drawline(x + x1 * width + 1, y + y1 * height / 2 + 2, - x + x2 * width + 1, y + y2 * height / 2 - 2); - - rb->lcd_drawline(x + x1 * width - 2, y + y1 * height / 2 + 3, - x + x2 * width - 2, y + y2 * height / 2 - 3); - - rb->lcd_drawline(x + x1 * width + 2, y + y1 * height / 2 + 3, - x + x2 * width + 2, y + y2 * height / 2 - 3); - } -} - -/*********************************** - * Draws one segment - LCD imitation - **********************************/ -void draw_seg_lcd(int seg, int x, int y, int width, int height) -{ - int p1 = seg_points[seg][0]; - int p2 = seg_points[seg][1]; - int x1 = point_coords[p1][0]; - int y1 = point_coords[p1][1]; - int x2 = point_coords[p2][0]; - int y2 = point_coords[p2][1]; - - if(seg == 0) - { - rb->lcd_drawline(x + x1 * width, y + y1 * height / 2 - 1, - x + x2 * width, y + y2 * height / 2 - 1); - rb->lcd_drawline(x + x1 * width + 1, y + y1 * height / 2, - x + x2 * width - 1, y + y2 * height / 2); - rb->lcd_drawline(x + x1 * width + 2, y + y1 * height / 2 + 1, - x + x2 * width - 2, y + y2 * height / 2 + 1); - rb->lcd_drawline(x + x1 * width + 3, y + y1 * height / 2 + 2, - x + x2 * width - 3, y + y2 * height / 2 + 2); - } - else if(seg == 3) - { - rb->lcd_drawline(x + x1 * width + 1, y + y1 * height / 2, - x + x2 * width - 1, y + y2 * height / 2); - rb->lcd_drawline(x + x1 * width + 2, y + y1 * height / 2 - 1, - x + x2 * width - 2, y + y2 * height / 2 - 1); - rb->lcd_drawline(x + x1 * width + 2, y + y1 * height / 2 + 1, - x + x2 * width - 2, y + y2 * height / 2 + 1); - rb->lcd_drawline(x + x1 * width + 3, y + y1 * height / 2 - 2, - x + x2 * width - 3, y + y2 * height / 2 - 2); - rb->lcd_drawline(x + x1 * width + 3, y + y1 * height / 2 + 2, - x + x2 * width - 3, y + y2 * height / 2 + 2); - } - else if(seg == 6) - { - rb->lcd_drawline(x + x1 * width, y + y1 * height / 2 + 1, - x + x2 * width, y + y2 * height / 2 + 1); - rb->lcd_drawline(x + x1 * width + 1, y + y1 * height / 2, - x + x2 * width - 1, y + y2 * height / 2); - rb->lcd_drawline(x + x1 * width + 2, y + y1 * height / 2 - 1, - x + x2 * width - 2, y + y2 * height / 2 - 1); - rb->lcd_drawline(x + x1 * width + 3, y + y1 * height / 2 - 2, - x + x2 * width - 3, y + y2 * height / 2 - 2); - - } - else if(seg == 1 || seg == 4) - { - rb->lcd_drawline(x + x1 * width - 1, y + y1 * height / 2, - x + x2 * width - 1, y + y2 * height / 2); - rb->lcd_drawline(x + x1 * width, y + y1 * height / 2 + 1, - x + x2 * width, y + y2 * height / 2 - 1); - rb->lcd_drawline(x + x1 * width + 1, y + y1 * height / 2 + 2, - x + x2 * width + 1, y + y2 * height / 2 - 2); - rb->lcd_drawline(x + x1 * width + 2, y + y1 * height / 2 + 3, - x + x2 * width + 2, y + y2 * height / 2 - 3); - } - else if(seg == 2 || seg == 5) - { - rb->lcd_drawline(x + x1 * width + 1, y + y1 * height / 2, - x + x2 * width + 1, y + y2 * height / 2); - rb->lcd_drawline(x + x1 * width, y + y1 * height / 2 + 1, - x + x2 * width, y + y2 * height / 2 - 1); - rb->lcd_drawline(x + x1 * width - 1, y + y1 * height / 2 + 2, - x + x2 * width - 1, y + y2 * height / 2 - 2); - rb->lcd_drawline(x + x1 * width - 2, y + y1 * height / 2 + 3, - x + x2 * width - 2, y + y2 * height / 2 - 3); - } -} - -/***************** - * Draws one digit - ****************/ -void draw_7seg_digit(int digit, int x, int y, int width, int height, bool lcd_display) -{ - int i; - int c; - - for(i = 0;digit_segs[digit][i] >= 0;i++) - { - c = digit_segs[digit][i]; - - if(!lcd_display) - draw_seg_led(c, x, y, width, height); + /* draw the AM or PM bitmap */ + if(hour<12) + draw_segment(SEGMENT_AM,DIGIT_XOFS(6)+DIGIT_WIDTH*5, 0); else - draw_seg_lcd(c, x, y, width, height); - } -} + draw_segment(SEGMENT_PM,DIGIT_XOFS(6)+DIGIT_WIDTH*5, 0); -/***************************************************** - * Draws the entire 7-segment hour-minute time display - ****************************************************/ -void draw_7seg_time(int hour, int minute, int x, int y, int width, int height, -bool colon, bool lcd) -{ - int xpos = x; - - /* Draw AM/PM indicator */ - if(settings.clock == DIGITAL) - { - if(settings.digital[digital_12h]) - { - if(hour > 12) - rb->lcd_mono_bitmap(pm, 97, LCD_HEIGHT-9, 15, 8); - else - rb->lcd_mono_bitmap(am, 1, LCD_HEIGHT-9, 15, 8); - } - } - else - { - if(settings.lcd[lcd_12h]) - { - if(hour > 12) - rb->lcd_mono_bitmap(pm, 97, LCD_HEIGHT-9, 15, 8); - else - rb->lcd_mono_bitmap(am, 1, LCD_HEIGHT-9, 15, 8); - } + /* and then readjust the hour to 12-hour format + * ( 13:00+ -> 1:00+ ) */ + if(hour>12) + hour -= 12; } - /* Now change to 12H mode if requested */ - if(settings.clock == DIGITAL) - { - if(settings.digital[digital_12h]) - { - if(hour >= 12) - hour -= 12; - } - } - else - { - if(settings.lcd[lcd_12h]) - { - if(hour >= 12) - hour -= 12; - } - } - - draw_7seg_digit(hour / 10, xpos, y, width, height, lcd); - xpos += width + 6; - draw_7seg_digit(hour % 10, xpos, y, width, height, lcd); - xpos += width + 6; + /* hour */ + draw_segment(hour/10, DIGIT_XOFS(6)+x_ofs, 0); + draw_segment(hour%10, DIGIT_XOFS(6)+DIGIT_WIDTH+x_ofs, 0); + /* colon */ if(colon) + draw_segment(COLON, DIGIT_XOFS(6)+2*DIGIT_WIDTH+x_ofs, 0); + + /* minutes */ + draw_segment(minute/10, DIGIT_XOFS(6)+3*DIGIT_WIDTH+x_ofs, 0); + draw_segment(minute%10, DIGIT_XOFS(6)+4*DIGIT_WIDTH+x_ofs, 0); + + if(settings.digital[digital_seconds]) { - rb->lcd_mono_bitmap(digital_colon, xpos, y + height-height/3, 5, 5); - rb->lcd_mono_bitmap(digital_colon, xpos, y + height/3, 5, 5); + draw_segment(second/10, DIGIT_XOFS(2), DIGIT_HEIGHT); + draw_segment(second%10, DIGIT_XOFS(2)+DIGIT_WIDTH, DIGIT_HEIGHT); } - - xpos += 12; - - draw_7seg_digit(minute / 10, xpos, y, width, height, lcd); - xpos += width + 6; - draw_7seg_digit(minute % 10, xpos, y, width, height, lcd); - xpos += width + 6; } /*********************** @@ -1411,65 +994,83 @@ bool colon, bool lcd) **********************/ void fullscreen_clock(int hour, int minute, int second) { - int pos; - - /* Second hand */ - if(settings.fullscreen[fullscreen_secondhand]) - { - pos = second; - - rb->lcd_drawline((LCDWIDTH/2), (LCDHEIGHT/2), - xminute_full[pos], yminute_full[pos]); - } - - pos = minute; - - /* Minute hand, thicker than the second hand */ - rb->lcd_drawline(LCDWIDTH/2, LCDHEIGHT/2, - xminute_full[pos], yminute_full[pos]); - rb->lcd_drawline(LCDWIDTH/2-1, LCDHEIGHT/2-1, - xminute_full[pos], yminute_full[pos]); - rb->lcd_drawline(LCDWIDTH/2+1, LCDHEIGHT/2+1, - xminute_full[pos], yminute_full[pos]); - rb->lcd_drawline(LCDWIDTH/2-1, LCDHEIGHT/2+1, - xminute_full[pos], yminute_full[pos]); - rb->lcd_drawline(LCDWIDTH/2+1, LCDHEIGHT/2-1, - xminute_full[pos], yminute_full[pos]); - if(hour > 12) hour -= 12; - hour = hour*5 + minute/12; - pos = 90-hour; - if(pos >= 60) - pos -= 60; + int i; + int hourpos = (hour*5) + (minute/12); - /* Hour hand, thick as the minute hand but shorter */ - rb->lcd_drawline(LCDWIDTH/2, LCDHEIGHT/2, xhour_full[pos], yhour_full[pos]); - rb->lcd_drawline(LCDWIDTH/2-1, LCDHEIGHT/2-1, - xhour_full[pos], yhour_full[pos]); - rb->lcd_drawline(LCDWIDTH/2+1, LCDHEIGHT/2+1, - xhour_full[pos], yhour_full[pos]); - rb->lcd_drawline(LCDWIDTH/2-1, LCDHEIGHT/2+1, - xhour_full[pos], yhour_full[pos]); - rb->lcd_drawline(LCDWIDTH/2+1, LCDHEIGHT/2-1, - xhour_full[pos], yhour_full[pos]); + /* Crappy fake antialiasing (color LCDs only)! + * how this works is we draw a large mid-gray hr/min/sec hand, + * then the actual (slightly smaller) hand on top of those. + * End result: mid-gray edges to the black hands, smooths them out. */ +#ifdef HAVE_LCD_COLOR + rb->lcd_set_foreground(LCD_RGBPACK(100,110,125)); + + /* second hand */ + if(settings.analog[analog_secondhand]) + { + xlcd_filltriangle(LCD_WIDTH/2, LCD_HEIGHT/2-2, LCD_WIDTH/2, LCD_HEIGHT/2+2, + xminute_full[second], yminute_full[second]); + xlcd_filltriangle(LCD_WIDTH/2-2, LCD_HEIGHT/2, LCD_WIDTH/2+2, LCD_HEIGHT/2, + xminute_full[second], yminute_full[second]); + } + + /* minute hand */ + xlcd_filltriangle(LCD_WIDTH/2, LCD_HEIGHT/2-4, LCD_WIDTH/2, LCD_HEIGHT/2+4, + xminute_full[minute], yminute_full[minute]); + xlcd_filltriangle(LCD_WIDTH/2-4, LCD_HEIGHT/2, LCD_WIDTH/2+4, LCD_HEIGHT/2, + xminute_full[minute], yminute_full[minute]); + + /* hour hand */ + xlcd_filltriangle(LCD_WIDTH/2, LCD_HEIGHT/2-4, LCD_WIDTH/2, LCD_HEIGHT/2+4, + xhour_full[hourpos], yhour_full[hourpos]); + xlcd_filltriangle(LCD_WIDTH/2-4, LCD_HEIGHT/2, LCD_WIDTH/2+4, LCD_HEIGHT/2, + xhour_full[hourpos], yhour_full[hourpos]); + + rb->lcd_set_foreground(LCD_BLACK); +#endif + + /* second hand, if needed */ + if(settings.analog[analog_secondhand]) + { + xlcd_filltriangle(LCD_WIDTH/2, LCD_HEIGHT/2-1, LCD_WIDTH/2, LCD_HEIGHT/2+1, + xminute_full[second], yminute_full[second]); + xlcd_filltriangle(LCD_WIDTH/2-1, LCD_HEIGHT/2, LCD_WIDTH/2+1, LCD_HEIGHT/2, + xminute_full[second], yminute_full[second]); + } + + /* minute hand */ + xlcd_filltriangle(LCD_WIDTH/2, LCD_HEIGHT/2-3, LCD_WIDTH/2, LCD_HEIGHT/2+3, + xminute_full[minute], yminute_full[minute]); + xlcd_filltriangle(LCD_WIDTH/2-3, LCD_HEIGHT/2, LCD_WIDTH/2+3, LCD_HEIGHT/2, + xminute_full[minute], yminute_full[minute]); + + /* hour hand */ + xlcd_filltriangle(LCD_WIDTH/2, LCD_HEIGHT/2-3, LCD_WIDTH/2, LCD_HEIGHT/2+3, + xhour_full[hourpos], yhour_full[hourpos]); + xlcd_filltriangle(LCD_WIDTH/2-3, LCD_HEIGHT/2, LCD_WIDTH/2+3, LCD_HEIGHT/2, + xhour_full[hourpos], yhour_full[hourpos]); + + /* Draw the circle */ + for(i=0; i < 60; i+=5) + rb->lcd_fillrect(xminute_full[i]-1, yminute_full[i]-1, 3, 3); /* Draw the cover over the center */ - rb->lcd_drawline((LCDWIDTH/2)-1, (LCDHEIGHT/2)+3, - (LCDWIDTH/2)+1, (LCDHEIGHT/2)+3); - rb->lcd_drawline((LCDWIDTH/2)-3, (LCDHEIGHT/2)+2, - (LCDWIDTH/2)+3, (LCDHEIGHT/2)+2); - rb->lcd_drawline((LCDWIDTH/2)-4, (LCDHEIGHT/2)+1, - (LCDWIDTH/2)+4, (LCDHEIGHT/2)+1); - rb->lcd_drawline((LCDWIDTH/2)-4, LCDHEIGHT/2, - (LCDWIDTH/2)+4, LCDHEIGHT/2); - rb->lcd_drawline((LCDWIDTH/2)-4, (LCDHEIGHT/2)-1, - (LCDWIDTH/2)+4, (LCDHEIGHT/2)-1); - rb->lcd_drawline((LCDWIDTH/2)-3, (LCDHEIGHT/2)-2, - (LCDWIDTH/2)+3, (LCDHEIGHT/2)-2); - rb->lcd_drawline((LCDWIDTH/2)-1, (LCDHEIGHT/2)-3, - (LCDWIDTH/2)+1, (LCDHEIGHT/2)-3); + rb->lcd_drawline((LCD_WIDTH/2)-1, (LCD_HEIGHT/2)+3, + (LCD_WIDTH/2)+1, (LCD_HEIGHT/2)+3); + rb->lcd_drawline((LCD_WIDTH/2)-3, (LCD_HEIGHT/2)+2, + (LCD_WIDTH/2)+3, (LCD_HEIGHT/2)+2); + rb->lcd_drawline((LCD_WIDTH/2)-4, (LCD_HEIGHT/2)+1, + (LCD_WIDTH/2)+4, (LCD_HEIGHT/2)+1); + rb->lcd_drawline((LCD_WIDTH/2)-4, LCD_HEIGHT/2, + (LCD_WIDTH/2)+4, LCD_HEIGHT/2); + rb->lcd_drawline((LCD_WIDTH/2)-4, (LCD_HEIGHT/2)-1, + (LCD_WIDTH/2)+4, (LCD_HEIGHT/2)-1); + rb->lcd_drawline((LCD_WIDTH/2)-3, (LCD_HEIGHT/2)-2, + (LCD_WIDTH/2)+3, (LCD_HEIGHT/2)-2); + rb->lcd_drawline((LCD_WIDTH/2)-1, (LCD_HEIGHT/2)-3, + (LCD_WIDTH/2)+1, (LCD_HEIGHT/2)-3); } /******************* @@ -1491,18 +1092,18 @@ void binary_clock(int hour, int minute, int second) { if(mode_var[mode] >= i) { - if(settings.binary[binary_dots]) - rb->lcd_mono_bitmap(circle_full, xpos*19, (20*mode)+1, 14, 14); + if(settings.binary[binary_mode]) + draw_digit(DOT_FILLED, xpos*DIGIT_WIDTH+DIGIT_XOFS(6), DIGIT_HEIGHT*mode+DIGIT_YOFS(3)); else - rb->lcd_mono_bitmap(bitmap_1, xpos*19, (20*mode)+1, 15, 20); + draw_digit(1, xpos*DIGIT_WIDTH+DIGIT_XOFS(6), DIGIT_HEIGHT*mode+DIGIT_YOFS(3)); mode_var[mode] -= i; } else { - if(settings.binary[binary_dots]) - rb->lcd_mono_bitmap(circle_empty, xpos*19, (20*mode)+1, 14, 14); + if(settings.binary[binary_mode]) + draw_digit(DOT_EMPTY, xpos*DIGIT_WIDTH+DIGIT_XOFS(6), DIGIT_HEIGHT*mode+DIGIT_YOFS(3)); else - rb->lcd_mono_bitmap(bitmap_0, xpos*19, (20*mode)+1, 15, 20); + draw_digit(0, xpos*DIGIT_WIDTH+DIGIT_XOFS(6), DIGIT_HEIGHT*mode+DIGIT_YOFS(3)); } xpos++; @@ -1517,553 +1118,263 @@ void binary_clock(int hour, int minute, int second) *****************/ void plain_clock(int hour, int minute, int second, bool colon) { - int x_offset=0; - if(settings.plain[plain_12h]) + int x_ofs=0; + + /* this basically detects if we draw an AM or PM bitmap. + * if we don't, we center the hh:mm display. */ + if(!settings.plain[plain_format]) + x_ofs=DIGIT_WIDTH/2; + + if(settings.plain[plain_format]) { - if(hour > 12) - rb->lcd_mono_bitmap(pm, 97, 10, 15, 8); + /* draw the AM or PM bitmap */ + if(hour<12) + draw_digit(ICON_AM, DIGIT_XOFS(6)+(DIGIT_WIDTH*5)+x_ofs, 0); else - rb->lcd_mono_bitmap(am, 97, 10, 15, 8); + draw_digit(ICON_PM, DIGIT_XOFS(6)+(DIGIT_WIDTH*5)+x_ofs, 0); - if(hour > 12) - hour -= 12; - if(hour == 0) - hour = 12; + /* and then readjust the hour to 12-hour format + * ( 13:00+ -> 1:00+ ) */ + if(hour>12) + hour -= 12; } - if(settings.plain[plain_12h]) /* scoot the display over for the am/pm bitmap */ - x_offset = -10; - rb->lcd_mono_bitmap(plain_bitmaps[hour/10], 10+x_offset, 0, 17, 28); - rb->lcd_mono_bitmap(plain_bitmaps[hour%10], 30+x_offset, 0, 17, 28); + draw_digit(hour/10, DIGIT_XOFS(6)+(DIGIT_WIDTH*0)+x_ofs, 0); + draw_digit(hour%10, DIGIT_XOFS(6)+(DIGIT_WIDTH*1)+x_ofs, 0); if(colon) - rb->lcd_mono_bitmap(plain_colon, 50+x_offset, 0, 5, 28); + draw_digit(COLON, DIGIT_XOFS(6)+(DIGIT_WIDTH*2)+x_ofs, 0); - rb->lcd_mono_bitmap(plain_bitmaps[minute/10], 60+x_offset, 0, 17, 28); - rb->lcd_mono_bitmap(plain_bitmaps[minute%10], 80+x_offset, 0, 17, 28); + draw_digit(minute/10, DIGIT_XOFS(6)+(DIGIT_WIDTH*3)+x_ofs, 0); + draw_digit(minute%10, DIGIT_XOFS(6)+(DIGIT_WIDTH*4)+x_ofs, 0); - rb->lcd_mono_bitmap(plain_bitmaps[second/10], 70, 32, 17, 28); - rb->lcd_mono_bitmap(plain_bitmaps[second%10], 90, 32, 17, 28); -} - -/**************** - * Shows the logo - ***************/ -void show_clock_logo(bool animate, bool show_clock_text) -{ - int y_position; - - if(animate) /* animate logo */ + if(settings.plain[plain_seconds]) { - /* move down the screen */ - for(y_position = -74; y_position <= 20; y_position+=(40-y_position)/20) - { - rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); - rb->lcd_fillrect(0, 0, LCD_WIDTH, LCD_HEIGHT-16); - rb->lcd_set_drawmode(DRMODE_SOLID); - rb->lcd_mono_bitmap(clock_logo, 0, y_position/2, BMPWIDTH_clock_logo, BMPHEIGHT_clock_logo); - if(show_clock_text) - center_text(LCD_HEIGHT-16, "Clock " CLOCK_VERSION); - rb->lcd_update(); - } - } - else /* don't animate, just show */ - { - rb->lcd_mono_bitmap(clock_logo, 0, 10, BMPWIDTH_clock_logo, BMPHEIGHT_clock_logo); - if(show_clock_text) - center_text(LCD_HEIGHT-16, "Clock " CLOCK_VERSION); - rb->lcd_update(); + draw_digit(second/10, DIGIT_XOFS(2), DIGIT_HEIGHT); + draw_digit(second%10, DIGIT_XOFS(2)+(DIGIT_WIDTH), DIGIT_HEIGHT); } } -/******************** - * Logo flies off lcd - *******************/ -void exit_logo() +/********************** + * Analog settings menu + *********************/ +void analog_settings_menu(void) { - int y_position; + int m=0, result; - for(y_position = 20; y_position <= LCD_HEIGHT*2; y_position+=y_position/20) - { - rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); - rb->lcd_fillrect(0, 10, LCD_WIDTH, (y_position/2)); - rb->lcd_set_drawmode(DRMODE_SOLID); - rb->lcd_mono_bitmap(clock_logo, 0, y_position/2, BMPWIDTH_clock_logo, BMPHEIGHT_clock_logo); - rb->lcd_update(); - } -} - -/******************* - * Rolls the credits - ******************/ -/* The following function is pretty confusing, so it's extra well commented. */ -bool roll_credits(void) -{ - int j=0, namepos, jobpos; /* namepos/jobpos are x coords for strings of text */ - int offset_dummy; - int btn, pause; - int numnames = 12; /* amount of people in the credits array */ - - /* used to center the text */ - char name[20], job[15]; - int name_w, name_h, job_w, job_h; - int credits_w, credits_h, credits_pos; - int name_targetpos, job_targetpos, credits_targetpos; - - /* shows "[Credits] XX/XX" */ - char elapsednames[16]; - - /* put text into variable, and save the width and height of the text */ - rb->snprintf(elapsednames, sizeof(elapsednames), "[Credits] %02d/%02d", - j+1, numnames); - rb->lcd_getstringsize(elapsednames, &credits_w, &credits_h); - credits_targetpos = (LCDWIDTH/2)-(credits_w/2); - - /* fly in text from the left */ - for(credits_pos = 0 - credits_w; credits_pos <= credits_targetpos; - credits_pos += (credits_targetpos-credits_pos + 14) / 7) - { - rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); - rb->lcd_fillrect(0, 0, LCD_WIDTH, 8); /* clear any trails left behind */ - rb->lcd_drawline(credits_pos-1, 0, credits_pos-1, 8); - rb->lcd_set_drawmode(DRMODE_SOLID); - rb->lcd_putsxy(credits_pos, 0, elapsednames); - rb->lcd_update(); /* update the whole lcd to slow down the loop */ - } - - /* now roll the credits */ - for(j=0; j < numnames; j++) - { - rb->lcd_clear_display(); - - show_clock_logo(false, false); - - rb->snprintf(elapsednames, sizeof(elapsednames), "[Credits] %02d/%02d", - j+1, numnames); - rb->lcd_putsxy(credits_pos-1, 0, elapsednames); - - /* used to center the text */ - rb->snprintf(name, sizeof(name), "%s", credits[j]); - rb->snprintf(job, sizeof(job), "%s", jobs[j]); - rb->lcd_getstringsize(name, &name_w, &name_h); - rb->lcd_getstringsize(job, &job_w, &job_h); - - name_targetpos = -10; - job_targetpos = (LCDWIDTH/2)-(job_w/2)+10; - - /* line 1 flies in */ - for(namepos = 0-name_w; namepos <= name_targetpos; - namepos += (name_targetpos - namepos + 14) / 7) - { - rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); - rb->lcd_fillrect(0, LCD_HEIGHT-16, LCD_WIDTH, 8); /* clear any trails left behind */ - rb->lcd_set_drawmode(DRMODE_SOLID); - rb->lcd_putsxy(namepos, LCD_HEIGHT-16, name); - rb->lcd_update(); - - /* exit on keypress */ - btn = rb->button_get(false); - if (btn != BUTTON_NONE && !(btn & BUTTON_REL)) - return false; - } - - /* line 2 flies in - we use (job_w+2) to ensure it fits on the LCD */ - for(jobpos = LCDWIDTH; jobpos >= job_targetpos; - jobpos -= (jobpos - job_targetpos + 14) / 7, namepos++) - { - rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); - rb->lcd_fillrect(0, LCD_HEIGHT-16, LCD_WIDTH+job_w, 16); /* clear trails */ - rb->lcd_set_drawmode(DRMODE_SOLID); - rb->lcd_putsxy(namepos, LCD_HEIGHT-16, name); - rb->lcd_putsxy(jobpos, LCD_HEIGHT-8, job); - rb->lcd_update(); - - /* exit on keypress */ - btn = rb->button_get(false); - if (btn != BUTTON_NONE && !(btn & BUTTON_REL)) - return false; - } - - /* pause and scan for button presses */ - for(pause = 0; pause < 30; pause++) - { - rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); - rb->lcd_fillrect(0, LCD_HEIGHT-16, LCD_WIDTH, 16); - rb->lcd_set_drawmode(DRMODE_SOLID); - rb->lcd_putsxy(namepos, LCD_HEIGHT-16, name); - rb->lcd_putsxy(jobpos, LCD_HEIGHT-8, job); - rb->lcd_update(); - - btn = rb->button_get(false); - if (btn != BUTTON_NONE && !(btn & BUTTON_REL)) - return false; - - namepos++; - jobpos--; - - rb->sleep(HZ/20); /* slight pause */ - } - - offset_dummy = 1; - - /* fly out both lines at same time */ - while(namepos 0-job_w) - { - rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); - rb->lcd_fillrect(0, LCD_HEIGHT-16, LCD_WIDTH, 16); /* clear trails */ - rb->lcd_set_drawmode(DRMODE_SOLID); - rb->lcd_putsxy(namepos, LCD_HEIGHT-16, name); - rb->lcd_putsxy(jobpos, LCD_HEIGHT-8, job); - rb->lcd_update(); - - /* exit on keypress */ - btn = rb->button_get(false); - if (btn != BUTTON_NONE && !(btn & BUTTON_REL)) - return false; - - namepos += offset_dummy; - jobpos -= offset_dummy; - - offset_dummy++; - } - - /* pause (.5s) */ - rb->sleep(HZ/2); - - /* and scan for button presses */ - btn = rb->button_get(false); - if (btn != BUTTON_NONE && !(btn & BUTTON_REL)) - return false; - } - - offset_dummy = 1; - - /* now make the text exit to the right */ - for(credits_pos = (LCDWIDTH/2)-(credits_w/2); credits_pos <= LCD_WIDTH+10; - credits_pos += offset_dummy, offset_dummy++) - { - rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); - rb->lcd_fillrect(0, 0, LCD_WIDTH, 8); /* clear any trails left behind */ - rb->lcd_fillrect(0, 0, LCD_WIDTH, 8); - rb->lcd_set_drawmode(DRMODE_SOLID); - rb->lcd_putsxy(credits_pos, 0, elapsednames); - rb->lcd_update(); - } - - exit_logo(); - - return true; -} - -/**************************************** - * Shows the logo, then rolls the credits - ***************************************/ -bool show_credits(void) -{ - int j = 0; - int btn; - - rb->lcd_clear_display(); - - center_text(LCD_HEIGHT-8, "Credits"); - - /* show the logo with an animation and the clock version text */ - show_clock_logo(true, true); - - rb->lcd_update(); - - /* pause while button scanning */ - for (j = 0; j < 5; j++) - { - rb->sleep(HZ/5); - - btn = rb->button_get(false); - if (btn != BUTTON_NONE && !(btn & BUTTON_REL)) - return false; - } - - roll_credits(); /* then roll the credits */ - - return false; -} - -/************** - * Draws cursor - *************/ -void cursor(int x, int y, int w, int h) -{ - rb->lcd_set_drawmode(DRMODE_COMPLEMENT); - rb->lcd_fillrect(x, y, w, h); - - rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); - rb->lcd_drawpixel(x, y); - rb->lcd_drawpixel(x+w-1, y); - rb->lcd_drawpixel(x, y+h-1); - rb->lcd_drawpixel(x+w-1, y+h-1); - - rb->lcd_set_drawmode(DRMODE_SOLID); -} - -/************* - * Help screen - ************/ -bool help_screen(void) -{ - int screen = 1; done = false; - while (!done) - { - rb->lcd_clear_display(); - - if(screen == 1) - center_text(56, "------ 1/2 NEXT>>"); - else if(screen == 2) - center_text(56, "<lcd_puts(0, 0, "Help - Clock " CLOCK_VERSION ":"); - rb->lcd_puts(0, 2, "To navigate this"); - rb->lcd_puts(0, 3, "help, use " NAVI_BUTTON_TEXT_LEFT " and"); - rb->lcd_puts(0, 4, NAVI_BUTTON_TEXT_RIGHT ". " - EXIT_BUTTON_TEXT " returns"); - rb->lcd_puts(0, 5, "you to the clock."); - rb->lcd_puts(0, 6, "In any mode, " MENU_BUTTON_TEXT); - } - else if(screen == 2) /* page two */ - { - rb->lcd_puts(0, 0, "will show you the"); - rb->lcd_puts(0, 1, "main menu. " COUNTER_BUTTON_TEXT " will"); - rb->lcd_puts(0, 2, "start/stop counter."); - rb->lcd_puts(0, 3, "Hold " COUNTER_BUTTON_TEXT " to reset"); - rb->lcd_puts(0, 4, "counter. " EXIT_BUTTON_TEXT " exits"); - rb->lcd_puts(0, 5, "any screen or the"); - rb->lcd_puts(0, 6, "clock itself."); - } - - rb->lcd_update(); - - switch(rb->button_get_w_tmo(HZ/4)) - { -#ifdef EXIT_RC_BUTTON - case EXIT_RC_BUTTON: +#ifdef HAVE_LCD_COLOR + rb->lcd_set_background(LCD_RGBPACK(180,200,230)); + rb->lcd_set_foreground(LCD_BLACK); #endif - case EXIT_BUTTON: + + m = rb->menu_init(analog_items, sizeof(analog_items) / sizeof(*analog_items), + NULL, NULL, NULL, NULL); + + while(!done) + { + result = rb->menu_show(m); + + switch(result) + { + case 0: + rb->set_option("Show Date", &settings.analog[analog_date], + INT, analog_date_text, 3, NULL); + break; + case 1: + rb->set_option("Show Second Hand", &settings.analog[analog_secondhand], + INT, analog_secondhand_text, 2, NULL); + break; + case 2: + rb->set_option("Show Time", &settings.analog[analog_time], + INT, analog_time_text, 3, NULL); + break; + + default: done = true; break; + } - case CHANGE_DOWN_BUTTON: - if(screen > 1) - screen --; + rb->menu_exit(m); + } +} + +/*********************** + * Digital settings menu + **********************/ +void digital_settings_menu(void) +{ + int m=0, result; + + done = false; + +#ifdef HAVE_LCD_COLOR + rb->lcd_set_background(LCD_RGBPACK(180,200,230)); + rb->lcd_set_foreground(LCD_BLACK); +#endif + + m = rb->menu_init(digital_items, sizeof(digital_items) / sizeof(*digital_items), + NULL, NULL, NULL, NULL); + + while(!done) + { + result = rb->menu_show(m); + + switch(result) + { + case 0: + rb->set_option("Show Seconds", &settings.digital[digital_seconds], + INT, digital_seconds_text, 2, NULL); + break; + case 1: + rb->set_option("Show Date", &settings.digital[digital_date], + INT, digital_date_text, 3, NULL); + break; + case 2: + rb->set_option("Blinking Colon", &settings.digital[digital_blinkcolon], + INT, digital_blinkcolon_text, 2, NULL); + break; + case 3: + rb->set_option("Time Format", &settings.digital[digital_format], + INT, digital_format_text, 2, NULL); break; - case CHANGE_UP_BUTTON: - if(screen < 2) - screen++; + default: + done = true; break; } - } - return true; -} -/************************* - * Draws a checkbox bitmap - ************************/ -void draw_checkbox(int setting, int startnum, int numsettings, int x, int y) -{ - if(setting) /* checkbox is on */ - rb->lcd_mono_bitmap(checkbox_full, x, y, 8, 6); - else /* checkbox is off */ - rb->lcd_mono_bitmap(checkbox_empty, x, y, 8, 6); - - if(numsettings-startnum == 2) - { - if(setting == 0+startnum) - rb->lcd_mono_bitmap(checkbox_empty, x, y, 8, 6); - else if(setting == 1+startnum) - rb->lcd_mono_bitmap(checkbox_full, x, y, 8, 6); - } - else if(numsettings-startnum == 3) - { - if(setting == 0+startnum) - rb->lcd_mono_bitmap(checkbox_empty, x, y, 8, 6); - else if(setting == 1+startnum) - rb->lcd_mono_bitmap(checkbox_half, x, y, 8, 6); - else if(setting == 2+startnum) - rb->lcd_mono_bitmap(checkbox_full, x, y, 8, 6); - } - else if(numsettings-startnum == 4) - { - if(setting == 0+startnum) - rb->lcd_mono_bitmap(checkbox_empty, x, y, 8, 6); - else if(setting == 1+startnum) - rb->lcd_mono_bitmap(checkbox_onethird, x, y, 8, 6); - else if(setting == 2+startnum) - rb->lcd_mono_bitmap(checkbox_twothird, x, y, 8, 6); - else if(setting == 3+startnum) - rb->lcd_mono_bitmap(checkbox_full, x, y, 8, 6); + rb->menu_exit(m); } } -/************************************** - * Settings screen for the current mode - *************************************/ -void draw_settings(void) +/************************** + * Fullscreen settings menu + *************************/ +void fullscreen_settings_menu(void) { - if(settings.clock == ANALOG) - { - rb->lcd_puts(2, 0, analog_digits_text); - rb->lcd_puts(2, 1, analog_date_text[settings.analog[analog_date]]); - rb->lcd_puts(2, 2, analog_secondhand_text); - rb->lcd_puts(2, 3, analog_time_text[settings.analog[analog_time]]); + int m=0, result; - /* Draw checkboxes */ - draw_checkbox(settings.analog[analog_digits], 0, 1, 1, 1); - draw_checkbox(settings.analog[analog_date], 0, 3, 1, 9); - draw_checkbox(settings.analog[analog_secondhand], 0, 1, 1, 17); - draw_checkbox(settings.analog[analog_time], 0, 3, 1, 25); - } - else if(settings.clock == DIGITAL) - { - rb->lcd_puts(2, 0, digital_seconds_text[settings.digital[digital_seconds]]); - rb->lcd_puts(2, 1, digital_date_text[settings.digital[digital_date]]); - rb->lcd_puts(2, 2, digital_blinkcolon_text); - rb->lcd_puts(2, 3, digital_12h_text); + done = false; - draw_checkbox(settings.digital[digital_seconds], 0, 4, 1, 1); - draw_checkbox(settings.digital[digital_date], 0, 3, 1, 9); - draw_checkbox(settings.digital[digital_blinkcolon], 0, 1, 1, 17); - draw_checkbox(settings.digital[digital_12h], 0, 1, 1, 25); - } - else if(settings.clock == LCD) - { - rb->lcd_puts(2, 0, lcd_seconds_text[settings.lcd[lcd_seconds]]); - rb->lcd_puts(2, 1, lcd_date_text[settings.lcd[lcd_date]]); - rb->lcd_puts(2, 2, lcd_blinkcolon_text); - rb->lcd_puts(2, 3, lcd_12h_text); +#ifdef HAVE_LCD_COLOR + rb->lcd_set_background(LCD_RGBPACK(180,200,230)); + rb->lcd_set_foreground(LCD_BLACK); +#endif - draw_checkbox(settings.lcd[lcd_seconds], 0, 4, 1, 1); - draw_checkbox(settings.lcd[lcd_date], 0, 3, 1, 9); - draw_checkbox(settings.lcd[lcd_blinkcolon], 0, 1, 1, 17); - draw_checkbox(settings.lcd[lcd_12h], 0, 1, 1, 25); - } - else if(settings.clock == FULLSCREEN) - { - rb->lcd_puts(2, 0, fullscreen_border_text); - rb->lcd_puts(2, 1, fullscreen_secondhand_text); - rb->lcd_puts(2, 2, fullscreen_invertseconds_text); + m = rb->menu_init(fullscreen_items, sizeof(fullscreen_items) / sizeof(*fullscreen_items), + NULL, NULL, NULL, NULL); - draw_checkbox(settings.fullscreen[fullscreen_border], 0, 1, 1, 1); - draw_checkbox(settings.fullscreen[fullscreen_secondhand], 0, 1, 1, 9); - draw_checkbox(settings.fullscreen[fullscreen_invertseconds], 0, 1, 1, 17); - } - else if(settings.clock == BINARY) + while(!done) { - rb->lcd_puts(2, 0, binary_dots_text); + result = rb->menu_show(m); - draw_checkbox(settings.binary[binary_dots], 0, 2, 1, 1); - } - else if(settings.clock == PLAIN) - { - rb->lcd_puts(2, 0, plain_12h_text); - rb->lcd_puts(2, 1, plain_date_text[settings.plain[plain_date]]); - rb->lcd_puts(2, 2, plain_blinkcolon_text); + switch(result) + { + case 0: + rb->set_option("Show Border", &settings.fullscreen[fullscreen_border], + INT, fullscreen_border_text, 2, NULL); + break; + case 1: + rb->set_option("Show Second Hand", &settings.fullscreen[fullscreen_secondhand], + INT, fullscreen_secondhand_text, 2, NULL); + break; - draw_checkbox(settings.plain[plain_12h], 0, 1, 1, 1); - draw_checkbox(settings.plain[plain_date], 0, 3, 1, 9); - draw_checkbox(settings.plain[plain_blinkcolon], 0, 1, 1, 17); + default: + done = true; + break; + } + + rb->menu_exit(m); } } -/*********************************** - * Change a given setting up or down - **********************************/ -void change_setting(int setting, int ofs, bool general_settings) +/********************** + * Binary settings menu + *********************/ +void binary_settings_menu(void) { - if(ofs == 1) + int m=0, result; + + done = false; + +#ifdef HAVE_LCD_COLOR + rb->lcd_set_background(LCD_RGBPACK(180,200,230)); + rb->lcd_set_foreground(LCD_BLACK); +#endif + + m = rb->menu_init(binary_items, sizeof(binary_items) / sizeof(*binary_items), + NULL, NULL, NULL, NULL); + + while(!done) { - if(general_settings) + result = rb->menu_show(m); + + switch(result) { - if(settings.general[setting-3] < general_max[setting-3]) - settings.general[setting-3]++; - } - else - { - if(settings.clock == ANALOG) - { - if(settings.analog[setting] < analog_max[setting]) - settings.analog[setting]++; - } - else if(settings.clock == DIGITAL) - { - if(settings.digital[setting] < digital_max[setting]) - settings.digital[setting]++; - } - else if(settings.clock == LCD) - { - if(settings.lcd[setting] < digital_max[setting]) - settings.lcd[setting]++; - } - else if(settings.clock == FULLSCREEN) - { - if(settings.fullscreen[setting] < fullscreen_max) - settings.fullscreen[setting]++; - } - else if(settings.clock == BINARY) - { - if(settings.binary[setting] < binary_max) - settings.binary[setting]++; - } - else if(settings.clock == PLAIN) - { - if(settings.plain[setting] < plain_max[setting]) - settings.plain[setting]++; - } + case 0: + rb->set_option("Display Mode", &settings.binary[binary_mode], + INT, binary_mode_text, 2, NULL); + break; + + default: + done = true; + break; } + + rb->menu_exit(m); } - else if(ofs == -1) +} + +/********************* + * Plain settings menu + ********************/ +void plain_settings_menu(void) +{ + int m=0, result; + + done = false; + +#ifdef HAVE_LCD_COLOR + rb->lcd_set_background(LCD_RGBPACK(180,200,230)); + rb->lcd_set_foreground(LCD_BLACK); +#endif + + m = rb->menu_init(plain_items, sizeof(plain_items) / sizeof(*plain_items), + NULL, NULL, NULL, NULL); + + while(!done) { - if(general_settings) + result = rb->menu_show(m); + + switch(result) { - if(settings.general[setting-3] > 0) - settings.general[setting-3]--; - } - else - { - if(settings.clock == ANALOG) - { - if(settings.analog[setting] > 0) - settings.analog[setting]--; - } - else if(settings.clock == DIGITAL) - { - if(settings.digital[setting] > 0) - settings.digital[setting]--; - } - else if(settings.clock == LCD) - { - if(settings.lcd[setting] > 0) - settings.lcd[setting]--; - } - else if(settings.clock == FULLSCREEN) - { - if(settings.fullscreen[setting] > 0) - settings.fullscreen[setting]--; - } - else if(settings.clock == BINARY) - { - if(settings.binary[setting] > 0) - settings.binary[setting]--; - } - else if(settings.clock == PLAIN) - { - if(settings.plain[setting] > 0) - settings.plain[setting]--; - } + case 0: + rb->set_option("Show Date", &settings.plain[plain_date], + INT, plain_date_text, 3, NULL); + break; + case 1: + rb->set_option("Show Seconds", &settings.plain[plain_seconds], + INT, plain_seconds_text, 2, NULL); + break; + case 2: + rb->set_option("Blinking Colon", &settings.plain[plain_blinkcolon], + INT, plain_blinkcolon_text, 2, NULL); + break; + case 3: + rb->set_option("Time Format", &settings.plain[plain_format], + INT, plain_format_text, 2, NULL); + break; + + default: + done = true; + break; } + + rb->menu_exit(m); } } @@ -2072,79 +1383,21 @@ void change_setting(int setting, int ofs, bool general_settings) *************************************/ void settings_screen(void) { - /* cursor positions */ - int cursorpos=1,cursor_y,cursor_dummy; + set_standard_colors(); - int mode_numsettings[6] = {ANALOG_SETTINGS, DIGITAL_SETTINGS, LCD_SETTINGS, - FULLSCREEN_SETTINGS, BINARY_SETTINGS, PLAIN_SETTINGS}; + if(settings.clock == ANALOG) + analog_settings_menu(); + else if(settings.clock == DIGITAL) + digital_settings_menu(); + else if(settings.clock == FULLSCREEN) + fullscreen_settings_menu(); + else if(settings.clock == BINARY) + binary_settings_menu(); + else if(settings.clock == PLAIN) + plain_settings_menu(); - done = false; + set_digital_colors(); - while (!done) - { - rb->lcd_clear_display(); - - draw_settings(); - - cursor(0, 8*(cursorpos-1), 112, 8); - - switch(rb->button_get_w_tmo(HZ/8)) - { - case MOVE_UP_BUTTON: - if(cursorpos > 1) - { - cursor_y = (8*(cursorpos-1)); - cursor_dummy = cursor_y; - for(; cursor_y>=cursor_dummy-8; cursor_y-=2) - { - rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); - rb->lcd_fillrect(0, 8, LCD_WIDTH, LCD_HEIGHT-8); - rb->lcd_set_drawmode(DRMODE_SOLID); - draw_settings(); - cursor(0, cursor_y, LCD_WIDTH, 8); - rb->lcd_update(); - } - cursorpos--; - } - break; - - case MOVE_DOWN_BUTTON: - if(cursorpos < mode_numsettings[settings.clock-1]) - { - cursor_y = (8*(cursorpos-1)); - cursor_dummy = cursor_y; - for(; cursor_y<=cursor_dummy+8; cursor_y+=2) - { - rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); - rb->lcd_fillrect(0, 8, LCD_WIDTH, LCD_HEIGHT-8); - rb->lcd_set_drawmode(DRMODE_SOLID); - draw_settings(); - cursor(0, cursor_y, LCD_WIDTH, 8); - rb->lcd_update(); - } - cursorpos++; - } - break; - - case CHANGE_DOWN_BUTTON: - change_setting(cursorpos-1, -1, false); - break; - - - case CHANGE_UP_BUTTON: - change_setting(cursorpos-1, 1, false); - break; -#ifdef EXIT_RC_BUTTON - case EXIT_RC_BUTTON: -#endif - case EXIT_BUTTON: - case MENU_BUTTON: - done = true; - break; - } - - rb->lcd_update(); - } } /*********************************************************** @@ -2152,44 +1405,17 @@ void settings_screen(void) **********************************************************/ void confirm_reset(void) { - bool ask_reset_done = false; - char play_text[20]; + int result=0; - rb->snprintf(play_text, sizeof(play_text), "%s = Yes", YESTEXT); + rb->set_option("Reset all settings?", &result, INT, noyes_text, 2, NULL); - while(!ask_reset_done) + if(result == 1) /* reset! */ { - rb->lcd_clear_display(); - - center_text(0, "Reset Settings?"); - rb->lcd_puts(0, 2, play_text); - rb->lcd_puts(0, 3, "Any Other = No"); - - rb->lcd_update(); - - switch(rb->button_get_w_tmo(HZ/4)) - { - case MENU_BUTTON: - reset_settings(); - rb->splash(HZ*2, true, "Settings Reset!"); - ask_reset_done = true; - break; - - case COUNTER_TOGGLE_BUTTON: -#if CONFIG_KEYPAD == RECORDER_PAD /* dupes or plain annoying on the ipod touchpad */ - case MOVE_DOWN_BUTTON: - case MOVE_UP_BUTTON: -#endif - case CHANGE_DOWN_BUTTON: - case CHANGE_UP_BUTTON: -#ifdef EXIT_RC_BUTTON - case EXIT_RC_BUTTON: -#endif - case EXIT_BUTTON: - ask_reset_done = true; - break; - } + reset_settings(); + rb->splash(HZ, true, "Settings reset!"); } + else + rb->splash(HZ, true, "Settings NOT reset."); } /************************************ @@ -2197,149 +1423,62 @@ void confirm_reset(void) ***********************************/ void general_settings(void) { - int cursorpos=1,cursor_y,cursor_dummy; + int m, result; done = false; + set_standard_colors(); + + m = rb->menu_init(general_settings_items, sizeof(general_settings_items) / sizeof(*general_settings_items), + NULL, NULL, NULL, NULL); + while(!done) { - rb->lcd_clear_display(); + result = rb->menu_show(m); - center_text(0, "General Settings"); - rb->lcd_puts(2, 1, general_reset_text); - rb->lcd_puts(2, 2, general_save_text); - rb->lcd_puts(2, 3, general_counter_text); - rb->lcd_puts(2, 4, general_savesetting_text[settings.general[general_savesetting]]); - rb->lcd_puts(2, 5, general_backlight_text[settings.general[general_backlight]]); - rb->lcd_puts(2, 6, general_idle_text); - - rb->lcd_mono_bitmap(arrow, 1, 9, 8, 6); - rb->lcd_mono_bitmap(arrow, 1, 17, 8, 6); - - draw_checkbox(settings.general[general_counter], 0, 1, 1, 25); - draw_checkbox(settings.general[general_savesetting], 0, 3, 1, 33); - draw_checkbox(settings.general[general_backlight], 0, 3, 1, 41); - draw_checkbox(idle_poweroff, 0, 1, 1, 49); - - cursor(0, cursorpos*8, 112, 8); - - rb->lcd_update(); - - switch(rb->button_get_w_tmo(HZ/4)) + switch(result) { -#ifdef EXIT_RC_BUTTON - case EXIT_RC_BUTTON: -#endif - case EXIT_BUTTON: - case MENU_BUTTON: - if(settings.general[general_savesetting] == 2) + case 0: + confirm_reset(); + break; + + case 1: + save_settings(false); + rb->splash(HZ, true, "Settings saved"); + break; + + case 2: + rb->set_option("Save On Exit", &settings.general[general_savesetting], + INT, saving_options_text, 2, NULL); + + /* if we no longer save on exit, we better save now to remember that */ + if(settings.general[general_savesetting] == 0) save_settings(false); - - /* set backlight timeout */ - if(settings.general[general_backlight] == 0) - rb->backlight_set_timeout(-1); - else if(settings.general[general_backlight] == 1) - rb->backlight_set_timeout(rb->global_settings->backlight_timeout); - else if(settings.general[general_backlight] == 2) - rb->backlight_set_timeout(1); - - done = true; break; - case MOVE_UP_BUTTON: - if(cursorpos > 1) - { - cursor_y = 8+(8*(cursorpos-1)); - cursor_dummy = cursor_y; - for(; cursor_y>cursor_dummy-8; cursor_y-=2) - { - rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); - rb->lcd_fillrect(0, 8, LCD_WIDTH, LCD_HEIGHT-8); - rb->lcd_set_drawmode(DRMODE_SOLID); - - rb->lcd_puts(2, 1, general_reset_text); - rb->lcd_puts(2, 2, general_save_text); - rb->lcd_puts(2, 3, general_counter_text); - rb->lcd_puts(2, 4, general_savesetting_text[settings.general[general_savesetting]]); - rb->lcd_puts(2, 5, general_backlight_text[settings.general[general_backlight]]); - rb->lcd_puts(2, 6, general_idle_text); - - rb->lcd_mono_bitmap(arrow, 1, 9, 8, 6); - rb->lcd_mono_bitmap(arrow, 1, 17, 8, 6); - - draw_checkbox(settings.general[general_counter], 0, 1, 1, 25); - draw_checkbox(settings.general[general_savesetting], 0, 3, 1, 33); - draw_checkbox(settings.general[general_backlight], 0, 3, 1, 41); - draw_checkbox(idle_poweroff, 0, 1, 1, 49); - - cursor(0, cursor_y, LCD_WIDTH, 8); - rb->lcd_update(); - } - cursorpos--; - } + case 3: + rb->set_option("Show Counter", &settings.general[general_counter], + INT, show_counter_text, 2, NULL); break; - case MOVE_DOWN_BUTTON: - if(cursorpos < 6) - { - cursor_y = 8+(8*(cursorpos-1)); - cursor_dummy = cursor_y; - for(; cursor_ylcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); - rb->lcd_fillrect(0, 8, LCD_WIDTH, LCD_HEIGHT-8); - rb->lcd_set_drawmode(DRMODE_SOLID); - - rb->lcd_puts(2, 1, general_reset_text); - rb->lcd_puts(2, 2, general_save_text); - rb->lcd_puts(2, 3, general_counter_text); - rb->lcd_puts(2, 4, general_savesetting_text[settings.general[general_savesetting]]); - rb->lcd_puts(2, 5, general_backlight_text[settings.general[general_backlight]]); - rb->lcd_puts(2, 6, general_idle_text); - - rb->lcd_mono_bitmap(arrow, 1, 9, 8, 6); - rb->lcd_mono_bitmap(arrow, 1, 17, 8, 6); - - draw_checkbox(settings.general[general_counter], 0, 1, 1, 25); - draw_checkbox(settings.general[general_savesetting], 0, 3, 1, 33); - draw_checkbox(settings.general[general_backlight], 0, 3, 1, 41); - draw_checkbox(idle_poweroff, 0, 1, 1, 49); - - cursor(0, cursor_y, LCD_WIDTH, 8); - rb->lcd_update(); - } - cursorpos++; - } + case 4: + rb->set_option("Backlight Settings", &settings.general[general_backlight], + INT, backlight_settings_text, 3, NULL); break; - case CHANGE_DOWN_BUTTON: - if(cursorpos == 1 || cursorpos == 2) - done = true; - if(cursorpos >= 3 && cursorpos <= 5) - { - change_setting(cursorpos, -1, true); - if(cursorpos == 4) - save_settings(false); - } - else if(cursorpos == 6) - idle_poweroff = false; + case 5: + rb->set_option("Idle Poweroff (temporary)", &idle_poweroff, + INT, idle_poweroff_text, 2, NULL); break; - case CHANGE_UP_BUTTON: - if(cursorpos == 1) - confirm_reset(); - else if(cursorpos == 2) - save_settings(false); - else if(cursorpos >= 3 && cursorpos <= 5) - { - change_setting(cursorpos, 1, true); - if(cursorpos == 4) - save_settings(false); - } - else if(cursorpos == 6) - idle_poweroff = true; + default: + done=true; break; } + + rb->menu_exit(m); } + + set_digital_colors(); } /**************************************** @@ -2347,14 +1486,10 @@ void general_settings(void) ***************************************/ void draw_extras(int year, int day, int month, int hour, int minute, int second) { - char buf[11]; - int w, h; int i; struct tm* current_time = rb->get_time(); - int fill = LCDWIDTH * second/60; - char moday[8]; char dateyr[6]; char tmhrmin[7]; @@ -2372,96 +1507,121 @@ void draw_extras(int year, int day, int month, int hour, int minute, int second) /* Analog Extras */ if(settings.clock == ANALOG) { - if(settings.analog[analog_digits]) /* Digits around the face */ - { - rb->lcd_putsxy((LCDWIDTH/2)-6, 0, "12"); - rb->lcd_putsxy(LCD_WIDTH/2-(ANALOG_MIN_RADIUS+8), (LCDHEIGHT/2)-4, "9"); - rb->lcd_putsxy((LCDWIDTH/2)-4, LCD_HEIGHT-8, "6"); - rb->lcd_putsxy(LCD_WIDTH/2+(ANALOG_MIN_RADIUS+2), (LCDHEIGHT/2)-4, "3"); - } if(settings.analog[analog_time] != 0) /* Digital readout */ { - /* HH:MM */ - rb->lcd_putsxy(1, 4, tmhrmin); - /* SS */ - rb->lcd_putsxy(10, 12, tmsec); + draw_smalldigit(hour/10, SMALLDIGIT_WIDTH*0, 0); + draw_smalldigit(hour%10, SMALLDIGIT_WIDTH*1, 0); + draw_smalldigit(COLON, SMALLDIGIT_WIDTH*2, 0); + draw_smalldigit(minute/10, SMALLDIGIT_WIDTH*3, 0); + draw_smalldigit(minute%10, SMALLDIGIT_WIDTH*4, 0); + + draw_smalldigit(second/10, SMALLDIGIT_WIDTH*1.5, SMALLDIGIT_HEIGHT); + draw_smalldigit(second%10, SMALLDIGIT_WIDTH*2.5, SMALLDIGIT_HEIGHT); /* AM/PM indicator */ if(settings.analog[analog_time] == 2) { if(current_time->tm_hour > 12) /* PM */ - rb->lcd_mono_bitmap(pm, LCD_WIDTH-16, 1, 15, 8); + draw_digit(ICON_PM, LCD_WIDTH-DIGIT_WIDTH, DIGIT_HEIGHT/2-DIGIT_HEIGHT); else /* AM */ - rb->lcd_mono_bitmap(am, LCD_WIDTH-16, 1, 15, 8); + draw_digit(ICON_AM, LCD_WIDTH-DIGIT_WIDTH, DIGIT_HEIGHT/2-DIGIT_HEIGHT); } } if(settings.analog[analog_date] != 0) /* Date readout */ { - /* MM-DD (or DD.MM) */ - rb->lcd_putsxy(1, LCD_HEIGHT-16, moday); - rb->lcd_putsxy(3, LCD_HEIGHT-8, dateyr); + if(settings.analog[analog_date] == 1) + { + draw_smalldigit(month/10, SMALLDIGIT_WIDTH*0, + LCD_HEIGHT-SMALLDIGIT_HEIGHT*2); + draw_smalldigit(month%10, SMALLDIGIT_WIDTH*1, + LCD_HEIGHT-SMALLDIGIT_HEIGHT*2); + draw_smalldigit(SLASH, SMALLDIGIT_WIDTH*2, + LCD_HEIGHT-SMALLDIGIT_HEIGHT*2); + draw_smalldigit(day/10, SMALLDIGIT_WIDTH*3, + LCD_HEIGHT-SMALLDIGIT_HEIGHT*2); + draw_smalldigit(day%10, SMALLDIGIT_WIDTH*4, + LCD_HEIGHT-SMALLDIGIT_HEIGHT*2); + draw_smalldigit(year/1000, SMALLDIGIT_WIDTH*0.5, + LCD_HEIGHT-SMALLDIGIT_HEIGHT); + draw_smalldigit(year%1000/100, SMALLDIGIT_WIDTH*1.5, + LCD_HEIGHT-SMALLDIGIT_HEIGHT); + draw_smalldigit(year%100/10, SMALLDIGIT_WIDTH*2.5, + LCD_HEIGHT-SMALLDIGIT_HEIGHT); + draw_smalldigit(year%10, SMALLDIGIT_WIDTH*3.5, + LCD_HEIGHT-SMALLDIGIT_HEIGHT); + } + else if(settings.analog[analog_date] == 2) + { + + draw_smalldigit(day/10, SMALLDIGIT_WIDTH*0, + LCD_HEIGHT-SMALLDIGIT_HEIGHT*2); + draw_smalldigit(day%10, SMALLDIGIT_WIDTH*1, + LCD_HEIGHT-SMALLDIGIT_HEIGHT*2); + draw_smalldigit(PERIOD, SMALLDIGIT_WIDTH*2, + LCD_HEIGHT-SMALLDIGIT_HEIGHT*2); + draw_smalldigit(month/10, SMALLDIGIT_WIDTH*3, + LCD_HEIGHT-SMALLDIGIT_HEIGHT*2); + draw_smalldigit(month%10, SMALLDIGIT_WIDTH*4, + LCD_HEIGHT-SMALLDIGIT_HEIGHT*2); + draw_smalldigit(year/1000, SMALLDIGIT_WIDTH*0.5, + LCD_HEIGHT-SMALLDIGIT_HEIGHT); + draw_smalldigit(year%1000/100, SMALLDIGIT_WIDTH*1.5, + LCD_HEIGHT-SMALLDIGIT_HEIGHT); + draw_smalldigit(year%100/10, SMALLDIGIT_WIDTH*2.5, + LCD_HEIGHT-SMALLDIGIT_HEIGHT); + draw_smalldigit(year%10, SMALLDIGIT_WIDTH*3.5, + LCD_HEIGHT-SMALLDIGIT_HEIGHT); + } } } else if(settings.clock == DIGITAL) { /* Date readout */ - if(settings.digital[digital_date] == 1) /* American mode */ + if(settings.digital[digital_date] == 1) /* american mode */ { - rb->snprintf(buf, sizeof(buf), "%d/%d/%d", month, day, year); - rb->lcd_getstringsize(buf, &w, &h); - rb->lcd_putsxy((LCDWIDTH/2)-(w/2), LCD_HEIGHT-8, buf); + draw_smallsegment(month/10, SMALLSEG_WIDTH*0+SMALLSEG_XOFS(10), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2); + draw_smallsegment(month%10, SMALLSEG_WIDTH*1+SMALLSEG_XOFS(10), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2); + draw_smallsegment(SLASH, SMALLSEG_WIDTH*2+SMALLSEG_XOFS(10), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2); + draw_smallsegment(day/10, SMALLSEG_WIDTH*3+SMALLSEG_XOFS(10), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2); + draw_smallsegment(day%10, SMALLSEG_WIDTH*4+SMALLSEG_XOFS(10), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2); + draw_smallsegment(SLASH, SMALLSEG_WIDTH*5+SMALLSEG_XOFS(10), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2); + draw_smallsegment(year/1000, SMALLSEG_WIDTH*6+SMALLSEG_XOFS(10), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2); + draw_smallsegment(year%1000/100, SMALLSEG_WIDTH*7+SMALLSEG_XOFS(10), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2); + draw_smallsegment(year%100/10, SMALLSEG_WIDTH*8+SMALLSEG_XOFS(10), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2); + draw_smallsegment(year%10, SMALLSEG_WIDTH*9+SMALLSEG_XOFS(10), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2); } - else if(settings.digital[digital_date] == 2) /* European mode */ + else if(settings.digital[digital_date] == 2) /* european mode */ { - rb->snprintf(buf, sizeof(buf), "%d.%d.%d", day, month, year); - rb->lcd_getstringsize(buf, &w, &h); - rb->lcd_putsxy((LCDWIDTH/2)-(w/2), LCD_HEIGHT-8, buf); - } - if(settings.digital[digital_seconds] == 1) /* Second readout */ - { - rb->snprintf(buf, sizeof(buf), "%d", second); - rb->lcd_getstringsize(buf, &w, &h); - rb->lcd_putsxy((LCDWIDTH/2)-(w/2), 5, buf); - } - else if(settings.digital[digital_seconds] == 2) /* Second progressbar */ - rb->gui_scrollbar_draw(rb->screens[SCREEN_MAIN],0, 0, LCD_WIDTH, 4, 60, 0, second, HORIZONTAL); - else if(settings.digital[digital_seconds] == 3) /* Invert the LCD as seconds pass */ - { - rb->lcd_set_drawmode(DRMODE_COMPLEMENT); - rb->lcd_fillrect(0, 0, fill, LCD_HEIGHT); - rb->lcd_set_drawmode(DRMODE_SOLID); - } - } - else if(settings.clock == LCD) /* LCD mode */ - { - /* Date readout */ - if(settings.lcd[lcd_date] == 1) /* american mode */ - { - rb->snprintf(buf, sizeof(buf), "%d/%d/%d", month, day, year); - rb->lcd_getstringsize(buf, &w, &h); - rb->lcd_putsxy((LCDWIDTH/2)-(w/2), LCD_HEIGHT-8, buf); - } - else if(settings.lcd[lcd_date] == 2) /* european mode */ - { - rb->snprintf(buf, sizeof(buf), "%d.%d.%d", day, month, year); - rb->lcd_getstringsize(buf, &w, &h); - rb->lcd_putsxy((LCDWIDTH/2)-(w/2), LCD_HEIGHT-8, buf); - } - if(settings.lcd[lcd_seconds] == 1) /* Second readout */ - { - rb->snprintf(buf, sizeof(buf), "%d", second); - rb->lcd_getstringsize(buf, &w, &h); - rb->lcd_putsxy((LCDWIDTH/2)-(w/2), 5, buf); - } - else if(settings.lcd[lcd_seconds] == 2) /* Second progressbar */ - { - rb->gui_scrollbar_draw(rb->screens[SCREEN_MAIN],0, 0, LCD_WIDTH, 4, 60, 0, second, HORIZONTAL); - } - else if(settings.lcd[lcd_seconds] == 3) /* Invert the LCD as seconds pass */ - { - rb->lcd_set_drawmode(DRMODE_COMPLEMENT); - rb->lcd_fillrect(0, 0, fill, LCD_HEIGHT); - rb->lcd_set_drawmode(DRMODE_SOLID); + draw_smallsegment(day/10, SMALLSEG_WIDTH*0+SMALLSEG_XOFS(10), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2); + draw_smallsegment(day%10, SMALLSEG_WIDTH*1+SMALLSEG_XOFS(10), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2); + draw_smallsegment(PERIOD, SMALLSEG_WIDTH*2+SMALLSEG_XOFS(10), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2); + draw_smallsegment(month/10, SMALLSEG_WIDTH*3+SMALLSEG_XOFS(10), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2); + draw_smallsegment(month%10, SMALLSEG_WIDTH*4+SMALLSEG_XOFS(10), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2); + draw_smallsegment(PERIOD, SMALLSEG_WIDTH*5+SMALLSEG_XOFS(10), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2); + draw_smallsegment(year/1000, SMALLSEG_WIDTH*6+SMALLSEG_XOFS(10), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2); + draw_smallsegment(year%1000/100, SMALLSEG_WIDTH*7+SMALLSEG_XOFS(10), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2); + draw_smallsegment(year%100/10, SMALLSEG_WIDTH*8+SMALLSEG_XOFS(10), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2); + draw_smallsegment(year%10, SMALLSEG_WIDTH*9+SMALLSEG_XOFS(10), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2); } } else if(settings.clock == FULLSCREEN) /* Fullscreen mode */ @@ -2471,25 +1631,55 @@ void draw_extras(int year, int day, int month, int hour, int minute, int second) for(i=0; i < 60; i+=5) /* Draw the circle */ rb->lcd_fillrect(xminute_full[i]-1, yminute_full[i]-1, 3, 3); } - if(settings.fullscreen[fullscreen_invertseconds]) /* Invert the LCD as seconds pass */ - { - rb->lcd_set_drawmode(DRMODE_COMPLEMENT); - rb->lcd_fillrect(0, 0, fill, LCD_HEIGHT); - rb->lcd_set_drawmode(DRMODE_SOLID); - } } else if(settings.clock == PLAIN) /* Plain mode */ { /* Date readout */ if(settings.plain[plain_date] == 1) /* american mode */ { - rb->snprintf(buf, sizeof(buf), "%d/%d/%d", month, day, year); - rb->lcd_putsxy(0, LCD_HEIGHT-28, buf); + draw_smalldigit(month/10, SMALLDIGIT_WIDTH*0+SMALLDIGIT_XOFS(10), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2); + draw_smalldigit(month%10, SMALLDIGIT_WIDTH*1+SMALLDIGIT_XOFS(10), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2); + draw_smalldigit(SLASH, SMALLDIGIT_WIDTH*2+SMALLDIGIT_XOFS(10), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2); + draw_smalldigit(day/10, SMALLDIGIT_WIDTH*3+SMALLDIGIT_XOFS(10), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2); + draw_smalldigit(day%10, SMALLDIGIT_WIDTH*4+SMALLDIGIT_XOFS(10), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2); + draw_smalldigit(SLASH, SMALLDIGIT_WIDTH*5+SMALLDIGIT_XOFS(10), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2); + draw_smalldigit(year/1000, SMALLDIGIT_WIDTH*6+SMALLDIGIT_XOFS(10), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2); + draw_smalldigit(year%1000/100, SMALLDIGIT_WIDTH*7+SMALLDIGIT_XOFS(10), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2); + draw_smalldigit(year%100/10, SMALLDIGIT_WIDTH*8+SMALLDIGIT_XOFS(10), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2); + draw_smalldigit(year%10, SMALLDIGIT_WIDTH*9+SMALLDIGIT_XOFS(10), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2); } else if(settings.plain[plain_date] == 2) /* european mode */ { - rb->snprintf(buf, sizeof(buf), "%d.%d.%d", day, month, year); - rb->lcd_putsxy(0, LCD_HEIGHT-28, buf); + draw_smalldigit(day/10, SMALLDIGIT_WIDTH*0+SMALLDIGIT_XOFS(10), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2); + draw_smalldigit(day%10, SMALLDIGIT_WIDTH*1+SMALLDIGIT_XOFS(10), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2); + draw_smalldigit(PERIOD, SMALLDIGIT_WIDTH*2+SMALLDIGIT_XOFS(10), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2); + draw_smalldigit(month/10, SMALLDIGIT_WIDTH*3+SMALLDIGIT_XOFS(10), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2); + draw_smalldigit(month%10, SMALLDIGIT_WIDTH*4+SMALLDIGIT_XOFS(10), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2); + draw_smalldigit(PERIOD, SMALLDIGIT_WIDTH*5+SMALLDIGIT_XOFS(10), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2); + draw_smalldigit(year/1000, SMALLDIGIT_WIDTH*6+SMALLDIGIT_XOFS(10), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2); + draw_smalldigit(year%1000/100, SMALLDIGIT_WIDTH*7+SMALLDIGIT_XOFS(10), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2); + draw_smalldigit(year%100/10, SMALLDIGIT_WIDTH*8+SMALLDIGIT_XOFS(10), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2); + draw_smalldigit(year%10, SMALLDIGIT_WIDTH*9+SMALLDIGIT_XOFS(10), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2); } } } @@ -2497,169 +1687,31 @@ void draw_extras(int year, int day, int month, int hour, int minute, int second) /*************** * Select a mode **************/ -void select_mode(void) +void mode_selector(void) { - int cursorpos = settings.clock; - int cursor_dummy, cursor_y; - int i; - + int m, result; done = false; + set_standard_colors(); + + m = rb->menu_init(mode_selector_items, sizeof(mode_selector_items) / sizeof(*mode_selector_items), + NULL, NULL, NULL, NULL); + while(!done) { - rb->lcd_clear_display(); + result = rb->menu_show(m); - center_text(0, "Mode Selector"); - for(i=0; i<6; i++) - { - rb->lcd_puts(2, i+1, mode_selector_entries[i]); - rb->lcd_mono_bitmap(arrow, 1, 8*(i+1)+1, 8, 6); - } + /* check for this, so if the user exits the menu without + * making a selection, it won't change to some weird value. */ + if(result >= 0) + settings.clock = result+1; - cursor(0, 8*cursorpos, LCD_WIDTH, 8); /* draw cursor */ + done = true; - rb->lcd_update(); - - switch(rb->button_get_w_tmo(HZ/4)) - { - case MOVE_UP_BUTTON: - if(cursorpos > 1) - { - cursor_y = 8+(8*(cursorpos-1)); - cursor_dummy = cursor_y; - for(; cursor_y>cursor_dummy-8; cursor_y-=2) - { - rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); - rb->lcd_fillrect(0, 8, LCD_WIDTH, LCD_HEIGHT-8); - rb->lcd_set_drawmode(DRMODE_SOLID); - - for(i=0; i<6; i++) - { - rb->lcd_puts(2, i+1, mode_selector_entries[i]); - rb->lcd_mono_bitmap(arrow, 1, 8*(i+1)+1, 8, 6); - } - - cursor(0, cursor_y, LCD_WIDTH, 8); - rb->lcd_update(); - } - cursorpos--; - } - break; - - case MOVE_DOWN_BUTTON: - if(cursorpos < 6) - { - cursor_y = 8+(8*(cursorpos-1)); - cursor_dummy = cursor_y; - for(; cursor_ylcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); - rb->lcd_fillrect(0, 8, LCD_WIDTH, LCD_HEIGHT-8); - rb->lcd_set_drawmode(DRMODE_SOLID); - - for(i=0; i<6; i++) - { - rb->lcd_puts(2, i+1, mode_selector_entries[i]); - rb->lcd_mono_bitmap(arrow, 1, 8*(i+1)+1, 8, 6); - } - - cursor(0, cursor_y, LCD_WIDTH, 8); - rb->lcd_update(); - } - cursorpos++; - } - break; - - case MENU_BUTTON: - case CHANGE_UP_BUTTON: - settings.clock = cursorpos; - done = true; - break; - -#ifdef EXIT_RC_BUTTON - case EXIT_RC_BUTTON: -#endif - case EXIT_BUTTON: - case CHANGE_DOWN_BUTTON: - done = true; - break; - } + rb->menu_exit(m); } -} -/******************** - * Counter's all done - *******************/ -void counter_finished(void) -{ - int btn; - int xpos = 0; - bool bouncing_up = false; - bool led_on = true; - unsigned char *times_up = 0; - times_up = (unsigned char *)timesup; - - done = false; - - while(!done) - { - rb->lcd_clear_display(); - - /* draw "TIME'S UP" text */ - rb->lcd_mono_bitmap(times_up, 0, xpos, 112, 50); - - /* invert lcd */ - rb->lcd_set_drawmode(DRMODE_COMPLEMENT); - rb->lcd_fillrect(0, 0, LCD_WIDTH, LCD_HEIGHT); - rb->lcd_set_drawmode(DRMODE_SOLID); - - rb->lcd_update(); - - /* pause */ - rb->sleep(HZ/25); - - /* move bitmap up/down 1px */ - if(bouncing_up) - { - if(xpos > 0) - xpos--; - else - bouncing_up = false; - - led_on = true; - } - else - { - if(xpos < 14) - xpos++; - else - bouncing_up = true; - - led_on = false; - } - - /* turn red led on and off */ -#ifndef SIMULATOR -#if (CONFIG_KEYPAD == RECORDER_PAD) /* only for recorders */ - if(led_on) - or_b(0x40, &PBDRL); - else - and_b(~0x40, &PBDRL); -#endif -#endif - - /* exit on keypress */ - btn = rb->button_get(false); - if (btn != BUTTON_NONE && !(btn & BUTTON_REL)) - { -#ifndef SIMULATOR -#if (CONFIG_KEYPAD == RECORDER_PAD) /* only for recorders */ - and_b(~0x40, &PBDRL); /* shut off the red led */ -#endif -#endif - done = true; - } - } + set_digital_colors(); } /********************* @@ -2667,11 +1719,10 @@ void counter_finished(void) ********************/ void show_counter(void) { + /* increment counter */ if(counting) - { passed_time = *rb->current_tick - start_tick; - } else passed_time = 0; @@ -2683,241 +1734,82 @@ void show_counter(void) count_m = displayed_value % 3600 / 60; count_h = displayed_value / 3600; - /* compute "counting down" displayed value */ - if(!counting_up) - { - remaining_s = target_second - count_s; - remaining_m = target_minute - count_m; - remaining_h = target_hour - count_h; - } - - if(remaining_s < 0) - { - remaining_s += 60; - remaining_m--; - } - if(remaining_m < 0) - { - remaining_m += 60; - remaining_h--; - } - if(remaining_h < 0) - { - /* reset modes */ - counting = false; - counting_up = true; - - /* all done! */ - counter_finished(); - - /* reset all counter values */ - remaining_h = target_hour = 0; - remaining_m = target_minute = 0; - remaining_s = target_second = 0; - } - - if(counting_up) - rb->snprintf(count_text, sizeof(count_text), "%d:%02d:%02d", count_h, count_m, count_s); - else - rb->snprintf(count_text, sizeof(count_text), "%d:%02d:%02d", remaining_h, remaining_m, remaining_s); - - /* allows us to flash the counter if it's paused */ if(settings.general[general_counter]) { if(settings.clock == ANALOG) - rb->lcd_putsxy(LCD_WIDTH/2+13, LCD_HEIGHT-8, count_text); - else if(settings.clock == DIGITAL) - rb->lcd_putsxy(1, 5, count_text); - else if(settings.clock == LCD) - rb->lcd_putsxy(1, 5, count_text); - else if(settings.clock == FULLSCREEN) - rb->lcd_putsxy(LCD_WIDTH/2-18, LCD_HEIGHT-20, count_text); - else if(settings.clock == PLAIN) - rb->lcd_putsxy(0, LCD_HEIGHT-14, count_text); - } -} - -/****************** - * Counter settings - *****************/ -void counter_settings(void) -{ - int cursorpos = 1; - char target_time[15]; - bool original = counting_up; - bool current = counting_up; - - done = false; - - while(!done) - { - /* print text to string */ - rb->snprintf(target_time, sizeof(target_time), "%d:%02d:%02d", target_hour, target_minute, target_second); - - /* draw text on lcd */ - rb->lcd_clear_display(); - - center_text(0, "Counter Settings"); - rb->lcd_puts(2, 2, "Count UP"); - rb->lcd_puts(2, 3, "Count DOWN..."); - rb->lcd_puts(4, 4, "Target Time:"); - rb->lcd_puts(4, 5, target_time); - rb->lcd_puts(0, 7, "OFF: Return"); - - /* tell user what mode is selected */ - checkbox(rb,1, 17, 8, 6, counting_up); - checkbox(rb,1, 25, 8, 6, !counting_up); - - switch(cursorpos) { - case 1: case 2: cursor(0, (8*cursorpos)+8, 112, 8); break; - case 3: cursor(24, 40, 06, 8); break; - case 4: cursor(36, 40, 12, 8); break; - case 5: cursor(54, 40, 12, 8); break; + draw_smalldigit(count_h/10, LCD_WIDTH-SMALLDIGIT_WIDTH*5, + LCD_HEIGHT-SMALLDIGIT_HEIGHT*2); + draw_smalldigit(count_h%10, LCD_WIDTH-SMALLDIGIT_WIDTH*4, + LCD_HEIGHT-SMALLDIGIT_HEIGHT*2); + draw_smalldigit(COLON, LCD_WIDTH-SMALLDIGIT_WIDTH*3, + LCD_HEIGHT-SMALLDIGIT_HEIGHT*2); + draw_smalldigit(count_m/10, LCD_WIDTH-SMALLDIGIT_WIDTH*2, + LCD_HEIGHT-SMALLDIGIT_HEIGHT*2); + draw_smalldigit(count_m%10, LCD_WIDTH-SMALLDIGIT_WIDTH, + LCD_HEIGHT-SMALLDIGIT_HEIGHT*2); + draw_smalldigit(count_s/10, LCD_WIDTH-SMALLDIGIT_WIDTH*3.5, + LCD_HEIGHT-SMALLDIGIT_HEIGHT); + draw_smalldigit(count_s%10, LCD_WIDTH-SMALLDIGIT_WIDTH*2.5, + LCD_HEIGHT-SMALLDIGIT_HEIGHT); } - - if(cursorpos > 2) - editing_target = true; - else - editing_target = false; - - rb->lcd_update(); - - /* button scan */ - switch(rb->button_get_w_tmo(HZ/4)) + else if(settings.clock == DIGITAL) + { + draw_smallsegment(count_h/10, SMALLSEG_WIDTH*0+SMALLSEG_XOFS(8), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET); + draw_smallsegment(count_h%10, SMALLSEG_WIDTH*1+SMALLSEG_XOFS(8), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET); + draw_smallsegment(COLON, SMALLSEG_WIDTH*2+SMALLSEG_XOFS(8), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET); + draw_smallsegment(count_m/10, SMALLSEG_WIDTH*3+SMALLSEG_XOFS(8), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET); + draw_smallsegment(count_m%10, SMALLSEG_WIDTH*4+SMALLSEG_XOFS(8), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET); + draw_smallsegment(COLON, SMALLSEG_WIDTH*5+SMALLSEG_XOFS(8), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET); + draw_smallsegment(count_s/10, SMALLSEG_WIDTH*6+SMALLSEG_XOFS(8), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET); + draw_smallsegment(count_s%10, SMALLSEG_WIDTH*7+SMALLSEG_XOFS(8), + LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET); + } + else if(settings.clock == FULLSCREEN) { - case MOVE_UP_BUTTON: /* increase / move cursor */ - case MOVE_UP_BUTTON | BUTTON_REPEAT: - if(!editing_target) - { - if(cursorpos > 1) - cursorpos--; - } - else - { - if(cursorpos == 3) -#if (CONFIG_KEYPAD != IPOD_3G_PAD) && (CONFIG_KEYPAD != IPOD_4G_PAD) - if(target_hour < 9) - target_hour++; - else - target_hour = 0; -#else - if(target_hour > 0) - target_hour--; - else - target_hour = 9; -#endif - else if(cursorpos == 4) -#if (CONFIG_KEYPAD != IPOD_3G_PAD) && (CONFIG_KEYPAD != IPOD_4G_PAD) - if(target_minute < 59) - target_minute++; - else - target_minute = 0; -#else - if(target_minute > 0) - target_minute--; - else - target_minute = 59; -#endif - else -#if (CONFIG_KEYPAD != IPOD_3G_PAD) && (CONFIG_KEYPAD != IPOD_4G_PAD) - if(target_second < 59) - target_second++; - else - target_second = 0; -#else - if(target_second > 0) - target_second--; - else - target_second = 59; -#endif - } - break; - - case MOVE_DOWN_BUTTON: /* decrease / move cursor */ - case MOVE_DOWN_BUTTON | BUTTON_REPEAT: - if(!editing_target) - { - if(cursorpos < 3) - cursorpos++; - } - else - { - if(cursorpos == 3) -#if (CONFIG_KEYPAD != IPOD_3G_PAD) && (CONFIG_KEYPAD != IPOD_4G_PAD) - if(target_hour > 0) - target_hour--; - else - target_hour = 9; -#else - if(target_hour < 9) - target_hour++; - else - target_hour = 0; -#endif - else if(cursorpos == 4) -#if (CONFIG_KEYPAD != IPOD_3G_PAD) && (CONFIG_KEYPAD != IPOD_4G_PAD) - if(target_minute > 0) - target_minute--; - else - target_minute = 59; -#else - if(target_minute < 59) - target_minute++; - else - target_minute = 0; -#endif - else -#if (CONFIG_KEYPAD != IPOD_3G_PAD) && (CONFIG_KEYPAD != IPOD_4G_PAD) - if(target_second > 0) - target_second--; - else - target_second = 59; -#else - if(target_second < 59) - target_second++; - else - target_second = 0; -#endif - } - break; - - case CHANGE_DOWN_BUTTON: /* move cursor */ - if(cursorpos > 3) - cursorpos--; - else - cursorpos = 5; - break; - - case CHANGE_UP_BUTTON: /* move cursor */ - if(cursorpos < 5) - cursorpos++; - else - cursorpos = 3; - break; - - case MENU_BUTTON: /* toggle */ - if(cursorpos == 1) - counting_up = true; - if(cursorpos == 2) - counting_up = false; - if(cursorpos >= 3 && cursorpos <= 5) - { - cursorpos = 2; - counting_up = false; - } - break; - -#ifdef EXIT_RC_BUTTON - case EXIT_RC_BUTTON: -#endif - case EXIT_BUTTON: - current = counting_up; - if(current != original) - counter = 0; - done = true; - break; + draw_smalldigit(count_h/10, SMALLDIGIT_WIDTH*0+SMALLDIGIT_XOFS(8), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*1.5); + draw_smalldigit(count_h%10, SMALLDIGIT_WIDTH*1+SMALLDIGIT_XOFS(8), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*1.5); + draw_smalldigit(COLON, SMALLDIGIT_WIDTH*2+SMALLDIGIT_XOFS(8), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*1.5); + draw_smalldigit(count_m/10, SMALLDIGIT_WIDTH*3+SMALLDIGIT_XOFS(8), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*1.5); + draw_smalldigit(count_m%10, SMALLDIGIT_WIDTH*4+SMALLDIGIT_XOFS(8), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*1.5); + draw_smalldigit(COLON, SMALLDIGIT_WIDTH*5+SMALLDIGIT_XOFS(8), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*1.5); + draw_smalldigit(count_s/10, SMALLDIGIT_WIDTH*6+SMALLDIGIT_XOFS(8), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*1.5); + draw_smalldigit(count_s%10, SMALLDIGIT_WIDTH*7+SMALLDIGIT_XOFS(8), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*1.5); + } + else if(settings.clock == PLAIN) + { + draw_smalldigit(count_h/10, SMALLDIGIT_WIDTH*0+SMALLDIGIT_XOFS(8), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET); + draw_smalldigit(count_h%10, SMALLDIGIT_WIDTH*1+SMALLDIGIT_XOFS(8), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET); + draw_smalldigit(COLON, SMALLDIGIT_WIDTH*2+SMALLDIGIT_XOFS(8), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET); + draw_smalldigit(count_m/10, SMALLDIGIT_WIDTH*3+SMALLDIGIT_XOFS(8), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET); + draw_smalldigit(count_m%10, SMALLDIGIT_WIDTH*4+SMALLDIGIT_XOFS(8), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET); + draw_smalldigit(COLON, SMALLDIGIT_WIDTH*5+SMALLDIGIT_XOFS(8), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET); + draw_smalldigit(count_s/10, SMALLDIGIT_WIDTH*6+SMALLDIGIT_XOFS(8), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET); + draw_smalldigit(count_s%10, SMALLDIGIT_WIDTH*7+SMALLDIGIT_XOFS(8), + LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET); } } } @@ -2927,125 +1819,52 @@ void counter_settings(void) **********/ void main_menu(void) { - int cursor_dummy, cursor_y; - int i; - + int m, result; done = false; + set_standard_colors(); + + m = rb->menu_init(main_menu_items, sizeof(main_menu_items) / sizeof(*main_menu_items), + NULL, NULL, NULL, NULL); + while(!done) { - rb->lcd_clear_display(); + result = rb->menu_show(m); - center_text(0, "Main Menu"); - for(i=0; i<7; i++) /* draw menu items and icons */ + switch(result) { - rb->lcd_puts(2, i+1, menu_entries[i]); - rb->lcd_mono_bitmap(arrow, 1, 8*(i+1)+1, 8, 6); - } - - cursor(0, 8*menupos, LCD_WIDTH, 8); /* draw cursor */ - - rb->lcd_update(); - - switch(rb->button_get_w_tmo(HZ/4)) - { - case MOVE_UP_BUTTON: - if(menupos > 1) - { - cursor_y = 8+(8*(menupos-1)); - for(cursor_dummy = cursor_y; cursor_y>cursor_dummy-8; cursor_y-=2) - { - rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); - rb->lcd_fillrect(0, 8, LCD_WIDTH, LCD_HEIGHT-8); - rb->lcd_set_drawmode(DRMODE_SOLID); - - for(i=0; i<7; i++) /* draw menu items and icons */ - { - rb->lcd_puts(2, i+1, menu_entries[i]); - rb->lcd_mono_bitmap(arrow, 1, 8*(i+1)+1, 8, 6); - } - - cursor(0, cursor_y, LCD_WIDTH, 8); /* draw cursor */ - rb->lcd_update(); - } - menupos--; - } - else - menupos = 7; - break; - - case MOVE_DOWN_BUTTON: - if(menupos < 7) - { - cursor_y = 8+(8*(menupos-1)); - for(cursor_dummy = cursor_y; cursor_ylcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); - rb->lcd_fillrect(0, 8, LCD_WIDTH, LCD_HEIGHT-8); - rb->lcd_set_drawmode(DRMODE_SOLID); - - for(i=0; i<7; i++) /* draw menu items and icons */ - { - rb->lcd_puts(2, i+1, menu_entries[i]); - rb->lcd_mono_bitmap(arrow, 1, 8*(i+1)+1, 8, 6); - } - - cursor(0, cursor_y, LCD_WIDTH, 8); /* draw cursor */ - rb->lcd_update(); - } - menupos++; - } - else - menupos=1; - break; - - case MENU_BUTTON: - case CHANGE_UP_BUTTON: - switch(menupos) - { - case 1: - done = true; - break; - - case 2: - select_mode(); - break; - - case 3: - counter_settings(); - break; - - case 4: - settings_screen(); - break; - - case 5: - general_settings(); - break; - - case 6: - help_screen(); - break; - - case 7: - show_credits(); - done = true; - break; - } - break; - -#ifdef EXIT_RC_BUTTON - case EXIT_RC_BUTTON: -#endif - case EXIT_BUTTON: - case CHANGE_DOWN_BUTTON: -#ifdef ALT_MENU_BUTTON - case ALT_MENU_BUTTON: -#endif + case 0: + rb->lcd_setfont(FONT_SYSFIXED); done = true; break; + + case 1: + mode_selector(); + break; + + case 2: + settings_screen(); + break; + + case 3: + general_settings(); + break; + + case 4: + exit_clock = true; + done = true; + break; + + default: + done=true; + break; } + + rb->menu_exit(m); } + + rb->lcd_setfont(FONT_SYSFIXED); + set_digital_colors(); } /********************************************************************** @@ -3061,16 +1880,25 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) int last_second = -1; int year, day, month; - bool f2_held = false; + bool counter_btn_held = false; struct tm* current_time; (void)parameter; rb = api; +#if LCD_DEPTH > 1 + rb->lcd_set_backdrop(NULL); +#endif + init_clock(); - while (1) + /* init xlcd functions */ + xlcd_init(rb); + + set_digital_colors(); + + while(!exit_clock) { /********************* * Time info @@ -3094,9 +1922,6 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) { rb->lcd_clear_display(); - /* show counter */ - show_counter(); - /* Analog mode */ if(settings.clock == ANALOG) analog_clock(hour, minute, second); @@ -3104,17 +1929,9 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) else if(settings.clock == DIGITAL) { if(settings.digital[digital_blinkcolon]) - draw_7seg_time(hour, minute, 8, 16, (LCD_WIDTH-48)/4, LCD_HEIGHT-32, second & 1, false); + digital_clock(hour, minute, second, second & 1); else - draw_7seg_time(hour, minute, 8, 16, (LCD_WIDTH-48)/4, LCD_HEIGHT-32, true, false); - } - /* LCD mode */ - else if(settings.clock == LCD) - { - if(settings.lcd[lcd_blinkcolon]) - draw_7seg_time(hour, minute, 8, 16, (LCD_WIDTH-48)/4, LCD_HEIGHT-32, second & 1, true); - else - draw_7seg_time(hour, minute, 8, 16, (LCD_WIDTH-48)/4, LCD_HEIGHT-32, true, true); + digital_clock(hour, minute, second, true); } /* Fullscreen mode */ else if(settings.clock == FULLSCREEN) @@ -3130,6 +1947,9 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) else plain_clock(hour, minute, second, true); } + + /* show counter */ + show_counter(); } if(settings.analog[analog_time] == 2 && temphour == 0) @@ -3137,6 +1957,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) if(settings.analog[analog_time] == 2 && temphour > 12) temphour -= 12; + /* all the "extras" - readouts/displays */ draw_extras(year, day, month, temphour, minute, second); if(!idle_poweroff) @@ -3150,17 +1971,10 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) button = rb->button_get_w_tmo(HZ/10); switch (button) { -#ifdef EXIT_RC_BUTTON - case EXIT_RC_BUTTON: -#endif - case EXIT_BUTTON: /* save and exit */ - cleanup(NULL); - return PLUGIN_OK; - case COUNTER_TOGGLE_BUTTON: /* start/stop counter */ if(settings.general[general_counter]) { - if(!f2_held) /* Ignore if the counter was reset */ + if(!counter_btn_held) /* Ignore if the counter was reset */ { if(counting) { @@ -3173,19 +1987,37 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) start_tick = *rb->current_tick; } } - f2_held = false; + counter_btn_held = false; } break; case COUNTER_RESET_BUTTON: /* reset counter */ if(settings.general[general_counter]) { - f2_held = true; /* Ignore the release event */ + counter_btn_held = true; /* Ignore the release event */ counter = 0; start_tick = *rb->current_tick; } break; + case MODE_NEXT_BUTTON: + if(settings.clock < CLOCK_MODES) + settings.clock++; + else + settings.clock = 1; + + set_digital_colors(); + break; + + case MODE_PREV_BUTTON: + if(settings.clock > 1) + settings.clock--; + else + settings.clock = CLOCK_MODES; + + set_digital_colors(); + break; + case MENU_BUTTON: /* main menu */ #ifdef ALT_MENU_BUTTON case ALT_MENU_BUTTON: @@ -3200,4 +2032,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) break; } } + + cleanup(NULL); + return PLUGIN_OK; }