widget.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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 Multi 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_multi_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 String Element
  40. * @param widget Widget instance
  41. * @param x - x coordinate
  42. * @param y - y coordinate
  43. * @param horizontal - Align instance
  44. * @param vertical - Align instance
  45. * @param font Font instance
  46. */
  47. void widget_add_string_element(
  48. Widget* widget,
  49. uint8_t x,
  50. uint8_t y,
  51. Align horizontal,
  52. Align vertical,
  53. Font font,
  54. const char* text);
  55. /** Add Button Element
  56. * @param widget Widget instance
  57. * @param button_type GuiButtonType instance
  58. * @param text text on allocated button
  59. * @param callback ButtonCallback instance
  60. * @param context pointer to context
  61. */
  62. void widget_add_button_element(
  63. Widget* widget,
  64. GuiButtonType button_type,
  65. const char* text,
  66. ButtonCallback callback,
  67. void* context);
  68. /** Add Icon Element
  69. * @param widget Widget instance
  70. * @param x top left x coordinate
  71. * @param y top left y coordinate
  72. * @param icon Icon instance
  73. */
  74. void widget_add_icon_element(Widget* widget, uint8_t x, uint8_t y, const Icon* icon);
  75. /** Add Frame Element
  76. * @param widget Widget instance
  77. * @param x top left x coordinate
  78. * @param y top left y coordinate
  79. * @param width frame width
  80. * @param height frame height
  81. * @param radius frame radius
  82. */
  83. void widget_add_frame_element(
  84. Widget* widget,
  85. uint8_t x,
  86. uint8_t y,
  87. uint8_t width,
  88. uint8_t height,
  89. uint8_t radius);