]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
no message
authorstv <stv@opencascade.com>
Wed, 22 Feb 2006 07:22:21 +0000 (07:22 +0000)
committerstv <stv@opencascade.com>
Wed, 22 Feb 2006 07:22:21 +0000 (07:22 +0000)
src/SVTK/SVTK.h
src/SVTK/SVTK_RenderWindowInteractor.cxx
src/SVTK/SVTK_RenderWindowInteractor.h
src/SVTK/SVTK_Selector.cxx
src/SVTK/SVTK_SpaceMouse.cxx
src/SVTK/SVTK_SpaceMouse.h

index d4d8cf530f9969b489dc80e3f8d9b6034a6a0cbb..a5b0ba91680e179857eaf2e036a5b28f8275ea5f 100755 (executable)
 //
 // See http://www.salome-platform.org/
 //
-#ifdef WNT\r
-#ifdef SVTK_EXPORTS\r
-#define SVTK_EXPORT __declspec(dllexport)\r
-#else\r
-#define SVTK_EXPORT __declspec(dllimport)\r
-#endif\r
-#else\r
-#define SVTK_EXPORT\r
-#endif\r
-\r
-#if defined WNT\r
-#pragma warning ( disable: 4251 )\r
-#pragma warning ( disable: 4786 )\r
-#endif\r
+#ifdef WNT
+#ifdef SVTK_EXPORTS
+#define SVTK_EXPORT __declspec(dllexport)
+#else
+#define SVTK_EXPORT __declspec(dllimport)
+#endif
+#else
+#define SVTK_EXPORT
+#endif
+
+#if defined WNT
+#pragma warning ( disable: 4251 )
+#pragma warning ( disable: 4786 )
+#endif
index a2b8aa176ab3623824c19fa99080b5a5900bebba..bc4de96c6653ca36601047a18bae8bf3baa9e4c7 100644 (file)
@@ -80,33 +80,29 @@ QVTK_RenderWindowInteractor
 }
 
 
-void 
-QVTK_RenderWindowInteractor
-::Initialize(vtkGenericRenderWindowInteractor* theDevice)
+void QVTK_RenderWindowInteractor::Initialize( vtkGenericRenderWindowInteractor* theDevice )
 {
-  if(GetDevice())
-    myDevice->SetRenderWindow(NULL);
+  if ( GetDevice() )
+    myDevice->SetRenderWindow( NULL );
 
   myDevice = theDevice;
 
-  if(theDevice)
-    theDevice->SetRenderWindow(getRenderWindow());
+  if ( theDevice )
+    theDevice->SetRenderWindow( getRenderWindow() );
 }
 
 //----------------------------------------------------------------------------
-QVTK_RenderWindowInteractor
-::~QVTK_RenderWindowInteractor() 
+QVTK_RenderWindowInteractor::~QVTK_RenderWindowInteractor() 
 {
-  if(SVTK_SpaceMouse* aSpaceMouse = SVTK_SpaceMouse::getInstance())
-    if(aSpaceMouse->isSpaceMouseOn())
-      aSpaceMouse->close(x11Display());
+#ifndef WIN32
+  SVTK_SpaceMouse* aSpaceMouse = SVTK_SpaceMouse::getInstance();
+  if ( aSpaceMouse && aSpaceMouse->isSpaceMouseOn() )
+    aSpaceMouse->close( x11Display() );
+#endif
 }
 
-
 //----------------------------------------------------------------------------
-vtkGenericRenderWindowInteractor* 
-QVTK_RenderWindowInteractor
-::GetDevice()
+vtkGenericRenderWindowInteractor* QVTK_RenderWindowInteractor::GetDevice()
 {
   return myDevice.GetPointer();
 }
@@ -318,56 +314,69 @@ QVTK_RenderWindowInteractor
 
 
 //----------------------------------------------------------------------------
