From e06657234060ed8b37f9a7f4a6bc55cc72b3dd5b Mon Sep 17 00:00:00 2001 From: philmoz Date: Tue, 15 Sep 2026 11:15:47 +1000 Subject: [PATCH] chore(color): replace the bitmaps in the calibration pages with generated UI (#7762) Co-authored-by: philmoz --- .../320x240/bmp_radio_stick_background.png | Bin 4906 -> 0 bytes .../320x240/bmp_radio_stick_pointer.png | Bin 646 -> 0 bytes .../480x272/bmp_radio_stick_background.png | Bin 6382 -> 0 bytes .../480x272/bmp_radio_stick_pointer.png | Bin 788 -> 0 bytes .../800x480/bmp_radio_stick_background.png | Bin 9396 -> 0 bytes .../800x480/bmp_radio_stick_pointer.png | Bin 1133 -> 0 bytes .../img-src/bmp_radio_stick_background.svg | 50 --------- .../img-src/bmp_radio_stick_pointer.svg | 19 ---- .../gui/colorlcd/radio/radio_calibration.cpp | 103 +++++++++++++----- tools/convert-gfx-list.csv | 2 - 10 files changed, 77 insertions(+), 97 deletions(-) delete mode 100644 radio/src/bitmaps/320x240/bmp_radio_stick_background.png delete mode 100644 radio/src/bitmaps/320x240/bmp_radio_stick_pointer.png delete mode 100644 radio/src/bitmaps/480x272/bmp_radio_stick_background.png delete mode 100644 radio/src/bitmaps/480x272/bmp_radio_stick_pointer.png delete mode 100644 radio/src/bitmaps/800x480/bmp_radio_stick_background.png delete mode 100644 radio/src/bitmaps/800x480/bmp_radio_stick_pointer.png delete mode 100644 radio/src/bitmaps/img-src/bmp_radio_stick_background.svg delete mode 100644 radio/src/bitmaps/img-src/bmp_radio_stick_pointer.svg diff --git a/radio/src/bitmaps/320x240/bmp_radio_stick_background.png b/radio/src/bitmaps/320x240/bmp_radio_stick_background.png deleted file mode 100644 index ae0878a4e9e6265f384967dd1d7bd1b1611e42ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4906 zcmV+_6V>dAP)!bFz)(7_b=%v)6faU!x@{)&WfeR{?gh-Of%p?#2J_E(VoC88I|*hWbj zK%}4o#94tnZXgPfq5vrmO2gP=b-C)hd5E>ZR$wMD#6)1$blaZe%Ff6XnmP-ZBw@IK z$jA}HkrJ9d+1tz|NV@%YA}+t2>PP0=03>37DKj%K;_|`NuV05ylt!1szE=p=8D4#{ z)#Y+`(~zs0e-ljI)BzHdGKY1tl;VCRw#RtPX2m#p(qA7rHV;$ZzEt`R1ZvNoC~0Xy za$=@VBVxoz>esIWh!n`N!ekz6N=ka(ZBn*?Twp0KT`hb|qRXLlwLl4q$8NvfL>> zp2}T@E;W$L;TYm^Sa%Z>^)4{5g%S zn5olf*sW!{iqok{(7yT z0B=D)(Nm@bXkQf~H4SsW{$b^chzLw}JKiJtep=*+5h!VCG;CNOU{p<{tyxFpn7mPn zq3m}#Y|lyPlI`Q74dm`?v8Gp6Yy;*4s_t^p^pAg#@aSVfeD%wh6El5=zbw68ykC5Q zNbKRKHSXC%!^Vw)!6m048ye7#`p;`bPn%A|hnq2KYW%d=*|Sl5_oiw8J`k7$JX+?k z?Jl?5vo2P@i!xBDBXhVA(Fc^os2jga#PAV*TK(!(sCIkMCVX=GR2sK$ z_m`VK{e-$@OZ{cNyo|CTgOT-tCwo-hIO>-#4=9kBNc;m2QuE>q$TMgBbg3v;>x%fK ztdI4oi_!6d4diiHZ&XmWL|#83wddbAqh@CM>$Ji`>i)8b9#1|6stSO9{5Z$29Ewp< z0lpW*O;U&_q+q5YjKM-N*@u<77Y!?QFA|E$ZU|$r6wH){{si!Mpbns7%48b0Zt?dO z|FehD-EQiZ|IJSmW-}@8E++2Yd(#YEY;|YZuD?({FKC^5vaB~qDOLj!4VyO6G<6y& ze_F`N8PhOoeP_+uKfFxp2g^~@)6rcn1bFq@nl%CzRmUc57vurnK z6gf9{R#ySs1N;~8Ch(K?8kA;bUac6)7DV8kO+-bJx@0LvRTZc1z6*4{b(1E9cw3R; zrS#(B;&#Np+5CG?TTJD4dzL2Tdty2vv@=94p<| zo{sqJaS!m5PAxG{pFTDPbzR(j_r)nGDS^Hl8mOE*7t?_65I6VU)=jnwl))KACHHs0 zI2}gsl9Hm#V&`08FhuCu_7-~Ns8PiK$9$?DxIfr9ibB*)-;F~tuXAN*WQGtK79BQ_ z1e287VuVPI9DOZmD_3LcpX0CB%RHRA{WcnRYzK)3{K``7yxvk=9M%DKu}F71|CwG~ zI$pp-K$B5jP4$Bh(6DWrpGU;Rko?9UNqpwli1>t_LQ|IQ8#c_`(LOqCAdkcLERsvGWf?;X3c(!#)8PPdFr{Z1!vxRi^@BGgjP}va7rLSbH7U@psKNW);fJzY^ z&DlkNrt+R2BhQ`<;!~}eCPh~kbmZNwT?3Wb?Y99V6CVCKy|(QjX6CJ+1e!JO*@O4+ z;U+1?E#IVZT9EE^{!=JS(LVp&d*=1mf}W_R>}*p0yojEgHX~x9N4v9ZGuxBbrhy~~ z1NjI*#ndU(E_j`UUp!9Q%2h-R9omXdKJra0t8lO!bMBHt{Gz3-BqWe9{}IyGZ$xSu zC%$_Fvc4W6!n4s44=sWfYgb+!cy- zB`ifHzs2WkCw2KsBFBv7)DLf`^6tCPOG}%%#9&XB^_I5ev@?U`edp4Qswz%D`2^)d zhk&j(A;taO<*d3G2#|`weFD6v?wn1<w^po=$rE>52!~nt?$d#RusU#tHj6C^P^qFeD7B3SFhsu=uw>d;Vg`kCsBl)6s~>9w|S4n5+h-_pI{g??%hk{ z-hhK$z@n~Hq&p!be=%xnryd_QlGcHP7DyObnwc3LDx?&02FWPXH9%w=eV(n3P1tb3 zBmSCk)@)t})P*umGopm5jto^1at29V433#Jk(gPxqZQ=i&CkdC<(FuMN0D`PfY=$v zpL0o~UtwXR+iu%~U;_9YYNqULOgTB2b8>0iv7M&9doRZqFbqOyhnbN5n?5^)sZSqF zxw*uRz7|tf7P6ti=K?kK-QBBFH$boxAtt2$Z3X5*gAl5UURsJb{|F5}w{K3UW??*v zB1d<*sD16#03{*Cj4Mg}HnoAW@a70K+?JF-Mt54%CC_vT)-qA#73?z_g=h9?T z6MA`Bb4fkg6@&gdAq;U8A%lVhts$XjD0=9}yd)tcy#;F1sm=}Wn}<-8%C{9Bp>poaU-3QA;aLACkQK9!BK}|?{3-pMTHtR1% z7)Co|79BT`K%NLH$HWpb5$aa1 zz;LO+|>esJB%g;wEEJS*}zRqA&$aa@91Y^)O%7Uzl85Yj*vkEc!| z{0-D}3vqMrrRS#2^xFL~N_;#LW?$T}zdi`b57l%Fy+7SY;%{Cea>R(B&=n9iy*Rwf zRj^J;O(o^s#q`>>o9M|?sQX|kC&rBSrMO6OOIKuYbvK+=YhNUj^fC|CkIYBJ#*(~n z5xsWqCjMs+Bg|%`6zjva4||d}y!v8A)1GhI`>|T{%+tZy5&!~|hMW(~?J{k;0jh~d zkv=^ewr-(e>lT!R1fp)5NYvOoM0~uiovK*gpr~2{h?< zzbECdi}4;h$jO=CYaWQmbKC9ze!-e_6UrR6|3EMrU8nM{JBb)Fgr3`W5PRppf!eaO z$U~MQ=i0X9v}qs#QX-!d(b4qWvK1vIg^HVQr24T(n{#cNg$Vh)+h)6D4v%Gy%&}7P zOiQ`xzyT_zPNC-4&k}#%{iLm21%MRd+4iEs?Phmaic6Om^$j~t+;}~w?wE~MSQw~O zRpRddDW*Y#%tB#ZS7*6j2+C}>fdDTV%^Uh2|<=&`XRzxg(?v+qFG*CU~aB9--JHrsbDM6s?wnawuPP}l?{ zo9qsf|NIx?=FAD=k!R1+v}3zhk<9H#PC(^0v_g%z2FptC+UqYB$r6o%FLb}s=xFd2q zoTHdg?0gc*E+r|Mv^8td-7Zefn2zoaT-l1gX(Hx<1CyoBHn+p}OW6&#iOz)t;c?jJ zNtDgz%PvbYWoP^A8b8{>$?we|@|tT%Ubv{`^!!nJN$JxamEU0n1ZbGFS+cg~MD-KD zpz_|i%|S#TqQ;FQ@s(Fm5)(mS0-o|XY}?BFS}*HpADu;MR_5g%yX_+hFH0~-j?E+G zukQulDk{jQV(MfXckKizj~kjXOMupf*dTQ3Kb-NErxe3GsbRy$Gp#e*P1)Hb{^3<> zfAa#3yIaK+RdtM^ivw=E?akvhTc6JK)fP(oW@fvytZyrZvLAteIiGoB0p8CJk^J^M zh?qb=rE%&MXWm#)D|9)jv$qsGy#y@BO822Ko#v>9l9WX9+kc{A(?-s`^_HJ6V(3tM z@Bbg9qL>lP(FFN!hkb>|Zl8WMJG-s8e@GNL98n&-eTLg%Td8Qumq>B9YRxqD+`I*) zNAry#!=UP+d7ucAUVGhtPXuT}VY) z(Ex*@knrSF)UR3GQ%8&W1A zjQ&D00Lf@DMoB@m5+Cos52AZK$oe|s=RL&fr+)?bo>G-_eoWemRYcuz0}UHC)S@sw zXHcQsnW)5m(Hl*&4U=-GP7#oT%;36DL_iE(-U17+0s>qvazMar+fG9W-T z`9j$pgp!s6kB z(7PJv!g8#1pH#JB7{<;Pnuv`h{%1d@_V>RFI&DYKm=SzMAUc}#gNIOir~7G%FTO-wkvUA5YZy>!@E5IJlZ~auHEcLBYwW@#BfUDd4D- z)u)LVG$<$vQMYm>(bEDq7XfOXe~ySNhWI=T;1yCnV<~oy?}}^VU2;wlpjnDa9ye5D zXyf+nyDDy(6tr}rCf$rtSxMukpZaO0oE)^GB4kte2)4H%9~1>spT2%t{fgz7`}fD3 z8wjlEZa3vu4nuRfcL;+kEG4B+3eZEz>@2$UAZI=1`rK0D93uta2jRaA7d2+A??zy& zeaf7hd%mCP9LTylbe9WLZmU~G<>fT)-AmMj39UH~84dL_Gm1;bb@YVXQFQr-1q4Wn zoJ%Dv^JLj>Msk1koBy^0ey38Xa7`|71>e4e cg0ejR7m(A-_`C>WWB>pF07*qoM6N<$f=MQU&j0`b diff --git a/radio/src/bitmaps/320x240/bmp_radio_stick_pointer.png b/radio/src/bitmaps/320x240/bmp_radio_stick_pointer.png deleted file mode 100644 index 75f7666c7bdad65ef1eadf91b8b7ac3a23b502aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 646 zcmV;10(t$3P)<7lk4CK?^G*!Jug}Z;FlgCN1mzmg!c^ylTZvX~j&rc=n8Rr>A8Z zem*DdyLY6Oh)XMG$`7s0zdFNVb7RqBd;1R0D?S5)fn<_hj|Nbq(Z3e;0Kx8V)Mymv z^(zcT3Fm!p|8T*14y-Az;~WQS0cx-HAp(JFSz(;NfZnkefFq&MKHwaH;^TJ!2*V)I z)m2se$BH1>(*r=Wrquz50Yec&=m0{~K#1)J0F>ORpa2@srbuKOz_)FRsnqsjz5%v*OxM*PjmS>U>)cOW-DXgc`*{XcftrC zi0fKiNGSS(=jBEU&fJ5n{Uzi1#gh0wFaeuB(&*?uq#Qw0f;czvDoVpmH+?%07*qoM6N<$g7o<%^#A|> diff --git a/radio/src/bitmaps/480x272/bmp_radio_stick_background.png b/radio/src/bitmaps/480x272/bmp_radio_stick_background.png deleted file mode 100644 index ceaedf40691180db9ebbe4142b82e4c18fcbd534..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6382 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 diff --git a/radio/src/bitmaps/480x272/bmp_radio_stick_pointer.png b/radio/src/bitmaps/480x272/bmp_radio_stick_pointer.png deleted file mode 100644 index 9c7808629dfd625340ab45e77d87fd25f0946fd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 788 zcmV+v1MB>WP)xYXo*r|)BxJnMhT>9j0=;-7^55G!Uz5b zuGE!o)Tpc^D!6f_e}IXa_*xhj;)0lHz>N`1d=Nz_0zN3kAbriWb6hYTi_-Sn+;hM4 zo$t&&GjkOc@FNt877eveMAic+r6!G{^sk$k_)@6`K>bThhQo2Cq!-w|Y=!U=)VbC~ zVxXqs)W+}`M0x;S?I{2UxX?O2(Oc1QIubf9aNWxoKI-Ff%#L;d><=Hw4-P`H;7LAP zcF&&aZ|DDO_jTj?ZBvm@VJZ@msYpm>4j&SGbX5L@Jvu5gM-EF#_cao7jyE-(DEHC; zT68yH0GM00u=>tje9`ECjeXH5tMA;!+`6??tPTbmx`17t;aDURRB)g~1h4d<0)dLd zQ+_|etG%EWr?suFzNOhPP6Dd{bc0A-zyvVcJG}1IV8&vY9UTA|3bohoZvhShXa`!n zBW>DL)6COu-t5J#rV#*k0!k|_Rw*I2wM=ORSoYu05eH}j)@YDKDPa%41(DijB3Q#i z-ZoJvF1TS(&jnV#0_FjV-@lQ2`n0BBuCI^c^z>pZV)tdUNjH_(v3Kt*L~fPDzq&3` z7$2)>R!EHVtLuWdf1b^aWgVvo2$0kOhOe$$AO+y0W=S6HB=g`tV*Q<|*fyC5_epjh z!I_-}AT45DO3l4>C7*z__v=lD!}|p1nO4duajLNqv#kx3!X6nx(rK@OBjTJ&rurYH z)8Ad{CNQ|vC!U diff --git a/radio/src/bitmaps/800x480/bmp_radio_stick_background.png b/radio/src/bitmaps/800x480/bmp_radio_stick_background.png deleted file mode 100644 index d02028b74ef7d23b8e97ad715bbe24257a89d032..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9396 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 diff --git a/radio/src/bitmaps/800x480/bmp_radio_stick_pointer.png b/radio/src/bitmaps/800x480/bmp_radio_stick_pointer.png deleted file mode 100644 index 6c85424a76397b67bdfee2a8418dea3d42c66af7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1133 zcmV-z1d{uSP)ylth#3y`^iaI># zgZk2lJSZk=V*D43K8Q~)phV(>i2)2&+!_#!H7E!^IN{3`anO6L7MtWvfue zXTYsxg07opMWLQ)yE1vKSc>oMv#_C}Fe#Ct5W=!nR}<6V zKsi4a!h~s3^Td+`9}iR2+Y5#PfD?(382Fsn;X|m!MW3jxb?W3weD{H9bP!Oh0;fCM z-q2dS>6~PozEXhJJSzNO+O6$=7kynQ{ByNDB~l* z%m>=r*>LO_MoUXk7=Q={soC==sS6iyuZ-pW>kWBRRH@Au?9>myLe4J%glj$p1g@(H zLI>YQhSrya<;^e%y>$>73i;f7*R8t)*bmhDfWTwk#K5kHsJgSaJXlVszMk4=_xXI= ztE}caDVu;@IhNF5YPi>%80_m?6D(i1+h1o1VcZu8G-iRd0CKXmbt47G!@BMEihxFY zJEFGM=W8>J8XyR41B5iCY$z<0b#)a10c3+;uECU5WE$EINGT0twy?;Zi&hL&b927+ ztm7uLkDCDGEu*6|0@B{3^!f7@!P1xhM91Sk--PQVvX2b_Qe+P0Id4+pc+pW<(h|py z``22h&LvaxWCl!Tmu6!pyovVE5Xr&8HNo7eDPl)H^!a|V?dgY$Sv6mWl`X!Qd-sR@U%?z$VJu@SYhOnP{j z$0oGXSF?H_61Gw!$}mB1F1iucdVeC>fj=H7FX>?g`7EP8(-78`NZ zC%}$Q%WSrUxFM&|T#X(~Bu4uGojrTrPAz*vDc~Joj7+CRZ*2l-@34$l`|Ij<> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/radio/src/bitmaps/img-src/bmp_radio_stick_pointer.svg b/radio/src/bitmaps/img-src/bmp_radio_stick_pointer.svg deleted file mode 100644 index 9fac9d956..000000000 --- a/radio/src/bitmaps/img-src/bmp_radio_stick_pointer.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/radio/src/gui/colorlcd/radio/radio_calibration.cpp b/radio/src/gui/colorlcd/radio/radio_calibration.cpp index fb7818bee..2967b62f1 100644 --- a/radio/src/gui/colorlcd/radio/radio_calibration.cpp +++ b/radio/src/gui/colorlcd/radio/radio_calibration.cpp @@ -26,18 +26,12 @@ #include "sliders.h" #include "view_main_decoration.h" #include "hw_inputs.h" +#include #include uint8_t menuCalibrationState; -static const uint8_t stick_pointer[] __FLASH = { -#include "bmp_radio_stick_pointer.lbm" -}; -static const uint8_t stick_background[] __FLASH = { -#include "bmp_radio_stick_background.lbm" -}; - class StickCalibrationWindow : public Window { public: @@ -45,26 +39,89 @@ class StickCalibrationWindow : public Window uint8_t stickY) : Window(parent, rect), stickX(stickX), stickY(stickY) { - new StaticLZ4Image(this, 0, 0, (LZ4Bitmap *)stick_background); - calibStick = new StaticLZ4Image(this, 0, 0, (LZ4Bitmap *)stick_pointer); + lv_obj_t* bg = lv_obj_create(lvobj); + etx_obj_add_style(bg, styles->rounded, LV_PART_MAIN); + etx_obj_add_style(bg, styles->border, LV_PART_MAIN); + etx_obj_add_style(bg, styles->border_color[COLOR_BLACK_INDEX], LV_PART_MAIN); + lv_obj_set_size(bg, CAL_SIZ + PAD_BORDER * 2, CAL_SIZ + PAD_BORDER * 2); + lv_obj_add_flag(bg, LV_OBJ_FLAG_OVERFLOW_VISIBLE); + + axis[0] = {PAD_SMALL, CAL_SIZ / 2}; + axis[1] = {CAL_SIZ - PAD_SMALL, CAL_SIZ / 2}; + addLine(bg, COLOR_GREY_INDEX, &axis[0]); + + axis[2] = {CAL_SIZ / 2, PAD_SMALL}; + axis[3] = {CAL_SIZ / 2, CAL_SIZ - PAD_SMALL}; + addLine(bg, COLOR_GREY_INDEX, &axis[2]); + + lv_obj_t* bgCircle = lv_obj_create(bg); + etx_obj_add_style(bgCircle, styles->circle, LV_PART_MAIN); + etx_obj_add_style(bgCircle, styles->border, LV_PART_MAIN); + etx_obj_add_style(bgCircle, styles->border_color[COLOR_GREY_INDEX], LV_PART_MAIN); + lv_obj_set_style_border_width(bgCircle, CIRC_W, LV_PART_MAIN); + lv_obj_set_size(bgCircle, CAL_SIZ - PAD_TINY * 2, CAL_SIZ - PAD_TINY * 2); + lv_obj_set_pos(bgCircle, PAD_TINY, PAD_TINY); + + for (int i = 0; i < MKR_CNT; i += 1) { + float angle = (i * 360.0f / MKR_CNT) / 180.0f * M_PI; + float x = cos(angle); + float y = sin(angle); + float r1 = (CAL_SIZ - PAD_SMALL) / 2; + float r2 = r1 - CIRC_W; + mkr[i * 2] = {(lv_coord_t)(x * r1) + CAL_SIZ / 2, (lv_coord_t)(y * r1) + CAL_SIZ / 2}; + mkr[i * 2 + 1] = {(lv_coord_t)(x * r2) + CAL_SIZ / 2, (lv_coord_t)(y * r2) + CAL_SIZ / 2}; + addLine(bg, COLOR_WHITE_INDEX, &mkr[i * 2]); + } + + calibShadow = lv_obj_create(bg); + etx_solid_bg(calibShadow, COLOR_BLACK_INDEX); + etx_obj_add_style(calibShadow, styles->circle, LV_PART_MAIN); + lv_obj_set_style_bg_opa(calibShadow, LV_OPA_50, LV_PART_MAIN); + lv_obj_set_size(calibShadow, CAL_PTR_W, CAL_PTR_W); + + calibStick = lv_obj_create(bg); + etx_solid_bg(calibStick, COLOR_WHITE_INDEX); + etx_obj_add_style(calibStick, styles->circle, LV_PART_MAIN); + etx_obj_add_style(calibStick, styles->border, LV_PART_MAIN); + etx_obj_add_style(calibStick, styles->border_color[COLOR_RED_INDEX], LV_PART_MAIN); + lv_obj_set_style_border_width(calibStick, PAD_SMALL, LV_PART_MAIN); + lv_obj_set_size(calibStick, CAL_PTR_W, CAL_PTR_W); + checkEvents(); } + void addLine(lv_obj_t* parent, LcdColorIndex color, lv_point_t* points) + { + lv_obj_t* lin = lv_line_create(parent); + etx_obj_add_style(lin, styles->line_color[color], LV_PART_MAIN); + lv_obj_set_style_line_opa(lin, LV_OPA_COVER, LV_PART_MAIN); + lv_obj_set_style_line_width(lin, 2, LV_PART_MAIN); + lv_line_set_points(lin, points, 2); + } + void checkEvents() override { int32_t x = calibratedAnalogs[stickX]; int32_t y = calibratedAnalogs[stickY]; - coord_t dx = width() / 2 - CAL_CTR + (CAL_SIZ / 2 * x) / RESX; - coord_t dy = height() / 2 - CAL_CTR - (CAL_SIZ / 2 * y) / RESX; - lv_obj_set_pos(calibStick->getLvObj(), dx, dy); + coord_t w = (CAL_SIZ - CAL_PTR_W) / 2; + coord_t h = (CAL_SIZ - CAL_PTR_W) / 2; + coord_t dx = w + (w * x) / RESX; + coord_t dy = h - (h * y) / RESX; + lv_obj_set_pos(calibStick, dx, dy); + lv_obj_set_pos(calibShadow, dx + 1, dy + 1); } - static LAYOUT_VAL_SCALED(CAL_CTR, 9) - static LAYOUT_VAL_SCALED(CAL_SIZ, 68) + static LAYOUT_VAL_SCALED_EVEN(CAL_PTR_W, 18); + static LAYOUT_VAL_SCALED_EVEN(CAL_SIZ, 120) + static LAYOUT_VAL_SCALED_EVEN(CIRC_W, 10) + static constexpr int MKR_CNT = 24; protected: uint8_t stickX, stickY; - StaticLZ4Image *calibStick = nullptr; + lv_obj_t* calibStick = nullptr; + lv_obj_t* calibShadow = nullptr; + lv_point_t axis[4]; + lv_point_t mkr[MKR_CNT * 2]; }; RadioCalibrationPage::RadioCalibrationPage() : @@ -89,21 +146,15 @@ void RadioCalibrationPage::buildBody(Window *window) // The two sticks - LZ4Bitmap *bg = (LZ4Bitmap *)stick_background; + coord_t w = StickCalibrationWindow::CAL_SIZ + PAD_BORDER * 2; + coord_t x = (window->width() - w * 2) / 3; + coord_t y = (window->height() - w) / 2; - new StickCalibrationWindow( - window, - {window->width() / 3 - bg->width / 2, - window->height() / 2 - bg->height / 2, bg->width, bg->height}, - 0, 1); + new StickCalibrationWindow(window, {x, y, w, w}, 0, 1); auto max_sticks = adcGetMaxInputs(ADC_INPUT_MAIN); if (max_sticks > 2) { - new StickCalibrationWindow( - window, - {window->width() * 2 / 3 - bg->width / 2, - window->height() / 2 - bg->height / 2, bg->width, bg->height}, - 3, 2); + new StickCalibrationWindow(window, {x * 2 + w, y, w, w}, 3, 2); } new ViewMainDecoration(window, true); diff --git a/tools/convert-gfx-list.csv b/tools/convert-gfx-list.csv index 11176773c..05c29da45 100644 --- a/tools/convert-gfx-list.csv +++ b/tools/convert-gfx-list.csv @@ -2,8 +2,6 @@ file,width,height,modified bmp_bootloader_plug_usb,111,59,2026-01-13 11:36:16 bmp_bootloader_usb_plugged,52,54,2026-01-13 11:36:16 bmp_logo_edgetx_splash,271,257,2026-01-13 11:36:16 -bmp_radio_stick_background,90,90,2026-01-13 12:46:22 -bmp_radio_stick_pointer,20,20,2026-01-13 11:36:16 mask_icon_edgetx,30,30,2026-01-13 11:36:16 mask_icon_menu_favs,30,30,2026-01-13 11:36:16 mask_icon_menu_manage_models,30,30,2026-01-13 11:36:16