Issue 0020950: EDF 1506 SMESH: Change the color of several groups

This commit is contained in:
ouv 2010-10-12 10:01:55 +00:00
parent 6d0472b820
commit 52603030d5

View File

@ -753,121 +753,125 @@
SMESHGUI::GetSMESHGUI()->EmitSignalDeactivateDialog(); SMESHGUI::GetSMESHGUI()->EmitSignalDeactivateDialog();
(new SMESHGUI_TransparencyDlg( SMESHGUI::GetSMESHGUI() ))->show(); (new SMESHGUI_TransparencyDlg( SMESHGUI::GetSMESHGUI() ))->show();
return; return;
}} }
SALOME_ListIteratorOfListIO It( selected ); case 1132:{
for( ; It.More(); It.Next()){ QColor c, e, b, n, c0D, o;
Handle(SALOME_InteractiveObject) IObject = It.Value(); int size0D = 0;
if(IObject->hasEntry()){ int Edgewidth = 0;
if(SMESH_Actor *anActor = SMESH::FindActorByEntry(IObject->getEntry())){ vtkFloatingPointType Shrink = 0.0;
switch(theCommandID){ vtkFloatingPointType faces_orientation_scale = 0.0;
case 211: bool faces_orientation_3dvectors = false;
anActor->SetRepresentation(SMESH_Actor::eEdge);
break; VTK::MarkerType aMarkerTypeCurrent = VTK::MT_NONE;
case 212: VTK::MarkerScale aMarkerScaleCurrent = VTK::MS_NONE;
anActor->SetRepresentation(SMESH_Actor::eSurface); int aMarkerTextureCurrent = 0;
break;
case 213: SALOME_ListIteratorOfListIO It( selected );
if(anActor->IsShrunk()) for( ; It.More(); It.Next()){
anActor->UnShrink(); Handle(SALOME_InteractiveObject) IObject = It.Value();
else if(IObject->hasEntry()){
anActor->SetShrink(); if(SMESH_Actor *anActor = SMESH::FindActorByEntry(IObject->getEntry())){
break;
case 215:
anActor->SetRepresentation(SMESH_Actor::ePoint);
break;
case 231:
if(anActor->GetQuadratic2DRepresentation() != SMESH_Actor::eLines)
anActor->SetQuadratic2DRepresentation(SMESH_Actor::eLines);
break;
case 232:
if(anActor->GetQuadratic2DRepresentation() != SMESH_Actor::eArcs)
anActor->SetQuadratic2DRepresentation(SMESH_Actor::eArcs);
break;
case 1132:{
vtkFloatingPointType color[3]; vtkFloatingPointType color[3];
anActor->GetSufaceColor(color[0], color[1], color[2]); anActor->GetSufaceColor(color[0], color[1], color[2]);
int c0 = int (color[0] * 255); int c0 = int (color[0] * 255);
int c1 = int (color[1] * 255); int c1 = int (color[1] * 255);
int c2 = int (color[2] * 255); int c2 = int (color[2] * 255);
QColor c(c0, c1, c2); c.setRgb(c0, c1, c2);
vtkFloatingPointType edgecolor[3]; vtkFloatingPointType edgecolor[3];
anActor->GetEdgeColor(edgecolor[0], edgecolor[1], edgecolor[2]); anActor->GetEdgeColor(edgecolor[0], edgecolor[1], edgecolor[2]);
c0 = int (edgecolor[0] * 255); c0 = int (edgecolor[0] * 255);
c1 = int (edgecolor[1] * 255); c1 = int (edgecolor[1] * 255);
c2 = int (edgecolor[2] * 255); c2 = int (edgecolor[2] * 255);
QColor e(c0, c1, c2); e.setRgb(c0, c1, c2);
vtkFloatingPointType backfacecolor[3]; vtkFloatingPointType backfacecolor[3];
anActor->GetBackSufaceColor(backfacecolor[0], backfacecolor[1], backfacecolor[2]); anActor->GetBackSufaceColor(backfacecolor[0], backfacecolor[1], backfacecolor[2]);
c0 = int (backfacecolor[0] * 255); c0 = int (backfacecolor[0] * 255);
c1 = int (backfacecolor[1] * 255); c1 = int (backfacecolor[1] * 255);
c2 = int (backfacecolor[2] * 255); c2 = int (backfacecolor[2] * 255);
QColor b(c0, c1, c2); b.setRgb(c0, c1, c2);
vtkFloatingPointType nodecolor[3]; vtkFloatingPointType nodecolor[3];
anActor->GetNodeColor(nodecolor[0], nodecolor[1], nodecolor[2]); anActor->GetNodeColor(nodecolor[0], nodecolor[1], nodecolor[2]);
c0 = int (nodecolor[0] * 255); c0 = int (nodecolor[0] * 255);
c1 = int (nodecolor[1] * 255); c1 = int (nodecolor[1] * 255);
c2 = int (nodecolor[2] * 255); c2 = int (nodecolor[2] * 255);
QColor n(c0, c1, c2); n.setRgb(c0, c1, c2);
vtkFloatingPointType color0D[3]; vtkFloatingPointType color0D[3];
anActor->Get0DColor(color0D[0], color0D[1], color0D[2]); anActor->Get0DColor(color0D[0], color0D[1], color0D[2]);
c0 = int (color0D[0] * 255); c0 = int (color0D[0] * 255);
c1 = int (color0D[1] * 255); c1 = int (color0D[1] * 255);
c2 = int (color0D[2] * 255); c2 = int (color0D[2] * 255);
QColor c0D(c0, c1, c2); c0D.setRgb(c0, c1, c2);
int size0D = (int)anActor->Get0DSize(); size0D = (int)anActor->Get0DSize();
if(size0D == 0) if(size0D == 0)
size0D = 1; size0D = 1;
int Edgewidth = (int)anActor->GetLineWidth(); Edgewidth = (int)anActor->GetLineWidth();
if(Edgewidth == 0) if(Edgewidth == 0)
Edgewidth = 1; Edgewidth = 1;
vtkFloatingPointType Shrink = anActor->GetShrinkFactor(); Shrink = anActor->GetShrinkFactor();
vtkFloatingPointType faces_orientation_color[3]; vtkFloatingPointType faces_orientation_color[3];
anActor->GetFacesOrientationColor(faces_orientation_color); anActor->GetFacesOrientationColor(faces_orientation_color);
c0 = int (faces_orientation_color[0] * 255); c0 = int (faces_orientation_color[0] * 255);
c1 = int (faces_orientation_color[1] * 255); c1 = int (faces_orientation_color[1] * 255);
c2 = int (faces_orientation_color[2] * 255); c2 = int (faces_orientation_color[2] * 255);
QColor o(c0, c1, c2); o.setRgb(c0, c1, c2);
vtkFloatingPointType faces_orientation_scale = anActor->GetFacesOrientationScale(); faces_orientation_scale = anActor->GetFacesOrientationScale();
bool faces_orientation_3dvectors = anActor->GetFacesOrientation3DVectors(); faces_orientation_3dvectors = anActor->GetFacesOrientation3DVectors();
SMESHGUI_Preferences_ColorDlg *aDlg = aMarkerTypeCurrent = anActor->GetMarkerType();
new SMESHGUI_Preferences_ColorDlg( SMESHGUI::GetSMESHGUI() ); aMarkerScaleCurrent = anActor->GetMarkerScale();
aDlg->SetColor(1, c); aMarkerTextureCurrent = anActor->GetMarkerTexture();
aDlg->SetColor(2, e);
aDlg->SetColor(3, n);
aDlg->SetColor(4, b);
aDlg->SetColor(5, c0D);
aDlg->SetColor(6, o);
aDlg->SetIntValue(1, Edgewidth);
aDlg->SetIntValue(2, int(Shrink*100.));
aDlg->SetIntValue(3, size0D);
aDlg->SetDoubleValue(1, faces_orientation_scale);
aDlg->SetBooleanValue(1, faces_orientation_3dvectors);
aDlg->setCustomMarkerMap( theMarkerMap[ aStudy->StudyId() ] ); // even if there are multiple objects in the selection,
// we need only the first one to get values for the dialog
break;
}
}
}
VTK::MarkerType aMarkerTypeCurrent = anActor->GetMarkerType(); SMESHGUI_Preferences_ColorDlg *aDlg =
VTK::MarkerScale aMarkerScaleCurrent = anActor->GetMarkerScale(); new SMESHGUI_Preferences_ColorDlg( SMESHGUI::GetSMESHGUI() );
int aMarkerTextureCurrent = anActor->GetMarkerTexture(); aDlg->SetColor(1, c);
if( aMarkerTypeCurrent != VTK::MT_USER ) aDlg->SetColor(2, e);
aDlg->setStandardMarker( aMarkerTypeCurrent, aMarkerScaleCurrent ); aDlg->SetColor(3, n);
else aDlg->SetColor(4, b);
aDlg->setCustomMarker( aMarkerTextureCurrent ); aDlg->SetColor(5, c0D);
aDlg->SetColor(6, o);
aDlg->SetIntValue(1, Edgewidth);
aDlg->SetIntValue(2, int(Shrink*100.));
aDlg->SetIntValue(3, size0D);
aDlg->SetDoubleValue(1, faces_orientation_scale);
aDlg->SetBooleanValue(1, faces_orientation_3dvectors);
aDlg->setCustomMarkerMap( theMarkerMap[ aStudy->StudyId() ] );
if(aDlg->exec()){ if( aMarkerTypeCurrent != VTK::MT_USER )
QColor color = aDlg->GetColor(1); aDlg->setStandardMarker( aMarkerTypeCurrent, aMarkerScaleCurrent );
QColor edgecolor = aDlg->GetColor(2); else
QColor nodecolor = aDlg->GetColor(3); aDlg->setCustomMarker( aMarkerTextureCurrent );
QColor backfacecolor = aDlg->GetColor(4);
QColor color0D = aDlg->GetColor(5); if(aDlg->exec()){
QColor faces_orientation_color = aDlg->GetColor(6); QColor color = aDlg->GetColor(1);
QColor edgecolor = aDlg->GetColor(2);
QColor nodecolor = aDlg->GetColor(3);
QColor backfacecolor = aDlg->GetColor(4);
QColor color0D = aDlg->GetColor(5);
QColor faces_orientation_color = aDlg->GetColor(6);
/* Point marker */
theMarkerMap[ aStudy->StudyId() ] = aDlg->getCustomMarkerMap();
SALOME_ListIteratorOfListIO It( selected );
for( ; It.More(); It.Next()){
Handle(SALOME_InteractiveObject) IObject = It.Value();
if(IObject->hasEntry()){
if(SMESH_Actor *anActor = SMESH::FindActorByEntry(IObject->getEntry())){
/* actor color and backface color */ /* actor color and backface color */
anActor->SetSufaceColor(vtkFloatingPointType (color.red()) / 255., anActor->SetSufaceColor(vtkFloatingPointType (color.red()) / 255.,
vtkFloatingPointType (color.green()) / 255., vtkFloatingPointType (color.green()) / 255.,
@ -904,9 +908,6 @@
anActor->SetFacesOrientationScale(aDlg->GetDoubleValue(1)); anActor->SetFacesOrientationScale(aDlg->GetDoubleValue(1));
anActor->SetFacesOrientation3DVectors(aDlg->GetBooleanValue(1)); anActor->SetFacesOrientation3DVectors(aDlg->GetBooleanValue(1));
/* Point marker */
theMarkerMap[ aStudy->StudyId() ] = aDlg->getCustomMarkerMap();
VTK::MarkerType aMarkerTypeNew = aDlg->getMarkerType(); VTK::MarkerType aMarkerTypeNew = aDlg->getMarkerType();
VTK::MarkerScale aMarkerScaleNew = aDlg->getStandardMarkerScale(); VTK::MarkerScale aMarkerScaleNew = aDlg->getStandardMarkerScale();
int aMarkerTextureNew = aDlg->getCustomMarkerID(); int aMarkerTextureNew = aDlg->getCustomMarkerID();
@ -937,11 +938,45 @@
aGroupColor.B = (float)aColor.blue() / 255.0; aGroupColor.B = (float)aColor.blue() / 255.0;
aGroupObject->SetColor( aGroupColor ); aGroupObject->SetColor( aGroupColor );
} }
delete aDlg;
} }
}
}
SMESH::RepaintCurrentView();
}
delete aDlg;
return;
}
}
SALOME_ListIteratorOfListIO It( selected );
for( ; It.More(); It.Next()){
Handle(SALOME_InteractiveObject) IObject = It.Value();
if(IObject->hasEntry()){
if(SMESH_Actor *anActor = SMESH::FindActorByEntry(IObject->getEntry())){
switch(theCommandID){
case 211:
anActor->SetRepresentation(SMESH_Actor::eEdge);
break; break;
}} case 212:
anActor->SetRepresentation(SMESH_Actor::eSurface);
break;
case 213:
if(anActor->IsShrunk())
anActor->UnShrink();
else
anActor->SetShrink();
break;
case 215:
anActor->SetRepresentation(SMESH_Actor::ePoint);
break;
case 231:
if(anActor->GetQuadratic2DRepresentation() != SMESH_Actor::eLines)
anActor->SetQuadratic2DRepresentation(SMESH_Actor::eLines);
break;
case 232:
if(anActor->GetQuadratic2DRepresentation() != SMESH_Actor::eArcs)
anActor->SetQuadratic2DRepresentation(SMESH_Actor::eArcs);
break;
}
} }
} }
} }