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