Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(52)

Unified Diff: src/codec/SkCodec_wbmp.cpp

Issue 1332053002: Fill incomplete images in SkCodec parent class (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/codec/SkCodec_wbmp.cpp
diff --git a/src/codec/SkCodec_wbmp.cpp b/src/codec/SkCodec_wbmp.cpp
index 22f2bacce0d22f4fb4246a7f8c06338c1f09be17..727aeed2ec4ee99b77c72b852a329302095e00d1 100644
--- a/src/codec/SkCodec_wbmp.cpp
+++ b/src/codec/SkCodec_wbmp.cpp
@@ -140,6 +140,7 @@ SkCodec::Result SkWbmpCodec::onGetPixels(const SkImageInfo& info,
for (int y = 0; y < size.height(); ++y) {
Result rowResult = this->readRow(src.get());
if (kSuccess != rowResult) {
+ this->setIncompleteScanlines(size.height() - y);
return rowResult;
}
swizzler->swizzle(dstRow, src.get());
@@ -169,24 +170,24 @@ public:
* Takes ownership of all pointer paramters.
*/
SkWbmpScanlineDecoder(SkWbmpCodec* codec)
- : INHERITED(codec->getInfo())
+ : INHERITED(codec, codec->getInfo())
, fCodec(codec)
, fColorTable(nullptr)
, fSwizzler(nullptr)
, fSrcBuffer(codec->fSrcRowBytes)
{}
- SkCodec::Result onGetScanlines(void* dst, int count, size_t dstRowBytes) override {
+ uint32_t onGetScanlines(void* dst, int count, size_t dstRowBytes) override {
void* dstRow = dst;
for (int y = 0; y < count; ++y) {
SkCodec::Result rowResult = fCodec->readRow(fSrcBuffer.get());
if (SkCodec::kSuccess != rowResult) {
- return rowResult;
+ return y;
}
fSwizzler->swizzle(dstRow, fSrcBuffer.get());
dstRow = SkTAddOffset<void>(dstRow, dstRowBytes);
}
- return SkCodec::kSuccess;
+ return count;
}
SkCodec::Result onStart(const SkImageInfo& dstInfo,
@@ -232,7 +233,7 @@ public:
}
private:
- SkAutoTDelete<SkWbmpCodec> fCodec;
+ SkWbmpCodec* fCodec; // Owned by parent class
SkAutoTUnref<SkColorTable> fColorTable;
SkAutoTDelete<SkSwizzler> fSwizzler;
SkAutoTMalloc<uint8_t> fSrcBuffer;

Powered by Google App Engine
This is Rietveld 408576698