| 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;
|
|
|