view_holder.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #pragma once
  2. #include <gui/view.h>
  3. #include <gui/gui.h>
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. typedef struct ViewHolder ViewHolder;
  8. /**
  9. * @brief Free callback type
  10. */
  11. typedef void (*FreeCallback)(void* free_context);
  12. /**
  13. * @brief Back callback type
  14. * @warning comes from GUI thread
  15. */
  16. typedef void (*BackCallback)(void* back_context);
  17. /**
  18. * @brief Allocate ViewHolder
  19. * @return pointer to ViewHolder instance
  20. */
  21. ViewHolder* view_holder_alloc();
  22. /**
  23. * @brief Free ViewHolder and call Free callback
  24. * @param view_holder pointer to ViewHolder
  25. */
  26. void view_holder_free(ViewHolder* view_holder);
  27. /**
  28. * @brief Set view for ViewHolder
  29. *
  30. * @param view_holder ViewHolder instance
  31. * @param view View instance
  32. */
  33. void view_holder_set_view(ViewHolder* view_holder, View* view);
  34. /**
  35. * @brief Set Free callback
  36. *
  37. * @param view_holder ViewHolder instance
  38. * @param free_callback callback pointer
  39. * @param free_context callback context
  40. */
  41. void view_holder_set_free_callback(
  42. ViewHolder* view_holder,
  43. FreeCallback free_callback,
  44. void* free_context);
  45. /**
  46. * @brief Free callback context getter. Useful if your Free callback is a module destructor, so you can get an instance of the module using this method.
  47. *
  48. * @param view_holder ViewHolder instance
  49. * @return void* free callback context
  50. */
  51. void* view_holder_get_free_context(ViewHolder* view_holder);
  52. void view_holder_set_back_callback(
  53. ViewHolder* view_holder,
  54. BackCallback back_callback,
  55. void* back_context);
  56. /**
  57. * @brief Attach ViewHolder to GUI
  58. *
  59. * @param view_holder ViewHolder instance
  60. * @param gui GUI instance to attach to
  61. */
  62. void view_holder_attach_to_gui(ViewHolder* view_holder, Gui* gui);
  63. /**
  64. * @brief Enable view processing
  65. *
  66. * @param view_holder
  67. */
  68. void view_holder_start(ViewHolder* view_holder);
  69. /**
  70. * @brief Disable view processing
  71. *
  72. * @param view_holder
  73. */
  74. void view_holder_stop(ViewHolder* view_holder);
  75. /** View Update Handler
  76. * @param view, View Instance
  77. * @param context, ViewHolder instance
  78. */
  79. void view_holder_update(View* view, void* context);
  80. #ifdef __cplusplus
  81. }
  82. #endif