view_dispatcher.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #pragma once
  2. #include "view.h"
  3. #include "gui.h"
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. /**
  8. * @brief ViewDispatcher view_port placement
  9. */
  10. typedef enum {
  11. ViewDispatcherTypeNone, /**< Special layer for internal use only */
  12. ViewDispatcherTypeWindow, /**< Main view_port layer, status bar is shown */
  13. ViewDispatcherTypeFullscreen /**< Fullscreen view_port layer */
  14. } ViewDispatcherType;
  15. typedef struct ViewDispatcher ViewDispatcher;
  16. /**
  17. * @brief Allocate ViewDispatcher
  18. * @return pointer to ViewDispatcher instance
  19. */
  20. ViewDispatcher* view_dispatcher_alloc();
  21. /**
  22. * @brief Free ViewDispatcher
  23. * @param view_dispatcher pointer to ViewDispatcher
  24. */
  25. void view_dispatcher_free(ViewDispatcher* view_dispatcher);
  26. /**
  27. * @brief Add view to ViewDispatcher
  28. * @param view_dispatcher, ViewDispatcher instance
  29. * @param view_id View id to register
  30. * @param view View instance
  31. */
  32. void view_dispatcher_add_view(ViewDispatcher* view_dispatcher, uint32_t view_id, View* view);
  33. /**
  34. * @brief Remove view from ViewDispatcher
  35. * @param view_dispatcher ViewDispatcher instance
  36. * @param view_id View id to remove
  37. */
  38. void view_dispatcher_remove_view(ViewDispatcher* view_dispatcher, uint32_t view_id);
  39. /**
  40. * @brief Switch to View
  41. * @param view_dispatcher ViewDispatcher instance
  42. * @param view_id View id to register
  43. */
  44. void view_dispatcher_switch_to_view(ViewDispatcher* view_dispatcher, uint32_t view_id);
  45. /**
  46. * @brief Attach ViewDispatcher to GUI
  47. * @param view_dispatcher ViewDispatcher instance
  48. * @param gui GUI instance to attach to
  49. */
  50. void view_dispatcher_attach_to_gui(
  51. ViewDispatcher* view_dispatcher,
  52. Gui* gui,
  53. ViewDispatcherType type);
  54. #ifdef __cplusplus
  55. }
  56. #endif