widget.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #pragma once
  2. #include "widget_elements/widget_element_i.h"
  3. typedef struct Widget Widget;
  4. typedef struct WidgetElement WidgetElement;
  5. /** Allocate Widget that holds Widget Elements
  6. * @return Widget instance
  7. */
  8. Widget* widget_alloc();
  9. /** Free Widget
  10. * @note this function free allocated Widget Elements
  11. * @param widget Widget instance
  12. */
  13. void widget_free(Widget* widget);
  14. /** Clear Widget
  15. * @param widget Widget instance
  16. */
  17. void widget_clear(Widget* widget);
  18. /** Get Widget view
  19. * @param widget Widget instance
  20. * @return View instance
  21. */
  22. View* widget_get_view(Widget* widget);
  23. /** Add String Element
  24. * @param widget Widget instance
  25. * @param x - x coordinate
  26. * @param y - y coordinate
  27. * @param horizontal - Align instance
  28. * @param vertical - Align instance
  29. * @param font Font instance
  30. */
  31. void widget_add_string_element(
  32. Widget* widget,
  33. uint8_t x,
  34. uint8_t y,
  35. Align horizontal,
  36. Align vertical,
  37. Font font,
  38. const char* text);
  39. /** Add Button Element
  40. * @param widget Widget instance
  41. * @param button_type GuiButtonType instance
  42. * @param text text on allocated button
  43. * @param callback ButtonCallback instance
  44. * @param context pointer to context
  45. */
  46. void widget_add_button_element(
  47. Widget* widget,
  48. GuiButtonType button_type,
  49. const char* text,
  50. ButtonCallback callback,
  51. void* context);
  52. /** Add Icon Element
  53. * @param widget Widget instance
  54. * @param x - x coordinate
  55. * @param y - y coordinate
  56. * @param icon Icon instance
  57. */
  58. void widget_add_icon_element(Widget* widget, uint8_t x, uint8_t y, const Icon* icon);