view_dispatcher.h 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #pragma once
  2. #include "view.h"
  3. #include "gui.h"
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. /** Prototype for custom event callback
  8. */
  9. typedef void (*CustomEventCallback)(uint32_t custom_event, void* context);
  10. /** ViewDispatcher view_port placement
  11. */
  12. typedef enum {
  13. ViewDispatcherTypeNone, /**< Special layer for internal use only */
  14. ViewDispatcherTypeWindow, /**< Main view_port layer, status bar is shown */
  15. ViewDispatcherTypeFullscreen /**< Fullscreen view_port layer */
  16. } ViewDispatcherType;
  17. typedef struct ViewDispatcher ViewDispatcher;
  18. /** Allocate ViewDispatcher instance
  19. * @return pointer to ViewDispatcher instance
  20. */
  21. ViewDispatcher* view_dispatcher_alloc();
  22. /** Free ViewDispatcher instance
  23. * @param view_dispatcher pointer to ViewDispatcher
  24. */
  25. void view_dispatcher_free(ViewDispatcher* view_dispatcher);
  26. /** Enable queue support
  27. * If queue enabled all input and custom events will be dispatched throw internal queue
  28. * @param view_dispatcher ViewDispatcher instance
  29. */
  30. void view_dispatcher_enable_queue(ViewDispatcher* view_dispatcher);
  31. /** Set custom event callback
  32. * Custom callback is called when custom event in internal queue received
  33. */
  34. void view_dispatcher_set_custom_callback(
  35. ViewDispatcher* view_dispatcher,
  36. CustomEventCallback callback,
  37. void* context);
  38. /** Send custom event
  39. */
  40. void view_dispatcher_send_custom_event(ViewDispatcher* view_dispatcher, uint32_t event);
  41. /** Run ViewDispatcher
  42. * Use only after queue enabled
  43. * @param view_dispatcher ViewDispatcher instance
  44. */
  45. void view_dispatcher_run(ViewDispatcher* view_dispatcher);
  46. /** Stop ViewDispatcher
  47. * Use only after queue enabled
  48. * @param view_dispatcher ViewDispatcher instance
  49. */
  50. void view_dispatcher_stop(ViewDispatcher* view_dispatcher);
  51. /** Add view to ViewDispatcher
  52. * @param view_dispatcher, ViewDispatcher instance
  53. * @param view_id View id to register
  54. * @param view View instance
  55. */
  56. void view_dispatcher_add_view(ViewDispatcher* view_dispatcher, uint32_t view_id, View* view);
  57. /** Remove view from ViewDispatcher
  58. * @param view_dispatcher ViewDispatcher instance
  59. * @param view_id View id to remove
  60. */
  61. void view_dispatcher_remove_view(ViewDispatcher* view_dispatcher, uint32_t view_id);
  62. /** Switch to View
  63. * @param view_dispatcher ViewDispatcher instance
  64. * @param view_id View id to register
  65. */
  66. void view_dispatcher_switch_to_view(ViewDispatcher* view_dispatcher, uint32_t view_id);
  67. /** Attach ViewDispatcher to GUI
  68. * @param view_dispatcher ViewDispatcher instance
  69. * @param gui GUI instance to attach to
  70. */
  71. void view_dispatcher_attach_to_gui(
  72. ViewDispatcher* view_dispatcher,
  73. Gui* gui,
  74. ViewDispatcherType type);
  75. #ifdef __cplusplus
  76. }
  77. #endif