Blender V2.61 - r43446
|
00001 00028 #ifndef NAN_INCLUDED_GlutMouseManager_h 00029 #define NAN_INCLUDED_GlutMouseManager_h 00030 00031 #include "MEM_NonCopyable.h" 00032 #include "MEM_SmartPtr.h" 00033 #include "GHOST_Types.h" 00034 00035 class GHOST_IWindow; 00036 00037 class GlutMouseHandler { 00038 public : 00039 00040 virtual 00041 void 00042 ButtonUp( 00043 GHOST_IWindow * window, 00044 GHOST_TButtonMask button_mask, 00045 int x, 00046 int y 00047 ) = 0; 00048 00049 virtual 00050 void 00051 ButtonDown( 00052 GHOST_IWindow * window, 00053 GHOST_TButtonMask button_mask, 00054 int x, 00055 int y 00056 ) = 0; 00057 00058 00059 virtual 00060 void 00061 Motion( 00062 GHOST_IWindow * window, 00063 int x, 00064 int y 00065 ) = 0; 00066 00067 virtual 00068 ~GlutMouseHandler( 00069 ){}; 00070 }; 00071 00072 class GlutMouseManager : public MEM_NonCopyable{ 00073 00074 public : 00075 00076 static 00077 GlutMouseManager * 00078 Instance( 00079 ); 00080 00081 static 00082 void 00083 ButtonUp( 00084 GHOST_IWindow * window, 00085 GHOST_TButtonMask button_mask, 00086 int x, 00087 int y 00088 ); 00089 00090 static 00091 void 00092 ButtonDown( 00093 GHOST_IWindow * window, 00094 GHOST_TButtonMask button_mask, 00095 int x, 00096 int y 00097 ); 00098 00099 static 00100 void 00101 Motion( 00102 GHOST_IWindow * window, 00103 int x, 00104 int y 00105 ); 00106 00107 void 00108 InstallHandler( 00109 GlutMouseHandler * 00110 ); 00111 00112 void 00113 ReleaseHandler( 00114 ); 00115 00116 ~GlutMouseManager( 00117 ); 00118 00119 private : 00120 00121 GlutMouseManager ( 00122 ) : 00123 m_handler (0) 00124 { 00125 }; 00126 00127 GlutMouseHandler * m_handler; 00128 00129 static MEM_SmartPtr<GlutMouseManager> m_s_instance; 00130 }; 00131 00132 00133 #endif 00134