mp_flipper_modflipperzero_canvas.c 3.1 KB

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