@@ -0,0 +1,6 | |||||
|
1 | !include( ../examples.pri ) { | |||
|
2 | error( "Couldn't find the examples.pri file!" ) | |||
|
3 | } | |||
|
4 | ||||
|
5 | TARGET = horizontalpercentbarchart | |||
|
6 | SOURCES += main.cpp |
@@ -0,0 +1,95 | |||||
|
1 | /**************************************************************************** | |||
|
2 | ** | |||
|
3 | ** Copyright (C) 2012 Digia Plc | |||
|
4 | ** All rights reserved. | |||
|
5 | ** For any questions to Digia, please use contact form at http://qt.digia.com | |||
|
6 | ** | |||
|
7 | ** This file is part of the Qt Commercial Charts Add-on. | |||
|
8 | ** | |||
|
9 | ** $QT_BEGIN_LICENSE$ | |||
|
10 | ** Licensees holding valid Qt Commercial licenses may use this file in | |||
|
11 | ** accordance with the Qt Commercial License Agreement provided with the | |||
|
12 | ** Software or, alternatively, in accordance with the terms contained in | |||
|
13 | ** a written agreement between you and Digia. | |||
|
14 | ** | |||
|
15 | ** If you have questions regarding the use of this file, please use | |||
|
16 | ** contact form at http://qt.digia.com | |||
|
17 | ** $QT_END_LICENSE$ | |||
|
18 | ** | |||
|
19 | ****************************************************************************/ | |||
|
20 | ||||
|
21 | #include <QApplication> | |||
|
22 | #include <QMainWindow> | |||
|
23 | #include <QChartView> | |||
|
24 | #include <QBarSeries> | |||
|
25 | #include <QBarSet> | |||
|
26 | #include <QLegend> | |||
|
27 | #include <QBarCategoriesAxis> | |||
|
28 | #include <QHorizontalPercentBarSeries> | |||
|
29 | ||||
|
30 | QTCOMMERCIALCHART_USE_NAMESPACE | |||
|
31 | ||||
|
32 | int main(int argc, char *argv[]) | |||
|
33 | { | |||
|
34 | QApplication a(argc, argv); | |||
|
35 | ||||
|
36 | //![1] | |||
|
37 | QBarSet *set0 = new QBarSet("Jane"); | |||
|
38 | QBarSet *set1 = new QBarSet("John"); | |||
|
39 | QBarSet *set2 = new QBarSet("Axel"); | |||
|
40 | QBarSet *set3 = new QBarSet("Mary"); | |||
|
41 | QBarSet *set4 = new QBarSet("Samantha"); | |||
|
42 | ||||
|
43 | *set0 << 1 << 2 << 3 << 4 << 5 << 6; | |||
|
44 | *set1 << 5 << 0 << 0 << 4 << 0 << 7; | |||
|
45 | *set2 << 3 << 5 << 8 << 13 << 8 << 5; | |||
|
46 | *set3 << 5 << 6 << 7 << 3 << 4 << 5; | |||
|
47 | *set4 << 9 << 7 << 5 << 3 << 1 << 2; | |||
|
48 | //![1] | |||
|
49 | ||||
|
50 | //![2] | |||
|
51 | QHorizontalPercentBarSeries *series = new QHorizontalPercentBarSeries(); | |||
|
52 | series->append(set0); | |||
|
53 | series->append(set1); | |||
|
54 | series->append(set2); | |||
|
55 | series->append(set3); | |||
|
56 | series->append(set4); | |||
|
57 | ||||
|
58 | //![2] | |||
|
59 | ||||
|
60 | //![3] | |||
|
61 | QChart* chart = new QChart(); | |||
|
62 | chart->addSeries(series); | |||
|
63 | chart->setTitle("Simple horizontal stacked barchart example"); | |||
|
64 | chart->createDefaultAxes(); | |||
|
65 | chart->setAnimationOptions(QChart::SeriesAnimations); | |||
|
66 | //![3] | |||
|
67 | ||||
|
68 | //![4] | |||
|
69 | QStringList categories; | |||
|
70 | categories << "Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun"; | |||
|
71 | QBarCategoriesAxis* axis = new QBarCategoriesAxis(); | |||
|
72 | axis->append(categories); | |||
|
73 | chart->createDefaultAxes(); | |||
|
74 | chart->setAxisY(axis,series); | |||
|
75 | //![4] | |||
|
76 | ||||
|
77 | //![5] | |||
|
78 | chart->legend()->setVisible(true); | |||
|
79 | chart->legend()->setAlignment(Qt::AlignBottom); | |||
|
80 | //![5] | |||
|
81 | ||||
|
82 | //![6] | |||
|
83 | QChartView* chartView = new QChartView(chart); | |||
|
84 | chartView->setRenderHint(QPainter::Antialiasing); | |||
|
85 | //![6] | |||
|
86 | ||||
|
87 | //![7] | |||
|
88 | QMainWindow window; | |||
|
89 | window.setCentralWidget(chartView); | |||
|
90 | window.resize(400, 300); | |||
|
91 | window.show(); | |||
|
92 | //![7] | |||
|
93 | ||||
|
94 | return a.exec(); | |||
|
95 | } |
@@ -0,0 +1,64 | |||||
|
1 | /**************************************************************************** | |||
|
2 | ** | |||
|
3 | ** Copyright (C) 2012 Digia Plc | |||
|
4 | ** All rights reserved. | |||
|
5 | ** For any questions to Digia, please use contact form at http://qt.digia.com | |||
|
6 | ** | |||
|
7 | ** This file is part of the Qt Commercial Charts Add-on. | |||
|
8 | ** | |||
|
9 | ** $QT_BEGIN_LICENSE$ | |||
|
10 | ** Licensees holding valid Qt Commercial licenses may use this file in | |||
|
11 | ** accordance with the Qt Commercial License Agreement provided with the | |||
|
12 | ** Software or, alternatively, in accordance with the terms contained in | |||
|
13 | ** a written agreement between you and Digia. | |||
|
14 | ** | |||
|
15 | ** If you have questions regarding the use of this file, please use | |||
|
16 | ** contact form at http://qt.digia.com | |||
|
17 | ** $QT_END_LICENSE$ | |||
|
18 | ** | |||
|
19 | ****************************************************************************/ | |||
|
20 | ||||
|
21 | #include "horizontalpercentbaranimation_p.h" | |||
|
22 | #include "abstractbarchartitem_p.h" | |||
|
23 | #include <QTimer> | |||
|
24 | ||||
|
25 | Q_DECLARE_METATYPE(QVector<QRectF>) | |||
|
26 | ||||
|
27 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |||
|
28 | ||||
|
29 | HorizontalPercentBarAnimation::HorizontalPercentBarAnimation(AbstractBarChartItem *item) : | |||
|
30 | AbstractBarAnimation(item) | |||
|
31 | { | |||
|
32 | } | |||
|
33 | ||||
|
34 | HorizontalPercentBarAnimation::~HorizontalPercentBarAnimation() | |||
|
35 | { | |||
|
36 | ||||
|
37 | } | |||
|
38 | ||||
|
39 | ||||
|
40 | QVariant HorizontalPercentBarAnimation::interpolated(const QVariant &from, const QVariant &to, qreal progress) const | |||
|
41 | { | |||
|
42 | QVector<QRectF> startVector = qVariantValue<QVector<QRectF> >(from); | |||
|
43 | QVector<QRectF> endVector = qVariantValue<QVector<QRectF> >(to); | |||
|
44 | QVector<QRectF> result; | |||
|
45 | ||||
|
46 | Q_ASSERT(startVector.count() == endVector.count()); | |||
|
47 | ||||
|
48 | qreal xAxis = m_item->geometry().x(); | |||
|
49 | ||||
|
50 | for(int i = 0; i < startVector.count(); i++) { | |||
|
51 | qreal h = endVector[i].height(); | |||
|
52 | qreal w = endVector[i].width() * progress; | |||
|
53 | qreal x = xAxis + ((endVector[i].left() - xAxis) * progress); | |||
|
54 | qreal y = endVector[i].top(); | |||
|
55 | ||||
|
56 | QRectF value(x,y,w,h); | |||
|
57 | result << value; | |||
|
58 | } | |||
|
59 | return qVariantFromValue(result); | |||
|
60 | } | |||
|
61 | ||||
|
62 | #include "moc_horizontalpercentbaranimation_p.cpp" | |||
|
63 | ||||
|
64 | QTCOMMERCIALCHART_END_NAMESPACE |
@@ -0,0 +1,52 | |||||
|
1 | /**************************************************************************** | |||
|
2 | ** | |||
|
3 | ** Copyright (C) 2012 Digia Plc | |||
|
4 | ** All rights reserved. | |||
|
5 | ** For any questions to Digia, please use contact form at http://qt.digia.com | |||
|
6 | ** | |||
|
7 | ** This file is part of the Qt Commercial Charts Add-on. | |||
|
8 | ** | |||
|
9 | ** $QT_BEGIN_LICENSE$ | |||
|
10 | ** Licensees holding valid Qt Commercial licenses may use this file in | |||
|
11 | ** accordance with the Qt Commercial License Agreement provided with the | |||
|
12 | ** Software or, alternatively, in accordance with the terms contained in | |||
|
13 | ** a written agreement between you and Digia. | |||
|
14 | ** | |||
|
15 | ** If you have questions regarding the use of this file, please use | |||
|
16 | ** contact form at http://qt.digia.com | |||
|
17 | ** $QT_END_LICENSE$ | |||
|
18 | ** | |||
|
19 | ****************************************************************************/ | |||
|
20 | ||||
|
21 | // W A R N I N G | |||
|
22 | // ------------- | |||
|
23 | // | |||
|
24 | // This file is not part of the QtCommercial Chart API. It exists purely as an | |||
|
25 | // implementation detail. This header file may change from version to | |||
|
26 | // version without notice, or even be removed. | |||
|
27 | // | |||
|
28 | // We mean it. | |||
|
29 | ||||
|
30 | #ifndef HORIZONTALPERCENTBARANIMATION_P_H | |||
|
31 | #define HORIZONTALPERCENTBARANIMATION_P_H | |||
|
32 | ||||
|
33 | #include "abstractbaranimation_p.h" | |||
|
34 | #include "chartanimation_p.h" | |||
|
35 | #include "abstractbarchartitem_p.h" | |||
|
36 | ||||
|
37 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |||
|
38 | ||||
|
39 | class HorizontalPercentBarAnimation : public AbstractBarAnimation | |||
|
40 | { | |||
|
41 | Q_OBJECT | |||
|
42 | public: | |||
|
43 | explicit HorizontalPercentBarAnimation(AbstractBarChartItem *item); | |||
|
44 | ~HorizontalPercentBarAnimation(); | |||
|
45 | ||||
|
46 | virtual QVariant interpolated(const QVariant &from, const QVariant &to, qreal progress) const; | |||
|
47 | ||||
|
48 | }; | |||
|
49 | ||||
|
50 | QTCOMMERCIALCHART_END_NAMESPACE | |||
|
51 | ||||
|
52 | #endif // HORIZONTALPERCENTBARANIMATION_P_H |
@@ -0,0 +1,102 | |||||
|
1 | /**************************************************************************** | |||
|
2 | ** | |||
|
3 | ** Copyright (C) 2012 Digia Plc | |||
|
4 | ** All rights reserved. | |||
|
5 | ** For any questions to Digia, please use contact form at http://qt.digia.com | |||
|
6 | ** | |||
|
7 | ** This file is part of the Qt Commercial Charts Add-on. | |||
|
8 | ** | |||
|
9 | ** $QT_BEGIN_LICENSE$ | |||
|
10 | ** Licensees holding valid Qt Commercial licenses may use this file in | |||
|
11 | ** accordance with the Qt Commercial License Agreement provided with the | |||
|
12 | ** Software or, alternatively, in accordance with the terms contained in | |||
|
13 | ** a written agreement between you and Digia. | |||
|
14 | ** | |||
|
15 | ** If you have questions regarding the use of this file, please use | |||
|
16 | ** contact form at http://qt.digia.com | |||
|
17 | ** $QT_END_LICENSE$ | |||
|
18 | ** | |||
|
19 | ****************************************************************************/ | |||
|
20 | ||||
|
21 | #include "horizontalpercentbarchartitem_p.h" | |||
|
22 | #include "qabstractbarseries_p.h" | |||
|
23 | #include "qbarset_p.h" | |||
|
24 | #include "bar_p.h" | |||
|
25 | #include <QDebug> | |||
|
26 | ||||
|
27 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |||
|
28 | ||||
|
29 | HorizontalPercentBarChartItem::HorizontalPercentBarChartItem(QAbstractBarSeries *series, ChartPresenter *presenter) : | |||
|
30 | AbstractBarChartItem(series, presenter) | |||
|
31 | { | |||
|
32 | } | |||
|
33 | ||||
|
34 | QVector<QRectF> HorizontalPercentBarChartItem::calculateLayout() | |||
|
35 | { | |||
|
36 | QVector<QRectF> layout; | |||
|
37 | ||||
|
38 | // Use temporary qreals for accuracy | |||
|
39 | qreal categoryCount = m_series->d_func()->categoryCount(); | |||
|
40 | qreal setCount = m_series->count(); | |||
|
41 | bool barsVisible = m_series->isVisible(); | |||
|
42 | ||||
|
43 | // Domain: | |||
|
44 | qreal width = geometry().width(); | |||
|
45 | qreal height = geometry().height(); | |||
|
46 | qreal rangeY = m_domainMaxY - m_domainMinY; | |||
|
47 | qreal rangeX = m_domainMaxX - m_domainMinX; | |||
|
48 | qreal scaleY = (height / rangeY); | |||
|
49 | qreal scaleX = (width / rangeX); | |||
|
50 | qreal barHeight = scaleY * m_series->d_func()->barWidth(); // On horizontal chart barWidth of the barseries means height of the rect. | |||
|
51 | ||||
|
52 | int itemIndex(0); | |||
|
53 | for (int category = 0; category < categoryCount; category++) { | |||
|
54 | qreal colSum = m_series->d_func()->categorySum(category); | |||
|
55 | qreal percentage = (100 / colSum); | |||
|
56 | qreal xPos = rangeX * m_domainMinX + geometry().left(); | |||
|
57 | for (int set = 0; set < setCount; set++) { | |||
|
58 | QBarSetPrivate* barSet = m_series->d_func()->barsetAt(set)->d_ptr.data(); | |||
|
59 | ||||
|
60 | qreal yPos = -(barSet->pos(category) - m_domainMinY -0.5) * scaleY + m_rect.bottom() - barHeight/2; | |||
|
61 | ||||
|
62 | qreal barWidth = barSet->value(category) * percentage * scaleX; | |||
|
63 | Bar* bar = m_bars.at(itemIndex); | |||
|
64 | ||||
|
65 | QRectF rect(xPos, yPos - barHeight, barWidth, barHeight); | |||
|
66 | layout.append(rect); | |||
|
67 | bar->setPen(barSet->m_pen); | |||
|
68 | bar->setBrush(barSet->m_brush); | |||
|
69 | if (qFuzzyIsNull(barHeight)) { | |||
|
70 | bar->setVisible(false); | |||
|
71 | } else { | |||
|
72 | bar->setVisible(barsVisible); | |||
|
73 | } | |||
|
74 | ||||
|
75 | QGraphicsSimpleTextItem* label = m_labels.at(itemIndex); | |||
|
76 | ||||
|
77 | if (!qFuzzyIsNull(m_series->d_func()->valueAt(set,category))) { | |||
|
78 | int p = m_series->d_func()->percentageAt(set,category) * 100; | |||
|
79 | QString vString(QString::number(p)); | |||
|
80 | vString.truncate(3); | |||
|
81 | vString.append("%"); | |||
|
82 | label->setText(vString); | |||
|
83 | } else { | |||
|
84 | label->setText(QString("")); | |||
|
85 | } | |||
|
86 | ||||
|
87 | label->setPos(xPos + (rect.width()/2 - label->boundingRect().width()/2) | |||
|
88 | ,yPos - barHeight/2 - label->boundingRect().height()/2); | |||
|
89 | label->setFont(barSet->m_labelFont); | |||
|
90 | label->setBrush(barSet->m_labelBrush); | |||
|
91 | ||||
|
92 | itemIndex++; | |||
|
93 | xPos += barWidth; | |||
|
94 | } | |||
|
95 | } | |||
|
96 | return layout; | |||
|
97 | } | |||
|
98 | ||||
|
99 | #include "moc_horizontalpercentbarchartitem_p.cpp" | |||
|
100 | ||||
|
101 | QTCOMMERCIALCHART_END_NAMESPACE | |||
|
102 |
@@ -0,0 +1,50 | |||||
|
1 | /**************************************************************************** | |||
|
2 | ** | |||
|
3 | ** Copyright (C) 2012 Digia Plc | |||
|
4 | ** All rights reserved. | |||
|
5 | ** For any questions to Digia, please use contact form at http://qt.digia.com | |||
|
6 | ** | |||
|
7 | ** This file is part of the Qt Commercial Charts Add-on. | |||
|
8 | ** | |||
|
9 | ** $QT_BEGIN_LICENSE$ | |||
|
10 | ** Licensees holding valid Qt Commercial licenses may use this file in | |||
|
11 | ** accordance with the Qt Commercial License Agreement provided with the | |||
|
12 | ** Software or, alternatively, in accordance with the terms contained in | |||
|
13 | ** a written agreement between you and Digia. | |||
|
14 | ** | |||
|
15 | ** If you have questions regarding the use of this file, please use | |||
|
16 | ** contact form at http://qt.digia.com | |||
|
17 | ** $QT_END_LICENSE$ | |||
|
18 | ** | |||
|
19 | ****************************************************************************/ | |||
|
20 | ||||
|
21 | // W A R N I N G | |||
|
22 | // ------------- | |||
|
23 | // | |||
|
24 | // This file is not part of the QtCommercial Chart API. It exists purely as an | |||
|
25 | // implementation detail. This header file may change from version to | |||
|
26 | // version without notice, or even be removed. | |||
|
27 | // | |||
|
28 | // We mean it. | |||
|
29 | ||||
|
30 | #ifndef HORIZONTALPERCENTBARCHARTITEM_P_H | |||
|
31 | #define HORIZONTALPERCENTBARCHARTITEM_P_H | |||
|
32 | ||||
|
33 | #include "abstractbarchartitem_p.h" | |||
|
34 | #include <QGraphicsItem> | |||
|
35 | ||||
|
36 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |||
|
37 | ||||
|
38 | class HorizontalPercentBarChartItem : public AbstractBarChartItem | |||
|
39 | { | |||
|
40 | Q_OBJECT | |||
|
41 | public: | |||
|
42 | HorizontalPercentBarChartItem(QAbstractBarSeries *series, ChartPresenter *presenter); | |||
|
43 | ||||
|
44 | private: | |||
|
45 | virtual QVector<QRectF> calculateLayout(); | |||
|
46 | }; | |||
|
47 | ||||
|
48 | QTCOMMERCIALCHART_END_NAMESPACE | |||
|
49 | ||||
|
50 | #endif // HORIZONTALPERCENTBARCHARTITEM_P_H |
@@ -0,0 +1,75 | |||||
|
1 | #include "qhorizontalpercentbarseries.h" | |||
|
2 | #include "qhorizontalpercentbarseries_p.h" | |||
|
3 | #include "horizontalpercentbarchartitem_p.h" | |||
|
4 | #include "horizontalpercentbaranimation_p.h" | |||
|
5 | ||||
|
6 | #include "chartdataset_p.h" | |||
|
7 | #include "charttheme_p.h" | |||
|
8 | ||||
|
9 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |||
|
10 | ||||
|
11 | QHorizontalPercentBarSeries::QHorizontalPercentBarSeries(QObject *parent) : | |||
|
12 | QAbstractBarSeries(*new QHorizontalPercentBarSeriesPrivate(this), parent) | |||
|
13 | { | |||
|
14 | } | |||
|
15 | ||||
|
16 | QAbstractSeries::SeriesType QHorizontalPercentBarSeries::type() const | |||
|
17 | { | |||
|
18 | return QAbstractSeries::SeriesTypeHorizontalPercentBar; | |||
|
19 | } | |||
|
20 | ||||
|
21 | ||||
|
22 | ||||
|
23 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | |||
|
24 | ||||
|
25 | QHorizontalPercentBarSeriesPrivate::QHorizontalPercentBarSeriesPrivate(QHorizontalPercentBarSeries *q) : QAbstractBarSeriesPrivate(q) | |||
|
26 | { | |||
|
27 | ||||
|
28 | } | |||
|
29 | ||||
|
30 | void QHorizontalPercentBarSeriesPrivate::scaleDomain(Domain& domain) | |||
|
31 | { | |||
|
32 | qreal minX(domain.minX()); | |||
|
33 | qreal minY(domain.minY()); | |||
|
34 | qreal maxX(domain.maxX()); | |||
|
35 | qreal maxY(domain.maxY()); | |||
|
36 | int tickXCount(domain.tickXCount()); | |||
|
37 | int tickYCount(domain.tickYCount()); | |||
|
38 | ||||
|
39 | qreal y = categoryCount(); | |||
|
40 | minX = 0; | |||
|
41 | maxX = 100; | |||
|
42 | minY = qMin(minY, - (qreal)0.5); | |||
|
43 | maxY = qMax(maxY, y - (qreal)0.5); | |||
|
44 | tickYCount = y+1; | |||
|
45 | ||||
|
46 | domain.setRange(minX,maxX,minY,maxY,tickXCount,tickYCount); | |||
|
47 | } | |||
|
48 | ||||
|
49 | Chart* QHorizontalPercentBarSeriesPrivate::createGraphics(ChartPresenter* presenter) | |||
|
50 | { | |||
|
51 | Q_Q(QHorizontalPercentBarSeries); | |||
|
52 | ||||
|
53 | HorizontalPercentBarChartItem* bar = new HorizontalPercentBarChartItem(q,presenter); | |||
|
54 | if(presenter->animationOptions().testFlag(QChart::SeriesAnimations)) { | |||
|
55 | bar->setAnimator(presenter->animator()); | |||
|
56 | bar->setAnimation(new HorizontalPercentBarAnimation(bar)); | |||
|
57 | } | |||
|
58 | presenter->chartTheme()->decorate(q, presenter->dataSet()->seriesIndex(q)); | |||
|
59 | return bar; | |||
|
60 | } | |||
|
61 | ||||
|
62 | QAbstractAxis::AxisType QHorizontalPercentBarSeriesPrivate::defaultAxisXType() const | |||
|
63 | { | |||
|
64 | return QAbstractAxis::AxisTypeValues; | |||
|
65 | } | |||
|
66 | ||||
|
67 | QAbstractAxis::AxisType QHorizontalPercentBarSeriesPrivate::defaultAxisYType() const | |||
|
68 | { | |||
|
69 | return QAbstractAxis::AxisTypeCategories; | |||
|
70 | } | |||
|
71 | ||||
|
72 | ||||
|
73 | #include "moc_qhorizontalpercentbarseries.cpp" | |||
|
74 | ||||
|
75 | QTCOMMERCIALCHART_END_NAMESPACE |
@@ -0,0 +1,44 | |||||
|
1 | /**************************************************************************** | |||
|
2 | ** | |||
|
3 | ** Copyright (C) 2012 Digia Plc | |||
|
4 | ** All rights reserved. | |||
|
5 | ** For any questions to Digia, please use contact form at http://qt.digia.com | |||
|
6 | ** | |||
|
7 | ** This file is part of the Qt Commercial Charts Add-on. | |||
|
8 | ** | |||
|
9 | ** $QT_BEGIN_LICENSE$ | |||
|
10 | ** Licensees holding valid Qt Commercial licenses may use this file in | |||
|
11 | ** accordance with the Qt Commercial License Agreement provided with the | |||
|
12 | ** Software or, alternatively, in accordance with the terms contained in | |||
|
13 | ** a written agreement between you and Digia. | |||
|
14 | ** | |||
|
15 | ** If you have questions regarding the use of this file, please use | |||
|
16 | ** contact form at http://qt.digia.com | |||
|
17 | ** $QT_END_LICENSE$ | |||
|
18 | ** | |||
|
19 | ****************************************************************************/ | |||
|
20 | ||||
|
21 | #ifndef QHORIZONTALPERCENTBARSERIES_H | |||
|
22 | #define QHORIZONTALPERCENTBARSERIES_H | |||
|
23 | ||||
|
24 | #include <qabstractbarseries.h> | |||
|
25 | ||||
|
26 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |||
|
27 | ||||
|
28 | class QHorizontalPercentBarSeriesPrivate; | |||
|
29 | ||||
|
30 | class QTCOMMERCIALCHART_EXPORT QHorizontalPercentBarSeries : public QAbstractBarSeries | |||
|
31 | { | |||
|
32 | Q_OBJECT | |||
|
33 | public: | |||
|
34 | explicit QHorizontalPercentBarSeries(QObject *parent = 0); | |||
|
35 | QAbstractSeries::SeriesType type() const; | |||
|
36 | ||||
|
37 | private: | |||
|
38 | Q_DECLARE_PRIVATE(QHorizontalPercentBarSeries) | |||
|
39 | Q_DISABLE_COPY(QHorizontalPercentBarSeries) | |||
|
40 | }; | |||
|
41 | ||||
|
42 | QTCOMMERCIALCHART_END_NAMESPACE | |||
|
43 | ||||
|
44 | #endif // QHORIZONTALPERCENTBARSERIES_H |
@@ -0,0 +1,53 | |||||
|
1 | /**************************************************************************** | |||
|
2 | ** | |||
|
3 | ** Copyright (C) 2012 Digia Plc | |||
|
4 | ** All rights reserved. | |||
|
5 | ** For any questions to Digia, please use contact form at http://qt.digia.com | |||
|
6 | ** | |||
|
7 | ** This file is part of the Qt Commercial Charts Add-on. | |||
|
8 | ** | |||
|
9 | ** $QT_BEGIN_LICENSE$ | |||
|
10 | ** Licensees holding valid Qt Commercial licenses may use this file in | |||
|
11 | ** accordance with the Qt Commercial License Agreement provided with the | |||
|
12 | ** Software or, alternatively, in accordance with the terms contained in | |||
|
13 | ** a written agreement between you and Digia. | |||
|
14 | ** | |||
|
15 | ** If you have questions regarding the use of this file, please use | |||
|
16 | ** contact form at http://qt.digia.com | |||
|
17 | ** $QT_END_LICENSE$ | |||
|
18 | ** | |||
|
19 | ****************************************************************************/ | |||
|
20 | ||||
|
21 | // W A R N I N G | |||
|
22 | // ------------- | |||
|
23 | // | |||
|
24 | // This file is not part of the QtCommercial Chart API. It exists purely as an | |||
|
25 | // implementation detail. This header file may change from version to | |||
|
26 | // version without notice, or even be removed. | |||
|
27 | // | |||
|
28 | // We mean it. | |||
|
29 | ||||
|
30 | #ifndef QHORIZONTALPERCENTBARSERIES_P_H | |||
|
31 | #define QHORIZONTALPERCENTBARSERIES_P_H | |||
|
32 | ||||
|
33 | #include "qabstractbarseries_p.h" | |||
|
34 | #include "domain_p.h" | |||
|
35 | ||||
|
36 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |||
|
37 | ||||
|
38 | class QHorizontalPercentBarSeriesPrivate: public QAbstractBarSeriesPrivate | |||
|
39 | { | |||
|
40 | public: | |||
|
41 | QHorizontalPercentBarSeriesPrivate(QHorizontalPercentBarSeries* q); | |||
|
42 | Chart* createGraphics(ChartPresenter* presenter); | |||
|
43 | void scaleDomain(Domain& domain); | |||
|
44 | QAbstractAxis::AxisType defaultAxisXType() const; | |||
|
45 | QAbstractAxis::AxisType defaultAxisYType() const; | |||
|
46 | ||||
|
47 | private: | |||
|
48 | Q_DECLARE_PUBLIC(QHorizontalPercentBarSeries) | |||
|
49 | }; | |||
|
50 | ||||
|
51 | QTCOMMERCIALCHART_END_NAMESPACE | |||
|
52 | ||||
|
53 | #endif // QHORIZONTALPERCENTBARSERIES_P_H |
@@ -25,4 +25,5 SUBDIRS += \ | |||||
25 | qmlpiechart \ |
|
25 | qmlpiechart \ | |
26 | lineandbar \ |
|
26 | lineandbar \ | |
27 | horizontalbarchart \ |
|
27 | horizontalbarchart \ | |
28 | horizontalstackedbarchart |
|
28 | horizontalstackedbarchart \ | |
|
29 | horizontalpercentbarchart |
@@ -13,8 +13,8 SOURCES += \ | |||||
13 | $$PWD/percentbaranimation.cpp \ |
|
13 | $$PWD/percentbaranimation.cpp \ | |
14 | $$PWD/abstractbaranimation.cpp \ |
|
14 | $$PWD/abstractbaranimation.cpp \ | |
15 | $$PWD/horizontalbaranimation.cpp \ |
|
15 | $$PWD/horizontalbaranimation.cpp \ | |
16 | $$PWD/horizontalstackedbaranimation.cpp |
|
16 | $$PWD/horizontalstackedbaranimation.cpp \ | |
17 |
|
17 | $$PWD/horizontalpercentbaranimation.cpp | ||
18 |
|
18 | |||
19 | PRIVATE_HEADERS += \ |
|
19 | PRIVATE_HEADERS += \ | |
20 | $$PWD/axisanimation_p.h \ |
|
20 | $$PWD/axisanimation_p.h \ | |
@@ -29,4 +29,5 PRIVATE_HEADERS += \ | |||||
29 | $$PWD/percentbaranimation_p.h \ |
|
29 | $$PWD/percentbaranimation_p.h \ | |
30 | $$PWD/abstractbaranimation_p.h \ |
|
30 | $$PWD/abstractbaranimation_p.h \ | |
31 | $$PWD/horizontalbaranimation_p.h \ |
|
31 | $$PWD/horizontalbaranimation_p.h \ | |
32 | $$PWD/horizontalstackedbaranimation_p.h |
|
32 | $$PWD/horizontalstackedbaranimation_p.h \ | |
|
33 | $$PWD/horizontalpercentbaranimation_p.h |
@@ -49,7 +49,7 QVariant HorizontalStackedBarAnimation::interpolated(const QVariant &from, const | |||||
49 |
|
49 | |||
50 | for(int i = 0; i < startVector.count(); i++) { |
|
50 | for(int i = 0; i < startVector.count(); i++) { | |
51 | qreal h = endVector[i].height(); |
|
51 | qreal h = endVector[i].height(); | |
52 |
qreal w = |
|
52 | qreal w = endVector[i].width() * progress; | |
53 | qreal x = xAxis + ((endVector[i].left() - xAxis) * progress); |
|
53 | qreal x = xAxis + ((endVector[i].left() - xAxis) * progress); | |
54 | qreal y = endVector[i].top(); |
|
54 | qreal y = endVector[i].top(); | |
55 |
|
55 |
@@ -18,7 +18,9 SOURCES += \ | |||||
18 | $$PWD/qhorizontalbarseries.cpp \ |
|
18 | $$PWD/qhorizontalbarseries.cpp \ | |
19 | $$PWD/horizontalbarchartitem.cpp \ |
|
19 | $$PWD/horizontalbarchartitem.cpp \ | |
20 | $$PWD/qhorizontalstackedbarseries.cpp \ |
|
20 | $$PWD/qhorizontalstackedbarseries.cpp \ | |
21 | $$PWD/horizontalstackedbarchartitem.cpp |
|
21 | $$PWD/horizontalstackedbarchartitem.cpp \ | |
|
22 | $$PWD/qhorizontalpercentbarseries.cpp \ | |||
|
23 | $$PWD/horizontalpercentbarchartitem.cpp | |||
22 |
|
24 | |||
23 | PRIVATE_HEADERS += \ |
|
25 | PRIVATE_HEADERS += \ | |
24 | $$PWD/bar_p.h \ |
|
26 | $$PWD/bar_p.h \ | |
@@ -35,7 +37,9 PRIVATE_HEADERS += \ | |||||
35 | $$PWD/qhorizontalbarseries_p.h \ |
|
37 | $$PWD/qhorizontalbarseries_p.h \ | |
36 | $$PWD/horizontalbarchartitem_p.h \ |
|
38 | $$PWD/horizontalbarchartitem_p.h \ | |
37 | $$PWD/qhorizontalstackedbarseries_p.h \ |
|
39 | $$PWD/qhorizontalstackedbarseries_p.h \ | |
38 | $$PWD/horizontalstackedbarchartitem_p.h |
|
40 | $$PWD/horizontalstackedbarchartitem_p.h \ | |
|
41 | $$PWD/qhorizontalpercentbarseries_p.h \ | |||
|
42 | $$PWD/horizontalpercentbarchartitem_p.h | |||
39 |
|
43 | |||
40 | PUBLIC_HEADERS += \ |
|
44 | PUBLIC_HEADERS += \ | |
41 | $$PWD/qabstractbarseries.h \ |
|
45 | $$PWD/qabstractbarseries.h \ | |
@@ -47,4 +51,5 PUBLIC_HEADERS += \ | |||||
47 | $$PWD/qvbarmodelmapper.h \ |
|
51 | $$PWD/qvbarmodelmapper.h \ | |
48 | $$PWD/qhbarmodelmapper.h \ |
|
52 | $$PWD/qhbarmodelmapper.h \ | |
49 | $$PWD/qhorizontalbarseries.h \ |
|
53 | $$PWD/qhorizontalbarseries.h \ | |
50 | $$PWD/qhorizontalstackedbarseries.h |
|
54 | $$PWD/qhorizontalstackedbarseries.h \ | |
|
55 | $$PWD/qhorizontalpercentbarseries.h |
@@ -77,6 +77,7 protected: | |||||
77 | friend class BarChartItem; |
|
77 | friend class BarChartItem; | |
78 | friend class HorizontalBarChartItem; |
|
78 | friend class HorizontalBarChartItem; | |
79 | friend class HorizontalStackedBarChartItem; |
|
79 | friend class HorizontalStackedBarChartItem; | |
|
80 | friend class HorizontalPercentBarChartItem; | |||
80 | }; |
|
81 | }; | |
81 |
|
82 | |||
82 | QTCOMMERCIALCHART_END_NAMESPACE |
|
83 | QTCOMMERCIALCHART_END_NAMESPACE |
@@ -110,6 +110,7 private: | |||||
110 | friend class BarChartItem; |
|
110 | friend class BarChartItem; | |
111 | friend class HorizontalBarChartItem; |
|
111 | friend class HorizontalBarChartItem; | |
112 | friend class HorizontalStackedBarChartItem; |
|
112 | friend class HorizontalStackedBarChartItem; | |
|
113 | friend class HorizontalPercentBarChartItem; | |||
113 | }; |
|
114 | }; | |
114 |
|
115 | |||
115 | QTCOMMERCIALCHART_END_NAMESPACE |
|
116 | QTCOMMERCIALCHART_END_NAMESPACE |
@@ -40,9 +40,9 void QHorizontalBarSeriesPrivate::scaleDomain(Domain& domain) | |||||
40 | qreal y = categoryCount(); |
|
40 | qreal y = categoryCount(); | |
41 | qreal x = max(); |
|
41 | qreal x = max(); | |
42 | minX = qMin(minX, x); |
|
42 | minX = qMin(minX, x); | |
43 | minY = qMin(minY, -0.5); |
|
43 | minY = qMin(minY, - (qreal)0.5); | |
44 | maxX = qMax(maxX, x); |
|
44 | maxX = qMax(maxX, x); | |
45 | maxY = qMax(maxY, y -0.5); |
|
45 | maxY = qMax(maxY, y - (qreal)0.5); | |
46 | tickYCount = y+1; |
|
46 | tickYCount = y+1; | |
47 |
|
47 | |||
48 | domain.setRange(minX,maxX,minY,maxY,tickXCount,tickYCount); |
|
48 | domain.setRange(minX,maxX,minY,maxY,tickXCount,tickYCount); |
@@ -39,9 +39,9 void QHorizontalStackedBarSeriesPrivate::scaleDomain(Domain& domain) | |||||
39 | qreal y = categoryCount(); |
|
39 | qreal y = categoryCount(); | |
40 | qreal x = maxCategorySum(); |
|
40 | qreal x = maxCategorySum(); | |
41 | minX = qMin(minX, x); |
|
41 | minX = qMin(minX, x); | |
42 | minY = qMin(minY, -0.5); |
|
42 | minY = qMin(minY, - (qreal)0.5); | |
43 | maxX = qMax(maxX, x); |
|
43 | maxX = qMax(maxX, x); | |
44 | maxY = qMax(maxY, y -0.5); |
|
44 | maxY = qMax(maxY, y - (qreal)0.5); | |
45 | tickYCount = y+1; |
|
45 | tickYCount = y+1; | |
46 |
|
46 | |||
47 | domain.setRange(minX,maxX,minY,maxY,tickXCount,tickYCount); |
|
47 | domain.setRange(minX,maxX,minY,maxY,tickXCount,tickYCount); |
General Comments 0
You need to be logged in to leave comments.
Login now