Expose multi-frame methods for SkCodecImageGenerator

This will allow Flutter to avoid some usages of SkCodec
and have consistent EXIF handling for multi-frame formats
that support EXIF.

Change-Id: I80daee9b00777d88d0a960cc0f0d76da6680e257
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/302270
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Dan Field <dnfield@google.com>
diff --git a/src/codec/SkCodecImageGenerator.cpp b/src/codec/SkCodecImageGenerator.cpp
index ba02233..7a23c07 100644
--- a/src/codec/SkCodecImageGenerator.cpp
+++ b/src/codec/SkCodecImageGenerator.cpp
@@ -46,12 +46,11 @@
     return fData;
 }
 
-bool SkCodecImageGenerator::onGetPixels(const SkImageInfo& requestInfo, void* requestPixels,
-                                        size_t requestRowBytes, const Options&) {
-    SkPixmap dst(requestInfo, requestPixels, requestRowBytes);
+bool SkCodecImageGenerator::getPixels(const SkImageInfo& info, void* pixels, size_t rowBytes, const SkCodec::Options* options) {
+    SkPixmap dst(info, pixels, rowBytes);
 
-    auto decode = [this](const SkPixmap& pm) {
-        SkCodec::Result result = fCodec->getPixels(pm);
+    auto decode = [this, options](const SkPixmap& pm) {
+        SkCodec::Result result = fCodec->getPixels(pm, options);
         switch (result) {
             case SkCodec::kSuccess:
             case SkCodec::kIncompleteInput:
@@ -65,6 +64,11 @@
     return SkPixmapPriv::Orient(dst, fCodec->getOrigin(), decode);
 }
 
+bool SkCodecImageGenerator::onGetPixels(const SkImageInfo& requestInfo, void* requestPixels,
+                                        size_t requestRowBytes, const Options& options) {
+    return this->getPixels(requestInfo, requestPixels, requestRowBytes, nullptr);
+}
+
 bool SkCodecImageGenerator::onQueryYUVA8(SkYUVASizeInfo* sizeInfo,
                                          SkYUVAIndex yuvaIndices[SkYUVAIndex::kIndexCount],
                                          SkYUVColorSpace* colorSpace) const {