Title: [99577] trunk/Source/WebCore
Revision
99577
Author
[email protected]
Date
2011-11-08 09:33:07 -0800 (Tue, 08 Nov 2011)

Log Message

CSSImageGeneratorValue: Devirtualize image(), isFixedSize() and fixedSize().
<http://webkit.org/b/71824>

Reviewed by Darin Adler.

Redirect the calls to the appropriate subclass in CSSImageGeneratorValue.cpp.

* css/CSSCanvasValue.h:
(WebCore::CSSCanvasValue::isFixedSize):
* css/CSSCrossfadeValue.h:
(WebCore::CSSCrossfadeValue::isFixedSize):
* css/CSSGradientValue.h:
(WebCore::CSSGradientValue::isFixedSize):
(WebCore::CSSGradientValue::fixedSize):
* css/CSSImageGeneratorValue.cpp:
(WebCore::CSSImageGeneratorValue::image):
(WebCore::CSSImageGeneratorValue::isFixedSize):
(WebCore::CSSImageGeneratorValue::fixedSize):
* css/CSSImageGeneratorValue.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (99576 => 99577)


--- trunk/Source/WebCore/ChangeLog	2011-11-08 17:09:17 UTC (rev 99576)
+++ trunk/Source/WebCore/ChangeLog	2011-11-08 17:33:07 UTC (rev 99577)
@@ -1,3 +1,25 @@
+2011-11-08  Andreas Kling  <[email protected]>
+
+        CSSImageGeneratorValue: Devirtualize image(), isFixedSize() and fixedSize().
+        <http://webkit.org/b/71824>
+
+        Reviewed by Darin Adler.
+
+        Redirect the calls to the appropriate subclass in CSSImageGeneratorValue.cpp.
+
+        * css/CSSCanvasValue.h:
+        (WebCore::CSSCanvasValue::isFixedSize):
+        * css/CSSCrossfadeValue.h:
+        (WebCore::CSSCrossfadeValue::isFixedSize):
+        * css/CSSGradientValue.h:
+        (WebCore::CSSGradientValue::isFixedSize):
+        (WebCore::CSSGradientValue::fixedSize):
+        * css/CSSImageGeneratorValue.cpp:
+        (WebCore::CSSImageGeneratorValue::image):
+        (WebCore::CSSImageGeneratorValue::isFixedSize):
+        (WebCore::CSSImageGeneratorValue::fixedSize):
+        * css/CSSImageGeneratorValue.h:
+
 2011-11-08  Andrey Kosyakov  <[email protected]>
 
         Web Inspector: [Extension API][Chromium] injected extension API needs to return an object

Modified: trunk/Source/WebCore/css/CSSCanvasValue.h (99576 => 99577)


--- trunk/Source/WebCore/css/CSSCanvasValue.h	2011-11-08 17:09:17 UTC (rev 99576)
+++ trunk/Source/WebCore/css/CSSCanvasValue.h	2011-11-08 17:33:07 UTC (rev 99577)
@@ -40,9 +40,9 @@
 
     String customCssText() const;
 
-    virtual PassRefPtr<Image> image(RenderObject*, const IntSize&);
-    virtual bool isFixedSize() const { return true; }
-    virtual IntSize fixedSize(const RenderObject*);
+    PassRefPtr<Image> image(RenderObject*, const IntSize&);
+    bool isFixedSize() const { return true; }
+    IntSize fixedSize(const RenderObject*);
 
     void setName(const String& name) { m_name = name; }
 

Modified: trunk/Source/WebCore/css/CSSCrossfadeValue.h (99576 => 99577)


--- trunk/Source/WebCore/css/CSSCrossfadeValue.h	2011-11-08 17:09:17 UTC (rev 99576)
+++ trunk/Source/WebCore/css/CSSCrossfadeValue.h	2011-11-08 17:33:07 UTC (rev 99577)
@@ -42,9 +42,9 @@
 
     String customCssText() const;
 
-    virtual PassRefPtr<Image> image(RenderObject*, const IntSize&) OVERRIDE;
-    virtual bool isFixedSize() const OVERRIDE { return false; }
-    virtual IntSize fixedSize(const RenderObject*) OVERRIDE;
+    PassRefPtr<Image> image(RenderObject*, const IntSize&);
+    bool isFixedSize() const { return false; }
+    IntSize fixedSize(const RenderObject*);
 
     void setPercentage(PassRefPtr<CSSPrimitiveValue> percentage) { m_percentage = percentage; }
 

Modified: trunk/Source/WebCore/css/CSSGradientValue.h (99576 => 99577)


