12#include "third_party/skia/include/android/SkAnimatedImage.h"
13#include "third_party/skia/include/codec/SkAndroidCodec.h"
14#include "third_party/skia/include/codec/SkCodec.h"
15#include "third_party/skia/include/codec/SkGifDecoder.h"
16#include "third_party/skia/include/codec/SkWebpDecoder.h"
19std::unique_ptr<SkCodec> getCodecForData(SkData* data) {
20 if (SkGifDecoder::IsGif(
data->data(),
data->size())) {
21 return SkGifDecoder::Decode(sk_ref_sp(data),
nullptr);
23 if (SkWebpDecoder::IsWebp(
data->data(),
data->size())) {
24 return SkWebpDecoder::Decode(sk_ref_sp(data),
nullptr);
34 auto codec = getCodecForData(data);
36 printf(
"Failed to create codec for animated image.\n");
40 auto android_codec = SkAndroidCodec::MakeFromCodec(std::move(codec));
41 if (android_codec ==
nullptr) {
42 printf(
"Failed to create codec for animated image.\n");
46 if (target_width == 0 || target_height == 0) {
47 return SkAnimatedImage::Make(std::move(android_codec)).release();
50 return SkAnimatedImage::Make(
51 std::move(android_codec),
52 SkImageInfo::MakeUnknown(target_width, target_height),
53 SkIRect::MakeWH(target_width, target_height),
nullptr)
63 return image->getFrameCount();
67 return image->getRepetitionCount();
71 SkAnimatedImage*
image) {
72 return image->currentFrameDuration();
76 image->decodeNextFrame();
80 SkAnimatedImage*
image) {
SKWASM_EXPORT int animatedImage_getRepetitionCount(SkAnimatedImage *image)
SKWASM_EXPORT int animatedImage_getCurrentFrameDurationMilliseconds(SkAnimatedImage *image)
SKWASM_EXPORT void animatedImage_decodeNextFrame(SkAnimatedImage *image)
SKWASM_EXPORT SkAnimatedImage * animatedImage_create(SkData *data, int target_width, int target_height)
SKWASM_EXPORT int animatedImage_getFrameCount(SkAnimatedImage *image)
SKWASM_EXPORT void animatedImage_dispose(SkAnimatedImage *image)
SKWASM_EXPORT flutter::DlImage * animatedImage_getCurrentFrame(SkAnimatedImage *image)
Represents an image whose allocation is (usually) resident on device memory.
static sk_sp< DlImage > Make(const SkImage *image)
FlutterVulkanImage * image
uint32_t live_animated_image_count
uint32_t live_image_count
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot data