anActor->SetEdgeColor( aColor.R, aColor.G, aColor.B );
else if( aGroupObject->GetType() == SMESH::ELEM0D )
anActor->Set0DColor( aColor.R, aColor.G, aColor.B );
- else
- anActor->SetSufaceColor( aColor.R, aColor.G, aColor.B );
+ else {
+ QColor c;
+ int delta;
+ SMESH::GetColor("SMESH", "fill_color", c, delta, "0,170,255|-100");
+ anActor->SetSufaceColor( aColor.R, aColor.G, aColor.B, delta );
+ }
}
}
}
return;
}
case 1132:{
- QColor c, e, b, n, c0D, o;
+ QColor c, e, b, n, c0D, o, outl, selection, preselection;
+ int delta;
int size0D = 0;
int Edgewidth = 0;
vtkFloatingPointType Shrink = 0.0;
if(IObject->hasEntry()){
if(SMESH_Actor *anActor = SMESH::FindActorByEntry(IObject->getEntry())){
vtkFloatingPointType color[3];
- anActor->GetSufaceColor(color[0], color[1], color[2]);
+ anActor->GetSufaceColor(color[0], color[1], color[2],delta);
int c0 = int (color[0] * 255);
int c1 = int (color[1] * 255);
int c2 = int (color[2] * 255);
c2 = int (edgecolor[2] * 255);
e.setRgb(c0, c1, c2);
- vtkFloatingPointType backfacecolor[3];
- anActor->GetBackSufaceColor(backfacecolor[0], backfacecolor[1], backfacecolor[2]);
- c0 = int (backfacecolor[0] * 255);
- c1 = int (backfacecolor[1] * 255);
- c2 = int (backfacecolor[2] * 255);
- b.setRgb(c0, c1, c2);
-
vtkFloatingPointType nodecolor[3];
anActor->GetNodeColor(nodecolor[0], nodecolor[1], nodecolor[2]);
c0 = int (nodecolor[0] * 255);
c2 = int (color0D[2] * 255);
c0D.setRgb(c0, c1, c2);
+ vtkFloatingPointType outlineColor[3];
+ anActor->GetOutlineColor(outlineColor[0], outlineColor[1], outlineColor[2]);
+ c0 = int (outlineColor[0] * 255);
+ c1 = int (outlineColor[1] * 255);
+ c2 = int (outlineColor[2] * 255);
+ outl.setRgb(c0, c1, c2);
+
+ vtkFloatingPointType hColor[3];
+ anActor->GetHighlightColor(hColor[0], hColor[1], hColor[2]);
+ c0 = int (hColor[0] * 255);
+ c1 = int (hColor[1] * 255);
+ c2 = int (hColor[2] * 255);
+ selection.setRgb(c0, c1, c2);
+
+ vtkFloatingPointType phColor[3];
+ anActor->GetPreHighlightColor(phColor[0], phColor[1], phColor[2]);
+ c0 = int (phColor[0] * 255);
+ c1 = int (phColor[1] * 255);
+ c2 = int (phColor[2] * 255);
+ preselection.setRgb(c0, c1, c2);
+
size0D = (int)anActor->Get0DSize();
if(size0D == 0)
size0D = 1;
aDlg->SetColor(1, c);
aDlg->SetColor(2, e);
aDlg->SetColor(3, n);
- aDlg->SetColor(4, b);
+ aDlg->SetColor(4, outl);
+ aDlg->SetDeltaBrightness(delta);
aDlg->SetColor(5, c0D);
aDlg->SetColor(6, o);
aDlg->SetIntValue(1, Edgewidth);
aDlg->SetIntValue(3, size0D);
aDlg->SetDoubleValue(1, faces_orientation_scale);
aDlg->SetBooleanValue(1, faces_orientation_3dvectors);
+ aDlg->SetColor(7, selection);
+ aDlg->SetColor(8, preselection);
aDlg->setCustomMarkerMap( theMarkerMap[ aStudy->StudyId() ] );
QColor color = aDlg->GetColor(1);
QColor edgecolor = aDlg->GetColor(2);
QColor nodecolor = aDlg->GetColor(3);
- QColor backfacecolor = aDlg->GetColor(4);
+ QColor outlinecolor = aDlg->GetColor(4);
QColor color0D = aDlg->GetColor(5);
QColor faces_orientation_color = aDlg->GetColor(6);
+ QColor selectioncolor = aDlg->GetColor(7);
+ QColor preSelectioncolor = aDlg->GetColor(8);
+ int delta = aDlg->GetDeltaBrightness();
/* Point marker */
theMarkerMap[ aStudy->StudyId() ] = aDlg->getCustomMarkerMap();
/* actor color and backface color */
anActor->SetSufaceColor(vtkFloatingPointType (color.red()) / 255.,
vtkFloatingPointType (color.green()) / 255.,
- vtkFloatingPointType (color.blue()) / 255.);
- anActor->SetBackSufaceColor(vtkFloatingPointType (backfacecolor.red()) / 255.,
- vtkFloatingPointType (backfacecolor.green()) / 255.,
- vtkFloatingPointType (backfacecolor.blue()) / 255.);
-
+ vtkFloatingPointType (color.blue()) / 255.,
+ delta);
/* edge color */
anActor->SetEdgeColor(vtkFloatingPointType (edgecolor.red()) / 255.,
vtkFloatingPointType (edgecolor.green()) / 255.,
vtkFloatingPointType (edgecolor.blue()) / 255.);
+ /* edge outline */
+ anActor->SetOutlineColor(vtkFloatingPointType (outlinecolor.red()) / 255.,
+ vtkFloatingPointType (outlinecolor.green()) / 255.,
+ vtkFloatingPointType (outlinecolor.blue()) / 255.);
+
+ /* selection */
+ anActor->SetHighlightColor(vtkFloatingPointType (selectioncolor.red()) / 255.,
+ vtkFloatingPointType (selectioncolor.green()) / 255.,
+ vtkFloatingPointType (selectioncolor.blue()) / 255.);
+ /* pre-selection */
+ anActor->SetPreHighlightColor(vtkFloatingPointType (preSelectioncolor.red()) / 255.,
+ vtkFloatingPointType (preSelectioncolor.green()) / 255.,
+ vtkFloatingPointType (preSelectioncolor.blue()) / 255.);
+
/* Shrink factor and size edges */
anActor->SetShrinkFactor(aDlg->GetIntValue(2) / 100.);
setPreferenceProperty( notifyMode, "indexes", indices );
int infoGroup = addPreference( tr( "PREF_GROUP_INFO" ), genTab );
- setPreferenceProperty( computeGroup, "columns", 2 );
+ setPreferenceProperty( computeGroup, "columns", 4 );
int elemInfo = addPreference( tr( "PREF_ELEM_INFO" ), infoGroup, LightApp_Preferences::Selector, "SMESH", "mesh_elem_info" );
modes.clear();
modes.append( tr( "PREF_ELEM_INFO_SIMPLE" ) );
indices.append( 1 );
setPreferenceProperty( elemInfo, "strings", modes );
setPreferenceProperty( elemInfo, "indexes", indices );
+ int nodesLim = addPreference( tr( "PREF_GPP_NODES_LIMIT" ), infoGroup, LightApp_Preferences::IntSpin, "SMESH", "info_groups_nodes_limit" );
+ setPreferenceProperty( nodesLim, "min", 0 );
+ setPreferenceProperty( nodesLim, "max", 10000000 );
+ setPreferenceProperty( nodesLim, "step", 10000 );
+ setPreferenceProperty( nodesLim, "special", tr( "PREF_UPDATE_LIMIT_NOLIMIT" ) );
int segGroup = addPreference( tr( "PREF_GROUP_SEGMENT_LENGTH" ), genTab );
setPreferenceProperty( segGroup, "columns", 2 );
int elemGroup = addPreference( tr( "PREF_GROUP_ELEMENTS" ), meshTab );
setPreferenceProperty( elemGroup, "columns", 2 );
- addPreference( tr( "PREF_FILL" ), elemGroup, LightApp_Preferences::Color, "SMESH", "fill_color" );
- addPreference( tr( "PREF_OUTLINE" ), elemGroup, LightApp_Preferences::Color, "SMESH", "outline_color" );
- addPreference( tr( "PREF_BACKFACE" ), elemGroup, LightApp_Preferences::Color, "SMESH", "backface_color" );
+ int ColorId = addPreference( tr( "PREF_FILL" ), elemGroup, LightApp_Preferences::BiColor, "SMESH", "fill_color" );
addPreference( tr( "PREF_COLOR_0D" ), elemGroup, LightApp_Preferences::Color, "SMESH", "elem0d_color" );
+
+ addPreference( tr( "PREF_OUTLINE" ), elemGroup, LightApp_Preferences::Color, "SMESH", "outline_color" );
+ addPreference( tr( "PREF_WIREFRAME" ), elemGroup, LightApp_Preferences::Color, "SMESH", "wireframe_color" );
+
+ setPreferenceProperty( ColorId, "text", tr("PREF_BACKFACE") );
int grpGroup = addPreference( tr( "PREF_GROUP_GROUPS" ), meshTab );
setPreferenceProperty( grpGroup, "columns", 2 );
addPreference( tr( "PREF_GRP_NAMES" ), grpGroup, LightApp_Preferences::Color, "SMESH", "group_name_color" );
- //int sp = addPreference( "", elemGroup, LightApp_Preferences::Space );
- //setPreferenceProperty( sp, "hstretch", 0 );
- //setPreferenceProperty( sp, "vstretch", 0 );
-
int size0d = addPreference(tr("PREF_SIZE_0D"), elemGroup,
LightApp_Preferences::IntSpin, "SMESH", "elem0d_size");
- int sp = addPreference( "", elemGroup, LightApp_Preferences::Space );
int elemW = addPreference(tr("PREF_WIDTH"), elemGroup,
LightApp_Preferences::IntSpin, "SMESH", "element_width");
int shrink = addPreference(tr("PREF_SHRINK_COEFF"), elemGroup,
setPreferenceProperty( size0d, "min", 1 );
setPreferenceProperty( size0d, "max", 10 );
- setPreferenceProperty( sp, "hstretch", 0 );
- setPreferenceProperty( sp, "vstretch", 0 );
-
setPreferenceProperty( elemW, "min", 1 );
setPreferenceProperty( elemW, "max", 5 );
// Colors (surface:edge:)
vtkFloatingPointType r, g, b;
-
- aSmeshActor->GetSufaceColor(r, g, b);
+ int delta;
+
+ aSmeshActor->GetSufaceColor(r, g, b, delta);
QString colorStr ("surface");
colorStr += gDigitsSep; colorStr += QString::number(r);
colorStr += gDigitsSep; colorStr += QString::number(g);
colorStr += gDigitsSep; colorStr += QString::number(b);
- aSmeshActor->GetBackSufaceColor(r, g, b);
- colorStr += gDigitsSep; colorStr += "backsurface";
- colorStr += gDigitsSep; colorStr += QString::number(r);
- colorStr += gDigitsSep; colorStr += QString::number(g);
- colorStr += gDigitsSep; colorStr += QString::number(b);
+ colorStr += gDigitsSep; colorStr += "backsurface";
+ colorStr += gDigitsSep; colorStr += QString::number(delta);
+
aSmeshActor->GetEdgeColor(r, g, b);
colorStr += gDigitsSep; colorStr += "edge";
colorStr += gDigitsSep; colorStr += QString::number(g);
colorStr += gDigitsSep; colorStr += QString::number(b);
+ aSmeshActor->GetOutlineColor(r, g, b);
+ colorStr += gDigitsSep; colorStr += "outline";
+ colorStr += gDigitsSep; colorStr += QString::number(r);
+ colorStr += gDigitsSep; colorStr += QString::number(g);
+ colorStr += gDigitsSep; colorStr += QString::number(b);
+
param = vtkParam + "Colors";
ip->setParameter(entry, param, colorStr.toLatin1().data());
// Colors
else if (paramNameStr == "Colors") {
QStringList colors = val.split(gDigitsSep, QString::SkipEmptyParts);
- if (colors.count() == 16) {
+ if (colors.count() == 16 || colors.count() == 18 ) {
if (colors[0] != "surface" || colors[4] != "backsurface" ||
- colors[8] != "edge" || colors[12] != "node") {
+ (colors[8] != "edge" && colors[6] != "edge" ) || (colors[12] != "node" && colors[10] != "node") ||
+ (colors.count() == 18 && colors[14] != "outline")) {
MESSAGE("Invalid order of data in Colors, must be: "
- "surface:r:g:b:backsurface:r:g:b:edge:r:g:b:node:r:g:b");
+ "surface:r:g:b:backsurface:r:g:b:edge:r:g:b:node:r:g:b or surface:r:g:b:backsurface:delta:edge:r:g:b:node:r:g:b:outline:r:g:b");
}
else {
- aSmeshActor->SetSufaceColor(colors[1].toFloat(), colors[2].toFloat(), colors[3].toFloat());
- aSmeshActor->SetBackSufaceColor(colors[5].toFloat(), colors[6].toFloat(), colors[7].toFloat());
- aSmeshActor->SetEdgeColor(colors[9].toFloat(), colors[10].toFloat(), colors[11].toFloat());
- aSmeshActor->SetNodeColor(colors[13].toFloat(), colors[14].toFloat(), colors[15].toFloat());
+ int delta = 0;
+ float er,eg,eb;
+ float nr,ng,nb;
+ vtkFloatingPointType otr,otg,otb;
+ //Old case backsurface color is independent
+ if( colors.count() == 16 ) {
+ QColor ffc;
+ SMESH::GetColor( "SMESH", "fill_color", ffc, delta, "0,170,255|-100" ) ;
+ er = colors[9].toFloat();
+ eg = colors[10].toFloat();
+ eb = colors[11].toFloat();
+
+ nr = colors[13].toFloat();
+ ng = colors[14].toFloat();
+ nb = colors[15].toFloat();
+ SMESH::GetColor("SMESH", "outline_color", otr, otg, otb, QColor( 0, 70, 0 ) );
+ } else {
+ //New case backsurface color depends on surface color
+ delta = colors[5].toInt();
+
+ er = colors[7].toFloat();
+ eg = colors[8].toFloat();
+ eb = colors[9].toFloat();
+
+ nr = colors[11].toFloat();
+ ng = colors[12].toFloat();
+ nb = colors[13].toFloat();
+
+ otr = colors[15].toFloat();
+ otg = colors[16].toFloat();
+ otb = colors[17].toFloat();
+ }
+ aSmeshActor->SetSufaceColor(colors[1].toFloat(), colors[2].toFloat(), colors[3].toFloat(), delta);
+ aSmeshActor->SetEdgeColor(er,eg,eb);
+ aSmeshActor->SetNodeColor(nr,ng,nb);
+ aSmeshActor->SetOutlineColor(otr,otg,otb);
}
}
}