view_dispatcher.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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. */
  9. typedef enum {
  10. ViewDispatcherTypeNone, /**< Special layer for internal use only */
  11. ViewDispatcherTypeWindow, /**< Main view_port layer, status bar is shown */
  12. ViewDispatcherTypeFullscreen /**< Fullscreen view_port layer */
  13. } ViewDispatcherType;
  14. typedef struct ViewDispatcher ViewDispatcher;
  15. /** Allocate ViewDispatcher instance
  16. * @return pointer to ViewDispatcher instance
  17. */
  18. ViewDispatcher* view_dispatcher_alloc();
  19. /** Free ViewDispatcher instance
  20. * @param view_dispatcher pointer to ViewDispatcher
  21. */
  22. void view_dispatcher_free(ViewDispatcher* view_dispatcher);
  23. /** Enable queue support
  24. * If queue enabled all input events will be dispatched throw internal queue
  25. * @param view_dispatcher ViewDispatcher instance
  26. */
  27. void view_dispatcher_enable_queue(ViewDispatcher* view_dispatcher);
  28. /** Run ViewDispatcher
  29. * Use only after queue enabled
  30. * @param view_dispatcher ViewDispatcher instance
  31. */
  32. void view_dispatcher_run(ViewDispatcher* view_dispatcher);
  33. /** Stop ViewDispatcher
  34. * Use only after queue enabled
  35. * @param view_dispatcher ViewDispatcher instance
  36. */
  37. void view_dispatcher_stop(ViewDispatcher* view_dispatcher);
  38. /** Add view to ViewDispatcher
  39. * @param view_dispatcher, ViewDispatcher instance
  40. * @param view_id View id to register
  41. * @param view View instance
  42. */
  43. void view_dispatcher_add_view(ViewDispatcher* view_dispatcher, uint32_t view_id, View* view);
  44. /** Remove view from ViewDispatcher
  45. * @param view_dispatcher ViewDispatcher instance
  46. * @param view_id View id to remove
  47. */
  48. void view_dispatcher_remove_view(ViewDispatcher* view_dispatcher, uint32_t view_id);
  49. /** Switch to View
  50. * @param view_dispatcher ViewDispatcher instance
  51. * @param view_id View id to register
  52. */
  53. void view_dispatcher_switch_to_view(ViewDispatcher* view_dispatcher, uint32_t view_id);
  54. /** Attach ViewDispatcher to GUI
  55. * @param view_dispatcher ViewDispatcher instance
  56. * @param gui GUI instance to attach to
  57. */
  58. void view_dispatcher_attach_to_gui(
  59. ViewDispatcher* view_dispatcher,
  60. Gui* gui,
  61. ViewDispatcherType type);
  62. #ifdef __cplusplus
  63. }
  64. #endif