summaryrefslogtreecommitdiffstats
path: root/src/animations
diff options
context:
space:
mode:
authorJani Honkonen <jani.honkonen@digia.com>2012-07-31 13:25:57 +0300
committerJani Honkonen <jani.honkonen@digia.com>2012-07-31 13:25:57 +0300
commitef94aea95359d0731c77caa46dadaa5ce9f7f7cd (patch)
treef0629360fa706302b390f18815486f4e675b46d1 /src/animations
parent97ada13560d979f77971574c19e3ead56fff9919 (diff)
pie: finetuning donut animations
Also added donut stuff to piechartcustomization demo
Diffstat (limited to 'src/animations')
-rw-r--r--src/animations/pieanimation.cpp10
-rw-r--r--src/animations/piesliceanimation.cpp1
2 files changed, 9 insertions, 2 deletions
diff --git a/src/animations/pieanimation.cpp b/src/animations/pieanimation.cpp
index 15d5e441..0cc5bfe0 100644
--- a/src/animations/pieanimation.cpp
+++ b/src/animations/pieanimation.cpp
@@ -60,8 +60,11 @@ ChartAnimation* PieAnimation::addSlice(PieSliceItem *sliceItem, const PieSliceDa
else
startValue.m_startAngle = sliceData.m_startAngle + (sliceData.m_angleSpan / 2);
startValue.m_angleSpan = 0;
- animation->setValue(startValue, sliceData);
+ if (sliceData.m_donut)
+ startValue.m_radius = sliceData.m_innerRadius;
+
+ animation->setValue(startValue, sliceData);
animation->setDuration(ChartAnimationDuration);
animation->setEasingCurve(QEasingCurve::OutQuart);
@@ -75,7 +78,10 @@ ChartAnimation* PieAnimation::removeSlice(PieSliceItem *sliceItem)
animation->stop();
PieSliceData endValue = animation->currentSliceValue();
- endValue.m_radius = 0;
+ if (endValue.m_donut)
+ endValue.m_radius = endValue.m_innerRadius;
+ else
+ endValue.m_radius = 0;
endValue.m_startAngle = endValue.m_startAngle + endValue.m_angleSpan;
endValue.m_angleSpan = 0;
endValue.m_isLabelVisible = false;
diff --git a/src/animations/piesliceanimation.cpp b/src/animations/piesliceanimation.cpp
index 10c770e3..9cf0bb97 100644
--- a/src/animations/piesliceanimation.cpp
+++ b/src/animations/piesliceanimation.cpp
@@ -110,6 +110,7 @@ QVariant PieSliceAnimation::interpolated(const QVariant &start, const QVariant &
result.m_angleSpan = linearPos(startValue.m_angleSpan, endValue.m_angleSpan, progress);
result.m_slicePen = linearPos(startValue.m_slicePen, endValue.m_slicePen, progress);
result.m_sliceBrush = linearPos(startValue.m_sliceBrush, endValue.m_sliceBrush, progress);
+ result.m_innerRadius = linearPos(startValue.m_innerRadius, endValue.m_innerRadius, progress);
return qVariantFromValue(result);
}