blob: dd751291e5c0e56aa458833c90aa489589009e2e [file] [log] [blame]
/*
* Copyright 2020 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef SkottieAdapter_DEFINED
#define SkottieAdapter_DEFINED
#include "modules/skottie/src/Animator.h"
namespace skottie {
namespace internal {
template <typename AdapterT, typename T>
class DiscardableAdapterBase : public AnimatablePropertyContainer {
public:
template <typename... Args>
static sk_sp<AdapterT> Make(Args&&... args) {
return sk_sp<AdapterT>(new AdapterT(std::forward<Args>(args)...));
}
const sk_sp<T>& node() const { return fNode; }
protected:
DiscardableAdapterBase()
: fNode(T::Make()) {}
explicit DiscardableAdapterBase(sk_sp<T> node)
: fNode(std::move(node)) {}
private:
const sk_sp<T> fNode;
};
} // namespace internal
} // namespace skottie
#endif // SkottieAdapter_DEFINED