diff options
| author | Juan Linietsky | 2015-10-19 18:48:34 -0300 |
|---|---|---|
| committer | Juan Linietsky | 2015-10-19 18:48:34 -0300 |
| commit | 2b12a8109dda1f47f9b75a5de91d7d00c1f25869 (patch) | |
| tree | 3f3775c304e76ea2776d336c9a471d99359872c0 /platform/haiku/haiku_direct_window.h | |
| parent | 5d86a25f4d04b21559f0d4edbd4e70dc01ea6685 (diff) | |
| parent | 0a02c28b2be8e8271d5f3ffb95a4b09f91c3bd32 (diff) | |
| download | godot-2b12a8109dda1f47f9b75a5de91d7d00c1f25869.tar.gz godot-2b12a8109dda1f47f9b75a5de91d7d00c1f25869.tar.zst godot-2b12a8109dda1f47f9b75a5de91d7d00c1f25869.zip | |
Merge branch 'master' of https://github.com/okamstudio/godot
Diffstat (limited to 'platform/haiku/haiku_direct_window.h')
| -rw-r--r-- | platform/haiku/haiku_direct_window.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/platform/haiku/haiku_direct_window.h b/platform/haiku/haiku_direct_window.h new file mode 100644 index 000000000..f0398df50 --- /dev/null +++ b/platform/haiku/haiku_direct_window.h @@ -0,0 +1,60 @@ +#ifndef HAIKU_DIRECT_WINDOW_H +#define HAIKU_DIRECT_WINDOW_H + +#include <kernel/image.h> // needed for image_id +#include <DirectWindow.h> + +#include "core/os/os.h" +#include "main/input_default.h" + +#include "haiku_gl_view.h" + +#define REDRAW_MSG 'rdrw' +#define LOCKGL_MSG 'glck' +#define UNLOCKGL_MSG 'ulck' + +class HaikuDirectWindow : public BDirectWindow +{ +private: + unsigned int event_id; + Point2i last_mouse_position; + bool last_mouse_pos_valid; + uint32 last_buttons_state; + uint32 last_key_modifier_state; + int last_button_mask; + OS::VideoMode* current_video_mode; + + MainLoop* main_loop; + InputDefault* input; + HaikuGLView* view; + BMessageRunner* update_runner; + + void HandleMouseButton(BMessage* message); + void HandleMouseMoved(BMessage* message); + void HandleMouseWheelChanged(BMessage* message); + void HandleWindowResized(BMessage* message); + void HandleKeyboardEvent(BMessage* message); + void HandleKeyboardModifierEvent(BMessage* message); + inline InputModifierState GetKeyModifierState(uint32 p_state); + inline int GetMouseButtonState(uint32 p_state); + +public: + HaikuDirectWindow(BRect p_frame); + ~HaikuDirectWindow(); + + void SetHaikuGLView(HaikuGLView* p_view); + void StartMessageRunner(); + void StopMessageRunner(); + void SetInput(InputDefault* p_input); + void SetMainLoop(MainLoop* p_main_loop); + inline void SetVideoMode(OS::VideoMode* video_mode) { current_video_mode = video_mode; }; + virtual bool QuitRequested(); + virtual void DirectConnected(direct_buffer_info* info); + virtual void MessageReceived(BMessage* message); + virtual void DispatchMessage(BMessage* message, BHandler* handler); + + inline Point2i GetLastMousePosition() { return last_mouse_position; }; + inline int GetLastButtonMask() { return last_button_mask; }; +}; + +#endif |
