Strokes: corrected tracking of last received point

preferencesAboutTextFull
Craig Watson 9 years ago
parent 4811d35017
commit 1ef73a70b8
  1. 7
      src/domain/UBGraphicsStroke.cpp
  2. 2
      src/domain/UBGraphicsStroke.h

@ -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::
// 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::
// 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::
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
/// 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_ */

Loading…
Cancel
Save