diff options
Diffstat (limited to 'src/codec/SkCodec.cpp')
-rw-r--r-- | src/codec/SkCodec.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/codec/SkCodec.cpp b/src/codec/SkCodec.cpp index 5bdb3e2b59..6a6fdc78c9 100644 --- a/src/codec/SkCodec.cpp +++ b/src/codec/SkCodec.cpp @@ -489,3 +489,24 @@ bool SkCodec::initializeColorXform(const SkImageInfo& dstInfo, return true; } + +std::vector<SkCodec::FrameInfo> SkCodec::getFrameInfo() { + const size_t frameCount = this->getFrameCount(); + switch (frameCount) { + case 0: + return std::vector<FrameInfo>{}; + case 1: + if (!this->onGetFrameInfo(0, nullptr)) { + // Not animated. + return std::vector<FrameInfo>{}; + } + // fall through + default: { + std::vector<FrameInfo> result(frameCount); + for (size_t i = 0; i < frameCount; ++i) { + SkAssertResult(this->onGetFrameInfo(i, &result[i])); + } + return result; + } + } +} |