Title: [277532] trunk/Source/WebCore
- Revision
- 277532
- Author
- [email protected]
- Date
- 2021-05-14 21:59:10 -0700 (Fri, 14 May 2021)
Log Message
Provide custom SetInlineFillGradient copy ctor
https://bugs.webkit.org/show_bug.cgi?id=225688
Patch by Rob Buis <[email protected]> on 2021-05-14
Reviewed by Wenson Hsieh.
Provide custom SetInlineFillGradient copy ctor
to deal with invalid SetInlineFillGradient source.
* platform/graphics/displaylists/DisplayListItems.cpp:
(WebCore::DisplayList::SetInlineFillGradient::SetInlineFillGradient):
* platform/graphics/displaylists/DisplayListItems.h:
(WebCore::DisplayList::SetInlineFillGradient::isValid const):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (277531 => 277532)
--- trunk/Source/WebCore/ChangeLog 2021-05-15 04:58:16 UTC (rev 277531)
+++ trunk/Source/WebCore/ChangeLog 2021-05-15 04:59:10 UTC (rev 277532)
@@ -1,3 +1,18 @@
+2021-05-14 Rob Buis <[email protected]>
+
+ Provide custom SetInlineFillGradient copy ctor
+ https://bugs.webkit.org/show_bug.cgi?id=225688
+
+ Reviewed by Wenson Hsieh.
+
+ Provide custom SetInlineFillGradient copy ctor
+ to deal with invalid SetInlineFillGradient source.
+
+ * platform/graphics/displaylists/DisplayListItems.cpp:
+ (WebCore::DisplayList::SetInlineFillGradient::SetInlineFillGradient):
+ * platform/graphics/displaylists/DisplayListItems.h:
+ (WebCore::DisplayList::SetInlineFillGradient::isValid const):
+
2021-05-14 Chris Dumez <[email protected]>
Drop legacy / prefixed WebAudio implementation
Modified: trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp (277531 => 277532)
--- trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp 2021-05-15 04:58:16 UTC (rev 277531)
+++ trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp 2021-05-15 04:59:10 UTC (rev 277532)
@@ -140,6 +140,23 @@
}
}
+SetInlineFillGradient::SetInlineFillGradient(const SetInlineFillGradient& other)
+{
+ if (WTF::holds_alternative<Gradient::RadialData>(other.m_data) || WTF::holds_alternative<Gradient::LinearData>(other.m_data) || WTF::holds_alternative<Gradient::ConicData>(other.m_data)) {
+ m_data = other.m_data;
+ m_gradientSpaceTransform = other.m_gradientSpaceTransform;
+ m_spreadMethod = other.m_spreadMethod;
+ m_colorStopCount = other.m_colorStopCount;
+ if (m_colorStopCount > maxColorStopCount)
+ m_colorStopCount = 0;
+ for (uint8_t i = 0; i < m_colorStopCount; ++i) {
+ m_offsets[i] = other.m_offsets[i];
+ m_colors[i] = other.m_colors[i];
+ }
+ } else
+ m_isValid = false;
+}
+
Ref<Gradient> SetInlineFillGradient::gradient() const
{
auto gradient = Gradient::create(Gradient::Data(m_data));
Modified: trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItems.h (277531 => 277532)
--- trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItems.h 2021-05-15 04:58:16 UTC (rev 277531)
+++ trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItems.h 2021-05-15 04:59:10 UTC (rev 277532)
@@ -190,6 +190,8 @@
SetInlineFillGradient(const Gradient&, const AffineTransform& gradientSpaceTransform);
WEBCORE_EXPORT SetInlineFillGradient(float offsets[maxColorStopCount], SRGBA<uint8_t> colors[maxColorStopCount], const Gradient::Data&, const AffineTransform& gradientSpaceTransform, GradientSpreadMethod, uint8_t colorStopCount);
+ SetInlineFillGradient(const SetInlineFillGradient&);
+ bool isValid() const { return m_isValid; }
static bool isInline(const Gradient&);
Ref<Gradient> gradient() const;
@@ -203,6 +205,7 @@
AffineTransform m_gradientSpaceTransform;
GradientSpreadMethod m_spreadMethod { GradientSpreadMethod::Pad };
uint8_t m_colorStopCount { 0 };
+ bool m_isValid { true };
};
class SetInlineFillColor {
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes