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

@ -172,8 +172,8 @@ namespace MED
//---------------------------------------------------------------
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 );

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)
{
SetControlMode(theMode,true);
}
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;
}
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;
}

View 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,
eCoincidentElems1D, eCoincidentElems2D, eCoincidentElems3D, eNodeConnectivityNb };
eCoincidentElems1D, eCoincidentElems2D, eCoincidentElems3D, eNodeConnectivityNb,
eCustomControl };
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;

View File

@ -209,6 +209,7 @@ class SMESH_ActorDef : public SMESH_Actor
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; }