mp_flipper_modflipperzero_canvas.c 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #include <gui/gui.h>
  2. #include <mp_flipper_modflipperzero.h>
  3. #include <mp_flipper_runtime.h>
  4. #include "mp_flipper_context.h"
  5. static Align text_align_x = AlignLeft;
  6. static Align text_align_y = AlignTop;
  7. inline uint8_t mp_flipper_canvas_width() {
  8. mp_flipper_context_t* ctx = mp_flipper_context;
  9. return canvas_width(ctx->canvas);
  10. }
  11. inline uint8_t mp_flipper_canvas_height() {
  12. mp_flipper_context_t* ctx = mp_flipper_context;
  13. return canvas_height(ctx->canvas);
  14. }
  15. inline uint8_t mp_flipper_canvas_text_width(const char* text) {
  16. mp_flipper_context_t* ctx = mp_flipper_context;
  17. return canvas_string_width(ctx->canvas, text);
  18. }
  19. inline uint8_t mp_flipper_canvas_text_height() {
  20. mp_flipper_context_t* ctx = mp_flipper_context;
  21. return canvas_current_font_height(ctx->canvas);
  22. }
  23. inline void mp_flipper_canvas_draw_dot(uint8_t x, uint8_t y) {
  24. mp_flipper_context_t* ctx = mp_flipper_context;
  25. canvas_draw_dot(ctx->canvas, x, y);
  26. }
  27. inline void mp_flipper_canvas_draw_box(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t r) {
  28. mp_flipper_context_t* ctx = mp_flipper_context;
  29. canvas_draw_rbox(ctx->canvas, x, y, w, h, r);
  30. }
  31. inline void mp_flipper_canvas_draw_frame(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t r) {
  32. mp_flipper_context_t* ctx = mp_flipper_context;
  33. canvas_draw_rframe(ctx->canvas, x, y, w, h, r);
  34. }
  35. inline void mp_flipper_canvas_draw_line(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1) {
  36. mp_flipper_context_t* ctx = mp_flipper_context;
  37. canvas_draw_line(ctx->canvas, x0, y0, x1, y1);
  38. }
  39. inline void mp_flipper_canvas_draw_circle(uint8_t x, uint8_t y, uint8_t r) {
  40. mp_flipper_context_t* ctx = mp_flipper_context;
  41. canvas_draw_circle(ctx->canvas, x, y, r);
  42. }
  43. inline void mp_flipper_canvas_draw_disc(uint8_t x, uint8_t y, uint8_t r) {
  44. mp_flipper_context_t* ctx = mp_flipper_context;
  45. canvas_draw_disc(ctx->canvas, x, y, r);
  46. }
  47. inline void mp_flipper_canvas_set_font(uint8_t font) {
  48. mp_flipper_context_t* ctx = mp_flipper_context;
  49. canvas_set_font(ctx->canvas, font == MP_FLIPPER_FONT_PRIMARY ? FontPrimary : FontSecondary);
  50. }
  51. inline void mp_flipper_canvas_set_color(uint8_t color) {
  52. mp_flipper_context_t* ctx = mp_flipper_context;
  53. canvas_set_color(ctx->canvas, color == MP_FLIPPER_COLOR_BLACK ? ColorBlack : ColorWhite);
  54. }
  55. inline void mp_flipper_canvas_set_text(uint8_t x, uint8_t y, const char* text) {
  56. mp_flipper_context_t* ctx = mp_flipper_context;
  57. canvas_draw_str_aligned(ctx->canvas, x, y, text_align_x, text_align_y, text);
  58. }
  59. inline void mp_flipper_canvas_set_text_align(uint8_t x, uint8_t y) {
  60. Align align_x = x == MP_FLIPPER_ALIGN_BEGIN ? AlignLeft : AlignRight;
  61. Align align_y = y == MP_FLIPPER_ALIGN_BEGIN ? AlignTop : AlignBottom;
  62. text_align_x = x == MP_FLIPPER_ALIGN_CENTER ? AlignCenter : align_x;
  63. text_align_y = y == MP_FLIPPER_ALIGN_CENTER ? AlignCenter : align_y;
  64. }
  65. inline void mp_flipper_canvas_update() {
  66. mp_flipper_context_t* ctx = mp_flipper_context;
  67. canvas_commit(ctx->canvas);
  68. }
  69. inline void mp_flipper_canvas_clear() {
  70. mp_flipper_context_t* ctx = mp_flipper_context;
  71. canvas_clear(ctx->canvas);
  72. }