Fix setting manual step to be float

This commit is contained in:
Emil Sawicki 2022-03-14 10:04:13 +01:00
parent c45aef0efd
commit 8135ca07cf
2 changed files with 12 additions and 5 deletions

View File

@ -805,9 +805,9 @@ void AbstractSeriesChart::updateMinAndMaxValues()
} }
qreal maxYValue = 0; qreal maxYValue = 0;
qreal minYValue = 0; qreal minYValue = std::numeric_limits<qreal>::max();
qreal maxXValue = 0; qreal maxXValue = 0;
qreal minXValue = 0; qreal minXValue = std::numeric_limits<qreal>::max();
for (SeriesItem* series : m_chartItem->series()){ for (SeriesItem* series : m_chartItem->series()){
for (qreal value : series->data()->values()){ for (qreal value : series->data()->values()){

View File

@ -132,7 +132,7 @@ void AxisData::calculateRoundedAxisScale()
qreal temporaryMin = 0; qreal temporaryMin = 0;
qreal temporaryMax = 0; qreal temporaryMax = 0;
if (calculateMinimum) { if (calculateMinimum) {
temporaryMin = qMax(0.0, minValue()); temporaryMin = qMin(0.0, minValue());
} else { } else {
temporaryMin = qMin(manualMinimum(), minValue()); temporaryMin = qMin(manualMinimum(), minValue());
} }
@ -214,7 +214,10 @@ void AxisData::calculateRoundedAxisScale()
m_segmentCount = static_cast<int>(round((currentAxisMaximum - currentAxisMinimum) / m_step)); m_segmentCount = static_cast<int>(round((currentAxisMaximum - currentAxisMinimum) / m_step));
m_rangeMin = currentAxisMinimum; m_rangeMin = currentAxisMinimum;
m_rangeMax = currentAxisMaximum; m_rangeMax = currentAxisMaximum;
isLoopFinished = m_segmentCount <= maximumSegmentCount; // Check also if step is correctly calucalted. It is possible for float steps that
// there might be a difference. Recalculate the step in that case.
const qreal tmpStep = (m_rangeMax - m_rangeMin) / m_segmentCount;
isLoopFinished = m_segmentCount <= maximumSegmentCount && qFuzzyCompare(tmpStep, m_step);
if (!isLoopFinished) { if (!isLoopFinished) {
// Configured step may be invalid, calculating it automatically // Configured step may be invalid, calculating it automatically
calculateStep = true; calculateStep = true;
@ -224,8 +227,12 @@ void AxisData::calculateRoundedAxisScale()
void AxisData::calculateSimpleAxisScale() void AxisData::calculateSimpleAxisScale()
{ {
qreal min = 0;
if (m_minValue < 0) {
min = minValue();
}
m_segmentCount = 4; m_segmentCount = 4;
const int delta = maxValue() - minValue(); const int delta = maxValue() - min;
int max = delta; int max = delta;
while (max % m_segmentCount != 0){ while (max % m_segmentCount != 0){
max++; max++;