widget_element_i.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #pragma once
  2. #include <furi.h>
  3. #include <gui/view.h>
  4. typedef enum {
  5. GuiButtonTypeLeft,
  6. GuiButtonTypeCenter,
  7. GuiButtonTypeRight,
  8. } GuiButtonType;
  9. typedef void (*ButtonCallback)(GuiButtonType result, void* context);
  10. typedef struct WidgetElement WidgetElement;
  11. typedef struct Widget Widget;
  12. struct WidgetElement {
  13. // generic draw and input callbacks
  14. void (*draw)(Canvas* canvas, WidgetElement* element);
  15. bool (*input)(InputEvent* event, WidgetElement* element);
  16. // free callback
  17. void (*free)(WidgetElement* element);
  18. // generic model holder
  19. void* model;
  20. // pointer to widget that hold our element
  21. Widget* parent;
  22. };
  23. /* Create string element */
  24. WidgetElement* widget_element_string_create(
  25. uint8_t x,
  26. uint8_t y,
  27. Align horizontal,
  28. Align vertical,
  29. Font font,
  30. const char* text);
  31. /* Create button element */
  32. WidgetElement* widget_element_button_create(
  33. GuiButtonType button_type,
  34. const char* text,
  35. ButtonCallback callback,
  36. void* context);
  37. /* Create icon element */
  38. WidgetElement* widget_element_icon_create(uint8_t x, uint8_t y, const Icon* icon);
  39. /* Create frame element */
  40. WidgetElement* widget_element_frame_create(
  41. uint8_t x,
  42. uint8_t y,
  43. uint8_t width,
  44. uint8_t height,
  45. uint8_t radius);