#6118 Automatic red, green and blue curve colors for oil, gas and water properties when using area fill

* Also removed green, red and blue from the cycled well log colors to avoid clashes.
* Only automatic when area fill is on.
* Potential color clashes for the general case with multiple Oil-curves in the same plot.
This commit is contained in:
Gaute Lindkvist
2020-06-19 12:40:48 +02:00
parent 1d16b55fdc
commit 33fb733110
11 changed files with 156 additions and 8 deletions

View File

@@ -22,6 +22,8 @@
#include "RimSummaryCalculation.h"
#include "RimSummaryCalculationCollection.h"
#include <QRegularExpression>
namespace caf
{
template <>
@@ -153,3 +155,24 @@ void RimSummaryAddress::ensureIdIsAssigned()
}
}
}
//--------------------------------------------------------------------------------------------------
/// Return phase type if the current result is known to be of a particular
/// fluid phase type. Otherwise the method will return PHASE_NOT_APPLICABLE.
//--------------------------------------------------------------------------------------------------
RiaDefines::PhaseType RimSummaryAddress::addressPhaseType() const
{
if ( QRegularExpression( "^.OP" ).match( m_quantityName ).hasMatch() )
{
return RiaDefines::PhaseType::OIL_PHASE;
}
else if ( QRegularExpression( "^.GP" ).match( m_quantityName ).hasMatch() )
{
return RiaDefines::PhaseType::GAS_PHASE;
}
else if ( QRegularExpression( "^.WP" ).match( m_quantityName ).hasMatch() )
{
return RiaDefines::PhaseType::WATER_PHASE;
}
return RiaDefines::PhaseType::PHASE_NOT_APPLICABLE;
}

View File

@@ -49,6 +49,8 @@ public:
void ensureIdIsAssigned();
RiaDefines::PhaseType addressPhaseType() const;
private:
caf::PdmField<caf::AppEnum<RifEclipseSummaryAddress::SummaryVarCategory>> m_category;
caf::PdmField<QString> m_quantityName;

View File

@@ -18,6 +18,7 @@
#include "RimSummaryCurve.h"
#include "RiaColorTables.h"
#include "RiaCurveMerger.h"
#include "RiaDefines.h"
#include "RiaGuiApplication.h"
@@ -462,6 +463,7 @@ void RimSummaryCurve::updateZoomInParentPlot()
void RimSummaryCurve::onLoadDataAndUpdate( bool updateParentPlot )
{
this->RimPlotCurve::updateCurvePresentation( updateParentPlot );
checkAndApplyDefaultFillColor();
m_yValuesSummaryAddressUiField = m_yValuesSummaryAddress->address();
m_xValuesSummaryAddressUiField = m_xValuesSummaryAddress->address();
@@ -706,6 +708,46 @@ void RimSummaryCurve::appendOptionItemsForSummaryAddresses( QList<caf::PdmOption
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimSummaryCurve::isDefaultColor( const cvf::Color3f& color ) const
{
if ( RiaColorTables::summaryCurveDefaultPaletteColors().contains( color ) ) return true;
auto phaseColors = RiaColorTables::phaseColors();
for ( auto phaseColorPair : phaseColors )
{
if ( phaseColorPair.second == color ) return true;
}
return false;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryCurve::checkAndApplyDefaultFillColor()
{
if ( !m_fillColor().isValid() )
{
m_fillColor = m_curveColor;
}
if ( m_yValuesSummaryAddress && m_fillStyle != Qt::BrushStyle::NoBrush )
{
auto phaseColors = RiaColorTables::phaseColors();
auto it = phaseColors.find( m_yValuesSummaryAddress->addressPhaseType() );
cvf::Color3f phaseColor;
if ( it != phaseColors.end() )
{
phaseColor = it->second;
}
if ( isDefaultColor( m_curveColor() ) ) m_curveColor = phaseColor;
if ( isDefaultColor( m_fillColor() ) ) m_fillColor = phaseColor;
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -111,6 +111,8 @@ private:
caf::PdmUiEditorAttribute* attribute ) override;
static void appendOptionItemsForSummaryAddresses( QList<caf::PdmOptionItemInfo>* options, RimSummaryCase* summaryCase );
bool isDefaultColor( const cvf::Color3f& color ) const;
void checkAndApplyDefaultFillColor() override;
private:
// Y values