diff --git a/ApplicationCode/ProjectDataModel/CMakeLists_files.cmake b/ApplicationCode/ProjectDataModel/CMakeLists_files.cmake index d6c648885a..5993d37f8a 100644 --- a/ApplicationCode/ProjectDataModel/CMakeLists_files.cmake +++ b/ApplicationCode/ProjectDataModel/CMakeLists_files.cmake @@ -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 ) diff --git a/ApplicationCode/ProjectDataModel/RimCurveAppearanceCalculator.cpp b/ApplicationCode/ProjectDataModel/RimSummaryCurveAppearanceCalculator.cpp similarity index 65% rename from ApplicationCode/ProjectDataModel/RimCurveAppearanceCalculator.cpp rename to ApplicationCode/ProjectDataModel/RimSummaryCurveAppearanceCalculator.cpp index 0a4663dd9c..1681eb5a90 100644 --- a/ApplicationCode/ProjectDataModel/RimCurveAppearanceCalculator.cpp +++ b/ApplicationCode/ProjectDataModel/RimSummaryCurveAppearanceCalculator.cpp @@ -16,16 +16,31 @@ // ///////////////////////////////////////////////////////////////////////////////// -#include "RimCurveAppearanceCalculator.h" +#include "RimSummaryCurveAppearanceCalculator.h" #include "RimSummaryCurve.h" #include "cvfVector3.h" #include +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 >& curveDefinitions) +RimSummaryCurveAppearanceCalculator::RimSummaryCurveAppearanceCalculator(const std::set >& curveDefinitions) { for(const std::pair& curveDef : curveDefinitions) { @@ -43,13 +58,26 @@ RimCurveLookCalculator::RimCurveLookCalculator(const std::set 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::fromIndex(1 + (index % (caf::AppEnum::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::fromIndex(1 + (index % (caf::AppEnum::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); diff --git a/ApplicationCode/ProjectDataModel/RimCurveAppearanceCalculator.h b/ApplicationCode/ProjectDataModel/RimSummaryCurveAppearanceCalculator.h similarity index 82% rename from ApplicationCode/ProjectDataModel/RimCurveAppearanceCalculator.h rename to ApplicationCode/ProjectDataModel/RimSummaryCurveAppearanceCalculator.h index f0ef8b56d5..2f7e2bc672 100644 --- a/ApplicationCode/ProjectDataModel/RimCurveAppearanceCalculator.h +++ b/ApplicationCode/ProjectDataModel/RimSummaryCurveAppearanceCalculator.h @@ -25,17 +25,17 @@ class RimSummaryCurve; class RimSummaryCase; -class RimCurveLookCalculator +class RimSummaryCurveAppearanceCalculator { public: - RimCurveLookCalculator(const std::set >& curveDefinitions); + RimSummaryCurveAppearanceCalculator(const std::set >& 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; diff --git a/ApplicationCode/ProjectDataModel/RimSummaryCurveFilter.cpp b/ApplicationCode/ProjectDataModel/RimSummaryCurveFilter.cpp index 0b3f9aeb9a..ba843975d9 100644 --- a/ApplicationCode/ProjectDataModel/RimSummaryCurveFilter.cpp +++ b/ApplicationCode/ProjectDataModel/RimSummaryCurveFilter.cpp @@ -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& 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 m_applyButtonField; + + caf::PdmField m_useAutoAppearanceAssignment; + typedef caf::AppEnum 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; + };