1/* 2 * Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org> 3 * Copyright (C) 2004, 2005, 2006, 2008 Rob Buis <buis@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 27namespace WebCore { 28 29class SVGPathSegCurvetoCubicSmooth : public SVGPathSegWithContext { 30public: 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 68private: 69 float m_x; 70 float m_y; 71 float m_x2; 72 float m_y2; 73}; 74 75class SVGPathSegCurvetoCubicSmoothAbs : public SVGPathSegCurvetoCubicSmooth { 76public: 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 82private: 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 92class SVGPathSegCurvetoCubicSmoothRel : public SVGPathSegCurvetoCubicSmooth { 93public: 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 99private: 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