luat_easylvgl_binding.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /**
  2. * @file luat_easylvgl_binding.h
  3. * @summary EasyLVGL Lua 绑定公共头文件
  4. * @responsible 定义通用组件辅助函数和数据结构
  5. */
  6. #ifndef LUAT_EASYLVGL_BINDING_H
  7. #define LUAT_EASYLVGL_BINDING_H
  8. #include "lua.h"
  9. #include "lauxlib.h"
  10. #include "lvgl9/src/core/lv_obj.h"
  11. #define EASYLVGL_TEXTAREA_MT "easylvgl.textarea"
  12. #define EASYLVGL_KEYBOARD_MT "easylvgl.keyboard"
  13. #define EASYLVGL_CONTAINER_MT "easylvgl.container"
  14. #define EASYLVGL_TABLE_MT "easylvgl.table"
  15. #define EASYLVGL_TABVIEW_MT "easylvgl.tabview"
  16. #ifdef __cplusplus
  17. extern "C" {
  18. #endif
  19. // 组件 userdata 结构(所有组件共享)
  20. typedef struct {
  21. lv_obj_t *obj;
  22. } easylvgl_component_ud_t;
  23. /**
  24. * 推送组件 userdata 到 Lua 栈
  25. * @param L Lua 状态
  26. * @param obj LVGL 对象指针
  27. * @param mt 元表名称
  28. */
  29. void easylvgl_push_component_userdata(lua_State *L, lv_obj_t *obj, const char *mt);
  30. /**
  31. * 检查并获取组件 userdata
  32. * @param L Lua 状态
  33. * @param index 栈索引
  34. * @param mt 元表名称
  35. * @return LVGL 对象指针,失败时抛出错误
  36. */
  37. lv_obj_t *easylvgl_check_component(lua_State *L, int index, const char *mt);
  38. #ifdef __cplusplus
  39. }
  40. #endif
  41. #endif /* LUAT_EASYLVGL_BINDING_H */