Temp work

This commit is contained in:
Gaute Lindkvist
2020-07-02 13:06:31 +02:00
parent f202f4b8a7
commit d861af44b6
23 changed files with 300 additions and 110 deletions

View File

@@ -598,11 +598,17 @@ caf::ColorTable RiaColorTables::createBrightnessBasedColorTable( cvf::Color3ub b
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
std::map<RiaDefines::PhaseType, cvf::Color3f> RiaColorTables::phaseColors() std::map<RiaDefines::PhaseType, caf::ColorTable> RiaColorTables::phaseColors()
{ {
return {{RiaDefines::PhaseType::WATER_PHASE, cvf::Color3f( cvf::Color3::DARK_BLUE )}, static std::vector<cvf::Color3ub> waterColors{cvf::Color3ub( cvf::Color3::DARK_BLUE ),
{RiaDefines::PhaseType::GAS_PHASE, cvf::Color3f( cvf::Color3::DARK_GREEN )}, cvf::Color3ub( cvf::Color3::SKY_BLUE )};
{RiaDefines::PhaseType::OIL_PHASE, cvf::Color3f( cvf::Color3::DARK_RED )}}; static std::vector<cvf::Color3ub> gasColors{cvf::Color3ub( cvf::Color3::DARK_GREEN ),
cvf::Color3ub( cvf::Color3::YELLOW_GREEN )};
static std::vector<cvf::Color3ub> oilColors{cvf::Color3ub( cvf::Color3::DARK_RED ), cvf::Color3ub( cvf::Color3::PINK )};
return {{RiaDefines::PhaseType::WATER_PHASE, caf::ColorTable( waterColors )},
{RiaDefines::PhaseType::GAS_PHASE, caf::ColorTable( gasColors )},
{RiaDefines::PhaseType::OIL_PHASE, caf::ColorTable( oilColors )}};
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@@ -74,7 +74,7 @@ public:
static caf::ColorTable createBrightnessBasedColorTable( cvf::Color3ub baseColor, int brightnessLevelCount ); static caf::ColorTable createBrightnessBasedColorTable( cvf::Color3ub baseColor, int brightnessLevelCount );
static std::map<RiaDefines::PhaseType, cvf::Color3f> phaseColors(); static std::map<RiaDefines::PhaseType, caf::ColorTable> phaseColors();
private: private:
static std::vector<cvf::Color3ub> categoryColors(); static std::vector<cvf::Color3ub> categoryColors();

View File

@@ -1594,6 +1594,31 @@ std::set<RimPlotAxisPropertiesInterface*> RimAnalysisPlot::allPlotAxes() const
return {m_valueAxisProperties}; return {m_valueAxisProperties};
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimAnalysisPlot::connectAxisSignals( RimPlotAxisProperties* axis )
{
axis->settingsChanged.connect( this, &RimAnalysisPlot::axisSettingsChanged );
axis->logarithmicChanged.connect( this, &RimAnalysisPlot::axisLogarithmicChanged );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimAnalysisPlot::axisSettingsChanged( const caf::SignalEmitter* emitter )
{
updateAxes();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimAnalysisPlot::axisLogarithmicChanged( const caf::SignalEmitter* emitter, bool isLogarithmic )
{
loadDataAndUpdate();
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@@ -160,6 +160,10 @@ private:
std::set<RimPlotAxisPropertiesInterface*> allPlotAxes() const; std::set<RimPlotAxisPropertiesInterface*> allPlotAxes() const;
void connectAxisSignals( RimPlotAxisProperties* axis );
void axisSettingsChanged( const caf::SignalEmitter* emitter );
void axisLogarithmicChanged( const caf::SignalEmitter* emitter, bool isLogarithmic );
void buildTestPlot( RiuGroupedBarChartBuilder& chartBuilder ); void buildTestPlot( RiuGroupedBarChartBuilder& chartBuilder );
private: private:

View File

@@ -74,6 +74,9 @@ RimGridCrossPlot::RimGridCrossPlot()
m_yAxisProperties->setNameAndAxis( "Y-Axis", QwtPlot::yLeft ); m_yAxisProperties->setNameAndAxis( "Y-Axis", QwtPlot::yLeft );
m_yAxisProperties->setEnableTitleTextSettings( false ); m_yAxisProperties->setEnableTitleTextSettings( false );
connectAxisSignals( m_xAxisProperties() );
connectAxisSignals( m_yAxisProperties() );
CAF_PDM_InitFieldNoDefault( &m_crossPlotDataSets, "CrossPlotCurve", "Cross Plot Data Set", "", "", "" ); CAF_PDM_InitFieldNoDefault( &m_crossPlotDataSets, "CrossPlotCurve", "Cross Plot Data Set", "", "", "" );
m_crossPlotDataSets.uiCapability()->setUiHidden( true ); m_crossPlotDataSets.uiCapability()->setUiHidden( true );
@@ -434,6 +437,31 @@ QString RimGridCrossPlot::generateInfoBoxText() const
return infoText.join( "\n" ); return infoText.join( "\n" );
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimGridCrossPlot::connectAxisSignals( RimPlotAxisProperties* axis )
{
axis->settingsChanged.connect( this, &RimGridCrossPlot::axisSettingsChanged );
axis->logarithmicChanged.connect( this, &RimGridCrossPlot::axisLogarithmicChanged );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimGridCrossPlot::axisSettingsChanged( const caf::SignalEmitter* emitter )
{
updateAxes();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimGridCrossPlot::axisLogarithmicChanged( const caf::SignalEmitter* emitter, bool isLogarithmic )
{
loadDataAndUpdate();
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@@ -144,6 +144,10 @@ private:
void doRemoveFromCollection() override; void doRemoveFromCollection() override;
QString generateInfoBoxText() const; QString generateInfoBoxText() const;
void connectAxisSignals( RimPlotAxisProperties* axis );
void axisSettingsChanged( const caf::SignalEmitter* emitter );
void axisLogarithmicChanged( const caf::SignalEmitter* emitter, bool isLogarithmic );
private slots: private slots:
void onPlotZoomed(); void onPlotZoomed();

View File

@@ -169,7 +169,6 @@ void RimSaturationPressurePlot::assignCaseAndEquilibriumRegion( RiaDefines::Poro
} }
RimPlotAxisProperties* yAxisProps = yAxisProperties(); RimPlotAxisProperties* yAxisProps = yAxisProperties();
yAxisProps->setInvertedAxis( true ); yAxisProps->setInvertedAxis( true );
{ {

View File

@@ -56,7 +56,11 @@ CAF_PDM_SOURCE_INIT(RimPlotAxisProperties, "SummaryYAxisProperties");
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RimPlotAxisProperties::RimPlotAxisProperties() RimPlotAxisProperties::RimPlotAxisProperties()
: m_enableTitleTextSettings(true) : settingsChanged(this)
, logarithmicChanged(this)
, stackingChanged(this)
, stackingColorsChanged(this)
, m_enableTitleTextSettings(true)
, m_isRangeSettingsEnabled(true) , m_isRangeSettingsEnabled(true)
{ {
CAF_PDM_InitObject("Axis Properties", ":/LeftAxis16x16.png", "", ""); CAF_PDM_InitObject("Axis Properties", ":/LeftAxis16x16.png", "", "");
@@ -88,6 +92,7 @@ RimPlotAxisProperties::RimPlotAxisProperties()
CAF_PDM_InitField(&isLogarithmicScaleEnabled, "LogarithmicScale", false, "Logarithmic Scale", "", "", ""); CAF_PDM_InitField(&isLogarithmicScaleEnabled, "LogarithmicScale", false, "Logarithmic Scale", "", "", "");
CAF_PDM_InitField(&m_isAxisInverted, "AxisInverted", false, "Invert Axis", "", "", ""); CAF_PDM_InitField(&m_isAxisInverted, "AxisInverted", false, "Invert Axis", "", "", "");
CAF_PDM_InitField(&m_stackCurves, "StackCurves", false, "Stack Curves", "", "", ""); CAF_PDM_InitField(&m_stackCurves, "StackCurves", false, "Stack Curves", "", "", "");
CAF_PDM_InitField(&m_stackWithPhaseColors, "StackPhaseColors", false, " with Phase Colors", "", "", "");
CAF_PDM_InitFieldNoDefault(&m_titlePositionEnum, "TitlePosition", "Title Position", "", "", ""); CAF_PDM_InitFieldNoDefault(&m_titlePositionEnum, "TitlePosition", "Title Position", "", "", "");
@@ -189,6 +194,10 @@ void RimPlotAxisProperties::defineUiOrdering( QString uiConfigName, caf::PdmUiOr
scaleGroup.add( &m_isAxisInverted ); scaleGroup.add( &m_isAxisInverted );
} }
scaleGroup.add( &m_stackCurves ); scaleGroup.add( &m_stackCurves );
if ( m_stackCurves )
{
scaleGroup.add( &m_stackWithPhaseColors );
}
scaleGroup.add( &numberFormat ); scaleGroup.add( &numberFormat );
if ( numberFormat() != NUMBER_FORMAT_AUTO ) if ( numberFormat() != NUMBER_FORMAT_AUTO )
@@ -357,6 +366,14 @@ bool RimPlotAxisProperties::stackCurves() const
return m_stackCurves(); return m_stackCurves();
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimPlotAxisProperties::stackWithPhaseColors() const
{
return m_stackWithPhaseColors;
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -405,18 +422,21 @@ void RimPlotAxisProperties::fieldChangedByUi( const caf::PdmFieldHandle* changed
m_isAutoZoom = false; m_isAutoZoom = false;
} }
RimPlot* parentPlot = nullptr; if ( changedField == &isLogarithmicScaleEnabled )
this->firstAncestorOrThisOfType( parentPlot );
if ( parentPlot )
{ {
if ( changedField == &isLogarithmicScaleEnabled || changedField == &m_stackCurves ) logarithmicChanged.send( isLogarithmicScaleEnabled() );
{ }
parentPlot->loadDataAndUpdate(); else if ( changedField == &m_stackCurves )
} {
else stackingChanged.send( m_stackCurves() );
{ }
parentPlot->updateAxes(); else if ( changedField == &m_stackWithPhaseColors )
} {
stackingColorsChanged.send( m_stackWithPhaseColors() );
}
else
{
settingsChanged.send();
} }
} }

View File

@@ -50,6 +50,12 @@ public:
NUMBER_FORMAT_SCIENTIFIC NUMBER_FORMAT_SCIENTIFIC
}; };
public:
caf::Signal<> settingsChanged;
caf::Signal<bool> logarithmicChanged;
caf::Signal<bool> stackingChanged;
caf::Signal<bool> stackingColorsChanged;
public: public:
RimPlotAxisProperties(); RimPlotAxisProperties();
@@ -73,6 +79,7 @@ public:
bool isAxisInverted() const; bool isAxisInverted() const;
void setAxisInverted( bool inverted ); void setAxisInverted( bool inverted );
bool stackCurves() const; bool stackCurves() const;
bool stackWithPhaseColors() const;
std::vector<RimPlotAxisAnnotation*> annotations() const; std::vector<RimPlotAxisAnnotation*> annotations() const;
void appendAnnotation( RimPlotAxisAnnotation* annotation ); void appendAnnotation( RimPlotAxisAnnotation* annotation );
@@ -116,6 +123,7 @@ private:
caf::PdmField<bool> m_isAutoZoom; caf::PdmField<bool> m_isAutoZoom;
caf::PdmField<bool> m_isAxisInverted; caf::PdmField<bool> m_isAxisInverted;
caf::PdmField<bool> m_stackCurves; caf::PdmField<bool> m_stackCurves;
caf::PdmField<bool> m_stackWithPhaseColors;
caf::PdmField<QString> m_name; caf::PdmField<QString> m_name;
QwtPlot::Axis m_axis; QwtPlot::Axis m_axis;

View File

@@ -18,6 +18,7 @@
#include "RimPlotCurve.h" #include "RimPlotCurve.h"
#include "RiaColorTables.h"
#include "RiaColorTools.h" #include "RiaColorTools.h"
#include "RiaCurveDataTools.h" #include "RiaCurveDataTools.h"
#include "RiaGuiApplication.h" #include "RiaGuiApplication.h"
@@ -676,6 +677,31 @@ void RimPlotCurve::updateUiIconFromPlotSymbol()
} }
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RiaDefines::PhaseType RimPlotCurve::phaseType() const
{
return RiaDefines::PhaseType::PHASE_NOT_APPLICABLE;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimPlotCurve::assignStackColor( size_t index, size_t count )
{
auto allPhaseColors = RiaColorTables::phaseColors();
auto it = allPhaseColors.find( phaseType() );
if ( it != allPhaseColors.end() )
{
caf::ColorTable interpolatedPhaseColors = it->second.interpolated( count );
auto color = interpolatedPhaseColors.cycledColor3f( index );
this->setColor( color );
this->setFillColor( color );
}
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -1013,6 +1039,14 @@ void RimPlotCurve::setFillStyle( Qt::BrushStyle brushStyle )
m_fillStyle = brushStyle; m_fillStyle = brushStyle;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimPlotCurve::setFillColor( const cvf::Color3f& fillColor )
{
m_fillColor = fillColor;
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@@ -20,6 +20,7 @@
#include "RifEclipseSummaryAddress.h" #include "RifEclipseSummaryAddress.h"
#include "RiaCurveDataTools.h" #include "RiaCurveDataTools.h"
#include "RiaDefines.h"
#include "RiuQwtPlotCurve.h" #include "RiuQwtPlotCurve.h"
#include "RiuQwtSymbol.h" #include "RiuQwtSymbol.h"
@@ -88,6 +89,7 @@ public:
void resetAppearance(); void resetAppearance();
Qt::BrushStyle fillStyle() const; Qt::BrushStyle fillStyle() const;
void setFillStyle( Qt::BrushStyle brushStyle ); void setFillStyle( Qt::BrushStyle brushStyle );
void setFillColor( const cvf::Color3f& fillColor );
bool isCurveVisible() const; bool isCurveVisible() const;
void setCurveVisibility( bool visible ); void setCurveVisibility( bool visible );
@@ -117,6 +119,9 @@ public:
bool isCrossPlotCurve() const; bool isCrossPlotCurve() const;
void updateUiIconFromPlotSymbol(); void updateUiIconFromPlotSymbol();
virtual RiaDefines::PhaseType phaseType() const;
void assignStackColor( size_t index, size_t count );
protected: protected:
virtual QString createCurveAutoName() = 0; virtual QString createCurveAutoName() = 0;
virtual void updateZoomInParentPlot() = 0; virtual void updateZoomInParentPlot() = 0;
@@ -155,9 +160,9 @@ protected:
void curveNameUiOrdering( caf::PdmUiOrdering& uiOrdering ); void curveNameUiOrdering( caf::PdmUiOrdering& uiOrdering );
private: private:
bool canCurveBeAttached() const; bool canCurveBeAttached() const;
void attachCurveAndErrorBars(); void attachCurveAndErrorBars();
virtual void checkAndApplyDefaultFillColor(); void checkAndApplyDefaultFillColor();
protected: protected:
QPointer<QwtPlot> m_parentQwtPlot; QPointer<QwtPlot> m_parentQwtPlot;

View File

@@ -211,6 +211,21 @@ void RimWellLogCurve::setOverrideCurveData( const std::vector<double>&
} }
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RiaDefines::PhaseType RimWellLogCurve::resultPhase() const
{
return RiaDefines::PhaseType::PHASE_NOT_APPLICABLE;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimWellLogCurve::assignStackColor( size_t index, size_t count )
{
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@@ -80,6 +80,9 @@ public:
const std::vector<double>& depthValues, const std::vector<double>& depthValues,
const RiaCurveDataTools::CurveIntervals& curveIntervals ); const RiaCurveDataTools::CurveIntervals& curveIntervals );
virtual RiaDefines::PhaseType resultPhase() const;
virtual void assignStackColor( size_t index, size_t count );
protected: protected:
void updateZoomInParentPlot() override; void updateZoomInParentPlot() override;
void updateLegendsInPlot() override; void updateLegendsInPlot() override;

View File

@@ -359,7 +359,6 @@ void RimWellLogExtractionCurve::onLoadDataAndUpdate( bool updateParentPlot )
m_qwtPlotCurve->setLineSegmentStartStopIndices( curveData()->polylineStartStopIndices() ); m_qwtPlotCurve->setLineSegmentStartStopIndices( curveData()->polylineStartStopIndices() );
this->RimPlotCurve::updateCurvePresentation( updateParentPlot ); this->RimPlotCurve::updateCurvePresentation( updateParentPlot );
checkAndApplyDefaultFillColor();
if ( isUsingPseudoLength ) if ( isUsingPseudoLength )
{ {
@@ -592,6 +591,20 @@ void RimWellLogExtractionCurve::setAutoNameComponents( bool addCaseName,
m_addDateToCurveName = addDate; m_addDateToCurveName = addDate;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RiaDefines::PhaseType RimWellLogExtractionCurve::phaseType() const
{
auto phase = RiaDefines::PhaseType::PHASE_NOT_APPLICABLE;
if ( m_eclipseResultDefinition )
{
phase = m_eclipseResultDefinition->resultPhaseType();
}
return phase;
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -629,47 +642,6 @@ void RimWellLogExtractionCurve::clearGeneratedSimWellPaths()
m_wellPathsWithExtractors.clear(); m_wellPathsWithExtractors.clear();
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimWellLogExtractionCurve::isDefaultColor( const cvf::Color3f& color ) const
{
if ( RiaColorTables::wellLogPlotPaletteColors().contains( color ) ) return true;
auto phaseColors = RiaColorTables::phaseColors();
for ( auto phaseColorPair : phaseColors )
{
if ( phaseColorPair.second == color ) return true;
}
return false;
}
//--------------------------------------------------------------------------------------------------
/// Certain data types can have a predefined color. Apply this if the curve currently has
/// a default cycled color.
//--------------------------------------------------------------------------------------------------
void RimWellLogExtractionCurve::checkAndApplyDefaultFillColor()
{
if ( !m_fillColor().isValid() )
{
m_fillColor = m_curveColor;
}
if ( m_eclipseResultDefinition && m_fillStyle != Qt::BrushStyle::NoBrush )
{
auto phaseColors = RiaColorTables::phaseColors();
auto it = phaseColors.find( m_eclipseResultDefinition->resultPhaseType() );
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

@@ -91,6 +91,7 @@ public:
RigGeoMechWellLogExtractor* geomExtractor ); RigGeoMechWellLogExtractor* geomExtractor );
void setAutoNameComponents( bool addCaseName, bool addProperty, bool addWellname, bool addTimeStep, bool addDate ); void setAutoNameComponents( bool addCaseName, bool addProperty, bool addWellname, bool addTimeStep, bool addDate );
RiaDefines::PhaseType phaseType() const override;
protected: protected:
QString createCurveAutoName() override; QString createCurveAutoName() override;
@@ -112,8 +113,6 @@ protected:
void clampBranchIndex(); void clampBranchIndex();
std::set<QString> sortedSimWellNames(); std::set<QString> sortedSimWellNames();
void clearGeneratedSimWellPaths(); void clearGeneratedSimWellPaths();
bool isDefaultColor( const cvf::Color3f& color ) const;
void checkAndApplyDefaultFillColor() override;
caf::PdmPtrField<RimCase*> m_case; caf::PdmPtrField<RimCase*> m_case;
caf::PdmField<caf::AppEnum<TrajectoryType>> m_trajectoryType; caf::PdmField<caf::AppEnum<TrajectoryType>> m_trajectoryType;

View File

@@ -188,6 +188,7 @@ RimWellLogTrack::RimWellLogTrack()
m_visibleDepthRangeMax.xmlCapability()->disableIO(); m_visibleDepthRangeMax.xmlCapability()->disableIO();
CAF_PDM_InitField( &m_stackCurves, "StackCurves", false, "Stack Curves", "", "", "" ); CAF_PDM_InitField( &m_stackCurves, "StackCurves", false, "Stack Curves", "", "", "" );
CAF_PDM_InitField( &m_stackWithPhaseColors, "StackWithPhaseColors", false, " with phase colors", "", "", "" );
CAF_PDM_InitField( &m_isAutoScaleXEnabled, "AutoScaleX", true, "Auto Scale", "", "", "" ); CAF_PDM_InitField( &m_isAutoScaleXEnabled, "AutoScaleX", true, "Auto Scale", "", "", "" );
m_isAutoScaleXEnabled.uiCapability()->setUiHidden( true ); m_isAutoScaleXEnabled.uiCapability()->setUiHidden( true );
@@ -719,7 +720,7 @@ void RimWellLogTrack::fieldChangedByUi( const caf::PdmFieldHandle* changedField,
updateParentLayout(); updateParentLayout();
RiuPlotMainWindowTools::refreshToolbars(); RiuPlotMainWindowTools::refreshToolbars();
} }
else if ( changedField == &m_stackCurves ) else if ( changedField == &m_stackCurves || changedField == &m_stackWithPhaseColors )
{ {
updateStackedCurveData(); updateStackedCurveData();
@@ -2161,6 +2162,10 @@ void RimWellLogTrack::uiOrderingForXAxisSettings( caf::PdmUiOrdering& uiOrdering
gridGroup->add( &m_visibleXRangeMax ); gridGroup->add( &m_visibleXRangeMax );
gridGroup->add( &m_xAxisGridVisibility ); gridGroup->add( &m_xAxisGridVisibility );
gridGroup->add( &m_stackCurves ); gridGroup->add( &m_stackCurves );
if ( m_stackCurves )
{
gridGroup->add( &m_stackWithPhaseColors );
}
// TODO Revisit if these settings are required // TODO Revisit if these settings are required
// See issue https://github.com/OPM/ResInsight/issues/4367 // See issue https://github.com/OPM/ResInsight/issues/4367
@@ -2352,10 +2357,13 @@ void RimWellLogTrack::updateStackedCurveData()
reverseOrder = true; reverseOrder = true;
} }
std::map<RiaDefines::PhaseType, size_t> curvePhaseCount;
// Reset all curves // Reset all curves
for ( auto curve : visibleCurves() ) for ( auto curve : visibleCurves() )
{ {
curve->loadDataAndUpdate( false ); curve->loadDataAndUpdate( false );
curvePhaseCount[curve->phaseType()]++;
} }
// Stack the curves that are meant to be stacked // Stack the curves that are meant to be stacked
@@ -2402,6 +2410,7 @@ void RimWellLogTrack::updateStackedCurveData()
} }
if ( allDepthValues.empty() ) continue; if ( allDepthValues.empty() ) continue;
size_t stackIndex = 0u;
std::vector<double> allStackedValues( allDepthValues.size(), 0.0 ); std::vector<double> allStackedValues( allDepthValues.size(), 0.0 );
for ( auto curve : stackedCurvesInGroup ) for ( auto curve : stackedCurvesInGroup )
{ {
@@ -2428,6 +2437,10 @@ void RimWellLogTrack::updateStackedCurveData()
curve->setOverrideCurveData( allStackedValues, plotDepthValues, polyLineStartStopIndices ); curve->setOverrideCurveData( allStackedValues, plotDepthValues, polyLineStartStopIndices );
curve->setZOrder( zPos ); curve->setZOrder( zPos );
if ( m_stackWithPhaseColors() )
{
curve->assignStackColor( stackIndex, curvePhaseCount[curve->phaseType()] );
}
zPos -= 1.0; zPos -= 1.0;
} }
} }

View File

@@ -312,6 +312,7 @@ private:
caf::PdmField<double> m_visibleDepthRangeMax; caf::PdmField<double> m_visibleDepthRangeMax;
caf::PdmField<bool> m_stackCurves; caf::PdmField<bool> m_stackCurves;
caf::PdmField<bool> m_stackWithPhaseColors;
caf::PdmField<bool> m_isAutoScaleXEnabled; caf::PdmField<bool> m_isAutoScaleXEnabled;
caf::PdmField<bool> m_isLogarithmicScaleEnabled; caf::PdmField<bool> m_isLogarithmicScaleEnabled;
caf::PdmField<RimWellLogPlot::AxisGridEnum> m_xAxisGridVisibility; caf::PdmField<RimWellLogPlot::AxisGridEnum> m_xAxisGridVisibility;

View File

@@ -511,7 +511,6 @@ void RimSummaryCurve::updateZoomInParentPlot()
void RimSummaryCurve::onLoadDataAndUpdate( bool updateParentPlot ) void RimSummaryCurve::onLoadDataAndUpdate( bool updateParentPlot )
{ {
this->RimPlotCurve::updateCurvePresentation( updateParentPlot ); this->RimPlotCurve::updateCurvePresentation( updateParentPlot );
checkAndApplyDefaultFillColor();
m_yValuesSummaryAddressUiField = m_yValuesSummaryAddress->address(); m_yValuesSummaryAddressUiField = m_yValuesSummaryAddress->address();
m_xValuesSummaryAddressUiField = m_xValuesSummaryAddress->address(); m_xValuesSummaryAddressUiField = m_xValuesSummaryAddress->address();
@@ -756,46 +755,6 @@ 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;
}
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -834,6 +793,14 @@ void RimSummaryCurve::setZIndexFromCurveInfo()
setZOrder( zOrder ); setZOrder( zOrder );
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RiaDefines::PhaseType RimSummaryCurve::phaseType() const
{
return m_yValuesSummaryAddress->addressPhaseType();
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@@ -86,6 +86,8 @@ public:
void setAsTopZWithinCategory( bool enable ); void setAsTopZWithinCategory( bool enable );
void setZIndexFromCurveInfo(); void setZIndexFromCurveInfo();
RiaDefines::PhaseType phaseType() const override;
protected: protected:
// RimPlotCurve overrides // RimPlotCurve overrides
QString createCurveAutoName() override; QString createCurveAutoName() override;
@@ -113,8 +115,6 @@ private:
caf::PdmUiEditorAttribute* attribute ) override; caf::PdmUiEditorAttribute* attribute ) override;
static void appendOptionItemsForSummaryAddresses( QList<caf::PdmOptionItemInfo>* options, RimSummaryCase* summaryCase ); static void appendOptionItemsForSummaryAddresses( QList<caf::PdmOptionItemInfo>* options, RimSummaryCase* summaryCase );
bool isDefaultColor( const cvf::Color3f& color ) const;
void checkAndApplyDefaultFillColor() override;
private: private:
// Y values // Y values

View File

@@ -190,6 +190,10 @@ RimSummaryPlot::RimSummaryPlot()
m_bottomAxisProperties = new RimPlotAxisProperties; m_bottomAxisProperties = new RimPlotAxisProperties;
m_bottomAxisProperties->setNameAndAxis( "Bottom X-Axis", QwtPlot::xBottom ); m_bottomAxisProperties->setNameAndAxis( "Bottom X-Axis", QwtPlot::xBottom );
connectAxisSignals( m_leftYAxisProperties() );
connectAxisSignals( m_rightYAxisProperties() );
connectAxisSignals( m_bottomAxisProperties() );
CAF_PDM_InitFieldNoDefault( &m_timeAxisProperties, "TimeAxisProperties", "Time Axis", "", "", "" ); CAF_PDM_InitFieldNoDefault( &m_timeAxisProperties, "TimeAxisProperties", "Time Axis", "", "", "" );
m_timeAxisProperties.uiCapability()->setUiTreeHidden( true ); m_timeAxisProperties.uiCapability()->setUiTreeHidden( true );
m_timeAxisProperties = new RimSummaryTimeAxisProperties; m_timeAxisProperties = new RimSummaryTimeAxisProperties;
@@ -1356,6 +1360,10 @@ void RimSummaryPlot::updateStackedCurveData()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimSummaryPlot::updateStackedCurveDataForAxis( RiaDefines::PlotAxis plotAxis ) void RimSummaryPlot::updateStackedCurveDataForAxis( RiaDefines::PlotAxis plotAxis )
{ {
RimPlotAxisProperties* axisProperties = yAxisPropertiesLeftOrRight( plotAxis );
std::map<RiaDefines::PhaseType, size_t> curvePhaseCount;
// Reset all curves // Reset all curves
for ( RimSummaryCurve* curve : visibleSummaryCurvesForAxis( plotAxis ) ) for ( RimSummaryCurve* curve : visibleSummaryCurvesForAxis( plotAxis ) )
{ {
@@ -1366,9 +1374,10 @@ void RimSummaryPlot::updateStackedCurveDataForAxis( RiaDefines::PlotAxis plotAxi
} }
curve->loadDataAndUpdate( false ); curve->loadDataAndUpdate( false );
curvePhaseCount[curve->phaseType()]++;
} }
RimPlotAxisProperties* axisProperties = yAxisPropertiesLeftOrRight( plotAxis );
if ( axisProperties->stackCurves() ) if ( axisProperties->stackCurves() )
{ {
// Z-position of curve, to draw them in correct order // Z-position of curve, to draw them in correct order
@@ -1383,6 +1392,8 @@ void RimSummaryPlot::updateStackedCurveDataForAxis( RiaDefines::PlotAxis plotAxi
allTimeSteps.erase( std::unique( allTimeSteps.begin(), allTimeSteps.end() ), allTimeSteps.end() ); allTimeSteps.erase( std::unique( allTimeSteps.begin(), allTimeSteps.end() ), allTimeSteps.end() );
std::vector<double> allStackedValues( allTimeSteps.size(), 0.0 ); std::vector<double> allStackedValues( allTimeSteps.size(), 0.0 );
size_t stackIndex = 0u;
for ( RimSummaryCurve* curve : visibleSummaryCurvesForAxis( plotAxis ) ) for ( RimSummaryCurve* curve : visibleSummaryCurvesForAxis( plotAxis ) )
{ {
for ( size_t i = 0; i < allTimeSteps.size(); ++i ) for ( size_t i = 0; i < allTimeSteps.size(); ++i )
@@ -1396,6 +1407,10 @@ void RimSummaryPlot::updateStackedCurveDataForAxis( RiaDefines::PlotAxis plotAxi
curve->setOverrideCurveDataY( allTimeSteps, allStackedValues ); curve->setOverrideCurveDataY( allTimeSteps, allStackedValues );
curve->setZOrder( zPos ); curve->setZOrder( zPos );
if ( axisProperties->stackWithPhaseColors() )
{
curve->assignStackColor( stackIndex, curvePhaseCount[curve->phaseType()] );
}
zPos -= 1.0; zPos -= 1.0;
} }
} }
@@ -1620,6 +1635,57 @@ void RimSummaryPlot::curveAppearanceChanged( const caf::SignalEmitter* emitter )
} }
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryPlot::connectAxisSignals( RimPlotAxisProperties* axis )
{
axis->settingsChanged.connect( this, &RimSummaryPlot::axisSettingsChanged );
axis->logarithmicChanged.connect( this, &RimSummaryPlot::axisLogarithmicChanged );
axis->stackingChanged.connect( this, &RimSummaryPlot::axisStackingChanged );
axis->stackingColorsChanged.connect( this, &RimSummaryPlot::axisStackingColorsChanged );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryPlot::axisSettingsChanged( const caf::SignalEmitter* emitter )
{
updateAxes();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryPlot::axisLogarithmicChanged( const caf::SignalEmitter* emitter, bool isLogarithmic )
{
loadDataAndUpdate();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryPlot::axisStackingChanged( const caf::SignalEmitter* emitter, bool stackCurves )
{
auto axisProps = dynamic_cast<const RimPlotAxisProperties*>( emitter );
if ( axisProps )
{
updateStackedCurveDataForAxis( axisProps->plotAxisType() );
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryPlot::axisStackingColorsChanged( const caf::SignalEmitter* emitter, bool stackWithPhaseColors )
{
auto axisProps = dynamic_cast<const RimPlotAxisProperties*>( emitter );
if ( axisProps )
{
updateStackedCurveDataForAxis( axisProps->plotAxisType() );
}
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@@ -233,6 +233,12 @@ private:
void curveVisibilityChanged( const caf::SignalEmitter* emitter, bool visible ); void curveVisibilityChanged( const caf::SignalEmitter* emitter, bool visible );
void curveAppearanceChanged( const caf::SignalEmitter* emitter ); void curveAppearanceChanged( const caf::SignalEmitter* emitter );
void connectAxisSignals( RimPlotAxisProperties* axis );
void axisSettingsChanged( const caf::SignalEmitter* emitter );
void axisLogarithmicChanged( const caf::SignalEmitter* emitter, bool isLogarithmic );
void axisStackingChanged( const caf::SignalEmitter* emitter, bool stackCurves );
void axisStackingColorsChanged( const caf::SignalEmitter* emitter, bool stackWithPhaseColors );
private: private:
caf::PdmField<bool> m_normalizeCurveYValues; caf::PdmField<bool> m_normalizeCurveYValues;

View File

@@ -160,7 +160,11 @@ cvf::Color3ub ColorTable::fromQColor( const QColor& color )
cvf::Color3ubArray ColorTable::interpolateColorArray( const cvf::Color3ubArray& colorArray, size_t targetColorCount ) cvf::Color3ubArray ColorTable::interpolateColorArray( const cvf::Color3ubArray& colorArray, size_t targetColorCount )
{ {
size_t inputColorCount = colorArray.size(); size_t inputColorCount = colorArray.size();
CVF_ASSERT( inputColorCount > 1 ); CVF_ASSERT( inputColorCount > 1 );
if ( targetColorCount <= inputColorCount ) return colorArray;
CVF_ASSERT( targetColorCount > 1 ); CVF_ASSERT( targetColorCount > 1 );
cvf::Color3ubArray colors; cvf::Color3ubArray colors;
@@ -199,4 +203,13 @@ cvf::Color3ubArray ColorTable::interpolateColorArray( const cvf::Color3ubArray&
return colors; return colors;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
ColorTable ColorTable::interpolated( size_t targetColorCount )
{
auto colorArray = interpolateColorArray( color3ubArray(), targetColorCount );
return ColorTable( colorArray );
}
} // namespace caf } // namespace caf

View File

@@ -73,6 +73,8 @@ public:
static cvf::Color3ub fromQColor( const QColor& color ); static cvf::Color3ub fromQColor( const QColor& color );
static cvf::Color3ubArray interpolateColorArray( const cvf::Color3ubArray& colorArray, size_t targetColorCount ); static cvf::Color3ubArray interpolateColorArray( const cvf::Color3ubArray& colorArray, size_t targetColorCount );
ColorTable interpolated( size_t targetColorCount );
private: private:
const std::vector<cvf::Color3ub> m_colors; const std::vector<cvf::Color3ub> m_colors;
}; };