Chromium Code Reviews| 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..5633972aaa64b0be9c48f7fb3684d5dd04c2782e 100644 |
| --- a/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.h |
| +++ b/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.h |
| @@ -91,7 +91,7 @@ public: |
| enum GammaAndColorProfileOption { |
| GammaAndColorProfileApplied, |
| - GammaAndColorProfileIgnored |
| + GammaAndColorProfileNotApplied |
|
Justin Novosad
2016/08/02 22:49:13
You still need to keep the "Ignore" option IMHO.
|
| }; |
| enum class SniffResult { |
| @@ -111,11 +111,8 @@ 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_bakeColorTransformToPixels(colorOptions == GammaAndColorProfileApplied) { } |
| virtual ~ImageDecoder() { } |
| @@ -231,14 +228,17 @@ 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 an 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 +315,12 @@ 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; |
| ImageOrientation m_orientation; |
| // The maximum amount of memory a decoded image should require. Ideally, |
| @@ -339,9 +341,14 @@ 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; |
| + |
| + const bool m_bakeColorTransformToPixels = false; |
| + |
| + bool m_hasColorProfile = false; |
| + ImageFrame::ICCProfile m_colorProfile; |
| #if USE(QCMSLIB) |
| QCMSTransformUniquePtr m_sourceToOutputDeviceColorTransform; |