summaryrefslogtreecommitdiffstats
path: root/src/charts/splinechart/qsplineseries.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/charts/splinechart/qsplineseries.cpp')
-rw-r--r--src/charts/splinechart/qsplineseries.cpp165
1 files changed, 165 insertions, 0 deletions
diff --git a/src/charts/splinechart/qsplineseries.cpp b/src/charts/splinechart/qsplineseries.cpp
new file mode 100644
index 00000000..2ac5cabf
--- /dev/null
+++ b/src/charts/splinechart/qsplineseries.cpp
@@ -0,0 +1,165 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 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 Enterprise Charts Add-on.
+**
+** $QT_BEGIN_LICENSE$
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise 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$
+**
+****************************************************************************/
+
+#include "qsplineseries.h"
+#include "qsplineseries_p.h"
+#include "splinechartitem_p.h"
+#include "chartdataset_p.h"
+#include "charttheme_p.h"
+#include "splineanimation_p.h"
+#include "qchart_p.h"
+
+/*!
+ \class QSplineSeries
+ \inmodule Qt Charts
+ \brief Series type used to store data needed to draw a spline.
+
+ QSplineSeries stores the data points along with the segment control points needed by QPainterPath to draw spline
+ Control points are automatically calculated when data changes. The algorithm computes the points so that the normal spline can be drawn.
+
+ \image examples_splinechart.png
+
+ Creating basic spline chart is simple:
+ \code
+ QSplineSeries* series = new QSplineSeries();
+ series->append(0, 6);
+ series->append(2, 4);
+ ...
+ chart->addSeries(series);
+ \endcode
+*/
+/*!
+ \qmltype SplineSeries
+ \instantiates QSplineSeries
+ \inqmlmodule QtCharts
+
+ \inherits XYSeries
+
+ \brief The SplineSeries type is used for making spline charts.
+
+ The following QML shows how to create a simple spline chart:
+ \snippet qmlchart/qml/qmlchart/View3.qml 1
+ \beginfloatleft
+ \image examples_qmlchart3.png
+ \endfloat
+ \clearfloat
+*/
+
+/*!
+ \fn QSeriesType QSplineSeries::type() const
+ Returns the type of the series
+*/
+
+/*!
+ \qmlproperty real SplineSeries::width
+ The width of the line. By default the width is 2.0.
+*/
+
+/*!
+ \qmlproperty Qt::PenStyle SplineSeries::style
+ Controls the style of the line. Set to one of Qt.NoPen, Qt.SolidLine, Qt.DashLine, Qt.DotLine,
+ Qt.DashDotLine or Qt.DashDotDotLine. Using Qt.CustomDashLine is not supported in the QML API.
+ By default the style is Qt.SolidLine.
+*/
+
+/*!
+ \qmlproperty Qt::PenCapStyle SplineSeries::capStyle
+ Controls the cap style of the line. Set to one of Qt.FlatCap, Qt.SquareCap or Qt.RoundCap. By
+ default the cap style is Qt.SquareCap.
+*/
+
+QT_CHARTS_BEGIN_NAMESPACE
+
+/*!
+ Constructs empty series object which is a child of \a parent.
+ When series object is added to a QChart instance then the ownerships is transferred.
+ */
+
+QSplineSeries::QSplineSeries(QObject *parent)
+ : QLineSeries(*new QSplineSeriesPrivate(this), parent)
+{
+}
+
+/*!
+ Destroys the object.
+*/
+QSplineSeries::~QSplineSeries()
+{
+ Q_D(QSplineSeries);
+ if (d->m_chart)
+ d->m_chart->removeSeries(this);
+}
+
+QAbstractSeries::SeriesType QSplineSeries::type() const
+{
+ return QAbstractSeries::SeriesTypeSpline;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+QSplineSeriesPrivate::QSplineSeriesPrivate(QSplineSeries *q)
+ : QLineSeriesPrivate(q)
+{
+}
+
+void QSplineSeriesPrivate::initializeGraphics(QGraphicsItem* parent)
+{
+ Q_Q(QSplineSeries);
+ SplineChartItem *spline = new SplineChartItem(q,parent);
+ m_item.reset(spline);
+ QAbstractSeriesPrivate::initializeGraphics(parent);
+}
+
+void QSplineSeriesPrivate::initializeTheme(int index, ChartTheme* theme, bool forced)
+{
+ Q_Q(QSplineSeries);
+ const QList<QColor> colors = theme->seriesColors();
+
+ if (forced || QChartPrivate::defaultPen() == m_pen) {
+ QPen pen;
+ pen.setColor(colors.at(index % colors.size()));
+ pen.setWidthF(2);
+ q->setPen(pen);
+ }
+
+ if (forced || QChartPrivate::defaultPen().color() == m_pointLabelsColor) {
+ QColor color = theme->labelBrush().color();
+ q->setPointLabelsColor(color);
+ }
+}
+
+void QSplineSeriesPrivate::initializeAnimations(QtCharts::QChart::AnimationOptions options)
+{
+ SplineChartItem *item = static_cast<SplineChartItem *>(m_item.data());
+ Q_ASSERT(item);
+ if (item->animation())
+ item->animation()->stopAndDestroyLater();
+
+ if (options.testFlag(QChart::SeriesAnimations))
+ item->setAnimation(new SplineAnimation(item));
+ else
+ item->setAnimation(0);
+ QAbstractSeriesPrivate::initializeAnimations(options);
+}
+
+#include "moc_qsplineseries.cpp"
+#include "moc_qsplineseries_p.cpp"
+
+QT_CHARTS_END_NAMESPACE