1 /* 2 * Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <zimmermann (at) kde.org> 3 * Copyright (C) 2004, 2005, 2006, 2008 Rob Buis <buis (at) kde.org> 4 * 5 * This library is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU Library General Public 7 * License as published by the Free Software Foundation; either 8 * version 2 of the License, or (at your option) any later version. 9 * 10 * This library is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * Library General Public License for more details. 14 * 15 * You should have received a copy of the GNU Library General Public License 16 * along with this library; see the file COPYING.LIB. If not, write to 17 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 18 * Boston, MA 02110-1301, USA. 19 */ 20 21 #ifndef SVGPathSegCurvetoQuadratic_h 22 #define SVGPathSegCurvetoQuadratic_h 23 24 #if ENABLE(SVG) 25 #include "SVGPathSegWithContext.h" 26 27 namespace WebCore { 28 29 class SVGPathSegCurvetoQuadratic : public SVGPathSegWithContext { 30 public: 31 SVGPathSegCurvetoQuadratic(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x1, float y1) 32 : SVGPathSegWithContext(element, role) 33 , m_x(x) 34 , m_y(y) 35 , m_x1(x1) 36 , m_y1(y1) 37 { 38 } 39 40 float x() const { return m_x; } 41 void setX(float x) 42 { 43 m_x = x; 44 commitChange(); 45 } 46 47 float y() const { return m_y; } 48 void setY(float y) 49 { 50 m_y = y; 51 commitChange(); 52 } 53 54 float x1() const { return m_x1; } 55 void setX1(float x1) 56 { 57 m_x1 = x1; 58 commitChange(); 59 } 60 61 float y1() const { return m_y1; } 62 void setY1(float y1) 63 { 64 m_y1 = y1; 65 commitChange(); 66 } 67 68 private: 69 float m_x; 70 float m_y; 71 float m_x1; 72 float m_y1; 73 }; 74 75 class SVGPathSegCurvetoQuadraticAbs : public SVGPathSegCurvetoQuadratic { 76 public: 77 static PassRefPtr<SVGPathSegCurvetoQuadraticAbs> create(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x1, float y1) 78 { 79 return adoptRef(new SVGPathSegCurvetoQuadraticAbs(element, role, x, y, x1, y1)); 80 } 81 82 private: 83 SVGPathSegCurvetoQuadraticAbs(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x1, float y1) 84 : SVGPathSegCurvetoQuadratic(element, role, x, y, x1, y1) 85 { 86 } 87 88 virtual unsigned short pathSegType() const { return PATHSEG_CURVETO_QUADRATIC_ABS; } 89 virtual String pathSegTypeAsLetter() const { return "Q"; } 90 }; 91 92 class SVGPathSegCurvetoQuadraticRel : public SVGPathSegCurvetoQuadratic { 93 public: 94 static PassRefPtr<SVGPathSegCurvetoQuadraticRel> create(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x1, float y1) 95 { 96 return adoptRef(new SVGPathSegCurvetoQuadraticRel(element, role, x, y, x1, y1)); 97 } 98 99 private: 100 SVGPathSegCurvetoQuadraticRel(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x1, float y1) 101 : SVGPathSegCurvetoQuadratic(element, role, x, y, x1, y1) 102 { 103 } 104 105 virtual unsigned short pathSegType() const { return PATHSEG_CURVETO_QUADRATIC_REL; } 106 virtual String pathSegTypeAsLetter() const { return "q"; } 107 }; 108 109 } // namespace WebCore 110 111 #endif // ENABLE(SVG) 112 #endif 113