mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
parent
43a1f4dbbe
commit
23bfb46c4c
@ -87,7 +87,7 @@ ${CEE_CURRENT_LIST_DIR}RimGridSummaryCase.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimFileSummaryCase.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryCaseCollection.h
|
||||
${CEE_CURRENT_LIST_DIR}RimPlotCurve.h
|
||||
${CEE_CURRENT_LIST_DIR}RimCurveAppearanceCalculator.h
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryCurveAppearanceCalculator.h
|
||||
${CEE_CURRENT_LIST_DIR}RimEclipseInputCaseOpm.h
|
||||
)
|
||||
|
||||
@ -174,7 +174,7 @@ ${CEE_CURRENT_LIST_DIR}RimGridSummaryCase.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimFileSummaryCase.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryCaseCollection.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimPlotCurve.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimCurveAppearanceCalculator.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryCurveAppearanceCalculator.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimEclipseInputCaseOpm.cpp
|
||||
)
|
||||
|
||||
|
@ -16,16 +16,31 @@
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "RimCurveAppearanceCalculator.h"
|
||||
#include "RimSummaryCurveAppearanceCalculator.h"
|
||||
#include "RimSummaryCurve.h"
|
||||
#include "cvfVector3.h"
|
||||
|
||||
#include <cmath>
|
||||
|
||||
namespace caf
|
||||
{
|
||||
template<>
|
||||
void caf::AppEnum< RimSummaryCurveAppearanceCalculator::CurveAppearanceType >::setUp()
|
||||
{
|
||||
addItem(RimSummaryCurveAppearanceCalculator::NONE, "NONE", "None");
|
||||
addItem(RimSummaryCurveAppearanceCalculator::COLOR, "COLOR", "Color");
|
||||
addItem(RimSummaryCurveAppearanceCalculator::SYMBOL, "SYMBOL", "Symbols");
|
||||
addItem(RimSummaryCurveAppearanceCalculator::LINE_STYLE, "LINE_STYLE", "Line Style");
|
||||
addItem(RimSummaryCurveAppearanceCalculator::GRADIENT, "GRADIENT", "Gradient");
|
||||
addItem(RimSummaryCurveAppearanceCalculator::LINE_THICKNESS, "LINE_THICKNESS", "Line Thickness");
|
||||
|
||||
setDefault(RimSummaryCurveAppearanceCalculator::NONE);
|
||||
}
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimCurveLookCalculator::RimCurveLookCalculator(const std::set<std::pair<RimSummaryCase*, RifEclipseSummaryAddress> >& curveDefinitions)
|
||||
RimSummaryCurveAppearanceCalculator::RimSummaryCurveAppearanceCalculator(const std::set<std::pair<RimSummaryCase*, RifEclipseSummaryAddress> >& curveDefinitions)
|
||||
{
|
||||
for(const std::pair<RimSummaryCase*, RifEclipseSummaryAddress>& curveDef : curveDefinitions)
|
||||
{
|
||||
@ -43,13 +58,26 @@ RimCurveLookCalculator::RimCurveLookCalculator(const std::set<std::pair<RimSumma
|
||||
m_regionCount = m_regToAppearanceIdxMap .size();
|
||||
|
||||
// Select the appearance type for each data "dimension"
|
||||
|
||||
m_caseAppearanceType = SYMBOL;
|
||||
m_varAppearanceType = COLOR;
|
||||
m_wellAppearanceType = LINE_STYLE;
|
||||
m_caseAppearanceType = NONE;
|
||||
m_varAppearanceType = NONE;
|
||||
m_wellAppearanceType = NONE;
|
||||
m_groupAppearanceType = NONE;
|
||||
m_regionAppearanceType = NONE;
|
||||
|
||||
std::set<RimSummaryCurveAppearanceCalculator::CurveAppearanceType> unusedAppearTypes;
|
||||
unusedAppearTypes.insert(COLOR);
|
||||
unusedAppearTypes.insert(GRADIENT);
|
||||
unusedAppearTypes.insert(LINE_STYLE);
|
||||
unusedAppearTypes.insert(SYMBOL);
|
||||
unusedAppearTypes.insert(LINE_THICKNESS);
|
||||
|
||||
m_dimensionCount = 0;
|
||||
if(m_variableCount > 1) { m_varAppearanceType = *(unusedAppearTypes.begin()); unusedAppearTypes.erase(unusedAppearTypes.begin()); m_dimensionCount++; }
|
||||
if(m_caseCount > 1) { m_caseAppearanceType = *(unusedAppearTypes.begin()); unusedAppearTypes.erase(unusedAppearTypes.begin()); m_dimensionCount++; }
|
||||
if(m_wellCount > 1) { m_wellAppearanceType = *(unusedAppearTypes.begin()); unusedAppearTypes.erase(unusedAppearTypes.begin()); m_dimensionCount++; }
|
||||
if(m_groupCount > 1) { m_groupAppearanceType = *(unusedAppearTypes.begin()); unusedAppearTypes.erase(unusedAppearTypes.begin()); m_dimensionCount++; }
|
||||
if(m_regionCount > 1) { m_regionAppearanceType = *(unusedAppearTypes.begin()); unusedAppearTypes.erase(unusedAppearTypes.begin()); m_dimensionCount++; }
|
||||
|
||||
// Assign increasing indexes
|
||||
{ int idx = 0; for(auto& pair : m_caseToAppearanceIdxMap) pair.second = idx++; }
|
||||
{ int idx = 0; for(auto& pair : m_varToAppearanceIdxMap) pair.second = idx++; }
|
||||
@ -61,23 +89,46 @@ RimCurveLookCalculator::RimCurveLookCalculator(const std::set<std::pair<RimSumma
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimCurveLookCalculator::assignDimensions( CurveAppearanceType caseAppearance,
|
||||
void RimSummaryCurveAppearanceCalculator::assignDimensions( CurveAppearanceType caseAppearance,
|
||||
CurveAppearanceType variAppearance,
|
||||
CurveAppearanceType wellAppearance,
|
||||
CurveAppearanceType gropAppearance,
|
||||
CurveAppearanceType regiAppearance)
|
||||
{
|
||||
m_dimensionCount = 0;
|
||||
m_caseAppearanceType = caseAppearance;
|
||||
m_varAppearanceType = variAppearance;
|
||||
m_wellAppearanceType = wellAppearance;
|
||||
m_groupAppearanceType = gropAppearance;
|
||||
m_regionAppearanceType = regiAppearance;
|
||||
|
||||
if(m_caseAppearanceType != NONE) ++m_dimensionCount;
|
||||
if(m_varAppearanceType != NONE) ++m_dimensionCount;
|
||||
if(m_wellAppearanceType != NONE) ++m_dimensionCount;
|
||||
if(m_groupAppearanceType != NONE) ++m_dimensionCount;
|
||||
if(m_regionAppearanceType != NONE) ++m_dimensionCount;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimCurveLookCalculator::setupCurveLook(RimSummaryCurve* curve)
|
||||
void RimSummaryCurveAppearanceCalculator::getDimensions(CurveAppearanceType* caseAppearance,
|
||||
CurveAppearanceType* variAppearance,
|
||||
CurveAppearanceType* wellAppearance,
|
||||
CurveAppearanceType* gropAppearance,
|
||||
CurveAppearanceType* regiAppearance) const
|
||||
{
|
||||
*caseAppearance = m_caseAppearanceType ;
|
||||
*variAppearance = m_varAppearanceType ;
|
||||
*wellAppearance = m_wellAppearanceType ;
|
||||
*gropAppearance = m_groupAppearanceType ;
|
||||
*regiAppearance = m_regionAppearanceType;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCurveAppearanceCalculator::setupCurveLook(RimSummaryCurve* curve)
|
||||
{
|
||||
m_currentCurveBaseColor = cvf::Color3f(0, 0, 0);
|
||||
m_currentCurveGradient = 0.0f;
|
||||
@ -100,7 +151,7 @@ void RimCurveLookCalculator::setupCurveLook(RimSummaryCurve* curve)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimCurveLookCalculator::setOneCurveAppearance(CurveAppearanceType appeaType, size_t totalCount, int appeaIdx, RimSummaryCurve* curve)
|
||||
void RimSummaryCurveAppearanceCalculator::setOneCurveAppearance(CurveAppearanceType appeaType, size_t totalCount, int appeaIdx, RimSummaryCurve* curve)
|
||||
{
|
||||
switch(appeaType)
|
||||
{
|
||||
@ -127,7 +178,7 @@ void RimCurveLookCalculator::setOneCurveAppearance(CurveAppearanceType appeaType
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
cvf::Color3f RimCurveLookCalculator::cycledPaletteColor(int colorIndex)
|
||||
cvf::Color3f RimSummaryCurveAppearanceCalculator::cycledPaletteColor(int colorIndex)
|
||||
{
|
||||
static const int RI_LOGPLOT_CURVECOLORSCOUNT = 11;
|
||||
static const cvf::ubyte RI_LOGPLOT_CURVECOLORS[][3] =
|
||||
@ -155,7 +206,7 @@ cvf::Color3f RimCurveLookCalculator::cycledPaletteColor(int colorIndex)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimPlotCurve::LineStyleEnum RimCurveLookCalculator::cycledLineStyle(int index)
|
||||
RimPlotCurve::LineStyleEnum RimSummaryCurveAppearanceCalculator::cycledLineStyle(int index)
|
||||
{
|
||||
return caf::AppEnum<RimPlotCurve::LineStyleEnum>::fromIndex(1 + (index % (caf::AppEnum<RimPlotCurve::LineStyleEnum>::size() - 1)));
|
||||
}
|
||||
@ -163,7 +214,7 @@ RimPlotCurve::LineStyleEnum RimCurveLookCalculator::cycledLineStyle(int index)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimPlotCurve::PointSymbolEnum RimCurveLookCalculator::cycledSymbol(int index)
|
||||
RimPlotCurve::PointSymbolEnum RimSummaryCurveAppearanceCalculator::cycledSymbol(int index)
|
||||
{
|
||||
return caf::AppEnum<RimPlotCurve::PointSymbolEnum>::fromIndex(1 + (index % (caf::AppEnum<RimPlotCurve::PointSymbolEnum>::size() - 1)));
|
||||
}
|
||||
@ -171,10 +222,10 @@ RimPlotCurve::PointSymbolEnum RimCurveLookCalculator::cycledSymbol(int index)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
int RimCurveLookCalculator::cycledLineThickness(int index)
|
||||
int RimSummaryCurveAppearanceCalculator::cycledLineThickness(int index)
|
||||
{
|
||||
static const int thicknessCount = 3;
|
||||
static const int thicknesses[] ={ 1, 2, 4 };
|
||||
static const int thicknesses[] ={ 1, 3, 5 };
|
||||
|
||||
return (thicknesses[(index) % 3]);
|
||||
}
|
||||
@ -182,12 +233,12 @@ int RimCurveLookCalculator::cycledLineThickness(int index)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
float RimCurveLookCalculator::gradient(size_t totalCount, int index)
|
||||
float RimSummaryCurveAppearanceCalculator::gradient(size_t totalCount, int index)
|
||||
{
|
||||
if(totalCount == 1) return 0.0f;
|
||||
|
||||
const float darkLimit = -1.0f;
|
||||
const float lightLimit = 0.9f;
|
||||
const float darkLimit = -0.45f;
|
||||
const float lightLimit = 0.7f;
|
||||
float totalSpan = lightLimit - darkLimit;
|
||||
float step = totalSpan / (totalCount -1);
|
||||
return darkLimit + (index * step);
|
||||
@ -197,7 +248,7 @@ float RimCurveLookCalculator::gradient(size_t totalCount, int index)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
cvf::Color3f RimCurveLookCalculator::gradeColor(const cvf::Color3f& color, float factor)
|
||||
cvf::Color3f RimSummaryCurveAppearanceCalculator::gradeColor(const cvf::Color3f& color, float factor)
|
||||
{
|
||||
CVF_ASSERT(-1.0 <= factor && factor <= 1.0);
|
||||
|
@ -25,17 +25,17 @@
|
||||
class RimSummaryCurve;
|
||||
class RimSummaryCase;
|
||||
|
||||
class RimCurveLookCalculator
|
||||
class RimSummaryCurveAppearanceCalculator
|
||||
{
|
||||
public:
|
||||
RimCurveLookCalculator(const std::set<std::pair<RimSummaryCase*, RifEclipseSummaryAddress> >& curveDefinitions);
|
||||
RimSummaryCurveAppearanceCalculator(const std::set<std::pair<RimSummaryCase*, RifEclipseSummaryAddress> >& curveDefinitions);
|
||||
enum CurveAppearanceType
|
||||
{
|
||||
NONE,
|
||||
COLOR,
|
||||
GRADIENT,
|
||||
LINE_STYLE,
|
||||
SYMBOL,
|
||||
LINE_STYLE,
|
||||
GRADIENT,
|
||||
LINE_THICKNESS
|
||||
};
|
||||
|
||||
@ -44,6 +44,11 @@ public:
|
||||
CurveAppearanceType wellAppearance,
|
||||
CurveAppearanceType gropAppearance,
|
||||
CurveAppearanceType regiAppearance);
|
||||
void getDimensions(CurveAppearanceType* caseAppearance,
|
||||
CurveAppearanceType* variAppearance,
|
||||
CurveAppearanceType* wellAppearance,
|
||||
CurveAppearanceType* gropAppearance,
|
||||
CurveAppearanceType* regiAppearance) const;
|
||||
|
||||
void setupCurveLook(RimSummaryCurve* curve);
|
||||
|
||||
@ -68,6 +73,7 @@ private:
|
||||
size_t m_wellCount;
|
||||
size_t m_groupCount;
|
||||
size_t m_regionCount;
|
||||
int m_dimensionCount;
|
||||
|
||||
CurveAppearanceType m_caseAppearanceType;
|
||||
CurveAppearanceType m_varAppearanceType;
|
@ -41,7 +41,7 @@
|
||||
#include "cafPdmUiListEditor.h"
|
||||
#include "cafPdmUiPushButtonEditor.h"
|
||||
#include "cafPdmUiTreeOrdering.h"
|
||||
#include "RimCurveAppearanceCalculator.h"
|
||||
#include "RimSummaryCurveAppearanceCalculator.h"
|
||||
|
||||
|
||||
QTextStream& operator << (QTextStream& str, const std::vector<RifEclipseSummaryAddress>& sobj)
|
||||
@ -102,6 +102,16 @@ RimSummaryCurveFilter::RimSummaryCurveFilter()
|
||||
m_applyButtonField = false;
|
||||
m_applyButtonField.uiCapability()->setUiEditorTypeName(caf::PdmUiPushButtonEditor::uiEditorTypeName());
|
||||
m_applyButtonField.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
||||
|
||||
|
||||
CAF_PDM_InitField(&m_useAutoAppearanceAssignment, "UseAutoAppearanceAssignment", true, "Auto", "", "", "" );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_caseAppearanceType, "CaseAppearanceType", "Case", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&m_variableAppearanceType, "VariableAppearanceType", "Vector", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&m_wellAppearanceType, "WellAppearanceType", "Well", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&m_groupAppearanceType, "GroupAppearanceType", "Group", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&m_regionAppearanceType, "RegionAppearanceType", "Region", "", "", "");
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -185,6 +195,24 @@ void RimSummaryCurveFilter::defineUiOrdering(QString uiConfigName, caf::PdmUiOrd
|
||||
m_summaryFilter->defineUiOrdering(uiConfigName, *curveVarSelectionGroup);
|
||||
|
||||
curveVarSelectionGroup->add(&m_uiFilterResultMultiSelection);
|
||||
|
||||
caf::PdmUiGroup* appearanceGroup = uiOrdering.addNewGroup("Appearance settings");
|
||||
appearanceGroup->add(&m_useAutoAppearanceAssignment);
|
||||
appearanceGroup->add(&m_caseAppearanceType);
|
||||
appearanceGroup->add(&m_variableAppearanceType);
|
||||
appearanceGroup->add(&m_wellAppearanceType);
|
||||
appearanceGroup->add(&m_groupAppearanceType);
|
||||
appearanceGroup->add(&m_regionAppearanceType);
|
||||
|
||||
// Set sensitivity
|
||||
{
|
||||
m_caseAppearanceType.uiCapability()->setUiReadOnly(m_useAutoAppearanceAssignment);
|
||||
m_variableAppearanceType.uiCapability()->setUiReadOnly(m_useAutoAppearanceAssignment);
|
||||
m_wellAppearanceType.uiCapability()->setUiReadOnly(m_useAutoAppearanceAssignment);
|
||||
m_groupAppearanceType.uiCapability()->setUiReadOnly(m_useAutoAppearanceAssignment);
|
||||
m_regionAppearanceType.uiCapability()->setUiReadOnly(m_useAutoAppearanceAssignment);
|
||||
}
|
||||
|
||||
uiOrdering.add(&m_applyButtonField);
|
||||
uiOrdering.setForgetRemainingFields(true);
|
||||
}
|
||||
@ -392,7 +420,36 @@ void RimSummaryCurveFilter::createCurvesFromCurveDefinitions(const std::set<std:
|
||||
|
||||
RimSummaryCase* prevCase = nullptr;
|
||||
RimPlotCurve::LineStyleEnum lineStyle = RimPlotCurve::STYLE_SOLID;
|
||||
RimCurveLookCalculator curveLookCalc(curveDefinitions);
|
||||
RimSummaryCurveAppearanceCalculator curveLookCalc(curveDefinitions);
|
||||
|
||||
if (!m_useAutoAppearanceAssignment())
|
||||
{
|
||||
curveLookCalc.assignDimensions( m_caseAppearanceType(),
|
||||
m_variableAppearanceType(),
|
||||
m_wellAppearanceType(),
|
||||
m_groupAppearanceType(),
|
||||
m_regionAppearanceType());
|
||||
}
|
||||
else
|
||||
{
|
||||
RimSummaryCurveAppearanceCalculator::CurveAppearanceType caseAppearance;
|
||||
RimSummaryCurveAppearanceCalculator::CurveAppearanceType variAppearance;
|
||||
RimSummaryCurveAppearanceCalculator::CurveAppearanceType wellAppearance;
|
||||
RimSummaryCurveAppearanceCalculator::CurveAppearanceType gropAppearance;
|
||||
RimSummaryCurveAppearanceCalculator::CurveAppearanceType regiAppearance;
|
||||
|
||||
curveLookCalc.getDimensions(&caseAppearance,
|
||||
&variAppearance,
|
||||
&wellAppearance,
|
||||
&gropAppearance,
|
||||
®iAppearance);
|
||||
|
||||
m_caseAppearanceType = caseAppearance;
|
||||
m_variableAppearanceType = variAppearance;
|
||||
m_wellAppearanceType = wellAppearance;
|
||||
m_groupAppearanceType = gropAppearance;
|
||||
m_regionAppearanceType = regiAppearance;
|
||||
}
|
||||
|
||||
for (auto& caseAddrPair : curveDefinitions)
|
||||
{
|
||||
|
@ -33,6 +33,7 @@
|
||||
#include "RimSummaryCurve.h"
|
||||
#include "RimSummaryFilter.h"
|
||||
#include "cafPdmPtrArrayField.h"
|
||||
#include "RimSummaryCurveAppearanceCalculator.h"
|
||||
|
||||
class RimSummaryCase;
|
||||
class RifReaderEclipseSummary;
|
||||
@ -93,5 +94,14 @@ private:
|
||||
m_uiFilterResultMultiSelection;
|
||||
|
||||
caf::PdmField<bool> m_applyButtonField;
|
||||
|
||||
caf::PdmField<bool> m_useAutoAppearanceAssignment;
|
||||
typedef caf::AppEnum<RimSummaryCurveAppearanceCalculator::CurveAppearanceType> AppearanceTypeAppEnum;
|
||||
caf::PdmField< AppearanceTypeAppEnum > m_caseAppearanceType;
|
||||
caf::PdmField< AppearanceTypeAppEnum > m_variableAppearanceType;
|
||||
caf::PdmField< AppearanceTypeAppEnum > m_wellAppearanceType;
|
||||
caf::PdmField< AppearanceTypeAppEnum > m_groupAppearanceType;
|
||||
caf::PdmField< AppearanceTypeAppEnum > m_regionAppearanceType;
|
||||
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user