From bed902d005a8d7eab3bbe314c6321943b1d46b2f Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Tue, 6 May 2014 23:29:41 +0200 Subject: [PATCH] Show ternary range on overlay item --- .../RivTernarySaturationOverlayItem.cpp | 20 +++++++++-- .../RivTernarySaturationOverlayItem.h | 6 ++++ .../RimTernaryLegendConfig.cpp | 35 ++++++++++++++++++- 3 files changed, 58 insertions(+), 3 deletions(-) diff --git a/ApplicationCode/ModelVisualization/RivTernarySaturationOverlayItem.cpp b/ApplicationCode/ModelVisualization/RivTernarySaturationOverlayItem.cpp index 565dbc21eb..cdfcfc5fd5 100644 --- a/ApplicationCode/ModelVisualization/RivTernarySaturationOverlayItem.cpp +++ b/ApplicationCode/ModelVisualization/RivTernarySaturationOverlayItem.cpp @@ -121,9 +121,15 @@ void RivTernarySaturationOverlayItem::render(cvf::OpenGLContext* oglContext, con cvf::TextDrawer textDrawer(m_font.p()); textDrawer.setTextColor(m_textColor); - textDrawer.addText("SWAT", cvf::Vec2f(0.0, 0.0)); - textDrawer.addText("SOIL", cvf::Vec2f(static_cast(size.x() - 28), 0.0)); + textDrawer.addText("SWAT", cvf::Vec2f(0.0, 10.0)); + textDrawer.addText(m_swatRange, cvf::Vec2f(0.0, 0.0)); + + textDrawer.addText("SOIL", cvf::Vec2f(static_cast(size.x() - 40), 10.0)); + textDrawer.addText(m_soilRange, cvf::Vec2f(static_cast(size.x() - 40), 0.0)); + textDrawer.addText("SGAS", cvf::Vec2f(static_cast( (size.x() / 2) - 17 ), static_cast(size.y() - 10))); + textDrawer.addText(m_sgasRange, cvf::Vec2f(static_cast( (size.x() / 2) - 17 ), static_cast(size.y() - 20))); + textDrawer.renderSoftware(oglContext, camera); renderAxisImmediateMode(oglContext); @@ -197,4 +203,14 @@ void RivTernarySaturationOverlayItem::renderAxisImmediateMode(cvf::OpenGLContext } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RivTernarySaturationOverlayItem::setRangeText(const cvf::String& soilRange, const cvf::String& sgasRange, const cvf::String& swatRange) +{ + m_soilRange = soilRange; + m_sgasRange = sgasRange; + m_swatRange = swatRange; +} + diff --git a/ApplicationCode/ModelVisualization/RivTernarySaturationOverlayItem.h b/ApplicationCode/ModelVisualization/RivTernarySaturationOverlayItem.h index eb03b4d90a..ca145cf496 100644 --- a/ApplicationCode/ModelVisualization/RivTernarySaturationOverlayItem.h +++ b/ApplicationCode/ModelVisualization/RivTernarySaturationOverlayItem.h @@ -40,6 +40,8 @@ public: RivTernarySaturationOverlayItem(cvf::Font* font); ~RivTernarySaturationOverlayItem(); + void setRangeText(const cvf::String& soilRange, const cvf::String& sgasRange, const cvf::String& swatRange); + virtual cvf::Vec2ui sizeHint(); virtual void render(cvf::OpenGLContext* oglContext, const cvf::Vec2i& position, const cvf::Vec2ui& size); @@ -56,6 +58,10 @@ private: private: cvf::Color3f m_textColor; // Text color cvf::ref m_font; + + cvf::String m_soilRange; + cvf::String m_sgasRange; + cvf::String m_swatRange; cvf::Vec2ui m_size; // Pixel size of draw area }; diff --git a/ApplicationCode/ProjectDataModel/RimTernaryLegendConfig.cpp b/ApplicationCode/ProjectDataModel/RimTernaryLegendConfig.cpp index eecc6d1875..4f5a9bcde6 100644 --- a/ApplicationCode/ProjectDataModel/RimTernaryLegendConfig.cpp +++ b/ApplicationCode/ProjectDataModel/RimTernaryLegendConfig.cpp @@ -27,6 +27,7 @@ #include "RivTernarySaturationOverlayItem.h" #include +#include "cvfqtUtils.h" CAF_PDM_SOURCE_INIT(RimTernaryLegendConfig, "RimTernaryLegendConfig"); @@ -154,7 +155,39 @@ void RimTernaryLegendConfig::fieldChangedByUi(const caf::PdmFieldHandle* changed //-------------------------------------------------------------------------------------------------- void RimTernaryLegendConfig::updateLegend() { - // TODO: Update text on ternary legend + double soilLower = 0.0; + double soilUpper = 1.0; + double sgasLower = 0.0; + double sgasUpper = 1.0; + double swatLower = 0.0; + double swatUpper = 1.0; + + ternaryRanges(soilLower, soilUpper, sgasLower, sgasUpper, swatLower, swatUpper); + + cvf::String soilRange; + cvf::String sgasRange; + cvf::String swatRange; + + int numberPrecision = 1; + { + QString tmpString = QString::number(soilLower, 'g', numberPrecision) + " - " + QString::number(soilUpper, 'g', numberPrecision); + soilRange = cvfqt::Utils::toString(tmpString); + } + + { + QString tmpString = QString::number(sgasLower, 'g', numberPrecision) + " - " + QString::number(sgasUpper, 'g', numberPrecision); + sgasRange = cvfqt::Utils::toString(tmpString); + } + + { + QString tmpString = QString::number(swatLower, 'g', numberPrecision) + " - " + QString::number(swatUpper, 'g', numberPrecision); + swatRange = cvfqt::Utils::toString(tmpString); + } + + if (!m_legend.isNull()) + { + m_legend->setRangeText(soilRange, sgasRange, swatRange); + } } //--------------------------------------------------------------------------------------------------