Changeset 64777 in webkit
- Timestamp:
- Aug 5, 2010 1:01:40 PM (14 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r64770 r64777 1 2010-08-05 Yong Li <yoli@rim.com> 2 3 Reviewed by Adam Treat. 4 5 Fix the problem that down-sampling code doesn't work 6 for some GIF's. GIF reader can call setSize() multiple times. 7 We should clear the scaling maps before adding new entries. 8 Also add a fast path to check if the size has changed since last time. 9 10 https://bugs.webkit.org/show_bug.cgi?id=43501 11 12 * platform/image-decoders/ImageDecoder.cpp: 13 (WebCore::ImageDecoder::prepareScaleDataIfNecessary): 14 * platform/image-decoders/gif/GIFImageDecoder.cpp: 15 (WebCore::GIFImageDecoder::setSize): 16 1 17 2010-08-05 Ilya Tikhonovsky <loislo@chromium.org> 2 18 -
trunk/WebCore/platform/image-decoders/ImageDecoder.cpp
r54978 r64777 220 220 void ImageDecoder::prepareScaleDataIfNecessary() 221 221 { 222 m_scaled = false; 223 m_scaledColumns.clear(); 224 m_scaledRows.clear(); 225 222 226 int width = size().width(); 223 227 int height = size().height(); 224 228 int numPixels = height * width; 225 if (m_maxNumPixels > 0 && numPixels > m_maxNumPixels) { 226 m_scaled = true; 227 double scale = sqrt(m_maxNumPixels / (double)numPixels); 228 fillScaledValues(m_scaledColumns, scale, width); 229 fillScaledValues(m_scaledRows, scale, height); 230 } else if (m_scaled) { 231 m_scaled = false; 232 m_scaledColumns.clear(); 233 m_scaledRows.clear(); 234 } 229 if (m_maxNumPixels <= 0 || numPixels <= m_maxNumPixels) 230 return; 231 232 m_scaled = true; 233 double scale = sqrt(m_maxNumPixels / (double)numPixels); 234 fillScaledValues(m_scaledColumns, scale, width); 235 fillScaledValues(m_scaledRows, scale, height); 235 236 } 236 237 -
trunk/WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp
r61619 r64777 62 62 bool GIFImageDecoder::setSize(unsigned width, unsigned height) 63 63 { 64 if (ImageDecoder::isSizeAvailable() && size().width() == width && size().height() == height) 65 return true; 66 64 67 if (!ImageDecoder::setSize(width, height)) 65 68 return false;
Note: See TracChangeset
for help on using the changeset viewer.