diff options
Diffstat (limited to 'src/xychart')
-rw-r--r-- | src/xychart/qxyseries.cpp | 21 | ||||
-rw-r--r-- | src/xychart/qxyseries.h | 1 | ||||
-rw-r--r-- | src/xychart/xychart.cpp | 31 | ||||
-rw-r--r-- | src/xychart/xychart_p.h | 7 |
4 files changed, 56 insertions, 4 deletions
diff --git a/src/xychart/qxyseries.cpp b/src/xychart/qxyseries.cpp index 3d5f7eec..285c078d 100644 --- a/src/xychart/qxyseries.cpp +++ b/src/xychart/qxyseries.cpp @@ -69,6 +69,18 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE */ /*! + \qmlproperty AbstractAxis XYSeries::axisAngular + The angular axis used for the series, drawn around the polar chart view. + \sa axisX +*/ + +/*! + \qmlproperty AbstractAxis XYSeries::axisRadial + The radial axis used for the series, drawn inside the polar chart view. + \sa axisY +*/ + +/*! \property QXYSeries::pointsVisible Controls if the data points are visible and should be drawn. */ @@ -354,6 +366,15 @@ QList<QPointF> QXYSeries::points() const } /*! + Returns point at \a index in internal points vector. +*/ +const QPointF &QXYSeries::pointAt(int index) const +{ + Q_D(const QXYSeries); + return d->m_points.at(index); +} + +/*! Returns number of data points within series. */ int QXYSeries::count() const diff --git a/src/xychart/qxyseries.h b/src/xychart/qxyseries.h index d0e6bb48..8eff380e 100644 --- a/src/xychart/qxyseries.h +++ b/src/xychart/qxyseries.h @@ -56,6 +56,7 @@ public: int count() const; QList<QPointF> points() const; + const QPointF &pointAt(int index) const; QXYSeries &operator << (const QPointF &point); QXYSeries &operator << (const QList<QPointF> &points); diff --git a/src/xychart/xychart.cpp b/src/xychart/xychart.cpp index ecadf676..3d442c5a 100644 --- a/src/xychart/xychart.cpp +++ b/src/xychart/xychart.cpp @@ -24,6 +24,7 @@ #include "chartpresenter_p.h" #include "abstractdomain_p.h" #include "qxymodelmapper.h" +#include "qabstractaxis_p.h" #include <QPainter> #include <QAbstractItemModel> @@ -32,7 +33,7 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE //TODO: optimize : remove points which are not visible -XYChart::XYChart(QXYSeries *series,QGraphicsItem* item): +XYChart::XYChart(QXYSeries *series, QGraphicsItem *item): ChartItem(series->d_func(),item), m_series(series), m_animation(0), @@ -46,7 +47,7 @@ XYChart::XYChart(QXYSeries *series,QGraphicsItem* item): QObject::connect(this, SIGNAL(hovered(QPointF,bool)), series, SIGNAL(hovered(QPointF,bool))); } -void XYChart::setGeometryPoints(const QVector<QPointF>& points) +void XYChart::setGeometryPoints(const QVector<QPointF> &points) { m_points = points; } @@ -61,6 +62,32 @@ void XYChart::setDirty(bool dirty) m_dirty = dirty; } +// Returns a vector with same size as geometryPoints vector, indicating +// the off grid status of points. +QVector<bool> XYChart::offGridStatusVector() +{ + qreal minX = domain()->minX(); + qreal maxX = domain()->maxX(); + qreal minY = domain()->minY(); + qreal maxY = domain()->maxY(); + + QVector<bool> returnVector; + returnVector.resize(m_points.size()); + + for (int i = 0; i < m_points.size(); i++) { + const QPointF &seriesPoint = m_series->pointAt(i); + if (seriesPoint.x() < minX + || seriesPoint.x() > maxX + || seriesPoint.y() < minY + || seriesPoint.y() > maxY) { + returnVector[i] = true; + } else { + returnVector[i] = false; + } + } + return returnVector; +} + void XYChart::updateChart(QVector<QPointF> &oldPoints, QVector<QPointF> &newPoints, int index) { diff --git a/src/xychart/xychart_p.h b/src/xychart/xychart_p.h index cfdb296b..49c57bc3 100644 --- a/src/xychart/xychart_p.h +++ b/src/xychart/xychart_p.h @@ -45,10 +45,10 @@ class XYChart : public ChartItem { Q_OBJECT public: - explicit XYChart(QXYSeries *series,QGraphicsItem* item = 0); + explicit XYChart(QXYSeries *series,QGraphicsItem *item = 0); ~XYChart() {} - void setGeometryPoints(const QVector<QPointF>& points); + void setGeometryPoints(const QVector<QPointF> &points); QVector<QPointF> geometryPoints() const { return m_points; } void setAnimation(XYAnimation *animation); @@ -58,6 +58,9 @@ public: bool isDirty() const { return m_dirty; } void setDirty(bool dirty); + void getSeriesRanges(qreal &minX, qreal &maxX, qreal &minY, qreal &maxY); + QVector<bool> offGridStatusVector(); + public Q_SLOTS: void handlePointAdded(int index); void handlePointRemoved(int index); |