1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
/*
* Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org>
* Copyright (C) 2004, 2005, 2006, 2008 Rob Buis <buis@kde.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef SVGPathSegArc_h
#define SVGPathSegArc_h
#if ENABLE(SVG)
#include "SVGPathSegWithContext.h"
namespace WebCore {
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
|