##// END OF EJS Templates
Refactoring QPieSlice private implementation. Removes the useless QPieSlicePrivate layer and uses PieSliceData directly.
Refactoring QPieSlice private implementation. Removes the useless QPieSlicePrivate layer and uses PieSliceData directly.

File last commit:

r794:4c76de65bbac
r818:5bf1dbd3a89a
Show More
splinechartitem.cpp
133 lines | 3.6 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$
**
****************************************************************************/
Marek Rosa
Renamed SplinePresenter to SplineChartItem
r460 #include "splinechartitem_p.h"
Michal Klocek
Refactor animation to fit line,spline,scatter...
r476 #include "chartpresenter_p.h"
Michal Klocek
Improves spline interpolation...
r622 #include "chartanimator_p.h"
Marek Rosa
Spline working somewhat
r401 #include <QPainter>
Marek Rosa
Spline initial
r295
Marek Rosa
Spline working somewhat
r401 QTCOMMERCIALCHART_BEGIN_NAMESPACE
sauimone
minor code review issues. indent, spaces, brackets etc.
r743 SplineChartItem::SplineChartItem(QSplineSeries *series, ChartPresenter *presenter) :
XYChartItem(series, presenter),
m_series(series),
m_pointsVisible(false)
Marek Rosa
Spline initial
r295 {
Michal Klocek
Refactor animation to fit line,spline,scatter...
r476 setZValue(ChartPresenter::LineChartZValue);
QObject::connect(series,SIGNAL(updated()),this,SLOT(handleUpdated()));
handleUpdated();
Marek Rosa
Spline initial
r295 }
Michal Klocek
Refactor line spline to common xyline...
r465 QRectF SplineChartItem::boundingRect() const
{
return m_rect;
}
Marek Rosa
Spline initial
r295
Michal Klocek
Refactor line spline to common xyline...
r465 QPainterPath SplineChartItem::shape() const
{
return m_path;
}
Marek Rosa
Spline working somewhat
r401
sauimone
minor code review issues. indent, spaces, brackets etc.
r743 void SplineChartItem::updateLayout(QVector<QPointF> &oldPoints, QVector<QPointF> &newPoints,int index)
Michal Klocek
Improves spline interpolation...
r622 {
QVector<QPointF> controlPoints;
controlPoints.resize(newPoints.count()*2-2);
sauimone
minor code review issues. indent, spaces, brackets etc.
r743 for (int i = 0; i < newPoints.size() - 1; i++) {
Michal Klocek
Improves spline interpolation...
r622 controlPoints[2*i] = calculateGeometryControlPoint(2 * i);
controlPoints[2 * i + 1] = calculateGeometryControlPoint(2 * i + 1);
}
sauimone
minor code review issues. indent, spaces, brackets etc.
r743 if (controlPoints.count()<2) {
Michal Klocek
Improves spline interpolation...
r622 setLayout(newPoints,controlPoints);
return;
}
sauimone
minor code review issues. indent, spaces, brackets etc.
r743 if (animator()) {
Michal Klocek
Refactors chartitem...
r677 animator()->updateLayout(this,oldPoints,newPoints,m_controlPoints,controlPoints,index);
sauimone
minor code review issues. indent, spaces, brackets etc.
r743 } else {
Michal Klocek
Improves spline interpolation...
r622 setLayout(newPoints,controlPoints);
}
}
Marek Rosa
Renamed SplinePresenter to SplineChartItem
r460 QPointF SplineChartItem::calculateGeometryControlPoint(int index) const
Marek Rosa
Spline working somewhat
r401 {
Michal Klocek
Refactor line spline to common xyline...
r465 return XYChartItem::calculateGeometryPoint(m_series->controlPoint(index));
Marek Rosa
Spline with problems
r419 }
sauimone
minor code review issues. indent, spaces, brackets etc.
r743 void SplineChartItem::setLayout(QVector<QPointF> &points, QVector<QPointF> &controlPoints)
Marek Rosa
Spline with problems
r419 {
sauimone
minor code review issues. indent, spaces, brackets etc.
r743 if ((points.size()<2) || (controlPoints.size()<2)) {
Michal Klocek
Unify naming setGeometry -> setLayout
r557 XYChartItem::setLayout(points);
Michal Klocek
Improves spline interpolation...
r622 m_controlPoints=controlPoints;
Marek Rosa
Added support for adding and removing data with model. Updated the example
r545 return;
}
Marek Rosa
Spline somewhat working
r423
Michal Klocek
Improves spline interpolation...
r622 Q_ASSERT(points.count()*2-2 == controlPoints.count());
QPainterPath splinePath(points.at(0));
Marek Rosa
Spline somewhat working
r423
sauimone
minor code review issues. indent, spaces, brackets etc.
r743 for (int i = 0; i < points.size() - 1; i++) {
Marek Rosa
Spline somewhat working
r423 const QPointF& point = points.at(i + 1);
Michal Klocek
Improves spline interpolation...
r622 splinePath.cubicTo(controlPoints[2*i],controlPoints[2 * i + 1],point);
Marek Rosa
Spline somewhat working
r423 }
prepareGeometryChange();
m_path = splinePath;
m_rect = splinePath.boundingRect();
Michal Klocek
Unify naming setGeometry -> setLayout
r557 XYChartItem::setLayout(points);
Michal Klocek
Improves spline interpolation...
r622 m_controlPoints=controlPoints;
Michal Klocek
Refactor line spline to common xyline...
r465 }
Michal Klocek
Refactor animation to fit line,spline,scatter...
r476 //handlers
void SplineChartItem::handleUpdated()
{
Michal Klocek
Adds visible points handling to spline
r580 m_pointsVisible = m_series->pointsVisible();
m_linePen = m_series->pen();
m_pointPen = m_series->pen();
m_pointPen.setWidthF(2*m_pointPen.width());
Michal Klocek
Refactor animation to fit line,spline,scatter...
r476 update();
}
//painter
Michal Klocek
Refactor line spline to common xyline...
r465
Marek Rosa
Renamed SplinePresenter to SplineChartItem
r460 void SplineChartItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
Marek Rosa
Spline somewhat working
r423 {
Tero Ahola
Squashed bunch of warnings
r611 Q_UNUSED(widget)
Q_UNUSED(option)
Marek Rosa
Spline somewhat working
r423 painter->save();
Michal Klocek
Refactor line spline to common xyline...
r465 painter->setClipRect(clipRect());
Michal Klocek
Adds visible points handling to spline
r580 painter->setPen(m_linePen);
Marek Rosa
Spline somewhat working
r423 painter->drawPath(m_path);
sauimone
minor code review issues. indent, spaces, brackets etc.
r743 if (m_pointsVisible) {
painter->setPen(m_pointPen);
painter->drawPoints(points());
Michal Klocek
Adds visible points handling to spline
r580 }
Marek Rosa
Spline somewhat working
r423 painter->restore();
}
Marek Rosa
Experimenting
r417
Michal Klocek
Refactor animation to fit line,spline,scatter...
r476
Marek Rosa
Renamed SplinePresenter to SplineChartItem
r460 #include "moc_splinechartitem_p.cpp"
Marek Rosa
Spline working somewhat
r401
QTCOMMERCIALCHART_END_NAMESPACE