From 281ed41de7336b31e4f84dd22d08461c57b34794 Mon Sep 17 00:00:00 2001 From: Victor Wheeler Date: Sun, 21 Sep 2025 06:18:01 -0600 Subject: [PATCH] docs(misc): fix doc issues described in issue #8839 (#8857) Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> --- docs/src/_static/css/custom.css | 7 ++- .../clip_corner_1_problem_being_solved.png | Bin 0 -> 2990 bytes .../_static/images/clip_corner_2_result.png | Bin 0 -> 2931 bytes .../images/clip_corner_3_layers_created.png | Bin 0 -> 3195 bytes docs/src/conf.py | 2 +- .../styles/style-properties.rst | 2 +- .../details/integration/bindings/api_json.rst | 2 +- .../integration/bindings/micropython.rst | 4 +- .../chip_vendors/renesas/ra_family.rst | 4 +- docs/src/details/integration/pc/uefi.rst | 2 +- docs/src/details/libs/libpng.rst | 2 +- docs/src/details/main-modules/animation.rst | 8 ++- .../main-modules/draw/draw_descriptors.rst | 11 ++-- .../details/main-modules/draw/draw_layers.rst | 57 ++++++++++++++++-- docs/src/details/main-modules/image.rst | 2 +- docs/src/details/main-modules/indev.rst | 2 +- docs/src/details/widgets/chart.rst | 2 +- examples/scroll/lv_example_scroll_7.c | 2 +- scripts/style_api_gen.py | 2 +- src/core/lv_obj_draw.h | 2 +- src/core/lv_refr.c | 4 +- src/draw/lv_draw_rect.h | 2 +- src/drivers/wayland/lv_wl_shm.c | 2 +- src/misc/lv_anim_timeline.h | 2 +- 24 files changed, 90 insertions(+), 33 deletions(-) create mode 100644 docs/src/_static/images/clip_corner_1_problem_being_solved.png create mode 100644 docs/src/_static/images/clip_corner_2_result.png create mode 100644 docs/src/_static/images/clip_corner_3_layers_created.png diff --git a/docs/src/_static/css/custom.css b/docs/src/_static/css/custom.css index a07f26ed6a..dc4c13bf0c 100644 --- a/docs/src/_static/css/custom.css +++ b/docs/src/_static/css/custom.css @@ -1110,11 +1110,17 @@ figure figcaption .caption-text { font-size: 0.8rem; } +/* Whitespace below figures and images... */ article figure, article img { margin-bottom: 2rem; } +/* ...except when the image is part of a figure. */ +article figure img { + margin-bottom: 0; +} + /*------------------------------------------------------------------------- * Code Highlighting *-------------------------------------------------------------------------*/ @@ -1126,7 +1132,6 @@ body[data-theme="dark"] .highlight .p { /*------------------------------------------------------------------------- * Glossary *-------------------------------------------------------------------------*/ - .glossary { display: flex; flex-direction: column; diff --git a/docs/src/_static/images/clip_corner_1_problem_being_solved.png b/docs/src/_static/images/clip_corner_1_problem_being_solved.png new file mode 100644 index 0000000000000000000000000000000000000000..050a0c6870ee509268fbbf26aee0639def19e101 GIT binary patch literal 2990 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 literal 0 HcmV?d00001 diff --git a/docs/src/_static/images/clip_corner_3_layers_created.png b/docs/src/_static/images/clip_corner_3_layers_created.png new file mode 100644 index 0000000000000000000000000000000000000000..04f665965c78cb8916e009b368db234f255e30b0 GIT binary patch literal 3195 zcmds)`!^Gg|Hp@x%v>rGMNuU8DCUw|uDOKRG;^IK*I}95FS*Vw<+2H}lFMu^4M{VE zut&?r_yfLw!S{8}^YuK>*UztW9_N{EXKOA1k^lh!00B!26Nf`DJQV)e z(Zl_M>-(!iI}&DW>3HmLqK|o}0RUiiOA{l<2)C7zVeExI(Y`^?qwwd+r>qSVwTT`) z1)NS!Ki`o&L%}=qNj4v(r4tZOI?i`whpSxCK5{A55S$=v(e;zLC7sKB{kERL=_G=$ zSmbi?sXsr8b?Ownxax$tPm#EfAh*HymR*)Pzb%};lBuhs66S;x% zYj3!hO!Dn$@_<%=u_p*X>Uv??6VDG8sRS?-tl^H}R+{1eagJsxb+&XYJfpBOcSD^v zr4^jw&|j*vugC4zHYxu`X~V=dk&}ksUrwtCC;)$`5ZD^p2!p@u(wg-+A`C7rt-3Mp zWG29GvwbNYFU!AynHG6~ylwib)=}hvQ!!8C`j`tYkvGh82*buXB5(JL<( z6)idL_`p`|r0B@4gIU*?9pNr)@-(!2^mSG_SCcy1s?O(jZ-AL$Urn425$w&IY(@4} zQZLaIs*${8vN`nw3`&Eg+}=XRv~ zxquB~y_sDgexT{YmX0$m|KC3p2cqcmFnF*g%0|3xEWnM|h0NrYh+9a+zU|(EEC*vq z*QDH`?p#d=bT=%xKCw)QWKCvu8o)7@uXd|GC|{k#_>L5xbWf!hx6i6K-I!+fMK!=f zkL!@XJ&+G>Gk5E}M+-GmjcaY3B7|F6N30w{dJE2 ztJ5k`-8FCa_^U@iN<*WP%G5tk2WA^X$2in3GlDQRq+O)Jd3W{ApH#(Y7ds?S)S}?d zILov67|B)W{Tf6rU`93#I?^yDvvsxAI@rzSIj+$M`TSYO9x(H_0)%oCuLU%x?mi@TNI9%<$VR_^>q zZaW9mc3MyUlL^8cxD7AnP3`vvBID?oFS>FjD(2<6HY5Ne&p+ivHVE+lJ*LgVm728f zln6=+B?Rb<4)~3qGJTJd-8^yYi5a2U_i0B74(h+MKJJW_c#rzHud5+2IulJeB|uDk z3{|Xk6%EjNB;eJ$Gf^eiUIu;|yQiC4-!RsvCh-_boY)S#>p!K&JKuu}DVgVdbF6be zAbn;@{TZNtuQw~kuYCMLQ*CF=HFWRHhQoks(Gc`L5qx*d8`zYvsRvUT=5tJ!H2~h?8j`Z{nxq3tB{TSy1b3Qk^WrP z=aX&Z8nHew>5r@WLI$E(w6RDSUHE=wkM3_c82p&gH@;^EM7%vCE#qiIDDxDkUe$9&eB zcI&U7=P@BkRxk)^pfnh(kNk2~M=&hni-Q>OsL*P- zuP)U--;pLxVpSm}KCz*Vl4>=EK;p164=FV?We|GW^s+aJ*O0oa$XE`$f(UtZ1-2LR zm_i$0^lFWKEiPQ`3fkF4fW-!vbfbI=t?(n?^{A&h@A4jkFY_%vVd!2<*DhSAXc2FU zx^sIj=%A_2INMA?^p>j8+SJMxTr~vdG;6KP_Qv@0X8PNEd#=#$ubTaq8>AiIof{(6W*h6NmCa0 zurYc763*McmKa<|j*(d66{{%B8KYc2DdQJ{e8-qeOmm}nng;l$RpkqjvRKz3Hf1cC zARx%mmTUX&bVEVlQw(zs6tF3=`QLOBb)b6ED=C68ME$WDD5bsL*)xJYAata*tf3e6 zva5{mY?tH2ee^&2-&Sb_&-StDkIBynQS{~P^?~BwYLgtV82mW?AL=-}IqGcb^!x1e zcB#wddaKbMGa+8?yCna>;?grJNMW9W6}y<(hoHKNxykL$wWuu-5BG-Q%ya#z<+Qoo zMA}{OazJKBX&=9EP3lMxHicQc1;NIgRs$vt0($3F+fL@aYIKiXu;Th?;$$jM(^nr9 zWH#B&6K!<6yLzUOmw=f<+_Vfs8S4`N88v5SQ|?qbMNJ-os1}b41ZYOGv8R)gXQeHa z^?JR^iX6{7BVtgkt)FdZkYCg_nXTp4+qw^Y(+}>Qt5+R!^)xy@sM#QV2u3BB+$fwx z@`L*I4_+%1ytjB)d(g?n$|447CNeqc9-D-}Ic_-0)1sl${!1rcs&W*Lq!&;h-idR2 z=&qW(9(sduXI6g_lsqW)Qh+zFE3|WM4Ppk2K zzVapwa{ILPBbVf~GdNJT%LNMLYy2-ARqa>|P(i<%$89L&DzaqdIckD{Z*a~zPY4;; z^tM!oVK;!i-r1$z%7@IN;=ClQZ>9|3-9U(OmF=z(n?DOKg{<)jU{$k!sd|89OKK&J2ZD2Uw-zb>J3hhO8Q63$}3zoQ^VJ;#$ zrgvk%(@Cj`MK(NFJ#{vV{LWOa%q*bZZT$?F?2K(Gw9!&6TN=!-F4J;AYHZ!EjwziI zrrT$W_RoeAA&$+iGH`~mBw=am*XQR;noTi7!{y`~NDm}MME=+MEef8`f4~la$}f+! z%I0f@&#~0;e60g^?_~RqAe2MU;vbJ7?p96bA-PEfkhV-8Zj!oVaQ_u9nAKTVGYu}7 zcufnlD85!UTZMp&uLXZ~3ALtuJz-urLO ``Build`` > ``Flash`` > ``Run``**. In MicroPython it's just - **``Change code`` > ``Run``** ! You can even run commands interactively using the + ``Change code`` > ``Build`` > ``Flash`` > ``Run``. In MicroPython it's just + ``Change code`` > ``Run``\ ! You can even run commands interactively using the `REPL `__ (the interactive prompt) diff --git a/docs/src/details/integration/chip_vendors/renesas/ra_family.rst b/docs/src/details/integration/chip_vendors/renesas/ra_family.rst index 2a56f4ee3f..2869f77e6d 100644 --- a/docs/src/details/integration/chip_vendors/renesas/ra_family.rst +++ b/docs/src/details/integration/chip_vendors/renesas/ra_family.rst @@ -23,8 +23,8 @@ Run the Project README.md files in the applicable repositories for info. FSPs can be downloaded `here `__. Please notice from FSP version 6.0 and above, LVGL is now part of the middleware section - of components. Therefore when cloning the the latest versions of the supported LVGL board - repositories, recursive updating of the the git submodules is no longer needed. + of components. Therefore when cloning the latest versions of the supported LVGL board + repositories, recursive updating of the git submodules is no longer needed. - JLink is used for debugging, it can be downloaded `here `__. diff --git a/docs/src/details/integration/pc/uefi.rst b/docs/src/details/integration/pc/uefi.rst index 62bc75e07d..afbadfc43c 100644 --- a/docs/src/details/integration/pc/uefi.rst +++ b/docs/src/details/integration/pc/uefi.rst @@ -29,7 +29,7 @@ Configure UEFI driver #define LV_USE_UEFI 1 -- Enable the the memory core functions, which are wrappers around AllocatePool and FreePool (using memory of type *EfiBootServicesData*) if you do not wan't to use your own implementations +- Enable the memory core functions, which are wrappers around AllocatePool and FreePool (using memory of type *EfiBootServicesData*) if you do not wan't to use your own implementations .. code-block:: c diff --git a/docs/src/details/libs/libpng.rst b/docs/src/details/libs/libpng.rst index 62b2e4a070..7a4cf34b3f 100644 --- a/docs/src/details/libs/libpng.rst +++ b/docs/src/details/libs/libpng.rst @@ -4,7 +4,7 @@ libpng Decoder ============== -**libpng** is an LVGL interface to the the official PNG reference library, which +**libpng** is an LVGL interface to the official PNG reference library, which supports almost all PNG features, is extensible, and has been extensively tested for over 28 years. diff --git a/docs/src/details/main-modules/animation.rst b/docs/src/details/main-modules/animation.rst index 94e3ee9398..8976c1789b 100644 --- a/docs/src/details/main-modules/animation.rst +++ b/docs/src/details/main-modules/animation.rst @@ -359,8 +359,12 @@ Call :cpp:expr:`lv_anim_timeline_get_reverse(timeline)` function to get whether Animation Timeline is also played in reverse after its forward play completes. Call :cpp:expr:`lv_anim_timeline_delete(timeline)` function to delete the Animation Timeline. -**Note**: If you need to delete a Widget during Animation, be sure to delete the -Animation Timeline before deleting the Widget. Otherwise, the program may crash or behave abnormally. + +.. caution:: + + If you need to delete a Widget during Animation, be sure to delete the Animation + Timeline before deleting the Widget. Otherwise, the program may crash or behave + abnormally. If a base object is set with :cpp:expr:`lv_anim_timeline_set_base_object(timeline, obj)`, ``var`` in the added animations is assumed to be a widget name (or path) string. diff --git a/docs/src/details/main-modules/draw/draw_descriptors.rst b/docs/src/details/main-modules/draw/draw_descriptors.rst index 4f7c4886c3..b314122b13 100644 --- a/docs/src/details/main-modules/draw/draw_descriptors.rst +++ b/docs/src/details/main-modules/draw/draw_descriptors.rst @@ -315,7 +315,7 @@ The inner circle (focal point) can be set with: Conic Gradients --------------- -The conic gradient is defined between the angles of a circle, and colors are mapped +The conic gradient is defined between two angles within a circle, and colors are mapped to each angle. After initializing the stops with :cpp:func:`lv_grad_init_stops`, the conic gradient @@ -495,7 +495,8 @@ for controlling text rendering: :letter_space: Additional space between characters. :ofs_x: Horizontal text offset. :ofs_y: Vertical text offset. -:sel_start: Index of the first character for selection (not byte index). +:sel_start: Index of the first character for selection (character index, not byte + index, since some characters can be multi-byte characters). ``LV_DRAW_LABEL_NO_TXT_SEL`` means no selection. :sel_end: Index of the last character for selection. :sel_color: Color of selected characters. @@ -505,7 +506,7 @@ for controlling text rendering: See :cpp:type:`lv_base_dir_t`. :decor: Text decoration, e.g., underline. See :cpp:type:`lv_text_decor_t`. :flag: Flags for text rendering. See :cpp:type:`lv_text_flag_t`. -:text_length: Number of characters to render (0 means render until `\0`). +:text_length: Number of characters to render (0 means render until `\\0`). :text_local: Set to 1 to allocate a buffer and copy the text. :text_static: Indicates ``text`` is constant and its pointer can be cached. :hint: Pointer to externally stored data to speed up rendering. @@ -574,8 +575,8 @@ these fields: :color: Line color. :width: Line thickness. :opa: Line opacity (0--255). -:dash_width: Length of dashes (0 means no dashes). -:dash_gap: Length of gaps between dashes (0 means no dashes). +:dash_width: Length of dashes (0 means no dashes --- a continuous line). +:dash_gap: Length of gaps between dashes (0 means no gaps --- a continuous line). :round_start: Rounds the line start. :round_end: Rounds the line end. :raw_end: Set to 1 to skip end calculations if they are unnecessary. diff --git a/docs/src/details/main-modules/draw/draw_layers.rst b/docs/src/details/main-modules/draw/draw_layers.rst index 5cefd9bea4..5709d702d7 100644 --- a/docs/src/details/main-modules/draw/draw_layers.rst +++ b/docs/src/details/main-modules/draw/draw_layers.rst @@ -62,11 +62,58 @@ the widget as possible, but due to the nature of transformations no slicing is possible in this case. -Clip Corner ------------ +Clip Corner Layers +------------------ -The ``clip_corner`` style property also causes LVGL to create a 2 layers with radius -height for the top and bottom parts of the Widget. +The ``clip_corner`` style property causes the corners of the parent Widget to clip the +corners of child Widgets whose corners would otherwise overflow a rounded corner of +the parent. + +Example: + +.. code-block:: c + + lv_obj_t * clipper_obj = lv_obj_create(lv_screen_active()); + lv_obj_set_style_bg_color(clipper_obj, lv_palette_main(LV_PALETTE_GREY), 0); + lv_obj_center(clipper_obj); + lv_obj_set_style_pad_all(clipper_obj, 0, 0); + lv_obj_set_style_radius(clipper_obj, 40, 0); + + lv_obj_t * clipped_obj = lv_obj_create(clipper_obj); + lv_obj_set_style_bg_color(clipped_obj, lv_palette_main(LV_PALETTE_RED), 0); + lv_obj_set_size(clipped_obj, 80, 80); + +.. figure:: /_static/images/clip_corner_1_problem_being_solved.png + :align: center + :alt: Without Clip Corner Style + + Without Clip Corner Style + +You can see that the parent's corners do not clip the children. But if you add this +line, it will: + +.. code-block:: c + + lv_obj_set_style_clip_corner(clipper_obj, true, 0); + +.. figure:: /_static/images/clip_corner_2_result.png + :align: center + :alt: Result of Clip Corner Style + + Result of Clip Corner Style + +There is a temporary RAM cost to doing this. With ``LV_USE_LAYER_DEBUG`` on... + +.. figure:: /_static/images/clip_corner_3_layers_created.png + :align: center + :alt: Layers Created to Implement Clip Corner Style While Rendering + + Layers Created to Implement Clip Corner Style While Rendering + +...you can see that in order to clip the children, two intermediate layer work areas +have to be temporarily allocated, each having a height equal to the radius-style value +currently held by the parent. These layer work areas are returned to the heap once +rendering is complete. @@ -176,7 +223,7 @@ To save memory, LVGL can render certain types of layers in smaller chunks: chunk is set using :c:macro:`LV_DRAW_LAYER_SIMPLE_BUF_SIZE` in ``lv_conf.h``. 2. **Transform Layers**: - Transform Widgets cannot be rendered in chunks because transformations + Transformed Widgets cannot be rendered in chunks because transformations often affect pixels outside the given area. For such layers, LVGL allocates a buffer large enough to render the entire transformed area without limits. diff --git a/docs/src/details/main-modules/image.rst b/docs/src/details/main-modules/image.rst index 5bdc3e6108..c15fe912cc 100644 --- a/docs/src/details/main-modules/image.rst +++ b/docs/src/details/main-modules/image.rst @@ -149,7 +149,7 @@ want: - RGB332 for 8-bit color depth - RGB565 for 16-bit color depth - RGB565 Swap for 16-bit color depth (two bytes are swapped) -- RGB888 for 32-bit color depth +- RGB888 for 24-bit color depth (8-bit channels without an alpha channel) Manually creating an image diff --git a/docs/src/details/main-modules/indev.rst b/docs/src/details/main-modules/indev.rst index 1c07174846..46fcdf971d 100644 --- a/docs/src/details/main-modules/indev.rst +++ b/docs/src/details/main-modules/indev.rst @@ -181,7 +181,7 @@ Multi-touch gestures overview To recognize multi touch gestures, recognizers are used. The structure ``lv_indev_t`` contains an array of recognizers, one per gesture type. These recognizers are initialized internally by ``lv_indev_create`` by calling -``lv_indev_gesture_init_recognizers`` after the indev device is created. The the recognizers can then be configured to +``lv_indev_gesture_init_recognizers`` after the indev device is created. The recognizers can then be configured to modify the gestures thresholds. These thresholds are used to be able to recognize the gesture only after the threshold have been reached. They can be set-up like this: diff --git a/docs/src/details/widgets/chart.rst b/docs/src/details/widgets/chart.rst index 2dceba8bd1..f94c5e005e 100644 --- a/docs/src/details/widgets/chart.rst +++ b/docs/src/details/widgets/chart.rst @@ -322,7 +322,7 @@ Zoom ---- To zoom the chart all you need to do is wrap it in a parent container and set the -chart's width and/or height to a larger value. Doing this will cause the the chart +chart's width and/or height to a larger value. Doing this will cause the chart to be scrollable in its parent --- the parent container provides the scrollable "view window". diff --git a/examples/scroll/lv_example_scroll_7.c b/examples/scroll/lv_example_scroll_7.c index bfb3d83340..8cdc591567 100644 --- a/examples/scroll/lv_example_scroll_7.c +++ b/examples/scroll/lv_example_scroll_7.c @@ -114,7 +114,7 @@ void lv_example_scroll_7(void) lv_obj_align(low_label, LV_ALIGN_BOTTOM_LEFT, 10, -10); load_item(obj, 3); - /* These counters hold the the highest/lowest number currently loaded. */ + /* These counters hold the highest/lowest number currently loaded. */ top_num = 3; bottom_num = 3; diff --git a/scripts/style_api_gen.py b/scripts/style_api_gen.py index 9bd23bd9fb..b61311e599 100755 --- a/scripts/style_api_gen.py +++ b/scripts/style_api_gen.py @@ -371,7 +371,7 @@ props = [ {'name': 'CLIP_CORNER', 'style_type': 'num', 'var_type': 'bool', 'default':0, 'inherited': 0, 'layout': 0, 'ext_draw': 0, - 'dsc': "Enable to clip the overflowed content on the rounded corner. Can be `true` or `false`." }, + 'dsc': "Enable clipping of content that overflows rounded corners of parent Widget. Can be `true` or `false`." }, {'name': 'OPA', 'style_type': 'num', 'var_type': 'lv_opa_t', 'default':'`LV_OPA_COVER`', 'inherited': 1, 'layout': 0, 'ext_draw': 0, diff --git a/src/core/lv_obj_draw.h b/src/core/lv_obj_draw.h index 10ebf993cb..4ad447c970 100644 --- a/src/core/lv_obj_draw.h +++ b/src/core/lv_obj_draw.h @@ -37,7 +37,7 @@ typedef enum { /**Simple layer means that the layer can be rendered in chunks. * For example with opa_layered = 140 it's possible to render only 10 lines - * from the layer. When it's ready go the the next 10 lines. + * from the layer. When it's ready go to the next 10 lines. * It avoids large memory allocations for the layer buffer. * The buffer size for a chunk can be set by `LV_DRAW_LAYER_SIMPLE_BUF_SIZE` in lv_conf.h.*/ LV_LAYER_TYPE_SIMPLE, diff --git a/src/core/lv_refr.c b/src/core/lv_refr.c index 24e2f2d1dc..9e546c8628 100644 --- a/src/core/lv_refr.c +++ b/src/core/lv_refr.c @@ -861,7 +861,7 @@ static void refr_area(const lv_area_t * area_p, int32_t y_offset) } else if(disp_refr->render_mode == LV_DISPLAY_RENDER_MODE_DIRECT || disp_refr->render_mode == LV_DISPLAY_RENDER_MODE_FULL) { - /*In direct mode and full mode the the buffer area is always the whole screen, not considering rotation*/ + /*In direct mode and full mode the buffer area is always the whole screen, not considering rotation*/ layer->buf_area.x1 = 0; layer->buf_area.y1 = 0; if(lv_display_get_matrix_rotation(disp_refr)) { @@ -879,7 +879,7 @@ static void refr_area(const lv_area_t * area_p, int32_t y_offset) uint32_t tile_cnt = 1; int32_t tile_h = lv_area_get_height(area_p); if(LV_COLOR_FORMAT_IS_INDEXED(layer->color_format) == false) { - /* Assume that the the buffer size (can be screen sized or smaller in case of partial mode) + /* Assume that the buffer size (can be screen sized or smaller in case of partial mode) * and max tile size are the optimal scenario. From this calculate the ideal tile size * and set the tile count and tile height accordingly. */ diff --git a/src/draw/lv_draw_rect.h b/src/draw/lv_draw_rect.h index 7712079886..85ac1039b1 100644 --- a/src/draw/lv_draw_rect.h +++ b/src/draw/lv_draw_rect.h @@ -120,7 +120,7 @@ typedef struct { /**Radius, LV_RADIUS_CIRCLE for max. radius */ int32_t radius; - /**Color of the the shadow */ + /**Color of shadow */ lv_color_t color; /**Width of the shadow. (radius of the blur)*/ diff --git a/src/drivers/wayland/lv_wl_shm.c b/src/drivers/wayland/lv_wl_shm.c index 15f4a800bb..2a64b943fe 100644 --- a/src/drivers/wayland/lv_wl_shm.c +++ b/src/drivers/wayland/lv_wl_shm.c @@ -143,7 +143,7 @@ lv_result_t lv_wayland_shm_resize_window(shm_ctx_t * context, struct window * wi return LV_RESULT_INVALID; } - /* Moves the buffers to the the unused list of the group */ + /* Moves the buffers to the unused list of the group */ smm_release(body_buf1); smm_release(body_buf2); diff --git a/src/misc/lv_anim_timeline.h b/src/misc/lv_anim_timeline.h index 98fa183469..138abf75a7 100644 --- a/src/misc/lv_anim_timeline.h +++ b/src/misc/lv_anim_timeline.h @@ -79,7 +79,7 @@ void lv_anim_timeline_pause(lv_anim_timeline_t * at); void lv_anim_timeline_set_reverse(lv_anim_timeline_t * at, bool reverse); /** - * Set the time to wait before starting the the animation. + * Set the time to wait before starting the animation. * Applies only when playing from the very start, or reverse from the very end. * @param at pointer to an animation timeline * @param delay the delay time in milliseconds