gui_widget.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #pragma once
  2. #include <gui/view.h>
  3. #include "gui_element_string.h"
  4. #include "gui_element_button.h"
  5. #include "gui_element_icon.h"
  6. typedef struct GuiWidget GuiWidget;
  7. typedef struct GuiElement GuiElement;
  8. /** Allocate Gui Widget that holds Gui Elements
  9. * @return GuiWidget instance
  10. */
  11. GuiWidget* gui_widget_alloc();
  12. /** Free Gui Widget
  13. * @note this function free Gui Elements
  14. * @param gui_widget GuiWidget instance
  15. */
  16. void gui_widget_free(GuiWidget* gui_widget);
  17. /** Clear Gui Widget
  18. * @param gui_widget GuiWidget instance
  19. */
  20. void gui_widget_clear(GuiWidget* gui_widget);
  21. /** Get Gui Widget view
  22. * @param gui_widget GuiWidget instance
  23. * @return View instance
  24. */
  25. View* gui_widget_get_view(GuiWidget* gui_widget);
  26. /** Add generic Gui Elements to Gui Widget
  27. * @param gui_widget GuiWidget instance
  28. * @param element GuiElement element
  29. */
  30. void gui_widget_add_element(GuiWidget* gui_widget, GuiElement* element);
  31. /** Add String Element
  32. * @param gui_widget GuiWidget instance
  33. * @param x - x coordinate
  34. * @param y - y coordinate
  35. * @param horizontal - Align instance
  36. * @param vertical - Align instance
  37. * @param font Font instance
  38. * @return GuiElement instance
  39. */
  40. void gui_widget_add_string_element(
  41. GuiWidget* gui_widget,
  42. uint8_t x,
  43. uint8_t y,
  44. Align horizontal,
  45. Align vertical,
  46. Font font,
  47. const char* text);
  48. /** Add Button Element
  49. * @param gui_widget GuiWidget instance
  50. * @param button_type GuiButtonType instance
  51. * @param text text on allocated button
  52. * @param callback ButtonCallback instance
  53. * @param context pointer to context
  54. */
  55. void gui_widget_add_button_element(
  56. GuiWidget* gui_widget,
  57. GuiButtonType button_type,
  58. const char* text,
  59. ButtonCallback callback,
  60. void* context);
  61. /** Add Icon Element
  62. * @param gui_widget GuiWidget instance
  63. * @param x - x coordinate
  64. * @param y - y coordinate
  65. * @param icon Icon instance
  66. */
  67. void gui_widget_add_icon_element(GuiWidget* gui_widget, uint8_t x, uint8_t y, const Icon* icon);