summaryrefslogtreecommitdiffstats
path: root/src/charts/axis/valueaxis/chartvalueaxisx.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/charts/axis/valueaxis/chartvalueaxisx.cpp')
-rw-r--r--src/charts/axis/valueaxis/chartvalueaxisx.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/charts/axis/valueaxis/chartvalueaxisx.cpp b/src/charts/axis/valueaxis/chartvalueaxisx.cpp
index 3eac86e0..db943480 100644
--- a/src/charts/axis/valueaxis/chartvalueaxisx.cpp
+++ b/src/charts/axis/valueaxis/chartvalueaxisx.cpp
@@ -75,22 +75,21 @@ QVector<qreal> ChartValueAxisX::calculateLayout() const
return points;
} else { // QValueAxis::TicksDynamic
const qreal interval = m_axis->tickInterval();
- qreal value = m_axis->tickAnchor();
+ const qreal anchor = m_axis->tickAnchor();
const qreal maxValue = max();
const qreal minValue = min();
- // Find the first major tick right after the min of range
- if (value > minValue)
- value = value - int((value - minValue) / interval) * interval;
- else
- value = value + qCeil((minValue - value) / interval) * interval;
+ // Find the first major tick right after the min of the range
+ const qreal ticksFromAnchor = (anchor - minValue) / interval;
+ const qreal firstMajorTick = anchor - std::floor(ticksFromAnchor) * interval;
const QRectF &gridRect = gridGeometry();
const qreal deltaX = gridRect.width() / (maxValue - minValue);
QVector<qreal> points;
const qreal leftPos = gridRect.left();
- while (value <= maxValue || qFuzzyCompare(value, maxValue)) {
+ qreal value = firstMajorTick;
+ while (value <= maxValue) {
points << (value - minValue) * deltaX + leftPos;
value += interval;
}