mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
(#460) Use smallest positive value as axis limit when autoscaling log
This commit is contained in:
@@ -19,6 +19,8 @@
|
|||||||
|
|
||||||
#include "RimWellLogTrack.h"
|
#include "RimWellLogTrack.h"
|
||||||
|
|
||||||
|
#include "RigStatisticsCalculator.h"
|
||||||
|
|
||||||
#include "RimWellLogPlot.h"
|
#include "RimWellLogPlot.h"
|
||||||
#include "RimWellLogCurve.h"
|
#include "RimWellLogCurve.h"
|
||||||
|
|
||||||
@@ -104,8 +106,6 @@ void RimWellLogTrack::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
|
|||||||
}
|
}
|
||||||
else if (changedField == &m_visibleXRangeMin || changedField == &m_visibleXRangeMax)
|
else if (changedField == &m_visibleXRangeMin || changedField == &m_visibleXRangeMax)
|
||||||
{
|
{
|
||||||
clampMinimumXRangeForLogarithmicScale();
|
|
||||||
|
|
||||||
m_wellLogTrackPlotWidget->setXRange(m_visibleXRangeMin, m_visibleXRangeMax);
|
m_wellLogTrackPlotWidget->setXRange(m_visibleXRangeMin, m_visibleXRangeMax);
|
||||||
m_wellLogTrackPlotWidget->replot();
|
m_wellLogTrackPlotWidget->replot();
|
||||||
m_isAutoScaleXEnabled = false;
|
m_isAutoScaleXEnabled = false;
|
||||||
@@ -115,7 +115,7 @@ void RimWellLogTrack::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
|
|||||||
if (m_isAutoScaleXEnabled())
|
if (m_isAutoScaleXEnabled())
|
||||||
{
|
{
|
||||||
this->zoomAllXAxisIfAutoScale();
|
this->zoomAllXAxisIfAutoScale();
|
||||||
clampMinimumXRangeForLogarithmicScale();
|
computeAndSetXRangeMinForLogarithmicScale();
|
||||||
|
|
||||||
if (m_wellLogTrackPlotWidget) m_wellLogTrackPlotWidget->replot();
|
if (m_wellLogTrackPlotWidget) m_wellLogTrackPlotWidget->replot();
|
||||||
}
|
}
|
||||||
@@ -125,7 +125,7 @@ void RimWellLogTrack::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
|
|||||||
updateAxisScaleEngine();
|
updateAxisScaleEngine();
|
||||||
|
|
||||||
this->zoomAllXAxisIfAutoScale();
|
this->zoomAllXAxisIfAutoScale();
|
||||||
clampMinimumXRangeForLogarithmicScale();
|
computeAndSetXRangeMinForLogarithmicScale();
|
||||||
|
|
||||||
m_wellLogTrackPlotWidget->setXRange(m_visibleXRangeMin, m_visibleXRangeMax);
|
m_wellLogTrackPlotWidget->setXRange(m_visibleXRangeMin, m_visibleXRangeMax);
|
||||||
|
|
||||||
@@ -337,7 +337,7 @@ void RimWellLogTrack::zoomAllXAxisIfAutoScale()
|
|||||||
m_visibleXRangeMin = minValue;
|
m_visibleXRangeMin = minValue;
|
||||||
m_visibleXRangeMax = maxValue;
|
m_visibleXRangeMax = maxValue;
|
||||||
|
|
||||||
clampMinimumXRangeForLogarithmicScale();
|
computeAndSetXRangeMinForLogarithmicScale();
|
||||||
|
|
||||||
if (m_wellLogTrackPlotWidget) m_wellLogTrackPlotWidget->setXRange(m_visibleXRangeMin, m_visibleXRangeMax);
|
if (m_wellLogTrackPlotWidget) m_wellLogTrackPlotWidget->setXRange(m_visibleXRangeMin, m_visibleXRangeMax);
|
||||||
|
|
||||||
@@ -408,14 +408,24 @@ void RimWellLogTrack::updateAxisScaleEngine()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimWellLogTrack::clampMinimumXRangeForLogarithmicScale()
|
void RimWellLogTrack::computeAndSetXRangeMinForLogarithmicScale()
|
||||||
{
|
{
|
||||||
if (m_isLogarithmicScaleEnabled)
|
if (m_isAutoScaleXEnabled && m_isLogarithmicScaleEnabled)
|
||||||
{
|
{
|
||||||
double minValue = m_visibleXRangeMin;
|
double pos = HUGE_VAL;
|
||||||
|
double neg = -HUGE_VAL;
|
||||||
minValue = cvf::Math::clamp(minValue, 0.01, m_visibleXRangeMax());
|
|
||||||
|
|
||||||
m_visibleXRangeMin = minValue;
|
for (size_t cIdx = 0; cIdx < curves.size(); cIdx++)
|
||||||
|
{
|
||||||
|
if (curves[cIdx]->isCurveVisible() && curves[cIdx]->curveData())
|
||||||
|
{
|
||||||
|
RigStatisticsCalculator::posNegClosestToZero(curves[cIdx]->curveData()->xPlotValues(), pos, neg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pos != HUGE_VAL)
|
||||||
|
{
|
||||||
|
m_visibleXRangeMin = pos;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ protected:
|
|||||||
// Overridden PDM methods
|
// Overridden PDM methods
|
||||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
|
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
|
||||||
|
|
||||||
void clampMinimumXRangeForLogarithmicScale();
|
void computeAndSetXRangeMinForLogarithmicScale();
|
||||||
|
|
||||||
virtual caf::PdmFieldHandle* objectToggleField();
|
virtual caf::PdmFieldHandle* objectToggleField();
|
||||||
virtual caf::PdmFieldHandle* userDescriptionField();
|
virtual caf::PdmFieldHandle* userDescriptionField();
|
||||||
|
|||||||
Reference in New Issue
Block a user