engine.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #ifndef SCUFENG_H_
  2. #define SCUFENG_H_
  3. #include <stdio.h>
  4. #include <stdbool.h>
  5. #include "keys.h" // IWYU pragma: export
  6. #define SERESULT_X(X) \
  7. X(SE_SUCCESS) \
  8. X(SE_OUT_OF_MEMORY) \
  9. X(SE_FC_FAILURE) \
  10. X(SE_NOT_FOUND) \
  11. X(SE_FT_FAILURE)
  12. #define X(val) val,
  13. typedef enum {
  14. SERESULT_X(X)
  15. } SEResult;
  16. #undef X
  17. typedef enum {
  18. SE_FILL,
  19. SE_LINE,
  20. SE_POINT
  21. } SEPolygonMode;
  22. typedef enum {
  23. SE_NONE,
  24. SE_FORWARD,
  25. SE_BACKWARD,
  26. SE_LEFT,
  27. SE_RIGHT,
  28. SE_UP,
  29. SE_DOWN
  30. } SEDirection;
  31. typedef void (*SEKeyCb)(SEKey key, SEKeyAction action, SEKeyMod mods, void *data);
  32. typedef void (*SECharCb)(unsigned int codepoint);
  33. typedef void (*SEMouseButtonCb)(SEMouseButton button, SEKeyAction action, SEKeyMod mods, void *data);
  34. void se_init(const bool debug, FILE *log_out, FILE *log_err_out);
  35. void se_deinit(void);
  36. void se_window_create(
  37. const int w,
  38. const int h,
  39. const char* title,
  40. const int fullscreen_monitor_i
  41. );
  42. void se_window_close();
  43. void se_clear_color(
  44. const float r,
  45. const float g,
  46. const float b,
  47. const float a
  48. );
  49. void se_clear(void);
  50. void se_swap_buffers(void);
  51. bool se_window_should_close(void);
  52. void se_handle_events(void);
  53. double se_get_time(void);
  54. double se_delta_time(const double current_time);
  55. void se_set_polygon_mode(const SEPolygonMode mode);
  56. void se_set_key_callback(SEKeyCb cb, void *data);
  57. void se_set_mouse_button_callback(SEMouseButtonCb cb, void *data);
  58. SEKeyAction se_get_key(const SEKey key);
  59. SEKeyAction se_get_mouse_button(const SEMouseButton btn);
  60. void se_get_mouse_pos(double *x, double *y);
  61. void se_swap_interval(const int interval);
  62. void se_fps_lock_set_fps(const unsigned int fps);
  63. void se_fps_lock_frame_start_s(const double frame_start_s);
  64. void se_fps_lock_wait(void);
  65. const char* SEResult_to_str(const SEResult res);
  66. #endif // SCUFENG_H_