diff options
Diffstat (limited to 'modules/skottie/include/Skottie.h')
-rw-r--r-- | modules/skottie/include/Skottie.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/modules/skottie/include/Skottie.h b/modules/skottie/include/Skottie.h new file mode 100644 index 0000000000..0a89ca0438 --- /dev/null +++ b/modules/skottie/include/Skottie.h @@ -0,0 +1,80 @@ +/* + * Copyright 2017 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef Skottie_DEFINED +#define Skottie_DEFINED + +#include "SkRefCnt.h" +#include "SkSize.h" +#include "SkString.h" +#include "SkTypes.h" + +#include <memory> + +class SkCanvas; +struct SkRect; +class SkStream; + +namespace sksg { class Scene; } + +namespace skottie { + +namespace json { class ValueRef; } + +class SK_API ResourceProvider : public SkNoncopyable { +public: + virtual ~ResourceProvider() = default; + + virtual std::unique_ptr<SkStream> openStream(const char resource[]) const = 0; +}; + +class SK_API Animation : public SkRefCnt { +public: + struct Stats { + float fTotalLoadTimeMS, + fJsonParseTimeMS, + fSceneParseTimeMS; + size_t fJsonSize, + fAnimatorCount; + }; + + static sk_sp<Animation> Make(SkStream*, const ResourceProvider&, Stats* = nullptr); + static sk_sp<Animation> MakeFromFile(const char path[], const ResourceProvider* = nullptr, + Stats* = nullptr); + + ~Animation() override; + + void render(SkCanvas*, const SkRect* dst = nullptr) const; + + void animationTick(SkMSec); + + 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); + +private: + Animation(const ResourceProvider&, SkString ver, const SkSize& size, SkScalar fps, + const json::ValueRef&, Stats*); + + SkString fVersion; + SkSize fSize; + SkScalar fFrameRate, + fInPoint, + fOutPoint; + + std::unique_ptr<sksg::Scene> fScene; + + typedef SkRefCnt INHERITED; +}; + +} // namespace skottie + +#endif // Skottie_DEFINED |