From 1cfb4c1eb22d0f6a6ec871d0dbbc6f2871314bcf Mon Sep 17 00:00:00 2001 From: David Peer Date: Sun, 29 Jan 2023 17:53:37 +0100 Subject: [PATCH] Minor design imrpvements --- apps/happyclk/README.md | 4 +++- apps/happyclk/happyclk.app.js | 24 +++++++++++++----------- apps/happyclk/metadata.json | 2 +- apps/happyclk/screenshot_1.png | Bin 2547 -> 2530 bytes apps/happyclk/screenshot_2.png | Bin 2554 -> 2550 bytes 5 files changed, 17 insertions(+), 13 deletions(-) diff --git a/apps/happyclk/README.md b/apps/happyclk/README.md index 997400eef..140645fa4 100644 --- a/apps/happyclk/README.md +++ b/apps/happyclk/README.md @@ -1,6 +1,8 @@ # Happy Clock -A really happy clock. +A happy clock. + +![](screenshot_1.png) The left eye shows the hour, the right hour the minutes. The mouth the battery percentage, each eyebrow the left mouthline shows whether your bangle is locked or not and the right whether you reached 10k steps. diff --git a/apps/happyclk/happyclk.app.js b/apps/happyclk/happyclk.app.js index 6c443e1a0..e6dec0795 100644 --- a/apps/happyclk/happyclk.app.js +++ b/apps/happyclk/happyclk.app.js @@ -9,7 +9,7 @@ var drawTimeout; /* * Based on the great multi clock from https://github.com/jeffmer/BangleApps/ */ -Graphics.prototype.drawRotRect = function(cx, cy, r1, r2, angle) { +Graphics.prototype.drawPupils = function(cx, cy, r1, dx, dy, angle) { angle = angle % 360; var theta=angle*Math.PI/180; var x = parseInt(cx+r1*Math.sin(theta)*1.2); @@ -18,16 +18,18 @@ Graphics.prototype.drawRotRect = function(cx, cy, r1, r2, angle) { g.setColor(g.theme.fg); g.fillCircle(cx, cy, 32); g.setColor(g.theme.bg); - g.fillCircle(cx, cy, 28); + g.fillCircle(cx, cy, 27); + g.fillCircle(cx+dx, cy+dy, 28); g.setColor(g.theme.fg); - g.fillCircle(x, y, 12); + g.fillCircle(x, y, 8); + g.fillCircle(x+1, y, 8); }; let drawEyes = function(){ // And now the analog time - var drawHourHand = g.drawRotRect.bind(g,55,70,12,R-38); - var drawMinuteHand = g.drawRotRect.bind(g,125,70,12,R-12); + var drawHour = g.drawPupils.bind(g,55,70,12,1,0,R-38); + var drawMinute = g.drawPupils.bind(g,125,70,12,0,1,R-12); g.setFontAlign(0,0); @@ -41,8 +43,8 @@ let drawEyes = function(){ // Draw minute and hour fg g.setColor(g.theme.fg); - drawHourHand(h); - drawMinuteHand(m); + drawHour(h); + drawMinute(m); } function quadraticCurve(t, p0x, p0y, p1x, p1y, p2x, p2y){ @@ -65,16 +67,16 @@ let drawSmile = function(isLocked){ var reachedSteps = Bangle.getHealthStatus("day").steps >= 10000; for(var i=0; i < w-2; i++){ - if(isLocked) g.drawLine(25, y+5+i, 35, y-5+i); + if(isLocked) g.drawLine(25, y+6+i, 35, y-5+i); if(reachedSteps) g.drawLine(W-35, y+5+i, W-45, y-5+i); } } let drawEyeBrow = function(){ - var w = 4; + var w = 6; for(var i = 0; i < w; i++){ - g.drawLine(25, 25+i, 70, 15+i); - g.drawLine(W-25, 25+i, W-70, 15+i); + g.drawLine(25, 25+i, 70, 15+i%3); + g.drawLine(W-25, 28+i%3, W-68, 19+i); } } diff --git a/apps/happyclk/metadata.json b/apps/happyclk/metadata.json index ca1f27e69..48d05842c 100644 --- a/apps/happyclk/metadata.json +++ b/apps/happyclk/metadata.json @@ -6,7 +6,7 @@ "version":"0.01", "readme": "README.md", "supports": ["BANGLEJS2"], - "description": ":)", + "description": "A happy clock :)", "type": "clock", "tags": "clock", "screenshots": [ diff --git a/apps/happyclk/screenshot_1.png b/apps/happyclk/screenshot_1.png index 879b01cbf34ada7ef948777cfa587ab2b27c29d5..c3e372608e8534e3600be6ede5269c4bf61d59d7 100644 GIT binary patch literal 2530 zcmbVO`8(7L7yo|83^Rjkjmh2}LuI`&crDp7s*$aPi{TcPq|C)NNXDd6jJe3ZO^r3% zAZwGpb*|AF_1_dL%zpL3q)Jf9yvKb+5b=pU!ahd^OvJ?&x*z8?!LOVRjXJE z7uxYFRt{YFW`4ywC-QK6XJDHOqiarLp9Ql!wEZJwmw$O&4}sLTK3WBUy1}Z6nvg&9 zISk(XJVv_!NQ)apOY#OcYbh`X;j>y+RN`dUEK2|I|5z5!=`aM?3?LFnzwmvS~n1E`LVO>f=2tPYxiQYb3at3Q$JjN zGQ4%&IrEHPk4c|x&D|CiWz#P)^Lpx#O4`M7JIs@Fn#@um^EbbzlOV#<#%T5N;YEO9 z#C*1zld|wn7I(*I#Kn42mTI3!vi8tpj)t=u(yJLIF(@kcRGI_ftGTEkdk=z{pO=*d zSW5|T^Il5~wO%3l{?p#C_OF$fmo89Qxl1sapH=0WSr(26lh(tAEcYtS^{x-cfST*- zyUFfUpeyJvE%1{& z>A*$SS_q5#({%@Su+Ot2gXy>Q0iumv78VtD@%$B?R9zRIpuxI)j-?xKxk=BUD6F4Q z%V74DS+hDev-mkBn);@kTcOFHk_<(CXUDlOzK zomlnu)2&%O-%0wc2gC3JE>qnE-vAZkRGy^pvv$(3Dk*WFT z06{6#Xv@5W(A; zf!Z`;XvjzGh=X7Y1`{*ipZajT4yqV`s0Ph74rUPjdK*&?d9R4^UnUy|Ge&=k6UD8b zp2J}b^~mtCmF__lKXW-MpyTj%|L*G%xry-~-j?NN03yx~R7*R0&MrzH+$*L=$Yn^U z10qzp@IRlSZf`bchNbfUKFKap8(SCwM`@K{rhz^tFXz`*pmNbITFf3<?Ht3iL^R}p;Df|ksvS*lcxcejx&s?q8veE(Oqmb4!V2pi~4GPeE%^As)(&z zq$w=Vc)zV+mHSGjX%O?|o^h0J635zNq4CqD7Gbcl45t)?KmM6(%C7P%eIy_&Kp*B$ zGF%GqP1kbRCaqnvRCf%vaxvPFuv*eM{mXe!aA_?6aZCN^%?QDxq^UtbkoRWl%W~eE z!>c9BHhG6P_V&}atn4xPS*4co`id~JUxYhQ z=ZSYhG)uR8u9B9=)C8mcOLecfB|_fdtfxj_Yqb$w>eF4ogGL!WP4;*GO$YhA5=eKI z7lRZM>UsYWGG5wIW%Tq-GbisDT`sa}E^kt>0&nB@m(S7lCB(hef9FEqf5FX(E>C2C zdY2!bYI=3yGZ2H|^NY+r7`49bV8wkD|8|a!X5;8M8BU=+FjHlh+Zl1oyzd;nNc1D} zNlYLHVcSWOcB>F>c6mpD$=``@mbQ3fcq+7#S5-#LhO3B&iTL3l3oG}bVg!_$@{Ln- z;0HBL#4rLilihMF?f)Ny5v%LHnj>uvb#NSX?hWv5Z(bG@E3}hNA z^E~&Tin2Ae`@z5c$Z`@>ktHI2lDe>nmMwQrs zbJaYJf5kXL$8H7t%!#GjKWMUb#54hl+cy^LZyoUr?lR{M2??PGRAZr=ZR(JlRU^%8ZoV~_8Szd}e02$D zwH6(rlA^;{alw03FD|0UeV+lw*}3fbYNX)Aj+Jcu)Pj;E?^{Am9InZ%}D literal 2547 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 MjjRkQ`nb6N0>e(3S^xk5 diff --git a/apps/happyclk/screenshot_2.png b/apps/happyclk/screenshot_2.png index d561c3175c23a53563b29773c14a9e39dd73b689..d290f835050d7a8e475efdb6c55a1c164d5a724c 100644 GIT binary patch literal 2550 zcmbW3dpy$%AIE>cZDt#0k+~L&bYbqvwPWsDhZP~q?1W7&Gxyb~O~^?d_r%F`Lh_KU zIy}qx{>+>_k+d~PXg#iFS z$;;FA*mo8EGbrTuEo^y5`z~O@F%M^;;hD}H0H8%)t|UJWZLxgu?2H{MV`8)8qhQaX z-Q%Qic!3kV?CZ&Scvb+a|FrD$%*@RE1>OC5etaL;b*p%*O)3aGf;(p9#PhwF+p9{q z$O{5t*X>fR1VADG1qLU6FR#Cch3PfH5H?Bc5e}dsyjD#Qs_pie zL7QoM-T^>XhGc$zR{K^(h3T1fl0TixQx2q(c0qj~zl}BTfP5fYw;K;FJtk)?5-9C% zC3iE*9{3@bBn2?kS3&=6U?~L3n)uQ5{KHyRX5t~5#nIDSI5@(yT55AAU)(zqRLjC@emNUAT(#P{dj== zrGel63-eU~s>z75S4wN)6se>LSVOo!kyGPM9WAi}xQJQorz2*P1_cKwA8dnNQM5?f z_!(~ujR33At@27{bZyvNT0_(CDXHWi5W#xj2%_KRLCqP*4~@`rWZm$42S)DGZ3%%} z=OUHmMD7m+Hv;8c;3p~v){;L-Lo+As&dp@17au(>j~bZ z_2-X)4IqQ}?6uRnUoOK2}1Y4S4(ThLT8kV^5>`yV9-UuB7X3>InN1 z@G>PNva`5(xU^IQ#N?RNEe6Bb436aRB~2W2B)oVLF;>9xjuC>NVVvI9a+9)lx8lGK z?3LjbT%CWUkyd5R*HWDR+$qDgkc(=EG8kettc{yv&?@C`6BG7qd;|vN?yC+1%`QRHcvF|1Z!U5*MBNa$EI})U^gMRvP!6}Vt zUC?@oZaI)GsE@H~srwz#Ad6-Pzu1{1vWK?SQB-$FQO>gTjZbK}sXv`2S4t+kWU@ja z>SjV@=qu}{SL6DYnv-8xhuZp@aAd8Z=sgg=X?p-^+)m?esve}I@t_4qJYU&4tn=3W zaCYelue$!<%WDn^a$X*QS3;YKcS6z4c#C}sm2(!Ashl9O;F}5^-bn+Z9v`?C$@)~v zcZ}6rl1$ydX3hyhB4ioEcFlO2q-`j&C52mOg6E<{Zp7d29H0oO^R6vfS6*F^|_gTT;giqI3_YCSi)gku|w76B7P6Gk_ zF@4XSpM$ z9t^Vgcs}NMDC&!=>AjB|R$5iSSizM$-cb|!{JN*TmF-20qxy5O6V4IJNk=0U{bjOloZ;Y$wY8+%tn(6fYB?9c)>O?vFqfh7wqK0W-7;>*Mdq2-h=)hCJNB; zD79d5z<^4DEf^?5j}O+M%*=?qTO=U$+qf=>tU`=cy$6I}+|fiB?SmlRuJhhiUFM1z@;<&7zldIF>r9%%P2eJz~0{7j>a zU)@pQhTkur{JDNGzDW})LP!XX1cCfd63@~GYZqXoi=55P|8>-KVgsQbVXkXAF;LVd}?E0f8sycfAA zs}ns7`NUG2DE#ou!I9-!gTke`#|+tg`7XHX+c;oGx2HGsI|7*o76JH%~}r_t|4 O4)AjGc5QH`r~e0Gc!Zh& literal 2554 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