input.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. #ifndef _input_h_
  2. #define _input_h_
  3. //////////////////////////////////////////////////////////////////////////////
  4. //
  5. // Forward declarations
  6. //
  7. //////////////////////////////////////////////////////////////////////////////
  8. class IKeyboardInput;
  9. class IMouseInput;
  10. class IInputProvider;
  11. //////////////////////////////////////////////////////////////////////////////
  12. //
  13. // Mouse Results
  14. //
  15. //////////////////////////////////////////////////////////////////////////////
  16. class MouseResultBaseType {};
  17. typedef TBitMask<MouseResultBaseType, DWORD> MouseResult;
  18. class MouseResultHit : public MouseResult { public: MouseResultHit() : MouseResult(0x02) {} };
  19. class MouseResultCapture : public MouseResult { public: MouseResultCapture() : MouseResult(0x04) {} };
  20. class MouseResultRelease : public MouseResult { public: MouseResultRelease() : MouseResult(0x08) {} };
  21. //////////////////////////////////////////////////////////////////////////////
  22. //
  23. // Keyboard Input Interface
  24. //
  25. //////////////////////////////////////////////////////////////////////////////
  26. class KeyState {
  27. public:
  28. int vk;
  29. bool bShift;
  30. bool bControl;
  31. bool bAlt;
  32. bool bDown;
  33. WORD countRepeat;
  34. };
  35. class IKeyboardInput : public IObject {
  36. public:
  37. static TRef<IKeyboardInput> CreateDelegate(IKeyboardInput* pkeyboardInput);
  38. virtual bool OnChar(IInputProvider* pprovider, const KeyState& ks)
  39. {
  40. return false;
  41. }
  42. virtual bool OnKey(IInputProvider* pprovider, const KeyState& ks, bool& fForceTranslate)
  43. {
  44. return false;
  45. }
  46. virtual void SetFocusState(bool bFocus) {}
  47. };
  48. //////////////////////////////////////////////////////////////////////////////
  49. //
  50. // Mouse Input Interface
  51. //
  52. //////////////////////////////////////////////////////////////////////////////
  53. class IMouseInput : public IObject {
  54. public:
  55. static TRef<IMouseInput> CreateDelegate(IMouseInput* pmouseInput);
  56. virtual void RemoveCapture()
  57. {
  58. }
  59. virtual MouseResult HitTest(IInputProvider* pprovider, const Point& point, bool bCaptured)
  60. {
  61. return MouseResult();
  62. }
  63. virtual void MouseMove(IInputProvider* pprovider, const Point& point, bool bCaptured, bool bInside) {}
  64. virtual void MouseEnter(IInputProvider* pprovider, const Point& point) {}
  65. virtual void MouseLeave(IInputProvider* pprovider) {}
  66. virtual MouseResult Button(IInputProvider* pprovider, const Point& point, int button, bool bCaptured, bool bInside, bool bDown)
  67. {
  68. return MouseResult();
  69. }
  70. };
  71. /////////////////////////////////////////////////////////////////////////////
  72. //
  73. // Input Provider
  74. //
  75. /////////////////////////////////////////////////////////////////////////////
  76. class IInputProvider : public IObject {
  77. public:
  78. virtual ITimerEventSource* GetTimer() = 0;
  79. virtual IKeyboardInput* GetFocus() = 0;
  80. virtual bool IsDoubleClick() = 0;
  81. virtual bool IsFocus(IKeyboardInput* pinput) = 0;
  82. virtual void SetFocus(IKeyboardInput* pinput) = 0;
  83. virtual void RemoveFocus(IKeyboardInput* pinput) = 0;
  84. virtual void SetCursorPos(const Point& point) = 0;
  85. virtual void ShowCursor(bool bShow) = 0;
  86. };
  87. #endif