#780 Made Gui and a crude auto assignment of appearance.

Renamed
This commit is contained in:
Jacob Støren 2016-08-09 11:35:48 +02:00
parent 43a1f4dbbe
commit 23bfb46c4c
5 changed files with 150 additions and 26 deletions

View File

@ -87,7 +87,7 @@ ${CEE_CURRENT_LIST_DIR}RimGridSummaryCase.cpp
${CEE_CURRENT_LIST_DIR}RimFileSummaryCase.cpp ${CEE_CURRENT_LIST_DIR}RimFileSummaryCase.cpp
${CEE_CURRENT_LIST_DIR}RimSummaryCaseCollection.h ${CEE_CURRENT_LIST_DIR}RimSummaryCaseCollection.h
${CEE_CURRENT_LIST_DIR}RimPlotCurve.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 ${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}RimFileSummaryCase.cpp
${CEE_CURRENT_LIST_DIR}RimSummaryCaseCollection.cpp ${CEE_CURRENT_LIST_DIR}RimSummaryCaseCollection.cpp
${CEE_CURRENT_LIST_DIR}RimPlotCurve.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 ${CEE_CURRENT_LIST_DIR}RimEclipseInputCaseOpm.cpp
) )

View File

@ -16,16 +16,31 @@
// //
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
#include "RimCurveAppearanceCalculator.h" #include "RimSummaryCurveAppearanceCalculator.h"
#include "RimSummaryCurve.h" #include "RimSummaryCurve.h"
#include "cvfVector3.h" #include "cvfVector3.h"
#include <cmath> #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) 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(); m_regionCount = m_regToAppearanceIdxMap .size();
// Select the appearance type for each data "dimension" // Select the appearance type for each data "dimension"
m_caseAppearanceType = NONE;
m_caseAppearanceType = SYMBOL; m_varAppearanceType = NONE;
m_varAppearanceType = COLOR; m_wellAppearanceType = NONE;
m_wellAppearanceType = LINE_STYLE;
m_groupAppearanceType = NONE; m_groupAppearanceType = NONE;
m_regionAppearanceType = 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 // Assign increasing indexes
{ int idx = 0; for(auto& pair : m_caseToAppearanceIdxMap) pair.second = idx++; } { int idx = 0; for(auto& pair : m_caseToAppearanceIdxMap) pair.second = idx++; }
{ int idx = 0; for(auto& pair : m_varToAppearanceIdxMap) 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 variAppearance,
CurveAppearanceType wellAppearance, CurveAppearanceType wellAppearance,
CurveAppearanceType gropAppearance, CurveAppearanceType gropAppearance,
CurveAppearanceType regiAppearance) CurveAppearanceType regiAppearance)
{ {
m_dimensionCount = 0;
m_caseAppearanceType = caseAppearance; m_caseAppearanceType = caseAppearance;
m_varAppearanceType = variAppearance; m_varAppearanceType = variAppearance;
m_wellAppearanceType = wellAppearance; m_wellAppearanceType = wellAppearance;
m_groupAppearanceType = gropAppearance; m_groupAppearanceType = gropAppearance;
m_regionAppearanceType = regiAppearance; 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_currentCurveBaseColor = cvf::Color3f(0, 0, 0);
m_currentCurveGradient = 0.0f; 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) 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 int RI_LOGPLOT_CURVECOLORSCOUNT = 11;
static const cvf::ubyte RI_LOGPLOT_CURVECOLORS[][3] = 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))); 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))); 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 thicknessCount = 3;
static const int thicknesses[] ={ 1, 2, 4 }; static const int thicknesses[] ={ 1, 3, 5 };
return (thicknesses[(index) % 3]); 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; if(totalCount == 1) return 0.0f;
const float darkLimit = -1.0f; const float darkLimit = -0.45f;
const float lightLimit = 0.9f; const float lightLimit = 0.7f;
float totalSpan = lightLimit - darkLimit; float totalSpan = lightLimit - darkLimit;
float step = totalSpan / (totalCount -1); float step = totalSpan / (totalCount -1);
return darkLimit + (index * step); 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); CVF_ASSERT(-1.0 <= factor && factor <= 1.0);

View File

