Blender V2.61 - r43446
|
00001 00028 #ifndef NAN_INCLUDED_MyGlutMouseHandler_h 00029 #define NAN_INCLUDED_MyGlutMouseHandler_h 00030 00031 #include "common/GlutMouseManager.h" 00032 #include "GHOST_IWindow.h" 00033 00034 class MyGlutMouseHandler : public GlutMouseHandler 00035 { 00036 00037 public : 00038 00039 static 00040 MyGlutMouseHandler * 00041 New( 00042 ) { 00043 return new MyGlutMouseHandler(); 00044 } 00045 00046 void 00047 ButtonDown( 00048 GHOST_IWindow * window, 00049 GHOST_TButtonMask button_mask, 00050 int x, 00051 int y 00052 ){ 00053 if (button_mask == GHOST_kButtonMaskLeft) { 00054 m_moving = true; 00055 m_begin_x = x; 00056 m_begin_y = y; 00057 } 00058 window->invalidate(); 00059 } 00060 00061 void 00062 ButtonUp( 00063 GHOST_IWindow * window, 00064 GHOST_TButtonMask button_mask, 00065 int x, 00066 int y 00067 ) { 00068 if (button_mask == GHOST_kButtonMaskLeft) { 00069 m_moving = false; 00070 } 00071 window->invalidate(); 00072 } 00073 00074 void 00075 Motion( 00076 GHOST_IWindow * window, 00077 int x, 00078 int y 00079 ){ 00080 if (m_moving) { 00081 m_angle_x = m_angle_x + (x - m_begin_x); 00082 m_begin_x = x; 00083 00084 m_angle_y = m_angle_y + (y - m_begin_y); 00085 m_begin_y = y; 00086 } 00087 window->invalidate(); 00088 } 00089 00090 const 00091 float 00092 AngleX( 00093 ) const { 00094 return m_angle_x; 00095 } 00096 00097 const 00098 float 00099 AngleY( 00100 ) const { 00101 return m_angle_y; 00102 } 00103 00104 00105 private : 00106 00107 MyGlutMouseHandler ( 00108 ) : 00109 m_angle_x(0), 00110 m_angle_y(0), 00111 m_begin_x(0), 00112 m_begin_y(0), 00113 m_moving (false) 00114 { 00115 }; 00116 00117 float m_angle_x; 00118 float m_angle_y; 00119 float m_begin_x; 00120 float m_begin_y; 00121 00122 bool m_moving; 00123 00124 }; 00125 00126 #endif 00127