diff --git a/ApplicationCode/ProjectDataModel/Flow/RimWellRftPlot.cpp b/ApplicationCode/ProjectDataModel/Flow/RimWellRftPlot.cpp index 18212697d1..1412c5d1de 100644 --- a/ApplicationCode/ProjectDataModel/Flow/RimWellRftPlot.cpp +++ b/ApplicationCode/ProjectDataModel/Flow/RimWellRftPlot.cpp @@ -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; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/Flow/RimWellRftPlot.h b/ApplicationCode/ProjectDataModel/Flow/RimWellRftPlot.h index 3866066d84..c0e453362e 100644 --- a/ApplicationCode/ProjectDataModel/Flow/RimWellRftPlot.h +++ b/ApplicationCode/ProjectDataModel/Flow/RimWellRftPlot.h @@ -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& allCurveDefs ); + cvf::Color3f findCurveColor( RimWellLogCurve* curve ); + void defineCurveColorsAndSymbols( const std::set& allCurveDefs ); void onDepthTypeChanged() override;