##// END OF EJS Templates
Added option to set labels clipping...
Added option to set labels clipping It's now possible to enable and disable the point label clipping. The clipping is enabled by default. Clipping cuts the point labels on the edge of the plot area. Change-Id: Ifaa6017b4c6d55fe030effeec8b336a7fc317adf Task-number: QTRD-3520 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@theqtcompany.com>

File last commit:

r2814:79dc9c599f41
r2815:4c1d3bc34edb
Show More
percentbarchartitem.cpp
157 lines | 5.8 KiB | text/x-c | CppLexer
/ src / charts / barchart / vertical / percent / percentbarchartitem.cpp
Jani Honkonen
Add license headers
r794 /****************************************************************************
**
Titta Heikkala
Copyright header changes...
r2776 ** Copyright (C) 2015 The Qt Company Ltd
Jani Honkonen
Add license headers
r794 ** All rights reserved.
Titta Heikkala
Copyright header changes...
r2776 ** For any questions to The Qt Company, please use contact form at http://qt.io
Jani Honkonen
Add license headers
r794 **
Titta Heikkala
Updated license headers...
r2740 ** This file is part of the Qt Charts module.
Jani Honkonen
Add license headers
r794 **
Titta Heikkala
Updated license headers...
r2740 ** Licensees holding valid commercial license for Qt may use this file in
** accordance with the Qt License Agreement provided with the Software
** or, alternatively, in accordance with the terms contained in a written
Titta Heikkala
Copyright header changes...
r2776 ** agreement between you and The Qt Company.
Jani Honkonen
Add license headers
r794 **
** If you have questions regarding the use of this file, please use
Titta Heikkala
Updated license headers...
r2740 ** contact form at http://qt.io
Jani Honkonen
Add license headers
r794 **
****************************************************************************/
Titta Heikkala
Fix include syntax...
r2714 #include <private/percentbarchartitem_p.h>
#include <private/bar_p.h>
#include <private/qabstractbarseries_p.h>
#include <QtCharts/QBarSet>
#include <private/qbarset_p.h>
sauimone
percent bar chart
r101
Titta Heikkala
Qt Charts project file structure change...
r2712 QT_CHARTS_BEGIN_NAMESPACE
sauimone
percent bar chart
r101
Michal Klocek
Refactors internals...
r2273 PercentBarChartItem::PercentBarChartItem(QAbstractBarSeries *series, QGraphicsItem* item) :
AbstractBarChartItem(series, item)
sauimone
percent bar chart
r101 {
Titta Heikkala
Added possibility to show series value...
r2689 connect(series, SIGNAL(labelsPositionChanged(QAbstractBarSeries::LabelsPosition)),
this, SLOT(handleLabelsPositionChanged()));
connect(series, SIGNAL(labelsFormatChanged(QString)), this, SLOT(positionLabels()));
sauimone
percent bar chart
r101 }
Marek Rosa
Bar animations refactored
r2316 void PercentBarChartItem::initializeLayout()
{
qreal categoryCount = m_series->d_func()->categoryCount();
qreal setCount = m_series->count();
qreal barWidth = m_series->d_func()->barWidth();
m_layout.clear();
for(int category = 0; category < categoryCount; category++) {
for (int set = 0; set < setCount; set++) {
QRectF rect;
QPointF topLeft;
QPointF bottomRight;
if (domain()->type() == AbstractDomain::XLogYDomain || domain()->type() == AbstractDomain::LogXLogYDomain) {
Marek Rosa
Negative values with log axis handled
r2356 topLeft = domain()->calculateGeometryPoint(QPointF(category - barWidth / 2, domain()->minY()), m_validData);
bottomRight = domain()->calculateGeometryPoint(QPointF(category + barWidth / 2, domain()->minY()), m_validData);
Marek Rosa
Bar animations refactored
r2316 } else {
Marek Rosa
Negative values with log axis handled
r2356 topLeft = domain()->calculateGeometryPoint(QPointF(category - barWidth / 2, 0), m_validData);
bottomRight = domain()->calculateGeometryPoint(QPointF(category + barWidth / 2, 0), m_validData);
Marek Rosa
Bar animations refactored
r2316 }
Marek Rosa
Negative values with log axis handled
r2356 if (!m_validData)
return;
Marek Rosa
Bar animations refactored
r2316 rect.setTopLeft(topLeft);
rect.setBottomRight(bottomRight);
m_layout.append(rect.normalized());
}
}
}
sauimone
animations to stacked and percent barchart
r694 QVector<QRectF> PercentBarChartItem::calculateLayout()
sauimone
percent bar chart
r101 {
sauimone
animations to stacked and percent barchart
r694 QVector<QRectF> layout;
sauimone
bug fix in bar charts. Crashed, if layout was set before data. Also integrated to test app.
r165
sauimone
removed categories from barseries. categories are now only on axis
r1321 // Use temporary qreals for accuracy
qreal categoryCount = m_series->d_func()->categoryCount();
Tero Ahola
Minor modifications to properties of abstract, area and bar series
r1462 qreal setCount = m_series->count();
Marek Rosa
New bar calculate layout
r2303 qreal barWidth = m_series->d_func()->barWidth();
sauimone
correct x-positioning for barcharts
r1228
Marek Rosa
New bar calculate layout
r2303 for(int category = 0; category < categoryCount; category++) {
qreal sum = 0;
qreal categorySum = m_series->d_func()->categorySum(category);
for (int set = 0; set < setCount; set++) {
qreal value = m_series->barSets().at(set)->at(category);
Marek Rosa
BarChartItems code cleanup
r2305 QRectF rect;
Titta Heikkala
Fix assert failure with percent bar series...
r2690 qreal topY = 0;
qreal newSum = value + sum;
if (newSum > 0)
topY = 100 * newSum / categorySum;
qreal bottomY = 0;
if (sum > 0)
bottomY = 100 * sum / categorySum;
QPointF topLeft = domain()->calculateGeometryPoint(QPointF(category - barWidth/2, topY), m_validData);
Marek Rosa
New bar calculate layout
r2303 QPointF bottomRight;
Marek Rosa
BarChartItems code cleanup
r2305 if (domain()->type() == AbstractDomain::XLogYDomain || domain()->type() == AbstractDomain::LogXLogYDomain)
Titta Heikkala
Fix assert failure with percent bar series...
r2690 bottomRight = domain()->calculateGeometryPoint(QPointF(category + barWidth/2, set ? bottomY : domain()->minY()), m_validData);
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 else
Titta Heikkala
Fix assert failure with percent bar series...
r2690 bottomRight = domain()->calculateGeometryPoint(QPointF(category + barWidth/2, set ? bottomY : 0), m_validData);
Marek Rosa
Negative values with log axis handled
r2356
Marek Rosa
New bar calculate layout
r2303 rect.setTopLeft(topLeft);
rect.setBottomRight(bottomRight);
Marek Rosa
Bar animations refactored
r2316 layout.append(rect.normalized());
Titta Heikkala
Fix assert failure with percent bar series...
r2690 sum = newSum;
sauimone
Floating values to bar charts
r263 }
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 }
Marek Rosa
BarChartItems code cleanup
r2305 return layout;
}
Marek Rosa
New bar calculate layout
r2303
Marek Rosa
BarChartItems code cleanup
r2305 void PercentBarChartItem::handleUpdatedBars()
{
// Handle changes in pen, brush, labels etc.
int categoryCount = m_series->d_func()->categoryCount();
int setCount = m_series->count();
int itemIndex(0);
Titta Heikkala
Added possibility to show series value...
r2689 static const QString valueTag(QLatin1String("@value"));
Marek Rosa
New bar calculate layout
r2303
Marek Rosa
BarChartItems code cleanup
r2305 for (int category = 0; category < categoryCount; category++) {
for (int set = 0; set < setCount; set++) {
QBarSetPrivate *barSet = m_series->d_func()->barsetAt(set)->d_ptr.data();
Bar *bar = m_bars.at(itemIndex);
bar->setPen(barSet->m_pen);
bar->setBrush(barSet->m_brush);
bar->update();
Miikka Heikkinen
Added HTML support for various text items...
r2539 QGraphicsTextItem *label = m_labels.at(itemIndex);
Miikka Heikkinen
Added QChart::localizeNumbers...
r2707 qreal p = m_series->d_func()->percentageAt(set, category) * 100.0;
QString vString(presenter()->numberToString(p, 'f', 0));
Titta Heikkala
Added possibility to show series value...
r2689 QString valueLabel;
Titta Heikkala
Fixed bar label visibility...
r2814 if (p == 0) {
label->setVisible(false);
Titta Heikkala
Added possibility to show series value...
r2689 } else {
Titta Heikkala
Fixed bar label visibility...
r2814 label->setVisible(true);
if (m_series->labelsFormat().isEmpty()) {
vString.append(QStringLiteral("%"));
valueLabel = vString;
} else {
valueLabel = m_series->labelsFormat();
valueLabel.replace(valueTag, vString);
}
Titta Heikkala
Added possibility to show series value...
r2689 }
label->setHtml(valueLabel);
Marek Rosa
BarChartItems code cleanup
r2305 label->setFont(barSet->m_labelFont);
Miikka Heikkinen
Added HTML support for various text items...
r2539 label->setDefaultTextColor(barSet->m_labelBrush.color());
Marek Rosa
BarChartItems code cleanup
r2305 label->update();
itemIndex++;
}
}
sauimone
percent bar chart
r101 }
Titta Heikkala
Added possibility to show series value...
r2689 void PercentBarChartItem::handleLabelsPositionChanged()
{
positionLabels();
}
void PercentBarChartItem::positionLabels()
{
Miikka Heikkinen
Added support for bar series value label angle...
r2802 positionLabelsVertical();
Titta Heikkala
Added possibility to show series value...
r2689 }
sauimone
combined barpresenterbase and barpresenter. renamed barchartpresenters to barchartitems
r666 #include "moc_percentbarchartitem_p.cpp"
sauimone
moved tooltip to presenter
r288
Titta Heikkala
Qt Charts project file structure change...
r2712 QT_CHARTS_END_NAMESPACE