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 minYValue = 0;
qreal minYValue = std::numeric_limits<qreal>::max();
qreal maxXValue = 0;
qreal minXValue = 0;
qreal minXValue = std::numeric_limits<qreal>::max();
for (SeriesItem* series : m_chartItem->series()){
for (qreal value : series->data()->values()){

View File

@ -132,7 +132,7 @@ void AxisData::calculateRoundedAxisScale()
qreal temporaryMin = 0;
qreal temporaryMax = 0;
if (calculateMinimum) {
temporaryMin = qMax(0.0, minValue());
temporaryMin = qMin(0.0, minValue());
} else {
temporaryMin = qMin(manualMinimum(), minValue());
}
@ -214,7 +214,10 @@ void AxisData::calculateRoundedAxisScale()
m_segmentCount = static_cast<int>(round((currentAxisMaximum - currentAxisMinimum) / m_step));
m_rangeMin = currentAxisMinimum;
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) {
// Configured step may be invalid, calculating it automatically
calculateStep = true;
@ -224,8 +227,12 @@ void AxisData::calculateRoundedAxisScale()
void AxisData::calculateSimpleAxisScale()
{
qreal min = 0;
if (m_minValue < 0) {
min = minValue();
}
m_segmentCount = 4;
const int delta = maxValue() - minValue();
const int delta = maxValue() - min;
int max = delta;
while (max % m_segmentCount != 0){
max++;