Index: third_party/WebKit/Source/platform/image-decoders/ImageDecoder.cpp |
diff --git a/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.cpp b/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.cpp |
index 93d5cc894510f8958c5f1930530234afd8b90b51..691e9e41b26c8f0a938387987311526742d7ca7c 100644 |
--- a/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.cpp |
+++ b/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.cpp |
@@ -294,9 +294,10 @@ size_t ImagePlanes::rowBytes(int i) const |
return m_rowBytes[i]; |
} |
-#if USE(QCMSLIB) |
namespace { |
+#if USE(QCMSLIB) |
+ |
const unsigned kIccColorProfileHeaderLength = 128; |
bool rgbColorProfile(const char* profileData, unsigned profileLength) |
@@ -317,11 +318,14 @@ bool inputDeviceColorProfile(const char* profileData, unsigned profileLength) |
SpinLock gTargetColorProfileLock; |
qcms_profile* gTargetColorProfile = nullptr; |
+#endif // USE(QCMSLIB) |
+ |
} // namespace |
// static |
void ImageDecoder::setTargetColorProfile(const WebVector<char>& profile) |
{ |
+#if USE(QCMSLIB) |
if (profile.isEmpty()) |
return; |
@@ -349,15 +353,18 @@ void ImageDecoder::setTargetColorProfile(const WebVector<char>& profile) |
} |
qcms_profile_precache_output_transform(gTargetColorProfile); |
+#endif // USE(QCMSLIB) |
} |
-bool ImageDecoder::hasColorProfile() const |
+void ImageDecoder::setColorProfileAndComputeTransform(const char* iccData, unsigned iccLength, bool hasAlpha, bool useSRGB) |
{ |
- return m_sourceToOutputDeviceColorTransform.get(); |
-} |
+ // Sub-classes should not call this if they were instructed to ignore embedded color profiles. |
+ DCHECK(!m_ignoreGammaAndColorProfile); |
-void ImageDecoder::setColorProfileAndTransform(const char* iccData, unsigned iccLength, bool hasAlpha, bool useSRGB) |
-{ |
+ m_colorProfile.assign(iccData, iccLength); |
+ m_hasColorProfile = true; |
+ |
+#if USE(QCMSLIB) |
m_sourceToOutputDeviceColorTransform.reset(); |
// Create the input profile |
@@ -396,19 +403,7 @@ void ImageDecoder::setColorProfileAndTransform(const char* iccData, unsigned icc |
// FIXME: Don't force perceptual intent if the image profile contains an intent. |
m_sourceToOutputDeviceColorTransform.reset(qcms_transform_create(inputProfile.get(), dataFormat, gTargetColorProfile, QCMS_DATA_RGBA_8, QCMS_INTENT_PERCEPTUAL)); |
-} |
- |
-#else // USE(QCMSLIB) |
- |
-void ImageDecoder::setTargetColorProfile(const WebVector<char>&) |
-{ |
-} |
- |
-bool ImageDecoder::hasColorProfile() const |
-{ |
- return false; |
-} |
- |
#endif // USE(QCMSLIB) |
+} |
} // namespace blink |