diff options
author | Dimitrios Apostolou <jimis@qt.io> | 2021-05-20 21:59:20 +0200 |
---|---|---|
committer | Cristián Maureira-Fredes <Cristian.Maureira-Fredes@qt.io> | 2022-06-13 12:06:04 +0200 |
commit | 0a4572b5b83c61c42c7945fcb205380c2b01fcca (patch) | |
tree | cea8ad0ba8c2d00ae5ea18e022f63f62d33d1e46 /src/charts/axis/chartaxiselement.cpp | |
parent | cbe4ef961ded2671b3a5e330705b95c390c6a423 (diff) |
Replace code with simpler but equivalent code
The if-branching is unnecessary because
ceil(a-b) == -floor(b-a)
Also add comments to clarify subtle differences in seemingly
identical code snippets.
Fixes: QTBUG-103906
Change-Id: Idfd72e4aecf53805183f5b2741336d805fbfbb6a
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
(cherry picked from commit 0d1f32381d70f0f551fd3a02040650938cd8ac6d)
Diffstat (limited to 'src/charts/axis/chartaxiselement.cpp')
-rw-r--r-- | src/charts/axis/chartaxiselement.cpp | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/src/charts/axis/chartaxiselement.cpp b/src/charts/axis/chartaxiselement.cpp index 17f36e61..9d49123f 100644 --- a/src/charts/axis/chartaxiselement.cpp +++ b/src/charts/axis/chartaxiselement.cpp @@ -430,13 +430,11 @@ QStringList ChartAxisElement::createValueLabels(qreal min, qreal max, int ticks, labels << presenter()->numberToString(value, 'f', n); } } else { - qreal value = tickAnchor; - if (value > min) - value = value - int((value - min) / tickInterval) * tickInterval; - else - value = value + qCeil((min - value) / tickInterval) * tickInterval; + const qreal ticksFromAnchor = (tickAnchor - min) / tickInterval; + const qreal firstMajorTick = tickAnchor - std::floor(ticksFromAnchor) * tickInterval; - while (value <= max || qFuzzyCompare(value, max)) { + qreal value = firstMajorTick; + while (value <= max) { labels << presenter()->numberToString(value, 'f', n); value += tickInterval; } @@ -472,13 +470,11 @@ QStringList ChartAxisElement::createValueLabels(qreal min, qreal max, int ticks, labels << formatLabel(formatSpec, array, value, precision, preStr, postStr); } } else { - qreal value = tickAnchor; - if (value > min) - value = value - int((value - min) / tickInterval) * tickInterval; - else - value = value + qCeil((min - value) / tickInterval) * tickInterval; + const qreal ticksFromAnchor = (tickAnchor - min) / tickInterval; + const qreal firstMajorTick = tickAnchor - std::floor(ticksFromAnchor) * tickInterval; - while (value <= max || qFuzzyCompare(value, max)) { + qreal value = firstMajorTick; + while (value <= max) { labels << formatLabel(formatSpec, array, value, precision, preStr, postStr); value += tickInterval; } |