2
0

haiku_direct_window.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #ifndef HAIKU_DIRECT_WINDOW_H
  2. #define HAIKU_DIRECT_WINDOW_H
  3. #include <kernel/image.h> // needed for image_id
  4. #include <DirectWindow.h>
  5. #include "core/os/os.h"
  6. #include "main/input_default.h"
  7. #include "haiku_gl_view.h"
  8. #define REDRAW_MSG 'rdrw'
  9. #define LOCKGL_MSG 'glck'
  10. #define UNLOCKGL_MSG 'ulck'
  11. class HaikuDirectWindow : public BDirectWindow
  12. {
  13. private:
  14. unsigned int event_id;
  15. Point2i last_mouse_position;
  16. bool last_mouse_pos_valid;
  17. uint32 last_buttons_state;
  18. uint32 last_key_modifier_state;
  19. int last_button_mask;
  20. OS::VideoMode* current_video_mode;
  21. MainLoop* main_loop;
  22. InputDefault* input;
  23. HaikuGLView* view;
  24. BMessageRunner* update_runner;
  25. void HandleMouseButton(BMessage* message);
  26. void HandleMouseMoved(BMessage* message);
  27. void HandleMouseWheelChanged(BMessage* message);
  28. void HandleWindowResized(BMessage* message);
  29. void HandleKeyboardEvent(BMessage* message);
  30. void HandleKeyboardModifierEvent(BMessage* message);
  31. inline InputModifierState GetKeyModifierState(uint32 p_state);
  32. inline int GetMouseButtonState(uint32 p_state);
  33. public:
  34. HaikuDirectWindow(BRect p_frame);
  35. ~HaikuDirectWindow();
  36. void SetHaikuGLView(HaikuGLView* p_view);
  37. void StartMessageRunner();
  38. void StopMessageRunner();
  39. void SetInput(InputDefault* p_input);
  40. void SetMainLoop(MainLoop* p_main_loop);
  41. inline void SetVideoMode(OS::VideoMode* video_mode) { current_video_mode = video_mode; };
  42. virtual bool QuitRequested();
  43. virtual void DirectConnected(direct_buffer_info* info);
  44. virtual void MessageReceived(BMessage* message);
  45. virtual void DispatchMessage(BMessage* message, BHandler* handler);
  46. inline Point2i GetLastMousePosition() { return last_mouse_position; };
  47. inline int GetLastButtonMask() { return last_button_mask; };
  48. };
  49. #endif