From abfff9fd869e4e8e292aeeff2c15028fe814d7c7 Mon Sep 17 00:00:00 2001 From: clydebarrow <2366188+clydebarrow@users.noreply.github.com> Date: Wed, 2 Apr 2025 20:58:41 +1100 Subject: [PATCH 1/5] [lvgl] document canvas widget --- components/lvgl/widgets.rst | 128 ++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) diff --git a/components/lvgl/widgets.rst b/components/lvgl/widgets.rst index ae7cbb5abb..2ca4ddbe0e 100644 --- a/components/lvgl/widgets.rst +++ b/components/lvgl/widgets.rst @@ -607,6 +607,133 @@ The button matrix widget is a lightweight way to display multiple buttons in row The Button Matrix widget supports the :ref:`key_collector` to collect the button presses as key press sequences for further automations. Check out :ref:`lvgl-cookbook-keypad` for an example. +``canvas`` +------------- + +The canvas widget provides a surface for custom drawing operations. It allows you to draw shapes, text, images and perform pixel-level manipulations. +All options are templatable. +Where a list of points is required, this can be provided in the form of a list of dictionaries, each with templatable ``x`` and ``y`` keys, or as a shorthand ``x,y`` pair (constant integers only.) + +.. figure:: /components/lvgl/images/canvas.png + :align: center + +**Configuration variables:** + +- **width** (**Required**, int): Width of the canvas in pixels. +- **height** (**Required**, int): Height of the canvas in pixels. +- **transparent** (*Optional*, boolean): Enable alpha channel support. Defaults to ``false``. + +**Actions:** + +- ``lvgl.canvas.fill`` fills the entire canvas with a color: + - **id** (**Required**): The ID of the canvas widget. + - **color** (**Required**, :ref:`color `): Fill color. + - **opa** (*Optional*, :ref:`opacity `): Opacity of the fill. Defaults to ``COVER``. + +- ``lvgl.canvas.set_pixels`` sets individual pixels: + - **id** (**Required**): The ID of the canvas widget. + - **color** (**Required**, :ref:`color `): Pixel color. + - **opa** (*Optional*, :ref:`opacity `): Opacity of the pixels. Defaults to ``COVER``. + - **points** (**Required**, list): List of points to set, each with: + - **x** (**Required**, int): X coordinate. + - **y** (**Required**, int): Y coordinate. + +- ``lvgl.canvas.draw_rectangle`` draws a rectangle: + - **id** (**Required**): The ID of the canvas widget. + - **x** (**Required**, int): X coordinate. + - **y** (**Required**, int): Y coordinate. + - **radius** (*Optional*, int): Corner radius. + - **bg_color** (*Optional*, :ref:`color `): Background color. + - **bg_opa** (*Optional*, :ref:`opacity `): Background opacity. Defaults to ``COVER``. + - **border_color** (*Optional*, :ref:`color `): Border color. + - **border_width** (*Optional*, int): Border width. + - **border_opa** (*Optional*, :ref:`opacity `): Border opacity. Defaults to ``COVER``. + +- ``lvgl.canvas.draw_text`` draws text: + - **id** (**Required**): The ID of the canvas widget. + - **x** (**Required**, int): X coordinate. + - **y** (**Required**, int): Y coordinate. + - **text** (**Required**, string): Text to draw. + - **max_width** (**Required**, int): Max width in pixels. + - **align** (*Optional*, enum): Alignment of the text relative to ``x`` and ``max_width``. One of ``LEFT``, ``CENTER``, ``RIGHT``, ``AUTO``. + - **color** (*Optional*, :ref:`color `): Text color. + - **opa** (*Optional*, :ref:`opacity `): Text opacity. Defaults to ``COVER``. + - **font** (*Optional*, string): Font to use. + - **decor** (*Optional*, list): Choose decorations for the text: ``NONE``, ``UNDERLINE``, ``STRIKETHROUGH`` (multiple can be specified as YAML list). Defaults to ``NONE``. + - **letter_space** (*Optional*, int16): Extra character spacing of the text. Defaults to ``0``. + - **line_space** (*Optional*, int16): Line spacing of the text. Defaults to ``0``. + +- ``lvgl.canvas.draw_line`` draws a line: + - **id** (**Required**): The ID of the canvas widget. + - **points** (**Required**, list): List of points forming the line, each with: + - **x** (**Required**, int): X coordinate. + - **y** (**Required**, int): Y coordinate. + - **color** (*Optional*, :ref:`color `): Line color. + - **width** (*Optional*, int): Line width. + - **opa** (*Optional*, :ref:`opacity `): Line opacity. Defaults to ``COVER``. + +- ``lvgl.canvas.draw_polygon`` draws a polygon: + - **id** (**Required**): The ID of the canvas widget. + - **points** (**Required**, list): List of points forming the polygon vertices. + - **color** (*Optional*, :ref:`color `): Fill color. + - **opa** (*Optional*, :ref:`opacity `): Fill opacity. Defaults to ``COVER``. + +- ``lvgl.canvas.draw_arc`` draws an arc: + - **id** (**Required**): The ID of the canvas widget. + - **x** (**Required**, int): Center X coordinate. + - **y** (**Required**, int): Center Y coordinate. + - **radius** (**Required**, int): Arc radius. + - **start_angle** (**Required**, 0-360): Start angle. + - **end_angle** (**Required**, 0-360): End angle. + - **color** (*Optional*, :ref:`color `): Arc color. + - **width** (*Optional*, int): Arc line width. + - **opa** (*Optional*, :ref:`opacity `): Arc opacity. Defaults to ``COVER``. + - **rounded** (*Optional*, boolean): Round the start/end of the arc. + +- ``lvgl.canvas.draw_image`` draws an image: + - **id** (**Required**): The ID of the canvas widget. + - **x** (**Required**, int): X coordinate. + - **y** (**Required**, int): Y coordinate. + - **src** (**Required**, string): Image source. + - **angle** (*Optional*, 0-360): Rotation angle. + - **zoom** (*Optional*, float): Zoom factor 0.1-10.0 (default 1.0) + - **pivot_x** (*Optional*, int): X pivot point for rotation. + - **pivot_y** (*Optional*, int): Y pivot point for rotation. + +.. code-block:: yaml + + # Example widget: + - canvas: + id: my_canvas + width: 240 + height: 240 + transparent: false + + # Example drawing actions, executed at startup: + on_boot: + then: + # Fill canvas with white + - lvgl.canvas.fill: + id: my_canvas + color: white + # Draw a blue rectangle + - lvgl.canvas.draw_rectangle: + id: my_canvas + x: 10 + y: 10 + width: 100 + height: 50 + bg_color: blue + # Draw some red text + - lvgl.canvas.draw_text: + id: my_canvas + x: 20 + y: 20 + text: "Hello World" + max_width: 100 + color: red + + .. _lvgl-widget-checkbox: ``checkbox`` @@ -1435,6 +1562,7 @@ The ``slider`` can be also integrated as :doc:`Number ` See :ref:`lvgl-cookbook-bright` and :ref:`lvgl-cookbook-volume` for examples which demonstrate how to use a slider to control entities in Home Assistant. +.. _lvgl-widget-canvas: .. _lvgl-widget-spinbox: ``spinbox`` From 6b65eaeaf6cf02ab396376b9337ed085d8e53629 Mon Sep 17 00:00:00 2001 From: clydebarrow <2366188+clydebarrow@users.noreply.github.com> Date: Wed, 2 Apr 2025 21:02:34 +1100 Subject: [PATCH 2/5] Add image --- components/lvgl/images/canvas.png | Bin 0 -> 20898 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 components/lvgl/images/canvas.png diff --git a/components/lvgl/images/canvas.png b/components/lvgl/images/canvas.png new file mode 100644 index 0000000000000000000000000000000000000000..4619c8c0cda2b14ecd4d240d93a76f635de3ef2d GIT binary patch literal 20898 zcma&N1yozzx;6?;8(OrK777$E?(SCHp}0eFcS7(`+}#Q8UZA+UySuv=x0`-@pL6!T z$&wS;Xk|23mF%(1`L^wD&6bW(R@38wB92`90EfAJM`Wh4k2ZvZ@ zCL|;;AtXd7Z*OC4W@!WmCms}+fS`o2kLmrA^e1xc6?)_cS1~U59N)2TQ94$>Uj-gPuHx{zC9 z`$1RYnO6Rn@~n>SAWk@e^|#~>-KjLba)gJxVieJE-bEru{`DW$UxSEB$i5*8tFg5g zDn5Gp#E@f$rT+;EHzY1WfrEA#hkS=8Od@jDKqdbaB!nnDr_#2K^nOHWj+vS|CB&Ax z!#FVF{d&;tpRLv|i6_k=L$EX(xAKT$vozvL0zIbjugjOw+4ELXYDKQJ&e!TWEDCyG zv!WU@9WOBBdDffhN47CvzZ-lSAmt82L$q*C_F)!>L$I!<6n`@jT(apLmCP zDs`t=LVl5K*MAq5?qR7CVFu@7Gupf1M36@4Mq=Wz4|6`wfhTE30uiC-`UA(rW;sos zP{KA7vhvoZ8=7<7`|YYNH&U~4$i>P$^VQ|+(4@o-7qFEUw0t#GE_6wk;yh~igR%eM z6F3RpzLA4mvPIR$J(Ah2bNiGb4eul0Fd?G2_eWcJ0z&}KnMn2Lw}NDPKi%Ka%Q20= zXVy%l-^kCCFh$wH4yTV8;3a?!!9I^Z>a{-LKS3-Kg5(uv?@T3j*7DD(Q zm?ij1?KKA>iXl9D-}pIZh-4o<(P5-f-BsWpwO7+9#W`}LAf?Sgk88;L=ens2Q7R%m1ZnM?3yBu0YG=Tj z@hy)#UJGDwP4$cdG2^4WQY_y9j))kef_{Op5~8H9282p9F0)7hrNCK<`~XwZA4k+f z)L{H03yM{kvlv2_!Pu8SAO0Zz0Xn{Ez+4V(32gB@5sJuYHR$_n6-wHJ(%I2v@SU+f zkysi#4>;*t?_2*9yUo4rN2O8;<;)x0K$*5YgM=UKdLVt=%H0ayInN^s)PTt@^$i|d zeGWERAL@?dF1(Jk?yC);ZTcCa3vUze3PE}x*4pga;2FZX$yxKQ;Nxe(Bt2 zU-u5O4$p7g>p*>P22mxV*bxGFmcvX;x|Vyf=AQc@e{X#yZAQLq)^ZDF(y)JJ>so zLpB<1n6j8=m~oiwH2P8|QZ3tbgZR{;am8_MMGFT|*8XJuGy_;GO@wORRjM0I{@L^y~e!$@*w%Jh-!%76%dD7ifZ$P77rZW zh>7PdmXioBX%#Jv^UCcGUW ziEV3bw2&J$E*jM0aMll7AF6rwelSpSP}LFNst1Y$QsnS{L`6Yd#<_Qap7XRf#WTF` zL0rVS{<_5CE^*uc)>7C-*r@ALys^(HDor7_pj!bUn@{*b*e2NXqX8yK*nXgLu=aaR ztOv#s_A(Y(On!1t@Z;6%($}8fEQskC*(%BG99vc&k1r80IcO;~Y(bg(9Zi0!SZ1^X zT8^%j6F;suHYE~s>T-Tc=+5gOnO~bSQP)#}eLJ^~)|xh49ct|YT=1K|ujmDfNtz9W zC`C+_77Cf^m>HRMx|6l~ypZuSc*x!NhE{|Eus4(JlETz)OL9usAVq{iwv3wW-1LoN zrj#@v2IA{z=UWVgKhhMT3vKvqs086K5jsf>=kSX^*z-70Iq+@w?BI_o_G4^0ZEJ3o zj}p+F(ccA~$^)fvf6(?NLn$WB^zS4+l$}-4ZALxh!6u(lLE+Z=&QF}VXS!B(% zSSb(FT+}I0tShQ`3GgO32>BQyEOIkbU%q%raxeBAv3!U(bE@^yoT%wu+Vwl9Wa|(( z;%~t}|D^OhdD{~kww#j6e!LR8Of%;W3Ym>x_#QXmGx1!SshLtc{`-@STdT+Ub+J*n zk(={-kT|GsKxjY{gmb*qbZH@?(VZrlKF~vTTy&*O0I~yJom{UhSBRO&^+W0TFTGk? z+4XE3Y9yTI`HosrJw|VOPfj2Go~5+IRAeNEYXLrhUkiN;Ax?BoP6#z<)z_bex>IESF7v$uJjcz=di8_TPp_XPx|{t+0U{(>3HY^Rc(}fI zaPpDZJ{(@=WzdhN2fBLEZC)FN^KRc$;Y|gmx?H+=5ZcfUlS*C*^y7L5jZ-Y(wxOb4 zu<`=rMh-E2M4q*9mae;_C(|{iAzlMhG%pDaFNF}EgVjH+aFiCvAop3hdl-RrF;bH- zmXU#@f~DWWy@CG#2Y{vEVIMen9Jn|Cq~YKs;c@>v{T-g--+5la!3CJXz5aI|4cPtf zB@X+-r2lJo%F^0_%Y~QtpB!AU^xwzy#DxE3 zakStiR+Et@6tb~5B4ndupkpBBLnI_5;`OJ9~A(ltQSD<(yX%C!yGvLo7;3l`;# zGxNKtZV&Mec3sH-r;j5Th@*|as@0(xSfd}lU;i5XdM>`d-F@GGqVGm@_7#{Yg|vGX zNmCL+KV6sbJv>3PMCw;%!Z#8czt0JpmGt>n&Q1m(3kOFFt-(UuO^qk)y(0gUcv1B} zjw3A>A(qjJ=UPU4EM~wpFLCMmx2}LYOsBmL?NEV(|3)%4|(8i5@tIPaZ!pH50&;A8gc@iTR=$?gk)WO{yr7S%KZl(ory?P>Y!#3Kd0s zQg)y}x`!3+d2Tx7&a{DvZ*VVuNiEQLpY86R$FABta{aWP7cz;;L-_U3tp+nZ{SG0Dw zjcH56t>V^In+c?cMf8Gy85%hjq##9wa*3gP5#bT6 zUeFBBRozOPiwE!#^Vl=D;Z#u54BYJBxttMf9M*^InLZKfm?&VKZ%8exiTUdj?wg>AO7m+XQb^}aEO_E3@!MJteZoQ%M&bjlm}-l|2# znQ^t}j%4iSj8KrgZlpoQMYfvV7-}-^H?Dp)rxn6ExH9m|l$Jy`a16o@J@X}J8R0rC z={cA##+dKx6Mw}Xe0DY#IRnbh&cqP6-OdPF1Xq{!l;WEn z=hJB)_D*o2Qdc?RHT)^`P;U3|1OkCvI7Z!PXMaY1U$(cm3p=m1LG}q=ZhI$ZwLy5M z2LXg7l!F~aonsBOBSRMPmZF0{hjTNkEIpWpFW2M68tkT(Rj(`;s{1{*sdceiuNN%H z4e^}Y3(GV}z`=2;Z}kpi%y>66Moo4%$7ebU76-)Vc^D#G==D-q_cRaHp>bwjVN!JU zIX4qh^v8>p1_3b*DIbZhgx+7Ph^B7^m|nocROF4Fc7`Bn1mWPwz_;oh0J%({8Sbo> zgUqPSV~-7TtpUdl?(HaUqw=L+7;7g<>h`Icx~0NC4n%1et3da4cuAfU?e+^+o$(79=tJ%0aFY%4K- z0XKRfjIAlB#K z5Zf8fL5OfApjdWpJ#K^=(v^}scqLCxjRx~otx&1W)I|vbIdKy?Y3VP?$;m5rdt+xe z&zFs>UN76KTIa_R+8$TIs#;*uZ|m^P{+K=*2ZRMwFpObM55EaknAyhcBS|srY&$tQfWhNx;iDLe^^8}j!YZcU4MAB-IN2*^Pt1hTI2d`3nYCZXicr7LUUJ{St<2IrbPdZ;4lFCWjEc6PnOD{ z+;f^*x7u#9$LYfEz4OX731w79(pI~$&`7wo9w8@=eSZuxn^6c;c?HJP$|viFd7m(R zPIAM!4D{r%Jlu~d@RjZGUwGJpl5$i&IP8JNK^Ge2pN2b)^s15wvVT`{m<|^^=}Wa? zo1@kQ;J7zWW%=?fl*tIE&sexo=1^V=4p(vPNgCuaUJRq>*r@TDeOrhGR&#*Eu1)NJ z3KgsH7A|W|S+Ux9wc;*T^@c6q>W&=GA8+M#v&y-JYT6x`$y$eM2G|svUe}Ln*Ea4i zvp4o^)uo*19w(=af}V=QohLC2K8z2sy#3rwjW)29*jMJZ#dWi`{t)BzrE$aMrcNfp z;i>uQV$GnVaga2aR5$u=tE<}W#`>lm&10_l(TLum7Y|f|i;X9P`%Z>ZPX2sKJ3crd z`>iH^-OY6_&sYTCeSv0;d0dPZnfuwAE+3N9;&1I;&x&J&6Xn*&!Tu+xCCgd#tsm-U zhF2=Gb?cM!jaSPbqZ^BIk1$Ola@irY^g%sBJGw%VU6pDJj1*||5NTKr9GYMX)4`{0 zO-dyV>uiK5(aVp&SZy`I};ErUnRj4aHblW?)hq+GMgx#ln?PbAf}8jl;)kQqmv=3c$y zd^ESe@@Hq&x%K(5+yRUKxbWg!qWE{D)NSu>itf{{mz}DXogXePfdk+PATi({5D){t zf4E<6@py>FXj|_Lz;HQRt9a<-zs0yIE`N?&nBls7c4Q?>7ndCfD)$NzuK#B4@QSs; zWE46x&-|sq`bV+fE30NomG2NbS2W8;A4PROGlD6ewW@ID5sqx|-WU-G7UEEvj!SJk zN>h*7`=97PZd>QQ|-QFJLX*Vn=|UdhyBe zcvsA~%<6ZK@f@?cZS0y;Ww=X!{6n-OSPXvs+M4fjCFeF^YFO0+R%&2H(csiymZjR1(JU0KjGfgwG#?pZ**YenUU%D0^f8>tKbX& z#N%)oTlSb;mTmd8wekW%s}svzA8~u!jM2WLFZ0ZQ*z4unIcdD%yP0zskx0G~B6tpb zSeR|udEQSibIP|~rb5&HT`%W(F)0hpXs8nE<-P02B5OQ7)w*K?Efi`lJFzdVc^=lTY>bVi-yQMSP0Di1;55!^(?2FOZCw~* z^-5%y#i;1WVk(AX<4D@_l8X{0NDbV1I6VDmx8NNzDLk*l#)_ zRGS-Gt~}(rquOBnrHRPLOH6P7j+c{WxTzgQ`ejV!q+Zdu zYuQ)p+kh8u7=EpnVe7+6rcJ%#{is7gPr&l+9~XN#1T>~S0W3Br6tL|^S?e`dmJd18SsRy=S{wlA^O41z(S@7iXPx zAVIgn`PW@Q-BP+6za@nR`^T1DHf8!DF|U$8bFMUjt627l%=Wl3UeI_Sc9I>6^r0=f%y(o2+#t&HlYm%9e;o>J$>UnB-Dy zV9Lajm3qEBN#8Pu7rRprBd^Oyx@Yd79`)TiEbVKglb#f7=TVOn(i59Vp+8<;BN!0a@(QZTSz>|b+WSSSduXSgH zn;v_ij5S4qEQmWTXg7D+2K@;tFb5vKwerVzGs0o@ai(@D4YagV_H@8Mi0To%SnJiQ zS!c9S&fF6%rLv~}?ynt5}yuuu2kht=S9yJWJ&|J-S^EMdG$(q8L(mw(loV_9A}QhX4~}D=##-sf4Tppn3$|>?(y+uYw{j@zy7dftDztxPs!g>q-0`!J6=1O>SN_a- z6BA|A2wxv@f`$8~t^Fr5SHBPq9+glToZa^*H-wvxU4C8XHfRo*uIbEY%j|-_`6wY8 zLCMBtGbQF>VOQIglJ6sEH4^xEOU}11%eDU%G;c&N4gJvi?9{r$cQGE(xVY`9ir-Lo zWp5d&joC;A6;22DVE6a0*BL}O$<^;=8TRt($i5$Y*udgHbRH05O#KYKp33k4N!Q=V zbLX|goDSW>Bv0IC+Zv!P?C2~8WDvaO zGVRt#$i@V(a798SNO1I^`q)( ztTSkDFRr(4GJ=bja*K=q+eVXj9h!(Dx)^fCcxa>qx>H|!z!!J6&tS`yuB0Y`@So4D zD34w>o&~nRavMK2Zs?;yKw-}?`)VkAK$ry)?#Q>C z5S|SjjV~++M@=NBM3}ha7DxK#9$`Yt>rQ$<$kB@KRS7ni7B+41O$#@W@SyZ|Z6CXNIB8LcUecP+EkWUr0TA*L zgP4mgTy7iN7U7zU5NqKL37(0J3`UMxce_~`30W324rld)uN~J&a=_SqQU4>m2yS*x zLWD3c9-nrO1?zYcak_L;v;u9Gk0HYy^42~wpP48+MlJNx(SXROAixNht#fB{Jn~~m zq~T3_%nZj5ASMYw0`mJ%erJ~!{}9tJ_4LR>K}ugAiFzaza_78{LpaXP;9k6n>=vKDT6~rP zroLy=-BduZM;)H5latkXRfSV0#Q3w#_Y2O=IR!#B0@RsJwM;ANYlc{h(kjV|TBgY> zG%Hil1oR$c8e!m8%-bowLxSNo-2v7!G#nYHl|?3#2@gc90+rMH%hpmnG~{&qV>DC{~s#Z$5~KWiZ>?dt?1 z;4%tc(LttA=AuP9-B&d_9YUA(2s^nBMN{FXmX;dN==X*fA|-W)ecW{5 z`Gy*?XCgq$J%zGfRT>!saW3=N{F^2Oe_YMZ9C-cQfCw>gd?;5E!&IBCR&NG@0RA5- zu4yyftgjc&B()PnI5Z=?Zh6b|CWHLd5hTNHGVCaI4kP)EG{b;kPn0 zx6&5B!(#lANyf2EQ#jFQ?mn2W)sM8lxqVbi%A3SfLvG)-@VVFyt-`smQQ1y7-AcbE zBfwCs2qko0P!<|lzQ+Jdt`1BwX*_k%)p)QL&}X81mubrUw82d{joj|Emdzdk?)ZGB z0aR7*D8|oiNYAc-`}3{ENH(kfq+N`+tO6?jffh_lKkiiwmd1c5jIQJt+P*W(NV7Xtm~Y8-ZfN zt^akohyMnu6U_o*YsNeEFCo$J+A&?U$ZtfOBU2x$?#FsdAc^5 zb=L7r$E^m%^WS^^$+NqoR8_Fd_YiRZDkGV173h6)a%yLAK`7%HKY$WA`m+kgri)&1WQd=laxHUufi>o0P4fAoDbVrg z&!_b!V>p|*t(L2(=w!-uq~o9Q`9lYSyHyY;U#+(;U9{5C1|#+hVr1d|?W3A$ZubR^ zkMj??kgd@l;#Hx8Vm+ho6GS&YCdlMrzXhRM+5KXuQbHl_Z(rslo;}Aj%UtG~_woal zgHp(sPFpSnZ?>4blOElIWh}NvC&E~|ey`8;j|%4})b5q<#JW`uUCmAQ!~p$Pn4ugS zI%ks)hNyQ2KPJYqNhVMHMsb`?(x|w8bsAXjmBvxO>Iw+3E&d8jmCxHE4;baNTWXfs z@w%`7P&d@7zC*xC!*9<%<5=$b%m>;Y+&+KUa{Q5=6iHFS3xHA!Yj(!ZFv{nF9eP68 zDs1d2*Q>Fu2>Cn+BAkPy`D}j5AwPAMclU#}NfHWgfjbx@pPdt4mYi!<=&Z)w-=3S$ z&5_8EdiBe1HC}UpW@hYeO31?`NM!2u=hG^c%hXx-{Z*v<>F9=uZr21Xz}(JqjYy-| z4!dcLWR0a~TQ7OO^*Ve%oi0i%(!CDoK>OXd4h(0^+dB8DX(u;cSAy-m-CmR0E+_go z9VR?SY^8CsasKWb>INsT&TCJ-AN5jME~$bp+s<;dNTnNSQ^>YzQ#3EjO-En$PAG5w zT%K_&Uo_5KIOtmh*ru&6lwy2sp-}<;I#BP8&BuxkxLp99m1F!asugm=R50~XSHVVZ zekd{?sW=P#TGU^dw^)z6UNa&`^2@ECl1RbxF4t|jJ7P8F(e}QIZqMoTc8UySDpx+Y zhOn%uE7r9tZ~o*w@B1*h>OPfLVI)kapT87wqP4wp-X3rDiLmRdWW+E=aZ zOrRVGIyYIz_8p0ii`Lloy7$+~h9@(l>t z@8$zNEu*Xx*t?;jHnhejhHH>|HHqwaIofnKZ*McbR0b?J@`I}%8tF?w#YVL~s9`Ku zgo<`F;=rjMpAzQF61yG&J~M&hY@?dB13Sqv-QpiU8|tr``_#Xo3DGwlX)&KH=xmXP zE_v3|tT;=x;>MBx?wlACE5(oEpE_Pbf;x*QJ5TWLF3&Tkj%P}mtzJCk^7@lpF_ zkI0q_dr=w>ZRXcJZ)22$MnrbQzj7DwOvXQ`SK_5QuRg4MFW&gzgStoY?Qv)EoIwL4 zu9L^bIr9Y0qtO_>MV~NEo?a$)SDuoaPvRSA>usz%ot~;6+9Sl4W(?5kH`)I*E}k5M z2qJ-Tr|}X7sO00)ed(Zi*Q1Jua?RPs)5nCRI;5NQ7815!xCWtp^jkdy)Dqt-<>?z_ z8Ocot2SakJ<}Rv{`a)Q2;n@o%=iiJ+I#Vi{@E#a`!@2I~Jz4=YpEP?#_($doGs$u~ zPvO;?X(X#ZSLbQ1=v>~_oP;-?&0e2nZ;L}74}AVG;4}On7vqkQVOh!?*QqrEI8W5r zOTVMLX-C*Hi`m;mSW!jUAX1KK+=dd}q=sBK3SG1vB#)LlthThQKGmilJC(Ou*18$a zdgHEEeS2n`gs;`ddqx*M#J|2BwnyWep@wcjlC?I<ErTB<^c3-`#39Zu_ z$wRCDu7jRKgyssoCtL2hnmkDiyJc`%KtYimNFPac)O}f@x@o(HzX>Q`SbtutX0fU$JRstB?#K=r`;ECquUzgIMug>I(3y^7j zwEE)J$Be~a=aCQ5TIK|;g+vZ=WaOwhz{{Jy$CNFTL|9&~TC=B$hf8+8y_JjL`D*yq%*IP;JmRl)9XtKoy%#7<*2{&qoGxFfD;0$MOzgJBSYPA-+*n5-=!4 zbGKCMlunUQ&tB?uINRni*?ck@;oN#D^|1V|SGrE~RDH9h0R?5&_QkW)74&i~So5E`i5L&3RVmW?il%dT<~9uC{jaBtt8iymop*e)gqc)#EHg zvkQN}i_>nwV;#5Hu$Obp{(-}`j-+tcib_M~1ej$er^owNCrpf=E?M3L{1k7D+X*gKqFAEONI z7zeX~`Z?EGY;(H5`(^_8wy0mGrSQ!z-84{HY-`yK_T8W@ zc@Xkq!J~0C2WG@#tz114lxO3lQH+l}ZbkfsHM*~odObVotFKOCO$!TTRGU#nViPYK z1q;TTgrIcfUOH+g2{Dk?BjSYeMCZ~a*OM3wK?{k<0c$!we>>$;tu-n9+tkkn@_ZvW z3Dheyy0(z$+ZY77+ot-fC}lVN^>S@q+GqVYP@atFVU1@@uw;4Mu;=RY$Q==0tlKGi z(q`iD2=C)sb>rO*{2lwmMZyQ8evZN}1x;Y|LX1X}>hs0sHf-sP*O#By;pOROvwUy8 z#UJ61H{e48J6~=)VEAWs#dmze&%T&9UHr4cSh=2~owD?uX1Ri&Mso=rb`$lJJJRc1TYNomsz3xZJ{fi3jQbX>vH3>T)^DBg=q0Ra zkD(-t?;m@Sr=sCC7aKA;A+S>q@BMMqxF_qJVo9qSlCS6QTo%YS7y-+vkgO{t-o-Js zgoymv!?*w(j#+u?A$0nNGfr8IVFRG~sKEHbwCjo}&HJS5s3I)0HKqEm-&w|#%GUrs z(fYzyi4gFhfJP&!u>gr{N~LdvQcXB;hxo1HE_R@5ZI_89c3C!svEDONq(b&eGOF-5 z?GA4ZzQ%Cij7dxuyjjY}2yWYFTujymHh>u(R$ydpKU<%S65^>Z3!e9i&Q@l&_N{w3p|L z{@}s=cH$zBcCmWC;vQ@Z*nQ*>h1K>`@7n=7@kyd|Kg>=qw9r+BmSb{S)d;>1_Vqls zjiBn8{`7Tq{Nj@$<%5OcBB#=TH+%j&KJGjNKCpQ#*XJ-zG1wB$p8CQK9j2TBP6?!O5_s^A?7LJ;Omi8YVIHmZp~0Ee8UP7J>GLGEauTY( zjym}G&meaQTnVw)rNB+2MXip|(!6!zqs#OD-FX4J0 zX7EF57pSOcZ@(La$Ouqo)?-V`Vzs`S<5%t!KQ3akJrE#bqmZJW4(x#)X`70I6ros- zQUrGQQh&fLAHoyoNWCUaa%O*mVK}$u>gXd4d7CKwVe}}M9o!8*Xy+I@Yj7kVa zYYGCL0vhc{j%K+MJ@iFjtCb+{ElfA-ZC1LfH_Wibpt4p#1vb@3N}#z_mf1AMdW9we z>}D$(?hSm<>&^eRq=+!S-q)g+B7@##+F^^{B|{S`t72|e!7LS{>gdp$&~--XtDz@9 zG1gx{fDKeIaOqT(oY-uWx?P+$75BQSesb81BTp%1uiVq){G2JSg4F1)tCUt_{ic#c0=D;10JK8Tc4K%Jg=w}VTQsV-J zk#W}FD-ap$Wird##Z)%8JqzCA&^MBsTowgj@?N=6!j9MRrzwnr;EPiyIjMmQEB!BiBI5k8reV?o zb_6Xn8bdzG7eJbqbqpd`{8F~2IJ6x`7;9k7BJcbEv zD5TmMi+Y3$x9;G_M3ur41gjW%qe+uPKf24Q*9z? zX1utuxk7@Urjh2wJcrtT7zxaloxH(~m>!&{`JLog0I5+J?}w>k&1hgR@|SnmW2|K< zEH+kr+5~bB=K~=u6|?eg;VwgMOvBzMD9b}^cz=)4on|+)Wddg)cd2(SGd&Z0DX7r; z*1bp(V&e>4rZFot4Iz}H<7*s@J*yLIDcP{Yu(BUOM_|)c`KREGOdy?k`IY6QCRa{M zZoU;UKJ%Crw%VVC(ke(X89Og-x71z{WvFvVEDT(!k#gMDq6ou*B9tMxKU+8f4pIqP z21>9Y|G^YFjdYYN8Bz)hZv8tS14s2?%13jFymhTK4ZKcMprN<0FHUKaJ13f9qMxmE zPl2~dH_ep??BbY{Tk#a@mp05y*G-2w4hg6lwejSS|6k*Fxo?hVL69Sa@`a`E{agl3 znm&#QBS4A?(9ko;qKBh6KLiXYFdVe7Xu1-0ZC_V3O0Y-)EoF~GTmh__)>i~zCkK=Z>G zd4Q?}X0i@@OHV03?c~22&u*eOZc#e|EKA<|WBKtEQk=)IK>HnL*uzPy2m3v>zrLuZ zZTuU(UYhumRL<{=07gI`oLk{{wj$U{$}i408xEhrFz?0#sOMF#fp|0)Z*R+5ucm_C zJ52I}9f#V!_jw-|sx$r#@wV~#2MMooahI7vhA_CrfkO^B|Ka{%TtaIqX{Jh0o$I5L zLUW|Y7L1Fi03DAHbSlo(c+<;fDz62(rrHF5B12FHCb07qJ~CH)WzMi@k_N<&8~tcv zb7Es4FG3#PmN4QUXE4@-FlD4jvR9?84A7u>{G*XVC?$YNS$7VncZCLK7x2x$Zr@Ag zQ*125=tPNvjoj8Y;Z)m-H5$icL!8gs+pwcVNFpQ^=6E=Ihp0tK4vlB(SjU*cG@D^8 z$$$ff43WC2bp$tV%S{m`W{-V2-=&FE5ZQ zvy(R89}>udwJyonyIINX?yvRE|9`EwWqJC-p1js(gokgvN>PN%SdWNV&#nDhk|JKK z`L7zf8dnRtDiKo~>zSDlZgR?uL*MNyAEe6zu$=O)EcN1b7EZN7`HTs<0S#Csc_)66 z(EkK)Xo6_+KjTa3lsD6|4m_d%J}41F*AF9EA0n)caiMYQIQRb! zF=_~TX}7iqAHMfaYyn)2&WYk>6}lQ30j$#$hw1O7rd`%^17N=T7`|Mi_WS!kxF9`a z;tmoXz!7%Gz~En+67W_OA;<1eZt#0kUR6pO_22!2IGDv6`7ouZVlNNP!J^7g5R>oz zj}6q+s9cJJ9^{-F>h^u(-<9UPebr@g>Wk71<^X1IP8le+`bXFx z)v)D%1ruN9$i*dP+&XcG9a-zm@S8R^k|@4!OnPpa;xBsp^{#&%;h(QFzFZkj{l)hm);io0Ki@`UWkrI=T%pC3;U;(!s?$0%{wNKzz=eVW1Kh;i8o4m6 z=}9(N9NF`S1!~#_a*?Z}`zB`*oH?$d6j?y=`bEykTvlr$q~vcGBpZ@S!{Xs*S)4q0 z2H=`6xNs6f2)AX-ICZx&fR0_iJrF4!z85a#~x`d|aL(X_YY#{pB!9&HnVDhgFi z2)FHy+b6%}1Q^DoEHFR(y%a$`zN}_Arz z9}*Z6s6^hf4u)aa_oqHall&Zi&iE@VcEM|Js^iAP!oalD$TSkGZCNHXH|&s*ccU*D zTkRg3Vbshq-Eg{f28ontkk4@Q8%jx<*%H?T6K+m!sa1{vFx~*@IJ$SGdXNC~OLms9 z?TPEc^DNhY%?=_VSvAF1RIKKvl_EGChMHLX+L84D5{5o@&B-izwXgdZ_DnRR1CpCfXTrA8PL{XhaJ4Fp6m+S;p;;FI4E#JrUrA4 zlZ*W{$5s1l-EM2)j>1_;%zDV??=mw=1M_?fNj;?i+A2YfWtao{(vMA{@v?`VUKWv%QVt_Eomt^d%oYzkO-0(! zRf-7g#M8gju`W$@F!(y=YCZRFIIe(Wrk1CbvUBiK&`3BlNr#rgCD7;g?VcO4thAu34?{|Cx%@DPG%Mi<&yj%`@aV9PPVQ{;}{T>l#O zVNo`OlhbD$-s}rkd>)=YH1%)iX+(k1#+Iu)+tXBznL@maeeq>YP%hlhg8OYO;eMvc z@DDDrBA=PZoUqTdz6F?nevAwaN3P*}qm~LWH1Js?0jEwGu z7C-5z+6XAhm7IIK4$KJN9eb*Ix#xQIWU@S+pe-8}r9 z^^WH(3O*r+lNplWC@d7jqct4y@DW5|{ncExqx(PCN>M;)gzs%M1kU5}E|LE}6q_Oy z-ibBv9(md{a1?y8HAVeqHyd(AeCab|zu}vU`5_M0CSt&`@eFH`o$gzWGP`tZGo5iD zs?3)Sw^}!hwBK*6&9d?P6ConQ-lcLfSnp`2Fo^hxJbSf7aO*k?;PlB6WblcWBjaN< zN%)$6s1P4DAQwoPv5{D?zrMmL$cAl;>=r}N6Y2FXXr!+YfWQx0&_@~gb61Ji=cLAZ zQ0B3+31?c_Y&ImVZ-)yrw@t6P(@}=1l%m>V{P1~PY+ax3ug229#K9YKIWtVW?WxS8B+iezh9&CaWdciUiSFyW&j$& z$|PIH(t;Q)*tIZ6POW4L1zZmZZx+Z*6|9v=AnkHP)t`k>hT4p=U3~JxZF;9Y12HRn~T`ykH@^7ofmUqG@oXPfR(PtY{Lv7!T;8+6|I^9dU8&4XL{Q3aI zm}Hp|yD{^_vWIPA>-u=(W4*AGLEf0;Xd$y4dt>7yzwp80-p0q^l}qUCCG0%-%Cg&O zvzJ51J8~XH7X#wc7+-rjqRl|;#B^lw=FH5V+@<@|#?uy?RM??Q8<+7AovoI~ZF)IG zv{4f>k??>L4i;Ic|5-P{eZ%{6P7wJJTY6nw?&BCJQ_&AB;MnGve)g5|o#kmqOmrRp za-~6UeAxff$9X?BfpvYH7)?+}0BoI-=HS~l|3>~Eea90dnsgY0x3>Xv)NRt|h zgc^i^3P>knj9H9QBs39_^-+42mEK(4H_kir{P@iM2hQ9%=iGD8d_P|~-O>-2&70iL zy~Lzz_?4H6hu)D$hE&~I=r3t62OTNPWqip_B6dW@vgc7MWWC9&5^XgbPbZwO%TEkZ zsRAWvK-h-JGqJ$MzY?=GHl+SpBHW4j+|J#u3!4ggwms_l`IO=MX&Q~z<8RxUrsU`K zNh^+kpI!bs(PcERc}JCQ6h35u*pA(O{@FrxLcV?R@4%ZL|5=1DbWkDZ)4Jv#N-{H_ zM)R?Ukp|<%SyE#S597nms_K(HC{u~Cpa1=_OLyNDgxuaNEbxd~ik8zM>s>}F*DkHB z$mMFErm`PBdUOiPl;af%lqu|_3wycr&lyszr7U;jAv+lm>EigMo^NAk;|L9{Xd6V> z67$+Hd12-oMPp+G2)+Mi*l0M8Xf@IO{rh*e52^I_!P1M&*e~8i;eP10i9K zE9~$=Oel2xb>p7QgFo2Ek4OI$5y5om_sCk1#;X|h=Ua3PK>-%Md1QtkA=J2yUI{m@ZAx;i0*e1Y-G!OPO`cih-z3jFInJXohpZk z<^z0pOYTCwir(}a9&x#j(#M-A!|H_|A3qL`603qoBJt(-c*)M>dRjlC0kGK?lOW$4gI5 zOa;JJ&yn1w%rf=n;*7j5-iAX9a7s0#xGtDm2q`Qk|Bypk_km-p{|Z&0o&yzb7tV3hDHgU1Bqc9S|-5V7+vQp z>B$kFj2)$6P(HlqE3(uP$vHkC4cW52uMCqgTRB)XC#k6uAzwDr;;wv@O;QUG?{yvN zJGXrl1;_yQcq`>tiOPWHDtmweeZW<)Xsr08k@Yu4iu9oSGB6O2OufH9tg3bMSNZ2^ zc0#PG7_)4?X&q?owz40(NOZ4FyfFmg)H1gpSs_Vy1@-KLAg@)7SXV-uhPBj50QusE zS2b*L9N-RJ>;$i-&_R{l*HbjDN$LFHFxRI%yt%T{QrE7zZ&k`j`0&CM9m#&foyRsF1dMy}5Z|+{tYs8ISK*~9 z3`CH>d3JGjku3+86j5rlB2J(aH101q8EVdkWsalb(m?{HsKR+q2hxv0SrCV7N&mnF2w@~ zh5!#8=9vzNfx=HE8CJ2dPg8_GAvlQ7J0G=Z)8H5A;B9p zX4YJoQ_^6y88T9|XW%ZeLuX(#GmpMwvepC@E?i}CD$PHrRDSKYH4rY}0L$QjEbpd4 zZOvoTUzM6T)JNx{00Dk@@oD%lSaBg98gNVW+#H~5a7VRYJTpRcSm#vcKQUT7M)xLb z8*T4mHn}sHZdEKHye=%^+qK%suz+GCo`mO$gq7gP_NMTE2Fuz^-!GuxfA` zp%nUy(W(0an_GAR(9Uogo_etY$VHC4a?1r=pFqe_9m+aJXtuEBc;|xpou$pUSo~$n zvE{!gX1AY3ojc?Ct%|UwG8SbK(W)9MesCzGV@gq>p|RH){}dpndh#`}?TO$eJ9 zVRgG8J4sSGfwv{y`H#V0dfss{Wd{shg^sP1{Rf_JK*+h=_#_hpLP1Q7e1pFrZa^Q? zqPLA{fgGFYdZ$CYEr|d{y8OOA=Jxy~#LdURme0Q~>e^eYuoe_IyJR^k5c{mBA(XN1 zGe8;4RoCJ|=U(3WYxi8;nMSG24>zy(IXJfGiFqP<%`^_$TBhhYj`zw0NmA$=W~$?% zdy|U6sM%S^c8y{iptqCz8uvnL2IP2Ke$wH1SWS_%5pr_IW~Tg+nG7@8DOM;j{b)r) zSnc}pMl*z+F(7Q1e6coH&u6DQ#}R=`23`|B;|$M*VII>#LPPd~*S*>XK!=#^mmLm!&ISH}31J_bEMo{uu9==yv z;x#qpObM)g+{Z4O@t!ZJs8FJfdFmi)BYy-C7JEJMy<-i`uO8 zh*JI4pS^gCw4d!!EZz`BZFVgbM)e@kY~E1gsc>8v0f<8u$8>rz8p=DrMmplQ*&+ug zgAi3WU3(X4>5oZ^S%lbr6KnZi?1%wFVg2tud`&Q>i~=9gn#3`Lp9z`a@HMoZv1#uG zse605)eW}5YD;}lWq)mnU6V4o@eh+EF_}3&7ILRt6FtH)XMQ&|7KlyxMwsDFzNCQ2 z@;=0a2y7+=UfJhi>Fv?I#f-)k8$p^wyMIgn%|fQBk!mL;WapaMtVaAGqdKe?+t-Pj zDOVVlR7)3cSR%LN6AZ+z7rvR2Yr%CZZ7p2_C7YDMu|@qemp%cW{1Tj>o=0M^VWT~- z4lNB#;}}NDLVq8))lFagO9DSKAzvtOO=tkxPk__9m#oav->Fmn+d>N_|475WwST)2 z+S^=C@Qc189xc?W3&6qP$ZY)dQY0Dy3ATKDh|g_M<1Rv5D@_${PY44Ww7Vz)pJBWAL)tu*Q6KMaZF1piV z1pp3$qOf(#)aaMQJRyU7bSjg5Pj+`{c3p9yT>bw6&(wh`d^5QYoyJ1LPA+C;-6Zc%~Kbnralvc$W6w^CU4C<;-kSRo@gY#bySkcjX za|u_(!%PJ;*P4As{I9jDttz?g3E#ZQTTZ?^XxDRZE6ysJqxq^MP3RL^;uGyP{bOii zHH*2dGKp5e70#1RFte3MIKSzUzYKC)#i^br%?@zxdk+;R61V1UoCltS_4y~|2Yy_R z9}Q1e&sAHPr7}4=u-Iu-5nA6jVa*W^6WDOKAMGcG7Uh~+BCF8nafNdvg9Pu1EZfaU z3Jyo1D5<<-x202d{o}sM%h|lFHi+rP!q{_kx^TtZ$1lIo=1#9MQoqoK2T|IjBn$h-Fwk3ICR~%aOsP3 zuLHZiYXGFXtgWNQ%vJ(U82FOP(o3Hte_S4@FtfnfG>RwF8(I1UcEkX_I);RuSUx>3dfzxtCA^eRVvdU*uSu?5yM_;EN@7DnU#_0 znXvHgDx0XaY)Hf8T0#VSspUCtr43h zmt8BUV#%D-dGWO_qCG!70#ZcRgK|=riH7PW??pUlcl#=CH*c9XNt7|?dLC7y$f?S0 zsdtQ>`OVr6^RX(ApZNDRAMG)t?)B&76}qm#I~Tmc^L*c9#x}Y(m;KcC)=wL}J-^jF zTdXj+;QAJejCB2=LI;4z_bOiP4lt5oR4*J8;_$G?l zc0flh3Qx5Whh` z8(DMbT{|M29{$Pk=W(rYF Date: Thu, 3 Apr 2025 16:32:00 +1100 Subject: [PATCH 3/5] Fix options --- components/lvgl/widgets.rst | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/components/lvgl/widgets.rst b/components/lvgl/widgets.rst index 2ca4ddbe0e..f657d553c4 100644 --- a/components/lvgl/widgets.rst +++ b/components/lvgl/widgets.rst @@ -648,6 +648,21 @@ Where a list of points is required, this can be provided in the form of a list o - **border_color** (*Optional*, :ref:`color `): Border color. - **border_width** (*Optional*, int): Border width. - **border_opa** (*Optional*, :ref:`opacity `): Border opacity. Defaults to ``COVER``. + - **outline_color** (*Optional*, :ref:`color `): Outline color. + - **outline_width** (*Optional*, int): Outline width. + - **outline_opa** (*Optional*, :ref:`opacity `): Opacity of the outline. Defaults to ``COVER``. + - **outline_pad** (*Optional*, int): Padding of the outline. Defaults to ``0``. + - **shadow_color** (*Optional*, :ref:`color `): Shadow color. + - **shadow_width** (*Optional*, int): Shadow width. + - **shadow_opa** (*Optional*, :ref:`opacity `): Opacity of the shadow. Defaults to ``COVER``. + - **shadow_offset_x** (*Optional*, int): Shadow offset X. + - **shadow_offset_y** (*Optional*, int): Shadow offset Y. + - **shadow_spread** (*Optional*, int): Shadow spread. + +- ``lvgl.canvas.draw_polygon`` draws a polygon: + - **id** (**Required**): The ID of the canvas widget. + - **points** (**Required**, list): List of points forming the polygon vertices. + - Other options as for ``lvgl.canvas.draw_rectangle``. - ``lvgl.canvas.draw_text`` draws text: - **id** (**Required**): The ID of the canvas widget. @@ -671,12 +686,8 @@ Where a list of points is required, this can be provided in the form of a list o - **color** (*Optional*, :ref:`color `): Line color. - **width** (*Optional*, int): Line width. - **opa** (*Optional*, :ref:`opacity `): Line opacity. Defaults to ``COVER``. - -- ``lvgl.canvas.draw_polygon`` draws a polygon: - - **id** (**Required**): The ID of the canvas widget. - - **points** (**Required**, list): List of points forming the polygon vertices. - - **color** (*Optional*, :ref:`color `): Fill color. - - **opa** (*Optional*, :ref:`opacity `): Fill opacity. Defaults to ``COVER``. + - **round_start ** (*Optional*, boolean): Round the start of the line. + - **round_end** (*Optional*, boolean): Round the end of the line. - ``lvgl.canvas.draw_arc`` draws an arc: - **id** (**Required**): The ID of the canvas widget. From 670d7d4dac5284aa179346a823ef40fd80a1c35b Mon Sep 17 00:00:00 2001 From: clydebarrow <2366188+clydebarrow@users.noreply.github.com> Date: Thu, 3 Apr 2025 18:42:15 +1100 Subject: [PATCH 4/5] lint --- components/lvgl/widgets.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/lvgl/widgets.rst b/components/lvgl/widgets.rst index f657d553c4..8b6eda1deb 100644 --- a/components/lvgl/widgets.rst +++ b/components/lvgl/widgets.rst @@ -686,8 +686,8 @@ Where a list of points is required, this can be provided in the form of a list o - **color** (*Optional*, :ref:`color `): Line color. - **width** (*Optional*, int): Line width. - **opa** (*Optional*, :ref:`opacity `): Line opacity. Defaults to ``COVER``. - - **round_start ** (*Optional*, boolean): Round the start of the line. - - **round_end** (*Optional*, boolean): Round the end of the line. + - **round_start** (*Optional*, boolean): Round the start of the line. Defaults to ``false``. + - **round_end** (*Optional*, boolean): Round the end of the line. Defaults to ``false``. - ``lvgl.canvas.draw_arc`` draws an arc: - **id** (**Required**): The ID of the canvas widget. From 5f08e3a96a00dc94314de6135c3403d270482d29 Mon Sep 17 00:00:00 2001 From: clydebarrow <2366188+clydebarrow@users.noreply.github.com> Date: Wed, 9 Apr 2025 17:11:33 +1000 Subject: [PATCH 5/5] Width and height for rectangle --- components/lvgl/widgets.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/lvgl/widgets.rst b/components/lvgl/widgets.rst index 8b6eda1deb..4d0213202a 100644 --- a/components/lvgl/widgets.rst +++ b/components/lvgl/widgets.rst @@ -642,6 +642,8 @@ Where a list of points is required, this can be provided in the form of a list o - **id** (**Required**): The ID of the canvas widget. - **x** (**Required**, int): X coordinate. - **y** (**Required**, int): Y coordinate. + - **width** (**Required**, int): Width in pixels + - **height** (**Required**, int): Height in pixels - **radius** (*Optional*, int): Corner radius. - **bg_color** (*Optional*, :ref:`color `): Background color. - **bg_opa** (*Optional*, :ref:`opacity `): Background opacity. Defaults to ``COVER``.