diff options
Diffstat (limited to 'WebCore/svg/SVGPathSegArc.h')
-rw-r--r-- | WebCore/svg/SVGPathSegArc.h | 185 |
1 files changed, 108 insertions, 77 deletions
diff --git a/WebCore/svg/SVGPathSegArc.h b/WebCore/svg/SVGPathSegArc.h index 5d5c332..e835bc3 100644 --- a/WebCore/svg/SVGPathSegArc.h +++ b/WebCore/svg/SVGPathSegArc.h @@ -22,88 +22,119 @@ #define SVGPathSegArc_h #if ENABLE(SVG) - -#include "PlatformString.h" -#include "SVGPathSeg.h" +#include "SVGPathSegWithContext.h" namespace WebCore { - class SVGPathSegArc : public SVGPathSeg { - public: - SVGPathSegArc(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag) - : m_x(x) - , m_y(y) - , m_r1(r1) - , m_r2(r2) - , m_angle(angle) - , m_largeArcFlag(largeArcFlag) - , m_sweepFlag(sweepFlag) - { - } - - void setX(float x) { m_x = x; } - float x() const { return m_x; } - - void setY(float y) { m_y = y; } - float y() const { return m_y; } - - void setR1(float r1) { m_r1 = r1; } - float r1() const { return m_r1; } - - void setR2(float r2) { m_r2 = r2; } - float r2() const { return m_r2; } - - void setAngle(float angle) { m_angle = angle; } - float angle() const { return m_angle; } - - void setLargeArcFlag(bool largeArcFlag) { m_largeArcFlag = largeArcFlag; } - bool largeArcFlag() const { return m_largeArcFlag; } - - void setSweepFlag(bool sweepFlag) { m_sweepFlag = sweepFlag; } - bool sweepFlag() const { return m_sweepFlag; } - - private: - float m_x; - float m_y; - float m_r1; - float m_r2; - float m_angle; - - bool m_largeArcFlag : 1; - bool m_sweepFlag : 1; - }; - - class SVGPathSegArcAbs : public SVGPathSegArc { - public: - static PassRefPtr<SVGPathSegArcAbs> create(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag) - { - return adoptRef(new SVGPathSegArcAbs(x, y, r1, r2, angle, largeArcFlag, sweepFlag)); - } - - private: - SVGPathSegArcAbs(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag); - - virtual unsigned short pathSegType() const { return PATHSEG_ARC_ABS; } - virtual String pathSegTypeAsLetter() const { return "A"; } - }; - - class SVGPathSegArcRel : public SVGPathSegArc { - public: - static PassRefPtr<SVGPathSegArcRel> create(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag) - { - return adoptRef(new SVGPathSegArcRel(x, y, r1, r2, angle, largeArcFlag, sweepFlag)); - } - - private: - SVGPathSegArcRel(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag); - - virtual unsigned short pathSegType() const { return PATHSEG_ARC_REL; } - virtual String pathSegTypeAsLetter() const { return "a"; } - }; +class SVGPathSegArc : public SVGPathSegWithContext { +public: + SVGPathSegArc(SVGPathElement* element, SVGPathSegRole role, float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag) + : SVGPathSegWithContext(element, role) + , m_x(x) + , m_y(y) + , m_r1(r1) + , m_r2(r2) + , m_angle(angle) + , m_largeArcFlag(largeArcFlag) + , m_sweepFlag(sweepFlag) + { + } + + float x() const { return m_x; } + void setX(float x) + { + m_x = x; + commitChange(); + } + + float y() const { return m_y; } + void setY(float y) + { + m_y = y; + commitChange(); + } + + float r1() const { return m_r1; } + void setR1(float r1) + { + m_r1 = r1; + commitChange(); + } + + float r2() const { return m_r2; } + void setR2(float r2) + { + m_r2 = r2; + commitChange(); + } + + float angle() const { return m_angle; } + void setAngle(float angle) + { + m_angle = angle; + commitChange(); + } + + bool largeArcFlag() const { return m_largeArcFlag; } + void setLargeArcFlag(bool largeArcFlag) + { + m_largeArcFlag = largeArcFlag; + commitChange(); + } + + bool sweepFlag() const { return m_sweepFlag; } + void setSweepFlag(bool sweepFlag) + { + m_sweepFlag = sweepFlag; + commitChange(); + } + +private: + float m_x; + float m_y; + float m_r1; + float m_r2; + float m_angle; + + bool m_largeArcFlag : 1; + bool m_sweepFlag : 1; +}; + +class SVGPathSegArcAbs : public SVGPathSegArc { +public: + static PassRefPtr<SVGPathSegArcAbs> create(SVGPathElement* element, SVGPathSegRole role, float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag) + { + return adoptRef(new SVGPathSegArcAbs(element, role, x, y, r1, r2, angle, largeArcFlag, sweepFlag)); + } + +private: + SVGPathSegArcAbs(SVGPathElement* element, SVGPathSegRole role, float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag) + : SVGPathSegArc(element, role, x, y, r1, r2, angle, largeArcFlag, sweepFlag) + { + } + + virtual unsigned short pathSegType() const { return PATHSEG_ARC_ABS; } + virtual String pathSegTypeAsLetter() const { return "A"; } +}; + +class SVGPathSegArcRel : public SVGPathSegArc { +public: + static PassRefPtr<SVGPathSegArcRel> create(SVGPathElement* element, SVGPathSegRole role, float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag) + { + return adoptRef(new SVGPathSegArcRel(element, role, x, y, r1, r2, angle, largeArcFlag, sweepFlag)); + } + +private: + SVGPathSegArcRel(SVGPathElement* element, SVGPathSegRole role, float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag) + : SVGPathSegArc(element, role, x, y, r1, r2, angle, largeArcFlag, sweepFlag) + { + } + + virtual unsigned short pathSegType() const { return PATHSEG_ARC_REL; } + virtual String pathSegTypeAsLetter() const { return "a"; } +}; } // namespace WebCore #endif // ENABLE(SVG) #endif - -// vim:ts=4:noet |