GPUSPHGUI: show a custom control by setting a functor

This commit is contained in:
eap 2018-02-15 16:04:32 +03:00
parent 5c08cbc223
commit 2ffe4e63a8
4 changed files with 29 additions and 5 deletions

View File

@ -162,7 +162,7 @@ namespace MED
if (myMinor < 0) myMinor = MED_MINOR_NUM; if (myMinor < 0) myMinor = MED_MINOR_NUM;
myFile->Open(theMode,theErr); myFile->Open(theMode,theErr);
} }
~TFileWrapper() ~TFileWrapper()
{ {
myFile->Close(); 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; TErr aRet;
myFile->Open( eLECTURE_ECRITURE, &aRet ); myFile->Open( eLECTURE_ECRITURE, &aRet );

View 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) void SMESH_ActorDef::SetControlMode(eControl theMode)
{ {
SetControlMode(theMode,true); SetControlMode(theMode,true);
} }
void SMESH_ActorDef::SetControlMode( eControl theMode, bool theCheckEntityMode ) void SMESH_ActorDef::SetControlMode( eControl theMode, bool theCheckEntityMode )
{ {
vtkLookupTable* lookupTable = static_cast<vtkLookupTable*>(myScalarBarActor->GetLookupTable()); vtkLookupTable* lookupTable = static_cast<vtkLookupTable*>(myScalarBarActor->GetLookupTable());
@ -1006,6 +1014,19 @@ void SMESH_ActorDef::SetControlMode( eControl theMode, bool theCheckEntityMode )
myControlActor = myNodeActor; myControlActor = myNodeActor;
break; 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: default:
return; return;
} }

View File

@ -146,8 +146,10 @@ class SMESHOBJECT_EXPORT SMESH_Actor: public SALOME_Actor
eMinimumAngle, eWarping, eSkew, eAspectRatio3D, eMultiConnection2D, eVolume3D, eMinimumAngle, eWarping, eSkew, eAspectRatio3D, eMultiConnection2D, eVolume3D,
eMaxElementLength2D, eMaxElementLength3D, eBareBorderFace, eBareBorderVolume, eMaxElementLength2D, eMaxElementLength3D, eBareBorderFace, eBareBorderVolume,
eOverConstrainedFace, eOverConstrainedVolume, eCoincidentNodes, 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 eControl GetControlMode() = 0;
virtual SMESH::Controls::FunctorPtr GetFunctor() = 0; virtual SMESH::Controls::FunctorPtr GetFunctor() = 0;
virtual int GetNumberControlEntities() = 0; virtual int GetNumberControlEntities() = 0;

View File

@ -209,6 +209,7 @@ class SMESH_ActorDef : public SMESH_Actor
virtual bool GetFacesOrientation3DVectors(); virtual bool GetFacesOrientation3DVectors();
virtual void SetControlMode(eControl theMode); virtual void SetControlMode(eControl theMode);
virtual void SetControl(SMESH::Controls::FunctorPtr theFunctor);
virtual int GetNumberControlEntities(); virtual int GetNumberControlEntities();
virtual eControl GetControlMode(){ return myControlMode;} virtual eControl GetControlMode(){ return myControlMode;}
virtual SMESH::Controls::FunctorPtr GetFunctor() { return myFunctor; } virtual SMESH::Controls::FunctorPtr GetFunctor() { return myFunctor; }