| /* | |
| * 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 SkottieExternalLayer_DEFINED | |
| #define SkottieExternalLayer_DEFINED | |
| #include "include/core/SkRefCnt.h" | |
| class SkCanvas; | |
| struct SkSize; | |
| namespace skottie { | |
| /** | |
| * Interface for externally-rendered layers. | |
| */ | |
| class ExternalLayer : public SkRefCnt { | |
| public: | |
| /** Render layer content into the given canvas. | |
| * | |
| * @param canvas Destination canvas | |
| * @param t Time in seconds, relative to the layer in-point (start time) | |
| */ | |
| virtual void render(SkCanvas* canvas, double t) = 0; | |
| }; | |
| /** | |
| * Interface for intercepting pre-composed layer creation. | |
| * | |
| * Embedders can register interceptors with animation builders, to substitute target layers | |
| * with arbitrary/externally-controlled content (see ExternalLayer above). | |
| */ | |
| class PrecompInterceptor : public SkRefCnt { | |
| public: | |
| /** | |
| * Invoked at animation build time, for each precomp layer. | |
| * | |
| * @param id The target composition ID (usually assigned automatically by BM: comp_0, ...) | |
| * @param name The name of the precomp layer (by default it matches the target comp name, | |
| * but can be changed in AE) | |
| * @param size Lottie-specified precomp layer size | |
| * @return An ExternalLayer implementation (to be used instead of the actual Lottie file | |
| * content), or nullptr (to use the Lottie file content). | |
| */ | |
| virtual sk_sp<ExternalLayer> onLoadPrecomp(const char id[], | |
| const char name[], | |
| const SkSize& size) = 0; | |
| }; | |
| } // namespace skottie | |
| #endif // SkottieExternalLayer_DEFINED |