##// END OF EJS Templates
Modding integrated build for OSX again
Modding integrated build for OSX again

File last commit:

r991:80ab0324ecbb
r994:96961d029820
Show More
qareaseries.cpp
290 lines | 8.0 KiB | text/x-c | CppLexer
Jani Honkonen
Add license headers
r794 /****************************************************************************
**
** 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$
**
****************************************************************************/
Michal Klocek
Adds area chart...
r421 #include "qareaseries.h"
Michal Klocek
Adds big fat pimpl to series classes...
r938 #include "qareaseries_p.h"
Michal Klocek
Adds area chart...
r421 #include "qlineseries.h"
Michal Klocek
Refactor to use qseries private for implmentation interface...
r943 #include "areachartitem_p.h"
Michal Klocek
Adds qlegend pimpl...
r950 #include "legendmarker_p.h"
Michal Klocek
Refactor to use qseries private for implmentation interface...
r943 #include "domain_p.h"
#include "chartdataset_p.h"
#include "charttheme_p.h"
#include "chartanimator_p.h"
Michal Klocek
Adds area chart...
r421
QTCOMMERCIALCHART_BEGIN_NAMESPACE
/*!
\class QAreaSeries
\brief The QAreaSeries class is used for making area charts.
\mainclass
An area chart is used to show quantitative data. It is based on line chart, in the way that area between axis and the line
is emphasized with color. Since the area chart is based on line chart, QAreaSeries constructor needs QLineSeries instance,
Michal Klocek
typos in docs
r424 which defines "upper" boundary of the area. "Lower" boundary is defined by default by axis X. Instead of axis X "lower" boundary can be specified by other line.
Michal Klocek
Adds area chart...
r421 In that case QAreaSeries should be initiated with two QLineSerie instances. Please note terms "upper" and "lower" boundary can be misleading in cases
Michal Klocek
typos in docs
r424 where "lower" boundary had bigger values than the "upper" one, however the main point that area between these two boundary lines will be filled.
Michal Klocek
Adds area chart...
r421
\image areachart.png
Creating basic area chart is simple:
\code
QLineSeries* lineSeries = new QLineSeries();
Jani Honkonen
rename functions add() -> append()
r796 series->append(0, 6);
series->append(2, 4);
Michal Klocek
Adds area chart...
r421 QAreaSeries* areaSeries = new QAreaSeries(lineSeries);
...
chartView->addSeries(areaSeries);
\endcode
*/
/*!
\fn virtual QSeriesType QAreaSeries::type() const
\brief Returns type of series.
Tero Ahola
Renamed QSeries to QAbstractSeries
r988 \sa QAbstractSeries, QSeriesType
Michal Klocek
Adds area chart...
r421 */
/*!
\fn QLineSeries* QAreaSeries::upperSeries() const
\brief Returns upperSeries used to define one of area boundaries.
*/
/*!
\fn QLineSeries* QAreaSeries::lowerSeries() const
\brief Returns lowerSeries used to define one of area boundaries. Note if QAreaSeries where counstucted wihtout a\ lowerSeries
this function return Null pointer.
*/
/*!
\fn QPen QAreaSeries::pen() const
\brief Returns the pen used to draw line for this series.
\sa setPen()
*/
/*!
\fn QPen QAreaSeries::brush() const
\brief Returns the brush used to draw line for this series.
\sa setBrush()
*/
/*!
\fn bool QAreaSeries::pointsVisible() const
\brief Returns if the points are drawn for this series.
\sa setPointsVisible()
*/
Michal Klocek
Updates presenter example documentation
r574 /*!
\fn void QAreaSeries::clicked(const QPointF& point)
\brief Signal is emitted when user clicks the \a point on area chart.
*/
Tero Ahola
Updated documentation, warnings from legend and area left
r973 /*!
\fn void QAreaSeries::selected()
The signal is emitted if the user selects/deselects the XY series. The logic for maintaining selections should be
implemented by the user of QAreaSeries API.
*/
Michal Klocek
Adds area chart...
r421 /*!
Marek Rosa
gdpbarchart moved to test. Few small doc fixes
r940 \fn void QAreaSeriesPrivate::updated()
Michal Klocek
Adds area chart...
r421 \brief \internal
*/
/*!
Constructs area series object which is a child of \a upperSeries. Area will be spanned between \a
upperSeries line and \a lowerSeries line. If no \a lowerSeries is passed to constructor, area is specified by axis x (y=0) instead.
Michal Klocek
Krazy reported errors...
r974 When series object is added to QChartView or QChart instance ownerships is transferred.
Michal Klocek
Adds area chart...
r421 */
Tero Ahola
Internal review: fixed minor issues in Area and XySeries
r761 QAreaSeries::QAreaSeries(QLineSeries *upperSeries, QLineSeries *lowerSeries)
Tero Ahola
Renamed QSeries to QAbstractSeries
r988 : QAbstractSeries(*new QAreaSeriesPrivate(upperSeries,lowerSeries,this),upperSeries)
Michal Klocek
Adds area chart...
r421 {
}
Tero Ahola
Internal review: fixed minor issues in Area and XySeries
r761
Michal Klocek
Adds area chart...
r421 /*!
Destroys the object. Series added to QChartView or QChart instances are owned by those,
and are deleted when mentioned object are destroyed.
*/
QAreaSeries::~QAreaSeries()
{
}
Michal Klocek
Adds big fat pimpl to series classes...
r938
Tero Ahola
Renamed QSeries to QAbstractSeries
r988 QAbstractSeries::QSeriesType QAreaSeries::type() const
Michal Klocek
Adds big fat pimpl to series classes...
r938 {
Tero Ahola
Renamed QSeries to QAbstractSeries
r988 return QAbstractSeries::SeriesTypeArea;
Michal Klocek
Adds big fat pimpl to series classes...
r938 }
QLineSeries* QAreaSeries::upperSeries() const
{
Q_D(const QAreaSeries);
return d->m_upperSeries;
}
QLineSeries* QAreaSeries::lowerSeries() const
{
Q_D(const QAreaSeries);
return d->m_lowerSeries;
}
Michal Klocek
Adds area chart...
r421 /*!
Sets \a pen used for drawing area outline.
*/
Tero Ahola
Internal review: fixed minor issues in Area and XySeries
r761 void QAreaSeries::setPen(const QPen &pen)
Michal Klocek
Adds area chart...
r421 {
Michal Klocek
Adds big fat pimpl to series classes...
r938 Q_D(QAreaSeries);
if (d->m_pen != pen) {
d->m_pen = pen;
emit d->updated();
Michal Klocek
Refactors click signal to line,area,spline,scatter charts
r571 }
Michal Klocek
Adds area chart...
r421 }
Michal Klocek
Adds big fat pimpl to series classes...
r938 QPen QAreaSeries::pen() const
{
Q_D(const QAreaSeries);
return d->m_pen;
}
Michal Klocek
Adds area chart...
r421 /*!
Sets \a brush used for filling the area.
*/
sauimone
minor code review issues. indent, spaces, brackets etc.
r743 void QAreaSeries::setBrush(const QBrush &brush)
Michal Klocek
Adds area chart...
r421 {
Michal Klocek
Adds big fat pimpl to series classes...
r938 Q_D(QAreaSeries);
if (d->m_brush != brush) {
d->m_brush = brush;
emit d->updated();
Michal Klocek
Refactors click signal to line,area,spline,scatter charts
r571 }
Michal Klocek
Adds area chart...
r421 }
Michal Klocek
Adds big fat pimpl to series classes...
r938
QBrush QAreaSeries::brush() const
{
Q_D(const QAreaSeries);
return d->m_brush;
}
Michal Klocek
Adds area chart...
r421 /*!
Sets if data points are \a visible and should be drawn on line.
*/
void QAreaSeries::setPointsVisible(bool visible)
{
Michal Klocek
Adds big fat pimpl to series classes...
r938 Q_D(QAreaSeries);
if (d->m_pointsVisible != visible) {
d->m_pointsVisible = visible;
emit d->updated();
Michal Klocek
Refactors click signal to line,area,spline,scatter charts
r571 }
Michal Klocek
Adds area chart...
r421 }
Michal Klocek
Adds big fat pimpl to series classes...
r938 bool QAreaSeries::pointsVisible() const
{
Q_D(const QAreaSeries);
return d->m_pointsVisible;
}
Marek Rosa
Couple docs fixes
r991 /*!
Does nothing at present. Paremeter \a model is not used. Always returns false.
To set the model for area series set the models for upperSeries, lowerSeries
*/
Michal Klocek
Adds big fat pimpl to series classes...
r938 bool QAreaSeries::setModel(QAbstractItemModel* model)
{
Q_UNUSED(model);
qWarning()<<"Not implemented";
return false;
}
Marek Rosa
Couple docs fixes
r991 /*!
Does nothing at present. Always returns 0;
To get the model set for area series call upperSeries->model(), lowerSeries->model()
*/
Michal Klocek
Adds big fat pimpl to series classes...
r938 QAbstractItemModel* QAreaSeries::model() const
{
return 0;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Tero Ahola
Updated documentation, warnings from legend and area left
r973 QAreaSeriesPrivate::QAreaSeriesPrivate(QLineSeries *upperSeries, QLineSeries *lowerSeries,QAreaSeries* q) :
Tero Ahola
Renamed QSeries to QAbstractSeries
r988 QAbstractSeriesPrivate(q),
Tero Ahola
Updated documentation, warnings from legend and area left
r973 m_upperSeries(upperSeries),
m_lowerSeries(lowerSeries),
m_pointsVisible(false)
Michal Klocek
Adds big fat pimpl to series classes...
r938 {
Tero Ahola
Updated documentation, warnings from legend and area left
r973 }
Michal Klocek
Adds big fat pimpl to series classes...
r938
Michal Klocek
Refactor to use qseries private for implmentation interface...
r943 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;
}
Michal Klocek
Adds qlegend pimpl...
r950 QList<LegendMarker*> QAreaSeriesPrivate::createLegendMarker(QLegend* legend)
{
Q_Q(QAreaSeries);
QList<LegendMarker*> list;
return list << new AreaLegendMarker(q,legend);
}
Michal Klocek
Adds area chart...
r421 #include "moc_qareaseries.cpp"
Michal Klocek
Adds big fat pimpl to series classes...
r938 #include "moc_qareaseries_p.cpp"
Michal Klocek
Adds area chart...
r421
QTCOMMERCIALCHART_END_NAMESPACE