Salome HOME
GPUSPHGUI: show a custom control by setting a functor
authoreap <eap@opencascade.com>
Thu, 15 Feb 2018 13:04:32 +0000 (16:04 +0300)
committereap <eap@opencascade.com>
Thu, 15 Feb 2018 13:04:32 +0000 (16:04 +0300)
src/MEDWrapper/V2_2/MED_V2_2_Wrapper.cxx
src/OBJECT/SMESH_Actor.cxx
src/OBJECT/SMESH_Actor.h
src/OBJECT/SMESH_ActorDef.h

index 344542ebc9a0c11e63bc0d42819e173659b62839..d97a232a12a881b04427759f5647297967018d8f 100644 (file)
@@ -162,7 +162,7 @@ namespace MED
         if (myMinor < 0) myMinor = MED_MINOR_NUM;
         myFile->Open(theMode,theErr);
       }
         if (myMinor < 0) myMinor = MED_MINOR_NUM;
         myFile->Open(theMode,theErr);
       }
-      
+
       ~TFileWrapper()
       {
         myFile->Close();
       ~TFileWrapper()
       {
         myFile->Close();
@@ -172,8 +172,8 @@ namespace MED
 
     //---------------------------------------------------------------
     TVWrapper::TVWrapper(const std::string& theFileName, TInt theMinor):
 
     //---------------------------------------------------------------
     TVWrapper::TVWrapper(const std::string& theFileName, TInt theMinor):
-      myMinor(theMinor),
-      myFile(new TFile(theFileName, theMinor))
+      myFile(new TFile(theFileName, theMinor)),
+      myMinor(theMinor)
     {
       TErr aRet;
       myFile->Open( eLECTURE_ECRITURE, &aRet );
     {
       TErr aRet;
       myFile->Open( eLECTURE_ECRITURE, &aRet );
index 6bd4e2c629a2000a66d4db19e085e5136b971abf..dac3d4a0d6418b22e1e8afcf6d0bd3ef55b6ca24 100644 (file)
@@ -804,12 +804,20 @@ bool SMESH_ActorDef::GetFacesOrientation3DVectors()
 }
 
 
 }
 
 
+void SMESH_ActorDef::SetControl(SMESH::Controls::FunctorPtr theFunctor)
+{
+  myFunctor = theFunctor;
+  if ( !theFunctor )
+    SetControlMode( eNone, true );
+  else
+    SetControlMode( eCustomControl, true );
+}
+
 void SMESH_ActorDef::SetControlMode(eControl theMode)
 {
   SetControlMode(theMode,true);
 }
 
 void SMESH_ActorDef::SetControlMode(eControl theMode)
 {
   SetControlMode(theMode,true);
 }
 
-
 void SMESH_ActorDef::SetControlMode( eControl theMode, bool theCheckEntityMode )
 {
   vtkLookupTable* lookupTable = static_cast<vtkLookupTable*>(myScalarBarActor->GetLookupTable());
 void SMESH_ActorDef::SetControlMode( eControl theMode, bool theCheckEntityMode )
 {
   vtkLookupTable* lookupTable = static_cast<vtkLookupTable*>(myScalarBarActor->GetLookupTable());
@@ -1006,6 +1014,19 @@ void SMESH_ActorDef::SetControlMode( eControl theMode, bool theCheckEntityMode )
       myControlActor = myNodeActor;
       break;
     }
       myControlActor = myNodeActor;
       break;
     }
+    case eCustomControl:
+    {
+      if ( !myFunctor )
+        return;
+      switch ( myFunctor->GetType() ) {
+      case SMDSAbs_Node          : myControlActor = myNodeActor; break;
+      case SMDSAbs_Edge          : myControlActor = my1DActor;   break;
+      case SMDSAbs_Face          : myControlActor = my2DActor;   break;
+      case SMDSAbs_Volume        : myControlActor = my3DActor;   break;
+      default                    : return;
+      }
+      break;
+    }
     default:
       return;
     }
     default:
       return;
     }
index e8818e4d50b344f94edbb1feef52b8383d1c4e75..7ad9d2f886909e799fde5ab6e3644be8aa24457a 100644 (file)
@@ -146,8 +146,10 @@ class SMESHOBJECT_EXPORT SMESH_Actor: public SALOME_Actor
                 eMinimumAngle, eWarping, eSkew, eAspectRatio3D, eMultiConnection2D, eVolume3D,
                 eMaxElementLength2D, eMaxElementLength3D, eBareBorderFace, eBareBorderVolume,
                 eOverConstrainedFace, eOverConstrainedVolume, eCoincidentNodes,
                 eMinimumAngle, eWarping, eSkew, eAspectRatio3D, eMultiConnection2D, eVolume3D,
                 eMaxElementLength2D, eMaxElementLength3D, eBareBorderFace, eBareBorderVolume,
                 eOverConstrainedFace, eOverConstrainedVolume, eCoincidentNodes,
-                eCoincidentElems1D, eCoincidentElems2D, eCoincidentElems3D, eNodeConnectivityNb };
+                eCoincidentElems1D, eCoincidentElems2D, eCoincidentElems3D, eNodeConnectivityNb,
+                eCustomControl };
   virtual void SetControlMode(eControl theMode) = 0;
   virtual void SetControlMode(eControl theMode) = 0;
+  virtual void SetControl(SMESH::Controls::FunctorPtr) = 0;
   virtual eControl GetControlMode() = 0;
   virtual SMESH::Controls::FunctorPtr GetFunctor() = 0;
   virtual int GetNumberControlEntities() = 0;
   virtual eControl GetControlMode() = 0;
   virtual SMESH::Controls::FunctorPtr GetFunctor() = 0;
   virtual int GetNumberControlEntities() = 0;
index 3b9d9c68f97a4de811e5531ed78b268ce4ddf815..833e8253fcd8c273d5c7f88268b48d8d43c1c4b2 100644 (file)
@@ -209,6 +209,7 @@ class SMESH_ActorDef : public SMESH_Actor
   virtual bool GetFacesOrientation3DVectors();
 
   virtual void SetControlMode(eControl theMode);
   virtual bool GetFacesOrientation3DVectors();
 
   virtual void SetControlMode(eControl theMode);
+  virtual void SetControl(SMESH::Controls::FunctorPtr theFunctor);
   virtual int GetNumberControlEntities();
   virtual eControl GetControlMode(){ return myControlMode;}
   virtual SMESH::Controls::FunctorPtr GetFunctor() { return myFunctor; }
   virtual int GetNumberControlEntities();
   virtual eControl GetControlMode(){ return myControlMode;}
   virtual SMESH::Controls::FunctorPtr GetFunctor() { return myFunctor; }