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 00034 class GlutMouseHandler { 00035 public : 00036 00037 virtual 00038 void 00039 Mouse( 00040 int button, 00041 int state, 00042 int x, 00043 int y 00044 ) = 0; 00045 00046 virtual 00047 void 00048 Motion( 00049 int x, 00050 int y 00051 ) = 0; 00052 00053 virtual 00054 ~GlutMouseHandler( 00055 ){}; 00056 }; 00057 00058 class GlutMouseManager : public MEM_NonCopyable{ 00059 00060 public : 00061 00062 static 00063 GlutMouseManager * 00064 Instance( 00065 ); 00066 00067 // these are the functions you should pass to GLUT 00068 00069 static 00070 void 00071 Mouse( 00072 int button, 00073 int state, 00074 int x, 00075 int y 00076 ); 00077 00078 static 00079 void 00080 Motion( 00081 int x, 00082 int y 00083 ); 00084 00085 void 00086 InstallHandler( 00087 GlutMouseHandler * 00088 ); 00089 00090 void 00091 ReleaseHandler( 00092 ); 00093 00094 ~GlutMouseManager( 00095 ); 00096 00097 private : 00098 00099 GlutMouseManager ( 00100 ) : 00101 m_handler (0) 00102 { 00103 }; 00104 00105 GlutMouseHandler * m_handler; 00106 00107 static MEM_SmartPtr<GlutMouseManager> m_s_instance; 00108 }; 00109 00110 #endif 00111