Merge pull request #4898 from OPM/fix-update-ensemble

#4851 Ensemble RFT : Fix update of color of ensemble curves on project load
This commit is contained in:
Magne Sjaastad 2019-10-21 07:58:49 +02:00 committed by GitHub
commit 4920ccd667
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 68 additions and 34 deletions

View File

@ -137,47 +137,37 @@ RimWellRftPlot::~RimWellRftPlot()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimWellRftPlot::applyCurveAppearance( RimWellLogCurve* newCurve )
void RimWellRftPlot::applyCurveAppearance( RimWellLogCurve* curve )
{
RiaRftPltCurveDefinition newCurveDef = RimWellPlotTools::curveDefFromCurve( newCurve );
applyCurveColor( curve );
RiuQwtPlotCurve::LineStyleEnum currentLineStyle = RiuQwtPlotCurve::STYLE_SOLID;
cvf::Color3f currentColor;
if ( newCurveDef.address().sourceType() == RifDataSourceForRftPlt::SUMMARY_RFT )
{
RifDataSourceForRftPlt sourceAddress( RifDataSourceForRftPlt::ENSEMBLE_RFT, newCurveDef.address().ensemble() );
currentColor = m_dataSourceColors[sourceAddress];
if ( m_showStatisticsCurves )
{
if ( trackByIndex( 0 ) && trackByIndex( 0 )->viewer() )
{
cvf::Color3f backgroundColor = RiaColorTools::fromQColorTo3f(
trackByIndex( 0 )->viewer()->canvasBackground().color() );
currentColor = RiaColorTools::blendCvfColors( backgroundColor, currentColor, 2, 1 );
}
}
}
else
{
currentColor = m_dataSourceColors[newCurveDef.address()];
}
RiaRftPltCurveDefinition curveDef = RimWellPlotTools::curveDefFromCurve( curve );
RiuQwtPlotCurve::LineStyleEnum lineStyle = RiuQwtPlotCurve::STYLE_SOLID;
RiuQwtSymbol::PointSymbolEnum currentSymbol = RiuQwtSymbol::SYMBOL_NONE;
if ( newCurveDef.address().sourceType() != RifDataSourceForRftPlt::ENSEMBLE_RFT )
if ( curveDef.address().sourceType() != RifDataSourceForRftPlt::ENSEMBLE_RFT )
{
currentSymbol = m_timeStepSymbols[newCurveDef.timeStep()];
currentSymbol = m_timeStepSymbols[curveDef.timeStep()];
}
bool isObservedData = newCurveDef.address().sourceType() == RifDataSourceForRftPlt::OBSERVED ||
newCurveDef.address().sourceType() == RifDataSourceForRftPlt::OBSERVED_FMU_RFT;
bool isObservedData = curveDef.address().sourceType() == RifDataSourceForRftPlt::OBSERVED ||
curveDef.address().sourceType() == RifDataSourceForRftPlt::OBSERVED_FMU_RFT;
// Observed data
currentLineStyle = isObservedData ? RiuQwtPlotCurve::STYLE_NONE : RiuQwtPlotCurve::STYLE_SOLID;
lineStyle = isObservedData ? RiuQwtPlotCurve::STYLE_NONE : RiuQwtPlotCurve::STYLE_SOLID;
newCurve->setColor( currentColor );
newCurve->setSymbolEdgeColor( currentColor );
newCurve->setSymbol( currentSymbol );
newCurve->setLineStyle( currentLineStyle );
curve->setSymbol( currentSymbol );
curve->setLineStyle( lineStyle );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimWellRftPlot::applyCurveColor( RimWellLogCurve* curve )
{
cvf::Color3f color = findCurveColor( curve );
curve->setColor( color );
curve->setSymbolEdgeColor( color );
}
//--------------------------------------------------------------------------------------------------
@ -996,6 +986,18 @@ void RimWellRftPlot::onLoadDataAndUpdate()
updateMdiWindowVisibility();
updateFormationsOnPlot();
// Update of curve color must happen here when loading data from project file, as the curve color is blended by the
// background color. The background color is taken from the viewer.
RimWellLogTrack* const plotTrack = trackByIndex( 0 );
if ( plotTrack && plotTrack->viewer() )
{
for ( auto c : plotTrack->curvesVector() )
{
applyCurveColor( c );
}
}
if ( depthType() == RimWellLogPlot::MEASURED_DEPTH )
{
assignWellPathToExtractionCurves();
@ -1092,6 +1094,36 @@ RiuQwtSymbol::LabelPosition RimWellRftPlot::statisticsLabelPosFromAddress( const
return RiuQwtSymbol::LabelAboveSymbol;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
cvf::Color3f RimWellRftPlot::findCurveColor( RimWellLogCurve* curve )
{
RiaRftPltCurveDefinition curveDef = RimWellPlotTools::curveDefFromCurve( curve );
cvf::Color3f curveColor;
if ( curveDef.address().sourceType() == RifDataSourceForRftPlt::SUMMARY_RFT )
{
RifDataSourceForRftPlt sourceAddress( RifDataSourceForRftPlt::ENSEMBLE_RFT, curveDef.address().ensemble() );
curveColor = m_dataSourceColors[sourceAddress];
if ( m_showStatisticsCurves )
{
if ( trackByIndex( 0 ) && trackByIndex( 0 )->viewer() )
{
cvf::Color3f backgroundColor = RiaColorTools::fromQColorTo3f(
trackByIndex( 0 )->viewer()->canvasBackground().color() );
curveColor = RiaColorTools::blendCvfColors( backgroundColor, curveColor, 2, 1 );
}
}
}
else
{
curveColor = m_dataSourceColors[curveDef.address()];
}
return curveColor;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -120,7 +120,8 @@ private:
// RimViewWindow overrides
void applyCurveAppearance( RimWellLogCurve* newCurve );
void applyCurveAppearance( RimWellLogCurve* curve );
void applyCurveColor( RimWellLogCurve* curve );
void updateFormationsOnPlot() const;
QString associatedSimWellName() const;
@ -128,7 +129,8 @@ private:
static RiuQwtSymbol::PointSymbolEnum statisticsCurveSymbolFromAddress( const RifEclipseRftAddress& address );
static RiuQwtSymbol::LabelPosition statisticsLabelPosFromAddress( const RifEclipseRftAddress& address );
void defineCurveColorsAndSymbols( const std::set<RiaRftPltCurveDefinition>& allCurveDefs );
cvf::Color3f findCurveColor( RimWellLogCurve* curve );
void defineCurveColorsAndSymbols( const std::set<RiaRftPltCurveDefinition>& allCurveDefs );
void onDepthTypeChanged() override;