1 /***************************************************************************
2 * Copyright (C) 2010 by Till Theato (root@ttill.de) *
3 * This file is part of Kdenlive (www.kdenlive.org). *
5 * Kdenlive is free software: you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation, either version 2 of the License, or *
8 * (at your option) any later version. *
10 * Kdenlive 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 *
13 * GNU General Public License for more details. *
15 * You should have received a copy of the GNU General Public License *
16 * along with Kdenlive. If not, see <http://www.gnu.org/licenses/>. *
17 ***************************************************************************/
19 #ifndef CUBICBEZIERSPLINE_H
20 #define CUBICBEZIERSPLINE_H
28 QPointF h1; // handle 1
30 QPointF h2; // handle 2
32 bool operator==(const BPoint &point) const { return point.h1 == h1 && point.p == p && point.h2 == h2; }
35 class CubicBezierSpline : public QObject
40 CubicBezierSpline(QObject* parent = 0);
41 CubicBezierSpline(const CubicBezierSpline &spline, QObject* parent = 0);
42 CubicBezierSpline& operator=(const CubicBezierSpline &spline);
44 void fromString(const QString &spline);
45 QString toString() const;
47 QList <BPoint> points();
48 qreal value(qreal x, bool cont = false);
50 int setPoint(int ix, const BPoint &point);
51 int addPoint(const BPoint &point);
52 void removePoint(int ix);
53 void setPrecision(int pre);
57 QPointF point(double t, const QList<QPointF> &points);
58 void validatePoints();
62 QList <BPoint> m_points;
63 QMap <double, double> m_spline;
64 QMap <double, double>::const_iterator m_i;