From ac4db33427b7f86c9ae5c87fa2fd28d7aab8bb77 2012-03-01 07:24:39 From: Marek Rosa Date: 2012-03-01 07:24:39 Subject: [PATCH] Experimenting --- diff --git a/src/splinechart/splinepresenter.cpp b/src/splinechart/splinepresenter.cpp index b70ef0c..0d0fe57 100644 --- a/src/splinechart/splinepresenter.cpp +++ b/src/splinechart/splinepresenter.cpp @@ -4,51 +4,69 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE SplinePresenter::SplinePresenter(QSplineSeries* series, QGraphicsObject *parent) : - ChartItem(parent),m_series(series),m_boundingRect() + LineChartItem(this, parent),m_series(series)//,m_boundingRect() { - if (parent) - m_boundingRect = parent->boundingRect(); - else - m_boundingRect = QRectF(10,50, 250, 250); +// if (parent) +// m_boundingRect = parent->boundingRect(); +// else +// m_boundingRect = QRectF(10,50, 250, 250); } -void SplinePresenter::handleGeometryChanged(const QRectF&) -{ - update(); -} +//void SplinePresenter::handleGeometryChanged(const QRectF&) +//{ +// update(); +//} -void SplinePresenter::handleDomainChanged(const Domain& domain) -{ - // -} +//void SplinePresenter::handleDomainChanged(const Domain& domain) +//{ +// // +//} -void SplinePresenter::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) +void SplinePresenter::updateGeometry() { - Q_UNUSED(widget); - Q_UNUSED(option); - painter->save(); - - painter->setPen(Qt::SolidLine); - - QPainterPath splinePath; - splinePath.moveTo(m_series->at(0)); - for (int i = 0; i < m_series->count() - 1; i++) - { - painter->setPen(Qt::red); - splinePath.cubicTo(m_series->controlPoint(2 * i), m_series->controlPoint(2 * i + 1), m_series->at(i + 1)); - painter->drawEllipse(m_series->at(i), 4, 4); - - painter->setPen(Qt::blue); - painter->drawLine(m_series->at(i), m_series->controlPoint(2 * i)); - painter->drawLine(m_series->at(i + 1), m_series->controlPoint(2 * i + 1)); - painter->drawEllipse(m_series->controlPoint(2 * i), 4, 4); - painter->drawEllipse(m_series->controlPoint(2 * i + 1), 4, 4); - } - painter->setPen(Qt::red); - painter->drawPath(splinePath); - painter->restore(); + + if(m_data.size()==0) return; + + prepareGeometryChange(); + QPainterPath path; + const QPointF& point = m_data.at(0); + path.moveTo(point); + + foreach( const QPointF& point , m_data) { + path.lineTo(point); + } + + m_path = path; + m_rect = path.boundingRect(); } +//void SplinePresenter::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) +//{ +// Q_UNUSED(widget); +// Q_UNUSED(option); +// painter->save(); + +// painter->setPen(Qt::SolidLine); + +// QPainterPath splinePath; +// splinePath.moveTo(m_series->at(0)); +// for (int i = 0; i < m_series->count() - 1; i++) +// { +// painter->setPen(Qt::red); +// splinePath.cubicTo(m_series->controlPoint(2 * i), m_series->controlPoint(2 * i + 1), m_series->at(i + 1)); +// painter->drawEllipse(m_series->at(i), 4, 4); + +// painter->setPen(Qt::blue); +// painter->drawLine(m_series->at(i), m_series->controlPoint(2 * i)); +// painter->drawLine(m_series->at(i + 1), m_series->controlPoint(2 * i + 1)); +// painter->drawEllipse(m_series->controlPoint(2 * i), 4, 4); +// painter->drawEllipse(m_series->controlPoint(2 * i + 1), 4, 4); +// } +// painter->setPen(Qt::red); +// painter->drawPath(splinePath); +// painter->restore(); +//} + #include "moc_splinepresenter_p.cpp" QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/splinechart/splinepresenter_p.h b/src/splinechart/splinepresenter_p.h index 21132b6..9804633 100644 --- a/src/splinechart/splinepresenter_p.h +++ b/src/splinechart/splinepresenter_p.h @@ -4,27 +4,30 @@ #include "chartitem_p.h" #include #include "qsplineseries.h" +#include "linechartitem_p.h" QTCOMMERCIALCHART_BEGIN_NAMESPACE -class SplinePresenter : public QObject, public ChartItem +class SplinePresenter : public LineChartItem { Q_OBJECT public: SplinePresenter(QSplineSeries* series, QGraphicsObject *parent = 0); - QRectF boundingRect() const { return m_boundingRect; } - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); + void updateGeometry(); + +// QRectF boundingRect() const { return m_boundingRect; } +// void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); signals: public slots: - void handleDomainChanged(const Domain& domain); - void handleGeometryChanged(const QRectF& rect); +// void handleDomainChanged(const Domain& domain); +// void handleGeometryChanged(const QRectF& rect); private: QSplineSeries* m_series; - QRectF m_boundingRect; +// QRectF m_boundingRect; };