# header files
EXPORT_HEADERS = \
VVTK.h \
+ VVTK_Event.h \
VVTK_ViewManager.h \
VVTK_ViewModel.h \
VVTK_InteractorStyle.h \
--- /dev/null
+// SALOME VTKViewer : build VTK viewer into Salome desktop
+//
+// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+//
+//
+//
+// File :
+// Author : Alexander SLADKOV
+// Module : SALOME
+// $Header$
+
+#ifndef VVTK_Event_h
+#define VVTK_Event_h
+
+#include "SVTK_Event.h"
+
+namespace VVTK
+{
+ enum Event
+ {
+ SetSMDecreaseMagnificationEvent = SVTK::LastEvent + 100,
+ SetSMIncreaseMagnificationEvent,
+ LastEvent
+ };
+}
+
+#endif
#include "VVTK_InteractorStyle.h"
+#include "SVTK_Selector.h"
+#include "VVTK_Event.h"
#include <vtkObjectFactory.h>
#include <vtkRenderWindowInteractor.h>
+#include <vtkCallbackCommand.h>
#include <vtkCommand.h>
#include <vtkRenderer.h>
#include <vtkCamera.h>
-#include <SVTK_Selector.h>
+
//----------------------------------------------------------------------------
vtkStandardNewMacro(VVTK_InteractorStyle);
//----------------------------------------------------------------------------
VVTK_InteractorStyle
::VVTK_InteractorStyle():
myIsMidButtonDown( false ),
- myIsLeftButtonDown( false )
+ myIsLeftButtonDown( false ),
+ mySMDecreaseMagnificationBtn(10),
+ mySMIncreaseMagnificationBtn(11)
{
}
}
}
}
+
+
+//----------------------------------------------------------------------------
+void
+VVTK_InteractorStyle
+::SetInteractor( vtkRenderWindowInteractor* theInteractor )
+{
+ // register EventCallbackCommand as observer of standard events (keypress, mousemove, etc)
+ Superclass::SetInteractor( theInteractor );
+
+ if(theInteractor){
+ theInteractor->AddObserver( VVTK::SetSMDecreaseMagnificationEvent, EventCallbackCommand, Priority );
+ theInteractor->AddObserver( VVTK::SetSMIncreaseMagnificationEvent, EventCallbackCommand, Priority );
+ }
+}
+
+//----------------------------------------------------------------------------
+void
+VVTK_InteractorStyle
+::ProcessEvents( vtkObject* object,
+ unsigned long event,
+ void* clientData,
+ void* callData )
+{
+ if ( clientData ) {
+ vtkObject* anObject = reinterpret_cast<vtkObject*>( clientData );
+ VVTK_InteractorStyle* self = dynamic_cast<VVTK_InteractorStyle*>( anObject );
+ if( self ){
+ switch ( event ) {
+ case VVTK::SetSMDecreaseMagnificationEvent:
+ self->mySMDecreaseMagnificationBtn = *((int*)callData);
+ return;
+ case VVTK::SetSMIncreaseMagnificationEvent:
+ self->mySMIncreaseMagnificationBtn = *((int*)callData);
+ return;
+ }
+ }
+ }
+
+ Superclass::ProcessEvents( object, event, clientData, callData );
+}
+
+
+//----------------------------------------------------------------------------
+void
+VVTK_InteractorStyle
+::onSpaceMouseButton( int button )
+{
+ if( mySMDecreaseMagnificationBtn == button )
+ DecreaseGaussPointMagnification();
+ if( mySMIncreaseMagnificationBtn == button )
+ IncreaseGaussPointMagnification();
+
+ Superclass::onSpaceMouseButton( button );
+}
+
+//----------------------------------------------------------------------------
+void
+VVTK_InteractorStyle
+::DecreaseGaussPointMagnification()
+{
+ printf( "\n--DecreaseGaussPointMagnification() NOT IMPLEMENTED--\n" );
+}
+
+//----------------------------------------------------------------------------
+void
+VVTK_InteractorStyle
+::IncreaseGaussPointMagnification()
+{
+ printf( "\n--IncreaseGaussPointMagnification() NOT IMPLEMENTED--\n" );
+}
// parent. This class should not normally be instantiated by application
// programmers.
static VVTK_InteractorStyle *New();
- vtkTypeMacro(VVTK_InteractorStyle, vtkInteractorStyle);
+ vtkTypeMacro(VVTK_InteractorStyle,SVTK_InteractorStyle);
+ // redefined in order to add an observer (callback) for custorm event (space mouse event)
+ virtual
+ void
+ SetInteractor( vtkRenderWindowInteractor* );
protected:
VVTK_InteractorStyle();
~VVTK_InteractorStyle();
- VVTK_InteractorStyle(const VVTK_InteractorStyle&) {};
- void operator=(const VVTK_InteractorStyle&) {};
+
+ VVTK_InteractorStyle(const VVTK_InteractorStyle&); // Not implemented
+ void operator=(const VVTK_InteractorStyle&); // Not implemented
// Generic event bindings must be overridden in subclasses
virtual void OnLeftButtonDown(int ctrl, int shift, int x, int y);
virtual void OnKeyDown();
virtual void onFinishOperation();
- private:
+ // Main process VTK event method
+ static
+ void
+ ProcessEvents(vtkObject* object,
+ unsigned long event,
+ void* clientData,
+ void* callData );
+
+ virtual void onSpaceMouseButton( int button );
+ void DecreaseGaussPointMagnification();
+ void IncreaseGaussPointMagnification();
+
+ // SpaceMouse short cuts
+ int mySMDecreaseMagnificationBtn;
+ int mySMIncreaseMagnificationBtn;
+
bool myIsMidButtonDown;
bool myIsLeftButtonDown;
-
};
#endif