chore(color): improvements to Lua API (#6846)

This commit is contained in:
philmoz
2025-12-05 11:47:25 +10:00
committed by GitHub
parent cf5ab821ee
commit b57f735945
6 changed files with 493 additions and 138 deletions
+81 -7
View File
@@ -29,6 +29,52 @@ class LvglDialog;
//-----------------------------------------------------------------------------
enum LuaLvglType
{
ETX_UNDEF,
// Drawing primitives
ETX_LABEL,
ETX_RECTANGLE,
ETX_CIRCLE,
ETX_ARC,
ETX_HLINE,
ETX_VLINE,
ETX_LINE,
ETX_TRIANGLE,
ETX_IMAGE,
ETX_QRCODE,
// Contianers
ETX_BOX,
// Controls - tools / fullscreen widgets only
ETX_FIRST_CONTROL,
ETX_BUTTON = ETX_FIRST_CONTROL,
ETX_MOMENTARY_BUTTON,
ETX_TOGGLE,
ETX_TEXTEDIT,
ETX_NUMBEREDIT,
ETX_CHOICE,
ETX_SLIDER,
ETX_VERTICAL_SLIDER,
// Containers
ETX_PAGE,
// Value selectors
ETX_FONT,
ETX_ALIGN,
ETX_COLOR,
ETX_TIMER,
ETX_SWITCH,
ETX_SOURCE,
ETX_FILE,
ETX_SETTING,
ETX_LAST
};
//-----------------------------------------------------------------------------
struct LvglParamFuncOrValue
{
public:
@@ -114,6 +160,7 @@ class LvglTitleParam
LvglParamFuncOrString title = { .function = LUA_REFNIL, .txt = ""};
bool parseTitleParam(lua_State *L, const char *key);
void clearTitleRefs(lua_State *L);
};
class LvglMessageParam
@@ -138,6 +185,18 @@ class LvglRoundedParam
bool parseRoundedParam(lua_State *L, const char *key);
};
class LvglAlignParam
{
public:
LvglAlignParam() {}
protected:
LvglParamFuncOrValue align = { .function = LUA_REFNIL, .flags = LEFT};
bool parseAlignParam(lua_State *L, const char *key);
void clearAlignRefs(lua_State *L);
};
class LvglThicknessParam
{
public:
@@ -271,7 +330,7 @@ class LvglSimpleWidgetObject : public LvglWidgetObjectBase
//-----------------------------------------------------------------------------
class LvglWidgetLabel : public LvglSimpleWidgetObject, public LvglTextParams
class LvglWidgetLabel : public LvglSimpleWidgetObject, public LvglTextParams, public LvglAlignParam
{
public:
LvglWidgetLabel() : LvglSimpleWidgetObject() {}
@@ -285,8 +344,6 @@ class LvglWidgetLabel : public LvglSimpleWidgetObject, public LvglTextParams
void clearRefs(lua_State *L) override;
protected:
LvglParamFuncOrValue align = { .function = LUA_REFNIL, .flags = LEFT};
void build(lua_State *L) override;
void parseParam(lua_State *L, const char *key) override;
void refresh() override
@@ -360,6 +417,8 @@ class LvglWidgetLine : public LvglSimpleWidgetObject, public LvglRoundedParam, p
bool callRefs(lua_State *L) override;
void clearRefs(lua_State *L) override;
bool isVisible() override;
protected:
size_t ptCnt = 0;
size_t ptAlloc = 0;
@@ -441,10 +500,13 @@ class LvglWidgetObject : public LvglWidgetObjectBase
//-----------------------------------------------------------------------------
class LvglWidgetBox : public LvglWidgetObject, public LvglScrollableParams
class LvglWidgetBox : public LvglWidgetObject, public LvglScrollableParams, public LvglAlignParam
{
public:
LvglWidgetBox() : LvglWidgetObject() {}
LvglWidgetBox() : LvglWidgetObject(), LvglScrollableParams(), LvglAlignParam()
{
align.flags = CENTERED;
}
coord_t getScrollX() override;
coord_t getScrollY() override;
@@ -464,6 +526,8 @@ class LvglWidgetSetting : public LvglWidgetObject, public LvglTitleParam
public:
LvglWidgetSetting() : LvglWidgetObject() {}
void clearRefs(lua_State *L) override;
protected:
void build(lua_State *L) override;
@@ -787,10 +851,13 @@ class LvglWidgetVerticalSlider : public LvglWidgetSliderBase
class WidgetPage;
class LvglWidgetPage : public LvglWidgetObject, public LvglTitleParam, public LvglScrollableParams
class LvglWidgetPage : public LvglWidgetObject, public LvglTitleParam, public LvglScrollableParams, public LvglAlignParam
{
public:
LvglWidgetPage() : LvglWidgetObject() {}
LvglWidgetPage() : LvglWidgetObject()
{
align.flags = CENTERED;
}
bool callRefs(lua_State *L) override;
void clearRefs(lua_State *L) override;
@@ -805,8 +872,15 @@ class LvglWidgetPage : public LvglWidgetObject, public LvglTitleParam, public Lv
LvglParamFuncOrString subtitle = { .function = LUA_REFNIL, .txt = ""};
std::string iconFile;
WidgetPage* page = nullptr;
bool showBackButton = false;
bool showNavButtons = false;
int backActionFunction = LUA_REFNIL;
int menuActionFunction = LUA_REFNIL;
int prevActionFunction = LUA_REFNIL;
int nextActionFunction = LUA_REFNIL;
int prevActiveFunction = LUA_REFNIL;
int nextActiveFunction = LUA_REFNIL;
void build(lua_State *L) override;
void parseParam(lua_State *L, const char *key) override;