Title: [174410] trunk/Source
Revision
174410
Author
akl...@apple.com
Date
2014-10-07 15:26:25 -0700 (Tue, 07 Oct 2014)

Log Message

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):

Modified Paths

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);
         }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to