easylvgl.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. /**
  2. * @file easylvgl.h
  3. * @summary EasyLVGL 核心接口头文件 (LVGL 9.4)
  4. * @version 0.0.2
  5. */
  6. #ifndef EASYLVGL_H
  7. #define EASYLVGL_H
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11. #include "luat_base.h"
  12. #include "../lvgl9/lvgl.h"
  13. /*********************
  14. * DEFINES
  15. *********************/
  16. /**********************
  17. * TYPEDEFS
  18. **********************/
  19. /**
  20. * EasyLVGL 显示驱动结构
  21. */
  22. typedef struct {
  23. lv_display_t *display; /**< LVGL 9 显示对象 */
  24. void *buf1; /**< 缓冲区1 */
  25. void *buf2; /**< 缓冲区2 */
  26. uint32_t buf_size; /**< 缓冲区大小(字节) */
  27. int buf1_ref; /**< Lua 引用(如果使用 Lua heap) */
  28. int buf2_ref; /**< Lua 引用(如果使用 Lua heap) */
  29. } easylvgl_display_t;
  30. /**********************
  31. * GLOBAL PROTOTYPES
  32. **********************/
  33. /**
  34. * 初始化 EasyLVGL
  35. * @param w 屏幕宽度
  36. * @param h 屏幕高度
  37. * @param buf_size 缓冲区大小(像素数,不含色深)
  38. * @param buff_mode 缓冲模式 bit0:是否使用lcdbuff bit1:buff1 bit2:buff2 bit3:是否使用lua heap
  39. * @return 成功返回0,失败返回-1
  40. */
  41. int easylvgl_init_internal(int w, int h, size_t buf_size, uint8_t buff_mode);
  42. /**
  43. * 显示刷新回调(LVGL 9 格式)
  44. * @param disp 显示对象
  45. * @param area 刷新区域
  46. * @param px_map 像素数据(uint8_t* 格式)
  47. */
  48. void easylvgl_disp_flush(lv_display_t *disp, const lv_area_t *area, uint8_t *px_map);
  49. /**
  50. * 创建按钮对象
  51. * @param parent 父对象
  52. * @return 按钮对象指针
  53. */
  54. lv_obj_t *easylvgl_button_create(lv_obj_t *parent);
  55. /**
  56. * 设置按钮点击回调
  57. * @param btn 按钮对象
  58. * @param callback Lua 回调函数引用
  59. */
  60. void easylvgl_button_set_callback(lv_obj_t *btn, int callback_ref);
  61. /**
  62. * 设置全局 Lua 状态(用于回调)
  63. * @param L Lua 状态指针
  64. */
  65. void easylvgl_set_lua_state(lua_State *L);
  66. /**
  67. * 创建标签对象
  68. * @param parent 父对象
  69. * @return 标签对象指针
  70. */
  71. lv_obj_t *easylvgl_label_create(lv_obj_t *parent);
  72. /**
  73. * 设置标签文本
  74. * @param label 标签对象
  75. * @param text 文本内容
  76. */
  77. void easylvgl_label_set_text(lv_obj_t *label, const char *text);
  78. /**
  79. * 获取标签文本
  80. * @param label 标签对象
  81. * @return 文本内容指针
  82. */
  83. const char *easylvgl_label_get_text(lv_obj_t *label);
  84. #ifdef __cplusplus
  85. } /*extern "C"*/
  86. #endif
  87. #endif /*EASYLVGL_H*/