mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2026-02-01 00:35:33 +00:00
lottie/model: Fixed hold interpolation issue.
Change-Id: I0db56ec46a9f6fec04311d9c96dcea680e29ab5b
This commit is contained in:
@@ -241,28 +241,20 @@ template<typename T>
|
||||
class LOTAnimInfo
|
||||
{
|
||||
public:
|
||||
bool hasKeyFrame(int frameNo) {
|
||||
if (frameNo >= mStartFrame && frameNo <= mEndFrame)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
T value(int frameNo) const {
|
||||
if (mStartFrame >= frameNo)
|
||||
if (mKeyFrames.front().mStartFrame >= frameNo)
|
||||
return mKeyFrames.front().mStartValue;
|
||||
if(mEndFrame <= frameNo)
|
||||
if(mKeyFrames.back().mEndFrame <= frameNo)
|
||||
return mKeyFrames.back().mEndValue;
|
||||
|
||||
for(auto keyFrame : mKeyFrames) {
|
||||
if (frameNo >= keyFrame.mStartFrame && frameNo <= keyFrame.mEndFrame)
|
||||
if (frameNo >= keyFrame.mStartFrame && frameNo < keyFrame.mEndFrame)
|
||||
return keyFrame.value(frameNo);
|
||||
}
|
||||
return T();
|
||||
}
|
||||
public:
|
||||
std::vector<LOTKeyFrame<T>> mKeyFrames;
|
||||
int mStartFrame;
|
||||
int mEndFrame;
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
|
||||
@@ -1649,6 +1649,7 @@ void LottieParserImpl::parseKeyFrame(LOTAnimInfo<T> &obj)
|
||||
inTangent = VPointF();
|
||||
outTangent = VPointF();
|
||||
keyframe.mEndValue = keyframe.mStartValue;
|
||||
keyframe.mEndFrame = keyframe.mStartFrame;
|
||||
}
|
||||
|
||||
// Try to find the interpolator from cache
|
||||
@@ -1660,13 +1661,8 @@ void LottieParserImpl::parseKeyFrame(LOTAnimInfo<T> &obj)
|
||||
keyframe.mInterpolator = std::make_shared<VInterpolator>(VInterpolator(inTangent, outTangent));
|
||||
compRef->mInterpolatorCache[interpolatorKey] = keyframe.mInterpolator;
|
||||
}
|
||||
} else {
|
||||
/* this is the last key frame. update the first and last frame of this property */
|
||||
obj.mStartFrame = obj.mKeyFrames.front().mStartFrame;
|
||||
obj.mEndFrame = keyframe.mStartFrame;
|
||||
return;
|
||||
obj.mKeyFrames.push_back(keyframe);
|
||||
}
|
||||
obj.mKeyFrames.push_back(keyframe);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user