#12790 Replaces transparency with opacity settings

Simplifies color handling by replacing transparency settings with opacity for curve and fill colors.

This change provides a more intuitive user experience and ensures consistent behavior across the application.

- Renames "ColorTransparency" to "ColorOpacity" for RimCurveSetAppearance.
- Introduces "CurveColorOpacity" for RimPlotCurveAppearance.
- Updates blending calculations to correctly use opacity.
- Adjusts UI slider attributes for opacity settings, including minimum, maximum and decimals.
This commit is contained in:
Magne Sjaastad
2025-08-27 13:50:36 +02:00
parent 59f399ed54
commit 4d9a723e32
9 changed files with 145 additions and 82 deletions
@@ -79,8 +79,10 @@ RimCurveSetAppearance::RimCurveSetAppearance()
CAF_PDM_InitField( &m_colorForRealizations, "Color", RiaColorTools::textColor3f(), "Color" );
CAF_PDM_InitField( &m_mainEnsembleColor, "MainEnsembleColor", RiaColorTools::textColor3f(), "Color" );
CAF_PDM_InitField( &m_colorTransparency, "ColorTransparency", 0.3, "Transparency" );
m_colorTransparency.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() );
CAF_PDM_InitField( &m_colorOpacity, "ColorOpacity", 0.7, "Opacity" );
m_colorOpacity.registerKeywordAlias( "ColorTransparency" );
m_colorOpacity.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() );
CAF_PDM_InitField( &m_ensembleParameter, "EnsembleParameter", QString( "" ), "Parameter" );
m_ensembleParameter.uiCapability()->setUiEditorTypeName( caf::PdmUiTreeSelectionEditor::uiEditorTypeName() );
@@ -209,7 +211,7 @@ void RimCurveSetAppearance::updateEnsembleParameterLegend( RimRegularLegendConfi
//--------------------------------------------------------------------------------------------------
void RimCurveSetAppearance::fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue )
{
if ( changedField == &m_colorMode || changedField == &m_colorTransparency || changedField == &m_mainEnsembleColor )
if ( changedField == &m_colorMode || changedField == &m_colorOpacity || changedField == &m_mainEnsembleColor )
{
updateRealizationColor();
}
@@ -243,7 +245,7 @@ void RimCurveSetAppearance::updateRealizationColor()
auto sourceColor = RiaColorTools::toQColor( m_mainEnsembleColor );
auto sourceWeight = 100;
int backgroundWeight = std::max( 1, static_cast<int>( sourceWeight * 10 * m_colorTransparency ) );
int backgroundWeight = std::max( 1, static_cast<int>( sourceWeight * 5 * ( 1.0 - m_colorOpacity ) ) );
auto blendedColor = RiaColorTools::blendQColors( backgroundColor, sourceColor, backgroundWeight, sourceWeight );
m_colorForRealizations = RiaColorTools::fromQColorTo3f( blendedColor );
@@ -268,7 +270,7 @@ void RimCurveSetAppearance::defineUiOrdering( QString uiConfigName, caf::PdmUiOr
else if ( m_colorMode() == RimEnsembleCurveSetColorManager::ColorMode::SINGLE_COLOR_WITH_ALPHA )
{
uiOrdering.add( &m_mainEnsembleColor );
uiOrdering.add( &m_colorTransparency );
uiOrdering.add( &m_colorOpacity );
}
else if ( m_colorMode == ColorMode::BY_ENSEMBLE_PARAM )
{
@@ -338,3 +340,19 @@ QList<caf::PdmOptionItemInfo> RimCurveSetAppearance::calculateValueOptions( cons
return options;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimCurveSetAppearance::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute )
{
if ( field == &m_colorOpacity )
{
if ( auto* myAttr = dynamic_cast<caf::PdmUiDoubleSliderEditorAttribute*>( attribute ) )
{
myAttr->m_minimum = 0.001;
myAttr->m_maximum = 1.0;
myAttr->m_decimals = 2;
}
}
}
@@ -68,6 +68,7 @@ private:
void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override;
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override;
void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override;
void updateRealizationColor();
void updateEnsembleParameterLegend( RimRegularLegendConfig* legendConfig ) const;
@@ -76,7 +77,7 @@ private:
caf::PdmField<ColorModeEnum> m_colorMode;
caf::PdmField<cvf::Color3f> m_mainEnsembleColor;
caf::PdmField<cvf::Color3f> m_colorForRealizations;
caf::PdmField<double> m_colorTransparency;
caf::PdmField<double> m_colorOpacity;
caf::PdmField<QString> m_ensembleParameter;
caf::PdmField<caf::AppEnum<RimCurveAppearanceDefines::ParameterSorting>> m_ensembleParameterSorting;
@@ -477,6 +477,6 @@ void RimHistogramCurve::setAppearanceFromGraphType( RimHistogramPlot::GraphType
{
auto fillType = graphType == RimHistogramPlot::GraphType::BAR_GRAPH ? Qt::SolidPattern : Qt::NoBrush;
setFillStyle( fillType );
float transparency = graphType == RimHistogramPlot::GraphType::BAR_GRAPH ? 0.2 : 1.0;
setFillColorTransparency( transparency );
float opacity = graphType == RimHistogramPlot::GraphType::BAR_GRAPH ? 0.2 : 1.0;
setFillColorOpacity( opacity );
}
@@ -727,9 +727,17 @@ void RimPlotCurve::setFillColor( const cvf::Color3f& fillColor )
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimPlotCurve::setFillColorTransparency( float fillColorTransparency )
void RimPlotCurve::setFillColorOpacity( float opacity )
{
m_curveAppearance->setFillColorTransparency( fillColorTransparency );
m_curveAppearance->setFillColorOpacity( opacity );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimPlotCurve::setCurveColorOpacity( float opacity )
{
m_curveAppearance->setCurveColorOpacity( opacity );
}
//--------------------------------------------------------------------------------------------------
@@ -969,7 +977,7 @@ void RimPlotCurve::setZOrder( double z )
//--------------------------------------------------------------------------------------------------
void RimPlotCurve::updateCurveAppearance()
{
QColor curveColor = RiaColorTools::toQColor( m_curveAppearance->color() );
QColor curveColor = RiaColorTools::toQColor( m_curveAppearance->color(), m_curveAppearance->curveColorOpacity() );
if ( !m_plotCurve ) return;
@@ -1015,7 +1023,7 @@ void RimPlotCurve::updateCurveAppearance()
QColor fillColor = RiaColorTools::toQColor( m_curveAppearance->fillColor() );
fillColor = RiaColorTools::blendQColors( fillColor, QColor( Qt::white ), 3, 1 );
fillColor.setAlphaF( m_curveAppearance->fillColorTransparency() );
fillColor.setAlphaF( m_curveAppearance->fillColorOpacity() );
QBrush fillBrush( fillColor, fillStyle() );
m_plotCurve->setAppearance( m_curveAppearance->lineStyle(),
@@ -77,7 +77,8 @@ public:
virtual Qt::BrushStyle fillStyle() const;
void setFillStyle( Qt::BrushStyle brushStyle );
void setFillColor( const cvf::Color3f& fillColor );
void setFillColorTransparency( float fillColorTransparency );
void setFillColorOpacity( float opacity );
void setCurveColorOpacity( float opacity );
bool isChecked() const;
void setCheckState( bool isChecked );
@@ -88,9 +88,16 @@ RimPlotCurveAppearance::RimPlotCurveAppearance()
CAF_PDM_InitObject( "Curve Apperance" );
CAF_PDM_InitField( &m_curveColor, "Color", RiaColorTools::textColor3f(), "Color" );
CAF_PDM_InitField( &m_curveColorOpacity, "CurveColorOpacity", 1.0f, "Opacity" );
m_curveColorOpacity.registerKeywordAlias( "CurveColorTransparency" );
m_curveColorOpacity.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() );
CAF_PDM_InitField( &m_fillColor, "FillColor", cvf::Color3f( -1.0, -1.0, -1.0 ), "Fill Color" );
CAF_PDM_InitField( &m_fillColorTransparency, "FillColorTransparency", 1.0f, "Fill Color Transparency" );
m_fillColorTransparency.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() );
CAF_PDM_InitField( &m_fillColorOpacity, "FillColorOpacity", 1.0f, "Fill Color Opacity" );
m_fillColorOpacity.registerKeywordAlias( "FillColorTransparency" );
m_fillColorOpacity.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() );
CAF_PDM_InitField( &m_curveThickness, "Thickness", 1, "Line Thickness" );
m_curveThickness.uiCapability()->setUiEditorTypeName( caf::PdmUiComboBoxEditor::uiEditorTypeName() );
@@ -151,13 +158,13 @@ void RimPlotCurveAppearance::fieldChangedByUi( const caf::PdmFieldHandle* change
//--------------------------------------------------------------------------------------------------
void RimPlotCurveAppearance ::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute )
{
if ( field == &m_fillColorTransparency )
if ( field == &m_curveColorOpacity || field == &m_fillColorOpacity )
{
caf::PdmUiDoubleSliderEditorAttribute* myAttr = dynamic_cast<caf::PdmUiDoubleSliderEditorAttribute*>( attribute );
if ( myAttr )
if ( auto myAttr = dynamic_cast<caf::PdmUiDoubleSliderEditorAttribute*>( attribute ) )
{
myAttr->m_minimum = 0.0;
myAttr->m_maximum = 1.0;
myAttr->m_minimum = 0.0;
myAttr->m_maximum = 1.0;
myAttr->m_decimals = 2;
}
}
}
@@ -205,7 +212,9 @@ void RimPlotCurveAppearance::setColorWithFieldChanged( const QColor& color )
void RimPlotCurveAppearance::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering )
{
uiOrdering.add( &m_curveColor );
uiOrdering.add( &m_curveColorOpacity );
m_curveColor.uiCapability()->setUiHidden( !m_colorVisible );
m_curveColorOpacity.uiCapability()->setUiHidden( !m_colorVisible );
uiOrdering.add( &m_pointSymbol );
if ( RiuPlotCurveSymbol::isFilledSymbol( m_pointSymbol() ) )
@@ -229,10 +238,10 @@ void RimPlotCurveAppearance::defineUiOrdering( QString uiConfigName, caf::PdmUiO
if ( m_fillStyle != Qt::BrushStyle::NoBrush )
{
uiOrdering.add( &m_fillColor );
uiOrdering.add( &m_fillColorTransparency );
uiOrdering.add( &m_fillColorOpacity );
}
m_fillColor.uiCapability()->setUiHidden( !m_fillOptionsVisible );
m_fillColorTransparency.uiCapability()->setUiHidden( !m_fillOptionsVisible );
m_fillColorOpacity.uiCapability()->setUiHidden( !m_fillOptionsVisible );
uiOrdering.add( &m_curveInterpolation );
m_curveInterpolation.uiCapability()->setUiHidden( !m_interpolationVisible );
@@ -443,17 +452,17 @@ void RimPlotCurveAppearance::setFillColor( const cvf::Color3f& fillColor )
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimPlotCurveAppearance::setFillColorTransparency( float fillColorTransparency )
void RimPlotCurveAppearance::setFillColorOpacity( float opacity )
{
m_fillColorTransparency = fillColorTransparency;
m_fillColorOpacity = opacity;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
float RimPlotCurveAppearance::fillColorTransparency() const
float RimPlotCurveAppearance::fillColorOpacity() const
{
return m_fillColorTransparency;
return m_fillColorOpacity;
}
//--------------------------------------------------------------------------------------------------
@@ -503,3 +512,19 @@ void RimPlotCurveAppearance::setCurveFittingToleranceVisible( bool isVisible )
{
m_curveFittingToleranceVisible = isVisible;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimPlotCurveAppearance::setCurveColorOpacity( float opacity )
{
m_curveColorOpacity = opacity;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
float RimPlotCurveAppearance::curveColorOpacity() const
{
return m_curveColorOpacity;
}
@@ -86,8 +86,11 @@ public:
void setFillColor( const cvf::Color3f& fillColor );
cvf::Color3f fillColor() const;
void setFillColorTransparency( float fillColorTransparency );
float fillColorTransparency() const;
void setCurveColorOpacity( float opacity );
float curveColorOpacity() const;
void setFillColorOpacity( float opacity );
float fillColorOpacity() const;
float curveFittingTolerance() const;
@@ -114,6 +117,7 @@ protected:
caf::PdmField<int> m_symbolSize;
caf::PdmField<cvf::Color3f> m_curveColor;
caf::PdmField<float> m_curveColorOpacity;
caf::PdmField<int> m_curveThickness;
caf::PdmField<float> m_symbolSkipPixelDistance;
@@ -123,7 +127,7 @@ protected:
caf::PdmField<LineStyle> m_lineStyle;
caf::PdmField<FillStyle> m_fillStyle;
caf::PdmField<cvf::Color3f> m_fillColor;
caf::PdmField<float> m_fillColorTransparency;
caf::PdmField<float> m_fillColorOpacity;
caf::PdmField<CurveInterpolation> m_curveInterpolation;
caf::PdmField<LabelPosition> m_symbolLabelPosition;
caf::PdmField<cvf::Color3f> m_symbolEdgeColor;
@@ -77,6 +77,7 @@
#include "cafPdmUiTreeAttributes.h"
#include "cafPdmUiTreeOrdering.h"
#include "cafPdmUiTreeSelectionEditor.h"
#include "cafSelectionManager.h"
#include <algorithm>
#include <memory>
@@ -151,12 +152,11 @@ RimEnsembleCurveSet::RimEnsembleCurveSet()
m_xAddressSelector->setShowResampling( false );
m_xAddressSelector.uiCapability()->setUiTreeChildrenHidden( true );
CAF_PDM_InitField( &m_colorMode, "ColorMode", caf::AppEnum<ColorMode>( ColorMode::SINGLE_COLOR_WITH_ALPHA ), "Coloring Mode" );
CAF_PDM_InitField( &m_colorMode, "ColorMode", caf::AppEnum<ColorMode>( ColorMode::SINGLE_COLOR ), "Coloring Mode" );
CAF_PDM_InitField( &m_colorForRealizations, "Color", RiaColorTools::textColor3f(), "Color" );
CAF_PDM_InitField( &m_mainEnsembleColor, "MainEnsembleColor", RiaColorTools::textColor3f(), "Color" );
CAF_PDM_InitField( &m_colorTransparency, "ColorTransparency", 0.3, "Transparency" );
m_colorTransparency.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() );
CAF_PDM_InitField( &m_colorOpacity, "ColorTransparency", 0.8, "Opacity [0..1]" );
m_colorOpacity.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() );
CAF_PDM_InitField( &m_ensembleParameter, "EnsembleParameter", QString( "" ), "Parameter" );
m_ensembleParameter.uiCapability()->setUiEditorTypeName( caf::PdmUiTreeSelectionEditor::uiEditorTypeName() );
@@ -310,7 +310,7 @@ void RimEnsembleCurveSet::setColor( cvf::Color3f color )
{
m_mainEnsembleColor = color;
setTransparentCurveColor();
computeRealizationColor();
}
//--------------------------------------------------------------------------------------------------
@@ -925,9 +925,9 @@ void RimEnsembleCurveSet::fieldChangedByUi( const caf::PdmFieldHandle* changedFi
{
updateAllCurves();
}
else if ( changedField == &m_colorForRealizations || changedField == &m_mainEnsembleColor || changedField == &m_colorTransparency )
else if ( changedField == &m_mainEnsembleColor || changedField == &m_colorOpacity )
{
setTransparentCurveColor();
computeRealizationColor();
updateCurveColors();
@@ -984,7 +984,7 @@ void RimEnsembleCurveSet::fieldChangedByUi( const caf::PdmFieldHandle* changedFi
}
}
setTransparentCurveColor();
computeRealizationColor();
updateCurveColors();
updateTimeAnnotations();
updateObjectiveFunctionLegend();
@@ -1147,6 +1147,16 @@ void RimEnsembleCurveSet::fieldChangedByUi( const caf::PdmFieldHandle* changedFi
{
updateAllTextInPlot();
}
if ( plot )
{
if ( caf::SelectionManager::instance()->selectedItems().size() > 1 )
{
// Multiple selection, do a full update of the plot. When multiple objects are selected, only one of the objects receives
// fieldChangedByUi()
plot->loadDataAndUpdate();
}
}
}
//--------------------------------------------------------------------------------------------------
@@ -1253,8 +1263,9 @@ void RimEnsembleCurveSet::defineUiOrdering( QString uiConfigName, caf::PdmUiOrde
}
}
caf::PdmUiGroup* statGroup = uiOrdering.addNewGroup( "Statistics" );
bool showStatisticsColor = m_colorMode() == RimEnsembleCurveSetColorManager::ColorMode::SINGLE_COLOR;
caf::PdmUiGroup* statGroup = uiOrdering.addNewGroup( "Statistics" );
bool showStatisticsColor = m_statisticsUseCustomAppearance() == RimCurveAppearanceDefines::AppearanceMode::CUSTOM;
m_statistics->showColorField( showStatisticsColor );
m_statistics->defaultUiOrdering( isXAxisSummaryVector(), *statGroup );
@@ -1340,21 +1351,30 @@ void RimEnsembleCurveSet::onCustomObjectiveFunctionChanged( const caf::SignalEmi
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEnsembleCurveSet::setTransparentCurveColor()
void RimEnsembleCurveSet::computeRealizationColor()
{
if ( m_colorMode() == RimEnsembleCurveSet::ColorMode::SINGLE_COLOR_WITH_ALPHA )
if ( m_colorMode() == RimEnsembleCurveSet::ColorMode::SINGLE_COLOR )
{
auto backgroundColor = RiuGuiTheme::getColorByVariableName( "backgroundColor1" );
auto sourceColor = RiaColorTools::toQColor( m_mainEnsembleColor );
auto sourceWeight = 100;
int backgroundWeight = std::max( 1, static_cast<int>( sourceWeight * 10 * m_colorTransparency ) );
int backgroundWeight = 130;
auto blendedColor = RiaColorTools::blendQColors( backgroundColor, sourceColor, backgroundWeight, sourceWeight );
m_colorForRealizations = RiaColorTools::fromQColorTo3f( blendedColor );
setStatisticsColor( m_mainEnsembleColor );
if ( m_statisticsUseCustomAppearance() == RimCurveAppearanceDefines::AppearanceMode::DEFAULT )
{
setStatisticsColor( m_mainEnsembleColor );
}
updateStatisticsCurves();
}
else
{
m_colorForRealizations = m_mainEnsembleColor();
}
}
//--------------------------------------------------------------------------------------------------
@@ -1362,12 +1382,7 @@ void RimEnsembleCurveSet::setTransparentCurveColor()
//--------------------------------------------------------------------------------------------------
QColor RimEnsembleCurveSet::mainEnsembleColor() const
{
if ( m_colorMode() == RimEnsembleCurveSetColorManager::ColorMode::SINGLE_COLOR_WITH_ALPHA )
{
return RiaColorTools::toQColor( m_mainEnsembleColor );
}
return RiaColorTools::toQColor( m_colorForRealizations );
return RiaColorTools::toQColor( m_mainEnsembleColor );
}
//--------------------------------------------------------------------------------------------------
@@ -1375,27 +1390,14 @@ QColor RimEnsembleCurveSet::mainEnsembleColor() const
//--------------------------------------------------------------------------------------------------
void RimEnsembleCurveSet::onColorTagClicked( const SignalEmitter* emitter, size_t index )
{
caf::PdmField<cvf::Color3f>* colorToModify = nullptr;
if ( m_colorMode() == RimEnsembleCurveSetColorManager::ColorMode::SINGLE_COLOR )
{
colorToModify = &m_colorForRealizations;
}
else
{
colorToModify = &m_mainEnsembleColor;
}
QColor sourceColor = RiaColorTools::toQColor( m_mainEnsembleColor );
QColor newColor = caf::PdmUiColorEditor::getColor( sourceColor );
if ( colorToModify )
if ( newColor.isValid() && newColor != sourceColor )
{
QColor sourceColor = RiaColorTools::toQColor( *colorToModify );
QColor newColor = caf::PdmUiColorEditor::getColor( sourceColor );
auto myColor = RiaColorTools::fromQColorTo3f( newColor );
if ( newColor.isValid() && newColor != sourceColor )
{
auto myColor = RiaColorTools::fromQColorTo3f( newColor );
colorToModify->setValueWithFieldChanged( myColor );
}
m_mainEnsembleColor.setValueWithFieldChanged( myColor );
}
}
@@ -1415,15 +1417,11 @@ void RimEnsembleCurveSet::appendColorGroup( caf::PdmUiOrdering& uiOrdering )
caf::PdmUiGroup* colorsGroup = uiOrdering.addNewGroup( "Appearance" );
m_colorMode.uiCapability()->setUiReadOnly( !m_yValuesSummaryEnsemble() );
colorsGroup->add( &m_colorMode );
colorsGroup->add( &m_colorOpacity );
if ( m_colorMode() == RimEnsembleCurveSetColorManager::ColorMode::SINGLE_COLOR )
{
colorsGroup->add( &m_colorForRealizations );
}
else if ( m_colorMode() == RimEnsembleCurveSetColorManager::ColorMode::SINGLE_COLOR_WITH_ALPHA )
{
colorsGroup->add( &m_mainEnsembleColor );
colorsGroup->add( &m_colorTransparency );
}
else if ( m_colorMode == ColorMode::BY_ENSEMBLE_PARAM )
{
@@ -1539,7 +1537,7 @@ void RimEnsembleCurveSet::defineEditorAttribute( const caf::PdmFieldHandle* fiel
myAttr->m_showSpinBox = false;
}
}
if ( field == &m_colorTransparency )
if ( field == &m_colorOpacity )
{
if ( auto* myAttr = dynamic_cast<caf::PdmUiDoubleSliderEditorAttribute*>( attribute ) )
{
@@ -1580,14 +1578,12 @@ QList<caf::PdmOptionItemInfo> RimEnsembleCurveSet::calculateValueOptions( const
}
else if ( fieldNeedingOptions == &m_colorMode )
{
auto singleColorOption = ColorModeEnum( ColorMode::SINGLE_COLOR );
auto singleColorWithAlphaOption = ColorModeEnum( ColorMode::SINGLE_COLOR_WITH_ALPHA );
auto byEnsParamOption = ColorModeEnum( ColorMode::BY_ENSEMBLE_PARAM );
auto byObjFuncOption = ColorModeEnum( ColorMode::BY_OBJECTIVE_FUNCTION );
auto byCustomObjFuncOption = ColorModeEnum( ColorMode::BY_CUSTOM_OBJECTIVE_FUNCTION );
auto singleColorOption = ColorModeEnum( ColorMode::SINGLE_COLOR );
auto byEnsParamOption = ColorModeEnum( ColorMode::BY_ENSEMBLE_PARAM );
auto byObjFuncOption = ColorModeEnum( ColorMode::BY_OBJECTIVE_FUNCTION );
auto byCustomObjFuncOption = ColorModeEnum( ColorMode::BY_CUSTOM_OBJECTIVE_FUNCTION );
options.push_back( caf::PdmOptionItemInfo( singleColorOption.uiText(), ColorMode::SINGLE_COLOR ) );
options.push_back( caf::PdmOptionItemInfo( singleColorWithAlphaOption.uiText(), ColorMode::SINGLE_COLOR_WITH_ALPHA ) );
RimSummaryEnsemble* group = m_yValuesSummaryEnsemble();
if ( group && group->hasEnsembleParameters() )
@@ -2044,6 +2040,7 @@ void RimEnsembleCurveSet::updateCurveColors()
for ( size_t i = 0; i < curvesToColor.size(); i++ )
{
curvesToColor[i]->setColor( caseColors[i] );
curvesToColor[i]->setCurveColorOpacity( m_colorOpacity() );
curvesToColor[i]->updateCurveAppearance();
}
@@ -2117,6 +2114,8 @@ void RimEnsembleCurveSet::updatePlotAxis()
//--------------------------------------------------------------------------------------------------
void RimEnsembleCurveSet::updateEnsembleCurves( const std::vector<RimSummaryCase*>& sumCases )
{
computeRealizationColor();
auto plot = firstAncestorOrThisOfTypeAsserted<RimSummaryPlot>();
auto addressText = m_yValuesSummaryAddress()->address().toEclipseTextAddress();
@@ -2719,6 +2718,13 @@ void RimEnsembleCurveSet::initAfterRead()
m_yPlotAxisProperties = plot->axisPropertiesForPlotAxis( RiuPlotAxis( m_plotAxis_OBSOLETE() ) );
}
}
if ( m_colorMode == ColorMode::SINGLE_COLOR_WITH_ALPHA )
{
m_colorMode = ColorMode::SINGLE_COLOR;
}
computeRealizationColor();
}
//--------------------------------------------------------------------------------------------------
@@ -231,7 +231,7 @@ private:
void onObjectiveFunctionChanged( const caf::SignalEmitter* emitter );
void onCustomObjectiveFunctionChanged( const caf::SignalEmitter* emitter );
void setTransparentCurveColor();
void computeRealizationColor();
void onColorTagClicked( const SignalEmitter* emitter, size_t index );
void setSummaryAddressX( RifEclipseSummaryAddress address );
@@ -262,8 +262,8 @@ private:
caf::PdmField<ColorModeEnum> m_colorMode;
caf::PdmField<cvf::Color3f> m_mainEnsembleColor;
caf::PdmField<cvf::Color3f> m_colorForRealizations;
caf::PdmField<double> m_colorTransparency;
cvf::Color3f m_colorForRealizations;
caf::PdmField<double> m_colorOpacity;
caf::PdmField<QString> m_ensembleParameter;
caf::PdmField<caf::AppEnum<RimCurveAppearanceDefines::ParameterSorting>> m_ensembleParameterSorting;