///////////////////////////////////////////////////////////////////////////////// // // Copyright (C) 2016 Statoil ASA // // ResInsight is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY // WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. // // See the GNU General Public License at // for more details. // ///////////////////////////////////////////////////////////////////////////////// #pragma once #include "RimPlotCurve.h" #include "cvfBase.h" #include "cvfColor3.h" #include class RimSummaryCurve; class RimSummaryCase; class RifEclipseSummaryAddress; class RimSummaryCurveAppearanceCalculator { public: explicit RimSummaryCurveAppearanceCalculator(const std::set >& curveDefinitions, const std::set allSummaryCaseNames, const std::set allSummaryWellNames); enum CurveAppearanceType { NONE, COLOR, SYMBOL, LINE_STYLE, GRADIENT, LINE_THICKNESS }; void assignDimensions(CurveAppearanceType caseAppearance, CurveAppearanceType variAppearance, CurveAppearanceType wellAppearance, CurveAppearanceType gropAppearance, CurveAppearanceType regiAppearance); void getDimensions(CurveAppearanceType* caseAppearance, CurveAppearanceType* variAppearance, CurveAppearanceType* wellAppearance, CurveAppearanceType* gropAppearance, CurveAppearanceType* regiAppearance) const; void setupCurveLook(RimSummaryCurve* curve); private: void setOneCurveAppearance(CurveAppearanceType appeaType, size_t totalCount, int appeaIdx, RimSummaryCurve* curve); void updateApperanceIndices(); std::map mapNameToAppearanceIndex(CurveAppearanceType & appearance, const std::set& names); cvf::Color3f cycledPaletteColor(int colorIndex); cvf::Color3f cycledNoneRGBBrColor(int colorIndex); cvf::Color3f cycledGreenColor(int colorIndex); cvf::Color3f cycledBlueColor(int colorIndex); cvf::Color3f cycledRedColor(int colorIndex); cvf::Color3f cycledBrownColor(int colorIndex); RimPlotCurve::LineStyleEnum cycledLineStyle(int index); RimPlotCurve::PointSymbolEnum cycledSymbol(int index); int cycledLineThickness(int index); float gradient(size_t totalCount, int index); cvf::Color3f gradeColor(const cvf::Color3f& color , float factor); cvf::Color3f m_currentCurveBaseColor; float m_currentCurveGradient; size_t m_caseCount; size_t m_variableCount; size_t m_wellCount; size_t m_groupCount; size_t m_regionCount; int m_dimensionCount; CurveAppearanceType m_caseAppearanceType; CurveAppearanceType m_varAppearanceType; CurveAppearanceType m_wellAppearanceType; CurveAppearanceType m_groupAppearanceType; CurveAppearanceType m_regionAppearanceType; std::map m_caseToAppearanceIdxMap; std::map m_varToAppearanceIdxMap; std::map m_welToAppearanceIdxMap; std::map m_grpToAppearanceIdxMap; std::map m_regToAppearanceIdxMap; std::map > m_secondCharToVarToAppearanceIdxMap; std::set m_allSummaryCaseNames; std::set m_allSummaryWellNames; };