luat_lib_lvgl_style.c 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. /*
  2. @module lvgl
  3. @summary LVGL图像库
  4. @version 1.0
  5. @date 2021.06.01
  6. */
  7. #include "luat_base.h"
  8. #include "luat_lvgl.h"
  9. #include "lvgl.h"
  10. #include "luat_mem.h"
  11. /*
  12. 创建一个style
  13. @api lvgl.style_t()
  14. @return userdata style指针
  15. @usage
  16. local style = lvgl.style_t()
  17. lvgl.style_init(style)
  18. */
  19. int luat_lv_style_t(lua_State *L) {
  20. lv_style_t* style = (lv_style_t*)lua_newuserdata(L, sizeof(lv_style_t));
  21. if (style == NULL) {
  22. LLOGE("out of memory when create lv_style_t");
  23. return 0;
  24. }
  25. luaL_setmetatable(L, "LV_STYLE_T*");
  26. return 1;
  27. }
  28. /*
  29. 创建一个style并初始化
  30. @api lvgl.style_create()
  31. @return userdata style指针
  32. @usage
  33. local style = lvgl.style_create()
  34. */
  35. int luat_lv_style_create(lua_State *L) {
  36. lv_style_t* style = (lv_style_t*)lua_newuserdata(L, sizeof(lv_style_t));
  37. if (style == NULL) {
  38. LLOGE("out of memory when create lv_style_t");
  39. return 0;
  40. }
  41. lv_style_init(style);
  42. // lua_pushlightuserdata(L, style);
  43. return 1;
  44. }
  45. /*
  46. 创建一个style_list
  47. @api lvgl.style_list_create()
  48. @return userdata style指针
  49. @usage
  50. local style_list = lvgl.style_list_create()
  51. */
  52. int luat_lv_style_list_create(lua_State *L) {
  53. lv_style_list_t* style_list = (lv_style_list_t*)luat_heap_malloc(sizeof(lv_style_list_t));
  54. if (style_list == NULL) {
  55. LLOGE("out of memory when create lv_style_list_t");
  56. return 0;
  57. }
  58. lv_style_list_init(style_list);
  59. lua_pushlightuserdata(L, style_list);
  60. return 1;
  61. }
  62. /*
  63. 创建一个style_list
  64. @api lvgl.style_list_t()
  65. @return userdata style指针
  66. @usage
  67. local style = lvgl.style_list_t()
  68. */
  69. int luat_lv_style_list_t(lua_State *L) {
  70. return luat_lv_style_list_create(L);
  71. }
  72. /*
  73. 删除style,慎用,通常不会执行删除操作
  74. @api lvgl.style_delete(style)
  75. @userdata style指针
  76. @usage
  77. local style = lvgl.style_create()
  78. -- ...
  79. -- ...
  80. -- lvgl.style_delete(style)
  81. */
  82. int luat_lv_style_delete(lua_State *L) {
  83. // lv_style_t* style = (lv_style_t*)lua_touserdata(L, 1);
  84. // if (style != NULL) {
  85. // luat_heap_free(style);
  86. // }
  87. return 0;
  88. }
  89. /*
  90. 删除style_list,慎用,通常不会执行删除操作
  91. @api lvgl.style_list_delete(style)
  92. @userdata style指针
  93. @usage
  94. local style_list = lvgl.style_list_create()
  95. -- ...
  96. -- ...
  97. -- lvgl.style_list_delete(style_list)
  98. */
  99. int luat_lv_style_list_delete(lua_State *L) {
  100. lv_style_list_t* style_list = (lv_style_list_t*)lua_touserdata(L, 1);
  101. if (style_list != NULL) {
  102. luat_heap_free(style_list);
  103. }
  104. return 0;
  105. }
  106. #if LV_USE_ANIMATION
  107. int luat_lv_style_set_transition_path(lua_State *L) {
  108. lv_style_t* style = (lv_style_t*)lua_touserdata(L, 1);
  109. lv_state_t state = (lv_state_t)luaL_checkinteger(L, 2);
  110. lv_anim_path_t* path = (lv_anim_path_t*)lua_touserdata(L, 3);
  111. lv_style_set_transition_path(style, state, path);
  112. return 0;
  113. }
  114. #endif