Commit 1ef73a70 authored by Craig Watson's avatar Craig Watson

Strokes: corrected tracking of last received point

parent 4811d350
...@@ -71,6 +71,7 @@ QList<QPointF> UBGraphicsStroke::addPoint(const QPointF& point, UBInterpolator:: ...@@ -71,6 +71,7 @@ QList<QPointF> UBGraphicsStroke::addPoint(const QPointF& point, UBInterpolator::
int n = mDrawnPoints.size(); int n = mDrawnPoints.size();
if (interpolationMethod == UBInterpolator::NoInterpolation || n == 0) { if (interpolationMethod == UBInterpolator::NoInterpolation || n == 0) {
mLastReceivedPoint = point;
mDrawnPoints << point; mDrawnPoints << point;
mAllPoints << point; mAllPoints << point;
return QList<QPointF>() << point; return QList<QPointF>() << point;
...@@ -80,8 +81,7 @@ QList<QPointF> UBGraphicsStroke::addPoint(const QPointF& point, UBInterpolator:: ...@@ -80,8 +81,7 @@ QList<QPointF> UBGraphicsStroke::addPoint(const QPointF& point, UBInterpolator::
// This is a bit special, as the curve we are interpolating is not between two drawn points; // This is a bit special, as the curve we are interpolating is not between two drawn points;
// it is between the midway points of the second-to-last and last point, and last and current point. // it is between the midway points of the second-to-last and last point, and last and current point.
qreal MIN_DISTANCE = 3; // TODO: make this dependant on zoom qreal MIN_DISTANCE = 3; // TODO: make this dependant on zoom
QPointF lastPoint = mDrawnPoints.last(); qreal distance = QLineF(mLastReceivedPoint, point).length();
qreal distance = QLineF(lastPoint, point).length();
//qDebug() << "distance: " << distance; //qDebug() << "distance: " << distance;
...@@ -89,7 +89,7 @@ QList<QPointF> UBGraphicsStroke::addPoint(const QPointF& point, UBInterpolator:: ...@@ -89,7 +89,7 @@ QList<QPointF> UBGraphicsStroke::addPoint(const QPointF& point, UBInterpolator::
// look smoother (e.g shaking slightly won't affect the curve). // look smoother (e.g shaking slightly won't affect the curve).
if (distance < MIN_DISTANCE) { if (distance < MIN_DISTANCE) {
// we still keep track of that point to calculate the distance correctly next time around // we still keep track of that point to calculate the distance correctly next time around
mDrawnPoints << point; mLastReceivedPoint = point;
return QList<QPointF>(); return QList<QPointF>();
} }
...@@ -101,6 +101,7 @@ QList<QPointF> UBGraphicsStroke::addPoint(const QPointF& point, UBInterpolator:: ...@@ -101,6 +101,7 @@ QList<QPointF> UBGraphicsStroke::addPoint(const QPointF& point, UBInterpolator::
return QList<QPointF>() << ((lastPoint + point)/2.0); return QList<QPointF>() << ((lastPoint + point)/2.0);
} }
QPointF p0 = mDrawnPoints[mDrawnPoints.size() - 2]; QPointF p0 = mDrawnPoints[mDrawnPoints.size() - 2];
QPointF p1 = mDrawnPoints[mDrawnPoints.size() - 1]; QPointF p1 = mDrawnPoints[mDrawnPoints.size() - 1];
QPointF p2 = point; QPointF p2 = point;
......
...@@ -76,6 +76,8 @@ class UBGraphicsStroke ...@@ -76,6 +76,8 @@ class UBGraphicsStroke
/// All the points (including interpolated) that are used to draw the stroke /// All the points (including interpolated) that are used to draw the stroke
QList<QPointF> mAllPoints; QList<QPointF> mAllPoints;
QPointF mLastReceivedPoint;
}; };
#endif /* UBGRAPHICSSTROKE_H_ */ #endif /* UBGRAPHICSSTROKE_H_ */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment