summaryrefslogtreecommitdiff
path: root/Source/WebCore/rendering/style/StyleGeneratedImage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/rendering/style/StyleGeneratedImage.cpp')
-rw-r--r--Source/WebCore/rendering/style/StyleGeneratedImage.cpp29
1 files changed, 15 insertions, 14 deletions
diff --git a/Source/WebCore/rendering/style/StyleGeneratedImage.cpp b/Source/WebCore/rendering/style/StyleGeneratedImage.cpp
index 6b59fe7c4..24ae933a9 100644
--- a/Source/WebCore/rendering/style/StyleGeneratedImage.cpp
+++ b/Source/WebCore/rendering/style/StyleGeneratedImage.cpp
@@ -30,8 +30,8 @@
namespace WebCore {
-StyleGeneratedImage::StyleGeneratedImage(PassRef<CSSImageGeneratorValue> value)
- : m_imageGeneratorValue(std::move(value))
+StyleGeneratedImage::StyleGeneratedImage(Ref<CSSImageGeneratorValue>&& value)
+ : m_imageGeneratorValue(WTFMove(value))
, m_fixedSize(m_imageGeneratorValue->isFixedSize())
{
m_isGeneratedImage = true;
@@ -39,27 +39,28 @@ StyleGeneratedImage::StyleGeneratedImage(PassRef<CSSImageGeneratorValue> value)
PassRefPtr<CSSValue> StyleGeneratedImage::cssValue() const
{
- return &const_cast<CSSImageGeneratorValue&>(m_imageGeneratorValue.get());
+ return const_cast<CSSImageGeneratorValue*>(m_imageGeneratorValue.ptr());
}
-LayoutSize StyleGeneratedImage::imageSize(const RenderElement* renderer, float multiplier) const
+FloatSize StyleGeneratedImage::imageSize(const RenderElement* renderer, float multiplier) const
{
if (m_fixedSize) {
- IntSize fixedSize = const_cast<CSSImageGeneratorValue&>(m_imageGeneratorValue.get()).fixedSize(renderer);
+ FloatSize fixedSize = const_cast<CSSImageGeneratorValue&>(m_imageGeneratorValue.get()).fixedSize(renderer);
if (multiplier == 1.0f)
return fixedSize;
- LayoutUnit width = fixedSize.width() * multiplier;
- LayoutUnit height = fixedSize.height() * multiplier;
+ float width = fixedSize.width() * multiplier;
+ float height = fixedSize.height() * multiplier;
- // Don't let images that have a width/height >= 1 shrink below 1 when zoomed.
+ // Don't let images that have a width/height >= 1 shrink below 1 device pixel when zoomed.
+ float deviceScaleFactor = renderer ? renderer->document().deviceScaleFactor() : 1;
if (fixedSize.width() > 0)
- width = std::max<LayoutUnit>(1, width);
+ width = std::max<float>(1 / deviceScaleFactor, width);
if (fixedSize.height() > 0)
- height = std::max<LayoutUnit>(1, height);
+ height = std::max<float>(1 / deviceScaleFactor, height);
- return LayoutSize(width, height);
+ return FloatSize(width, height);
}
return m_containerSize;
@@ -67,8 +68,8 @@ LayoutSize StyleGeneratedImage::imageSize(const RenderElement* renderer, float m
void StyleGeneratedImage::computeIntrinsicDimensions(const RenderElement* renderer, Length& intrinsicWidth, Length& intrinsicHeight, FloatSize& intrinsicRatio)
{
- // At a zoom level of 1 the image is guaranteed to have an integer size.
- IntSize size = flooredIntSize(imageSize(renderer, 1));
+ // At a zoom level of 1 the image is guaranteed to have a device pixel size.
+ FloatSize size = floorSizeToDevicePixels(LayoutSize(imageSize(renderer, 1)), renderer ? renderer->document().deviceScaleFactor() : 1);
intrinsicWidth = Length(size.width(), Fixed);
intrinsicHeight = Length(size.height(), Fixed);
intrinsicRatio = size;
@@ -84,7 +85,7 @@ void StyleGeneratedImage::removeClient(RenderElement* renderer)
m_imageGeneratorValue->removeClient(renderer);
}
-PassRefPtr<Image> StyleGeneratedImage::image(RenderElement* renderer, const IntSize& size) const
+RefPtr<Image> StyleGeneratedImage::image(RenderElement* renderer, const FloatSize& size) const
{
return const_cast<CSSImageGeneratorValue&>(m_imageGeneratorValue.get()).image(renderer, size);
}