Home | History | Annotate | Download | only in svg
      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