Contour Map: Add optional value filtering

* #12071 Contour Map: Add optional value filtering 
* Move management of min/max values to common base class
This commit is contained in:
Magne Sjaastad
2025-01-16 13:52:03 +01:00
committed by GitHub
parent 15428304be
commit d37bc104e4
12 changed files with 200 additions and 74 deletions

View File

@@ -114,11 +114,11 @@ void RimEclipseContourMapProjection::updateLegend()
{
RimEclipseCellColors* cellColors = view()->cellResult();
auto [minValAllTimeSteps, maxValAllTimeSteps] = minmaxValuesAllTimeSteps();
double minVal = m_contourMapProjection ? m_contourMapProjection->minValue() : std::numeric_limits<double>::infinity();
double maxVal = m_contourMapProjection ? m_contourMapProjection->maxValue() : -std::numeric_limits<double>::infinity();
auto [minValAllTimeSteps, maxValAllTimeSteps] = minmaxValuesAllTimeSteps();
legendConfig()->setAutomaticRanges( minValAllTimeSteps, maxValAllTimeSteps, minVal, maxVal );
if ( isColumnResult() )
@@ -361,19 +361,17 @@ void RimEclipseContourMapProjection::initAfterRead()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::pair<double, double> RimEclipseContourMapProjection::minmaxValuesAllTimeSteps()
std::pair<double, double> RimEclipseContourMapProjection::computeMinMaxValuesAllTimeSteps()
{
if ( !resultRangeIsValid() )
{
clearTimeStepRange();
double minimum = std::numeric_limits<double>::infinity();
double maximum = -std::numeric_limits<double>::infinity();
int timeStepCount = std::max( static_cast<int>( eclipseCase()->timeStepStrings().size() ), 1 );
for ( int i = 0; i < (int)timeStepCount; ++i )
{
std::vector<double> aggregatedResults = generateResults( i );
m_minResultAllTimeSteps = std::min( m_minResultAllTimeSteps, RigContourMapProjection::minValue( aggregatedResults ) );
m_maxResultAllTimeSteps = std::max( m_maxResultAllTimeSteps, RigContourMapProjection::maxValue( aggregatedResults ) );
}
int timeStepCount = std::max( static_cast<int>( eclipseCase()->timeStepStrings().size() ), 1 );
for ( int i = 0; i < (int)timeStepCount; ++i )
{
std::vector<double> aggregatedResults = generateResults( i );
minimum = std::min( minimum, RigContourMapProjection::minValue( aggregatedResults ) );
maximum = std::max( maximum, RigContourMapProjection::maxValue( aggregatedResults ) );
}
return std::make_pair( m_minResultAllTimeSteps, m_maxResultAllTimeSteps );
return std::make_pair( minimum, maximum );
}