CPP-TOOLBOX
Loading...
Searching...
No Matches
glfw_lambda_callback_manager.hpp
Go to the documentation of this file.
1#ifndef GLFW_LAMBDA_CALLBACK_MANAGER_HPP
2#define GLFW_LAMBDA_CALLBACK_MANAGER_HPP
3
4#include <GLFW/glfw3.h>
5#include <functional>
6
7// NOTE: this exists as a way to pass things in easier instead of having a huge parameter list
9 std::function<void(unsigned int)> char_callback;
10 std::function<void(int, int, int, int)> key_callback;
11 std::function<void(double, double)> cursor_pos_callback;
12 std::function<void(int, int, int)> mouse_button_callback;
13 std::function<void(double, double)> scroll_callback;
14 std::function<void(int, int)> frame_buffer_size_callback;
15};
16
24 public:
25 using CharCallback = std::function<void(unsigned int)>;
26 using KeyCallback = std::function<void(int, int, int, int)>;
27 using CursorPosCallback = std::function<void(double, double)>;
28 using MouseButtonCallback = std::function<void(int, int, int)>;
29 using ScrollCallback = std::function<void(double, double)>;
30 using FrameBufferSizeCallback = std::function<void(int, int)>;
31
32 void set_char_callback(CharCallback char_callback);
33 void set_key_callback(KeyCallback key_callback);
34 void set_cursor_pos_callback(CursorPosCallback cursor_pos_callback);
35 void set_mouse_button_callback(MouseButtonCallback mouse_button_callback);
36 void set_scroll_callback(ScrollCallback scroll_callback);
37 void set_frame_buffer_size_callback(FrameBufferSizeCallback frame_buffer_size_callback);
38
39 void set_all_callbacks(AllGLFWLambdaCallbacks all_callbacks);
40
41 GLFWLambdaCallbackManager(GLFWwindow *window);
42 GLFWLambdaCallbackManager(GLFWwindow *window, CharCallback char_callback, KeyCallback key_callback,
43 CursorPosCallback cursor_pos_callback, MouseButtonCallback mouse_button_callback,
44 ScrollCallback scroll_callback, FrameBufferSizeCallback frame_buffer_size_callback);
45
47
48 private:
49 static void char_callback_wrapper(GLFWwindow *window, unsigned int codepoint);
50 static void key_callback_wrapper(GLFWwindow *window, int key, int scancode, int action, int mods);
51 static void cursor_pos_callback_wrapper(GLFWwindow *window, double mouse_position_x, double mouse_position_y);
52 static void mouse_button_callback_wrapper(GLFWwindow *window, int button, int action, int mods);
53 static void scroll_callback_wrapper(GLFWwindow *window, double x_offset, double y_offset);
54 static void frame_buffer_size_callback_wrapper(GLFWwindow *window, int width, int height);
55
56 GLFWwindow *window_;
57 CharCallback char_callback_;
58 KeyCallback key_callback_;
59 CursorPosCallback cursor_pos_callback_;
60 MouseButtonCallback mouse_button_callback_;
61 ScrollCallback scroll_callback_;
62 FrameBufferSizeCallback frame_buffer_size_callback_;
63};
64
65#endif // GLFW_LAMBDA_CALLBACK_MANAGER_HPP
std::function< void(double, double)> CursorPosCallback
Definition glfw_lambda_callback_manager.hpp:27
std::function< void(int, int, int)> MouseButtonCallback
Definition glfw_lambda_callback_manager.hpp:28
void set_mouse_button_callback(MouseButtonCallback mouse_button_callback)
Definition glfw_lambda_callback_manager.cpp:40
void set_scroll_callback(ScrollCallback scroll_callback)
Definition glfw_lambda_callback_manager.cpp:44
std::function< void(unsigned int)> CharCallback
Definition glfw_lambda_callback_manager.hpp:25
std::function< void(int, int, int, int)> KeyCallback
Definition glfw_lambda_callback_manager.hpp:26
void set_all_callbacks(AllGLFWLambdaCallbacks all_callbacks)
Definition glfw_lambda_callback_manager.cpp:52
void set_key_callback(KeyCallback key_callback)
Definition glfw_lambda_callback_manager.cpp:36
void register_all_callbacks_with_glfw()
Definition glfw_lambda_callback_manager.cpp:6
std::function< void(int, int)> FrameBufferSizeCallback
Definition glfw_lambda_callback_manager.hpp:30
std::function< void(double, double)> ScrollCallback
Definition glfw_lambda_callback_manager.hpp:29
void set_char_callback(CharCallback char_callback)
Definition glfw_lambda_callback_manager.cpp:35
void set_cursor_pos_callback(CursorPosCallback cursor_pos_callback)
Definition glfw_lambda_callback_manager.cpp:37
GLFWLambdaCallbackManager(GLFWwindow *window)
Definition glfw_lambda_callback_manager.cpp:15
void set_frame_buffer_size_callback(FrameBufferSizeCallback frame_buffer_size_callback)
Definition glfw_lambda_callback_manager.cpp:48
Definition glfw_lambda_callback_manager.hpp:8
std::function< void(double, double)> cursor_pos_callback
Definition glfw_lambda_callback_manager.hpp:11
std::function< void(int, int)> frame_buffer_size_callback
Definition glfw_lambda_callback_manager.hpp:14
std::function< void(int, int, int, int)> key_callback
Definition glfw_lambda_callback_manager.hpp:10
std::function< void(unsigned int)> char_callback
Definition glfw_lambda_callback_manager.hpp:9
std::function< void(int, int, int)> mouse_button_callback
Definition glfw_lambda_callback_manager.hpp:12
std::function< void(double, double)> scroll_callback
Definition glfw_lambda_callback_manager.hpp:13