-void  
-QVTK_RenderWindowInteractor
-::focusInEvent( QFocusEvent* event )
+void QVTK_RenderWindowInteractor::focusInEvent( QFocusEvent* event )
 {
   QWidget::focusInEvent( event );
 
+#ifndef WIN32
   // register set space mouse events receiver
-  if(SVTK_SpaceMouse* aSpaceMouse = SVTK_SpaceMouse::getInstance()){
-    if(!aSpaceMouse->isSpaceMouseOn()) {// initialize 3D space mouse driver 
-      aSpaceMouse->initialize(x11Display(),winId());
-    }else{
-      aSpaceMouse->setWindow(x11Display(),winId());
-    }
+  SVTK_SpaceMouse* aSpaceMouse = SVTK_SpaceMouse::getInstance();
+
+  if ( aSpaceMouse )
+  {
+    if ( !aSpaceMouse->isSpaceMouseOn() )
+      // initialize 3D space mouse driver 
+      aSpaceMouse->initialize( x11Display(), winId() );
+    else
+      aSpaceMouse->setWindow( x11Display(), winId() );
   }
+#endif
 }
 
 //----------------------------------------------------------------------------
-void  
-QVTK_RenderWindowInteractor
-::focusOutEvent ( QFocusEvent* event )
+void QVTK_RenderWindowInteractor::focusOutEvent( QFocusEvent* event )
 {
   QWidget::focusOutEvent( event );
 
+#ifndef WIN32
   // unregister set space mouse events receiver
-  if(SVTK_SpaceMouse* aSpaceMouse = SVTK_SpaceMouse::getInstance()){
-    if(aSpaceMouse->isSpaceMouseOn())
-      aSpaceMouse->setWindow(x11Display(),0);
-  }
+  SVTK_SpaceMouse* aSpaceMouse = SVTK_SpaceMouse::getInstance();
+  if ( aSpaceMouse && aSpaceMouse->isSpaceMouseOn() )
+    aSpaceMouse->setWindow( x11Display(), 0 );
+#endif
 }
 
 
 //----------------------------------------------------------------------------
-bool 
-QVTK_RenderWindowInteractor
-::x11Event( XEvent *xEvent )
+#ifdef WIN32
+
+bool QVTK_RenderWindowInteractor::winEvent( MSG* msg )
+{
+  // TODO: Implement event handling for SpaceMouse
+  return QWidget::winEvent( msg );
+}
+
+#else
+
+bool QVTK_RenderWindowInteractor::x11Event( XEvent *xEvent )
 {
   // handle 3d space mouse events
-  if(SVTK_SpaceMouse* aSpaceMouse = SVTK_SpaceMouse::getInstance()){
-    if(aSpaceMouse->isSpaceMouseOn() && xEvent->type == ClientMessage){
+  if ( SVTK_SpaceMouse* aSpaceMouse = SVTK_SpaceMouse::getInstance() )
+  {
+    if ( aSpaceMouse->isSpaceMouseOn() && xEvent->type == ClientMessage )
+    {
       SVTK_SpaceMouse::MoveEvent anEvent;
       int type = aSpaceMouse->translateEvent( x11Display(), xEvent, &anEvent, 1.0, 1.0 );
-      switch( type ){
-      case SVTK_SpaceMouse::SpaceMouseMove : 
-       GetDevice()->InvokeEvent(SVTK::SpaceMouseMoveEvent, anEvent.data );
-       break;
-      case SVTK_SpaceMouse::SpaceButtonPress :
-       GetDevice()->InvokeEvent( SVTK::SpaceMouseButtonEvent, &anEvent.button );
-       break;
-      case SVTK_SpaceMouse::SpaceButtonRelease :
-       break;
+      switch ( type )
+      {
+      case SVTK_SpaceMouse::SpaceMouseMove:
+             GetDevice()->InvokeEvent( SVTK::SpaceMouseMoveEvent, anEvent.data );
+             break;
+      case SVTK_SpaceMouse::SpaceButtonPress:
+             GetDevice()->InvokeEvent( SVTK::SpaceMouseButtonEvent, &anEvent.button );
+             break;
+      case SVTK_SpaceMouse::SpaceButtonRelease:
+             break;
       }
       return true; // stop handling the event
     }
@@ -376,6 +385,7 @@ QVTK_RenderWindowInteractor
   return QWidget::x11Event( xEvent );
 }
 
+#endif
 
 //----------------------------------------------------------------------------
 SVTK_RenderWindowInteractor
index bc0020ddf9a447880cad9e208dd97dae40dfd219..42011c4e2a85966fff17259d587c0773bb667a2e 100644 (file)
@@ -116,8 +116,12 @@ class SVTK_EXPORT QVTK_RenderWindowInteractor: public QWidget
   virtual void focusInEvent( QFocusEvent* );
   virtual void focusOutEvent( QFocusEvent* );
 
-  //! To handle native X11 events (from such devices as SpaceMouse)
+  //! To handle native events (from such devices as SpaceMouse)
+#ifdef WIN32
+  virtual bool winEvent( MSG* );
+#else
   virtual bool x11Event( XEvent *e );
+#endif
 
   vtkSmartPointer<vtkRenderWindow> myRenderWindow;
   vtkSmartPointer<vtkGenericRenderWindowInteractor> myDevice;
index bc6dad1480e5ee99953a82b0e9588e0dba014f5b..b05a168a2a1f4ce09494975525e6aaa6cde3f9a2 100644 (file)
@@ -214,24 +214,19 @@ SVTK_SelectorDef
     theIndex.Clear();
 }
 
-bool
-SVTK_SelectorDef
-::IsIndexSelected(const Handle(SALOME_InteractiveObject)& theIO, 
-                 int theIndex) const
+bool SVTK_SelectorDef::IsIndexSelected( const Handle(SALOME_InteractiveObject)& theIO, 
+                                                   int theIndex) const
 {
   TMapIOSubIndex::const_iterator anIter = myMapIOSubIndex.find(theIO);
   if(anIter != myMapIOSubIndex.end()){
     const TColStd_IndexedMapOfInteger& aMapIndex = anIter->second.myMap;
-    return aMapIndex.Contains(theIndex);
+    return aMapIndex.Contains( theIndex ) == Standard_True;
   }
 
   return false;
 }
 
-static 
-bool
-removeIndex(TColStd_IndexedMapOfInteger& theMapIndex,
-           const int theIndex)
+static bool removeIndex(TColStd_IndexedMapOfInteger& theMapIndex, const int theIndex)
 {
   int anId = theMapIndex.FindIndex(theIndex); // i==0 if Index is not in the MapIndex
   if(anId){
@@ -250,10 +245,9 @@ removeIndex(TColStd_IndexedMapOfInteger& theMapIndex,
       theMapIndex = aNewMap;
     }
   }
-  return anId;
+  return anId != 0;
 }
 
-
 bool
 SVTK_SelectorDef
 ::AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& theIO, 
@@ -327,23 +321,22 @@ SVTK_SelectorDef
   }
   TColStd_IndexedMapOfInteger& aMapIndex = anIter->second.myMap;
 
-  bool anIsConatains = aMapIndex.Contains(theIndex);
-  if(anIsConatains)
-    removeIndex(aMapIndex,theIndex);
+  bool anIsConatains = aMapIndex.Contains( theIndex ) == Standard_True;
+  if ( anIsConatains )
+    removeIndex( aMapIndex, theIndex );
   
-  if(!theIsModeShift)
+  if ( !theIsModeShift )
     aMapIndex.Clear();
   
-  if(!anIsConatains)
+  if ( !anIsConatains )
     aMapIndex.Add( theIndex );
 
-  if( aMapIndex.IsEmpty())
-    myMapIOSubIndex.erase(theIO);
+  if ( aMapIndex.IsEmpty() )
+    myMapIOSubIndex.erase( theIO );
 
   return false;
 }
 
-
 void
 SVTK_SelectorDef
 ::RemoveIndex( const Handle(SALOME_InteractiveObject)& theIO, 
index 620e97ec073ea73f0ce900bf31b96b515bd924b9..8ee2e21d77e37311006ca046eae2d4b81753e1bc 100644 (file)
 #include <math.h>
 #include <stdio.h>
 
+#ifndef WIN32
 #include <X11/X.h>
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>
 #include <X11/Xatom.h>
 #include <X11/keysym.h>
+#endif
 
 #include "SVTK_SpaceMouse.h"
 
@@ -52,11 +54,15 @@ SVTK_SpaceMouse* SVTK_SpaceMouse::getInstance()
 //---------------------------------------------
 SVTK_SpaceMouse::SVTK_SpaceMouse()
 {
+#ifndef WIN32
   win = InputFocus;
+#endif
   spaceMouseOn = 0;
 }
 
 //---------------------------------------------
+#ifndef WIN32
+
 int SVTK_SpaceMouse::initialize( Display *display, Window window )
 {
  XMotionEvent        = XInternAtom( display, "MotionEvent",        1 );
@@ -194,3 +200,4 @@ int SVTK_SpaceMouse::translateEvent( Display* display, XEvent* xEvent, MoveEvent
   return (!display);
 }
 
+#endif
index 57a6f8470809978de0eb5d2f6cc16323659c7fca..a282dae6f5b5b14acc320e44c331a92b8a69d03a 100644 (file)
 #ifndef SVTK_SpaceMouse_h
 #define SVTK_SpaceMouse_h
 
+#ifndef WIN32
 extern "C"
 {
 #include <X11/X.h>
 #include <X11/Xlib.h>
 }
+#endif
 
 class SVTK_SpaceMouse 
 {
@@ -54,21 +56,25 @@ class SVTK_SpaceMouse
 
   bool isSpaceMouseOn() const { return spaceMouseOn != 0; }
 
+#ifndef WIN32
   int initialize     ( Display*, Window );
   int setWindow      ( Display*, Window );
   int translateEvent ( Display*, XEvent*, MoveEvent*, double, double );
   int close          ( Display* );
+#endif
 
  private:
   SVTK_SpaceMouse();
   static SVTK_SpaceMouse* myInstance;
 
+#ifndef WIN32
   Atom XMotionEvent;
   Atom XButtonPressEvent;
   Atom XButtonReleaseEvent;
   Atom XCommandEvent;
 
   Window win;
+#endif
   int spaceMouseOn;
 };