entry_p.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /*
  2. * Copyright 2011-2013 Branimir Karadzic. All rights reserved.
  3. * License: http://www.opensource.org/licenses/BSD-2-Clause
  4. */
  5. #ifndef __ENTRY_PRIVATE_H__
  6. #define __ENTRY_PRIVATE_H__
  7. #include <bgfxplatform.h>
  8. #include <bx/spscqueue.h>
  9. #include "dbg.h"
  10. #include "entry.h"
  11. namespace entry
  12. {
  13. class EventQueue
  14. {
  15. public:
  16. void postExitEvent()
  17. {
  18. Event* ev = new Event;
  19. ev->m_type = Event::Exit;
  20. m_queue.push(ev);
  21. }
  22. void postKeyEvent(Key::Enum _key, uint8_t _modifiers, bool _down)
  23. {
  24. KeyEvent* ev = new KeyEvent;
  25. ev->m_type = Event::Key;
  26. ev->m_key = _key;
  27. ev->m_modifiers = _modifiers;
  28. ev->m_down = _down;
  29. m_queue.push(ev);
  30. }
  31. void postMouseEvent(int32_t _mx, int32_t _my)
  32. {
  33. MouseEvent* ev = new MouseEvent;
  34. ev->m_type = Event::Mouse;
  35. ev->m_mx = _mx;
  36. ev->m_my = _my;
  37. ev->m_button = MouseButton::None;
  38. ev->m_down = false;
  39. ev->m_move = true;
  40. m_queue.push(ev);
  41. }
  42. void postMouseEvent(int32_t _mx, int32_t _my, MouseButton::Enum _button, bool _down)
  43. {
  44. MouseEvent* ev = new MouseEvent;
  45. ev->m_type = Event::Mouse;
  46. ev->m_mx = _mx;
  47. ev->m_my = _my;
  48. ev->m_button = _button;
  49. ev->m_down = _down;
  50. ev->m_move = false;
  51. m_queue.push(ev);
  52. }
  53. void postSizeEvent(uint32_t _width, uint32_t _height)
  54. {
  55. SizeEvent* ev = new SizeEvent;
  56. ev->m_type = Event::Size;
  57. ev->m_width = _width;
  58. ev->m_height = _height;
  59. m_queue.push(ev);
  60. }
  61. const Event* poll()
  62. {
  63. return m_queue.pop();
  64. }
  65. void release(const Event* _event) const
  66. {
  67. delete _event;
  68. }
  69. private:
  70. bx::SpScUnboundedQueue<Event> m_queue;
  71. };
  72. } // namespace entry
  73. #endif // __ENTRY_PRIVATE_H__