diff options
Diffstat (limited to 'Source/WebCore/rendering/style/StyleGeneratedImage.cpp')
| -rw-r--r-- | Source/WebCore/rendering/style/StyleGeneratedImage.cpp | 29 |
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); } |
