##// END OF EJS Templates
Revert "Fix lingering visible shades from High Contrast theme"...
Revert "Fix lingering visible shades from High Contrast theme" This reverts commit 923279d5fb262b5badda1807cb7248874da85037. Fixing lingering shades from High Contrast theme needs to be rethought, reverting the fix in the meantime. Task-number: QTRD-1947 Change-Id: Iff6c50780ba6c4cd68cc9a27d06f4e5badd63cf1 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>

File last commit:

r2460:68d0858fafea
r2476:34f67c64ed95
Show More
chartlogvalueaxisx.cpp
141 lines | 4.5 KiB | text/x-c | CppLexer
/ src / axis / logvalueaxis / chartlogvalueaxisx.cpp
Marek Rosa
QLogValueAxis added. Log domain missing
r2274 /****************************************************************************
**
Miikka Heikkinen
Fixed the copyright year 2012 -> 2013
r2432 ** Copyright (C) 2013 Digia Plc
Marek Rosa
QLogValueAxis added. Log domain missing
r2274 ** All rights reserved.
** For any questions to Digia, please use contact form at http://qt.digia.com
**
** This file is part of the Qt Commercial Charts Add-on.
**
** $QT_BEGIN_LICENSE$
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia.
**
** If you have questions regarding the use of this file, please use
** contact form at http://qt.digia.com
** $QT_END_LICENSE$
**
****************************************************************************/
#include "chartlogvalueaxisx_p.h"
#include "chartpresenter_p.h"
#include "qlogvalueaxis.h"
#include "chartlayout_p.h"
#include <QGraphicsLayout>
#include <QFontMetrics>
#include <qmath.h>
Michal Klocek
Fixes missing layout updated on ticks,base and format calls
r2333 #include <QDebug>
Marek Rosa
QLogValueAxis added. Log domain missing
r2274
QTCOMMERCIALCHART_BEGIN_NAMESPACE
ChartLogValueAxisX::ChartLogValueAxisX(QLogValueAxis *axis, QGraphicsItem* item)
: HorizontalAxis(axis, item),
m_axis(axis)
{
Marek Rosa
Fixed: chart not redrawing when logaxis's logBase value changed
r2322 QObject::connect(m_axis,SIGNAL(baseChanged(qreal)),this, SLOT(handleBaseChanged(qreal)));
Marek Rosa
Fixed: axis not redrawing when labelFormat changed
r2323 QObject::connect(m_axis,SIGNAL(labelFormatChanged(QString)),this, SLOT(handleLabelFormatChanged(QString)));
Marek Rosa
QLogValueAxis added. Log domain missing
r2274 }
ChartLogValueAxisX::~ChartLogValueAxisX()
{
}
QVector<qreal> ChartLogValueAxisX::calculateLayout() const
{
QVector<qreal> points;
qreal logMax = log10(m_axis->max()) / log10(m_axis->base());
qreal logMin = log10(m_axis->min()) / log10(m_axis->base());
Marek Rosa
Domains added
r2275 qreal leftEdge = logMin < logMax ? logMin : logMax;
qreal ceilEdge = ceil(leftEdge);
Marek Rosa
QSplineSeries calculateControlPoints moved to splinechartitem. This way we don't need to deal with controlPoints on logaritmic scale
r2372 int tickCount = qAbs(ceil(logMax) - ceil(logMin));
Marek Rosa
QLogValueAxis added. Log domain missing
r2274
points.resize(tickCount);
const QRectF &gridRect = gridGeometry();
const qreal deltaX = gridRect.width() / qAbs(logMax - logMin);
for (int i = 0; i < tickCount; ++i)
Marek Rosa
Domains added
r2275 points[i] = (ceilEdge + i) * deltaX - leftEdge * deltaX + gridRect.left();
Marek Rosa
QLogValueAxis added. Log domain missing
r2274
return points;
}
void ChartLogValueAxisX::updateGeometry()
{
const QVector<qreal>& layout = ChartAxis::layout();
if (layout.isEmpty())
return;
setLabels(createLogValueLabels(m_axis->min(), m_axis->max(), m_axis->base(), layout.size(), m_axis->labelFormat()));
HorizontalAxis::updateGeometry();
}
Marek Rosa
Fixed: chart not redrawing when logaxis's logBase value changed
r2322 void ChartLogValueAxisX::handleBaseChanged(qreal base)
{
Q_UNUSED(base);
Michal Klocek
Fixes missing layout updated on ticks,base and format calls
r2333 QGraphicsLayoutItem::updateGeometry();
Marek Rosa
Fixed: chart not redrawing when logaxis's logBase value changed
r2322 if(presenter()) presenter()->layout()->invalidate();
}
Marek Rosa
QLogValueAxis added. Log domain missing
r2274
Marek Rosa
Fixed: axis not redrawing when labelFormat changed
r2323 void ChartLogValueAxisX::handleLabelFormatChanged(const QString &format)
{
Q_UNUSED(format);
Michal Klocek
Fixes missing layout updated on ticks,base and format calls
r2333 QGraphicsLayoutItem::updateGeometry();
Marek Rosa
Fixed: axis not redrawing when labelFormat changed
r2323 if(presenter()) presenter()->layout()->invalidate();
}
Marek Rosa
QLogValueAxis added. Log domain missing
r2274 QSizeF ChartLogValueAxisX::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const
{
Q_UNUSED(constraint)
QFontMetrics fn(font());
QSizeF sh;
QSizeF base = HorizontalAxis::sizeHint(which, constraint);
QStringList ticksList;
qreal logMax = log10(m_axis->max()) / log10(m_axis->base());
qreal logMin = log10(m_axis->min()) / log10(m_axis->base());
Marek Rosa
QLogValueAxis number of labels calculation fixed
r2370 int tickCount = qAbs(ceil(logMax) - ceil(logMin));
Miikka Heikkinen
Fix sizeHint for logvalue axes that have only single tick...
r2460 if (m_axis->max() > m_axis->min() && tickCount > 0)
Marek Rosa
QLogValueAxis added. Log domain missing
r2274 ticksList = createLogValueLabels(m_axis->min(), m_axis->max(), m_axis->base(), tickCount, m_axis->labelFormat());
else
ticksList.append(QString(" "));
Miikka Heikkinen
Fix vanishing labels for first and last ticks....
r2443 // Width of horizontal axis sizeHint indicates the maximum distance labels can extend past
// first and last ticks. Base width is irrelevant.
Marek Rosa
QLogValueAxis added. Log domain missing
r2274 qreal width = 0;
qreal height = 0;
switch (which) {
case Qt::MinimumSize:{
Miikka Heikkinen
Fix axis sizehints when labels are angled...
r2412 QRectF boundingRect = labelBoundingRect(fn, "...");
Miikka Heikkinen
Fix vanishing labels for first and last ticks....
r2443 width = boundingRect.width() / 2.0;
Miikka Heikkinen
Fix axis sizehints when labels are angled...
r2412 height = boundingRect.height() + labelPadding();
Marek Rosa
QLogValueAxis added. Log domain missing
r2274 height += base.height();
Miikka Heikkinen
Fix axis sizehints when labels are angled...
r2412 sh = QSizeF(width, height);
Marek Rosa
QLogValueAxis added. Log domain missing
r2274 break;
}
case Qt::PreferredSize: {
Miikka Heikkinen
Fix axis sizehints when labels are angled...
r2412 int labelHeight = 0;
Miikka Heikkinen
Fix vanishing labels for first and last ticks....
r2443 int firstWidth = -1;
Miikka Heikkinen
Fix axis sizehints when labels are angled...
r2412 foreach (const QString& s, ticksList) {
QRect rect = labelBoundingRect(fn, s);
labelHeight = qMax(rect.height(), labelHeight);
Miikka Heikkinen
Fix vanishing labels for first and last ticks....
r2443 width = rect.width();
if (firstWidth < 0)
firstWidth = width;
Miikka Heikkinen
Fix axis sizehints when labels are angled...
r2412 }
height = labelHeight + labelPadding();
height += base.height();
Miikka Heikkinen
Fix vanishing labels for first and last ticks....
r2443 width = qMax(width, qreal(firstWidth)) / 2.0;
Miikka Heikkinen
Fix axis sizehints when labels are angled...
r2412 sh = QSizeF(width, height);
Marek Rosa
QLogValueAxis added. Log domain missing
r2274 break;
}
default:
break;
}
return sh;
}
Marek Rosa
Fixed: chart not redrawing when logaxis's logBase value changed
r2322 #include "moc_chartlogvalueaxisx_p.cpp"
Marek Rosa
QLogValueAxis added. Log domain missing
r2274 QTCOMMERCIALCHART_END_NAMESPACE