Refactor to use qseries private for implmentation interface

* adds missing headers private stacked, percent bar series
     * refactors dataset switch case -> scaleDomain
     * refactors presenter switch case -> createGraphics
This commit is contained in:
Michal Klocek 2012-04-06 18:01:31 +03:00
parent b4a64675ba
commit d79a954416
32 changed files with 531 additions and 343 deletions

View File

@ -21,6 +21,11 @@
#include "qareaseries.h"
#include "qareaseries_p.h"
#include "qlineseries.h"
#include "areachartitem_p.h"
#include "domain_p.h"
#include "chartdataset_p.h"
#include "charttheme_p.h"
#include "chartanimator_p.h"
QTCOMMERCIALCHART_BEGIN_NAMESPACE
@ -205,6 +210,57 @@ QAreaSeriesPrivate::QAreaSeriesPrivate(QLineSeries *upperSeries, QLineSeries *lo
};
void QAreaSeriesPrivate::scaleDomain(Domain& domain)
{
Q_Q(QAreaSeries);
qreal minX(domain.minX());
qreal minY(domain.minY());
qreal maxX(domain.maxX());
qreal maxY(domain.maxY());
int tickXCount(domain.tickXCount());
int tickYCount(domain.tickYCount());
QLineSeries* upperSeries = q->upperSeries();
QLineSeries* lowerSeries = q->lowerSeries();
for (int i = 0; i < upperSeries->count(); i++)
{
qreal x = upperSeries->x(i);
qreal y = upperSeries->y(i);
minX = qMin(minX, x);
minY = qMin(minY, y);
maxX = qMax(maxX, x);
maxY = qMax(maxY, y);
}
if(lowerSeries) {
for (int i = 0; i < lowerSeries->count(); i++)
{
qreal x = lowerSeries->x(i);
qreal y = lowerSeries->y(i);
minX = qMin(minX, x);
minY = qMin(minY, y);
maxX = qMax(maxX, x);
maxY = qMax(maxY, y);
}}
domain.setRangeX(minX,maxX,tickXCount);
domain.setRangeY(minY,maxY,tickYCount);
}
Chart* QAreaSeriesPrivate::createGraphics(ChartPresenter* presenter)
{
Q_Q(QAreaSeries);
AreaChartItem* area = new AreaChartItem(q,presenter);
if(presenter->animationOptions().testFlag(QChart::SeriesAnimations)) {
presenter->animator()->addAnimation(area->upperLineItem());
if(q->lowerSeries()) presenter->animator()->addAnimation(area->lowerLineItem());
}
presenter->chartTheme()->decorate(q, presenter->dataSet()->seriesIndex(q));
return area;
}
#include "moc_qareaseries.cpp"
#include "moc_qareaseries_p.cpp"

View File

@ -43,17 +43,20 @@ class QAreaSeriesPrivate: public QSeriesPrivate
public:
QAreaSeriesPrivate(QLineSeries *upperSeries, QLineSeries *lowerSeries,QAreaSeries* q);
void scaleDomain(Domain& domain);
Chart* createGraphics(ChartPresenter* presenter);
Q_SIGNALS:
void updated();
public:
protected:
QBrush m_brush;
QPen m_pen;
QLineSeries* m_upperSeries;
QLineSeries* m_lowerSeries;
bool m_pointsVisible;
friend class QAreaSeries;
private:
Q_DECLARE_PUBLIC(QAreaSeries);
};
QTCOMMERCIALCHART_END_NAMESPACE

View File

@ -21,7 +21,9 @@ PRIVATE_HEADERS += \
$$PWD/stackedbarchartitem_p.h \
$$PWD/barlabel_p.h \
$$PWD/qbarset_p.h \
$$PWD/qbarseries_p.h
$$PWD/qbarseries_p.h \
$$PWD/qstackedbarseries_p.h\
$$PWD/qpercentbarseries_p.h
PUBLIC_HEADERS += \
$$PWD/qbarseries.h \

View File

@ -23,6 +23,10 @@
#include "qbarset.h"
#include "qbarset_p.h"
#include "barchartmodel_p.h"
#include "domain_p.h"
#include "chartdataset_p.h"
#include "charttheme_p.h"
#include "chartanimator_p.h"
#include <QAbstractItemModel>
#include <QModelIndex>
@ -63,6 +67,11 @@ QBarSeries::QBarSeries(QBarCategories categories, QObject *parent) : QSeries(*ne
}
QBarSeries::QBarSeries(QBarSeriesPrivate &d,QObject *parent) : QSeries(d,parent)
{
}
QSeries::QSeriesType QBarSeries::type() const
{
return QSeries::SeriesTypeBar;
@ -761,6 +770,41 @@ void QBarSeriesPrivate::barsetChanged()
emit updatedBars();
}
void QBarSeriesPrivate::scaleDomain(Domain& domain)
{
Q_Q(QBarSeries);
qreal minX(domain.minX());
qreal minY(domain.minY());
qreal maxX(domain.maxX());
qreal maxY(domain.maxY());
int tickXCount(domain.tickXCount());
int tickYCount(domain.tickYCount());
qreal x = q->categoryCount();
qreal y = q->max();
minX = qMin(minX, x);
minY = qMin(minY, y);
maxX = qMax(maxX, x);
maxY = qMax(maxY, y);
tickXCount = x+1;
domain.setRangeX(minX,maxX,tickXCount);
domain.setRangeY(minY,maxY,tickYCount);
}
Chart* QBarSeriesPrivate::createGraphics(ChartPresenter* presenter)
{
Q_Q(QBarSeries);
BarChartItem* bar = new BarChartItem(q,presenter);
if(presenter->animationOptions().testFlag(QChart::SeriesAnimations)) {
presenter->animator()->addAnimation(bar);
}
presenter->chartTheme()->decorate(q, presenter->dataSet()->seriesIndex(q));
return bar;
}
#include "moc_qbarseries.cpp"
#include "moc_qbarseries_p.cpp"

View File

