0020948]: EDF 1468 SMESH: Histogram of the quality controls

Take into account the range of values of histogram
This commit is contained in:
eap 2010-11-22 17:49:43 +00:00
parent 938bc72f7a
commit 576f56ddf8
3 changed files with 16 additions and 5 deletions

View File

@ -2036,7 +2036,9 @@ void SMESH_ActorDef::UpdateDistribution()
std::vector<int> elemIds;
for ( SMESH_VisualObjDef::TEntityList::iterator e = elems.begin(); e != elems.end(); ++e)
elemIds.push_back( (*e)->GetID());
fun->GetHistogram(nbIntervals, nbEvents, funValues, elemIds);
vtkLookupTable* lookupTable = static_cast<vtkLookupTable*>(myScalarBarActor->GetLookupTable());
double * range = lookupTable->GetRange();
fun->GetHistogram(nbIntervals, nbEvents, funValues, elemIds, range);
myScalarBarActor->SetDistribution(nbEvents);
}
}

View File

@ -140,6 +140,7 @@
#include <vtkRenderer.h>
#include <vtkPlane.h>
#include <vtkCallbackCommand.h>
#include <vtkLookupTable.h>
// SALOME KERNEL includes
#include <SALOMEDS_Study.hxx>
@ -799,10 +800,13 @@
elements[i] = ids[i];
}
}
int nbRanges = aScalarBarActor->GetMaximumNumberOfColors();
int nbIntervals = aScalarBarActor->GetMaximumNumberOfColors();
vtkLookupTable* lookupTable =
static_cast<vtkLookupTable*>(aScalarBarActor->GetLookupTable());
double * minmax = lookupTable->GetRange();
std::vector<int> nbEvents;
std::vector<double> funValues;
aNumFun->GetHistogram( nbRanges, nbEvents, funValues, elements );
aNumFun->GetHistogram( nbIntervals, nbEvents, funValues, elements, minmax );
QString anInitialPath = "";
if ( SUIT_FileDlg::getLastVisitedPath().isEmpty() )
anInitialPath = QDir::currentPath();

View File

@ -509,8 +509,6 @@ bool SMESHGUI_Preferences_ScalarBarDlg::onApply()
myScalarBarActor->SetLabelTextProperty( aLabelsTextPrp );
myScalarBarActor->SetNumberOfLabels( myLabelsSpin->value() );
if( myColorsSpin->value() != myScalarBarActor->GetMaximumNumberOfColors() )
myActor->UpdateDistribution();
if ( myHorizRadioBtn->isChecked() )
myScalarBarActor->SetOrientationToHorizontal();
@ -540,9 +538,16 @@ bool SMESHGUI_Preferences_ScalarBarDlg::onApply()
double aMax = myMaxEdit->text().toDouble();
vtkLookupTable* myLookupTable =
static_cast<vtkLookupTable*>(myScalarBarActor->GetLookupTable());
double oldMinMax[2] = { myLookupTable->GetRange()[0], myLookupTable->GetRange()[1] };
bool rangeChanges = ( fabs( oldMinMax[0] - aMin ) + fabs( oldMinMax[1] - aMax ) >
0.001 * ( aMax-aMin + oldMinMax[1]-oldMinMax[0] ));
myLookupTable->SetRange( aMin, aMax );
myLookupTable->SetNumberOfTableValues(myColorsSpin->value());
myLookupTable->Build();
if( myColorsSpin->value() != myScalarBarActor->GetMaximumNumberOfColors() || rangeChanges)
myActor->UpdateDistribution();
SMESH::RepaintCurrentView();
return true;
}