0021711: [CEA 579] Simplify Properties dialog accordingly to dimension of mesh

This commit is contained in:
vsr 2012-10-03 13:25:32 +00:00
parent 5d5b9e01cd
commit 5296aeeaa6
6 changed files with 102 additions and 28 deletions

View File

@ -31,6 +31,7 @@
<parameter name="default_grp_color" value="255, 170, 0"/>
<parameter name="node_color" value="255, 0, 0"/>
<parameter name="fill_color" value="0, 170, 255|-100"/>
<parameter name="volume_color" value="255, 0, 170|-100"/>
<parameter name="wireframe_color" value="0, 170, 255"/>
<parameter name="outline_color" value="0, 70, 0"/>
<parameter name="elem0d_color" value="0, 255, 0"/>
@ -42,6 +43,7 @@
<parameter name="elem0d_size" value="5" />
<parameter name="ball_elem_size" value="10" />
<parameter name="element_width" value="1" />
<parameter name="outline_width" value="1" />
<parameter name="shrink_coeff" value="75"/>
<parameter name="orientation_color" value="255, 255, 255"/>
<parameter name="orientation_scale" value="0.1"/>

View File

@ -148,6 +148,7 @@ SMESH_ActorDef::SMESH_ActorDef()
vtkFloatingPointType aElem0DSize = SMESH::GetFloat("SMESH:elem0d_size",5);
vtkFloatingPointType aBallElemSize = SMESH::GetFloat("SMESH:ball_elem_size",10);
vtkFloatingPointType aLineWidth = SMESH::GetFloat("SMESH:element_width",1);
vtkFloatingPointType aOutlineWidth = SMESH::GetFloat("SMESH:outline_width",1);
vtkMatrix4x4 *aMatrix = vtkMatrix4x4::New();
VTKViewer_ExtractUnstructuredGrid* aFilter = NULL;
@ -166,6 +167,15 @@ SMESH_ActorDef::SMESH_ActorDef()
bfc = Qtx::mainColorToSecondary(ffc, delta);
myBackSurfaceProp->SetColor( bfc.red() / 255. , bfc.green() / 255. , bfc.blue() / 255. );
myNormalVProp = vtkProperty::New();
SMESH::GetColor( "SMESH", "volume_color", ffc, delta, "255,0,170|-100" );
myNormalVProp->SetColor( ffc.redF(), ffc.greenF(), ffc.blueF() );
myDeltaVBrightness = delta;
myReversedVProp = vtkProperty::New();
bfc = Qtx::mainColorToSecondary(ffc, delta);
myReversedVProp->SetColor( bfc.red() / 255. , bfc.green() / 255. , bfc.blue() / 255. );
my2DActor = SMESH_CellLabelActor::New();
my2DActor->SetStoreGemetryMapping(true);
my2DActor->SetUserMatrix(aMatrix);
@ -208,8 +218,8 @@ SMESH_ActorDef::SMESH_ActorDef()
my3DActor->SetStoreGemetryMapping(true);
my3DActor->SetUserMatrix(aMatrix);
my3DActor->PickableOff();
my3DActor->SetProperty(mySurfaceProp);
my3DActor->SetBackfaceProperty(myBackSurfaceProp);
my3DActor->SetProperty(myNormalVProp);
my3DActor->SetBackfaceProperty(myReversedVProp);
my3DActor->SetRepresentation(SMESH_DeviceActor::eSurface);
my3DActor->SetCoincident3DAllowed(true);
aFilter = my3DActor->GetExtractUnstructuredGrid();
@ -231,11 +241,19 @@ SMESH_ActorDef::SMESH_ActorDef()
aFilter->RegisterCellsWithType(VTK_POLYHEDRON);
//#endif
my3DExtProp = vtkProperty::New();
my3DExtProp->DeepCopy(myNormalVProp);
SMESH::GetColor( "SMESH", "volume_color", anRGB[0], anRGB[1], anRGB[2], QColor( 255, 0, 170 ) );
anRGB[0] = 1 - anRGB[0];
anRGB[1] = 1 - anRGB[1];
anRGB[2] = 1 - anRGB[2];
my3DExtProp->SetColor(anRGB[0],anRGB[1],anRGB[2]);
my3DExtActor = SMESH_DeviceActor::New();
my3DExtActor->SetUserMatrix(aMatrix);
my3DExtActor->PickableOff();
my3DExtActor->SetProperty(my2DExtProp);
my3DExtActor->SetBackfaceProperty(my2DExtProp);
my3DExtActor->SetProperty(my3DExtProp);
my3DExtActor->SetBackfaceProperty(my3DExtProp);
my3DExtActor->SetRepresentation(SMESH_DeviceActor::eSurface);
my3DExtActor->SetCoincident3DAllowed(true);
aFilter = my3DExtActor->GetExtractUnstructuredGrid();
@ -426,7 +444,7 @@ SMESH_ActorDef::SMESH_ActorDef()
myOutLineProp->SetSpecular(0.0);
SMESH::GetColor( "SMESH", "outline_color", anRGB[0], anRGB[1], anRGB[2], QColor( 0, 70, 0 ) );
myOutLineProp->SetColor(anRGB[0],anRGB[1],anRGB[2]);
myOutLineProp->SetLineWidth(aLineWidth);
myOutLineProp->SetLineWidth(aOutlineWidth);
myOutLineProp->SetRepresentation(1);
myPreselectProp = vtkProperty::New();
@ -503,7 +521,7 @@ SMESH_ActorDef::SMESH_ActorDef()
my2DActor->SetQuadraticArcAngle(aQuadraticAngle);
// Set colors of the name actor
SMESH::GetColor( "SMESH", "fill_color", anRGB[0], anRGB[1], anRGB[2], QColor( 0, 170, 255 ) );
SMESH::GetColor( "SMESH", "default_grp_color", anRGB[0], anRGB[1], anRGB[2], QColor( 0, 170, 255 ) );
myNameActor->SetBackgroundColor(anRGB[0], anRGB[1], anRGB[2]);
SMESH::GetColor( "SMESH", "group_name_color", anRGB[0], anRGB[1], anRGB[2], QColor( 255, 255, 255 ) );
myNameActor->SetForegroundColor(anRGB[0], anRGB[1], anRGB[2]);
@ -533,6 +551,8 @@ SMESH_ActorDef::~SMESH_ActorDef()
mySurfaceProp->Delete();
myBackSurfaceProp->Delete();
myNormalVProp->Delete();
myReversedVProp->Delete();
myOutLineProp->Delete();
myEdgeProp->Delete();
@ -559,6 +579,7 @@ SMESH_ActorDef::~SMESH_ActorDef()
my2DExtProp->Delete();
my2DExtActor->Delete();
my3DActor->Delete();
my3DExtProp->Delete();
my3DExtActor->Delete();
myNodeActor->Delete();
@ -657,15 +678,15 @@ bool SMESH_ActorDef::GetFacesOriented()
return myIsFacesOriented;
}
void SMESH_ActorDef::SetFacesOrientationColor(vtkFloatingPointType theColor[3])
void SMESH_ActorDef::SetFacesOrientationColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b)
{
my2DActor->SetFacesOrientationColor( theColor );
my3DActor->SetFacesOrientationColor( theColor );
my2DActor->SetFacesOrientationColor( r, g, b );
my3DActor->SetFacesOrientationColor( r, g, b );
}
void SMESH_ActorDef::GetFacesOrientationColor(vtkFloatingPointType theColor[3])
void SMESH_ActorDef::GetFacesOrientationColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b)
{
my3DActor->GetFacesOrientationColor( theColor );
my3DActor->GetFacesOrientationColor( r, g, b );
}
void SMESH_ActorDef::SetFacesOrientationScale(vtkFloatingPointType theScale)
@ -1074,6 +1095,7 @@ bool SMESH_ActorDef::Init(TVisualObjPtr theVisualObj,
my2DActor->GetPolygonOffsetParameters(aFactor,aUnits);
my2DActor->SetPolygonOffsetParameters(aFactor,aUnits*0.75);
my2DExtActor->SetPolygonOffsetParameters(aFactor,aUnits*0.5);
my3DActor->SetPolygonOffsetParameters(2*aFactor,aUnits);
SUIT_ResourceMgr* mgr = SUIT_Session::session()->resourceMgr();
if( !mgr )
@ -1551,6 +1573,7 @@ void SMESH_ActorDef::SetRepresentation (int theMode)
myNodeActor->SetVisibility(false);
myNodeExtActor->SetVisibility(false);
vtkProperty *aProp = NULL, *aBackProp = NULL;
vtkProperty *aPropVN = NULL, *aPropVR = NULL;
SMESH_DeviceActor::EReperesent aReperesent = SMESH_DeviceActor::EReperesent(-1);
SMESH_Actor::EQuadratic2DRepresentation aQuadraticMode = GetQuadratic2DRepresentation();
switch (myRepresentation) {
@ -1558,16 +1581,18 @@ void SMESH_ActorDef::SetRepresentation (int theMode)
myPickableActor = myNodeActor;
myNodeActor->SetVisibility(true);
aQuadraticMode = SMESH_Actor::eLines;
aProp = aBackProp = myNodeProp;
aProp = aBackProp = aPropVN = aPropVR = myNodeProp;
aReperesent = SMESH_DeviceActor::ePoint;
break;
case eEdge:
aProp = aBackProp = myEdgeProp;
aProp = aBackProp = aPropVN = aPropVR = myEdgeProp;
aReperesent = SMESH_DeviceActor::eInsideframe;
break;
case eSurface:
aProp = mySurfaceProp;
aBackProp = myBackSurfaceProp;
aPropVN = myNormalVProp;
aPropVR = myReversedVProp;
aReperesent = SMESH_DeviceActor::eSurface;
break;
}
@ -1583,8 +1608,8 @@ void SMESH_ActorDef::SetRepresentation (int theMode)
my2DExtActor->SetRepresentation(aReperesent);
my3DActor->SetProperty(aProp);
my3DActor->SetBackfaceProperty(aBackProp);
my3DActor->SetProperty(aPropVN);
my3DActor->SetBackfaceProperty(aPropVR);
my3DActor->SetRepresentation(aReperesent);
//my0DExtActor->SetVisibility(false);
@ -1803,7 +1828,10 @@ static void GetColor(vtkProperty *theProperty, vtkFloatingPointType& r,vtkFloati
void SMESH_ActorDef::SetOpacity(vtkFloatingPointType theValue){
mySurfaceProp->SetOpacity(theValue);
myBackSurfaceProp->SetOpacity(theValue);
myNormalVProp->SetOpacity(theValue);
myReversedVProp->SetOpacity(theValue);
myEdgeProp->SetOpacity(theValue);
myOutLineProp->SetOpacity(theValue);
myNodeProp->SetOpacity(theValue);
my1DProp->SetOpacity(theValue);
@ -1819,9 +1847,9 @@ vtkFloatingPointType SMESH_ActorDef::GetOpacity(){
void SMESH_ActorDef::SetSufaceColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b, int delta){
mySurfaceProp->SetColor(r,g,b);
my2DExtProp->SetColor(1.0-r,1.0-g,1.0-b);
if( SMESH_GroupObj* aGroupObj = dynamic_cast<SMESH_GroupObj*>( myVisualObj.get() ) )
if( aGroupObj->GetElementType() == SMDSAbs_Face ||
aGroupObj->GetElementType() == SMDSAbs_Volume )
if( aGroupObj->GetElementType() == SMDSAbs_Face )
myNameActor->SetBackgroundColor(r,g,b);
myDeltaBrightness = delta;
@ -1832,10 +1860,27 @@ void SMESH_ActorDef::SetSufaceColor(vtkFloatingPointType r,vtkFloatingPointType
void SMESH_ActorDef::GetSufaceColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b, int& delta){
::GetColor(mySurfaceProp,r,g,b);
my2DExtProp->SetColor(1.0-r,1.0-g,1.0-b);
delta = myDeltaBrightness;
}
void SMESH_ActorDef::SetVolumeColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b, int delta){
myNormalVProp->SetColor(r,g,b);
my3DExtProp->SetColor(1.0-r,1.0-g,1.0-b);
if( SMESH_GroupObj* aGroupObj = dynamic_cast<SMESH_GroupObj*>( myVisualObj.get() ) )
if( aGroupObj->GetElementType() == SMDSAbs_Volume )
myNameActor->SetBackgroundColor(r,g,b);
myDeltaVBrightness = delta;
QColor bfc = Qtx::mainColorToSecondary(QColor(int(r*255),int(g*255),int(b*255)), delta);
myReversedVProp->SetColor( bfc.red() / 255. , bfc.green() / 255. , bfc.blue() / 255. );
Modified();
}
void SMESH_ActorDef::GetVolumeColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b, int& delta){
::GetColor(myNormalVProp,r,g,b);
delta = myDeltaVBrightness;
}
void SMESH_ActorDef::SetEdgeColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b){
myEdgeProp->SetColor(r,g,b);
my1DProp->SetColor(r,g,b);
@ -1929,12 +1974,23 @@ void SMESH_ActorDef::SetLineWidth(vtkFloatingPointType theVal){
my1DProp->SetLineWidth(theVal + aLineWidthInc);
my1DExtProp->SetLineWidth(theVal + aLineWidthInc);
my2DExtProp->SetLineWidth(theVal + aLineWidthInc);
my3DExtProp->SetLineWidth(theVal + aLineWidthInc);
myOutLineProp->SetLineWidth(theVal);
myHighlightProp->SetLineWidth(theVal);
myPreselectProp->SetLineWidth(theVal);
Modified();
}
vtkFloatingPointType SMESH_ActorDef::GetOutlineWidth()
{
return myOutLineProp->GetLineWidth();
}
void SMESH_ActorDef::SetOutlineWidth(vtkFloatingPointType theVal)
{
myOutLineProp->SetLineWidth(theVal);
Modified();
}
void SMESH_ActorDef::Set0DSize(vtkFloatingPointType theVal){
my0DProp->SetPointSize(theVal);

View File

@ -64,6 +64,9 @@ class SMESHOBJECT_EXPORT SMESH_Actor: public SALOME_Actor
virtual void SetSufaceColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b, int delta ) = 0;
virtual void GetSufaceColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b, int& delta ) = 0;
virtual void SetVolumeColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b, int delta ) = 0;
virtual void GetVolumeColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b, int& delta) = 0;
virtual void SetEdgeColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b) = 0;
virtual void GetEdgeColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b) = 0;
@ -88,6 +91,9 @@ class SMESHOBJECT_EXPORT SMESH_Actor: public SALOME_Actor
virtual vtkFloatingPointType GetLineWidth() = 0;
virtual void SetLineWidth(vtkFloatingPointType theVal) = 0;
virtual vtkFloatingPointType GetOutlineWidth() = 0;
virtual void SetOutlineWidth(vtkFloatingPointType theVal) = 0;
virtual void Set0DSize(vtkFloatingPointType size) = 0;
virtual vtkFloatingPointType Get0DSize() = 0;
@ -122,8 +128,8 @@ class SMESHOBJECT_EXPORT SMESH_Actor: public SALOME_Actor
virtual void SetFacesOriented(bool theIsFacesOriented) = 0;
virtual bool GetFacesOriented() = 0;
virtual void SetFacesOrientationColor(vtkFloatingPointType theColor[3]) = 0;
virtual void GetFacesOrientationColor(vtkFloatingPointType theColor[3]) = 0;
virtual void SetFacesOrientationColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b) = 0;
virtual void GetFacesOrientationColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b) = 0;
virtual void SetFacesOrientationScale(vtkFloatingPointType theScale) = 0;
virtual vtkFloatingPointType GetFacesOrientationScale() = 0;