@ -40,7 +40,7 @@ class QTCOMMERCIALCHART_EXPORT QBarSeries : public QSeries
{
Q_OBJECT
public:
QBarSeries(QStringList categories, QObject *parent = 0);
QBarSeries(QBarCategories categories, QObject *parent = 0);
QSeries::QSeriesType type() const;
@ -77,6 +77,9 @@ public:
BarChartModel& modelInternal();
// <--- TO PIMPL
protected:
explicit QBarSeries(QBarSeriesPrivate &d,QObject *parent = 0);
Q_SIGNALS:
void clicked(QBarSet *barset, QString category, Qt::MouseButtons button); // Up to user of api, what to do with these signals
void selected();

View File

@ -17,6 +17,9 @@ class QBarSeriesPrivate : public QSeriesPrivate
public:
QBarSeriesPrivate(QBarCategories categories, QBarSeries *parent);
void scaleDomain(Domain& domain);
Chart* createGraphics(ChartPresenter* presenter);
bool setModel(QAbstractItemModel *model);
void setModelMapping(int categories, int bottomBoundry, int topBoundry, Qt::Orientation orientation = Qt::Vertical);

View File

@ -19,6 +19,12 @@
****************************************************************************/
#include "qpercentbarseries.h"
#include "qpercentbarseries_p.h"
#include "percentbarchartitem_p.h"
#include "chartdataset_p.h"
#include "charttheme_p.h"
#include "chartanimator_p.h"
QTCOMMERCIALCHART_BEGIN_NAMESPACE
@ -45,8 +51,8 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE
Constructs empty QPercentBarSeries. Parameter \a categories defines the categories for chart.
QPercentBarSeries is QObject which is a child of a \a parent.
*/
QPercentBarSeries::QPercentBarSeries(QStringList categories, QObject *parent)
: QBarSeries(categories, parent)
QPercentBarSeries::QPercentBarSeries(QBarCategories categories, QObject *parent)
: QBarSeries(*new QPercentBarSeriesPrivate(categories,this), parent)
{
}
@ -55,6 +61,47 @@ QSeries::QSeriesType QPercentBarSeries::type() const
return QSeries::SeriesTypePercentBar;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
QPercentBarSeriesPrivate::QPercentBarSeriesPrivate(QBarCategories categories, QPercentBarSeries *q) : QBarSeriesPrivate(categories,q)
{
}
void QPercentBarSeriesPrivate::scaleDomain(Domain& domain)
{
Q_Q(QPercentBarSeries);
qreal minX(domain.minX());
qreal minY(domain.minY());
qreal maxX(domain.maxX());
qreal maxY(domain.maxY());
int tickXCount(domain.tickXCount());
int tickYCount(domain.tickYCount());
qreal x = q->categoryCount();
minX = qMin(minX, x);
maxX = qMax(maxX, x);
minY = 0;
maxY = 100;
tickXCount = x+1;
domain.setRangeX(minX,maxX,tickXCount);
domain.setRangeY(minY,maxY,tickYCount);
}
Chart* QPercentBarSeriesPrivate::createGraphics(ChartPresenter* presenter)
{
Q_Q(QPercentBarSeries);
PercentBarChartItem* bar = new PercentBarChartItem(q,presenter);
if(presenter->animationOptions().testFlag(QChart::SeriesAnimations)) {
presenter->animator()->addAnimation(bar);
}
presenter->chartTheme()->decorate(q, presenter->dataSet()->seriesIndex(q));
return bar;
}
#include "moc_qpercentbarseries.cpp"
QTCOMMERCIALCHART_END_NAMESPACE

View File

@ -30,7 +30,7 @@ class QTCOMMERCIALCHART_EXPORT QPercentBarSeries : public QBarSeries
{
Q_OBJECT
public:
QPercentBarSeries(QStringList categories, QObject *parent = 0);
QPercentBarSeries(QBarCategories categories, QObject *parent = 0);
QSeries::QSeriesType type() const;
};

View File

@ -0,0 +1,52 @@
/****************************************************************************
**
** Copyright (C) 2012 Digia Plc
** 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$
**
****************************************************************************/
// W A R N I N G
// -------------
//
// This file is not part of the QtCommercial Chart API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
#ifndef QPERCENTBARSERIES_P_H_
#define QPERCENTBARSERIES_P_H_
#include "qbarseries_p.h"
#include "domain_p.h"
QTCOMMERCIALCHART_BEGIN_NAMESPACE
class QPercentBarSeriesPrivate: public QBarSeriesPrivate
{
public:
QPercentBarSeriesPrivate(QBarCategories categories,QPercentBarSeries* q);
void scaleDomain(Domain& domain);
Chart* createGraphics(ChartPresenter* presenter);
private:
Q_DECLARE_PUBLIC(QPercentBarSeries)
};
QTCOMMERCIALCHART_END_NAMESPACE
#endif

View File

@ -19,6 +19,11 @@
****************************************************************************/
#include "qstackedbarseries.h"
#include "qstackedbarseries_p.h"
#include "stackedbarchartitem_p.h"
#include "chartdataset_p.h"
#include "charttheme_p.h"
#include "chartanimator_p.h"
QTCOMMERCIALCHART_BEGIN_NAMESPACE
@ -45,8 +50,8 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE
Constructs empty QStackedBarSeries. Parameter \a categories defines the categories for chart.
QStackedBarSeries is QObject which is a child of a \a parent.
*/
QStackedBarSeries::QStackedBarSeries(QStringList categories, QObject *parent)
: QBarSeries(categories, parent)
QStackedBarSeries::QStackedBarSeries(QBarCategories categories, QObject *parent)
: QBarSeries(*new QStackedBarSeriesPrivate(categories,this), parent)
{
}
@ -55,6 +60,48 @@ QSeries::QSeriesType QStackedBarSeries::type() const
return QSeries::SeriesTypeStackedBar;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
QStackedBarSeriesPrivate::QStackedBarSeriesPrivate(QBarCategories categories, QStackedBarSeries *q) : QBarSeriesPrivate(categories,q)
{
}
void QStackedBarSeriesPrivate::scaleDomain(Domain& domain)
{
Q_Q(QStackedBarSeries);
qreal minX(domain.minX());
qreal minY(domain.minY());
qreal maxX(domain.maxX());
qreal maxY(domain.maxY());
int tickXCount(domain.tickXCount());
int tickYCount(domain.tickYCount());
qreal x = q->categoryCount();
qreal y = q->maxCategorySum();
minX = qMin(minX, x);
minY = qMin(minY, y);
maxX = qMax(maxX, x);
maxY = qMax(maxY, y);
tickXCount = x+1;
domain.setRangeX(minX,maxX,tickXCount);
domain.setRangeY(minY,maxY,tickYCount);
}
Chart* QStackedBarSeriesPrivate::createGraphics(ChartPresenter* presenter)
{
Q_Q(QStackedBarSeries);
StackedBarChartItem* bar = new StackedBarChartItem(q,presenter);
if(presenter->animationOptions().testFlag(QChart::SeriesAnimations)) {
presenter->animator()->addAnimation(bar);
}
presenter->chartTheme()->decorate(q, presenter->dataSet()->seriesIndex(q));
return bar;
}
#include "moc_qstackedbarseries.cpp"
QTCOMMERCIALCHART_END_NAMESPACE

View File

@ -30,7 +30,7 @@ class QTCOMMERCIALCHART_EXPORT QStackedBarSeries : public QBarSeries
{
Q_OBJECT
public:
QStackedBarSeries(QStringList categories, QObject *parent = 0);
QStackedBarSeries(QBarCategories categories, QObject *parent = 0);
QSeries::QSeriesType type() const;
};

View File

@ -0,0 +1,52 @@
/****************************************************************************
**
** Copyright (C) 2012 Digia Plc
** 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$
**
****************************************************************************/
// W A R N I N G
// -------------
//
// This file is not part of the QtCommercial Chart API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
#ifndef QSTACKEDBARSERIES_P_H_
#define QSTACKEDBARSERIES_P_H_
#include "qbarseries_p.h"
#include "domain_p.h"
QTCOMMERCIALCHART_BEGIN_NAMESPACE
class QStackedBarSeriesPrivate: public QBarSeriesPrivate
{
public:
QStackedBarSeriesPrivate(QBarCategories categories,QStackedBarSeries* q);
Chart* createGraphics(ChartPresenter* presenter);
void scaleDomain(Domain& domain);
private:
Q_DECLARE_PUBLIC(QStackedBarSeries)
};
QTCOMMERCIALCHART_END_NAMESPACE
#endif

View File

@ -21,6 +21,7 @@
#include "chartdataset_p.h"
#include "qchartaxis.h"
//series
#include "qseries_p.h"
#include "qlineseries.h"
#include "qareaseries.h"
#include "qbarseries.h"
@ -81,7 +82,19 @@ void ChartDataSet::addSeries(QSeries* series, QChartAxis *axisY)
m_axisXInitialized=true;
}
calculateDomain(series,domain);
series->d_ptr->scaleDomain(*domain);
if(series->type() == QSeries::SeriesTypeBar || series->type() == QSeries::SeriesTypeStackedBar || series->type() == QSeries::SeriesTypePercentBar)
{
QBarSeries* barSeries = static_cast<QBarSeries*>(series);
setupCategories(barSeries);
}
if (series->type()== QSeries::SeriesTypePie && m_seriesAxisMap.count()==0)
{
axisX()->hide();
this->axisY()->hide();
}
m_seriesAxisMap.insert(series,axisY);
@ -160,122 +173,6 @@ void ChartDataSet::removeAllSeries()
}
//to be removed with PIMPL
void ChartDataSet::calculateDomain(QSeries* series,Domain* domain)
{
qreal minX(domain->minX());
qreal minY(domain->minY());
qreal maxX(domain->maxX());
qreal maxY(domain->maxY());
int tickXCount(domain->tickXCount());
int tickYCount(domain->tickYCount());
switch(series->type())
{
case QSeries::SeriesTypeLine:
case QSeries::SeriesTypeSpline:
case QSeries::SeriesTypeScatter:
{
QXYSeries* xySeries = static_cast<QXYSeries*>(series);
for (int i = 0; i < xySeries->count(); i++)
{
qreal x = xySeries->x(i);
qreal y = xySeries->y(i);
minX = qMin(minX, x);
minY = qMin(minY, y);
maxX = qMax(maxX, x);
maxY = qMax(maxY, y);
}
break;
}
case QSeries::SeriesTypeArea: {
QAreaSeries* areaSeries = static_cast<QAreaSeries*>(series);
QLineSeries* upperSeries = areaSeries->upperSeries();
QLineSeries* lowerSeries = areaSeries->lowerSeries();
for (int i = 0; i < upperSeries->count(); i++)
{
qreal x = upperSeries->x(i);
qreal y = upperSeries->y(i);
minX = qMin(minX, x);
minY = qMin(minY, y);
maxX = qMax(maxX, x);
maxY = qMax(maxY, y);
}
if(lowerSeries) {
for (int i = 0; i < lowerSeries->count(); i++)
{
qreal x = lowerSeries->x(i);
qreal y = lowerSeries->y(i);
minX = qMin(minX, x);
minY = qMin(minY, y);
maxX = qMax(maxX, x);
maxY = qMax(maxY, y);
}}
break;
}
case QSeries::SeriesTypeBar: {
QBarSeries* barSeries = static_cast<QBarSeries*>(series);
qreal x = barSeries->categoryCount();
qreal y = barSeries->max();
minX = qMin(minX, x);
minY = qMin(minY, y);
maxX = qMax(maxX, x);
maxY = qMax(maxY, y);
tickXCount = x+1;
setupCategories(barSeries);
break;
}
case QSeries::SeriesTypeStackedBar: {
QStackedBarSeries* stackedBarSeries = static_cast<QStackedBarSeries*>(series);
qreal x = stackedBarSeries->categoryCount();
qreal y = stackedBarSeries->maxCategorySum();
minX = qMin(minX, x);
minY = qMin(minY, y);
maxX = qMax(maxX, x);
maxY = qMax(maxY, y);
tickXCount = x+1;
setupCategories(stackedBarSeries);
break;
}
case QSeries::SeriesTypePercentBar: {
QPercentBarSeries* percentBarSeries = static_cast<QPercentBarSeries*>(series);
qreal x = percentBarSeries->categoryCount();
minX = qMin(minX, x);
maxX = qMax(maxX, x);
minY = 0;
maxY = 100;
tickXCount = x+1;
setupCategories(percentBarSeries);
break;
}
case QSeries::SeriesTypePie: {
//QPieSeries *pieSeries = static_cast<QPieSeries *>(series);
// TODO: domain stuff
break;
}
default: {
qDebug()<<__FUNCTION__<<"type" << series->type()<<"not supported";
return;
}
}
domain->setRangeX(minX,maxX,tickXCount);
domain->setRangeY(minY,maxY,tickYCount);
}
void ChartDataSet::setupCategories(QBarSeries* series)
{
QChartAxisCategories* categories = axisX()->categories();

View File

@ -25,25 +25,10 @@
#include "chartdataset_p.h"
#include "charttheme_p.h"
#include "chartanimator_p.h"
//series
#include "qbarseries.h"
#include "qstackedbarseries.h"
#include "qpercentbarseries.h"
#include "qlineseries.h"
#include "qseries_p.h"
#include "qareaseries.h"
#include "qpieseries.h"
#include "qscatterseries.h"
#include "qsplineseries.h"
//items
#include "axisitem_p.h"
#include "areachartitem_p.h"
#include "barchartitem_p.h"
#include "stackedbarchartitem_p.h"
#include "percentbarchartitem_p.h"
#include "linechartitem_p.h"
#include "piechartitem_p.h"
#include "scatterchartitem_p.h"
#include "splinechartitem_p.h"
QTCOMMERCIALCHART_BEGIN_NAMESPACE
@ -54,7 +39,6 @@ ChartPresenter::ChartPresenter(QChart* chart,ChartDataSet* dataset):QObject(char
m_chartTheme(0),
m_chartRect(QRectF(QPoint(0,0),m_chart->size())),
m_options(QChart::NoAnimation),
m_themeForce(false),
m_minLeftMargin(0),
m_minBottomMargin(0),
m_backgroundItem(0),
@ -135,14 +119,14 @@ void ChartPresenter::handleAxisAdded(QChartAxis* axis,Domain* domain)
}
if(axis==m_dataset->axisX()){
m_chartTheme->decorate(axis,true,m_themeForce);
m_chartTheme->decorate(axis,true);
QObject::connect(domain,SIGNAL(rangeXChanged(qreal,qreal,int)),item,SLOT(handleRangeChanged(qreal,qreal,int)));
//initialize
item->handleRangeChanged(domain->minX(),domain->maxX(),domain->tickXCount());
}
else{
m_chartTheme->decorate(axis,false,m_themeForce);
m_chartTheme->decorate(axis,false);
QObject::connect(domain,SIGNAL(rangeYChanged(qreal,qreal,int)),item,SLOT(handleRangeChanged(qreal,qreal,int)));
//initialize
item->handleRangeChanged(domain->minY(),domain->maxY(),domain->tickYCount());
@ -165,133 +149,14 @@ void ChartPresenter::handleAxisRemoved(QChartAxis* axis)
void ChartPresenter::handleSeriesAdded(QSeries* series,Domain* domain)
{
Chart *item = 0 ;
switch(series->type())
{
case QSeries::SeriesTypeLine: {
QLineSeries* lineSeries = static_cast<QLineSeries*>(series);
LineChartItem* line = new LineChartItem(lineSeries,this);
if(m_options.testFlag(QChart::SeriesAnimations)) {
m_animator->addAnimation(line);
}
m_chartTheme->decorate(lineSeries, m_dataset->seriesIndex(series),m_themeForce);
QObject::connect(this,SIGNAL(geometryChanged(const QRectF&)),line,SLOT(handleGeometryChanged(const QRectF&)));
QObject::connect(domain,SIGNAL(domainChanged(qreal,qreal,qreal,qreal)),line,SLOT(handleDomainChanged(qreal,qreal,qreal,qreal)));
item = line;
break;
}
case QSeries::SeriesTypeArea: {
QAreaSeries* areaSeries = static_cast<QAreaSeries*>(series);
AreaChartItem* area = new AreaChartItem(areaSeries,this);
if(m_options.testFlag(QChart::SeriesAnimations)) {
m_animator->addAnimation(area->upperLineItem());
if(areaSeries->lowerSeries()) m_animator->addAnimation(area->lowerLineItem());
}
m_chartTheme->decorate(areaSeries, m_dataset->seriesIndex(series),m_themeForce);
QObject::connect(this,SIGNAL(geometryChanged(const QRectF&)),area,SLOT(handleGeometryChanged(const QRectF&)));
QObject::connect(domain,SIGNAL(domainChanged(qreal,qreal,qreal,qreal)),area,SLOT(handleDomainChanged(qreal,qreal,qreal,qreal)));
item=area;
break;
}
case QSeries::SeriesTypeBar: {
QBarSeries* barSeries = static_cast<QBarSeries*>(series);
BarChartItem* bar = new BarChartItem(barSeries,this);
if(m_options.testFlag(QChart::SeriesAnimations)) {
m_animator->addAnimation(bar);
}
m_chartTheme->decorate(barSeries, m_dataset->seriesIndex(barSeries),m_themeForce);
QObject::connect(this,SIGNAL(geometryChanged(const QRectF&)),bar,SLOT(handleGeometryChanged(const QRectF&)));
QObject::connect(domain,SIGNAL(domainChanged(qreal,qreal,qreal,qreal)),bar,SLOT(handleDomainChanged(qreal,qreal,qreal,qreal)));
item=bar;
break;
}
case QSeries::SeriesTypeStackedBar: {
QStackedBarSeries* stackedBarSeries = static_cast<QStackedBarSeries*>(series);
StackedBarChartItem* bar = new StackedBarChartItem(stackedBarSeries,this);
if(m_options.testFlag(QChart::SeriesAnimations)) {
m_animator->addAnimation(bar);
}
m_chartTheme->decorate(stackedBarSeries, m_dataset->seriesIndex(stackedBarSeries),m_themeForce);
QObject::connect(this,SIGNAL(geometryChanged(const QRectF&)),bar,SLOT(handleGeometryChanged(const QRectF&)));
QObject::connect(domain,SIGNAL(domainChanged(qreal,qreal,qreal,qreal)),bar,SLOT(handleDomainChanged(qreal,qreal,qreal,qreal)));
item=bar;
break;
}
case QSeries::SeriesTypePercentBar: {
QPercentBarSeries* percentBarSeries = static_cast<QPercentBarSeries*>(series);
PercentBarChartItem* bar = new PercentBarChartItem(percentBarSeries,this);
if(m_options.testFlag(QChart::SeriesAnimations)) {
m_animator->addAnimation(bar);
}
m_chartTheme->decorate(percentBarSeries, m_dataset->seriesIndex(percentBarSeries),m_themeForce);
QObject::connect(this,SIGNAL(geometryChanged(const QRectF&)),bar,SLOT(handleGeometryChanged(const QRectF&)));
QObject::connect(domain,SIGNAL(domainChanged(qreal,qreal,qreal,qreal)),bar,SLOT(handleDomainChanged(qreal,qreal,qreal,qreal)));
item=bar;
break;
}
case QSeries::SeriesTypeScatter: {
QScatterSeries *scatterSeries = static_cast<QScatterSeries *>(series);
ScatterChartItem *scatter = new ScatterChartItem(scatterSeries,this);
if(m_options.testFlag(QChart::SeriesAnimations)) {
m_animator->addAnimation(scatter);
}
m_chartTheme->decorate(scatterSeries, m_dataset->seriesIndex(series),m_themeForce);
QObject::connect(this,SIGNAL(geometryChanged(const QRectF&)),scatter,SLOT(handleGeometryChanged(const QRectF&)));
QObject::connect(domain,SIGNAL(domainChanged(qreal,qreal,qreal,qreal)),scatter,SLOT(handleDomainChanged(qreal,qreal,qreal,qreal)));
item = scatter;
break;
}
case QSeries::SeriesTypePie: {
QPieSeries *pieSeries = static_cast<QPieSeries *>(series);
PieChartItem* pie = new PieChartItem(pieSeries, this);
if(m_options.testFlag(QChart::SeriesAnimations)) {
m_animator->addAnimation(pie);
}
m_chartTheme->decorate(pieSeries, m_dataset->seriesIndex(series),m_themeForce);
QObject::connect(this,SIGNAL(geometryChanged(const QRectF&)),pie,SLOT(handleGeometryChanged(const QRectF&)));
QObject::connect(domain,SIGNAL(domainChanged(qreal,qreal,qreal,qreal)),pie,SLOT(handleDomainChanged(qreal,qreal,qreal,qreal)));
// Hide all from background when there is only piechart
// TODO: refactor this ugly code... should be one setting for this
if (m_chartItems.count() == 0) {
m_chart->axisX()->hide();
m_chart->axisY()->hide();
}
item=pie;
break;
}
case QSeries::SeriesTypeSpline: {
QSplineSeries* splineSeries = static_cast<QSplineSeries*>(series);
SplineChartItem* spline = new SplineChartItem(splineSeries, this);
if(m_options.testFlag(QChart::SeriesAnimations)) {
m_animator->addAnimation(spline);
}
m_chartTheme->decorate(splineSeries, m_dataset->seriesIndex(series),m_themeForce);
QObject::connect(this,SIGNAL(geometryChanged(const QRectF&)),spline,SLOT(handleGeometryChanged(const QRectF&)));
QObject::connect(domain,SIGNAL(domainChanged(qreal,qreal,qreal,qreal)),spline,SLOT(handleDomainChanged(qreal,qreal,qreal,qreal)));
item=spline;
break;
}
default: {
qDebug()<< "Series type" << series->type() << "not implemented.";
break;
}
}
//initialize
item->handleDomainChanged(domain->minX(),domain->maxX(),domain->minY(),domain->maxY());
if(m_chartRect.isValid()) item->handleGeometryChanged(m_chartRect);
m_chartItems.insert(series,item);
Chart *item = series->d_ptr->createGraphics(this);
Q_ASSERT(item);
QObject::connect(this,SIGNAL(geometryChanged(const QRectF&)),item,SLOT(handleGeometryChanged(const QRectF&)));
QObject::connect(domain,SIGNAL(domainChanged(qreal,qreal,qreal,qreal)),item,SLOT(handleDomainChanged(qreal,qreal,qreal,qreal)));
//initialize
item->handleDomainChanged(domain->minX(),domain->maxX(),domain->minY(),domain->maxY());
if(m_chartRect.isValid()) item->handleGeometryChanged(m_chartRect);
m_chartItems.insert(series,item);
}
void ChartPresenter::handleSeriesRemoved(QSeries* series)
@ -315,10 +180,10 @@ void ChartPresenter::setTheme(QChart::ChartTheme theme,bool force)
{
if(m_chartTheme && m_chartTheme->id() == theme) return;
delete m_chartTheme;
m_themeForce = force;
m_chartTheme = ChartTheme::createTheme(theme);
m_chartTheme->decorate(m_chart,m_themeForce);
m_chartTheme->decorate(m_chart->legend(),m_themeForce);
m_chartTheme->setForced(force);
m_chartTheme->decorate(m_chart);
m_chartTheme->decorate(m_chart->legend());
resetAllElements();
}

View File

@ -107,7 +107,6 @@ private:
QRectF m_rect;
QRectF m_chartRect;
QChart::AnimationOptions m_options;
bool m_themeForce;
qreal m_minLeftMargin;
qreal m_minBottomMargin;
public: //TODO: fixme

View File

@ -69,7 +69,8 @@ ChartTheme::ChartTheme(QChart::ChartTheme id) :
m_backgroundShadesPen(Qt::NoPen),
m_backgroundShadesBrush(Qt::NoBrush),
m_backgroundShades(BackgroundShadesNone),
m_gridLinePen(QPen(QRgb(0x000000)))
m_gridLinePen(QPen(QRgb(0x000000))),
m_force(false)
{
m_id = id;
qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
@ -98,60 +99,60 @@ ChartTheme* ChartTheme::createTheme(QChart::ChartTheme theme)
}
}
void ChartTheme::decorate(QChart* chart,bool force)
void ChartTheme::decorate(QChart* chart)
{
QBrush brush;
if(brush == chart->backgroundBrush() || force)
if(brush == chart->backgroundBrush() || m_force)
chart->setBackgroundBrush(m_chartBackgroundGradient);
chart->setTitleFont(m_masterFont);
chart->setTitleBrush(m_titleBrush);
}
void ChartTheme::decorate(QLegend* legend,bool force)
void ChartTheme::decorate(QLegend* legend)
{
QPen pen;
QBrush brush;
if (pen == legend->pen() || force){
if (pen == legend->pen() || m_force){
legend->setPen(Qt::NoPen);
}
if (brush == legend->brush() || force) {
if (brush == legend->brush() || m_force) {
legend->setBrush(m_chartBackgroundGradient);
}
}
void ChartTheme::decorate(QAreaSeries* series, int index,bool force)
void ChartTheme::decorate(QAreaSeries* series, int index)
{
QPen pen;
QBrush brush;
if (pen == series->pen() || force){
if (pen == series->pen() || m_force){
pen.setColor(colorAt(m_seriesGradients.at(index % m_seriesGradients.size()), 0.0));
pen.setWidthF(2);
series->setPen(pen);
}
if (brush == series->brush() || force) {
if (brush == series->brush() || m_force) {
QBrush brush(m_seriesColors.at(index % m_seriesColors.size()));
series->setBrush(brush);
}
}
void ChartTheme::decorate(QLineSeries* series,int index,bool force)
void ChartTheme::decorate(QLineSeries* series,int index)
{
QPen pen;
if(pen == series->pen() || force ){
if(pen == series->pen() || m_force ){
pen.setColor(m_seriesColors.at(index%m_seriesColors.size()));
pen.setWidthF(2);
series->setPen(pen);
}
}
void ChartTheme::decorate(QBarSeries* series, int index, bool force)
void ChartTheme::decorate(QBarSeries* series, int index)
{
QBrush brush;
QPen pen;
@ -176,7 +177,7 @@ void ChartTheme::decorate(QBarSeries* series, int index, bool force)
takeAtPos += step;
takeAtPos -= (int) takeAtPos;
}
if (brush == sets.at(i)->brush() || force )
if (brush == sets.at(i)->brush() || m_force )
sets.at(i)->setBrush(colorAt(m_seriesGradients.at(colorIndex), takeAtPos));
// Pick label color from the opposite end of the gradient.
@ -186,31 +187,31 @@ void ChartTheme::decorate(QBarSeries* series, int index, bool force)
else
sets.at(i)->setLabelBrush(colorAt(m_seriesGradients.at(index % m_seriesGradients.size()), 0));
if (pen == sets.at(i)->pen() || force) {
if (pen == sets.at(i)->pen() || m_force) {
QColor c = colorAt(m_seriesGradients.at(index % m_seriesGradients.size()), 0.0);
sets.at(i)->setPen(c);
}
}
}
void ChartTheme::decorate(QScatterSeries* series, int index,bool force)
void ChartTheme::decorate(QScatterSeries* series, int index)
{
QPen pen;
QBrush brush;
if (pen == series->pen() || force) {
if (pen == series->pen() || m_force) {
pen.setColor(colorAt(m_seriesGradients.at(index % m_seriesGradients.size()), 0.0));
pen.setWidthF(2);
series->setPen(pen);
}
if (brush == series->brush() || force) {
if (brush == series->brush() || m_force) {
QBrush brush(m_seriesColors.at(index % m_seriesColors.size()));
series->setBrush(brush);
}
}
void ChartTheme::decorate(QPieSeries* series, int index, bool force)
void ChartTheme::decorate(QPieSeries* series, int index)
{
for (int i(0); i < series->slices().count(); i++) {
@ -224,22 +225,22 @@ void ChartTheme::decorate(QPieSeries* series, int index, bool force)
QPieSlice *s = series->slices().at(i);
PieSliceData data = PieSliceData::data(s);
if (data.m_slicePen.isThemed() || force) {
if (data.m_slicePen.isThemed() || m_force) {
data.m_slicePen = penColor;
data.m_slicePen.setThemed(true);
}
if (data.m_sliceBrush.isThemed() || force) {
if (data.m_sliceBrush.isThemed() || m_force) {
data.m_sliceBrush = brushColor;
data.m_sliceBrush.setThemed(true);
}
if (data.m_labelPen.isThemed() || force) {
if (data.m_labelPen.isThemed() || m_force) {
data.m_labelPen = QPen(m_titleBrush.color());
data.m_labelPen.setThemed(true);
}
if (data.m_labelFont.isThemed() || force) {
if (data.m_labelFont.isThemed() || m_force) {
data.m_labelFont = m_labelFont;
data.m_labelFont.setThemed(true);
}
@ -251,17 +252,17 @@ void ChartTheme::decorate(QPieSeries* series, int index, bool force)
}
}
void ChartTheme::decorate(QSplineSeries* series, int index, bool force)
void ChartTheme::decorate(QSplineSeries* series, int index)
{
QPen pen;
if(pen == series->pen() || force){
if(pen == series->pen() || m_force){
pen.setColor(m_seriesColors.at(index%m_seriesColors.size()));
pen.setWidthF(2);
series->setPen(pen);
}
}
void ChartTheme::decorate(QChartAxis* axis,bool axisX, bool force)
void ChartTheme::decorate(QChartAxis* axis,bool axisX)
{
QPen pen;
QBrush brush;
@ -269,25 +270,25 @@ void ChartTheme::decorate(QChartAxis* axis,bool axisX, bool force)
if (axis->isAxisVisible()) {
if(brush == axis->labelsBrush() || force){
if(brush == axis->labelsBrush() || m_force){
axis->setLabelsBrush(m_axisLabelBrush);
}
if(pen == axis->labelsPen() || force){
if(pen == axis->labelsPen() || m_force){
axis->setLabelsPen(Qt::NoPen); // NoPen for performance reasons
}
if (axis->shadesVisible() || force) {
if (axis->shadesVisible() || m_force) {
if(brush == axis->shadesBrush() || force){
if(brush == axis->shadesBrush() || m_force){
axis->setShadesBrush(m_backgroundShadesBrush);
}
if(pen == axis->shadesPen() || force){
if(pen == axis->shadesPen() || m_force){
axis->setShadesPen(m_backgroundShadesPen);
}
if(force && (m_backgroundShades == BackgroundShadesBoth
if( m_force && (m_backgroundShades == BackgroundShadesBoth
|| (m_backgroundShades == BackgroundShadesVertical && axisX)
|| (m_backgroundShades == BackgroundShadesHorizontal && !axisX))){
axis->setShadesVisible(true);
@ -295,15 +296,15 @@ void ChartTheme::decorate(QChartAxis* axis,bool axisX, bool force)
}
}
if(pen == axis->axisPen() || force){
if(pen == axis->axisPen() || m_force){
axis->setAxisPen(m_axisLinePen);
}
if(pen == axis->gridLinePen() || force){
if(pen == axis->gridLinePen() || m_force){
axis->setGridLinePen(m_gridLinePen);
}
if(font == axis->labelsFont() || force){
if(font == axis->labelsFont() || m_force){
axis->setLabelsFont(m_labelFont);
}
}
@ -389,4 +390,9 @@ QColor ChartTheme::colorAt(const QGradient &gradient, qreal pos)
return colorAt(prev.second, next.second, relativePos);
}
void ChartTheme::setForced(bool enabled)
{
m_force=enabled;
}
QTCOMMERCIALCHART_END_NAMESPACE

View File

@ -62,15 +62,17 @@ protected:
public:
static ChartTheme* createTheme(QChart::ChartTheme theme);
QChart::ChartTheme id() const {return m_id;}
void decorate(QChart* chart,bool force = true);
void decorate(QLegend* legend,bool force = true);
void decorate(QBarSeries* series, int index,bool force = true);
void decorate(QLineSeries* series, int index,bool force = true);
void decorate(QAreaSeries* series, int index,bool force = true);
void decorate(QScatterSeries* series, int index,bool force = true);
void decorate(QPieSeries* series, int index,bool force = true);
void decorate(QSplineSeries* series, int index,bool force = true);
void decorate(QChartAxis* axis, bool axisX,bool force = true);
void decorate(QChart* chart);
void decorate(QLegend* legend);
void decorate(QBarSeries* series, int index);
void decorate(QLineSeries* series, int index);
void decorate(QAreaSeries* series, int index);
void decorate(QScatterSeries* series, int index);
void decorate(QPieSeries* series, int index);
void decorate(QSplineSeries* series, int index);
void decorate(QChartAxis* axis, bool axisX);
void setForced(bool enabled);
bool isForced() { return m_force; }
public: // utils
void generateSeriesGradients();
@ -92,6 +94,7 @@ protected:
QBrush m_backgroundShadesBrush;
BackgroundShadesMode m_backgroundShades;
QPen m_gridLinePen;
bool m_force;
};
QTCOMMERCIALCHART_END_NAMESPACE

View File

@ -20,6 +20,10 @@
#include "qlineseries.h"
#include "qlineseries_p.h"
#include "linechartitem_p.h"
#include "chartdataset_p.h"
#include "charttheme_p.h"
#include "chartanimator_p.h"
QTCOMMERCIALCHART_BEGIN_NAMESPACE
@ -101,4 +105,15 @@ QLineSeriesPrivate::QLineSeriesPrivate(QLineSeries* q):QXYSeriesPrivate(q)
};
Chart* QLineSeriesPrivate::createGraphics(ChartPresenter* presenter)
{
Q_Q(QLineSeries);
LineChartItem* line = new LineChartItem(q,presenter);
if(presenter->animationOptions().testFlag(QChart::SeriesAnimations)) {
presenter->animator()->addAnimation(line);
}
presenter->chartTheme()->decorate(q, presenter->dataSet()->seriesIndex(q));
return line;
}
QTCOMMERCIALCHART_END_NAMESPACE

View File

@ -35,9 +35,13 @@
QTCOMMERCIALCHART_BEGIN_NAMESPACE
struct QLineSeriesPrivate: public QXYSeriesPrivate
class QLineSeriesPrivate: public QXYSeriesPrivate
{
public:
QLineSeriesPrivate(QLineSeries* q);
Chart* createGraphics(ChartPresenter* presenter);
private:
Q_DECLARE_PUBLIC(QLineSeries);
};

View File

@ -70,7 +70,7 @@ void PieChartItem::handleSlicesAdded(QList<QPieSlice*> slices)
{
bool isEmpty = m_slices.isEmpty();
presenter()->chartTheme()->decorate(m_series, presenter()->dataSet()->seriesIndex(m_series), false);
presenter()->chartTheme()->decorate(m_series, presenter()->dataSet()->seriesIndex(m_series));
foreach (QPieSlice *s, slices) {
PieSliceItem* item = new PieSliceItem(this);
@ -91,7 +91,7 @@ void PieChartItem::handleSlicesAdded(QList<QPieSlice*> slices)
void PieChartItem::handleSlicesRemoved(QList<QPieSlice*> slices)
{
presenter()->chartTheme()->decorate(m_series, presenter()->dataSet()->seriesIndex(m_series), false);
presenter()->chartTheme()->decorate(m_series, presenter()->dataSet()->seriesIndex(m_series));
foreach (QPieSlice *s, slices) {
if (animator())

View File

@ -22,6 +22,9 @@
#include "qpieseries_p.h"
#include "qpieslice.h"
#include "pieslicedata_p.h"
#include "chartdataset_p.h"
#include "charttheme_p.h"
#include "chartanimator_p.h"
#include <QAbstractItemModel>
#include <QDebug>
@ -694,6 +697,24 @@ bool QPieSeriesPrivate::setRealValue(qreal &value, qreal newValue, qreal max, qr
return false;
}
void QPieSeriesPrivate::scaleDomain(Domain& domain)
{
Q_UNUSED(domain);
#ifndef QT_NO_DEBUG
qWarning() << __FILE__<<__FUNCTION__<<"not implemented";
#endif
}
Chart* QPieSeriesPrivate::createGraphics(ChartPresenter* presenter)
{
Q_Q(QPieSeries);
PieChartItem* pie = new PieChartItem(q,presenter);
if(presenter->animationOptions().testFlag(QChart::SeriesAnimations)) {
presenter->animator()->addAnimation(pie);
}
presenter->chartTheme()->decorate(q, presenter->dataSet()->seriesIndex(q));
return pie;
}
#include "moc_qpieseries.cpp"
#include "moc_qpieseries_p.cpp"

View File

@ -36,6 +36,9 @@ public:
QPieSeriesPrivate(QPieSeries *parent);
~QPieSeriesPrivate();
void scaleDomain(Domain& domain);
Chart* createGraphics(ChartPresenter* presenter);
void updateDerivativeData();
public Q_SLOTS:

View File

@ -96,12 +96,6 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE
\sa setName()
*/
QSeries::QSeries(QObject *parent) : QObject(parent),
d_ptr(new QSeriesPrivate(this))
{
}
QSeries::QSeries(QSeriesPrivate &d,QObject *parent) : QObject(parent),
d_ptr(&d)
{

View File

@ -50,7 +50,6 @@ public:
};
protected:
QSeries(QObject *parent = 0);
QSeries(QSeriesPrivate &d,QObject *parent = 0);
public:
@ -64,6 +63,8 @@ public:
protected:
QScopedPointer<QSeriesPrivate> d_ptr;
friend class ChartDataSet;
friend class ChartPresenter;
};
QTCOMMERCIALCHART_END_NAMESPACE

View File

@ -36,13 +36,25 @@ class QAbstractItemModel;
QTCOMMERCIALCHART_BEGIN_NAMESPACE
struct QSeriesPrivate : public QObject
class Domain;
class ChartPresenter;
class Chart;
class QSeriesPrivate : public QObject
{
public:
QSeriesPrivate(QSeries *q);
virtual ~QSeriesPrivate();
~QSeriesPrivate();
virtual void scaleDomain(Domain& domain) = 0;
virtual Chart* createGraphics(ChartPresenter* presenter) = 0;
protected:
QSeries *q_ptr;
QAbstractItemModel* m_model;
QAbstractItemModel *m_model;
QString m_name;
friend class QSeries;
};
QTCOMMERCIALCHART_END_NAMESPACE

View File

@ -20,6 +20,10 @@
#include "qscatterseries.h"
#include "qscatterseries_p.h"
#include "scatterchartitem_p.h"
#include "chartdataset_p.h"
#include "charttheme_p.h"
#include "chartanimator_p.h"
/*!
\class QScatterSeries
@ -131,5 +135,16 @@ QScatterSeriesPrivate::QScatterSeriesPrivate(QScatterSeries* q):QXYSeriesPrivate
};
Chart* QScatterSeriesPrivate::createGraphics(ChartPresenter* presenter)
{
Q_Q(QScatterSeries);
ScatterChartItem *scatter = new ScatterChartItem(q,presenter);
if(presenter->animationOptions().testFlag(QChart::SeriesAnimations)) {
presenter->animator()->addAnimation(scatter);
}
presenter->chartTheme()->decorate(q, presenter->dataSet()->seriesIndex(q));
return scatter;
}
QTCOMMERCIALCHART_END_NAMESPACE

View File

@ -34,12 +34,16 @@
QTCOMMERCIALCHART_BEGIN_NAMESPACE
struct QScatterSeriesPrivate: public QXYSeriesPrivate
class QScatterSeriesPrivate: public QXYSeriesPrivate
{
public:
QScatterSeriesPrivate(QScatterSeries* q);
Chart* createGraphics(ChartPresenter* presenter);
private:
QScatterSeries::MarkerShape m_shape;
qreal m_size;
Q_DECLARE_PUBLIC(QScatterSeries);
};

View File

@ -20,6 +20,10 @@
#include "qsplineseries.h"
#include "qsplineseries_p.h"
#include "splinechartitem_p.h"
#include "chartdataset_p.h"
#include "charttheme_p.h"
#include "chartanimator_p.h"
/*!
\class QSplineSeries
@ -215,6 +219,17 @@ void QSplineSeriesPrivate::updateControlPoints()
\sa setModel(), setModelMapping()
*/
Chart* QSplineSeriesPrivate::createGraphics(ChartPresenter* presenter)
{
Q_Q(QSplineSeries);
SplineChartItem* spline = new SplineChartItem(q,presenter);
if(presenter->animationOptions().testFlag(QChart::SeriesAnimations)) {
presenter->animator()->addAnimation(spline);
}
presenter->chartTheme()->decorate(q, presenter->dataSet()->seriesIndex(q));
return spline;
}
#include "moc_qsplineseries.cpp"
#include "moc_qsplineseries_p.cpp"

View File

@ -39,6 +39,7 @@ class QSplineSeriesPrivate: public QLineSeriesPrivate
{
Q_OBJECT
public:
Chart* createGraphics(ChartPresenter* presenter);
QSplineSeriesPrivate(QSplineSeries* q);
void calculateControlPoints();
QList<qreal> getFirstControlPoints(QList<qreal> rhs);

View File

@ -20,6 +20,7 @@
#include "qxyseries.h"
#include "qxyseries_p.h"
#include "domain_p.h"
#include <QAbstractItemModel>
QTCOMMERCIALCHART_BEGIN_NAMESPACE
@ -83,11 +84,6 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE
Constructs empty series object which is a child of \a parent.
When series object is added to QChartView or QChart instance ownerships is transfered.
*/
QXYSeries::QXYSeries(QObject *parent):QSeries(*new QXYSeriesPrivate(this),parent)
{
}
QXYSeries::QXYSeries(QXYSeriesPrivate &d,QObject *parent):QSeries(d,parent)
{
@ -626,6 +622,30 @@ m_pointsVisible(false)
}
void QXYSeriesPrivate::scaleDomain(Domain& domain)
{
qreal minX(domain.minX());
qreal minY(domain.minY());
qreal maxX(domain.maxX());
qreal maxY(domain.maxY());
int tickXCount(domain.tickXCount());
int tickYCount(domain.tickYCount());
Q_Q(QXYSeries);
for (int i = 0; i < q->count(); i++)
{
qreal x = q->x(i);
qreal y = q->y(i);
minX = qMin(minX, x);
minY = qMin(minY, y);
maxX = qMax(maxX, x);
maxY = qMax(maxY, y);
}
domain.setRangeX(minX,maxX,tickXCount);
domain.setRangeY(minY,maxY,tickYCount);
}
#include "moc_qxyseries.cpp"
#include "moc_qxyseries_p.cpp"

View File

@ -36,7 +36,6 @@ class QTCOMMERCIALCHART_EXPORT QXYSeries : public QSeries
{
Q_OBJECT
protected:
explicit QXYSeries(QObject *parent = 0);
explicit QXYSeries(QXYSeriesPrivate &d,QObject *parent = 0);
~QXYSeries();

View File

@ -43,12 +43,15 @@ class QXYSeriesPrivate: public QSeriesPrivate
public:
QXYSeriesPrivate(QXYSeries* q);
void scaleDomain(Domain& domain);
Q_SIGNALS:
void updated();
void pointReplaced(int index);
void pointRemoved(int index);
void pointAdded(int index);
public:
protected:
QVector<qreal> m_x;
QVector<qreal> m_y;
@ -64,8 +67,10 @@ public:
int tempItemsRemoved;
bool m_pointsVisible;
private:
Q_DECLARE_PUBLIC(QXYSeries);
friend class QScatterSeries;
friend class QXYSeries;
};
QTCOMMERCIALCHART_END_NAMESPACE