00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef SVGMarkerElement_h
00024 #define SVGMarkerElement_h
00025
00026 #if ENABLE(SVG)
00027 #include "SVGResourceMarker.h"
00028 #include "SVGExternalResourcesRequired.h"
00029 #include "SVGFitToViewBox.h"
00030 #include "SVGLangSpace.h"
00031 #include "SVGStyledElement.h"
00032
00033 namespace WebCore {
00034
00035 class Document;
00036 class SVGAngle;
00037
00038 class SVGMarkerElement : public SVGStyledElement,
00039 public SVGLangSpace,
00040 public SVGExternalResourcesRequired,
00041 public SVGFitToViewBox {
00042 public:
00043 enum SVGMarkerUnitsType {
00044 SVG_MARKERUNITS_UNKNOWN = 0,
00045 SVG_MARKERUNITS_USERSPACEONUSE = 1,
00046 SVG_MARKERUNITS_STROKEWIDTH = 2
00047 };
00048
00049 enum SVGMarkerOrientType {
00050 SVG_MARKER_ORIENT_UNKNOWN = 0,
00051 SVG_MARKER_ORIENT_AUTO = 1,
00052 SVG_MARKER_ORIENT_ANGLE = 2
00053 };
00054
00055 SVGMarkerElement(const QualifiedName&, Document*);
00056 virtual ~SVGMarkerElement();
00057
00058 void setOrientToAuto();
00059 void setOrientToAngle(SVGAngle*);
00060
00061 virtual void parseMappedAttribute(MappedAttribute*);
00062 virtual void svgAttributeChanged(const QualifiedName&);
00063 virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0);
00064
00065 virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
00066 virtual SVGResource* canvasResource();
00067
00068 protected:
00069 virtual const SVGElement* contextElement() const { return this; }
00070
00071 private:
00072 ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
00073 ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGFitToViewBox, FloatRect, ViewBox, viewBox)
00074 ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGFitToViewBox, SVGPreserveAspectRatio*, PreserveAspectRatio, preserveAspectRatio)
00075
00076 ANIMATED_PROPERTY_DECLARATIONS(SVGMarkerElement, SVGLength, SVGLength, RefX, refX)
00077 ANIMATED_PROPERTY_DECLARATIONS(SVGMarkerElement, SVGLength, SVGLength, RefY, refY)
00078 ANIMATED_PROPERTY_DECLARATIONS(SVGMarkerElement, SVGLength, SVGLength, MarkerWidth, markerWidth)
00079 ANIMATED_PROPERTY_DECLARATIONS(SVGMarkerElement, SVGLength, SVGLength, MarkerHeight, markerHeight)
00080 ANIMATED_PROPERTY_DECLARATIONS(SVGMarkerElement, int, int, MarkerUnits, markerUnits)
00081 ANIMATED_PROPERTY_DECLARATIONS(SVGMarkerElement, int, int, OrientType, orientType)
00082 ANIMATED_PROPERTY_DECLARATIONS(SVGMarkerElement, SVGAngle*, RefPtr<SVGAngle>, OrientAngle, orientAngle)
00083
00084 RefPtr<SVGResourceMarker> m_marker;
00085 };
00086
00087 }
00088
00089 #endif // ENABLE(SVG)
00090 #endif