| OLD | NEW |
| 1 /* | 1 /* |
| 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) | 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) |
| 3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org) | 3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org) |
| 4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org) | 4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org) |
| 5 Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) | 5 Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) |
| 6 Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. | 6 Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. |
| 7 | 7 |
| 8 This library is free software; you can redistribute it and/or | 8 This library is free software; you can redistribute it and/or |
| 9 modify it under the terms of the GNU Library General Public | 9 modify it under the terms of the GNU Library General Public |
| 10 License as published by the Free Software Foundation; either | 10 License as published by the Free Software Foundation; either |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 return errorOccurred() && m_shouldPaintBrokenImage; | 157 return errorOccurred() && m_shouldPaintBrokenImage; |
| 158 } | 158 } |
| 159 | 159 |
| 160 #if ENABLE(SVG) | 160 #if ENABLE(SVG) |
| 161 inline Image* CachedImage::lookupOrCreateImageForRenderer(const RenderObject* re
nderer) | 161 inline Image* CachedImage::lookupOrCreateImageForRenderer(const RenderObject* re
nderer) |
| 162 { | 162 { |
| 163 if (!m_image) | 163 if (!m_image) |
| 164 return 0; | 164 return 0; |
| 165 if (!m_image->isSVGImage()) | 165 if (!m_image->isSVGImage()) |
| 166 return m_image.get(); | 166 return m_image.get(); |
| 167 Image* useImage = m_svgImageCache->lookupOrCreateBitmapImageForRenderer(rend
erer); | 167 Image* useImage = m_svgImageCache->imageForRenderer(renderer); |
| 168 if (useImage == Image::nullImage()) | 168 if (useImage == Image::nullImage()) |
| 169 return m_image.get(); | 169 return m_image.get(); |
| 170 return useImage; | 170 return useImage; |
| 171 } | 171 } |
| 172 #else | 172 #else |
| 173 inline Image* CachedImage::lookupOrCreateImageForRenderer(const RenderObject*) | 173 inline Image* CachedImage::lookupOrCreateImageForRenderer(const RenderObject*) |
| 174 { | 174 { |
| 175 return m_image.get(); | 175 return m_image.get(); |
| 176 } | 176 } |
| 177 #endif | 177 #endif |
| (...skipping 30 matching lines...) Expand all Loading... |
| 208 return lookupOrCreateImageForRenderer(renderer); | 208 return lookupOrCreateImageForRenderer(renderer); |
| 209 | 209 |
| 210 return Image::nullImage(); | 210 return Image::nullImage(); |
| 211 } | 211 } |
| 212 | 212 |
| 213 void CachedImage::setContainerSizeForRenderer(const CachedImageClient* renderer,
const IntSize& containerSize, float containerZoom) | 213 void CachedImage::setContainerSizeForRenderer(const CachedImageClient* renderer,
const IntSize& containerSize, float containerZoom) |
| 214 { | 214 { |
| 215 if (containerSize.isEmpty()) | 215 if (containerSize.isEmpty()) |
| 216 return; | 216 return; |
| 217 ASSERT(renderer); | 217 ASSERT(renderer); |
| 218 ASSERT(containerZoom); |
| 218 if (!m_image) { | 219 if (!m_image) { |
| 219 m_pendingContainerSizeRequests.set(renderer, SizeAndZoom(containerSize,
containerZoom)); | 220 m_pendingContainerSizeRequests.set(renderer, SizeAndZoom(containerSize,
containerZoom)); |
| 220 return; | 221 return; |
| 221 } | 222 } |
| 222 #if ENABLE(SVG) | 223 #if ENABLE(SVG) |
| 223 if (!m_image->isSVGImage()) { | 224 if (!m_image->isSVGImage()) { |
| 224 m_image->setContainerSize(containerSize); | 225 m_image->setContainerSize(containerSize); |
| 225 return; | 226 return; |
| 226 } | 227 } |
| 227 | 228 |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 305 { | 306 { |
| 306 if (!m_loader || m_loader->reachedTerminalState()) | 307 if (!m_loader || m_loader->reachedTerminalState()) |
| 307 return; | 308 return; |
| 308 | 309 |
| 309 m_shouldPaintBrokenImage = m_loader->frameLoader()->client()->shouldPaintBro
kenImage(m_resourceRequest.url()); | 310 m_shouldPaintBrokenImage = m_loader->frameLoader()->client()->shouldPaintBro
kenImage(m_resourceRequest.url()); |
| 310 } | 311 } |
| 311 | 312 |
| 312 void CachedImage::clear() | 313 void CachedImage::clear() |
| 313 { | 314 { |
| 314 destroyDecodedData(); | 315 destroyDecodedData(); |
| 315 #if ENABLE(SVG) | |
| 316 m_svgImageCache.clear(); | |
| 317 #endif | |
| 318 clearImage(); | 316 clearImage(); |
| 319 m_pendingContainerSizeRequests.clear(); | 317 m_pendingContainerSizeRequests.clear(); |
| 320 setEncodedSize(0); | 318 setEncodedSize(0); |
| 321 } | 319 } |
| 322 | 320 |
| 323 inline void CachedImage::createImage() | 321 inline void CachedImage::createImage() |
| 324 { | 322 { |
| 325 // Create the image if it doesn't yet exist. | 323 // Create the image if it doesn't yet exist. |
| 326 if (m_image) | 324 if (m_image) |
| 327 return; | 325 return; |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 477 { | 475 { |
| 478 if (!image || image != m_image) | 476 if (!image || image != m_image) |
| 479 return; | 477 return; |
| 480 notifyObservers(); | 478 notifyObservers(); |
| 481 } | 479 } |
| 482 | 480 |
| 483 void CachedImage::changedInRect(const Image* image, const IntRect& rect) | 481 void CachedImage::changedInRect(const Image* image, const IntRect& rect) |
| 484 { | 482 { |
| 485 if (!image || image != m_image) | 483 if (!image || image != m_image) |
| 486 return; | 484 return; |
| 487 #if ENABLE(SVG) | |
| 488 // We have to update the cached ImageBuffers if the underlying content chang
ed. | |
| 489 if (image->isSVGImage()) { | |
| 490 m_svgImageCache->imageContentChanged(); | |
| 491 return; | |
| 492 } | |
| 493 #endif | |
| 494 notifyObservers(&rect); | 485 notifyObservers(&rect); |
| 495 } | 486 } |
| 496 | 487 |
| 497 void CachedImage::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const | 488 void CachedImage::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const |
| 498 { | 489 { |
| 499 MemoryClassInfo info(memoryObjectInfo, this, WebCoreMemoryTypes::CachedResou
rceImage); | 490 MemoryClassInfo info(memoryObjectInfo, this, WebCoreMemoryTypes::CachedResou
rceImage); |
| 500 memoryObjectInfo->setClassName("CachedImage"); | 491 memoryObjectInfo->setClassName("CachedImage"); |
| 501 CachedResource::reportMemoryUsage(memoryObjectInfo); | 492 CachedResource::reportMemoryUsage(memoryObjectInfo); |
| 502 info.addMember(m_pendingContainerSizeRequests, "pendingContainerSizeRequests
"); | 493 info.addMember(m_pendingContainerSizeRequests, "pendingContainerSizeRequests
"); |
| 503 info.addMember(m_image, "m_image"); | 494 info.addMember(m_image, "m_image"); |
| 504 #if ENABLE(SVG) | 495 #if ENABLE(SVG) |
| 505 info.addMember(m_svgImageCache, "svgImageCache"); | 496 info.addMember(m_svgImageCache, "svgImageCache"); |
| 506 #endif | 497 #endif |
| 507 } | 498 } |
| 508 | 499 |
| 509 bool CachedImage::currentFrameKnownToBeOpaque(const RenderObject* renderer) | 500 bool CachedImage::currentFrameKnownToBeOpaque(const RenderObject* renderer) |
| 510 { | 501 { |
| 511 Image* image = imageForRenderer(renderer); | 502 Image* image = imageForRenderer(renderer); |
| 512 if (image->isBitmapImage()) | 503 if (image->isBitmapImage()) |
| 513 image->nativeImageForCurrentFrame(); // force decode | 504 image->nativeImageForCurrentFrame(); // force decode |
| 514 return image->currentFrameKnownToBeOpaque(); | 505 return image->currentFrameKnownToBeOpaque(); |
| 515 } | 506 } |
| 516 | 507 |
| 517 } // namespace WebCore | 508 } // namespace WebCore |
| OLD | NEW |