-- SPDX-FileCopyrightText: 2023 jacqueline -- -- SPDX-License-Identifier: GPL-3.0-only ---@meta --- --- lvgl comments --- --- The `lvgl` module provides bindings to the LVGL graphics library. These --- bindings were originally based on [luavgl](https://github.com/XuNeo/luavgl/), --- but have diverged somewhat. These bindings are also largely a very thin --- abstraction around LVGL's C API, so [LVGL's documentation](https://docs.lvgl.io/8.3/) --- may also be useful to reference. --- This module is currently only available from the UI Lua context; i.e. the --- `main.lua` script run after boot on-device. ---@class lvgl lvgl = {} --- Event codes for use with `obj:onevent`. See the [LVGL docs](https://docs.lvgl.io/8.3/overview/event.html#event-codes) --- for a description of each event type. --- @enum ObjEventCode lvgl.EVENT = { ALL = 0, PRESSED = 0, PRESSING = 0, PRESS_LOST = 0, SHORT_CLICKED = 0, LONG_PRESSED = 0, LONG_PRESSED_REPEAT = 0, CLICKED = 0, RELEASED = 0, SCROLL_BEGIN = 0, SCROLL_END = 0, SCROLL = 0, GESTURE = 0, KEY = 0, FOCUSED = 0, DEFOCUSED = 0, LEAVE = 0, HIT_TEST = 0, COVER_CHECK = 0, REFR_EXT_DRAW_SIZE = 0, DRAW_MAIN_BEGIN = 0, DRAW_MAIN = 0, DRAW_MAIN_END = 0, DRAW_POST_BEGIN = 0, DRAW_POST = 0, DRAW_POST_END = 0, DRAW_PART_BEGIN = 0, DRAW_PART_END = 0, VALUE_CHANGED = 0, INSERT = 0, REFRESH = 0, READY = 0, CANCEL = 0, DELETE = 0, CHILD_CHANGED = 0, CHILD_CREATED = 0, CHILD_DELETED = 0, SCREEN_UNLOAD_START = 0, SCREEN_LOAD_START = 0, SCREEN_LOADED = 0, SCREEN_UNLOADED = 0, SIZE_CHANGED = 0, STYLE_CHANGED = 0, LAYOUT_CHANGED = 0, GET_SELF_SIZE = 0, } --- Flags that can be set for each LVGL object. --- @enum ObjFlag lvgl.FLAG = { PRESSED = 0, HIDDEN = 0, CLICKABLE = 0, CLICK_FOCUSABLE = 0, CHECKABLE = 0, SCROLLABLE = 0, SCROLL_ELASTIC = 0, SCROLL_MOMENTUM = 0, SCROLL_ONE = 0, SCROLL_CHAIN_HOR = 0, SCROLL_CHAIN_VER = 0, SCROLL_CHAIN = 0, SCROLL_ON_FOCUS = 0, SCROLL_WITH_ARROW = 0, SNAPPABLE = 0, PRESS_LOCK = 0, EVENT_BUBBLE = 0, GESTURE_BUBBLE = 0, ADV_HITTEST = 0, IGNORE_LAYOUT = 0, FLOATING = 0, OVERFLOW_VISIBLE = 0, LAYOUT_1 = 0, LAYOUT_2 = 0, WIDGET_1 = 0, WIDGET_2 = 0, USER_1 = 0, USER_2 = 0, USER_3 = 0, USER_4 = 0, } --- States that can be set on each LVGL object. See the [LVGL docs](https://docs.lvgl.io/8.3/overview/object.html#states) --- for an explanation of what each state means. --- @enum ObjState lvgl.STATE = { DEFAULT = 0, CHECKED = 0, FOCUSED = 0, FOCUS_KEY = 0, EDITED = 0, HOVERED = 0, PRESSED = 0, SCROLLED = 0, DISABLED = 0, USER_1 = 0, USER_2 = 0, USER_3 = 0, USER_4 = 0, ANY = 0, } --- Enum for specifying what kind of alignment to use for an LVGL object. See --- the [LVGL docs](https://docs.lvgl.io/8.3/overview/style-props.html#align) --- for an explanation of each value. --- @enum ObjAlignType lvgl.ALIGN = { DEFAULT = 0, TOP_LEFT = 0, TOP_MID = 0, TOP_RIGHT = 0, BOTTOM_LEFT = 0, BOTTOM_MID = 0, BOTTOM_RIGHT = 0, LEFT_MID = 0, RIGHT_MID = 0, CENTER = 0, OUT_TOP_LEFT = 0, OUT_TOP_MID = 0, OUT_TOP_RIGHT = 0, OUT_BOTTOM_LEFT = 0, OUT_BOTTOM_MID = 0, OUT_BOTTOM_RIGHT = 0, OUT_LEFT_TOP = 0, OUT_LEFT_MID = 0, OUT_LEFT_BOTTOM = 0, OUT_RIGHT_TOP = 0, OUT_RIGHT_MID = 0, OUT_RIGHT_BOTTOM = 0, } --- Long modes for use with labels. --- @enum LABEL lvgl.LABEL = { LONG_WRAP = 0, LONG_DOT = 0, LONG_SCROLL = 0, LONG_SCROLL_CIRCULAR = 0, LONG_CLIP = 0, } --- Scroll modes --- @enum ScrollbarMode lvgl.SCROLLBAR_MODE = { OFF = 0, ON = 0, ACTIVE = 0, AUTO = 0, } --- Directions values for dropdown and scroll directions --- @enum Dir lvgl.DIR = { NONE = 0, LEFT = 0, RIGHT = 0, TOP = 0, BOTTOM = 0, HOR = 0, VER = 0, ALL = 0, } --- Keyboard modes --- @enum KeyboardMode lvgl.KEYBOARD_MODE = { TEXT_LOWER = 0, TEXT_UPPER = 0, SPECIAL = 0, NUMBER = 0, USER_1 = 0, USER_2 = 0, USER_3 = 0, USER_4 = 0, TEXT_ARABIC = 0, } --- Flow direction for flex layouts. See the [LVGL docs](https://docs.lvgl.io/8.3/layouts/flex.html#flex-flow) --- for more details. --- @enum FlexFlow lvgl.FLEX_FLOW = { ROW = 0, COLUMN = 0, ROW_WRAP = 0, ROW_REVERSE = 0, ROW_WRAP_REVERSE = 0, COLUMN_WRAP = 0, COLUMN_REVERSE = 0, COLUMN_WRAP_REVERSE = 0, } --- Alignment values for flex layouts. See the [LVGL docs](https://docs.lvgl.io/8.3/layouts/flex.html#flex-align) --- for more details. --- @enum FlexAlign lvgl.FLEX_ALIGN = { START = 0, END = 0, CENTER = 0, SPACE_EVENLY = 0, SPACE_AROUND = 0, SPACE_BETWEEN = 0, } --- Alignment values for grid layouts. See the [LVGL docs](https://docs.lvgl.io/8.3/layouts/grid.html#grid-align) --- for more details. --- @enum GridAlign lvgl.GRID_ALIGN = { START = 0, CENTER = 0, END = 0, STRETCH = 0, SPACE_EVENLY = 0, SPACE_AROUND = 0, SPACE_BETWEEN = 0, } --- Values for KEY events. --- @enum KEY lvgl.KEY = { UP = 0, DOWN = 0, RIGHT = 0, LEFT = 0, ESC = 0, DEL = 0, BACKSPACE = 0, ENTER = 0, NEXT = 0, PREV = 0, HOME = 0, END = 0, } lvgl.ANIM_REPEAT_INFINITE = 0 lvgl.ANIM_PLAYTIME_INFINITE = 0 lvgl.SIZE_CONTENT = 0 lvgl.RADIUS_CIRCLE = 0 lvgl.COORD_MAX = 0 lvgl.COORD_MIN = 0 lvgl.IMG_ZOOM_NONE = 0 lvgl.BTNMATRIX_BTN_NONE = 0 lvgl.CHART_POINT_NONE = 0 lvgl.DROPDOWN_POS_LAST = 0 lvgl.LABEL_DOT_NUM = 0 lvgl.LABEL_POS_LAST = 0 lvgl.LABEL_TEXT_SELECTION_OFF = 0 lvgl.TABLE_CELL_NONE = 0 lvgl.TEXTAREA_CURSOR_LAST = 0 lvgl.LAYOUT_FLEX = 0 lvgl.LAYOUT_GRID = 0 --- Converts an opacity value as a percentage into the LVGL opacity range of 0 --- to 255. ---@param p integer opacity value in range of 0..100 ---@return integer opacity value in the range of 0..255 function lvgl.OPA(p) end --- Converts a size in percent into an LVGL size value. ---@param p integer size percentage ---@return integer size in LVGL units function lvgl.PCT(p) end --- Returns the horizontal resolution of the display. ---@return integer function lvgl.HOR_RES() end --- Returns the vertical resolution of the display. ---@return integer function lvgl.VER_RES() end --- Creates a new base LVGL object. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/obj.html) --- for details about this widget. --- @param parent? Object The parent for this object, or nil to add to the screen root. --- @param property? StyleProp Style properties to apply to this object --- @return Object function lvgl.Object(parent, property) end --- Create a new Bar widget. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/core/bar.html) --- for details about this widget. --- @param parent? Object The parent for this object, or nil to add to the screen root. --- @param property? BarStyle Style properties to apply to this object --- @return Bar function lvgl.Bar(parent, property) end --- Create a new Button widget. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/core/btn.html) --- for details about this widget. --- @param parent? Object The parent for this object, or nil to add to the screen root. --- @param property? StyleProp Style properties to apply to this object --- @return Button function lvgl.Button(parent, property) end --- Create a new Calendar widget. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/extra/calendar.html) --- for details about this widget. --- @param parent? Object The parent for this object, or nil to add to the screen root. --- @param property? CalendarStyle Style properties to apply to this object --- @return Calendar function lvgl.Calendar(parent, property) end --- Create a new Checkbox widget. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/core/checkbox.html) --- for details about this widget. --- @param parent? Object The parent for this object, or nil to add to the screen root. --- @param property? CheckboxStyle Style properties to apply to this object --- @return Checkbox function lvgl.Checkbox(parent, property) end --- Create a new Dropdown widget. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/core/dropdown.html) --- for details about this widget. --- @param parent? Object The parent for this object, or nil to add to the screen root. --- @param property? DropdownStyle Style properties to apply to this object --- @return Dropdown function lvgl.Dropdown(parent, property) end --- Create a new Image widget. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/core/img.html) --- for details about this widget. --- @param parent? Object The parent for this object, or nil to add to the screen root. --- @param property? ImageStyle Style properties to apply to this object --- @return Image function lvgl.Image(parent, property) end --- Create a new Label widget. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/core/label.html) --- for details about this widget. --- @param parent? Object The parent for this object, or nil to add to the screen root. --- @param property? LabelStyle Style properties to apply to this object --- @return Label function lvgl.Label(parent, property) end --- Create a new Text Area widget. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/core/textarea.html) --- for details about this widget. --- @param parent? Object The parent for this object, or nil to add to the screen root. --- @param property? TextareaStyle Style properties to apply to this object --- @return Textarea function lvgl.Textarea(parent, property) end --- Create a new Keyboard widget. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/extra/keyboard.html) --- for details about this widget. --- @param parent? Object The parent for this object, or nil to add to the screen root. --- @param property? KeyboardStyle Style properties to apply to this object --- @return Keyboard function lvgl.Keyboard(parent, property) end --- Create a new LED widget. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/extra/led.html) --- for details about this widget. --- @param parent? Object The parent for this object, or nil to add to the screen root. --- @param property? LedStyle Style properties to apply to this object --- @return Led function lvgl.Led(parent, property) end --- Create a new List widget. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/extra/list.html) --- for details about this widget. --- @param parent? Object The parent for this object, or nil to add to the screen root. --- @param property? ListStyle Style properties to apply to this object --- @return List function lvgl.List(parent, property) end --- Create a new Roller widget. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/core/roller.html) --- for details about this widget. --- @param parent? Object The parent for this object, or nil to add to the screen root. --- @param property? RollerStyle Style properties to apply to this object --- @return Roller function lvgl.Roller(parent, property) end --- Create a new Slider widget. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/core/slider.html) --- for details about this widget. --- @param parent? Object The parent for this object, or nil to add to the screen root. --- @param property? BarStyle Style properties to apply to this object. Sliders use the same style properties as Bars. --- @return Slider function lvgl.Slider(parent, property) end --- Create a new Switch widget. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/core/switch.html) --- for details about this widget. --- @param parent? Object The parent for this object, or nil to add to the screen root. --- @param property? StyleProp Style properties to apply to this object --- @return Switch function lvgl.Switch(parent, property) end --- Create a new Timer. See the [LVGL docs](https://docs.lvgl.io/8.3/overview/timer.html) --- for more details on LVGL's Timers system. --- @param p TimerPara Parameters to use for configuring the timer. --- @return Timer function lvgl.Timer(p) end --- Create a new a font. Fonts can be located on internal flash or the SD card, --- and must be in LVGL's binary font format. --- @param path string location of the binary font file --- @return Font function lvgl.Font(path) end --- Decodes an image from the filesystem and pins it into RAM, returning a --- lightuserdata that can be passed to `img:set_src`. --- @param path? string path to the encoded image --- @return ImgData function lvgl.ImgData(path) end --- Create a new style that can be applied to objects via `obj:add_style`. --- @param p? StyleProp Style properties that will be applied by this style. --- @return Style function lvgl.Style(p) end --- --- Base LVGL object. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/obj.html) --- for additional details. --- @class Object obj = {} --- Creates a new base LVGL object as a child of this object. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/obj.html) --- for details about this widget. --- @param property? StyleProp Style properties to apply to this object --- @return Object function obj:Object(property) end --- Create a new Bar widget as a child of this object. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/core/bar.html) --- for details about this widget. --- @param property? BarStyle Style properties to apply to this object --- @return Bar function obj:Bar(property) end --- Create a new Button widget as a child of this object. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/core/btn.html) --- for details about this widget. --- @param property? StyleProp Style properties to apply to this object --- @return Button function obj:Button(property) end --- Create a new Calendar widget as a child of this object. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/extra/calendar.html) --- for details about this widget. --- @param property? CalendarStyle Style properties to apply to this object --- @return Calendar function obj:Calendar(property) end --- Create a new Checkbox widget as a child of this object. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/core/checkbox.html) --- for details about this widget. --- @param property? CheckboxStyle Style properties to apply to this object --- @return Checkbox function obj:Checkbox(property) end --- Create a new Dropdown widget as a child of this object. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/core/dropdown.html) --- for details about this widget. --- @param property? DropdownStyle Style properties to apply to this object --- @return Dropdown function obj:Dropdown(parent, property) end --- Create a new Image widget as a child of this object. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/core/img.html) --- for details about this widget. --- @param property? ImageStyle Style properties to apply to this object --- @return Image function obj:Image(property) end --- Create a new Label widget as a child of this object. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/core/label.html) --- for details about this widget. --- @param property? LabelStyle Style properties to apply to this object --- @return Label function obj:Label(property) end --- Create a new Text Area widget as a child of this object. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/core/textarea.html) --- for details about this widget. --- @param property? TextareaStyle Style properties to apply to this object --- @return Textarea function obj:Textarea(property) end --- Create a new Keyboard widget as a child of this object. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/extra/keyboard.html) --- for details about this widget. --- @param property? KeyboardStyle Style properties to apply to this object --- @return Keyboard function obj:Keyboard(property) end --- Create a new LED widget as a child of this object. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/extra/led.html) --- for details about this widget. --- @param property? LedStyle Style properties to apply to this object --- @return Led function obj:Led(property) end --- Create a new List widget as a child of this object. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/extra/list.html) --- for details about this widget. --- @param property? ListStyle Style properties to apply to this object --- @return List function obj:List(property) end --- Create a new Roller widget as a child of this object. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/core/roller.html) --- for details about this widget. --- @param property? RollerStyle Style properties to apply to this object --- @return Roller function obj:Roller(parent, property) end --- Create a new Slider widget as a child of this object. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/core/slider.html) --- for details about this widget. --- @param property? BarStyle Style properties to apply to this object. Sliders use the same style properties as Bars. --- @return Slider function obj:Slider(property) end --- Create a new Switch widget as a child of this object. See the [LVGL docs](https://docs.lvgl.io/8.3/widgets/core/switch.html) --- for details about this widget. --- @param property? StyleProp Style properties to apply to this object --- @return Switch function obj:Switch(property) end --- Sets new style properties on this object. --- @param p StyleProp Style properties to be applied. function obj:set(p) end --- Sets new style properties on this object. --- @param p StyleProp Style properties to be applied. --- @param selector integer Selector to detemine when the style is used --- function obj:set_style(p, selector) end --- Sets this object's position relative to another object. --- @param p AlignToPara function obj:align_to(p) end --- Deletes this object, removing it from the view hierarchy. function obj:delete() end --- Delete all children of this object function obj:clean() end --- Sets the parent of this object, detaching it from any existing parent. --- @param p Object The new parent object function obj:set_parent(p) end --- Gets this object's parent --- @return Object Parent function obj:get_parent() end --- --- set and/or get object's parent --- @param p Object --- @return Object function obj:parent(p) end --- --- get child object --- @param id integer 0 the first child, -1 the lastly created child --- @return Object function obj:get_child(id) end --- --- get object children count --- @return integer function obj:get_child_cnt() end --- --- get the state of this object --- @return ObjState function obj:get_state(p) end --- --- Scroll to a given coordinate on an object. --- @class ScrollToPara --- @field x integer position x --- @field y integer --- @field anim boolean --- --- @param p ScrollToPara --- @return ObjState function obj:scroll_to(p) end --- --- Tell whether an object is being scrolled or not at this moment --- @return boolean function obj:is_scrolling() end --- --- Tell whether an object is visible (even partially) now or not --- @return boolean function obj:is_visible() end --- --- add flag to object --- @param p ObjFlag --- @return nil function obj:add_flag(p) end --- --- clear object flag --- @param p ObjFlag --- @return nil function obj:clear_flag(p) end --- --- add state to object --- @param p ObjState --- @return nil function obj:add_state(p) end --- --- clear object state --- @param p ObjState --- @return nil function obj:clear_state(p) end --- --- add style to object --- @param s Style --- @param selector? integer --- @return nil function obj:add_style(s, selector) end --- --- remove style from object --- @param s Style --- @param selector? integer --- @return nil function obj:remove_style(s, selector) end --- --- remove all style from object --- @return nil function obj:remove_style_all() end ---scroll obj by x,y ---@param x integer ---@param y integer ---@param anim_en? boolean function obj:scroll_by(x, y, anim_en) end ---scroll obj by x,y ---@param x integer ---@param y integer ---@param anim_en boolean function obj:scroll_by_bounded(x, y, anim_en) end --- Scroll to an object until it becomes visible on its parent ---@param anim_en? boolean function obj:scroll_to_view(anim_en) end --- Scroll to an object until it becomes visible on its parent --- Do the same on the parent's parent, and so on. --- Therefore the object will be scrolled into view even it has nested scrollable parents ---@param anim_en? boolean function obj:scroll_to_view_recursive(anim_en) end ---scroll obj by x,y, low level APIs ---@param x integer ---@param y integer ---@param anim_en boolean function obj:scroll_by_raw(x, y, anim_en) end ---Invalidate the area of the scrollbars function obj:scrollbar_invalidate() end ---Checked if the content is scrolled "in" and adjusts it to a normal position. ---@param anim_en boolean function obj:readjust_scroll(anim_en) end ---If object is editable ---@return boolean function obj:is_editable() end --- class group def ---@return boolean function obj:is_group_def() end --- Test whether the and object is positioned by a layout or not ---@return boolean function obj:is_layout_positioned() end --- Mark the object for layout update. ---@return nil function obj:mark_layout_as_dirty() end --- Align an object to the center on its parent. same as obj:set{align={type = lvgl.ALIGN.CENTER}} ---@return nil function obj:center() end --- Align an object to the center on its parent. same as obj:set{align={type = lvgl.ALIGN.CENTER}} ---@return nil function obj:invalidate() end --- Sets this object as the current selection of the object's group. ---@return nil function obj:focus() end --- --- Object event callback. `para` is not used for now. --- @alias EventCallback fun(obj:Object, code: ObjEventCode): nil --- --- set object event callback --- @param code ObjEventCode --- @param cb EventCallback --- @return nil function obj:onevent(code, cb) end --- --- set object pressed event callback, same as obj:onevent(lvgl.EVENT.PRESSED, cb) --- @param cb EventCallback --- @return nil function obj:onPressed(cb) end --- --- set object clicked event callback, same as obj:onevent(lvgl.EVENT.CLICKED, cb) --- @param cb EventCallback --- @return nil function obj:onClicked(cb) end --- --- set object short clicked event callback, same as obj:onevent(lvgl.EVENT.SHORT_CLICKED, cb) --- @param cb EventCallback --- @return nil function obj:onShortClicked(cb) end --- --- Create anim for object --- @param p AnimPara --- @return Anim function obj:Anim(p) end --- --- Get coords of object --- @return Coords coords function obj:get_coords() end --- --- Get real postion of object relative to its parent --- @return Coords coords function obj:get_pos() end --- --- Calendar widget ---@class Calendar:Object --- local calendar = {} --- set method for calendar widget --- @param p CalendarStyle --- @return nil function calendar:set(p) end --- get today para setting from calendar widget --- @return CalendarDatePara function calendar:get_today(p) end --- get the currently showed date --- @return CalendarDatePara function calendar:get_showed(p) end --- get the currently pressed day --- @return CalendarDatePara function calendar:get_pressed(p) end --- get the button matrix object of the calendar. --- @return Object function calendar:get_btnm(p) end --- create a calendar header with drop-drowns to select the year and month. --- @return Object function calendar:Arrow(p) end --- create a calendar header with drop-drowns to select the year and month --- @return Object function calendar:Dropdown(p) end --- --- Bar widget ---@class Bar:Object --- local bar = {} --- set method for bar widget --- @param p BarStyle --- @return nil function bar:set(p) end --- --- Button widget ---@class Button:Object --- local button = {} --- set method for button widget --- @param p ButtonStyle --- @return nil function button:set(p) end --- --- Checkbox widget ---@class Checkbox:Object --- local checkbox = {} --- set method --- @param p CheckboxStyle --- @return nil function checkbox:set(p) end --- --- Get the text of a label --- @return string function checkbox:get_text() end --- --- Dropdown widget ---@class Dropdown:Object --- local dropdown = {} --- set method --- @param p DropdownStyle --- @return nil function dropdown:set(p) end --- Gets an attribute of the dropdown. --- @param which string Which property to retrieve. Valid values are "list", "options", "selected", "option_cnt", "selected_str", "option_index", "symbol", or "dir" --- @param arg ? string --- @return string | Dir | Object function dropdown:get(which, arg) end --- Open the drop down list function dropdown:open() end --- Close (Collapse) the drop-down list function dropdown:close() end --- Tells whether the list is opened or not function dropdown:is_open() end --- Add an options to a drop-down list from a string --- @param option string --- @param pos integer function dropdown:add_option(option, pos) end --- Tells whether the list is opened or not function dropdown:clear_option() end --- --- Image widget ---@class Image:Object --- local img = {} --- Image set method --- @param p ImageStyle --- @return nil function img:set(p) end --- set image source --- @param src string image source path --- @return nil function img:set_src(src) end --- set image offset --- img:set_offset{x = 0, y = 100} --- @param p table --- @return nil function img:set_offset(p) end --- set image pivot --- img:set_pivot{x = 0, y = 100} --- @param p table --- @return nil function img:set_pivot(p) end --- get image size, return w,h --- w, h = img:get_img_size() --- w, h = img:get_img_size("/path/to/this/image.png") --- @param src ? string --- @return integer, integer function img:get_img_size(src) end --- --- Label widget ---@class Label: Object --- local label = {} --- Image set method --- @param p LabelStyle --- @return nil function label:set(p) end --- --- Get the text of a label --- @return string function label:get_text() end --- --- Get the long mode of a label --- @return string function label:get_long_mode() end --- --- Get the recoloring attribute --- @return string function label:get_recolor() end --- --- Insert a text to a label. --- @param pos integer --- @param txt string --- @return nil function label:ins_text(pos, txt) end --- --- Delete characters from a label. --- @param pos integer --- @param cnt integer --- @return nil function label:cut_text(pos, cnt) end --- --- Slider widget ---@class Slider:Object --- local slider = {} --- set method for slider widget. Uses Bar widget's properties. --- @param p BarStyle --- @return nil function slider:set(p) end --- get value of slider --- @return integer function slider:value() end --- get whether slider is dragged or not --- @return boolean function slider:is_dragged() end --- --- Switch widget ---@class Switch:Object --- local switch = {} --- set method for switch widget --- @param p StyleProp --- @return nil function switch:set(p) end --- get checked state of switch --- @return boolean function switch:enabled() end --- --- Textarea widget ---@class Textarea: Object --- local textarea = {} --- Textarea set method --- @param p TextareaStyle --- @return nil function textarea:set(p) end --- get textarea text --- @return string function textarea:get_text(p) end --- --- Keyboard widget ---@class Keyboard: Object based on btnmatrix object --- local keyboard = {} --- Keyboard set method --- @param p KeyboardStyle --- @return nil function keyboard:set(p) end --- --- LED widget ---@class Led: Object --- local led = {} --- LED set method --- @param p LedStyle --- @return nil function led:set(p) end --- LED set to ON --- @return nil function led:on() end --- LED set to OFF --- @return nil function led:off() end --- toggle LED status --- @return nil function led:toggle() end --- get LED brightness --- @return integer function led:get_brightness() end --- --- List widget ---@class List: Object --- local list = {} --- List set method --- @param p ListStyle --- @return nil function list:set(p) end --- add text to list --- @param text string --- @return Label function list:add_text(text) end --- add button to list --- @param icon ImgSrc | nil --- @param text? string --- @return Object a button object function list:add_btn(icon, text) end --- get list button text --- @param btn Object --- @return string function list:get_btn_text(btn) end --- --- Roller widget ---@class Roller: Object --- local roller = {} --- Roller set method --- @param p RollerStyle --- @return nil function roller:set(p) end --- Get the options of a roller --- @return string function roller:get_options() end --- Get the index of the selected option --- @return integer function roller:get_selected() end --- Get the current selected option as a string. --- @return string function roller:get_selected_str() end --- Get the total number of options --- @return integer function roller:get_options_cnt() end --- --- Anim ---@class Anim --- local Anim = {} --- start animation --- @return nil function Anim:start() end --- set animation new parameters --- @param para AnimPara new animation parameters --- @return nil function Anim:set(para) end --- stop animation --- @return nil function Anim:stop() end --- delete animation --- @return nil function Anim:delete() end --- --- Timer ---@class Timer --- local timer = {} --- set timer property --- @param p TimerPara --- @return nil function timer:set(p) end --- resume timer --- @return nil function timer:resume() end --- pause timer --- @return nil function timer:pause() end --- delete timer --- @return nil function timer:delete() end --- make timer ready now, cb will be made soon on next loop --- @return nil function timer:ready() end --[[ Font is a light userdata that can be used to set style text_font. ]] --- @class Font --- local font = {} --- Decoded image data that is pinned to memory. --- @class ImgData local ImgData = {} --- --- @class Style : lightuserdata --- local style = {} --- update style properties --- @param p StyleProp --- @return nil function style:set(p) end --- delete style, only delted style could be gc'ed --- @return nil function style:delete() end --- remove specified property from style --- @param p string property name from field of StyleProp --- @return nil function style:remove_prop(p) end --- --- Align parameter --- @class Align --- @field type ObjAlignType --- @field x_ofs integer --- @field y_ofs integer --- AlignTo parameter --- @class AlignToPara --- @field type ObjAlignType --- @field base Object --- @field x_ofs integer --- Style properties --- @class StyleProp --- @field w? integer --- @field width? integer --- @field min_width? integer --- @field max_width? integer --- @field height? integer --- @field min_height? integer --- @field max_height? integer --- @field x? integer --- @field y? integer --- @field size? integer set size is equivalent to set w/h to same value --- @field align? Align | ObjAlignType --- @field transform_width? integer --- @field transform_height? integer --- @field translate_x? integer --- @field translate_y? integer --- @field transform_zoom? integer --- @field transform_angle? integer --- @field transform_pivot_x? integer --- @field transform_pivot_y? integer --- @field pad_all? integer --- @field pad_top? integer --- @field pad_bottom? integer --- @field pad_ver? integer --- @field pad_left? integer --- @field pad_right? integer --- @field pad_hor? integer --- @field pad_row? integer --- @field pad_column? integer --- @field pad_gap? integer --- @field bg_color? integer | string text color in hex integer or #RGB or #RRGGBB format --- @field bg_opa? integer --- @field bg_grad_color? integer --- @field bg_grad_dir? integer --- @field bg_main_stop? integer --- @field bg_grad_stop? integer --- @field bg_dither_mode? integer --- @field bg_img_src? integer --- @field bg_img_opa? integer --- @field bg_img_recolor? integer --- @field bg_img_recolor_opa? integer --- @field bg_img_tiled? integer --- @field border_color? integer | string --- @field border_opa? integer --- @field border_width? integer --- @field border_side? integer --- @field border_post? integer --- @field outline_width? integer --- @field outline_color? integer | string --- @field outline_opa? integer --- @field outline_pad? integer --- @field shadow_width? integer --- @field shadow_ofs_x? integer --- @field shadow_ofs_y? integer --- @field shadow_spread? integer --- @field shadow_color? integer | string --- @field shadow_opa? integer --- @field img_opa? integer --- @field img_recolor? integer --- @field img_recolor_opa? integer --- @field line_width? integer --- @field line_dash_width? integer --- @field line_dash_gap? integer --- @field line_rounded? integer --- @field line_color? integer | string --- @field line_opa? integer --- @field arc_width? integer --- @field arc_rounded? integer --- @field arc_color? integer | string --- @field arc_opa? integer --- @field arc_img_src? integer --- @field text_color? integer | string --- @field text_opa? integer --- @field text_font? Font --- @field text_letter_space? integer --- @field text_line_space/ integer --- @field text_decor? integer --- @field text_align? integer --- @field radius? integer --- @field clip_corner? integer --- @field opa? integer --- @field color_filter_opa? integer --- @field anim_time? integer --- @field anim_speed? integer --- @field blend_mode? integer --- @field layout? integer --- @field base_dir? integer --- @field flex_flow? FlexFlow --- @field flex_main_place? FlexAlign --- @field flex_cross_place? FlexAlign --- @field flex_track_place/ FlexAlign --- @field flex_grow? integer 0..255 --- @field flex? FlexLayoutPara --- --- Object style --- @class ObjectStyle :StyleProp --- @field x integer --- @field y integer --- @field w integer --- @field h integer --- @field align Align | integer --- @field align_to AlignToPara --- @field scrollbar_mode ScrollbarMode --- @field scroll_dir Dir --- @field scroll_snap_x integer --- @field scroll_snap_y integer --- --- Image style --- @class ImageStyle :StyleProp --- @field src string --- @field offset_x integer offset of image --- @field offset_y integer --- @field angle integer --- @field zoom integer --- @field antialias boolean --- @field pivot table --- --- Label style --- @class LabelStyle :StyleProp --- @field text string --- Bar style --- @class BarStyle :StyleProp --- @field range BarRangePara --- @field value integer --- Button style --- @class ButtonStyle :StyleProp --- Checkbox style --- @class CalendarStyle :StyleProp --- @field today CalendarDatePara --- @field showed CalendarDatePara --- Checkbox style --- @class CheckboxStyle :StyleProp --- @field text string --- Dropdown style --- @class DropdownStyle :StyleProp --- @field text string | nil --- @field options string --- @field selected integer --- @field dir Dir --- @field symbol lightuserdata | string --- @field highlight boolean --- Textarea style --- @class TextareaStyle :StyleProp --- @field text string --- @field placeholder string --- @field cursor integer cursor position --- @field password_mode boolean enable password --- @field one_line boolean enable one line mode --- @field password_bullet string Set the replacement characters to show in password mode --- @field accepted_chars string DO NOT USE. Set a list of characters. Only these characters will be accepted by the text area E.g. "+-.,0123456789" --- @field max_length integer Set max length of a Text Area. --- @field password_show_time integer Set how long show the password before changing it to '*' --- Keyboard style --- @class KeyboardStyle :StyleProp --- @field textarea Textarea textarea object --- @field mode KeyboardMode --- @field popovers boolean Show the button title in a popover when pressed. --- Led style --- @class LedStyle :StyleProp --- @field color integer|string color of led --- @field brightness integer brightness in range of 0..255 --- List style --- @class ListStyle :StyleProp --- Roller style --- @class RollerStyle :StyleProp --- @field options table | string --- @field selected table | integer --- @field visible_cnt integer --- --- Anim(for object) parameter --- @alias AnimExecCb fun(obj:any, value:integer): nil --- @alias AnimDoneCb fun(anim:Anim, var:any): nil --- @class AnimPara --- @field run boolean run this anim right now, or later using anim:start(). default: false --- @field start_value integer start value --- @field end_value integer --- @field duration integer Anim duration in milisecond --- @field delay integer Set a delay before starting the animation --- @field repeat_count integer Anim repeat count, default: 1, set to 0 to disable repeat, set to lvgl.ANIM_REPEAT_INFINITE for infinite repeat, set to any other integer for specified repeate count --- @field playback_delay integer --- @field playback_time integer --- @field early_apply boolean set start_value right now or not. default: true --- @field path string | "linear" | "ease_in" | "ease_out" | "ease_in_out" | "overshoot" | "bounce" | "step" --- @field exec_cb AnimExecCb --- @field done_cb AnimDoneCb --- --- Timer para --- @alias TimerCallback fun(t:Timer): nil --- @class TimerPara --- @field paused boolean Do not start timer immediaely --- @field period integer timer period in ms unit --- @field repeat_count integer | -1 | --- @field cb TimerCallback --- --- --- @alias ImgSrc string | lightuserdata --- Alignment values for flex layouts. See the [LVGL docs](https://docs.lvgl.io/8.3/layouts/flex.html#flex-align) --- for more details. --- @alias flexAlignOptions ---| "flex-start" ---| "flex-end" ---| "center" wow ---| "space-between" ---| "space-around" ---| "space-evenly" --- @class FlexLayoutPara --- @field flex_direction? "row" | "column" | "row-reverse" | "column-reverse" --- @field flex_wrap? "nowrap" | "wrap" | "wrap-reverse" --- @field justify_content? flexAlignOptions --- @field align_items? flexAlignOptions --- @field align_content? flexAlignOptions --- --- BarRange para --- @class BarRangePara --- @field min integer --- @field max integer --- --- --- CalendarToday para --- @class CalendarDatePara --- @field year integer --- @field month integer --- @field day integer --- --- --- Coordinates --- @class Coords --- @field x1 integer --- @field y1 integer --- @field x2 integer --- @field y2 integer --- return lvgl