summaryrefslogtreecommitdiffstats
path: root/src/charts/axis/chartaxiselement.cpp
diff options
context:
space:
mode:
authorDimitrios Apostolou <jimis@qt.io>2021-05-20 21:59:20 +0200
committerCristián Maureira-Fredes <Cristian.Maureira-Fredes@qt.io>2022-06-13 12:06:04 +0200
commit0a4572b5b83c61c42c7945fcb205380c2b01fcca (patch)
treecea8ad0ba8c2d00ae5ea18e022f63f62d33d1e46 /src/charts/axis/chartaxiselement.cpp
parentcbe4ef961ded2671b3a5e330705b95c390c6a423 (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.cpp20
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;
}