OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006 Apple Computer, Inc. All rights reserved. | 2 * Copyright (C) 2006 Apple Computer, Inc. All rights reserved. |
3 * Copyright (C) Research In Motion Limited 2009-2010. All rights reserved. | 3 * Copyright (C) Research In Motion Limited 2009-2010. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 enum AlphaOption { | 87 enum AlphaOption { |
88 AlphaPremultiplied, | 88 AlphaPremultiplied, |
89 AlphaNotPremultiplied | 89 AlphaNotPremultiplied |
90 }; | 90 }; |
91 | 91 |
92 enum GammaAndColorProfileOption { | 92 enum GammaAndColorProfileOption { |
93 GammaAndColorProfileApplied, | 93 GammaAndColorProfileApplied, |
94 GammaAndColorProfileIgnored | 94 GammaAndColorProfileIgnored |
95 }; | 95 }; |
96 | 96 |
97 enum class SniffResult { | |
98 JPEG, | |
99 PNG, | |
100 GIF, | |
101 WEBP, | |
102 ICO, | |
103 BMP, | |
104 InsufficientData, | |
105 Invalid | |
106 }; | |
107 | |
108 static SniffResult determineImageType(const char* data, size_t length); | |
109 static SniffResult determineImageType(const SharedBuffer&); | |
110 static SniffResult determineImageType(const SegmentReader&); | |
111 | |
112 ImageDecoder(AlphaOption alphaOption, GammaAndColorProfileOption colorOption
s, size_t maxDecodedBytes) | 97 ImageDecoder(AlphaOption alphaOption, GammaAndColorProfileOption colorOption
s, size_t maxDecodedBytes) |
113 : m_premultiplyAlpha(alphaOption == AlphaPremultiplied) | 98 : m_premultiplyAlpha(alphaOption == AlphaPremultiplied) |
114 , m_ignoreGammaAndColorProfile(colorOptions == GammaAndColorProfileIgnor
ed) | 99 , m_ignoreGammaAndColorProfile(colorOptions == GammaAndColorProfileIgnor
ed) |
115 , m_maxDecodedBytes(maxDecodedBytes) | 100 , m_maxDecodedBytes(maxDecodedBytes) |
116 , m_sizeAvailable(false) | 101 , m_sizeAvailable(false) |
117 , m_isAllDataReceived(false) | 102 , m_isAllDataReceived(false) |
118 , m_failed(false) { } | 103 , m_failed(false) { } |
119 | 104 |
120 virtual ~ImageDecoder() { } | 105 virtual ~ImageDecoder() { } |
121 | 106 |
122 // Returns a caller-owned decoder of the appropriate type. Returns 0 if | 107 // Returns a caller-owned decoder of the appropriate type. Returns 0 if |
123 // we can't sniff a supported type from the provided data (possibly | 108 // we can't sniff a supported type from the provided data (possibly |
124 // because there isn't enough data yet). | 109 // because there isn't enough data yet). |
125 // Sets m_maxDecodedBytes to Platform::maxImageDecodedBytes(). | 110 // Sets m_maxDecodedBytes to Platform::maxImageDecodedBytes(). |
126 static std::unique_ptr<ImageDecoder> create(SniffResult, AlphaOption, GammaA
ndColorProfileOption); | 111 static std::unique_ptr<ImageDecoder> create(const char* data, size_t length,
AlphaOption, GammaAndColorProfileOption); |
| 112 static std::unique_ptr<ImageDecoder> create(const SharedBuffer&, AlphaOption
, GammaAndColorProfileOption); |
| 113 static std::unique_ptr<ImageDecoder> create(const SegmentReader&, AlphaOptio
n, GammaAndColorProfileOption); |
127 | 114 |
128 virtual String filenameExtension() const = 0; | 115 virtual String filenameExtension() const = 0; |
129 | 116 |
130 bool isAllDataReceived() const { return m_isAllDataReceived; } | 117 bool isAllDataReceived() const { return m_isAllDataReceived; } |
131 | 118 |
132 void setData(PassRefPtr<SegmentReader> data, bool allDataReceived) | 119 void setData(PassRefPtr<SegmentReader> data, bool allDataReceived) |
133 { | 120 { |
134 if (m_failed) | 121 if (m_failed) |
135 return; | 122 return; |
136 m_data = data; | 123 m_data = data; |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
344 bool m_failed; | 331 bool m_failed; |
345 | 332 |
346 #if USE(QCMSLIB) | 333 #if USE(QCMSLIB) |
347 QCMSTransformUniquePtr m_sourceToOutputDeviceColorTransform; | 334 QCMSTransformUniquePtr m_sourceToOutputDeviceColorTransform; |
348 #endif | 335 #endif |
349 }; | 336 }; |
350 | 337 |
351 } // namespace blink | 338 } // namespace blink |
352 | 339 |
353 #endif | 340 #endif |
OLD | NEW |