View File

@ -106,6 +106,9 @@ class SMESH_ActorDef : public SMESH_Actor
virtual void SetSufaceColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b, int delta );
virtual void GetSufaceColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b, int& delta);
virtual void SetVolumeColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b, int delta );
virtual void GetVolumeColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b, int& delta);
virtual void SetEdgeColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b);
virtual void GetEdgeColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b);
@ -131,6 +134,9 @@ class SMESH_ActorDef : public SMESH_Actor
virtual vtkFloatingPointType GetLineWidth();
virtual void SetLineWidth(vtkFloatingPointType theVal);
virtual vtkFloatingPointType GetOutlineWidth();
virtual void SetOutlineWidth(vtkFloatingPointType theVal);
virtual void Set0DSize(vtkFloatingPointType size);
virtual vtkFloatingPointType Get0DSize();
@ -180,8 +186,8 @@ class SMESH_ActorDef : public SMESH_Actor
virtual void SetFacesOriented(bool theIsFacesOriented);
virtual bool GetFacesOriented();
virtual void SetFacesOrientationColor(vtkFloatingPointType theColor[3]);
virtual void GetFacesOrientationColor(vtkFloatingPointType theColor[3]);
virtual void SetFacesOrientationColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b);
virtual void GetFacesOrientationColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b);
virtual void SetFacesOrientationScale(vtkFloatingPointType theScale);
virtual vtkFloatingPointType GetFacesOrientationScale();
@ -233,6 +239,8 @@ class SMESH_ActorDef : public SMESH_Actor
vtkProperty* mySurfaceProp;
vtkProperty* myBackSurfaceProp;
vtkProperty* myNormalVProp;
vtkProperty* myReversedVProp;
vtkProperty* myEdgeProp;
vtkProperty* myNodeProp;
@ -252,6 +260,7 @@ class SMESH_ActorDef : public SMESH_Actor
eControl myControlMode;
SMESH::Controls::FunctorPtr myFunctor;
vtkProperty* my2DExtProp;
vtkProperty* my3DExtProp;
SMESH_CellLabelActor* my2DActor;
SMESH_DeviceActor* my2DExtActor;
SMESH_CellLabelActor* my3DActor;
@ -295,6 +304,7 @@ class SMESH_ActorDef : public SMESH_Actor
bool myIsFacesOriented;
int myDeltaBrightness;
int myDeltaVBrightness;
VTK::MarkerTexture myMarkerTexture;

