| 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 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 182 { | 182 { |
| 183 updateSize(); | 183 updateSize(); |
| 184 return m_sizeRespectingOrientation; | 184 return m_sizeRespectingOrientation; |
| 185 } | 185 } |
| 186 | 186 |
| 187 bool BitmapImage::getHotSpot(IntPoint& hotSpot) const | 187 bool BitmapImage::getHotSpot(IntPoint& hotSpot) const |
| 188 { | 188 { |
| 189 return m_source.getHotSpot(hotSpot); | 189 return m_source.getHotSpot(hotSpot); |
| 190 } | 190 } |
| 191 | 191 |
| 192 Image::SizeAvailability BitmapImage::setData(PassRefPtr<SharedBuffer> data, bool
allDataReceived) | 192 bool BitmapImage::setData(PassRefPtr<SharedBuffer> data, bool allDataReceived) |
| 193 { | 193 { |
| 194 if (!data.get()) | 194 if (!data.get()) |
| 195 return SizeAvailable; | 195 return true; |
| 196 | 196 |
| 197 int length = data->size(); | 197 int length = data->size(); |
| 198 if (!length) | 198 if (!length) |
| 199 return SizeAvailable; | 199 return true; |
| 200 | 200 |
| 201 // If ImageSource::setData() returns Invalid, we know that this is a decode
error. | 201 m_source.setData(*data, allDataReceived); |
| 202 // Report size available so that it gets registered as such in ImageResource
. | |
| 203 if (m_source.setData(*data, allDataReceived) == ImageDecoder::SniffResult::I
nvalid) | |
| 204 return SizeAvailable; | |
| 205 | 202 |
| 206 return dataChanged(allDataReceived); | 203 return dataChanged(allDataReceived); |
| 207 } | 204 } |
| 208 | 205 |
| 209 Image::SizeAvailability BitmapImage::dataChanged(bool allDataReceived) | 206 bool BitmapImage::dataChanged(bool allDataReceived) |
| 210 { | 207 { |
| 211 TRACE_EVENT0("blink", "BitmapImage::dataChanged"); | 208 TRACE_EVENT0("blink", "BitmapImage::dataChanged"); |
| 212 | 209 |
| 213 // 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 |
| 214 // 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 |
| 215 // 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 |
| 216 // 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 |
| 217 // 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 |
| 218 // (even if we use destroyDecodedData() -- since it doesn't reset the | 215 // (even if we use destroyDecodedData() -- since it doesn't reset the |
| 219 // metadata), and it is after all the complete frames. | 216 // metadata), and it is after all the complete frames. |
| (...skipping 15 matching lines...) Expand all Loading... |
| 235 m_frames[i].clear(true); | 232 m_frames[i].clear(true); |
| 236 if (i == m_cachedFrameIndex) | 233 if (i == m_cachedFrameIndex) |
| 237 m_cachedFrame.clear(); | 234 m_cachedFrame.clear(); |
| 238 } | 235 } |
| 239 } | 236 } |
| 240 | 237 |
| 241 // 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. |
| 242 m_allDataReceived = allDataReceived; | 239 m_allDataReceived = allDataReceived; |
| 243 | 240 |
| 244 m_haveFrameCount = false; | 241 m_haveFrameCount = false; |
| 245 return isSizeAvailable() ? SizeAvailable : SizeUnavailable; | 242 return isSizeAvailable(); |
| 246 } | 243 } |
| 247 | 244 |
| 248 bool BitmapImage::hasColorProfile() const | 245 bool BitmapImage::hasColorProfile() const |
| 249 { | 246 { |
| 250 return m_source.hasColorProfile(); | 247 return m_source.hasColorProfile(); |
| 251 } | 248 } |
| 252 | 249 |
| 253 String BitmapImage::filenameExtension() const | 250 String BitmapImage::filenameExtension() const |
| 254 { | 251 { |
| 255 return m_source.filenameExtension(); | 252 return m_source.filenameExtension(); |
| (...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 610 | 607 |
| 611 // 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 |
| 612 // 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. |
| 613 if (skippingFrames != advancedAnimation) | 610 if (skippingFrames != advancedAnimation) |
| 614 getImageObserver()->animationAdvanced(this); | 611 getImageObserver()->animationAdvanced(this); |
| 615 | 612 |
| 616 return advancedAnimation; | 613 return advancedAnimation; |
| 617 } | 614 } |
| 618 | 615 |
| 619 } // namespace blink | 616 } // namespace blink |
| OLD | NEW |