diff options
author | Florin Malita <fmalita@chromium.org> | 2018-05-29 13:46:54 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-05-29 18:58:16 +0000 |
commit | a33447dab9b9ebdc0bd636b6ec7721557d21feac (patch) | |
tree | c549453a952ab1b888e1392f42d64bb29f5e516e /modules/skottie/src | |
parent | aec79e6f85cf40af1c784a7b5b40ba0d67be1727 (diff) |
[skottie] Animation::animationTick() -> Animation::seek()
Replace poorly defined animationTick() with a normalized seek() method.
TBR=
Change-Id: Id2ea17bb426fe86fede0d6c8a3d93236902f10af
Reviewed-on: https://skia-review.googlesource.com/130508
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'modules/skottie/src')
-rw-r--r-- | modules/skottie/src/Skottie.cpp | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/modules/skottie/src/Skottie.cpp b/modules/skottie/src/Skottie.cpp index 8396b5ba90..ddea1be18b 100644 --- a/modules/skottie/src/Skottie.cpp +++ b/modules/skottie/src/Skottie.cpp @@ -733,9 +733,7 @@ sk_sp<sksg::RenderNode> AttachNestedAnimation(const char* path, AttachContext* c protected: void onTick(float t) { - // map back from frame # to ms. - const auto t_ms = t * 1000 / fFrameRate; - fAnimation->animationTick(t_ms); + fAnimation->seek(t * fFrameRate / fAnimation->frameRate()); } private: @@ -1288,7 +1286,7 @@ Animation::Animation(const ResourceProvider& resources, fScene = sksg::Scene::Make(std::move(root), std::move(animators)); // In case the client calls render before the first tick. - this->animationTick(0); + this->seek(0); } Animation::~Animation() = default; @@ -1312,16 +1310,11 @@ void Animation::render(SkCanvas* canvas, const SkRect* dstR) const { fScene->render(canvas); } -void Animation::animationTick(SkMSec ms) { +void Animation::seek(SkScalar t) { if (!fScene) return; - // 't' in the BM model really means 'frame #' - auto t = static_cast<float>(ms) * fFrameRate / 1000; - - t = fInPoint + std::fmod(t, fOutPoint - fInPoint); - - fScene->animate(t); + fScene->animate(fInPoint + SkTPin(t, 0.0f, 1.0f) * (fOutPoint - fInPoint)); } } // namespace skottie |