From 2bc2d9ff3585c44a12b60548c6dae32e1c9bc602 Mon Sep 17 00:00:00 2001 From: Gabriele Monaco Date: Wed, 16 Aug 2023 08:58:32 +0200 Subject: [PATCH] Added padding to codes and updated screenshots --- apps/cards/app.js | 29 ++++++++++++++++-------- apps/cards/metadata.json | 2 +- apps/cards/screenshot_cards_barcode.png | Bin 2222 -> 2283 bytes apps/cards/screenshot_cards_card1.png | Bin 2643 -> 2693 bytes apps/cards/screenshot_cards_card2.png | Bin 0 -> 2506 bytes 5 files changed, 20 insertions(+), 11 deletions(-) create mode 100644 apps/cards/screenshot_cards_card2.png diff --git a/apps/cards/app.js b/apps/cards/app.js index 52eaa392c..a6d802352 100644 --- a/apps/cards/app.js +++ b/apps/cards/app.js @@ -47,27 +47,30 @@ function formatDay(date) { } function printSquareCode(binary, size) { - var ratio = g.getWidth()/size; + var padding = 5; + var ratio = (g.getWidth()-(2*padding))/size; + g.setColor(g.theme.fg).fillRect(0, 0, g.getWidth(), g.getHeight()); for (var y = 0; y < size; y++) { for (var x = 0; x < size; x++) { if (binary[x + y * size]) { - g.setColor(g.theme.bg).fillRect({x:x*ratio, y:y*ratio, w:ratio, h:ratio}); + g.setColor(g.theme.bg).fillRect({x:x*ratio+padding, y:y*ratio+padding, w:ratio, h:ratio}); } else { - g.setColor(g.theme.fg).fillRect({x:x*ratio, y:y*ratio, w:ratio, h:ratio}); + g.setColor(g.theme.fg).fillRect({x:x*ratio+padding, y:y*ratio+padding, w:ratio, h:ratio}); } } } } function printLinearCode(binary) { - var yFrom = 0; + var yFrom = 15; + var yTo = 28; var width = g.getWidth()/binary.length; for(var b = 0; b < binary.length; b++){ var x = b * width; if(binary[b] === "1"){ - g.setColor(g.theme.fg).fillRect({x:x, y:yFrom, w:width, h:g.getHeight()}); + g.setColor(g.theme.fg).fillRect({x:x, y:yFrom, w:width, h:g.getHeight() - (yTo+yFrom)}); } else if(binary[b]){ - g.setColor(g.theme.bg).fillRect({x:x, y:yFrom, w:width, h:g.getHeight()}); + g.setColor(g.theme.bg).fillRect({x:x, y:yFrom, w:width, h:g.getHeight() - (yTo+yFrom)}); } } } @@ -80,6 +83,8 @@ function showCode(card) { Bangle.removeListener("tap", listener); }; Bangle.on("tap", listener); + E.showScroller(); + g.clear(true); switch (card.type) { case "QR_CODE": const getBinaryQR = require("cards.qrcode.js"); @@ -87,18 +92,23 @@ function showCode(card) { printSquareCode(code.data, code.size); break; case "CODE_39": + g.setFont("Vector:20"); + g.setFontAlign(0,1); + g.drawString(card.value, g.getWidth()/2, g.getHeight()); const CODE39 = require("cards.code39.js"); code = new CODE39(card.value, {}); printLinearCode(code.encode().data); break; case "CODABAR": + g.setFont("Vector:20"); + g.setFontAlign(0,1); + g.drawString(card.value, g.getWidth()/2, g.getHeight()); const codabar = require("cards.codabar.js"); code = new codabar(card.value, {}); printLinearCode(code.encode().data); break; default: - g.clear(true); - g.setFont("Vector:15"); + g.setFont("Vector:30"); g.setFontAlign(0,0); g.drawString(card.value, g.getWidth()/2, g.getHeight()/2); } @@ -114,8 +124,7 @@ function showCard(card) { var titleCnt = lines.length; var start = getDate(card.expiration); var includeDay = true; - if (titleCnt) lines.push(""); // add blank line after name - lines = lines.concat("", /*LANG*/"Tap here to see the value"); + lines = lines.concat("", /*LANG*/"View code"); var valueLine = lines.length - 1; if (card.expiration) lines = lines.concat("",/*LANG*/"Expires"+": ", g.wrapString(formatDay(getDate(card.expiration)), g.getWidth()-10)); diff --git a/apps/cards/metadata.json b/apps/cards/metadata.json index 5f72a1c5b..0aa3249fb 100644 --- a/apps/cards/metadata.json +++ b/apps/cards/metadata.json @@ -4,7 +4,7 @@ "version": "0.1", "description": "Display loyalty cards", "icon": "app.png", - "screenshots": [{"url":"screenshot_cards_overview.png"}, {"url":"screenshot_cards_card1.png"}, {"url":"screenshot_cards_barcode.png"}, {"url":"screenshot_cards_qrcode.png"}], + "screenshots": [{"url":"screenshot_cards_overview.png"}, {"url":"screenshot_cards_card1.png"}, {"url":"screenshot_cards_card2.png"}, {"url":"screenshot_cards_barcode.png"}, {"url":"screenshot_cards_qrcode.png"}], "tags": "cards", "supports": ["BANGLEJS","BANGLEJS2"], "readme": "README.md", diff --git a/apps/cards/screenshot_cards_barcode.png b/apps/cards/screenshot_cards_barcode.png index 1910c173e1e3f1f69c774f2aeeac9904346078f8..e57e9765a76c717f1fcd8d8b85c85def3bff566f 100644 GIT binary patch literal 2283 zcmZ{mc{r3^AIFawF*J`co{2FA4Ot?p5l!}NV<}5Yj5T9>ZINtIOxf2`#u9m=NM%iU z@{}pNv7}y3Z69fSKVPe zZMID;g?xLq_2gUS@|X3q^cdI8OOd@g^8*spPq@Mb7H;Y@#S>rrBWnFe_xRMx;it1J z?h{R}krUH8-3!dM>{WcSq4-;$G|zuzwYA$}jQ+&BWk$v^r$2bX7A`wHYf5Pe902_e z6uw*ZqnJs7c;cAGp=f zj)02#k!-amsst)w2)cDMM)*c!sLgWV`*P1#pUC+o_C3ela97!vN*{eKF8Fm>w+>Ek zC54dVC4d+@t#)3d2YPUAm!v3dV(@McVWOSNV~PfuV4dXUYz>pY9vQ^(*4q@_>5Onr z>ZnzLTWw8$=u+I%i#yy-3+CADpckHdfi#S=JlH}DcEdMv(jz zx#(bEGI216`=dlyv6Z@?TK;nHBqmsn?@8N3jnTD)GvfAqbeinnRubGiM{crXGp_}@ zENM0cRgXDEag~iezP*|=)--|jlG+y8qT;UGMNYvB1vu&zzA1}qe#uO=e(>xVVF_{^ z`KNij4f=5I1SKKUC!Fsv4ie=v!X5*Q*C&V;rdA|!ZwvQm-<(S(RwMVpnG8LweF_Gh z7)rF7TIN%KTvaC8&G@w>q%pEGSx{k2{e+*BR6Avhc2s%Qd98D2aQe%8_LmJvoDCW+ zT>Iv@&$thC##V%2ady%T?Q#d3-R8Qj>Gkx>e%i!GUyd;MMiTHUkMG|pp%(-!uXcFt z5mMw8q#0nC4qPlq+>~2krF%$WF5lKEj5N`dyFoI?%Vmg=lS^7{CQa=6>^?9nJ+^HQ z@elEPl@%Ni-cjtS)HNSu-MY;&g=AbHV+j$nNJ8Ch0FX;-#80z7yNKXKV~t_9MscV5 z(9CxaZc&)rST;Ve0_K*mGRU;A_mT=c1gS0qHI#wWBF=T*J8w&I3Y|5_1kXOa+}&fF z8}>dn;`F(|a(<2-D6sP{LNm!=Jj>r%_QpE{`5xO(Sdaswa!b z@3DYCln{#Tl-^gR(Li1z@-!t1u%A=&Jw3zYb?ju)wZT7osD0R0zxVyE2( zwPZ6J#V3>oZw|GD1D0!|qi*hi`MbCM}mgG zW`D-3LIUG1Xxd->bVlJqoBjyTR!weTfC7EV*(FiL+hU+(IC-Pb(*{Cs9>yfK&25?BJ6$>#()QM{PE$Y{(R|GEN96v6 zNTT>o%O;Chm8xQEgh^t>oojvZ5!^)9mduy_2twtxAdUP-1EyV2@`!u$ZX7e0m%E!7FEJ{-?Av*{({hkB(c@8SWL@m+}-IOtb4(}O*&1Oo+v*HMz{FcAGF z?_lLg-e)3=ikzG}nfk5h-V2oP6I!fhXXTL0^;;!Wi`$b%(i=*E_2${Mlcx}Sp62&; zqogQi_2?0_>TAOt9OHX*jz4W@?CaqT1?epuSf!7SE_4?yXY@4pzG-5)_Jt*gdZ0Ep z6%;qxZbnPS%I3cu-N5iP9!?b3&j1n3nZ;D>=En*iQs*ttnnNet0#xcuYS%xuEZH3T z_M(kvtp)VK_E`wnX^Dtl8dpKF_PYhL9AS(6Jld};nSj(X7;fAlpvuRPhAko@m@+}_ z#~&zXt*;AIH!y{HBD_H+tU)8yrj*;e)i8hnY&0V(wqY!xX1VGNK zX3?3VmsF~y@gYq@3$q|Pl`SeHzDy(Qv*2tO*2pe7{%6B1(0EEw<%7JeTu#V{mR_aC zg6wKiZ6h-Jlzwx7t+!npZn~hPsOWj2q?NKjhSwZi;q`IDO-*n%B}-4!A1WEDZK-Z~ q2oNN1t{XB8RT*c>+8IRj8mbFnU^;R!_dQg^05fAtqe=s}%l`#-lng%r literal 2222 zcmYLLdpwhEAIFBh6V2nez1HK9MV^FA%dzG#!b;>=TCoX}!-H}*C8NnR$;(1?uoZ?J zE3}@LLy6?{B**dOkdWBq_}*LZ;q(36_x-uqt+;cqOiE1Lj!S6THci^x-fnrZB*<4*<&Uj}ZvsS2mO!xL+t4u3EVxnW(}LS%)LfGj~b|7A;&E!g@G#*!2WQ(iHbAf32Nw*_#ls<8|Mxm1SAbe6BTa zmUCXRX4ASOi3M|`I)x;2!~-1-oBOQdG9|&5Qx$>$?Vtcj)wrx~LFIyt4j39v?+c3D zt640e|0fC<(lszp3O4ecjB^2M;kkrXeCX|s{`!^1Tj{O~Hd_l92C2`C8OGipkB(Iw z2&_#|%2dpR%P|_EjE4FlIF96g^SpLV_KDTk$4S~*Tr1pq3Va-^agzF2-tdWDm#S(0 zGYaU02?HoZ!74JAM}9}R)6;0t=G3Hw_g}h$osncs8J9}&{a__tBpw7#wA-!nSsp;R z$q<_6>KK`M?eo~!VNJ&g4rb|`Y#0v{j%Sj=`LPoSHC5@Be#IWjEGLp+x|Etoq^vNt zz1@xU@^2SJbuM$-Nd0CcKAxHiJ(gOGbz}Wu&@Ct1m5Q0%4^A{GO$JSJFa~nNFG|wo z;>&j{-3x#1QQvF5xTFKX~HWscLRNN0;CAq&RvVS7NbU9eoXl|S*8lV zRJJp~c|(kZsY+NAAe#x$CxxtkH52^j?QBBhEFirna_E$V@i42g@3dqb=wl-M{r23x`pPc(@tMx(_ z4722`07n_QpYiouHG6QB0GYqi55?U$PQB`^M*bz3H$cm;j`dq*V&6!hET&38zwYC< zp>)mIwF7Rp-%A28dB;aR9L1jpMNi?g=!RuQ;{CB4*(k)EabF{@H;glaJ>v3Q$8YJb&E@Gs{} z{Ezmo@^f8Wf3W0_sw)pwy_X`6LzdPzaxlmLU_cTv$FDRHruINmc@1=ZGq~ zc9doZMB^!Zf@i!k*X_xpDc#iKX!kH0lJ5pqTN{PkGG8iUc^}Z1+;ozw=d0t?4f?#& z#rKbECEuFuZBFr)t=1t3xMxjgy<^$7UPfDoEN7NE%baSIlmEP)5h7>y-AiKb;)wK- zxRL%s`+`#naRu1e#)%iAw=kmte5sZE#6OH zLWrB%y(it?aM1v43jySRuWg5@F*JCGSf4=Z2eesLy*{t|$bu*$26N4mWaqjIpxk_Q z*b6oA?eV9Gbk__3DCwpZMytKxjNwW0WB~@RwojiW;ljEbV;`HlS5#ik^e5=S|7jdLPPwI?e72_Xt>0AIsfmN7r(F6-0>~TRJzwgWJU;OkngDXkV zFc30~;p z>c^B*obHwX?(J`xC>ad^@`yCL6GS9vQ7nj*PH$6i_Rni?{44MO|0vj%Y+qguFDGf$ zMap5Ji&dTN)v=H+Q~e=ATKVEZ%AhHnC2cooi&R zQBPiMH`O6Xnm@pE)09(>YUp21g4BlE8rH}O^)i0b5@-oP>v2nKZhP4LS>iN%Ve{j9 zaHdCP$ALR_-J$8&d1QG_PsFsrV|8d_qT!_3J^yk`bI;Q3hPD7A(m0%f0b-M#Ffsaf zGR?zvkjFeUe6W`oPVj4t6!YY>x@^Wz#7LK%irM8Hl495lJiB4FA(r_c@mYCT$mXh?5KQE<)Rhk#-piN zZ>U7pqkjUH+b3jTk{b@36fZsV=vky;tf)EJD7iAj{1zI>W7jYEGiUGJ1NBnU=xM;= kur|Occax^m5%3v2p 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 B&yWBB literal 0 HcmV?d00001