Diff
Modified: trunk/Source/WebCore/ChangeLog (174409 => 174410)
--- trunk/Source/WebCore/ChangeLog 2014-10-07 22:17:09 UTC (rev 174409)
+++ trunk/Source/WebCore/ChangeLog 2014-10-07 22:26:25 UTC (rev 174410)
@@ -1,3 +1,30 @@
+2014-10-07 Andreas Kling <akl...@apple.com>
+
+ Use more Ref and PassRef for Gradient.
+ <https://webkit.org/b/137490>
+
+ Codify the fact that CanvasGradient always has an internal WebCore::Gradient
+ and make GraphicsContext gradient setters take PassRef, exposing some
+ unnecessary null checks.
+
+ Reviewed by Christophe Dumez.
+
+ * WebCore.exp.in:
+ * html/canvas/CanvasGradient.h:
+ (WebCore::CanvasGradient::gradient):
+ * platform/graphics/Gradient.h:
+ (WebCore::Gradient::create):
+ * platform/graphics/GraphicsContext.cpp:
+ (WebCore::GraphicsContext::setStrokeGradient):
+ (WebCore::GraphicsContext::setFillGradient):
+ * platform/graphics/GraphicsContext.h:
+ * rendering/RenderThemeIOS.mm:
+ (WebCore::RenderThemeIOS::paintProgressBar):
+ * rendering/svg/RenderSVGPath.cpp:
+ (WebCore::useStrokeStyleToFill):
+ * rendering/svg/RenderSVGResourceGradient.cpp:
+ (WebCore::RenderSVGResourceGradient::applyResource):
+
2014-10-07 Martin Hock <mh...@apple.com>
Defer resolution of viewport size.
Modified: trunk/Source/WebCore/WebCore.exp.in (174409 => 174410)
--- trunk/Source/WebCore/WebCore.exp.in 2014-10-07 22:17:09 UTC (rev 174409)
+++ trunk/Source/WebCore/WebCore.exp.in 2014-10-07 22:26:25 UTC (rev 174410)
@@ -526,7 +526,7 @@
__ZN7WebCore15GraphicsContext12setFillColorERKNS_5ColorENS_10ColorSpaceE
__ZN7WebCore15GraphicsContext14setStrokeColorERKNS_5ColorENS_10ColorSpaceE
__ZN7WebCore15GraphicsContext15drawNativeImageEP7CGImageRKNS_9FloatSizeENS_10ColorSpaceERKNS_9FloatRectES9_NS_17CompositeOperatorENS_9BlendModeENS_16ImageOrientationE
-__ZN7WebCore15GraphicsContext15setFillGradientEN3WTF10PassRefPtrINS_8GradientEEE
+__ZN7WebCore15GraphicsContext15setFillGradientEN3WTF7PassRefINS_8GradientEEE
__ZN7WebCore15GraphicsContext18setShouldAntialiasEb
__ZN7WebCore15GraphicsContext19setIsCALayerContextEb
__ZN7WebCore15GraphicsContext20endTransparencyLayerEv
Modified: trunk/Source/WebCore/html/canvas/CanvasGradient.h (174409 => 174410)
--- trunk/Source/WebCore/html/canvas/CanvasGradient.h 2014-10-07 22:17:09 UTC (rev 174409)
+++ trunk/Source/WebCore/html/canvas/CanvasGradient.h 2014-10-07 22:26:25 UTC (rev 174410)
@@ -47,7 +47,8 @@
return adoptRef(new CanvasGradient(p0, r0, p1, r1));
}
- Gradient* gradient() const { return m_gradient.get(); }
+ Gradient& gradient() { return m_gradient.get(); }
+ const Gradient& gradient() const { return m_gradient.get(); }
void addColorStop(float value, const String& color, ExceptionCode&);
@@ -59,7 +60,7 @@
CanvasGradient(const FloatPoint& p0, const FloatPoint& p1);
CanvasGradient(const FloatPoint& p0, float r0, const FloatPoint& p1, float r1);
- RefPtr<Gradient> m_gradient;
+ Ref<Gradient> m_gradient;
#if ENABLE(DASHBOARD_SUPPORT)
bool m_dashbardCompatibilityMode;
#endif
Modified: trunk/Source/WebCore/platform/graphics/Gradient.h (174409 => 174410)
--- trunk/Source/WebCore/platform/graphics/Gradient.h 2014-10-07 22:17:09 UTC (rev 174409)
+++ trunk/Source/WebCore/platform/graphics/Gradient.h 2014-10-07 22:26:25 UTC (rev 174410)
@@ -57,13 +57,13 @@
class Gradient : public RefCounted<Gradient> {
public:
- static PassRefPtr<Gradient> create(const FloatPoint& p0, const FloatPoint& p1)
+ static PassRef<Gradient> create(const FloatPoint& p0, const FloatPoint& p1)
{
- return adoptRef(new Gradient(p0, p1));
+ return adoptRef(*new Gradient(p0, p1));
}
- static PassRefPtr<Gradient> create(const FloatPoint& p0, float r0, const FloatPoint& p1, float r1, float aspectRatio = 1)
+ static PassRef<Gradient> create(const FloatPoint& p0, float r0, const FloatPoint& p1, float r1, float aspectRatio = 1)
{
- return adoptRef(new Gradient(p0, r0, p1, r1, aspectRatio));
+ return adoptRef(*new Gradient(p0, r0, p1, r1, aspectRatio));
}
WEBCORE_EXPORT ~Gradient();
Modified: trunk/Source/WebCore/platform/graphics/GraphicsContext.cpp (174409 => 174410)
--- trunk/Source/WebCore/platform/graphics/GraphicsContext.cpp 2014-10-07 22:17:09 UTC (rev 174409)
+++ trunk/Source/WebCore/platform/graphics/GraphicsContext.cpp 2014-10-07 22:26:25 UTC (rev 174410)
@@ -347,25 +347,15 @@
m_state.fillPattern = WTF::move(pattern);
}
-void GraphicsContext::setStrokeGradient(PassRefPtr<Gradient> gradient)
+void GraphicsContext::setStrokeGradient(PassRef<Gradient> gradient)
{
- ASSERT(gradient);
- if (!gradient) {
- setStrokeColor(Color::black, ColorSpaceDeviceRGB);
- return;
- }
- m_state.strokeGradient = gradient;
+ m_state.strokeGradient = WTF::move(gradient);
m_state.strokePattern.clear();
}
-void GraphicsContext::setFillGradient(PassRefPtr<Gradient> gradient)
+void GraphicsContext::setFillGradient(PassRef<Gradient> gradient)
{
- ASSERT(gradient);
- if (!gradient) {
- setFillColor(Color::black, ColorSpaceDeviceRGB);
- return;
- }
- m_state.fillGradient = gradient;
+ m_state.fillGradient = WTF::move(gradient);
m_state.fillPattern.clear();
}
Modified: trunk/Source/WebCore/platform/graphics/GraphicsContext.h (174409 => 174410)
--- trunk/Source/WebCore/platform/graphics/GraphicsContext.h 2014-10-07 22:17:09 UTC (rev 174409)
+++ trunk/Source/WebCore/platform/graphics/GraphicsContext.h 2014-10-07 22:26:25 UTC (rev 174410)
@@ -237,7 +237,7 @@
void setStrokePattern(PassRef<Pattern>);
Pattern* strokePattern() const;
- void setStrokeGradient(PassRefPtr<Gradient>);
+ void setStrokeGradient(PassRef<Gradient>);
Gradient* strokeGradient() const;
WindRule fillRule() const;
@@ -249,7 +249,7 @@
void setFillPattern(PassRef<Pattern>);
Pattern* fillPattern() const;
- WEBCORE_EXPORT void setFillGradient(PassRefPtr<Gradient>);
+ WEBCORE_EXPORT void setFillGradient(PassRef<Gradient>);
Gradient* fillGradient() const;
void setShadowsIgnoreTransforms(bool);
Modified: trunk/Source/WebCore/rendering/RenderThemeIOS.mm (174409 => 174410)
--- trunk/Source/WebCore/rendering/RenderThemeIOS.mm 2014-10-07 22:17:09 UTC (rev 174409)
+++ trunk/Source/WebCore/rendering/RenderThemeIOS.mm 2014-10-07 22:26:25 UTC (rev 174410)
@@ -874,7 +874,7 @@
strokeGradient->addColorStop(0.45, Color(0xee, 0xee, 0xee));
strokeGradient->addColorStop(0.55, Color(0xee, 0xee, 0xee));
strokeGradient->addColorStop(1.0, Color(0x8d, 0x8d, 0x8d));
- context->setStrokeGradient(strokeGradient.release());
+ context->setStrokeGradient(strokeGradient.releaseNonNull());
ColorSpace colorSpace = renderer.style().colorSpace();
context->setFillColor(Color(255, 255, 255), colorSpace);
@@ -893,7 +893,7 @@
RefPtr<Gradient> upperGradient = Gradient::create(FloatPoint(rect.x(), verticalRenderingPosition + 0.5), FloatPoint(rect.x(), verticalRenderingPosition + upperGradientHeight - 1.5));
upperGradient->addColorStop(0.0, Color(133, 133, 133, 188));
upperGradient->addColorStop(1.0, Color(18, 18, 18, 51));
- context->setFillGradient(upperGradient.release());
+ context->setFillGradient(upperGradient.releaseNonNull());
context->fillRect(FloatRect(rect.x(), verticalRenderingPosition, rect.width(), upperGradientHeight));
@@ -909,13 +909,13 @@
barGradient->addColorStop(0.51, Color(36, 114, 210));
barGradient->addColorStop(0.55, Color(36, 114, 210));
barGradient->addColorStop(1.0, Color(57, 142, 244));
- context->setFillGradient(barGradient.release());
+ context->setFillGradient(barGradient.releaseNonNull());
RefPtr<Gradient> barStrokeGradient = Gradient::create(FloatPoint(rect.x(), verticalRenderingPosition), FloatPoint(rect.x(), verticalRenderingPosition + progressBarHeight - 1));
barStrokeGradient->addColorStop(0.0, Color(95, 107, 183));
barStrokeGradient->addColorStop(0.5, Color(66, 106, 174, 240));
barStrokeGradient->addColorStop(1.0, Color(38, 104, 166));
- context->setStrokeGradient(barStrokeGradient.release());
+ context->setStrokeGradient(barStrokeGradient.releaseNonNull());
Path barPath;
int left = rect.x();
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGPath.cpp (174409 => 174410)
--- trunk/Source/WebCore/rendering/svg/RenderSVGPath.cpp 2014-10-07 22:17:09 UTC (rev 174409)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGPath.cpp 2014-10-07 22:26:25 UTC (rev 174410)
@@ -67,7 +67,7 @@
static void useStrokeStyleToFill(GraphicsContext* context)
{
if (Gradient* gradient = context->strokeGradient())
- context->setFillGradient(gradient);
+ context->setFillGradient(*gradient);
else if (Pattern* pattern = context->strokePattern())
context->setFillPattern(*pattern);
else
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp (174409 => 174410)
--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp 2014-10-07 22:17:09 UTC (rev 174409)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp 2014-10-07 22:26:25 UTC (rev 174410)
@@ -177,13 +177,13 @@
if (resourceMode & ApplyToFillMode) {
context->setAlpha(svgStyle.fillOpacity());
- context->setFillGradient(gradientData->gradient);
+ context->setFillGradient(*gradientData->gradient);
context->setFillRule(svgStyle.fillRule());
} else if (resourceMode & ApplyToStrokeMode) {
if (svgStyle.vectorEffect() == VE_NON_SCALING_STROKE)
gradientData->gradient->setGradientSpaceTransform(transformOnNonScalingStroke(&renderer, gradientData->userspaceTransform));
context->setAlpha(svgStyle.strokeOpacity());
- context->setStrokeGradient(gradientData->gradient);
+ context->setStrokeGradient(*gradientData->gradient);
SVGRenderSupport::applyStrokeStyleToContext(context, style, renderer);
}
@@ -209,7 +209,7 @@
FloatRect targetRect;
gradientData->gradient->setGradientSpaceTransform(clipToTextMask(context, m_imageBuffer, targetRect, &renderer, gradientUnits() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX, gradientTransform));
- context->setFillGradient(gradientData->gradient);
+ context->setFillGradient(*gradientData->gradient);
context->fillRect(targetRect);
m_imageBuffer.reset();
Modified: trunk/Source/WebKit2/UIProcess/FindIndicator.cpp (174409 => 174410)
--- trunk/Source/WebKit2/UIProcess/FindIndicator.cpp 2014-10-07 22:17:09 UTC (rev 174409)
+++ trunk/Source/WebKit2/UIProcess/FindIndicator.cpp 2014-10-07 22:26:25 UTC (rev 174410)
@@ -236,7 +236,7 @@
RefPtr<Gradient> gradient = Gradient::create(FloatPoint(innerPathRect.x(), innerPathRect.y()), FloatPoint(innerPathRect.x(), innerPathRect.maxY()));
gradient->addColorStop(0, gradientLightColor());
gradient->addColorStop(1, gradientDarkColor());
- graphicsContext.setFillGradient(gradient);
+ graphicsContext.setFillGradient(gradient.releaseNonNull());
graphicsContext.fillRect(outerPathRect);
}