widget.h 841 B

123456789101112131415161718192021222324252627282930
  1. #pragma once
  2. #include <input/input.h>
  3. typedef struct GUI GUI;
  4. typedef struct Canvas Canvas;
  5. typedef struct {
  6. void* gui;
  7. bool is_enabled;
  8. WidgetDrawCallback draw_callback;
  9. void* draw_callback_context;
  10. WidgetInputCallback input_callback;
  11. void* input_callback_context;
  12. } Widget;
  13. typedef void (*WidgetDrawCallback)(Canvas* canvas, void* context);
  14. typedef void (*WidgetInputCallback)(InputEvent* event, void* context);
  15. Widget* widget_alloc();
  16. void widget_free(Widget* widget);
  17. void widget_enabled_set(Widget* widget, bool enabled);
  18. bool widget_is_enabled(Widget* widget);
  19. void widget_draw_callback_set(Widget* widget, WidgetDrawCallback callback, void* context);
  20. void widget_input_callback_set(Widget* widget, WidgetInputCallback callback, void* context);
  21. // emit update signal
  22. void widget_update(Widget* widget);