canvas.c 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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_draw_str_aligned_outline(
  23. Canvas* canvas,
  24. uint8_t x,
  25. uint8_t y,
  26. Align h,
  27. Align v,
  28. const char* cstr) {
  29. canvas_invert_color(canvas);
  30. canvas_draw_str_aligned(canvas, x + 1, y + 0, h, v, cstr);
  31. canvas_draw_str_aligned(canvas, x - 1, y - 0, h, v, cstr);
  32. canvas_draw_str_aligned(canvas, x + 0, y + 1, h, v, cstr);
  33. canvas_draw_str_aligned(canvas, x - 0, y - 1, h, v, cstr);
  34. canvas_invert_color(canvas);
  35. canvas_draw_str_aligned(canvas, x, y, h, v, cstr);
  36. }