view_dispatcher.h 1.4 KB

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