summaryrefslogtreecommitdiffstats
path: root/src/animation/backend/fcurve.cpp
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@qt.io>2017-06-14 13:05:10 +0200
committerLaszlo Agocs <laszlo.agocs@qt.io>2017-06-14 14:36:16 +0000
commit86148b286b2a562f44ca517c96a1c78d8d0eae31 (patch)
tree5190c63d3f9088a367f0c11fe80c0bff8d307c1d /src/animation/backend/fcurve.cpp
parentd7cf1685706a19e2455e178c52646c8a54b751e5 (diff)
Add support for linear interpolation in clip json
...and add an autotest Change-Id: I5c473f5f5918db9cc108f9966fe549e2cba374de Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/animation/backend/fcurve.cpp')
-rw-r--r--src/animation/backend/fcurve.cpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/animation/backend/fcurve.cpp b/src/animation/backend/fcurve.cpp
index 56145c726..4a2cf30fd 100644
--- a/src/animation/backend/fcurve.cpp
+++ b/src/animation/backend/fcurve.cpp
@@ -126,16 +126,21 @@ void FCurve::read(const QJsonObject &json)
float localTime = keyframeCoords.at(0).toDouble();
Keyframe keyframe;
- keyframe.interpolation = QKeyFrame::BezierInterpolation;
keyframe.value = keyframeCoords.at(1).toDouble();
- const QJsonArray leftHandle = keyframeData[QLatin1String("leftHandle")].toArray();
- keyframe.leftControlPoint[0] = leftHandle.at(0).toDouble();
- keyframe.leftControlPoint[1] = leftHandle.at(1).toDouble();
+ if (keyframeData.contains(QLatin1String("leftHandle"))) {
+ keyframe.interpolation = QKeyFrame::BezierInterpolation;
- const QJsonArray rightHandle = keyframeData[QLatin1String("rightHandle")].toArray();
- keyframe.rightControlPoint[0] = rightHandle.at(0).toDouble();
- keyframe.rightControlPoint[1] = rightHandle.at(1).toDouble();
+ const QJsonArray leftHandle = keyframeData[QLatin1String("leftHandle")].toArray();
+ keyframe.leftControlPoint[0] = leftHandle.at(0).toDouble();
+ keyframe.leftControlPoint[1] = leftHandle.at(1).toDouble();
+
+ const QJsonArray rightHandle = keyframeData[QLatin1String("rightHandle")].toArray();
+ keyframe.rightControlPoint[0] = rightHandle.at(0).toDouble();
+ keyframe.rightControlPoint[1] = rightHandle.at(1).toDouble();
+ } else {
+ keyframe.interpolation = QKeyFrame::LinearInterpolation;
+ }
appendKeyframe(localTime, keyframe);
}