menu.h 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #pragma once
  2. #include <gui/view.h>
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. /** Menu anonymous structure */
  7. typedef struct Menu Menu;
  8. typedef void (*MenuItemCallback)(void* context, uint32_t index);
  9. /** Menu allocation and initialization
  10. * @return Menu instance
  11. */
  12. Menu* menu_alloc();
  13. /** Free menu
  14. * @param menu - Menu instance
  15. */
  16. void menu_free(Menu* menu);
  17. /** Get Menu view
  18. * @param menu - Menu instance
  19. * @return View instance
  20. */
  21. View* menu_get_view(Menu* menu);
  22. /** Add item to menu
  23. * @param menu - Menu instance
  24. * @param label - menu item string label
  25. * @param icon - IconAnimation instance
  26. * @param index - menu item index
  27. * @param callback - MenuItemCallback instance
  28. * @param context - pointer to context
  29. */
  30. void menu_add_item(
  31. Menu* menu,
  32. const char* label,
  33. IconAnimation* icon,
  34. uint32_t index,
  35. MenuItemCallback callback,
  36. void* context);
  37. /** Clean menu
  38. * Note: this function does not free menu instance
  39. * @param menu - Menu instance
  40. */
  41. void menu_clean(Menu* menu);
  42. #ifdef __cplusplus
  43. }
  44. #endif