Skip to content

Commit 3744043

Browse files
committed
Early exit if snap to grid item is disabled
1 parent ac8eab2 commit 3744043

File tree

1 file changed

+30
-30
lines changed

1 file changed

+30
-30
lines changed

src/gui/qgssnaptogridcanvasitem.cpp

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ QgsSnapToGridCanvasItem::QgsSnapToGridCanvasItem( QgsMapCanvas *mapCanvas )
2828

2929
void QgsSnapToGridCanvasItem::paint( QPainter *painter )
3030
{
31+
if ( !mEnabled || !mAvailableByZoomFactor )
32+
return;
33+
3134
painter->save();
3235
QgsRectangle mapRect = mMapCanvas->extent();
3336
if ( rect() != mapRect )
@@ -36,44 +39,41 @@ void QgsSnapToGridCanvasItem::paint( QPainter *painter )
3639
painter->setRenderHints( QPainter::Antialiasing );
3740
painter->setCompositionMode( QPainter::CompositionMode_Difference );
3841

39-
if ( mEnabled && mAvailableByZoomFactor )
42+
try
4043
{
41-
try
42-
{
43-
const QgsRectangle layerExtent = mTransform.transformBoundingBox( mapRect, QgsCoordinateTransform::ReverseTransform );
44-
const QgsPointXY layerPt = mTransform.transform( mPoint, QgsCoordinateTransform::ReverseTransform );
44+
const QgsRectangle layerExtent = mTransform.transformBoundingBox( mapRect, QgsCoordinateTransform::ReverseTransform );
45+
const QgsPointXY layerPt = mTransform.transform( mPoint, QgsCoordinateTransform::ReverseTransform );
4546

46-
const double gridXMin = std::ceil( layerExtent.xMinimum() / mPrecision ) * mPrecision;
47-
const double gridXMax = std::ceil( layerExtent.xMaximum() / mPrecision ) * mPrecision;
48-
const double gridYMin = std::ceil( layerExtent.yMinimum() / mPrecision ) * mPrecision;
49-
const double gridYMax = std::ceil( layerExtent.yMaximum() / mPrecision ) * mPrecision;
47+
const double gridXMin = std::ceil( layerExtent.xMinimum() / mPrecision ) * mPrecision;
48+
const double gridXMax = std::ceil( layerExtent.xMaximum() / mPrecision ) * mPrecision;
49+
const double gridYMin = std::ceil( layerExtent.yMinimum() / mPrecision ) * mPrecision;
50+
const double gridYMax = std::ceil( layerExtent.yMaximum() / mPrecision ) * mPrecision;
5051

51-
for ( int x = gridXMin ; x < gridXMax; x += mPrecision )
52+
for ( int x = gridXMin ; x < gridXMax; x += mPrecision )
53+
{
54+
for ( int y = gridYMin ; y < gridYMax; y += mPrecision )
5255
{
53-
for ( int y = gridYMin ; y < gridYMax; y += mPrecision )
54-
{
55-
const QgsPointXY pt = mTransform.transform( x, y );
56-
const QPointF canvasPt = toCanvasCoordinates( pt );
57-
58-
if ( qgsDoubleNear( layerPt.x(), x, mPrecision / 3 ) && qgsDoubleNear( layerPt.y(), y, mPrecision / 3 ) )
59-
{
60-
painter->setPen( mCurrentPointPen );
61-
}
62-
else
63-
{
64-
painter->setPen( mGridPen );
65-
}
66-
painter->drawLine( canvasPt.x() - 3, canvasPt.y(), canvasPt.x() + 3, canvasPt.y() );
67-
painter->drawLine( canvasPt.x(), canvasPt.y() - 3, canvasPt.x(), canvasPt.y() + 3 );
56+
const QgsPointXY pt = mTransform.transform( x, y );
57+
const QPointF canvasPt = toCanvasCoordinates( pt );
6858

59+
if ( qgsDoubleNear( layerPt.x(), x, mPrecision / 3 ) && qgsDoubleNear( layerPt.y(), y, mPrecision / 3 ) )
60+
{
61+
painter->setPen( mCurrentPointPen );
62+
}
63+
else
64+
{
65+
painter->setPen( mGridPen );
6966
}
67+
painter->drawLine( canvasPt.x() - 3, canvasPt.y(), canvasPt.x() + 3, canvasPt.y() );
68+
painter->drawLine( canvasPt.x(), canvasPt.y() - 3, canvasPt.x(), canvasPt.y() + 3 );
69+
7070
}
7171
}
72-
catch ( QgsCsException &e )
73-
{
74-
Q_UNUSED( e )
75-
mAvailableByZoomFactor = false;
76-
}
72+
}
73+
catch ( QgsCsException &e )
74+
{
75+
Q_UNUSED( e )
76+
mAvailableByZoomFactor = false;
7777
}
7878

7979
painter->restore();

0 commit comments

Comments
 (0)