diff options
Diffstat (limited to 'Source/WebCore/svg/SVGPathElement.h')
-rw-r--r-- | Source/WebCore/svg/SVGPathElement.h | 106 |
1 files changed, 53 insertions, 53 deletions
diff --git a/Source/WebCore/svg/SVGPathElement.h b/Source/WebCore/svg/SVGPathElement.h index bb66d01c1..3f47105b4 100644 --- a/Source/WebCore/svg/SVGPathElement.h +++ b/Source/WebCore/svg/SVGPathElement.h @@ -18,17 +18,15 @@ * Boston, MA 02110-1301, USA. */ -#ifndef SVGPathElement_h -#define SVGPathElement_h +#pragma once -#if ENABLE(SVG) #include "SVGAnimatedBoolean.h" #include "SVGAnimatedNumber.h" #include "SVGExternalResourcesRequired.h" #include "SVGGraphicsElement.h" #include "SVGNames.h" #include "SVGPathByteStream.h" -#include "SVGPathSegList.h" +#include "SVGPathSegListValues.h" namespace WebCore { @@ -51,89 +49,91 @@ class SVGPathSegCurvetoCubicSmoothAbs; class SVGPathSegCurvetoCubicSmoothRel; class SVGPathSegCurvetoQuadraticSmoothAbs; class SVGPathSegCurvetoQuadraticSmoothRel; -class SVGPathSegListPropertyTearOff; +class SVGPathSegList; +class SVGPoint; class SVGPathElement final : public SVGGraphicsElement, public SVGExternalResourcesRequired { public: - static PassRefPtr<SVGPathElement> create(const QualifiedName&, Document&); + static Ref<SVGPathElement> create(const QualifiedName&, Document&); - float getTotalLength(); - SVGPoint getPointAtLength(float distance); - unsigned getPathSegAtLength(float distance); - - PassRefPtr<SVGPathSegClosePath> createSVGPathSegClosePath(SVGPathSegRole role = PathSegUndefinedRole); - PassRefPtr<SVGPathSegMovetoAbs> createSVGPathSegMovetoAbs(float x, float y, SVGPathSegRole role = PathSegUndefinedRole); - PassRefPtr<SVGPathSegMovetoRel> createSVGPathSegMovetoRel(float x, float y, SVGPathSegRole role = PathSegUndefinedRole); - PassRefPtr<SVGPathSegLinetoAbs> createSVGPathSegLinetoAbs(float x, float y, SVGPathSegRole role = PathSegUndefinedRole); - PassRefPtr<SVGPathSegLinetoRel> createSVGPathSegLinetoRel(float x, float y, SVGPathSegRole role = PathSegUndefinedRole); - PassRefPtr<SVGPathSegCurvetoCubicAbs> createSVGPathSegCurvetoCubicAbs(float x, float y, float x1, float y1, float x2, float y2, SVGPathSegRole role = PathSegUndefinedRole); - PassRefPtr<SVGPathSegCurvetoCubicRel> createSVGPathSegCurvetoCubicRel(float x, float y, float x1, float y1, float x2, float y2, SVGPathSegRole role = PathSegUndefinedRole); - PassRefPtr<SVGPathSegCurvetoQuadraticAbs> createSVGPathSegCurvetoQuadraticAbs(float x, float y, float x1, float y1, SVGPathSegRole role = PathSegUndefinedRole); - PassRefPtr<SVGPathSegCurvetoQuadraticRel> createSVGPathSegCurvetoQuadraticRel(float x, float y, float x1, float y1, SVGPathSegRole role = PathSegUndefinedRole); - PassRefPtr<SVGPathSegArcAbs> createSVGPathSegArcAbs(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag, SVGPathSegRole role = PathSegUndefinedRole); - PassRefPtr<SVGPathSegArcRel> createSVGPathSegArcRel(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag, SVGPathSegRole role = PathSegUndefinedRole); - PassRefPtr<SVGPathSegLinetoHorizontalAbs> createSVGPathSegLinetoHorizontalAbs(float x, SVGPathSegRole role = PathSegUndefinedRole); - PassRefPtr<SVGPathSegLinetoHorizontalRel> createSVGPathSegLinetoHorizontalRel(float x, SVGPathSegRole role = PathSegUndefinedRole); - PassRefPtr<SVGPathSegLinetoVerticalAbs> createSVGPathSegLinetoVerticalAbs(float y, SVGPathSegRole role = PathSegUndefinedRole); - PassRefPtr<SVGPathSegLinetoVerticalRel> createSVGPathSegLinetoVerticalRel(float y, SVGPathSegRole role = PathSegUndefinedRole); - PassRefPtr<SVGPathSegCurvetoCubicSmoothAbs> createSVGPathSegCurvetoCubicSmoothAbs(float x, float y, float x2, float y2, SVGPathSegRole role = PathSegUndefinedRole); - PassRefPtr<SVGPathSegCurvetoCubicSmoothRel> createSVGPathSegCurvetoCubicSmoothRel(float x, float y, float x2, float y2, SVGPathSegRole role = PathSegUndefinedRole); - PassRefPtr<SVGPathSegCurvetoQuadraticSmoothAbs> createSVGPathSegCurvetoQuadraticSmoothAbs(float x, float y, SVGPathSegRole role = PathSegUndefinedRole); - PassRefPtr<SVGPathSegCurvetoQuadraticSmoothRel> createSVGPathSegCurvetoQuadraticSmoothRel(float x, float y, SVGPathSegRole role = PathSegUndefinedRole); + float getTotalLength() const; + Ref<SVGPoint> getPointAtLength(float distance) const; + unsigned getPathSegAtLength(float distance) const; + + Ref<SVGPathSegClosePath> createSVGPathSegClosePath(SVGPathSegRole = PathSegUndefinedRole); + Ref<SVGPathSegMovetoAbs> createSVGPathSegMovetoAbs(float x, float y, SVGPathSegRole = PathSegUndefinedRole); + Ref<SVGPathSegMovetoRel> createSVGPathSegMovetoRel(float x, float y, SVGPathSegRole = PathSegUndefinedRole); + Ref<SVGPathSegLinetoAbs> createSVGPathSegLinetoAbs(float x, float y, SVGPathSegRole = PathSegUndefinedRole); + Ref<SVGPathSegLinetoRel> createSVGPathSegLinetoRel(float x, float y, SVGPathSegRole = PathSegUndefinedRole); + Ref<SVGPathSegCurvetoCubicAbs> createSVGPathSegCurvetoCubicAbs(float x, float y, float x1, float y1, float x2, float y2, SVGPathSegRole = PathSegUndefinedRole); + Ref<SVGPathSegCurvetoCubicRel> createSVGPathSegCurvetoCubicRel(float x, float y, float x1, float y1, float x2, float y2, SVGPathSegRole = PathSegUndefinedRole); + Ref<SVGPathSegCurvetoQuadraticAbs> createSVGPathSegCurvetoQuadraticAbs(float x, float y, float x1, float y1, SVGPathSegRole = PathSegUndefinedRole); + Ref<SVGPathSegCurvetoQuadraticRel> createSVGPathSegCurvetoQuadraticRel(float x, float y, float x1, float y1, SVGPathSegRole = PathSegUndefinedRole); + Ref<SVGPathSegArcAbs> createSVGPathSegArcAbs(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag, SVGPathSegRole = PathSegUndefinedRole); + Ref<SVGPathSegArcRel> createSVGPathSegArcRel(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag, SVGPathSegRole = PathSegUndefinedRole); + Ref<SVGPathSegLinetoHorizontalAbs> createSVGPathSegLinetoHorizontalAbs(float x, SVGPathSegRole = PathSegUndefinedRole); + Ref<SVGPathSegLinetoHorizontalRel> createSVGPathSegLinetoHorizontalRel(float x, SVGPathSegRole = PathSegUndefinedRole); + Ref<SVGPathSegLinetoVerticalAbs> createSVGPathSegLinetoVerticalAbs(float y, SVGPathSegRole = PathSegUndefinedRole); + Ref<SVGPathSegLinetoVerticalRel> createSVGPathSegLinetoVerticalRel(float y, SVGPathSegRole = PathSegUndefinedRole); + Ref<SVGPathSegCurvetoCubicSmoothAbs> createSVGPathSegCurvetoCubicSmoothAbs(float x, float y, float x2, float y2, SVGPathSegRole = PathSegUndefinedRole); + Ref<SVGPathSegCurvetoCubicSmoothRel> createSVGPathSegCurvetoCubicSmoothRel(float x, float y, float x2, float y2, SVGPathSegRole = PathSegUndefinedRole); + Ref<SVGPathSegCurvetoQuadraticSmoothAbs> createSVGPathSegCurvetoQuadraticSmoothAbs(float x, float y, SVGPathSegRole = PathSegUndefinedRole); + Ref<SVGPathSegCurvetoQuadraticSmoothRel> createSVGPathSegCurvetoQuadraticSmoothRel(float x, float y, SVGPathSegRole = PathSegUndefinedRole); // Used in the bindings only. - SVGPathSegListPropertyTearOff* pathSegList(); - SVGPathSegListPropertyTearOff* animatedPathSegList(); - SVGPathSegListPropertyTearOff* normalizedPathSegList(); - SVGPathSegListPropertyTearOff* animatedNormalizedPathSegList(); + Ref<SVGPathSegList> pathSegList(); + Ref<SVGPathSegList> animatedPathSegList(); + RefPtr<SVGPathSegList> normalizedPathSegList(); + RefPtr<SVGPathSegList> animatedNormalizedPathSegList(); - SVGPathByteStream* pathByteStream() const; + const SVGPathByteStream& pathByteStream() const; void pathSegListChanged(SVGPathSegRole, ListModification = ListModificationUnknown); - virtual FloatRect getBBox(StyleUpdateStrategy = AllowStyleUpdate) override; + FloatRect getBBox(StyleUpdateStrategy = AllowStyleUpdate) final; static const SVGPropertyInfo* dPropertyInfo(); bool isAnimValObserved() const { return m_isAnimValObserved; } + WeakPtr<SVGPathElement> createWeakPtr() const { return m_weakPtrFactory.createWeakPtr(); } + + void animatedPropertyWillBeDeleted(); + + size_t approximateMemoryCost() const final; + private: SVGPathElement(const QualifiedName&, Document&); - virtual bool isValid() const override { return SVGTests::isValid(); } - virtual bool supportsFocus() const override { return true; } + bool isValid() const final { return SVGTests::isValid(); } - bool isSupportedAttribute(const QualifiedName&); - virtual void parseAttribute(const QualifiedName&, const AtomicString&) override; - virtual void svgAttributeChanged(const QualifiedName&) override; - virtual bool supportsMarkers() const override { return true; } + static bool isSupportedAttribute(const QualifiedName&); + void parseAttribute(const QualifiedName&, const AtomicString&) final; + void svgAttributeChanged(const QualifiedName&) final; + bool supportsMarkers() const final { return true; } // Custom 'd' property static void synchronizeD(SVGElement* contextElement); - static PassRefPtr<SVGAnimatedProperty> lookupOrCreateDWrapper(SVGElement* contextElement); + static Ref<SVGAnimatedProperty> lookupOrCreateDWrapper(SVGElement* contextElement); BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGPathElement) DECLARE_ANIMATED_NUMBER(PathLength, pathLength) - DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired) + DECLARE_ANIMATED_BOOLEAN_OVERRIDE(ExternalResourcesRequired, externalResourcesRequired) END_DECLARE_ANIMATED_PROPERTIES - virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) override; + RenderPtr<RenderElement> createElementRenderer(RenderStyle&&, const RenderTreePosition&) final; - virtual Node::InsertionNotificationRequest insertedInto(ContainerNode&) override; - virtual void removedFrom(ContainerNode&) override; + Node::InsertionNotificationRequest insertedInto(ContainerNode&) final; + void removedFrom(ContainerNode&) final; void invalidateMPathDependencies(); private: - std::unique_ptr<SVGPathByteStream> m_pathByteStream; - mutable SVGSynchronizableAnimatedProperty<SVGPathSegList> m_pathSegList; + SVGPathByteStream m_pathByteStream; + mutable SVGSynchronizableAnimatedProperty<SVGPathSegListValues> m_pathSegList; + WeakPtrFactory<SVGPathElement> m_weakPtrFactory; bool m_isAnimValObserved; }; -NODE_TYPE_CASTS(SVGPathElement) - } // namespace WebCore - -#endif // ENABLE(SVG) -#endif |