canvas.c 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #include <furi.h>
  2. #include "canvas.h"
  3. void canvas_printf(Canvas* canvas, uint8_t x, uint8_t y, const char* format, ...) {
  4. FuriString* string = furi_string_alloc();
  5. va_list args;
  6. va_start(args, format);
  7. furi_string_vprintf(string, format, args);
  8. va_end(args);
  9. canvas_draw_str(canvas, x, y, furi_string_get_cstr(string));
  10. furi_string_free(string);
  11. }
  12. size_t canvas_printf_width(Canvas* canvas, const char* format, ...) {
  13. FuriString* string = furi_string_alloc();
  14. va_list args;
  15. va_start(args, format);
  16. furi_string_vprintf(string, format, args);
  17. va_end(args);
  18. size_t size = canvas_string_width(canvas, furi_string_get_cstr(string));
  19. furi_string_free(string);
  20. return size;
  21. }
  22. void canvas_printf_aligned(
  23. Canvas* canvas,
  24. uint8_t x,
  25. uint8_t y,
  26. Align h,
  27. Align v,
  28. const char* format,
  29. ...) {
  30. FuriString* string = furi_string_alloc();
  31. va_list args;
  32. va_start(args, format);
  33. furi_string_vprintf(string, format, args);
  34. va_end(args);
  35. canvas_draw_str_aligned(canvas, x, y, h, v, furi_string_get_cstr(string));
  36. furi_string_free(string);
  37. }
  38. void canvas_draw_str_aligned_outline(
  39. Canvas* canvas,
  40. uint8_t x,
  41. uint8_t y,
  42. Align h,
  43. Align v,
  44. const char* cstr) {
  45. canvas_invert_color(canvas);
  46. canvas_draw_str_aligned(canvas, x + 1, y + 0, h, v, cstr);
  47. canvas_draw_str_aligned(canvas, x - 1, y - 0, h, v, cstr);
  48. canvas_draw_str_aligned(canvas, x + 0, y + 1, h, v, cstr);
  49. canvas_draw_str_aligned(canvas, x - 0, y - 1, h, v, cstr);
  50. canvas_invert_color(canvas);
  51. canvas_draw_str_aligned(canvas, x, y, h, v, cstr);
  52. }