From e6f5cbaa5aca45562fe9bee473d7d76bf67cd54c 2015-10-01 07:51:44 From: Miikka Heikkinen Date: 2015-10-01 07:51:44 Subject: [PATCH] Draw the tick and label on logaxis when tick is exactly at high edge Change-Id: I84afe69868a5ffeaf7f3ef6f9682d8a7fcea3872 Reviewed-by: Titta Heikkala --- diff --git a/src/charts/axis/logvalueaxis/chartlogvalueaxisx.cpp b/src/charts/axis/logvalueaxis/chartlogvalueaxisx.cpp index 01ac498..c1a247f 100644 --- a/src/charts/axis/logvalueaxis/chartlogvalueaxisx.cpp +++ b/src/charts/axis/logvalueaxis/chartlogvalueaxisx.cpp @@ -49,6 +49,11 @@ QVector ChartLogValueAxisX::calculateLayout() const qreal ceilEdge = qCeil(leftEdge); int tickCount = qAbs(qCeil(logMax) - qCeil(logMin)); + // If the high edge sits exactly on the tick value, add a tick + qreal highValue = logMin < logMax ? logMax : logMin; + if (qFuzzyCompare(highValue, qreal(qCeil(highValue)))) + tickCount++; + points.resize(tickCount); const QRectF &gridRect = gridGeometry(); const qreal deltaX = gridRect.width() / qAbs(logMax - logMin); @@ -90,6 +95,12 @@ QSizeF ChartLogValueAxisX::sizeHint(Qt::SizeHint which, const QSizeF &constraint qreal logMax = std::log10(m_axis->max()) / std::log10(m_axis->base()); qreal logMin = std::log10(m_axis->min()) / std::log10(m_axis->base()); int tickCount = qAbs(qCeil(logMax) - qCeil(logMin)); + + // If the high edge sits exactly on the tick value, add a tick + qreal highValue = logMin < logMax ? logMax : logMin; + if (qFuzzyCompare(highValue, qreal(qCeil(highValue)))) + tickCount++; + if (m_axis->max() > m_axis->min() && tickCount > 0) ticksList = createLogValueLabels(m_axis->min(), m_axis->max(), m_axis->base(), tickCount, m_axis->labelFormat()); else diff --git a/src/charts/axis/logvalueaxis/chartlogvalueaxisy.cpp b/src/charts/axis/logvalueaxis/chartlogvalueaxisy.cpp index e3d7883..d6beef1 100644 --- a/src/charts/axis/logvalueaxis/chartlogvalueaxisy.cpp +++ b/src/charts/axis/logvalueaxis/chartlogvalueaxisy.cpp @@ -48,6 +48,11 @@ QVector ChartLogValueAxisY::calculateLayout() const qreal ceilEdge = qCeil(leftEdge); int tickCount = qAbs(qCeil(logMax) - qCeil(logMin)); + // If the high edge sits exactly on the tick value, add a tick + qreal highValue = logMin < logMax ? logMax : logMin; + if (qFuzzyCompare(highValue, qreal(qCeil(highValue)))) + tickCount++; + points.resize(tickCount); const QRectF &gridRect = gridGeometry(); const qreal deltaY = gridRect.height() / qAbs(logMax - logMin); @@ -90,6 +95,12 @@ QSizeF ChartLogValueAxisY::sizeHint(Qt::SizeHint which, const QSizeF &constraint qreal logMax = std::log10(m_axis->max()) / std::log10(m_axis->base()); qreal logMin = std::log10(m_axis->min()) / std::log10(m_axis->base()); int tickCount = qAbs(qCeil(logMax) - qCeil(logMin)); + + // If the high edge sits exactly on the tick value, add a tick + qreal highValue = logMin < logMax ? logMax : logMin; + if (qFuzzyCompare(highValue, qreal(qCeil(highValue)))) + tickCount++; + if (m_axis->max() > m_axis->min() && tickCount > 0) ticksList = createLogValueLabels(m_axis->min(), m_axis->max(), m_axis->base(), tickCount, m_axis->labelFormat()); else