widget_element_icon.c 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include "widget_element_i.h"
  2. typedef struct {
  3. uint8_t x;
  4. uint8_t y;
  5. const Icon* icon;
  6. } GuiIconModel;
  7. static void gui_icon_draw(Canvas* canvas, WidgetElement* element) {
  8. furi_assert(canvas);
  9. furi_assert(element);
  10. GuiIconModel* model = element->model;
  11. if(model->icon) {
  12. canvas_draw_icon(canvas, model->x, model->y, model->icon);
  13. }
  14. }
  15. static void gui_icon_free(WidgetElement* gui_icon) {
  16. furi_assert(gui_icon);
  17. free(gui_icon->model);
  18. free(gui_icon);
  19. }
  20. WidgetElement* widget_element_icon_create(uint8_t x, uint8_t y, const Icon* icon) {
  21. furi_assert(icon);
  22. // Allocate and init model
  23. GuiIconModel* model = malloc(sizeof(GuiIconModel));
  24. model->x = x;
  25. model->y = y;
  26. model->icon = icon;
  27. // Allocate and init Element
  28. WidgetElement* gui_icon = malloc(sizeof(WidgetElement));
  29. gui_icon->parent = NULL;
  30. gui_icon->input = NULL;
  31. gui_icon->draw = gui_icon_draw;
  32. gui_icon->free = gui_icon_free;
  33. gui_icon->model = model;
  34. return gui_icon;
  35. }