widget_element_i.h 1.5 KB

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