@ -25,17 +25,17 @@
class RimSummaryCurve; class RimSummaryCurve;
class RimSummaryCase; class RimSummaryCase;
class RimCurveLookCalculator class RimSummaryCurveAppearanceCalculator
{ {
public: public:
RimCurveLookCalculator(const std::set<std::pair<RimSummaryCase*, RifEclipseSummaryAddress> >& curveDefinitions); RimSummaryCurveAppearanceCalculator(const std::set<std::pair<RimSummaryCase*, RifEclipseSummaryAddress> >& curveDefinitions);
enum CurveAppearanceType enum CurveAppearanceType
{ {
NONE, NONE,
COLOR, COLOR,
GRADIENT,
LINE_STYLE,
SYMBOL, SYMBOL,
LINE_STYLE,
GRADIENT,
LINE_THICKNESS LINE_THICKNESS
}; };
@ -44,6 +44,11 @@ public:
CurveAppearanceType wellAppearance, CurveAppearanceType wellAppearance,
CurveAppearanceType gropAppearance, CurveAppearanceType gropAppearance,
CurveAppearanceType regiAppearance); CurveAppearanceType regiAppearance);
void getDimensions(CurveAppearanceType* caseAppearance,
CurveAppearanceType* variAppearance,
CurveAppearanceType* wellAppearance,
CurveAppearanceType* gropAppearance,
CurveAppearanceType* regiAppearance) const;
void setupCurveLook(RimSummaryCurve* curve); void setupCurveLook(RimSummaryCurve* curve);
@ -68,6 +73,7 @@ private:
size_t m_wellCount; size_t m_wellCount;
size_t m_groupCount; size_t m_groupCount;
size_t m_regionCount; size_t m_regionCount;
int m_dimensionCount;
CurveAppearanceType m_caseAppearanceType; CurveAppearanceType m_caseAppearanceType;
CurveAppearanceType m_varAppearanceType; CurveAppearanceType m_varAppearanceType;

View File

@ -41,7 +41,7 @@
#include "cafPdmUiListEditor.h" #include "cafPdmUiListEditor.h"
#include "cafPdmUiPushButtonEditor.h" #include "cafPdmUiPushButtonEditor.h"
#include "cafPdmUiTreeOrdering.h" #include "cafPdmUiTreeOrdering.h"
#include "RimCurveAppearanceCalculator.h" #include "RimSummaryCurveAppearanceCalculator.h"
QTextStream& operator << (QTextStream& str, const std::vector<RifEclipseSummaryAddress>& sobj) QTextStream& operator << (QTextStream& str, const std::vector<RifEclipseSummaryAddress>& sobj)
@ -102,6 +102,16 @@ RimSummaryCurveFilter::RimSummaryCurveFilter()
m_applyButtonField = false; m_applyButtonField = false;
m_applyButtonField.uiCapability()->setUiEditorTypeName(caf::PdmUiPushButtonEditor::uiEditorTypeName()); m_applyButtonField.uiCapability()->setUiEditorTypeName(caf::PdmUiPushButtonEditor::uiEditorTypeName());
m_applyButtonField.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN); 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); m_summaryFilter->defineUiOrdering(uiConfigName, *curveVarSelectionGroup);
curveVarSelectionGroup->add(&m_uiFilterResultMultiSelection); 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.add(&m_applyButtonField);
uiOrdering.setForgetRemainingFields(true); uiOrdering.setForgetRemainingFields(true);
} }
@ -392,7 +420,36 @@ void RimSummaryCurveFilter::createCurvesFromCurveDefinitions(const std::set<std:
RimSummaryCase* prevCase = nullptr; RimSummaryCase* prevCase = nullptr;
RimPlotCurve::LineStyleEnum lineStyle = RimPlotCurve::STYLE_SOLID; 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,
&regiAppearance);
m_caseAppearanceType = caseAppearance;
m_variableAppearanceType = variAppearance;
m_wellAppearanceType = wellAppearance;
m_groupAppearanceType = gropAppearance;
m_regionAppearanceType = regiAppearance;
}
for (auto& caseAddrPair : curveDefinitions) for (auto& caseAddrPair : curveDefinitions)
{ {

View File

@ -33,6 +33,7 @@
#include "RimSummaryCurve.h" #include "RimSummaryCurve.h"
#include "RimSummaryFilter.h" #include "RimSummaryFilter.h"
#include "cafPdmPtrArrayField.h" #include "cafPdmPtrArrayField.h"
#include "RimSummaryCurveAppearanceCalculator.h"
class RimSummaryCase; class RimSummaryCase;
class RifReaderEclipseSummary; class RifReaderEclipseSummary;
@ -93,5 +94,14 @@ private:
m_uiFilterResultMultiSelection; m_uiFilterResultMultiSelection;
caf::PdmField<bool> m_applyButtonField; 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;
}; };