mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-26 00:08:20 -04:00
Enable tools using extent when map is rotated
This commit is contained in:
parent
c4a75f0007
commit
0d8d101242
@ -18,6 +18,8 @@
|
|||||||
#include "qgsgeometryrubberband.h"
|
#include "qgsgeometryrubberband.h"
|
||||||
#include "qgsmapcanvas.h"
|
#include "qgsmapcanvas.h"
|
||||||
#include "qgspoint.h"
|
#include "qgspoint.h"
|
||||||
|
#include "qgsgeometryutils.h"
|
||||||
|
#include "qgslinestring.h"
|
||||||
#include <QMouseEvent>
|
#include <QMouseEvent>
|
||||||
|
|
||||||
QgsMapToolEllipseExtent::QgsMapToolEllipseExtent( QgsMapToolCapture *parentTool,
|
QgsMapToolEllipseExtent::QgsMapToolEllipseExtent( QgsMapToolCapture *parentTool,
|
||||||
@ -67,9 +69,11 @@ void QgsMapToolEllipseExtent::cadCanvasMoveEvent( QgsMapMouseEvent *e )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
emit messageEmitted( tr( "Cannot use this tool when the map canvas is rotated" ), QgsMessageBar::WARNING );
|
double dist = mPoints.at( 0 ).distance( mapPoint );
|
||||||
mPoints.clear();
|
double angle = mPoints.at( 0 ).azimuth( mapPoint );
|
||||||
break;
|
|
||||||
|
mEllipse = QgsEllipse().fromExtent( mPoints.at( 0 ), mPoints.at( 0 ).project( dist, angle ) );
|
||||||
|
mTempRubberBand->setGeometry( mEllipse.toPolygon( segments() ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -17,8 +17,8 @@
|
|||||||
#include "qgsmaptoolrectanglecenter.h"
|
#include "qgsmaptoolrectanglecenter.h"
|
||||||
#include "qgsgeometryrubberband.h"
|
#include "qgsgeometryrubberband.h"
|
||||||
#include "qgsgeometryutils.h"
|
#include "qgsgeometryutils.h"
|
||||||
#include "qgslinestring.h"
|
|
||||||
#include "qgsmapcanvas.h"
|
#include "qgsmapcanvas.h"
|
||||||
|
#include "qgslinestring.h"
|
||||||
#include "qgspoint.h"
|
#include "qgspoint.h"
|
||||||
#include <QMouseEvent>
|
#include <QMouseEvent>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
@ -74,9 +74,11 @@ void QgsMapToolRectangleCenter::cadCanvasMoveEvent( QgsMapMouseEvent *e )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
emit messageEmitted( tr( "Cannot use this tool when the map canvas is rotated" ), QgsMessageBar::WARNING );
|
double dist = mPoints.at( 0 ).distance( mapPoint );
|
||||||
mPoints.clear();
|
double angle = mPoints.at( 0 ).azimuth( mapPoint );
|
||||||
break;
|
|
||||||
|
mRectangle = QgsRectangle( mPoints.at( 0 ).project( -dist, angle ), mPoints.at( 0 ).project( dist, angle ) );
|
||||||
|
mTempRubberBand->setGeometry( QgsMapToolAddRectangle::rectangleToPolygon() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
#include "qgsgeometryrubberband.h"
|
#include "qgsgeometryrubberband.h"
|
||||||
#include "qgsgeometryutils.h"
|
#include "qgsgeometryutils.h"
|
||||||
#include "qgsmapcanvas.h"
|
#include "qgsmapcanvas.h"
|
||||||
|
#include "qgslinestring.h"
|
||||||
#include "qgspoint.h"
|
#include "qgspoint.h"
|
||||||
#include <QMouseEvent>
|
#include <QMouseEvent>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
@ -69,9 +70,11 @@ void QgsMapToolRectangleExtent::cadCanvasMoveEvent( QgsMapMouseEvent *e )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
emit messageEmitted( tr( "Cannot use this tool when the map canvas is rotated" ), QgsMessageBar::WARNING );
|
double dist = mPoints.at( 0 ).distance( mapPoint );
|
||||||
mPoints.clear();
|
double angle = mPoints.at( 0 ).azimuth( mapPoint );
|
||||||
break;
|
|
||||||
|
mRectangle = QgsRectangle( mPoints.at( 0 ), mPoints.at( 0 ).project( dist, angle ) );
|
||||||
|
mTempRubberBand->setGeometry( QgsMapToolAddRectangle::rectangleToPolygon() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user