From 8245cb82b238400fcb5f2ab57bbd5d76ca0f8c58 Mon Sep 17 00:00:00 2001 From: Rob Frohne Date: Mon, 14 Jan 2019 05:09:43 -0800 Subject: [PATCH 1/3] Added snap to grid to the circle. --- src/control/tools/BaseStrokeHandler.cpp | 1 + src/control/tools/CircleHandler.cpp | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/control/tools/BaseStrokeHandler.cpp b/src/control/tools/BaseStrokeHandler.cpp index a05da418..9a083c02 100644 --- a/src/control/tools/BaseStrokeHandler.cpp +++ b/src/control/tools/BaseStrokeHandler.cpp @@ -28,6 +28,7 @@ void BaseStrokeHandler::snapToGrid(double& x, double& y) */ double gridSize = 14.17; double tolerance = 2.5; //gridSize/2.0; // if you want it to snap everywhere. + tolerance = gridSize/2.0; // The way I like it. double xRem = fmod(x,gridSize); double yRem = fmod(y,gridSize); diff --git a/src/control/tools/CircleHandler.cpp b/src/control/tools/CircleHandler.cpp index 73baeb8a..edb26879 100644 --- a/src/control/tools/CircleHandler.cpp +++ b/src/control/tools/CircleHandler.cpp @@ -20,6 +20,16 @@ CircleHandler::~CircleHandler() void CircleHandler::drawShape(Point& c, bool shiftDown) { + /** + * Snap first point to grid (if enabled) + */ + if (!shiftDown && xournal->getControl()->getSettings()->isSnapGrid()) + { + Point firstPoint = stroke->getPoint(0); + snapToGrid(firstPoint.x,firstPoint.y); + stroke->setFirstPoint(firstPoint.x,firstPoint.y); + } + int count = stroke->getPointCount(); if (count < 2) @@ -29,6 +39,10 @@ void CircleHandler::drawShape(Point& c, bool shiftDown) else { Point p = stroke->getPoint(0); + if (xournal->getControl()->getSettings()->isSnapGrid()) + { + snapToGrid(c.x,c.y); + } // set resolution proportional to radius double diameter = sqrt(pow(c.x - p.x, 2.0) + pow(c.y - p.y, 2.0)); int npts = (int) (diameter * 2.0); From 3035ec0b9521a3158ac1c0508190d82f0b8454ba Mon Sep 17 00:00:00 2001 From: Rob Frohne Date: Mon, 14 Jan 2019 05:28:37 -0800 Subject: [PATCH 2/3] Added snap to grid to the coordinate system tool. --- src/control/tools/CoordinateSystemHandler.cpp | 15 ++++++++++++++- src/control/tools/RectangleHandler.cpp | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/control/tools/CoordinateSystemHandler.cpp b/src/control/tools/CoordinateSystemHandler.cpp index 0c0d1815..ff689b10 100644 --- a/src/control/tools/CoordinateSystemHandler.cpp +++ b/src/control/tools/CoordinateSystemHandler.cpp @@ -27,6 +27,15 @@ CoordinateSystemHandler::~CoordinateSystemHandler() */ void CoordinateSystemHandler::drawShape(Point& currentPoint, bool shiftDown) { + /** + * Snap first point to grid (if enabled) + */ + if (!shiftDown && xournal->getControl()->getSettings()->isSnapGrid()) + { + Point firstPoint = stroke->getPoint(0); + snapToGrid(firstPoint.x,firstPoint.y); + stroke->setFirstPoint(firstPoint.x,firstPoint.y); + } int count = stroke->getPointCount(); if (count < 1) @@ -45,7 +54,11 @@ void CoordinateSystemHandler::drawShape(Point& currentPoint, bool shiftDown) stroke->deletePoint(2); stroke->deletePoint(1); } - + if (xournal->getControl()->getSettings()->isSnapGrid()) + { + snapToGrid(startingPoint.x,startingPoint.y); + snapToGrid(currentPoint.x,currentPoint.y); + } // Draw the other two points if (shiftDown || !xournal->getControl()->getSettings()->isSnapRotation()) { diff --git a/src/control/tools/RectangleHandler.cpp b/src/control/tools/RectangleHandler.cpp index 502a82c2..da3af4f8 100644 --- a/src/control/tools/RectangleHandler.cpp +++ b/src/control/tools/RectangleHandler.cpp @@ -77,7 +77,7 @@ void RectangleHandler::drawShape(Point& c, bool shiftDown) { snapToGrid(c.x,c.y); } - stroke->addPoint(Point(p.x, c.y)); // was p.y + stroke->addPoint(Point(p.x, c.y)); stroke->addPoint(c); stroke->addPoint(Point(c.x, p.y)); stroke->addPoint(p); From ca68bd34a1afa49f9d81ecad2c6abf8005518bcc Mon Sep 17 00:00:00 2001 From: Rob Frohne Date: Mon, 14 Jan 2019 05:34:48 -0800 Subject: [PATCH 3/3] Changed the magnetization parameter, for submission to the xournalpp repo. --- src/control/tools/BaseStrokeHandler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/control/tools/BaseStrokeHandler.cpp b/src/control/tools/BaseStrokeHandler.cpp index 9a083c02..dfda2dfb 100644 --- a/src/control/tools/BaseStrokeHandler.cpp +++ b/src/control/tools/BaseStrokeHandler.cpp @@ -28,7 +28,7 @@ void BaseStrokeHandler::snapToGrid(double& x, double& y) */ double gridSize = 14.17; double tolerance = 2.5; //gridSize/2.0; // if you want it to snap everywhere. - tolerance = gridSize/2.0; // The way I like it. + //tolerance = gridSize/2.0; // The way frohro likes it. double xRem = fmod(x,gridSize); double yRem = fmod(y,gridSize);