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

Unified Diff: third_party/WebKit/Source/platform/graphics/DeferredImageDecoder.cpp

Issue 2462803002: Plumb color space to DecodingImageGenerator and ImageFrameGenerator (Closed)
Patch Set: Incorporate review feedback Created 4 years, 1 month 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: third_party/WebKit/Source/platform/graphics/DeferredImageDecoder.cpp
diff --git a/third_party/WebKit/Source/platform/graphics/DeferredImageDecoder.cpp b/third_party/WebKit/Source/platform/graphics/DeferredImageDecoder.cpp
index c791aa4197a8ce6fff89446fc06da839a49c9a1e..847c246d3f240bc0caca62f0ffca1762fe48ee6d 100644
--- a/third_party/WebKit/Source/platform/graphics/DeferredImageDecoder.cpp
+++ b/third_party/WebKit/Source/platform/graphics/DeferredImageDecoder.cpp
@@ -90,7 +90,6 @@ DeferredImageDecoder::DeferredImageDecoder(
: m_allDataReceived(false),
m_actualDecoder(std::move(actualDecoder)),
m_repetitionCount(cAnimationNone),
- m_hasColorSpace(false),
m_canYUVDecode(false),
m_hasHotSpot(false) {}
@@ -179,8 +178,9 @@ bool DeferredImageDecoder::isSizeAvailable() {
return m_actualDecoder ? m_actualDecoder->isSizeAvailable() : true;
}
-bool DeferredImageDecoder::hasColorSpace() const {
- return m_actualDecoder ? m_actualDecoder->hasColorSpace() : m_hasColorSpace;
+bool DeferredImageDecoder::hasEmbeddedColorSpace() const {
+ return m_actualDecoder ? m_actualDecoder->hasEmbeddedColorSpace()
+ : m_hasEmbeddedColorSpace;
}
IntSize DeferredImageDecoder::size() const {
@@ -266,7 +266,7 @@ void DeferredImageDecoder::activateLazyDecoding() {
// future.)
m_canYUVDecode = RuntimeEnabledFeatures::decodeToYUVEnabled() &&
(m_filenameExtension == "jpg");
- m_hasColorSpace = m_actualDecoder->hasColorSpace();
+ m_hasEmbeddedColorSpace = m_actualDecoder->hasEmbeddedColorSpace();
const bool isSingleFrame =
m_actualDecoder->repetitionCount() == cAnimationNone ||
@@ -274,7 +274,8 @@ void DeferredImageDecoder::activateLazyDecoding() {
const SkISize decodedSize =
SkISize::Make(m_actualDecoder->decodedSize().width(),
m_actualDecoder->decodedSize().height());
- m_frameGenerator = ImageFrameGenerator::create(decodedSize, !isSingleFrame);
+ m_frameGenerator = ImageFrameGenerator::create(
+ decodedSize, m_actualDecoder->colorSpace(), !isSingleFrame);
}
void DeferredImageDecoder::prepareLazyDecodedFrames() {
@@ -311,13 +312,6 @@ void DeferredImageDecoder::prepareLazyDecodedFrames() {
}
}
-inline SkImageInfo imageInfoFrom(const SkISize& decodedSize,
- bool knownToBeOpaque) {
- return SkImageInfo::MakeN32(
- decodedSize.width(), decodedSize.height(),
- knownToBeOpaque ? kOpaque_SkAlphaType : kPremul_SkAlphaType);
-}
-
sk_sp<SkImage> DeferredImageDecoder::createFrameImageAtIndex(
size_t index,
bool knownToBeOpaque) {
@@ -328,9 +322,14 @@ sk_sp<SkImage> DeferredImageDecoder::createFrameImageAtIndex(
sk_sp<SkROBuffer> roBuffer(m_rwBuffer->newRBufferSnapshot());
RefPtr<SegmentReader> segmentReader =
SegmentReader::createFromSkROBuffer(std::move(roBuffer));
+
+ SkImageInfo info = SkImageInfo::MakeN32(
+ decodedSize.width(), decodedSize.height(),
+ knownToBeOpaque ? kOpaque_SkAlphaType : kPremul_SkAlphaType,
+ m_frameGenerator->getColorSpace());
+
DecodingImageGenerator* generator = new DecodingImageGenerator(
- m_frameGenerator, imageInfoFrom(decodedSize, knownToBeOpaque),
- segmentReader.release(), m_allDataReceived, index,
+ m_frameGenerator, info, segmentReader.release(), m_allDataReceived, index,
m_frameData[index].m_uniqueID);
sk_sp<SkImage> image = SkImage::MakeFromGenerator(
generator); // SkImage takes ownership of the generator.

Powered by Google App Engine
This is Rietveld 408576698