Index: third_party/WebKit/Source/platform/image-decoders/ImageDecoder.h |
diff --git a/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.h b/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.h |
index 0a73a82315b20919cba52da038188b0b239400be..a44d261b49b45e02fd25415aa1f76c59c2551f42 100644 |
--- a/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.h |
+++ b/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.h |
@@ -112,10 +112,7 @@ public: |
ImageDecoder(AlphaOption alphaOption, GammaAndColorProfileOption colorOptions, size_t maxDecodedBytes) |
: m_premultiplyAlpha(alphaOption == AlphaPremultiplied) |
, m_ignoreGammaAndColorProfile(colorOptions == GammaAndColorProfileIgnored) |
- , m_maxDecodedBytes(maxDecodedBytes) |
- , m_sizeAvailable(false) |
- , m_isAllDataReceived(false) |
- , m_failed(false) { } |
+ , m_maxDecodedBytes(maxDecodedBytes) { } |
virtual ~ImageDecoder() { } |
@@ -231,14 +228,19 @@ public: |
ImageOrientation orientation() const { return m_orientation; } |
- void setIgnoreGammaAndColorProfile(bool flag) { m_ignoreGammaAndColorProfile = flag; } |
bool ignoresGammaAndColorProfile() const { return m_ignoreGammaAndColorProfile; } |
- |
static void setTargetColorProfile(const WebVector<char>&); |
- bool hasColorProfile() const; |
+ |
+ |
+ // Note that hasColorProfile refers to the existence of a not-ignored |
+ // embedded color profile, and is independent of whether or not that |
+ // profile's transform has been baked into the pixel values. |
+ bool hasColorProfile() const { return m_hasColorProfile; } |
+ void setColorProfileAndComputeTransform(const char* iccData, unsigned iccLength, bool hasAlpha, bool useSRGB); |
#if USE(QCMSLIB) |
- void setColorProfileAndTransform(const char* iccData, unsigned iccLength, bool hasAlpha, bool useSRGB); |
+ // In contrast with hasColorProfile, this refers to the transform that has |
+ // been baked into the pixels. |
qcms_transform* colorTransform() { return m_sourceToOutputDeviceColorTransform.get(); } |
#endif |
@@ -315,10 +317,13 @@ protected: |
// Decodes the requested frame. |
virtual void decode(size_t) = 0; |
+ // Returns the embedded image color profile. |
+ const ImageFrame::ICCProfile& colorProfile() const { return m_colorProfile; } |
+ |
RefPtr<SegmentReader> m_data; // The encoded data. |
Vector<ImageFrame, 1> m_frameBufferCache; |
- bool m_premultiplyAlpha; |
- bool m_ignoreGammaAndColorProfile; |
+ const bool m_premultiplyAlpha; |
+ const bool m_ignoreGammaAndColorProfile; |
ImageOrientation m_orientation; |
// The maximum amount of memory a decoded image should require. Ideally, |
@@ -326,7 +331,7 @@ protected: |
// (and then return the downsampled size from decodedSize()). Ignoring |
// this limit can cause excessive memory use or even crashes on low- |
// memory devices. |
- size_t m_maxDecodedBytes; |
+ const size_t m_maxDecodedBytes; |
private: |
// Some code paths compute the size of the image as "width * height * 4" |
@@ -339,9 +344,12 @@ private: |
} |
IntSize m_size; |
- bool m_sizeAvailable; |
- bool m_isAllDataReceived; |
- bool m_failed; |
+ bool m_sizeAvailable = false; |
+ bool m_isAllDataReceived = false; |
+ bool m_failed = false; |
+ |
+ bool m_hasColorProfile = false; |
+ ImageFrame::ICCProfile m_colorProfile; |
#if USE(QCMSLIB) |
QCMSTransformUniquePtr m_sourceToOutputDeviceColorTransform; |