| OLD | NEW | 
|    1 /* |    1 /* | 
|    2  * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) |    2  * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) | 
|    3  * Copyright (C) 2004, 2005, 2006, 2008 Apple Inc. All rights reserved. |    3  * Copyright (C) 2004, 2005, 2006, 2008 Apple Inc. 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 100 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  111  |  111  | 
|  112 void BitmapImage::destroyDecodedData() |  112 void BitmapImage::destroyDecodedData() | 
|  113 { |  113 { | 
|  114     m_cachedFrame.clear(); |  114     m_cachedFrame.clear(); | 
|  115     for (size_t i = 0; i < m_frames.size(); ++i) |  115     for (size_t i = 0; i < m_frames.size(); ++i) | 
|  116         m_frames[i].clear(true); |  116         m_frames[i].clear(true); | 
|  117     m_source.clearCacheExceptFrame(kNotFound); |  117     m_source.clearCacheExceptFrame(kNotFound); | 
|  118     notifyMemoryChanged(); |  118     notifyMemoryChanged(); | 
|  119 } |  119 } | 
|  120  |  120  | 
 |  121 PassRefPtr<SharedBuffer> BitmapImage::data() | 
 |  122 { | 
 |  123     return m_source.data(); | 
 |  124 } | 
 |  125  | 
|  121 void BitmapImage::notifyMemoryChanged() |  126 void BitmapImage::notifyMemoryChanged() | 
|  122 { |  127 { | 
|  123     if (getImageObserver()) |  128     if (getImageObserver()) | 
|  124         getImageObserver()->decodedSizeChangedTo(this, totalFrameBytes()); |  129         getImageObserver()->decodedSizeChangedTo(this, totalFrameBytes()); | 
|  125 } |  130 } | 
|  126  |  131  | 
|  127 size_t BitmapImage::totalFrameBytes() |  132 size_t BitmapImage::totalFrameBytes() | 
|  128 { |  133 { | 
|  129     const size_t numFrames = frameCount(); |  134     const size_t numFrames = frameCount(); | 
|  130     size_t totalBytes = 0; |  135     size_t totalBytes = 0; | 
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  177 { |  182 { | 
|  178     updateSize(); |  183     updateSize(); | 
|  179     return m_sizeRespectingOrientation; |  184     return m_sizeRespectingOrientation; | 
|  180 } |  185 } | 
|  181  |  186  | 
|  182 bool BitmapImage::getHotSpot(IntPoint& hotSpot) const |  187 bool BitmapImage::getHotSpot(IntPoint& hotSpot) const | 
|  183 { |  188 { | 
|  184     return m_source.getHotSpot(hotSpot); |  189     return m_source.getHotSpot(hotSpot); | 
|  185 } |  190 } | 
|  186  |  191  | 
 |  192 bool BitmapImage::setData(PassRefPtr<SharedBuffer> data, bool allDataReceived) | 
 |  193 { | 
 |  194     if (!data.get()) | 
 |  195         return true; | 
 |  196  | 
 |  197     int length = data->size(); | 
 |  198     if (!length) | 
 |  199         return true; | 
 |  200  | 
 |  201     m_source.setData(*data, allDataReceived); | 
 |  202  | 
 |  203     return dataChanged(allDataReceived); | 
 |  204 } | 
 |  205  | 
|  187 bool BitmapImage::dataChanged(bool allDataReceived) |  206 bool BitmapImage::dataChanged(bool allDataReceived) | 
|  188 { |  207 { | 
|  189     TRACE_EVENT0("blink", "BitmapImage::dataChanged"); |  208     TRACE_EVENT0("blink", "BitmapImage::dataChanged"); | 
|  190  |  209  | 
|  191     // Clear all partially-decoded frames. For most image formats, there is only |  210     // Clear all partially-decoded frames. For most image formats, there is only | 
|  192     // one frame, but at least GIF and ICO can have more. With GIFs, the frames |  211     // one frame, but at least GIF and ICO can have more. With GIFs, the frames | 
|  193     // come in order and we ask to decode them in order, waiting to request a |  212     // come in order and we ask to decode them in order, waiting to request a | 
|  194     // subsequent frame until the prior one is complete. Given that we clear |  213     // subsequent frame until the prior one is complete. Given that we clear | 
|  195     // incomplete frames here, this means there is at most one incomplete frame |  214     // incomplete frames here, this means there is at most one incomplete frame | 
|  196     // (even if we use destroyDecodedData() -- since it doesn't reset the |  215     // (even if we use destroyDecodedData() -- since it doesn't reset the | 
| (...skipping 14 matching lines...) Expand all  Loading... | 
|  211         // cleared-on-a-previous-pass) frames! |  230         // cleared-on-a-previous-pass) frames! | 
|  212         if (m_frames[i].m_haveMetadata && !m_frames[i].m_isComplete) { |  231         if (m_frames[i].m_haveMetadata && !m_frames[i].m_isComplete) { | 
|  213             m_frames[i].clear(true); |  232             m_frames[i].clear(true); | 
|  214             if (i == m_cachedFrameIndex) |  233             if (i == m_cachedFrameIndex) | 
|  215                 m_cachedFrame.clear(); |  234                 m_cachedFrame.clear(); | 
|  216         } |  235         } | 
|  217     } |  236     } | 
|  218  |  237  | 
|  219     // Feed all the data we've seen so far to the image decoder. |  238     // Feed all the data we've seen so far to the image decoder. | 
|  220     m_allDataReceived = allDataReceived; |  239     m_allDataReceived = allDataReceived; | 
|  221     ASSERT(data()); |  | 
|  222     m_source.setData(*data(), allDataReceived); |  | 
|  223  |  240  | 
|  224     m_haveFrameCount = false; |  241     m_haveFrameCount = false; | 
|  225     return isSizeAvailable(); |  242     return isSizeAvailable(); | 
|  226 } |  243 } | 
|  227  |  244  | 
|  228 bool BitmapImage::hasColorProfile() const |  245 bool BitmapImage::hasColorProfile() const | 
|  229 { |  246 { | 
|  230     return m_source.hasColorProfile(); |  247     return m_source.hasColorProfile(); | 
|  231 } |  248 } | 
|  232  |  249  | 
| (...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  590  |  607  | 
|  591     // We need to draw this frame if we advanced to it while not skipping, or if |  608     // We need to draw this frame if we advanced to it while not skipping, or if | 
|  592     // while trying to skip frames we hit the last frame and thus had to stop. |  609     // while trying to skip frames we hit the last frame and thus had to stop. | 
|  593     if (skippingFrames != advancedAnimation) |  610     if (skippingFrames != advancedAnimation) | 
|  594         getImageObserver()->animationAdvanced(this); |  611         getImageObserver()->animationAdvanced(this); | 
|  595  |  612  | 
|  596     return advancedAnimation; |  613     return advancedAnimation; | 
|  597 } |  614 } | 
|  598  |  615  | 
|  599 } // namespace blink |  616 } // namespace blink | 
| OLD | NEW |