luat_lib_lvgl_font.c 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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_malloc.h"
  11. #include "luat_lvgl_fonts.h"
  12. /*
  13. 获取内置字体
  14. @api lvgl.font_get(name)
  15. @string 字体名称+字号, 例如 opposans_m_10 simsun_48
  16. @return userdata 字体指针
  17. @usage
  18. local font = lvgl.font_get("simsun_48")
  19. */
  20. int luat_lv_font_get(lua_State *L) {
  21. lv_font_t* font = NULL;
  22. const char* fontname = luaL_checkstring(L, 1);
  23. if (!strcmp("", fontname)) {
  24. }
  25. #ifdef LV_FONT_MONTSERRAT_14
  26. else if (!strcmp("montserrat_14", fontname)) { font = &lv_font_montserrat_14;}
  27. #endif
  28. #ifdef LV_FONT_OPPOSANS_M_8
  29. else if (!strcmp("opposans_m_8", fontname)) { font = &lv_font_opposans_m_8;}
  30. #endif
  31. #ifdef LV_FONT_OPPOSANS_M_10
  32. else if (!strcmp("opposans_m_10", fontname)) { font = &lv_font_opposans_m_10;}
  33. #endif
  34. #ifdef LV_FONT_OPPOSANS_M_12
  35. else if (!strcmp("opposans_m_12", fontname)) { font = &lv_font_opposans_m_12;}
  36. #endif
  37. #ifdef LV_FONT_OPPOSANS_M_14
  38. else if (!strcmp("opposans_m_14", fontname)) { font = &lv_font_opposans_m_14;}
  39. #endif
  40. #ifdef LV_FONT_OPPOSANS_M_16
  41. else if (!strcmp("opposans_m_16", fontname)) { font = &lv_font_opposans_m_16;}
  42. #endif
  43. #ifdef LV_FONT_OPPOSANS_M_18
  44. else if (!strcmp("opposans_m_18", fontname)) { font = &lv_font_opposans_m_18;}
  45. #endif
  46. #ifdef LV_FONT_OPPOSANS_M_20
  47. else if (!strcmp("opposans_m_20", fontname)) { font = &lv_font_opposans_m_20;}
  48. #endif
  49. #ifdef LV_FONT_OPPOSANS_M_22
  50. else if (!strcmp("opposans_m_22", fontname)) { font = &lv_font_opposans_m_22;}
  51. #endif
  52. #ifdef USE_LVGL_SIMSUN_48
  53. else if (!strcmp("simsun_48", fontname)) { font = &lv_font_simsun_48;}
  54. #endif
  55. if (font) {
  56. lua_pushlightuserdata(L, font);
  57. return 1;
  58. }
  59. return 0;
  60. }
  61. /*
  62. 从文件系统加载字体
  63. @api lvgl.font_load(path)
  64. @string 字体路径
  65. @return userdata 字体指针
  66. @usage
  67. local font = lvgl.font_load("/font_simsun_32.bin")
  68. */
  69. int luat_lv_font_load(lua_State *L) {
  70. const char* fontname = luaL_checkstring(L, 1);
  71. lv_font_t* font = lv_font_load(fontname);
  72. if (font) {
  73. lua_pushlightuserdata(L, font);
  74. return 1;
  75. }
  76. return 0;
  77. }
  78. /*
  79. 释放字体,慎用!!!仅通过font_load加载的字体允许卸载,通过font_get获取的字体不允许卸载
  80. @api lvgl.font_free(font)
  81. @string 字体路径
  82. @return userdata 字体指针
  83. @usage
  84. local font = lvgl.font_load("/font_simsun_32.bin")
  85. -- N N N N 操作
  86. -- 确定字体不被使用,不被引用,且内存紧张需要释放
  87. lvgl.font_free(font)
  88. */
  89. int luat_lv_font_free(lua_State *L) {
  90. lv_font_t* font = lua_touserdata(L, 1);
  91. if (font) {
  92. lv_font_free(font);
  93. }
  94. return 0;
  95. }