# HG changeset patch # User Teemu Piippo # Date 1488576208 -7200 # Node ID 2005e4147ad602276b72cb1ec17e81f9ca611e16 # Parent 1a9ffd5e0399aa43f65f3d4f192526fd9a1bc8c6 Grid::snap now snaps points. diff -r 1a9ffd5e0399 -r 2005e4147ad6 src/editmodes/abstractEditMode.cpp --- a/src/editmodes/abstractEditMode.cpp Fri Mar 03 23:16:14 2017 +0200 +++ b/src/editmodes/abstractEditMode.cpp Fri Mar 03 23:23:28 2017 +0200 @@ -311,8 +311,9 @@ renderer()->getRelativeAxes(relativeX, relativeY); QLineF line = {vertex0[relativeX], vertex0[relativeY], vertex1[relativeX], vertex1[relativeY]}; line.setAngle(roundToInterval(line.angle(), 45)); - result.setCoordinate(relativeX, grid()->snap(line.x2())); - result.setCoordinate(relativeY, grid()->snap(line.y2())); + QPointF point = grid()->snap(line.p2()); + result.setCoordinate(relativeX, point.x()); + result.setCoordinate(relativeY, point.y()); } return result; diff -r 1a9ffd5e0399 -r 2005e4147ad6 src/editmodes/circleMode.cpp --- a/src/editmodes/circleMode.cpp Fri Mar 03 23:16:14 2017 +0200 +++ b/src/editmodes/circleMode.cpp Fri Mar 03 23:23:28 2017 +0200 @@ -56,7 +56,7 @@ renderer()->getRelativeAxes(localx, localy); double dx = m_drawedVerts[0][localx] - v1[localx]; double dy = m_drawedVerts[0][localy] - v1[localy]; - return grid()->snap(hypot(dx, dy)); + return grid()->snap({hypot(dx, dy), 0}).x(); } return 0.0; diff -r 1a9ffd5e0399 -r 2005e4147ad6 src/glcamera.cpp --- a/src/glcamera.cpp Fri Mar 03 23:16:14 2017 +0200 +++ b/src/glcamera.cpp Fri Mar 03 23:23:28 2017 +0200 @@ -107,8 +107,9 @@ // If a grid was passed, snap coordinates to it. if (grid) { - cx = grid->snap(cx); - cy = grid->snap(cy); + QPointF snapped = grid->snap({cx, cy}); + cx = snapped.x(); + cy = snapped.y(); } roundToDecimals(cx, 4); diff -r 1a9ffd5e0399 -r 2005e4147ad6 src/grid.cpp --- a/src/grid.cpp Fri Mar 03 23:16:14 2017 +0200 +++ b/src/grid.cpp Fri Mar 03 23:23:28 2017 +0200 @@ -65,10 +65,10 @@ } -qreal Grid::snap(qreal value) const +QPointF Grid::snap(QPointF point) const { - // First, extract the amount of grid steps the value is away from zero, round that to remove the remainder, + // For each co-ordinate, extract the amount of grid steps the value is away from zero, round that to remove the remainder, // and multiply back by the the grid size. double size = coordinateSnap(); - return round(value / size) * size; + return {round(point.x() / size) * size, round(point.y() / size) * size}; } diff -r 1a9ffd5e0399 -r 2005e4147ad6 src/grid.h --- a/src/grid.h Fri Mar 03 23:16:14 2017 +0200 +++ b/src/grid.h Fri Mar 03 23:23:28 2017 +0200 @@ -41,6 +41,6 @@ qreal angleAsRadians() const; int bezierCurveSegments() const; qreal coordinateSnap() const; - qreal snap(qreal value) const; + QPointF snap(QPointF point) const; };