widget_element_i.h 1.5 KB

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