[skottie] Remove inPoint/outPoint/frameRate from public API
TBR= Change-Id: Ice4de3abe350c4570c22e859a36dbd445527fa41 Reviewed-on: https://skia-review.googlesource.com/131300 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Florin Malita <fmalita@chromium.org>
This commit is contained in:
parent
22f673d420
commit
911ae4066e
@ -59,7 +59,8 @@ public:
|
||||
/**
|
||||
* Updates the animation state for |t|.
|
||||
*
|
||||
* @param t normalized [0..1] frame selector, where 0 == inPoint and 1 == outPoint.
|
||||
* @param t normalized [0..1] frame selector (0 -> first frame, 1 -> final frame)
|
||||
*
|
||||
*/
|
||||
void seek(SkScalar t);
|
||||
|
||||
@ -72,9 +73,6 @@ public:
|
||||
|
||||
const SkString& version() const { return fVersion; }
|
||||
const SkSize& size() const { return fSize; }
|
||||
SkScalar frameRate() const { return fFrameRate; }
|
||||
SkScalar inPoint() const { return fInPoint; }
|
||||
SkScalar outPoint() const { return fOutPoint; }
|
||||
|
||||
void setShowInval(bool show);
|
||||
|
||||
|
@ -62,7 +62,7 @@ using AssetMap = SkTHashMap<SkString, AssetInfo>;
|
||||
struct AttachContext {
|
||||
const ResourceProvider& fResources;
|
||||
const AssetMap& fAssets;
|
||||
const float fFrameRate;
|
||||
const float fDuration;
|
||||
sksg::AnimatorList& fAnimators;
|
||||
};
|
||||
|
||||
@ -724,21 +724,21 @@ sk_sp<sksg::RenderNode> AttachNestedAnimation(const char* path, AttachContext* c
|
||||
|
||||
class SkottieAnimatorAdapter final : public sksg::Animator {
|
||||
public:
|
||||
SkottieAnimatorAdapter(sk_sp<Animation> animation, float frameRate)
|
||||
SkottieAnimatorAdapter(sk_sp<Animation> animation, float time_scale)
|
||||
: fAnimation(std::move(animation))
|
||||
, fFrameRate(frameRate) {
|
||||
, fTimeScale(time_scale) {
|
||||
SkASSERT(fAnimation);
|
||||
SkASSERT(fFrameRate > 0);
|
||||
}
|
||||
|
||||
protected:
|
||||
void onTick(float t) {
|
||||
fAnimation->seek(t * fFrameRate / fAnimation->frameRate());
|
||||
// TODO: we prolly need more sophisticated timeline mapping for nested animations.
|
||||
fAnimation->seek(t * fTimeScale);
|
||||
}
|
||||
|
||||
private:
|
||||
const sk_sp<Animation> fAnimation;
|
||||
const float fFrameRate;
|
||||
const float fTimeScale;
|
||||
};
|
||||
|
||||
const auto resStream = ctx->fResources.openStream(path);
|
||||
@ -753,8 +753,10 @@ sk_sp<sksg::RenderNode> AttachNestedAnimation(const char* path, AttachContext* c
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
ctx->fAnimators.push_back(skstd::make_unique<SkottieAnimatorAdapter>(animation,
|
||||
ctx->fFrameRate));
|
||||
|
||||
ctx->fAnimators.push_back(
|
||||
skstd::make_unique<SkottieAnimatorAdapter>(animation,
|
||||
animation->duration() / ctx->fDuration));
|
||||
|
||||
return sk_make_sp<SkottieSGAdapter>(std::move(animation));
|
||||
}
|
||||
@ -1051,7 +1053,7 @@ sk_sp<sksg::RenderNode> AttachLayer(const json::ValueRef& jlayer, AttachLayerCon
|
||||
sksg::AnimatorList layer_animators;
|
||||
AttachContext local_ctx = { layerCtx->fCtx->fResources,
|
||||
layerCtx->fCtx->fAssets,
|
||||
layerCtx->fCtx->fFrameRate,
|
||||
layerCtx->fCtx->fDuration,
|
||||
layer_animators};
|
||||
|
||||
// Layer attachers may adjust these.
|
||||
@ -1283,7 +1285,7 @@ Animation::Animation(const ResourceProvider& resources,
|
||||
}
|
||||
|
||||
sksg::AnimatorList animators;
|
||||
AttachContext ctx = { resources, assets, fFrameRate, animators };
|
||||
AttachContext ctx = { resources, assets, this->duration(), animators };
|
||||
auto root = AttachComposition(json, &ctx);
|
||||
|
||||
stats->fAnimatorCount = animators.size();
|
||||
|
@ -65,11 +65,10 @@ void SkottieSlide::load(SkScalar w, SkScalar h) {
|
||||
|
||||
if (fAnimation) {
|
||||
fAnimation->setShowInval(fShowAnimationInval);
|
||||
SkDebugf("loaded Bodymovin animation v: %s, size: [%f %f], fr: %f\n",
|
||||
SkDebugf("loaded Bodymovin animation v: %s, size: [%f %f]\n",
|
||||
fAnimation->version().c_str(),
|
||||
fAnimation->size().width(),
|
||||
fAnimation->size().height(),
|
||||
fAnimation->frameRate());
|
||||
fAnimation->size().height());
|
||||
} else {
|
||||
SkDebugf("failed to load Bodymovin animation: %s\n", fPath.c_str());
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user