From 3c2d4569968046e8dd2baab893dc59be95495125 Mon Sep 17 00:00:00 2001 From: Kristian Bendiksen Date: Tue, 24 Mar 2020 15:11:04 +0100 Subject: [PATCH] #5659 Well Disks: Use decimal number format for small numbers --- .../ModelVisualization/RivWellDiskPartMgr.cpp | 30 +++++++++---------- .../ModelVisualization/RivWellDiskPartMgr.h | 4 +-- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/ApplicationCode/ModelVisualization/RivWellDiskPartMgr.cpp b/ApplicationCode/ModelVisualization/RivWellDiskPartMgr.cpp index a8804acd6b..bb6e42128d 100644 --- a/ApplicationCode/ModelVisualization/RivWellDiskPartMgr.cpp +++ b/ApplicationCode/ModelVisualization/RivWellDiskPartMgr.cpp @@ -193,8 +193,6 @@ void RivWellDiskPartMgr::buildWellDiskParts( size_t frameIndex, const caf::Displ std::vector> labelsWithPosition; - int numberPrecision = 2; - double accumulatedPropertyValue = 0.0; const double valueThresholdForLabel = 1e-6; @@ -216,7 +214,7 @@ void RivWellDiskPartMgr::buildWellDiskParts( size_t frameIndex, const caf::Displ if ( diskData.singlePropertyValue() > valueThresholdForLabel ) { const double singleProperty = diskData.singlePropertyValueSigned(); - labelText += QString( "\n%2" ).arg( singleProperty, 0, 'g', numberPrecision ); + labelText += QString( "\n%2" ).arg( RivWellDiskPartMgr::formatNumber( singleProperty ) ); } } } @@ -239,11 +237,8 @@ void RivWellDiskPartMgr::buildWellDiskParts( size_t frameIndex, const caf::Displ if ( oilFraction > valueThresholdForLabel ) { - auto p = createTextAndLocation( oilFraction / 2.0, - diskPosition, - ijScaleFactor, - diskData.oilSigned(), - numberPrecision ); + auto p = createTextAndLocation( oilFraction / 2.0, diskPosition, ijScaleFactor, diskData.oilSigned() ); + labelsWithPosition.push_back( p ); aggregatedFraction += oilFraction; } @@ -253,8 +248,7 @@ void RivWellDiskPartMgr::buildWellDiskParts( size_t frameIndex, const caf::Displ auto p = createTextAndLocation( aggregatedFraction + gasFraction / 2.0, diskPosition, ijScaleFactor, - diskData.gasSigned(), - numberPrecision ); + diskData.gasSigned() ); labelsWithPosition.push_back( p ); aggregatedFraction += gasFraction; } @@ -264,8 +258,7 @@ void RivWellDiskPartMgr::buildWellDiskParts( size_t frameIndex, const caf::Displ auto p = createTextAndLocation( aggregatedFraction + waterFraction / 2.0, diskPosition, ijScaleFactor, - diskData.waterSigned(), - numberPrecision ); + diskData.waterSigned() ); labelsWithPosition.push_back( p ); aggregatedFraction += waterFraction; @@ -409,14 +402,21 @@ void RivWellDiskPartMgr::buildWellDiskParts( size_t frameIndex, const caf::Displ } } +QString RivWellDiskPartMgr::formatNumber( double num ) +{ + if ( std::abs( num ) < 1e4 ) + return QString::number( num, 'f', 1 ); + else + return QString::number( num, 'g', 2 ); +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- std::pair RivWellDiskPartMgr::createTextAndLocation( const double aggregatedFraction, cvf::Vec3d diskPosition, double ijScaleFactor, - const double fraction, - int precision ) + const double fraction ) { double sinA = cvf::Math::sin( aggregatedFraction * 2.0 * cvf::PI_F ); double cosA = cvf::Math::cos( aggregatedFraction * 2.0 * cvf::PI_F ); @@ -430,7 +430,7 @@ std::pair RivWellDiskPartMgr::createTextAndLocation( co v.x() = v.x() + static_cast( -sinA * radius ); v.y() = v.y() + static_cast( cosA * radius ); - auto s = QString::number( fraction, 'g', precision ); + auto s = RivWellDiskPartMgr::formatNumber( fraction ); cvf::String text = cvf::String( s.toStdString() ); auto p = std::make_pair( text, v ); diff --git a/ApplicationCode/ModelVisualization/RivWellDiskPartMgr.h b/ApplicationCode/ModelVisualization/RivWellDiskPartMgr.h index 9a407557d7..b8c1c16595 100644 --- a/ApplicationCode/ModelVisualization/RivWellDiskPartMgr.h +++ b/ApplicationCode/ModelVisualization/RivWellDiskPartMgr.h @@ -59,14 +59,14 @@ private: std::pair createTextAndLocation( const double aggregatedFraction, cvf::Vec3d diskPosition, double ijScaleFactor, - const double fraction, - int precision ); + const double fraction ); void clearAllGeometry(); Rim3dView* viewWithSettings(); RimSimWellInViewCollection* simWellInViewCollection(); static cvf::Color4f getWellInjectionColor( RigWellResultFrame::WellProductionType productionType ); + static QString formatNumber( double num ); private: caf::PdmPointer m_rimWell;