summaryrefslogtreecommitdiff
path: root/Source/WebCore/svg/graphics/SVGImageCache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/svg/graphics/SVGImageCache.cpp')
-rw-r--r--Source/WebCore/svg/graphics/SVGImageCache.cpp40
1 files changed, 14 insertions, 26 deletions
diff --git a/Source/WebCore/svg/graphics/SVGImageCache.cpp b/Source/WebCore/svg/graphics/SVGImageCache.cpp
index e3a89fd3b..399d6bae5 100644
--- a/Source/WebCore/svg/graphics/SVGImageCache.cpp
+++ b/Source/WebCore/svg/graphics/SVGImageCache.cpp
@@ -21,11 +21,10 @@
#include "config.h"
#include "SVGImageCache.h"
-#if ENABLE(SVG)
#include "FrameView.h"
#include "GraphicsContext.h"
#include "ImageBuffer.h"
-#include "Page.h"
+#include "LayoutSize.h"
#include "RenderSVGRoot.h"
#include "SVGImage.h"
#include "SVGImageForContainer.h"
@@ -50,7 +49,7 @@ void SVGImageCache::removeClientFromCache(const CachedImageClient* client)
m_imageForContainerMap.remove(client);
}
-void SVGImageCache::setContainerSizeForRenderer(const CachedImageClient* client, const IntSize& containerSize, float containerZoom)
+void SVGImageCache::setContainerSizeForRenderer(const CachedImageClient* client, const LayoutSize& containerSize, float containerZoom)
{
ASSERT(client);
ASSERT(!containerSize.isEmpty());
@@ -62,37 +61,26 @@ void SVGImageCache::setContainerSizeForRenderer(const CachedImageClient* client,
m_imageForContainerMap.set(client, SVGImageForContainer::create(m_svgImage, containerSizeWithoutZoom, containerZoom));
}
-IntSize SVGImageCache::imageSizeForRenderer(const RenderObject* renderer) const
+Image* SVGImageCache::findImageForRenderer(const RenderObject* renderer) const
{
- IntSize imageSize = m_svgImage->size();
- if (!renderer)
- return imageSize;
-
- ImageForContainerMap::const_iterator it = m_imageForContainerMap.find(renderer);
- if (it == m_imageForContainerMap.end())
- return imageSize;
+ return renderer ? m_imageForContainerMap.get(renderer) : nullptr;
+}
- RefPtr<SVGImageForContainer> imageForContainer = it->value;
- ASSERT(!imageForContainer->size().isEmpty());
- return imageForContainer->size();
+FloatSize SVGImageCache::imageSizeForRenderer(const RenderObject* renderer) const
+{
+ auto* image = findImageForRenderer(renderer);
+ return image ? image->size() : m_svgImage->size();
}
// FIXME: This doesn't take into account the animation timeline so animations will not
// restart on page load, nor will two animations in different pages have different timelines.
-Image* SVGImageCache::imageForRenderer(const RenderObject* renderer)
+Image* SVGImageCache::imageForRenderer(const RenderObject* renderer) const
{
- if (!renderer)
+ auto* image = findImageForRenderer(renderer);
+ if (!image)
return Image::nullImage();
-
- ImageForContainerMap::iterator it = m_imageForContainerMap.find(renderer);
- if (it == m_imageForContainerMap.end())
- return Image::nullImage();
-
- RefPtr<SVGImageForContainer> imageForContainer = it->value;
- ASSERT(!imageForContainer->size().isEmpty());
- return imageForContainer.get();
+ ASSERT(!image->size().isEmpty());
+ return image;
}
} // namespace WebCore
-
-#endif // ENABLE(SVG)