##// END OF EJS Templates
Added QChart::locale property...
Added QChart::locale property This locale is used for localizing the numbers on various labels when localizeNumbers is set to true. It is also the locale that QDateTimeAxis labels use for month and day names. Task-number: QTRD-3179 Change-Id: Ib9a9cad770c5a6890311fe45a1d4cabd5f40aff4 Reviewed-by: Mika Salmela <mika.salmela@digia.com>

File last commit:

r2688:bdd8266c9c7d
r2708:b421e87aa00a
Show More
chartvalueaxisy.cpp
128 lines | 4.0 KiB | text/x-c | CppLexer
/ src / axis / valueaxis / chartvalueaxisy.cpp
Marek Rosa
Added Chart classes for value and categories axis
r1555 /****************************************************************************
**
Titta Heikkala
Update copyright year...
r2688 ** Copyright (C) 2014 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
**
Miikka Heikkinen
Qt Commercial -> Qt Enterprise...
r2574 ** This file is part of the Qt Enterprise Charts Add-on.
Marek Rosa
Added Chart classes for value and categories axis
r1555 **
** $QT_BEGIN_LICENSE$
Miikka Heikkinen
Qt Commercial -> Qt Enterprise...
r2574 ** Licensees holding valid Qt Enterprise licenses may use this file in
** accordance with the Qt Enterprise License Agreement provided with the
Marek Rosa
Added Chart classes for value and categories axis
r1555 ** 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 "chartvalueaxisy_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"
Miikka Heikkinen
Add Polar chart support...
r2483 #include "abstractchartlayout_p.h"
Marek Rosa
Added Chart classes for value and categories axis
r1555 #include <QGraphicsLayout>
Michal Klocek
Refactor animator...
r1735 #include <qmath.h>
Michal Klocek
Updates axis drawing code...
r2133 #include <QDebug>
Marek Rosa
Added Chart classes for value and categories axis
r1555
QTCOMMERCIALCHART_BEGIN_NAMESPACE
Miikka Heikkinen
Add Polar chart support...
r2483 ChartValueAxisY::ChartValueAxisY(QValueAxis *axis, QGraphicsItem *item)
Michal Klocek
Refactors internals...
r2273 : VerticalAxis(axis, item),
Jani Honkonen
src folder: another massive victory for coding style police
r2131 m_axis(axis)
Marek Rosa
Added Chart classes for value and categories axis
r1555 {
Miikka Heikkinen
Add Polar chart support...
r2483 QObject::connect(m_axis, SIGNAL(tickCountChanged(int)), this, SLOT(handleTickCountChanged(int)));
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 ChartValueAxisY::~ChartValueAxisY()
Marek Rosa
Added Chart classes for value and categories axis
r1555 {
}
Marek Rosa
renamed QValueAxis related files
r1805 QVector<qreal> ChartValueAxisY::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();
Michal Klocek
Refactors axis updateGeometry handling...
r2111
Miikka Heikkinen
Fix int-qreal rounding errors in axislayout calculations...
r2447 const qreal deltaY = gridRect.height() / (qreal(tickCount) - 1.0);
for (int i = 0; i < tickCount; ++i)
points[i] = qreal(i) * -deltaY + gridRect.bottom();
Marek Rosa
Removed generic chartaxis
r1561
Marek Rosa
Added Chart classes for value and categories axis
r1555 return points;
}
Marek Rosa
renamed QValueAxis related files
r1805 void ChartValueAxisY::updateGeometry()
Marek Rosa
Added Chart classes for value and categories axis
r1555 {
Miikka Heikkinen
Add Polar chart support...
r2483 const QVector<qreal> &layout = ChartAxisElement::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 VerticalAxis::updateGeometry();
Marek Rosa
Added Chart classes for value and categories axis
r1555 }
Michal Klocek
Refactors internals...
r2273 void ChartValueAxisY::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 ChartValueAxisY::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 ChartValueAxisY::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const
Michal Klocek
Refactors layout...
r1965 {
Q_UNUSED(constraint)
QSizeF sh;
Michal Klocek
Refactors ChartAxis...
r2138 QSizeF base = VerticalAxis::sizeHint(which, constraint);
Michal Klocek
Refactors internals...
r2273 QStringList ticksList = createValueLabels(min(),max(),m_axis->tickCount(),m_axis->labelFormat());
Jani Honkonen
src folder: another massive victory for coding style police
r2131 qreal width = 0;
Miikka Heikkinen
Fix vanishing labels for first and last ticks....
r2443 // Height of vertical axis sizeHint indicates the maximum distance labels can extend past
// first and last ticks. Base height is irrelevant.
Jani Honkonen
src folder: another massive victory for coding style police
r2131 qreal height = 0;
Michal Klocek
Refactors layout...
r1965
switch (which) {
Marek Rosa
Multiaxis support...
r2093 case Qt::MinimumSize: {
Miikka Heikkinen
Added HTML support for various text items...
r2539 QRectF boundingRect = ChartPresenter::textBoundingRect(axis()->labelsFont(), "...", axis()->labelsAngle());
Miikka Heikkinen
Fix multiline axis label positioning....
r2534 width = boundingRect.width() + labelPadding() + base.width() + 1.0;
Miikka Heikkinen
Fix vanishing labels for first and last ticks....
r2443 height = boundingRect.height() / 2.0;
Miikka Heikkinen
Fix axis sizehints when labels are angled...
r2412 sh = QSizeF(width, height);
Marek Rosa
Multiaxis support...
r2093 break;
Michal Klocek
Refactors layout:...
r2105 }
Miikka Heikkinen
Fix axis sizehints when labels are angled...
r2412 case Qt::PreferredSize: {
Miikka Heikkinen
Fix multiline axis label positioning....
r2534 qreal labelWidth = 0.0;
qreal firstHeight = -1.0;
Miikka Heikkinen
Fix axis sizehints when labels are angled...
r2412 foreach (const QString& s, ticksList) {
Miikka Heikkinen
Added HTML support for various text items...
r2539 QRectF rect = ChartPresenter::textBoundingRect(axis()->labelsFont(), s, axis()->labelsAngle());
Miikka Heikkinen
Fix axis sizehints when labels are angled...
r2412 labelWidth = qMax(rect.width(), labelWidth);
Miikka Heikkinen
Fix vanishing labels for first and last ticks....
r2443 height = rect.height();
Miikka Heikkinen
Fix multiline axis label positioning....
r2534 if (firstHeight < 0.0)
Miikka Heikkinen
Fix vanishing labels for first and last ticks....
r2443 firstHeight = height;
Miikka Heikkinen
Fix axis sizehints when labels are angled...
r2412 }
Miikka Heikkinen
Fix multiline axis label positioning....
r2534 width = labelWidth + labelPadding() + base.width() + 2.0; //two pixels of tolerance
height = qMax(height, firstHeight) / 2.0;
Miikka Heikkinen
Fix axis sizehints when labels are angled...
r2412 sh = QSizeF(width, height);
Marek Rosa
Multiaxis support...
r2093 break;
Michal Klocek
Refactors layout:...
r2105 }
Marek Rosa
Multiaxis support...
r2093 default:
Michal Klocek
Refactors layout...
r1965 break;
}
return sh;
}
Michal Klocek
Refactors Domain and Axis...
r1698
Michal Klocek
Refactors internals...
r2273 #include "moc_chartvalueaxisy_p.cpp"
Marek Rosa
Added Chart classes for value and categories axis
r1555 QTCOMMERCIALCHART_END_NAMESPACE