##// END OF EJS Templates
Legend disabled by defaut. User can turn in on, by calling setVisible
Legend disabled by defaut. User can turn in on, by calling setVisible

File last commit:

r622:960bcf5125b7
r652:4ab0d58be448
Show More
xyanimation.cpp
88 lines | 2.5 KiB | text/x-c | CppLexer
Michal Klocek
Animation refactor...
r530 #include "xyanimation_p.h"
#include "xychartitem_p.h"
Q_DECLARE_METATYPE(QVector<QPointF>)
QTCOMMERCIALCHART_BEGIN_NAMESPACE
XYAnimation::XYAnimation(XYChartItem *item):ChartAnimation(item),
m_item(item),
m_dirty(false)
{
}
XYAnimation::~XYAnimation()
{
}
Michal Klocek
Improves spline interpolation...
r622 void XYAnimation::setValues(QVector<QPointF>& oldPoints,QVector<QPointF>& newPoints,int index)
Michal Klocek
Animation refactor...
r530 {
Michal Klocek
Improves spline interpolation...
r622 int x = oldPoints.count();
int y = newPoints.count();
Michal Klocek
Animation refactor...
r530
Michal Klocek
Improves spline interpolation...
r622 if(x!=y && abs(x-y)!=1) {
m_oldPoints = newPoints;
oldPoints.resize(newPoints.size());
setKeyValueAt(0.0, qVariantFromValue(oldPoints));
setKeyValueAt(1.0, qVariantFromValue(newPoints));
Michal Klocek
Animation refactor...
r530 m_dirty=false;
}
Michal Klocek
Improves spline interpolation...
r622 else {
if(m_dirty) {
m_oldPoints = oldPoints;
m_dirty=false;
}
oldPoints = newPoints;
if (y<x) (m_oldPoints.remove(index)); //remove
if (y>x) (m_oldPoints.insert(index,x>0?m_oldPoints[index-1]:newPoints[index])); //add
setKeyValueAt(0.0, qVariantFromValue(m_oldPoints));
setKeyValueAt(1.0, qVariantFromValue(newPoints));
Q_ASSERT(m_oldPoints.count() == newPoints.count());
}
Michal Klocek
Animation refactor...
r530 }
QVariant XYAnimation::interpolated(const QVariant &start, const QVariant & end, qreal progress ) const
{
QVector<QPointF> startVector = qVariantValue<QVector<QPointF> >(start);
QVector<QPointF> endVector = qVariantValue<QVector<QPointF> >(end);
QVector<QPointF> result;
switch(m_type) {
case MoveDownAnimation: {
Michal Klocek
Bugfix wrong index when points added to xychart
r602 if(startVector.count() != endVector.count()) break;
Michal Klocek
Animation refactor...
r530 for(int i =0;i< startVector.count();i++) {
qreal x = startVector[i].x() + ((endVector[i].x()- startVector[i].x()) * progress);
qreal y = startVector[i].y() + ((endVector[i].y()- startVector[i].y()) * progress);
result << QPointF(x,y);
}
}
break;
case LineDrawAnimation:{
for(int i =0;i< endVector.count()* qBound(0.0, progress, 1.0);i++) {
result << endVector[i];
}
}
break;
default:
qWarning()<<"Unknow type of animation";
break;
}
return qVariantFromValue(result);
}
void XYAnimation::updateCurrentValue (const QVariant & value )
{
if(state()!=QAbstractAnimation::Stopped){ //workaround
Michal Klocek
Improves spline interpolation...
r622 m_dirty=true;
Michal Klocek
Animation refactor...
r530 QVector<QPointF> vector = qVariantValue<QVector<QPointF> >(value);
Michal Klocek
Unify naming setGeometry -> setLayout
r557 m_item->setLayout(vector);
Michal Klocek
Animation refactor...
r530 }
}
QTCOMMERCIALCHART_END_NAMESPACE