View File

@ -642,16 +642,16 @@ SMESH_DeviceActor
void
SMESH_DeviceActor
::SetFacesOrientationColor(vtkFloatingPointType theColor[3])
::SetFacesOrientationColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b)
{
myFaceOrientation->GetProperty()->SetColor( theColor );
myFaceOrientation->GetProperty()->SetColor( r, g, b );
}
void
SMESH_DeviceActor
::GetFacesOrientationColor(vtkFloatingPointType theColor[3])
::GetFacesOrientationColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b)
{
myFaceOrientation->GetProperty()->GetColor( theColor );
myFaceOrientation->GetProperty()->GetColor( r, g, b );
}
void

View File

@ -79,8 +79,8 @@ class SMESHOBJECT_EXPORT SMESH_DeviceActor: public vtkLODActor{
virtual void SetFacesOriented(bool theIsFacesOriented);
virtual bool GetFacesOriented() { return myIsFacesOriented; }
virtual void SetFacesOrientationColor(vtkFloatingPointType theColor[3]);
virtual void GetFacesOrientationColor(vtkFloatingPointType theColor[3]);
virtual void SetFacesOrientationColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b);
virtual void GetFacesOrientationColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b);
virtual void SetFacesOrientationScale(vtkFloatingPointType theScale);
virtual vtkFloatingPointType GetFacesOrientationScale();