aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/codec
diff options
context:
space:
mode:
authorGravatar Leon Scroggins III <scroggo@google.com>2017-08-15 12:24:02 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-08-17 16:09:31 +0000
commit0741818e7ab4e9ea8505b8a8687412f0e3804c65 (patch)
treeac183b3107e97b0717319fd403f6d552fdbd840f /include/codec
parentde44c2df9469e70f57f05d262cd1a245b2ff5e90 (diff)
Move calls to conversion_possible to SkCodec
Move common code into the base class, so subclasses need not call conversion_possible. Use SkEncodedInfo rather than SkImageInfo, and use the proper frame. API Changes: - SkAndroidCodec: - Add getEncodedInfo(), for SkBitmapRegionCodec - SkEncodedInfo: - Add opaque() helper - SkBitmapRegionDecoder: - Remove unused conversionSupported (Split off from skia-review.googlesource.com/c/25746) Bug: skia:5601 Change-Id: If4a40d4b98a3dd0afde2b6058f92315a393a5baf Reviewed-on: https://skia-review.googlesource.com/34361 Reviewed-by: Mike Klein <mtklein@google.com> Reviewed-by: Derek Sollenberger <djsollen@google.com> Commit-Queue: Leon Scroggins <scroggo@google.com>
Diffstat (limited to 'include/codec')
-rw-r--r--include/codec/SkAndroidCodec.h3
-rw-r--r--include/codec/SkCodec.h7
-rw-r--r--include/codec/SkEncodedInfo.h2
3 files changed, 11 insertions, 1 deletions
diff --git a/include/codec/SkAndroidCodec.h b/include/codec/SkAndroidCodec.h
index 3571108edd..cc93bf18c4 100644
--- a/include/codec/SkAndroidCodec.h
+++ b/include/codec/SkAndroidCodec.h
@@ -41,8 +41,9 @@ public:
*/
static std::unique_ptr<SkAndroidCodec> MakeFromData(sk_sp<SkData>, SkPngChunkReader* = nullptr);
- virtual ~SkAndroidCodec() {}
+ virtual ~SkAndroidCodec();
+ const SkEncodedInfo& getEncodedInfo() const;
const SkImageInfo& getInfo() const { return fInfo; }
diff --git a/include/codec/SkCodec.h b/include/codec/SkCodec.h
index fb4f165dbf..8ec44c8539 100644
--- a/include/codec/SkCodec.h
+++ b/include/codec/SkCodec.h
@@ -846,6 +846,13 @@ private:
bool fStartedIncrementalDecode;
/**
+ * Return whether {srcColor, srcIsOpaque, srcCS} can convert to dst.
+ *
+ * Will be called for the appropriate frame, prior to initializing the colorXform.
+ */
+ virtual bool conversionSupported(const SkImageInfo& dst, SkEncodedInfo::Color srcColor,
+ bool srcIsOpaque, const SkColorSpace* srcCS) const;
+ /**
* Return whether these dimensions are supported as a scale.
*
* The codec may choose to cache the information about scale and subset.
diff --git a/include/codec/SkEncodedInfo.h b/include/codec/SkEncodedInfo.h
index 3b1ce48713..dce88cadc1 100644
--- a/include/codec/SkEncodedInfo.h
+++ b/include/codec/SkEncodedInfo.h
@@ -156,6 +156,8 @@ public:
Color color() const { return fColor; }
Alpha alpha() const { return fAlpha; }
+ bool opaque() const { return fAlpha == kOpaque_Alpha; }
+
uint8_t bitsPerComponent() const { return fBitsPerComponent; }
uint8_t bitsPerPixel() const {