Enable tools using extent when map is rotated

This commit is contained in:
lbartoletti 2017-10-18 11:28:03 +02:00
parent c4a75f0007
commit 0d8d101242
3 changed files with 19 additions and 10 deletions

View File

@ -18,6 +18,8 @@
#include "qgsgeometryrubberband.h"
#include "qgsmapcanvas.h"
#include "qgspoint.h"
#include "qgsgeometryutils.h"
#include "qgslinestring.h"
#include <QMouseEvent>
QgsMapToolEllipseExtent::QgsMapToolEllipseExtent( QgsMapToolCapture *parentTool,
@ -67,9 +69,11 @@ void QgsMapToolEllipseExtent::cadCanvasMoveEvent( QgsMapMouseEvent *e )
}
else
{
emit messageEmitted( tr( "Cannot use this tool when the map canvas is rotated" ), QgsMessageBar::WARNING );
mPoints.clear();
break;
double dist = mPoints.at( 0 ).distance( mapPoint );
double angle = mPoints.at( 0 ).azimuth( mapPoint );
mEllipse = QgsEllipse().fromExtent( mPoints.at( 0 ), mPoints.at( 0 ).project( dist, angle ) );
mTempRubberBand->setGeometry( mEllipse.toPolygon( segments() ) );
}
}
break;

View File

@ -17,8 +17,8 @@
#include "qgsmaptoolrectanglecenter.h"
#include "qgsgeometryrubberband.h"
#include "qgsgeometryutils.h"
#include "qgslinestring.h"
#include "qgsmapcanvas.h"
#include "qgslinestring.h"
#include "qgspoint.h"
#include <QMouseEvent>
#include <memory>
@ -74,9 +74,11 @@ void QgsMapToolRectangleCenter::cadCanvasMoveEvent( QgsMapMouseEvent *e )
}
else
{
emit messageEmitted( tr( "Cannot use this tool when the map canvas is rotated" ), QgsMessageBar::WARNING );
mPoints.clear();
break;
double dist = mPoints.at( 0 ).distance( mapPoint );
double angle = mPoints.at( 0 ).azimuth( mapPoint );
mRectangle = QgsRectangle( mPoints.at( 0 ).project( -dist, angle ), mPoints.at( 0 ).project( dist, angle ) );
mTempRubberBand->setGeometry( QgsMapToolAddRectangle::rectangleToPolygon() );
}
}
break;

View File

@ -18,6 +18,7 @@
#include "qgsgeometryrubberband.h"
#include "qgsgeometryutils.h"
#include "qgsmapcanvas.h"
#include "qgslinestring.h"
#include "qgspoint.h"
#include <QMouseEvent>
#include <memory>
@ -69,9 +70,11 @@ void QgsMapToolRectangleExtent::cadCanvasMoveEvent( QgsMapMouseEvent *e )
}
else
{
emit messageEmitted( tr( "Cannot use this tool when the map canvas is rotated" ), QgsMessageBar::WARNING );
mPoints.clear();
break;
double dist = mPoints.at( 0 ).distance( mapPoint );
double angle = mPoints.at( 0 ).azimuth( mapPoint );
mRectangle = QgsRectangle( mPoints.at( 0 ), mPoints.at( 0 ).project( dist, angle ) );
mTempRubberBand->setGeometry( QgsMapToolAddRectangle::rectangleToPolygon() );
}
}
break;