diff options
Diffstat (limited to 'NvBlast/tools/CurveEditor/source/Internal/Curve/BezierSpline.h')
| -rw-r--r-- | NvBlast/tools/CurveEditor/source/Internal/Curve/BezierSpline.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/NvBlast/tools/CurveEditor/source/Internal/Curve/BezierSpline.h b/NvBlast/tools/CurveEditor/source/Internal/Curve/BezierSpline.h new file mode 100644 index 0000000..ba5da46 --- /dev/null +++ b/NvBlast/tools/CurveEditor/source/Internal/Curve/BezierSpline.h @@ -0,0 +1,57 @@ +#ifndef BEZIERSPLINE_H +#define BEZIERSPLINE_H +#include <vector> +#include <QtCore/QPointF> +#include "Spline.h" + +namespace nvidia { +namespace CurveEditor { + +class BezierSplinePoint +{ +public: + QPointF ctrlPoint0; + QPointF valuePoint; + QPointF ctrlPoint1; +}; + +class BezierSpline : public Spline +{ +public: + static std::vector<QPointF> sample(const std::vector<BezierSplinePoint>& splinePoints, long segmentCount = 100); + + BezierSpline(long segmentCount = 100); + + virtual ~BezierSpline() {} + + inline long getControlPointCount() { return (long)_controlPoints.size(); } + + // index <= 0, return the first point; + // index >= point count, return the last point. + bool getControlPoint(int index, BezierSplinePoint &pt); + + // add a spline point to last + void appendControlPoint(BezierSplinePoint pt); + + // insert a spline point at the identified position. + // index <= 0, inert to fisrt; + // index >= point count, insert to last. + void insertControlPoint(int index, BezierSplinePoint pt); + + // change a spline point value at the identified position. + bool setControlPoint(int index, BezierSplinePoint pt); + + // remove the identified spline point. + bool removeControlPoint(int index); + +private: + virtual void _doSample(); + +private: + std::vector<BezierSplinePoint> _controlPoints; +}; + +} // namespace CurveEditor +} // namespace nvidia + +#endif // BEZIERSPLINE_H |