Adds (experimental) stroke simplification methodspreferencesAboutTextFull
commit
0bf8c58235
@ -0,0 +1,53 @@ |
|||||||
|
#include "UBInterpolator.h" |
||||||
|
|
||||||
|
UBInterpolator::UBInterpolator() |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
UBInterpolator::~UBInterpolator() |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
UBQuadraticBezier::UBQuadraticBezier() |
||||||
|
{ |
||||||
|
mPath = 0; |
||||||
|
} |
||||||
|
|
||||||
|
UBQuadraticBezier::~UBQuadraticBezier() |
||||||
|
{ |
||||||
|
if (mPath) |
||||||
|
delete mPath; |
||||||
|
} |
||||||
|
|
||||||
|
void UBQuadraticBezier::setPoints(QList<QPointF> points) |
||||||
|
{ |
||||||
|
setPoints(points[0], points[1], points[2]); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
void UBQuadraticBezier::setPoints(QPointF start, QPointF control, QPointF end) |
||||||
|
{ |
||||||
|
mPath = new QPainterPath(start); |
||||||
|
mPath->quadTo(control, end); |
||||||
|
} |
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Return n points along the curve, including start and end points (thus n should be larger than or equal to 2). |
||||||
|
* |
||||||
|
* The higher n, the more accurate the result |
||||||
|
*/ |
||||||
|
QList<QPointF> UBQuadraticBezier::getPoints(int n) |
||||||
|
{ |
||||||
|
QList<QPointF> points; |
||||||
|
|
||||||
|
if (n <= 1) |
||||||
|
return points; |
||||||
|
|
||||||
|
for (int i(0); i <= n; ++i) { |
||||||
|
qreal percent = qreal(i)/qreal(n); |
||||||
|
|
||||||
|
points << mPath->pointAtPercent(percent); |
||||||
|
} |
||||||
|
|
||||||
|
return points; |
||||||
|
} |
@ -0,0 +1,45 @@ |
|||||||
|
#ifndef UBINTERPOLATOR_H |
||||||
|
#define UBINTERPOLATOR_H |
||||||
|
|
||||||
|
#include <QtGui> |
||||||
|
|
||||||
|
class UBInterpolator |
||||||
|
{ |
||||||
|
/* Abstract class representing an interpolator */ |
||||||
|
|
||||||
|
public: |
||||||
|
enum InterpolationMethod { |
||||||
|
NoInterpolation, |
||||||
|
//SimpleSpline,
|
||||||
|
//CatmullRom,
|
||||||
|
Bezier |
||||||
|
}; |
||||||
|
|
||||||
|
UBInterpolator(); |
||||||
|
virtual ~UBInterpolator(); |
||||||
|
|
||||||
|
virtual void setPoints(QList<QPointF> points) = 0; |
||||||
|
//virtual double y(double x) {}
|
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
class UBQuadraticBezier : public UBInterpolator |
||||||
|
{ |
||||||
|
|
||||||
|
public: |
||||||
|
UBQuadraticBezier(); |
||||||
|
virtual ~UBQuadraticBezier(); |
||||||
|
|
||||||
|
virtual void setPoints(QList<QPointF> points); |
||||||
|
void setPoints(QPointF start, QPointF control, QPointF end); |
||||||
|
|
||||||
|
//virtual double y(double x);
|
||||||
|
|
||||||
|
QList<QPointF> getPoints(int n); |
||||||
|
|
||||||
|
private: |
||||||
|
|
||||||
|
QPainterPath* mPath; |
||||||
|
}; |
||||||
|
|
||||||
|
#endif // UBINTERPOLATOR_H
|
Loading…
Reference in new issue