Create cross plot menu from list of addresses in preferences

This commit is contained in:
Magne Sjaastad
2023-10-09 13:26:14 +02:00
parent ececc3ae47
commit 51fe80b897
15 changed files with 467 additions and 72 deletions

View File

@@ -22,6 +22,7 @@
#include "SummaryPlotCommands/RicNewSummaryEnsembleCurveSetFeature.h"
#include "SummaryPlotCommands/RicSummaryPlotFeatureImpl.h"
#include "RiaPreferencesSummary.h"
#include "RiaSummaryAddressAnalyzer.h"
#include "RiaSummaryTools.h"
@@ -29,7 +30,6 @@
#include "RifReaderEclipseSummary.h"
#include "RifSummaryReaderInterface.h"
#include "RiaPreferencesSummary.h"
#include "RimEnsembleCurveSet.h"
#include "RimEnsembleCurveSetCollection.h"
#include "RimMainPlotCollection.h"
@@ -40,6 +40,7 @@
#include "RimSummaryCase.h"
#include "RimSummaryCaseCollection.h"
#include "RimSummaryCurve.h"
#include "RimSummaryCurveAppearanceCalculator.h"
#include "RimSummaryMultiPlot.h"
#include "RimSummaryMultiPlotCollection.h"
#include "RimSummaryPlot.h"
@@ -619,6 +620,41 @@ RimSummaryPlot* RicSummaryPlotBuilder::createPlot( const std::set<RifEclipseSumm
return plot;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimSummaryPlot* RicSummaryPlotBuilder::createCrossPlot( const std::vector<RiaSummaryCurveAddress>& addresses,
const std::vector<RimSummaryCase*>& summaryCases,
const std::vector<RimSummaryCaseCollection*>& ensembles )
{
auto* summaryPlot = new RimSummaryPlot();
summaryPlot->enableAutoPlotTitle( true );
for ( const auto& addr : addresses )
{
for ( const auto ensemble : ensembles )
{
if ( !ensemble ) continue;
auto curveSet = addNewEnsembleCurve( summaryPlot, addr, ensemble );
curveSet->findOrAssignBottomAxisX( RiuPlotAxis::defaultBottomForSummaryVectors() );
}
for ( const auto summaryCase : summaryCases )
{
if ( !summaryCase ) continue;
addNewSummaryCurve( summaryPlot, addr, summaryCase );
}
}
summaryPlot->applyDefaultCurveAppearances();
summaryPlot->loadDataAndUpdate();
summaryPlot->zoomAll();
return summaryPlot;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -633,6 +669,7 @@ void RicSummaryPlotBuilder::appendCurvesToPlot( RimSummaryPlot*
{
auto curveSet = createCurveSet( ensemble, addr );
summaryPlot->ensembleCurveSetCollection()->addCurveSet( curveSet );
curveSet->setLeftOrRightAxisY( RiuPlotAxis::defaultLeft() );
}
for ( const auto summaryCase : summaryCases )
@@ -642,3 +679,64 @@ void RicSummaryPlotBuilder::appendCurvesToPlot( RimSummaryPlot*
}
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimEnsembleCurveSet* RicSummaryPlotBuilder::addNewEnsembleCurve( RimSummaryPlot* summaryPlot,
const RiaSummaryCurveAddress& curveAddress,
RimSummaryCaseCollection* ensemble )
{
auto* curveSet = new RimEnsembleCurveSet();
curveSet->setSummaryCaseCollection( ensemble );
curveSet->setCurveAddress( curveAddress );
cvf::Color3f curveColor =
RimSummaryCurveAppearanceCalculator::computeTintedCurveColorForAddress( curveSet->summaryAddressY(),
static_cast<int>(
summaryPlot->ensembleCurveSetCollection()->curveSetCount() ) );
auto adr = curveSet->summaryAddressY();
if ( adr.isHistoryVector() ) curveColor = RiaPreferencesSummary::current()->historyCurveContrastColor();
curveSet->setColor( curveColor );
summaryPlot->ensembleCurveSetCollection()->addCurveSet( curveSet );
curveSet->setLeftOrRightAxisY( RiuPlotAxis::defaultLeft() );
curveSet->setBottomOrTopAxisX( RiuPlotAxis::defaultBottomForSummaryVectors() );
summaryPlot->curvesChanged.send();
return curveSet;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimSummaryCurve* RicSummaryPlotBuilder::addNewSummaryCurve( RimSummaryPlot* summaryPlot,
const RiaSummaryCurveAddress& curveAddress,
RimSummaryCase* summaryCase )
{
auto curve = new RimSummaryCurve();
curve->setSummaryCaseY( summaryCase );
curve->setSummaryAddressY( curveAddress.summaryAddressY() );
curve->setSummaryCaseX( summaryCase );
curve->setSummaryAddressX( curveAddress.summaryAddressX() );
if ( curveAddress.summaryAddressX().category() != SummaryCategory::SUMMARY_TIME )
{
curve->setAxisTypeX( RiaDefines::HorizontalAxisType::SUMMARY_VECTOR );
}
summaryPlot->addCurveNoUpdate( curve );
if ( curveAddress.summaryAddressX().category() != SummaryCategory::SUMMARY_TIME )
{
summaryPlot->findOrAssignPlotAxisX( curve );
}
return curve;
}