diff options
author | 2015-08-12 07:24:13 -0700 | |
---|---|---|
committer | 2015-08-12 07:24:13 -0700 | |
commit | b427db1d457a083f2652756a453fbb91bc6a7447 (patch) | |
tree | 7f75aa76f1b488fb97a5fa4222c1a04a2906a5ae /src/codec/SkCodec_wbmp.cpp | |
parent | 4b5472bdb05404681388b5c5a4962f24a76e088b (diff) |
Consolidate SkCodec functions for handling rewind
Previously, many of our codec implementations followed the same
pattern (often in a function named handleRewind):
switch (this->rewindIfNeeded()) {
case CouldNotRewind:
return CouldNotRewind;
case NoRewindNecessary:
// keep going
break;
case Rewound:
<re-read header etc>
break;
}
In this CL, remove the enum, and put the piece that happens in the
Rewound case into a virtual function, onRewind. rewindIfNeeded now
contains the common pieces from various functions named handleRewind.
In SkBmpCodec, add a function that returns whether the BMP is in ICO,
so it can have a common implementation for onRewind.
BUG=skia:3257
Review URL: https://codereview.chromium.org/1288483002
Diffstat (limited to 'src/codec/SkCodec_wbmp.cpp')
-rw-r--r-- | src/codec/SkCodec_wbmp.cpp | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/src/codec/SkCodec_wbmp.cpp b/src/codec/SkCodec_wbmp.cpp index 86dce5cc89..52535e1f02 100644 --- a/src/codec/SkCodec_wbmp.cpp +++ b/src/codec/SkCodec_wbmp.cpp @@ -66,16 +66,8 @@ static bool read_header(SkStream* stream, SkISize* size) { return true; } -bool SkWbmpCodec::handleRewind() { - SkCodec::RewindState rewindState = this->rewindIfNeeded(); - if (rewindState == kCouldNotRewind_RewindState) { - return false; - } else if (rewindState == kRewound_RewindState) { - if (!read_header(this->stream(), NULL)) { - return false; - } - } - return true; +bool SkWbmpCodec::onRewind() { + return read_header(this->stream(), NULL); } SkSwizzler* SkWbmpCodec::initializeSwizzler(const SkImageInfo& info, @@ -117,7 +109,7 @@ SkCodec::Result SkWbmpCodec::onGetPixels(const SkImageInfo& info, const Options& options, SkPMColor ctable[], int* ctableCount) { - if (!this->handleRewind()) { + if (!this->rewindIfNeeded()) { return kCouldNotRewind; } if (options.fSubset) { @@ -197,7 +189,7 @@ public: SkCodec::Result onStart(const SkImageInfo& dstInfo, const SkCodec::Options& options, SkPMColor inputColorTable[], int* inputColorCount) { - if (!fCodec->handleRewind()) { + if (!fCodec->rewindIfNeeded()) { return SkCodec::kCouldNotRewind; } if (options.fSubset) { |