--- trunk/Source/WebCore/css/CSSGradientValue.h	2011-11-08 17:09:17 UTC (rev 99576)
+++ trunk/Source/WebCore/css/CSSGradientValue.h	2011-11-08 17:33:07 UTC (rev 99577)
@@ -46,7 +46,7 @@
 
 class CSSGradientValue : public CSSImageGeneratorValue {
 public:
-    virtual PassRefPtr<Image> image(RenderObject*, const IntSize&);
+    PassRefPtr<Image> image(RenderObject*, const IntSize&);
 
     void setFirstX(PassRefPtr<CSSPrimitiveValue> val) { m_firstX = val; }
     void setFirstY(PassRefPtr<CSSPrimitiveValue> val) { m_firstY = val; }
@@ -66,6 +66,9 @@
 
     bool deprecatedType() const { return m_deprecatedType; } // came from -webkit-gradient
 
+    bool isFixedSize() const { return false; }
+    IntSize fixedSize(const RenderObject*) const { return IntSize(); }
+
 protected:
     CSSGradientValue(ClassType classType, CSSGradientRepeat repeat, bool deprecatedType = false)
         : CSSImageGeneratorValue(classType)

Modified: trunk/Source/WebCore/css/CSSImageGeneratorValue.cpp (99576 => 99577)


--- trunk/Source/WebCore/css/CSSImageGeneratorValue.cpp	2011-11-08 17:09:17 UTC (rev 99576)
+++ trunk/Source/WebCore/css/CSSImageGeneratorValue.cpp	2011-11-08 17:33:07 UTC (rev 99577)
@@ -26,6 +26,9 @@
 #include "config.h"
 #include "CSSImageGeneratorValue.h"
 
+#include "CSSCanvasValue.h"
+#include "CSSCrossfadeValue.h"
+#include "CSSGradientValue.h"
 #include "Image.h"
 #include "RenderObject.h"
 #include "StyleGeneratedImage.h"
@@ -116,4 +119,55 @@
     return m_image.get();
 }
 
+PassRefPtr<Image> CSSImageGeneratorValue::image(RenderObject* renderer, const IntSize& size)
+{
+    switch (classType()) {
+    case CanvasClass:
+        return static_cast<CSSCanvasValue*>(this)->image(renderer, size);
+    case CrossfadeClass:
+        return static_cast<CSSCrossfadeValue*>(this)->image(renderer, size);
+    case LinearGradientClass:
+        return static_cast<CSSLinearGradientValue*>(this)->image(renderer, size);
+    case RadialGradientClass:
+        return static_cast<CSSRadialGradientValue*>(this)->image(renderer, size);
+    default:
+        ASSERT_NOT_REACHED();
+    }
+    return 0;
+}
+
+bool CSSImageGeneratorValue::isFixedSize() const
+{
+    switch (classType()) {
+    case CanvasClass:
+        return static_cast<const CSSCanvasValue*>(this)->isFixedSize();
+    case CrossfadeClass:
+        return static_cast<const CSSCrossfadeValue*>(this)->isFixedSize();
+    case LinearGradientClass:
+        return static_cast<const CSSLinearGradientValue*>(this)->isFixedSize();
+    case RadialGradientClass:
+        return static_cast<const CSSRadialGradientValue*>(this)->isFixedSize();
+    default:
+        ASSERT_NOT_REACHED();
+    }
+    return false;
+}
+
+IntSize CSSImageGeneratorValue::fixedSize(const RenderObject* renderer)
+{
+    switch (classType()) {
+    case CanvasClass:
+        return static_cast<CSSCanvasValue*>(this)->fixedSize(renderer);
+    case CrossfadeClass:
+        return static_cast<CSSCrossfadeValue*>(this)->fixedSize(renderer);
+    case LinearGradientClass:
+        return static_cast<CSSLinearGradientValue*>(this)->fixedSize(renderer);
+    case RadialGradientClass:
+        return static_cast<CSSRadialGradientValue*>(this)->fixedSize(renderer);
+    default:
+        ASSERT_NOT_REACHED();
+    }
+    return IntSize();
+}
+
 } // namespace WebCore

Modified: trunk/Source/WebCore/css/CSSImageGeneratorValue.h (99576 => 99577)


--- trunk/Source/WebCore/css/CSSImageGeneratorValue.h	2011-11-08 17:09:17 UTC (rev 99576)
+++ trunk/Source/WebCore/css/CSSImageGeneratorValue.h	2011-11-08 17:33:07 UTC (rev 99577)
@@ -56,12 +56,12 @@
 
     void addClient(RenderObject*, const IntSize&);
     void removeClient(RenderObject*);
-    virtual PassRefPtr<Image> image(RenderObject*, const IntSize&) = 0;
+    PassRefPtr<Image> image(RenderObject*, const IntSize&);
 
     StyleGeneratedImage* generatedImage();
 
-    virtual bool isFixedSize() const { return false; }
-    virtual IntSize fixedSize(const RenderObject*) { return IntSize(); }
+    bool isFixedSize() const;
+    IntSize fixedSize(const RenderObject*);
 
 protected:
     CSSImageGeneratorValue(ClassType);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to