| /* | |
| * Copyright 2020 Google LLC | |
| * | |
| * 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/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) { | |
| sk_sp<AdapterT> adapter(new AdapterT(std::forward<Args>(args)...)); | |
| adapter->shrink_to_fit(); | |
| return adapter; | |
| } | |
| 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 |