From 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c Mon Sep 17 00:00:00 2001 From: Lorry Tar Creator Date: Tue, 27 Jun 2017 06:07:23 +0000 Subject: webkitgtk-2.16.5 --- .../rendering/style/StyleGeneratedImage.cpp | 54 ++++++++++++++-------- 1 file changed, 35 insertions(+), 19 deletions(-) (limited to 'Source/WebCore/rendering/style/StyleGeneratedImage.cpp') diff --git a/Source/WebCore/rendering/style/StyleGeneratedImage.cpp b/Source/WebCore/rendering/style/StyleGeneratedImage.cpp index 6b59fe7c4..b00637814 100644 --- a/Source/WebCore/rendering/style/StyleGeneratedImage.cpp +++ b/Source/WebCore/rendering/style/StyleGeneratedImage.cpp @@ -30,36 +30,48 @@ namespace WebCore { -StyleGeneratedImage::StyleGeneratedImage(PassRef value) - : m_imageGeneratorValue(std::move(value)) +StyleGeneratedImage::StyleGeneratedImage(Ref&& value) + : m_imageGeneratorValue(WTFMove(value)) , m_fixedSize(m_imageGeneratorValue->isFixedSize()) { m_isGeneratedImage = true; } -PassRefPtr StyleGeneratedImage::cssValue() const +Ref StyleGeneratedImage::cssValue() const { - return &const_cast(m_imageGeneratorValue.get()); + return m_imageGeneratorValue.copyRef(); } -LayoutSize StyleGeneratedImage::imageSize(const RenderElement* renderer, float multiplier) const +bool StyleGeneratedImage::isPending() const { + return m_imageGeneratorValue->isPending(); +} + +void StyleGeneratedImage::load(CachedResourceLoader& loader, const ResourceLoaderOptions& options) +{ + m_imageGeneratorValue->loadSubimages(loader, options); +} + +FloatSize StyleGeneratedImage::imageSize(const RenderElement* renderer, float multiplier) const +{ + ASSERT(renderer); if (m_fixedSize) { - IntSize fixedSize = const_cast(m_imageGeneratorValue.get()).fixedSize(renderer); + FloatSize fixedSize = m_imageGeneratorValue->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(1, width); + width = std::max(1 / deviceScaleFactor, width); if (fixedSize.height() > 0) - height = std::max(1, height); + height = std::max(1 / deviceScaleFactor, height); - return LayoutSize(width, height); + return FloatSize(width, height); } return m_containerSize; @@ -67,8 +79,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; @@ -76,22 +88,26 @@ void StyleGeneratedImage::computeIntrinsicDimensions(const RenderElement* render void StyleGeneratedImage::addClient(RenderElement* renderer) { - m_imageGeneratorValue->addClient(renderer); + ASSERT(renderer); + m_imageGeneratorValue->addClient(*renderer); } void StyleGeneratedImage::removeClient(RenderElement* renderer) { - m_imageGeneratorValue->removeClient(renderer); + ASSERT(renderer); + m_imageGeneratorValue->removeClient(*renderer); } -PassRefPtr StyleGeneratedImage::image(RenderElement* renderer, const IntSize& size) const +RefPtr StyleGeneratedImage::image(RenderElement* renderer, const FloatSize& size) const { - return const_cast(m_imageGeneratorValue.get()).image(renderer, size); + ASSERT(renderer); + return m_imageGeneratorValue->image(*renderer, size); } bool StyleGeneratedImage::knownToBeOpaque(const RenderElement* renderer) const { - return m_imageGeneratorValue->knownToBeOpaque(renderer); + ASSERT(renderer); + return m_imageGeneratorValue->knownToBeOpaque(*renderer); } } -- cgit v1.2.1