| /* | |
| * Copyright 2019 Google LLC | |
| * | |
| * Use of this source code is governed by a BSD-style license that can be | |
| * found in the LICENSE file. | |
| */ | |
| #ifndef SkottieComposition_DEFINED | |
| #define SkottieComposition_DEFINED | |
| #include "include/core/SkRefCnt.h" | |
| #include "include/core/SkSize.h" | |
| #include "include/private/SkNoncopyable.h" | |
| #include "modules/skottie/src/Layer.h" | |
| #include "src/core/SkTHash.h" | |
| #include <cstddef> | |
| #include <vector> | |
| namespace skjson { | |
| class ObjectValue; | |
| } | |
| namespace sksg { | |
| class RenderNode; | |
| class Transform; | |
| } // namespace sksg | |
| namespace skottie { | |
| namespace internal { | |
| class AnimationBuilder; | |
| class CompositionBuilder final : SkNoncopyable { | |
| public: | |
| CompositionBuilder(const AnimationBuilder&, const SkSize&, const skjson::ObjectValue&); | |
| ~CompositionBuilder(); | |
| sk_sp<sksg::RenderNode> build(const AnimationBuilder&); | |
| LayerBuilder* layerBuilder(int layer_index); | |
| sk_sp<sksg::RenderNode> layerContent(const AnimationBuilder&, int layer_index); | |
| private: | |
| const sk_sp<sksg::Transform>& getCameraTransform() const { return fCameraTransform; } | |
| friend class LayerBuilder; | |
| const SkSize fSize; | |
| std::vector<LayerBuilder> fLayerBuilders; | |
| skia_private::THashMap<int, size_t> fLayerIndexMap; // Maps layer "ind" to layer builder index. | |
| sk_sp<sksg::Transform> fCameraTransform; | |
| }; | |
| } // namespace internal | |
| } // namespace skottie | |
| #endif // SkottieComposition_DEFINED |