aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/codec/SkCodec.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/codec/SkCodec.cpp')
-rw-r--r--src/codec/SkCodec.cpp21
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;
+ }
+ }
+}