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 SVGPathSegCurvetoCubicSmooth_h 22 #define SVGPathSegCurvetoCubicSmooth_h 23 24 #if ENABLE(SVG) 25 #include "SVGPathSegWithContext.h" 26 27 namespace WebCore { 28 29 class SVGPathSegCurvetoCubicSmooth : public SVGPathSegWithContext { 30 public: 31 SVGPathSegCurvetoCubicSmooth(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x2, float y2) 32 : SVGPathSegWithContext(element, role) 33 , m_x(x) 34 , m_y(y) 35 , m_x2(x2) 36 , m_y2(y2) 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 x2() const { return m_x2; } 55 void setX2(float x2) 56 { 57 m_x2 = x2; 58 commitChange(); 59 } 60 61 float y2() const { return m_y2; } 62 void setY2(float y2) 63 { 64 m_y2 = y2; 65 commitChange(); 66 } 67 68 private: 69 float m_x; 70 float m_y; 71 float m_x2; 72 float m_y2; 73 }; 74 75 class SVGPathSegCurvetoCubicSmoothAbs : public SVGPathSegCurvetoCubicSmooth { 76 public: 77 static PassRefPtr<SVGPathSegCurvetoCubicSmoothAbs> create(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x2, float y2) 78 { 79 return adoptRef(new SVGPathSegCurvetoCubicSmoothAbs(element, role, x, y, x2, y2)); 80 } 81 82 private: 83 SVGPathSegCurvetoCubicSmoothAbs(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x2, float y2) 84 : SVGPathSegCurvetoCubicSmooth(element, role, x, y, x2, y2) 85 { 86 } 87 88 virtual unsigned short pathSegType() const { return PATHSEG_CURVETO_CUBIC_SMOOTH_ABS; } 89 virtual String pathSegTypeAsLetter() const { return "S"; } 90 }; 91 92 class SVGPathSegCurvetoCubicSmoothRel : public SVGPathSegCurvetoCubicSmooth { 93 public: 94 static PassRefPtr<SVGPathSegCurvetoCubicSmoothRel> create(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x2, float y2) 95 { 96 return adoptRef(new SVGPathSegCurvetoCubicSmoothRel(element, role, x, y, x2, y2)); 97 } 98 99 private: 100 SVGPathSegCurvetoCubicSmoothRel(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x2, float y2) 101 : SVGPathSegCurvetoCubicSmooth(element, role, x, y, x2, y2) 102 { 103 } 104 105 virtual unsigned short pathSegType() const { return PATHSEG_CURVETO_CUBIC_SMOOTH_REL; } 106 virtual String pathSegTypeAsLetter() const { return "s"; } 107 }; 108 109 } // namespace WebCore 110 111 #endif // ENABLE(SVG) 112 #endif 113