1 #ifndef OIS_MacMouse_H
2 #define OIS_MacMouse_H
3 
4 #include "OISMouse.h"
5 #include "mac/MacHelpers.h"
6 #include "mac/MacPrereqs.h"
7 
8 #include <Carbon/Carbon.h>
9 
10 namespace OIS
11 {
12 	class MacMouse : public Mouse
13     {
14 	public:
15 		MacMouse( InputManager* creator, bool buffered );
16 		virtual ~MacMouse();
17 
18 		/** @copydoc Object::setBuffered */
19 		virtual void setBuffered(bool buffered);
20 
21 		/** @copydoc Object::capture */
22 		virtual void capture();
23 
24 		/** @copydoc Object::queryInterface */
queryInterface(Interface::IType type)25 		virtual Interface* queryInterface(Interface::IType type) {return 0;}
26 
27 		/** @copydoc Object::_initialize */
28 		virtual void _initialize();
29 
30 	public:
31         void _mouseCallback( EventRef theEvent );
32 
33 	protected:
34 		static OSStatus WindowFocusChanged(EventHandlerCallRef nextHandler, EventRef event, void* macMouse);
35 
36         // "universal procedure pointers" - required reference for callbacks
37 		EventHandlerUPP mouseUPP;
38 		EventHandlerRef mouseEventRef;
39 
40 		EventHandlerUPP mWindowFocusListener;
41 		EventHandlerRef mWindowFocusHandler;
42 
43 		bool mNeedsToRegainFocus;
44 		bool mMouseWarped;
45 
46 		MouseState mTempState;
47 	};
48 }
49 
50 
51 #endif // OIS_MacMouse_H
52