X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpExtensions%2FInteraction%2FBaseInteractorStyle.h;h=119668b5dd4a17d4e221435c38c04ecd77d915d5;hb=4a793c6b8f400b2303a3f69680aea22948d8ecc6;hp=1501f00297b4b48c06b78236d448d556def73cd9;hpb=fdd4f2cec18107de380ebd350cb1019eed7c294c;p=cpPlugins.git diff --git a/lib/cpExtensions/Interaction/BaseInteractorStyle.h b/lib/cpExtensions/Interaction/BaseInteractorStyle.h index 1501f00..119668b 100644 --- a/lib/cpExtensions/Interaction/BaseInteractorStyle.h +++ b/lib/cpExtensions/Interaction/BaseInteractorStyle.h @@ -15,6 +15,30 @@ * ========================================================================= */ +// ------------------------------------------------------------------------- +#define cpExtensions_BaseInteractorStyle_Commands( C ) \ + protected: \ + std::map< T##C##Command, void* > m_##C##Commands; \ +public: \ + inline void Add##C##Command( T##C##Command c, void* d ) \ + { \ + if( c != NULL ) \ + { \ + this->m_##C##Commands[ c ] = d; \ + this->Modified( ); \ + } \ + } \ + inline void Remove##C##Command( T##C##Command c ) \ + { \ + std::map< T##C##Command, void* >::iterator i = \ + this->m_##C##Commands.find( c ); \ + if( i != this->m_##C##Commands.end( ) ) \ + { \ + this->m_##C##Commands.erase( i ); \ + this->Modified( ); \ + } \ + } + // ------------------------------------------------------------------------- #define BaseInteractorStyle_DIFF_TIME \ std::chrono::duration_cast< std::chrono::milliseconds >( \ @@ -49,31 +73,27 @@ namespace cpExtensions typedef void ( *TMouseWheelCommand )( void*, const int&, bool, bool, bool ); typedef void ( *TKeyCommand )( void*, const char& ); typedef void ( *TVoidCommand )( void* ); - - public: - static void SetSetDoubleClickDelay( long delay ); + typedef TMouseCommand TMouseMoveCommand; + typedef TMouseCommand TMouseClickCommand; + typedef TMouseCommand TMouseDoubleClickCommand; + typedef TVoidCommand TExposeCommand; + typedef TVoidCommand TConfigureCommand; + typedef TVoidCommand TEnterCommand; + typedef TVoidCommand TLeaveCommand; // Associate callbacks for each event - void AddMouseMoveCommand( TMouseCommand command, void* data ); - void AddMouseClickCommand( TMouseCommand command, void* data ); - void AddMouseDoubleClickCommand( TMouseCommand command, void* data ); - void AddMouseWheelCommand( TMouseWheelCommand command, void* data ); - void AddKeyCommand( TKeyCommand command, void* data ); - void AddExposeCommand( TVoidCommand command, void* data ); - void AddConfigureCommand( TVoidCommand command, void* data ); - void AddEnterCommand( TVoidCommand command, void* data ); - void AddLeaveCommand( TVoidCommand command, void* data ); - - void RemoveMouseMoveCommand( TMouseCommand command ); - void RemoveMouseClickCommand( TMouseCommand command ); - void RemoveMouseDoubleClickCommand( TMouseCommand command ); - void RemoveMouseWheelCommand( TMouseWheelCommand command ); - void RemoveKeyCommand( TKeyCommand command ); - void RemoveExposeCommand( TVoidCommand command ); - void RemoveConfigureCommand( TVoidCommand command ); - void RemoveEnterCommand( TVoidCommand command ); - void RemoveLeaveCommand( TVoidCommand command ); + cpExtensions_BaseInteractorStyle_Commands( MouseMove ); + cpExtensions_BaseInteractorStyle_Commands( MouseClick ); + cpExtensions_BaseInteractorStyle_Commands( MouseDoubleClick ); + cpExtensions_BaseInteractorStyle_Commands( MouseWheel ); + cpExtensions_BaseInteractorStyle_Commands( Key ); + cpExtensions_BaseInteractorStyle_Commands( Expose ); + cpExtensions_BaseInteractorStyle_Commands( Configure ); + cpExtensions_BaseInteractorStyle_Commands( Enter ); + cpExtensions_BaseInteractorStyle_Commands( Leave ); + public: + static void SetSetDoubleClickDelay( long delay ); void DelegateTDxEvent( unsigned long event, void* calldata ); // Possible mouse motion events @@ -103,10 +123,10 @@ namespace cpExtensions // Keyboard-related events virtual void OnChar( ); - virtual void OnKeyDown( ); - virtual void OnKeyUp( ); - virtual void OnKeyPress( ); - virtual void OnKeyRelease( ); + virtual void OnKeyDown( ) { } + virtual void OnKeyUp( ) { } + virtual void OnKeyPress( ) { } + virtual void OnKeyRelease( ) { } // Other events virtual void OnExpose( ); @@ -142,17 +162,6 @@ namespace cpExtensions protected: double m_MotionFactor; - // Callbacks - std::map< TMouseCommand, void* > m_MouseMoveCommands; - std::map< TMouseCommand, void* > m_MouseClickCommands; - std::map< TMouseCommand, void* > m_MouseDoubleClickCommands; - std::map< TMouseWheelCommand, void* > m_MouseWheelCommands; - std::map< TKeyCommand, void* > m_KeyCommands; - std::map< TVoidCommand, void* > m_ExposeCommands; - std::map< TVoidCommand, void* > m_ConfigureCommands; - std::map< TVoidCommand, void* > m_EnterCommands; - std::map< TVoidCommand, void* > m_LeaveCommands; - /** * Button events */