Diff
Modified: trunk/Source/WebCore/ChangeLog (272420 => 272421)
--- trunk/Source/WebCore/ChangeLog 2021-02-05 17:38:19 UTC (rev 272420)
+++ trunk/Source/WebCore/ChangeLog 2021-02-05 18:12:24 UTC (rev 272421)
@@ -1,3 +1,25 @@
+2021-02-04 Darin Adler <[email protected]>
+
+ StyleImage refinement to follow up recent changes
+ https://bugs.webkit.org/show_bug.cgi?id=221434
+
+ Reviewed by Sam Weinig.
+
+ * rendering/style/FillLayer.cpp:
+ (WebCore::FillLayer::hasOpaqueImage const): Pass a reference.
+ * rendering/style/StyleCachedImage.cpp:
+ (WebCore::StyleCachedImage::knownToBeOpaque const): Take a reference.
+ * rendering/style/StyleCachedImage.h: Take a reference.
+ * rendering/style/StyleGeneratedImage.cpp:
+ (WebCore::StyleGeneratedImage::imageSize const): Simplify using an early return.
+ Remove an unnnecessary redundant null check.
+ (WebCore::StyleGeneratedImage::knownToBeOpaque const): Take and pass a reference.
+ * rendering/style/StyleGeneratedImage.h: Take a reference.
+ * rendering/style/StyleImage.h: Take a reference.
+ * rendering/style/StyleMultiImage.cpp:
+ (WebCore::StyleMultiImage::knownToBeOpaque const): Take a reference.
+ * rendering/style/StyleMultiImage.h: Take a reference.
+
2021-02-05 Zalan Bujtas <[email protected]>
[LFC][IFC] Add support for "word separator" when the whitespace content has multiple characters
Modified: trunk/Source/WebCore/rendering/style/FillLayer.cpp (272420 => 272421)
--- trunk/Source/WebCore/rendering/style/FillLayer.cpp 2021-02-05 17:38:19 UTC (rev 272420)
+++ trunk/Source/WebCore/rendering/style/FillLayer.cpp 2021-02-05 18:12:24 UTC (rev 272421)
@@ -370,7 +370,7 @@
if (static_cast<CompositeOperator>(m_composite) == CompositeOperator::Clear || static_cast<CompositeOperator>(m_composite) == CompositeOperator::Copy)
return true;
- return static_cast<BlendMode>(m_blendMode) == BlendMode::Normal && static_cast<CompositeOperator>(m_composite) == CompositeOperator::SourceOver && m_image->knownToBeOpaque(&renderer);
+ return static_cast<BlendMode>(m_blendMode) == BlendMode::Normal && static_cast<CompositeOperator>(m_composite) == CompositeOperator::SourceOver && m_image->knownToBeOpaque(renderer);
}
bool FillLayer::hasRepeatXY() const
Modified: trunk/Source/WebCore/rendering/style/StyleCachedImage.cpp (272420 => 272421)
--- trunk/Source/WebCore/rendering/style/StyleCachedImage.cpp 2021-02-05 17:38:19 UTC (rev 272420)
+++ trunk/Source/WebCore/rendering/style/StyleCachedImage.cpp 2021-02-05 18:12:24 UTC (rev 272421)
@@ -185,11 +185,9 @@
return m_scaleFactor;
}
-bool StyleCachedImage::knownToBeOpaque(const RenderElement* renderer) const
+bool StyleCachedImage::knownToBeOpaque(const RenderElement& renderer) const
{
- if (!m_cachedImage)
- return false;
- return m_cachedImage->currentFrameKnownToBeOpaque(renderer);
+ return m_cachedImage && m_cachedImage->currentFrameKnownToBeOpaque(&renderer);
}
}
Modified: trunk/Source/WebCore/rendering/style/StyleCachedImage.h (272420 => 272421)
--- trunk/Source/WebCore/rendering/style/StyleCachedImage.h 2021-02-05 17:38:19 UTC (rev 272420)
+++ trunk/Source/WebCore/rendering/style/StyleCachedImage.h 2021-02-05 18:12:24 UTC (rev 272421)
@@ -62,7 +62,7 @@
void removeClient(RenderElement&) final;
RefPtr<Image> image(RenderElement*, const FloatSize&) const final;
float imageScaleFactor() const final;
- bool knownToBeOpaque(const RenderElement*) const final;
+ bool knownToBeOpaque(const RenderElement&) const final;
private:
StyleCachedImage(CSSImageValue&, float);
Modified: trunk/Source/WebCore/rendering/style/StyleGeneratedImage.cpp (272420 => 272421)
--- trunk/Source/WebCore/rendering/style/StyleGeneratedImage.cpp 2021-02-05 17:38:19 UTC (rev 272420)
+++ trunk/Source/WebCore/rendering/style/StyleGeneratedImage.cpp 2021-02-05 18:12:24 UTC (rev 272421)
@@ -54,29 +54,27 @@
FloatSize StyleGeneratedImage::imageSize(const RenderElement* renderer, float multiplier) const
{
- if (m_fixedSize) {
- if (!renderer)
- return { };
+ if (!m_fixedSize)
+ return m_containerSize;
- FloatSize fixedSize = m_imageGeneratorValue->fixedSize(*renderer);
- if (multiplier == 1.0f)
- return fixedSize;
+ if (!renderer)
+ return { };
- float width = fixedSize.width() * multiplier;
- float height = fixedSize.height() * multiplier;
+ FloatSize fixedSize = m_imageGeneratorValue->fixedSize(*renderer);
+ if (multiplier == 1.0f)
+ return fixedSize;
- // 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<float>(1 / deviceScaleFactor, width);
+ float width = fixedSize.width() * multiplier;
+ float height = fixedSize.height() * multiplier;
- if (fixedSize.height() > 0)
- height = std::max<float>(1 / deviceScaleFactor, height);
+ // Don't let images that have a width/height >= 1 shrink below 1 device pixel when zoomed.
+ float deviceScaleFactor = renderer->document().deviceScaleFactor();
+ if (fixedSize.width() > 0)
+ width = std::max<float>(1 / deviceScaleFactor, width);
+ if (fixedSize.height() > 0)
+ height = std::max<float>(1 / deviceScaleFactor, height);
- return FloatSize(width, height);
- }
-
- return m_containerSize;
+ return { width, height };
}
void StyleGeneratedImage::computeIntrinsicDimensions(const RenderElement* renderer, Length& intrinsicWidth, Length& intrinsicHeight, FloatSize& intrinsicRatio)
@@ -103,9 +101,9 @@
return renderer ? m_imageGeneratorValue->image(*renderer, size) : &Image::nullImage();
}
-bool StyleGeneratedImage::knownToBeOpaque(const RenderElement* renderer) const
+bool StyleGeneratedImage::knownToBeOpaque(const RenderElement& renderer) const
{
- return renderer && m_imageGeneratorValue->knownToBeOpaque(*renderer);
+ return m_imageGeneratorValue->knownToBeOpaque(renderer);
}
}
Modified: trunk/Source/WebCore/rendering/style/StyleGeneratedImage.h (272420 => 272421)
--- trunk/Source/WebCore/rendering/style/StyleGeneratedImage.h 2021-02-05 17:38:19 UTC (rev 272420)
+++ trunk/Source/WebCore/rendering/style/StyleGeneratedImage.h 2021-02-05 18:12:24 UTC (rev 272421)
@@ -57,7 +57,7 @@
void addClient(RenderElement&) final;
void removeClient(RenderElement&) final;
RefPtr<Image> image(RenderElement*, const FloatSize&) const final;
- bool knownToBeOpaque(const RenderElement*) const final;
+ bool knownToBeOpaque(const RenderElement&) const final;
explicit StyleGeneratedImage(Ref<CSSImageGeneratorValue>&&);
Modified: trunk/Source/WebCore/rendering/style/StyleImage.h (272420 => 272421)
--- trunk/Source/WebCore/rendering/style/StyleImage.h 2021-02-05 17:38:19 UTC (rev 272420)
+++ trunk/Source/WebCore/rendering/style/StyleImage.h 2021-02-05 18:12:24 UTC (rev 272421)
@@ -65,7 +65,7 @@
virtual RefPtr<Image> image(RenderElement*, const FloatSize&) const = 0;
virtual WrappedImagePtr data() const = 0;
virtual float imageScaleFactor() const { return 1; }
- virtual bool knownToBeOpaque(const RenderElement*) const = 0;
+ virtual bool knownToBeOpaque(const RenderElement&) const = 0;
virtual CachedImage* cachedImage() const { return 0; }
virtual StyleImage* selectedImage() { return this; }
virtual const StyleImage* selectedImage() const { return this; }
Modified: trunk/Source/WebCore/rendering/style/StyleMultiImage.cpp (272420 => 272421)
--- trunk/Source/WebCore/rendering/style/StyleMultiImage.cpp 2021-02-05 17:38:19 UTC (rev 272420)
+++ trunk/Source/WebCore/rendering/style/StyleMultiImage.cpp 2021-02-05 18:12:24 UTC (rev 272421)
@@ -162,7 +162,7 @@
return m_selectedImage->imageScaleFactor();
}
-bool StyleMultiImage::knownToBeOpaque(const RenderElement* renderer) const
+bool StyleMultiImage::knownToBeOpaque(const RenderElement& renderer) const
{
return m_selectedImage && m_selectedImage->knownToBeOpaque(renderer);
}
Modified: trunk/Source/WebCore/rendering/style/StyleMultiImage.h (272420 => 272421)
--- trunk/Source/WebCore/rendering/style/StyleMultiImage.h 2021-02-05 17:38:19 UTC (rev 272420)
+++ trunk/Source/WebCore/rendering/style/StyleMultiImage.h 2021-02-05 18:12:24 UTC (rev 272421)
@@ -61,7 +61,7 @@
void removeClient(RenderElement&) final;
RefPtr<Image> image(RenderElement*, const FloatSize&) const final;
float imageScaleFactor() const final;
- bool knownToBeOpaque(const RenderElement*) const final;
+ bool knownToBeOpaque(const RenderElement&) const final;
const StyleImage* selectedImage() const final { return m_selectedImage.get(); }
StyleImage* selectedImage() final { return m_selectedImage.get(); }