luat_lv_canvas.c 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. #include "luat_base.h"
  2. #include "lvgl.h"
  3. #include "luat_lvgl.h"
  4. // lv_obj_t* lv_canvas_create(lv_obj_t* par, lv_obj_t* copy)
  5. int luat_lv_canvas_create(lua_State *L) {
  6. LV_DEBUG("CALL lv_canvas_create");
  7. lv_obj_t* par = (lv_obj_t*)lua_touserdata(L, 1);
  8. lv_obj_t* copy = (lv_obj_t*)lua_touserdata(L, 2);
  9. lv_obj_t* ret = NULL;
  10. ret = lv_canvas_create(par ,copy);
  11. if (ret) lua_pushlightuserdata(L, ret); else lua_pushnil(L);
  12. return 1;
  13. }
  14. // void lv_canvas_set_px(lv_obj_t* canvas, lv_coord_t x, lv_coord_t y, lv_color_t c)
  15. int luat_lv_canvas_set_px(lua_State *L) {
  16. LV_DEBUG("CALL lv_canvas_set_px");
  17. lv_obj_t* canvas = (lv_obj_t*)lua_touserdata(L, 1);
  18. lv_coord_t x = (lv_coord_t)luaL_checknumber(L, 2);
  19. lv_coord_t y = (lv_coord_t)luaL_checknumber(L, 3);
  20. lv_color_t c = {0};
  21. c.full = luaL_checkinteger(L, 4);
  22. lv_canvas_set_px(canvas ,x ,y ,c);
  23. return 0;
  24. }
  25. // void lv_canvas_set_palette(lv_obj_t* canvas, uint8_t id, lv_color_t c)
  26. int luat_lv_canvas_set_palette(lua_State *L) {
  27. LV_DEBUG("CALL lv_canvas_set_palette");
  28. lv_obj_t* canvas = (lv_obj_t*)lua_touserdata(L, 1);
  29. uint8_t id = (uint8_t)luaL_checkinteger(L, 2);
  30. lv_color_t c = {0};
  31. c.full = luaL_checkinteger(L, 3);
  32. lv_canvas_set_palette(canvas ,id ,c);
  33. return 0;
  34. }
  35. // lv_color_t lv_canvas_get_px(lv_obj_t* canvas, lv_coord_t x, lv_coord_t y)
  36. int luat_lv_canvas_get_px(lua_State *L) {
  37. LV_DEBUG("CALL lv_canvas_get_px");
  38. lv_obj_t* canvas = (lv_obj_t*)lua_touserdata(L, 1);
  39. lv_coord_t x = (lv_coord_t)luaL_checknumber(L, 2);
  40. lv_coord_t y = (lv_coord_t)luaL_checknumber(L, 3);
  41. lv_color_t ret;
  42. ret = lv_canvas_get_px(canvas ,x ,y);
  43. lua_pushinteger(L, ret.full);
  44. return 1;
  45. }
  46. // lv_img_dsc_t* lv_canvas_get_img(lv_obj_t* canvas)
  47. int luat_lv_canvas_get_img(lua_State *L) {
  48. LV_DEBUG("CALL lv_canvas_get_img");
  49. lv_obj_t* canvas = (lv_obj_t*)lua_touserdata(L, 1);
  50. lv_img_dsc_t* ret = NULL;
  51. ret = lv_canvas_get_img(canvas);
  52. if (ret) lua_pushlightuserdata(L, ret); else lua_pushnil(L);
  53. return 1;
  54. }
  55. // void lv_canvas_copy_buf(lv_obj_t* canvas, void* to_copy, lv_coord_t x, lv_coord_t y, lv_coord_t w, lv_coord_t h)
  56. int luat_lv_canvas_copy_buf(lua_State *L) {
  57. LV_DEBUG("CALL lv_canvas_copy_buf");
  58. lv_obj_t* canvas = (lv_obj_t*)lua_touserdata(L, 1);
  59. void* to_copy = (void*)lua_touserdata(L, 2);
  60. lv_coord_t x = (lv_coord_t)luaL_checknumber(L, 3);
  61. lv_coord_t y = (lv_coord_t)luaL_checknumber(L, 4);
  62. lv_coord_t w = (lv_coord_t)luaL_checknumber(L, 5);
  63. lv_coord_t h = (lv_coord_t)luaL_checknumber(L, 6);
  64. lv_canvas_copy_buf(canvas ,to_copy ,x ,y ,w ,h);
  65. return 0;
  66. }
  67. // void lv_canvas_transform(lv_obj_t* canvas, lv_img_dsc_t* img, int16_t angle, uint16_t zoom, lv_coord_t offset_x, lv_coord_t offset_y, int32_t pivot_x, int32_t pivot_y, bool antialias)
  68. int luat_lv_canvas_transform(lua_State *L) {
  69. LV_DEBUG("CALL lv_canvas_transform");
  70. lv_obj_t* canvas = (lv_obj_t*)lua_touserdata(L, 1);
  71. lv_img_dsc_t* img = (lv_img_dsc_t*)lua_touserdata(L, 2);
  72. int16_t angle = (int16_t)luaL_checkinteger(L, 3);
  73. uint16_t zoom = (uint16_t)luaL_checkinteger(L, 4);
  74. lv_coord_t offset_x = (lv_coord_t)luaL_checknumber(L, 5);
  75. lv_coord_t offset_y = (lv_coord_t)luaL_checknumber(L, 6);
  76. int32_t pivot_x = (int32_t)luaL_checkinteger(L, 7);
  77. int32_t pivot_y = (int32_t)luaL_checkinteger(L, 8);
  78. bool antialias = (bool)lua_toboolean(L, 9);
  79. lv_canvas_transform(canvas ,img ,angle ,zoom ,offset_x ,offset_y ,pivot_x ,pivot_y ,antialias);
  80. return 0;
  81. }
  82. // void lv_canvas_blur_hor(lv_obj_t* canvas, lv_area_t* area, uint16_t r)
  83. int luat_lv_canvas_blur_hor(lua_State *L) {
  84. LV_DEBUG("CALL lv_canvas_blur_hor");
  85. lv_obj_t* canvas = (lv_obj_t*)lua_touserdata(L, 1);
  86. lv_area_t* area = (lv_area_t*)lua_touserdata(L, 2);
  87. uint16_t r = (uint16_t)luaL_checkinteger(L, 3);
  88. lv_canvas_blur_hor(canvas ,area ,r);
  89. return 0;
  90. }
  91. // void lv_canvas_blur_ver(lv_obj_t* canvas, lv_area_t* area, uint16_t r)
  92. int luat_lv_canvas_blur_ver(lua_State *L) {
  93. LV_DEBUG("CALL lv_canvas_blur_ver");
  94. lv_obj_t* canvas = (lv_obj_t*)lua_touserdata(L, 1);
  95. lv_area_t* area = (lv_area_t*)lua_touserdata(L, 2);
  96. uint16_t r = (uint16_t)luaL_checkinteger(L, 3);
  97. lv_canvas_blur_ver(canvas ,area ,r);
  98. return 0;
  99. }
  100. // void lv_canvas_fill_bg(lv_obj_t* canvas, lv_color_t color, lv_opa_t opa)
  101. int luat_lv_canvas_fill_bg(lua_State *L) {
  102. LV_DEBUG("CALL lv_canvas_fill_bg");
  103. lv_obj_t* canvas = (lv_obj_t*)lua_touserdata(L, 1);
  104. lv_color_t color = {0};
  105. color.full = luaL_checkinteger(L, 2);
  106. lv_opa_t opa = (lv_opa_t)luaL_checknumber(L, 3);
  107. lv_canvas_fill_bg(canvas ,color ,opa);
  108. return 0;
  109. }
  110. // void lv_canvas_draw_rect(lv_obj_t* canvas, lv_coord_t x, lv_coord_t y, lv_coord_t w, lv_coord_t h, lv_draw_rect_dsc_t* rect_dsc)
  111. int luat_lv_canvas_draw_rect(lua_State *L) {
  112. LV_DEBUG("CALL lv_canvas_draw_rect");
  113. lv_obj_t* canvas = (lv_obj_t*)lua_touserdata(L, 1);
  114. lv_coord_t x = (lv_coord_t)luaL_checknumber(L, 2);
  115. lv_coord_t y = (lv_coord_t)luaL_checknumber(L, 3);
  116. lv_coord_t w = (lv_coord_t)luaL_checknumber(L, 4);
  117. lv_coord_t h = (lv_coord_t)luaL_checknumber(L, 5);
  118. lv_draw_rect_dsc_t* rect_dsc = (lv_draw_rect_dsc_t*)lua_touserdata(L, 6);
  119. lv_canvas_draw_rect(canvas ,x ,y ,w ,h ,rect_dsc);
  120. return 0;
  121. }
  122. // void lv_canvas_draw_text(lv_obj_t* canvas, lv_coord_t x, lv_coord_t y, lv_coord_t max_w, lv_draw_label_dsc_t* label_draw_dsc, char* txt, lv_label_align_t align)
  123. int luat_lv_canvas_draw_text(lua_State *L) {
  124. LV_DEBUG("CALL lv_canvas_draw_text");
  125. lv_obj_t* canvas = (lv_obj_t*)lua_touserdata(L, 1);
  126. lv_coord_t x = (lv_coord_t)luaL_checknumber(L, 2);
  127. lv_coord_t y = (lv_coord_t)luaL_checknumber(L, 3);
  128. lv_coord_t max_w = (lv_coord_t)luaL_checknumber(L, 4);
  129. lv_draw_label_dsc_t* label_draw_dsc = (lv_draw_label_dsc_t*)lua_touserdata(L, 5);
  130. char* txt = (char*)luaL_checkstring(L, 6);
  131. lv_label_align_t align = (lv_label_align_t)luaL_checkinteger(L, 7);
  132. lv_canvas_draw_text(canvas ,x ,y ,max_w ,label_draw_dsc ,txt ,align);
  133. return 0;
  134. }
  135. // void lv_canvas_draw_img(lv_obj_t* canvas, lv_coord_t x, lv_coord_t y, void* src, lv_draw_img_dsc_t* img_draw_dsc)
  136. int luat_lv_canvas_draw_img(lua_State *L) {
  137. LV_DEBUG("CALL lv_canvas_draw_img");
  138. lv_obj_t* canvas = (lv_obj_t*)lua_touserdata(L, 1);
  139. lv_coord_t x = (lv_coord_t)luaL_checknumber(L, 2);
  140. lv_coord_t y = (lv_coord_t)luaL_checknumber(L, 3);
  141. void* src = (void*)lua_touserdata(L, 4);
  142. lv_draw_img_dsc_t* img_draw_dsc = (lv_draw_img_dsc_t*)lua_touserdata(L, 5);
  143. lv_canvas_draw_img(canvas ,x ,y ,src ,img_draw_dsc);
  144. return 0;
  145. }
  146. // void lv_canvas_draw_arc(lv_obj_t* canvas, lv_coord_t x, lv_coord_t y, lv_coord_t r, int32_t start_angle, int32_t end_angle, lv_draw_line_dsc_t* arc_draw_dsc)
  147. int luat_lv_canvas_draw_arc(lua_State *L) {
  148. LV_DEBUG("CALL lv_canvas_draw_arc");
  149. lv_obj_t* canvas = (lv_obj_t*)lua_touserdata(L, 1);
  150. lv_coord_t x = (lv_coord_t)luaL_checknumber(L, 2);
  151. lv_coord_t y = (lv_coord_t)luaL_checknumber(L, 3);
  152. lv_coord_t r = (lv_coord_t)luaL_checknumber(L, 4);
  153. int32_t start_angle = (int32_t)luaL_checkinteger(L, 5);
  154. int32_t end_angle = (int32_t)luaL_checkinteger(L, 6);
  155. lv_draw_line_dsc_t* arc_draw_dsc = (lv_draw_line_dsc_t*)lua_touserdata(L, 7);
  156. lv_canvas_draw_arc(canvas ,x ,y ,r ,start_angle ,end_angle ,arc_draw_dsc);
  157. return 0;
  158. }