##// END OF EJS Templates
Fixed pen style pattern continuity for line series...
Fixed pen style pattern continuity for line series Reviewed-by: Mika Salmela

File last commit:

r2447:ba792163ba0e
r2457:4dae82608139
Show More
chartvalueaxisx.cpp
132 lines | 4.0 KiB | text/x-c | CppLexer
/ src / axis / valueaxis / chartvalueaxisx.cpp
Marek Rosa
Added Chart classes for value and categories axis
r1555 /****************************************************************************
**
Miikka Heikkinen
Fixed the copyright year 2012 -> 2013
r2432 ** Copyright (C) 2013 Digia Plc
Marek Rosa
Added Chart classes for value and categories axis
r1555 ** 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$
**
****************************************************************************/
Marek Rosa
renamed QValueAxis related files
r1805 #include "chartvalueaxisx_p.h"
Marek Rosa
Added Chart classes for value and categories axis
r1555 #include "qabstractaxis.h"
#include "chartpresenter_p.h"
Marek Rosa
renamed QValueAxis related files
r1805 #include "qvalueaxis.h"
Michal Klocek
Resubmit commit 394f63738c11558ae410383fbf2403f57fca4bf8 due to too many merge confilcts
r2106 #include "chartlayout_p.h"
Marek Rosa
Added Chart classes for value and categories axis
r1555 #include <QGraphicsLayout>
#include <QFontMetrics>
Michal Klocek
Refactor animator...
r1735 #include <qmath.h>
Michal Klocek
Refactors internals...
r2273 #include <QDebug>
Marek Rosa
Added Chart classes for value and categories axis
r1555
Michal Klocek
Resubmit commit 394f63738c11558ae410383fbf2403f57fca4bf8 due to too many merge confilcts
r2106
Marek Rosa
Added Chart classes for value and categories axis
r1555 QTCOMMERCIALCHART_BEGIN_NAMESPACE
Michal Klocek
Refactors internals...
r2273 ChartValueAxisX::ChartValueAxisX(QValueAxis *axis, QGraphicsItem* item )
: HorizontalAxis(axis, item),
m_axis(axis)
Marek Rosa
Added Chart classes for value and categories axis
r1555 {
Michal Klocek
Refactors internals...
r2273 QObject::connect(m_axis,SIGNAL(tickCountChanged(int)),this, SLOT(handleTickCountChanged(int)));
Marek Rosa
Fixed: axis not redrawing when labelFormat changed
r2323 QObject::connect(m_axis,SIGNAL(labelFormatChanged(QString)),this, SLOT(handleLabelFormatChanged(QString)));
Marek Rosa
Added Chart classes for value and categories axis
r1555 }
Marek Rosa
renamed QValueAxis related files
r1805 ChartValueAxisX::~ChartValueAxisX()
Marek Rosa
Added Chart classes for value and categories axis
r1555 {
}
Marek Rosa
renamed QValueAxis related files
r1805 QVector<qreal> ChartValueAxisX::calculateLayout() const
Marek Rosa
Added Chart classes for value and categories axis
r1555 {
Michal Klocek
Refactors internals...
r2273 int tickCount = m_axis->tickCount();
Q_ASSERT(tickCount >= 2);
Marek Rosa
Added Chart classes for value and categories axis
r1555
QVector<qreal> points;
Michal Klocek
Refactors internals...
r2273 points.resize(tickCount);
Marek Rosa
Added Chart classes for value and categories axis
r1555
Jani Honkonen
src folder: another massive victory for coding style police
r2131 const QRectF &gridRect = gridGeometry();
Miikka Heikkinen
Fix int-qreal rounding errors in axislayout calculations...
r2447 const qreal deltaX = gridRect.width() / (qreal(tickCount) - 1.0);
for (int i = 0; i < tickCount; ++i)
points[i] = qreal(i) * deltaX + gridRect.left();
Marek Rosa
Added Chart classes for value and categories axis
r1555 return points;
}
Marek Rosa
renamed QValueAxis related files
r1805 void ChartValueAxisX::updateGeometry()
Marek Rosa
Added Chart classes for value and categories axis
r1555 {
const QVector<qreal>& layout = ChartAxis::layout();
Jani Honkonen
src folder: another massive victory for coding style police
r2131 if (layout.isEmpty())
return;
Michal Klocek
Refactors internals...
r2273 setLabels(createValueLabels(min(),max(),layout.size(),m_axis->labelFormat()));
Michal Klocek
Refactors axis updateGeometry handling...
r2111 HorizontalAxis::updateGeometry();
Marek Rosa
Added Chart classes for value and categories axis
r1555 }
Michal Klocek
Refactors internals...
r2273 void ChartValueAxisX::handleTickCountChanged(int tick)
Michal Klocek
Refactors Domain and Axis...
r1698 {
Michal Klocek
Refactors internals...
r2273 Q_UNUSED(tick);
Michal Klocek
Fixes missing layout updated on ticks,base and format calls
r2333 QGraphicsLayoutItem::updateGeometry();
Michal Klocek
Refactors internals...
r2273 if(presenter()) presenter()->layout()->invalidate();
Michal Klocek
Refactors Domain and Axis...
r1698 }
Marek Rosa
Fixed: axis not redrawing when labelFormat changed
r2323 void ChartValueAxisX::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();
}
Jani Honkonen
src folder: another massive victory for coding style police
r2131 QSizeF ChartValueAxisX::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const
Michal Klocek
Refactors layout...
r1965 {
Q_UNUSED(constraint)
Michal Klocek
Refactors axis updateGeometry handling...
r2111 QFontMetrics fn(font());
Michal Klocek
Refactors layout...
r1965 QSizeF sh;
Michal Klocek
Refactors ChartAxis...
r2138 QSizeF base = HorizontalAxis::sizeHint(which, constraint);
Michal Klocek
Refactors internals...
r2273 QStringList ticksList = createValueLabels(min(),max(),m_axis->tickCount(),m_axis->labelFormat());
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.
Jani Honkonen
src folder: another massive victory for coding style police
r2131 qreal width = 0;
qreal height = 0;
Michal Klocek
Refactors layout...
r1965
Marek Rosa
Multiaxis support...
r2093 switch (which) {
Michal Klocek
test better layout calcuation
r2353 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();
Michal Klocek
test better layout calcuation
r2353 height += base.height();
Miikka Heikkinen
Fix axis sizehints when labels are angled...
r2412 sh = QSizeF(width, height);
Michal Klocek
test better layout calcuation
r2353 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;
Michal Klocek
test better layout calcuation
r2353 }
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);
Michal Klocek
test better layout calcuation
r2353 break;
}
default:
Miikka Heikkinen
Fix axis sizehints when labels are angled...
r2412 break;
Marek Rosa
Multiaxis support...
r2093 }
return sh;
Michal Klocek
Refactors layout...
r1965 }
Michal Klocek
Refactors internals...
r2273 #include "moc_chartvalueaxisx_p.cpp"
Marek Rosa
Added Chart classes for value and categories axis
r1555 QTCOMMERCIALCHART_END_NAMESPACE