00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef SVGPatternElement_h
00024 #define SVGPatternElement_h
00025
00026 #if ENABLE(SVG)
00027 #include "SVGPaintServerPattern.h"
00028 #include "SVGExternalResourcesRequired.h"
00029 #include "SVGFitToViewBox.h"
00030 #include "SVGLangSpace.h"
00031 #include "SVGStyledElement.h"
00032 #include "SVGTests.h"
00033 #include "SVGURIReference.h"
00034
00035
00036 namespace WebCore {
00037
00038 struct PatternAttributes;
00039
00040 class SVGLength;
00041 class SVGTransformList;
00042
00043 class SVGPatternElement : public SVGStyledElement,
00044 public SVGURIReference,
00045 public SVGTests,
00046 public SVGLangSpace,
00047 public SVGExternalResourcesRequired,
00048 public SVGFitToViewBox {
00049 public:
00050 SVGPatternElement(const QualifiedName&, Document*);
00051 virtual ~SVGPatternElement();
00052
00053 virtual bool isValid() const { return SVGTests::isValid(); }
00054
00055 virtual void parseMappedAttribute(MappedAttribute*);
00056 virtual void svgAttributeChanged(const QualifiedName&);
00057 virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0);
00058
00059 virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
00060 virtual SVGResource* canvasResource();
00061
00062 protected:
00063 ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGURIReference, String, Href, href)
00064 ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
00065 ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGFitToViewBox, FloatRect, ViewBox, viewBox)
00066 ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGFitToViewBox, SVGPreserveAspectRatio*, PreserveAspectRatio, preserveAspectRatio)
00067
00068 ANIMATED_PROPERTY_DECLARATIONS(SVGPatternElement, SVGLength, SVGLength, X, x)
00069 ANIMATED_PROPERTY_DECLARATIONS(SVGPatternElement, SVGLength, SVGLength, Y, y)
00070 ANIMATED_PROPERTY_DECLARATIONS(SVGPatternElement, SVGLength, SVGLength, Width, width)
00071 ANIMATED_PROPERTY_DECLARATIONS(SVGPatternElement, SVGLength, SVGLength, Height, height)
00072 ANIMATED_PROPERTY_DECLARATIONS(SVGPatternElement, int, int, PatternUnits, patternUnits)
00073 ANIMATED_PROPERTY_DECLARATIONS(SVGPatternElement, int, int, PatternContentUnits, patternContentUnits)
00074 ANIMATED_PROPERTY_DECLARATIONS(SVGPatternElement, SVGTransformList*, RefPtr<SVGTransformList>, PatternTransform, patternTransform)
00075
00076 mutable RefPtr<SVGPaintServerPattern> m_resource;
00077
00078 virtual const SVGElement* contextElement() const { return this; }
00079
00080 private:
00081 friend class SVGPaintServerPattern;
00082 void buildPattern(const FloatRect& targetRect) const;
00083
00084 PatternAttributes collectPatternProperties() const;
00085 };
00086
00087 }
00088
00089 #endif // ENABLE(SVG)
00090 #endif