Skip to content

Commit 6ef1706

Browse files
committed
code cleanup and improved readability in circular maptools
1 parent 3cd9383 commit 6ef1706

4 files changed

+28
-38
lines changed

src/app/qgsmaptooladdcircularstring.cpp

+5-9
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ void QgsMapToolAddCircularString::keyPressEvent( QKeyEvent* e )
8383
if ( e && e->key() == Qt::Key_R )
8484
{
8585
mShowCenterPointRubberBand = true;
86-
8786
createCenterPointRubberBand();
8887
}
8988
}
@@ -176,10 +175,7 @@ void QgsMapToolAddCircularString::createCenterPointRubberBand()
176175
const QgsAbstractGeometryV2* rubberBandGeom = mTempRubberBand->geometry();
177176
if ( rubberBandGeom )
178177
{
179-
QgsVertexId idx;
180-
idx.part = 0;
181-
idx.ring = 0;
182-
idx.vertex = 2;
178+
QgsVertexId idx( 0, 0, 2 );
183179
QgsPointV2 pt = rubberBandGeom->vertexAt( idx );
184180
updateCenterPointRubberBand( pt );
185181
}
@@ -206,17 +202,17 @@ void QgsMapToolAddCircularString::updateCenterPointRubberBand( const QgsPointV2&
206202
csPoints.append( pt );
207203
cs->setPoints( csPoints );
208204

209-
double centerX, centerY;
205+
QgsPointV2 center;
210206
double radius;
211-
QgsGeometryUtils::circleCenterRadius( csPoints.at( 0 ), csPoints.at( 1 ), csPoints.at( 2 ), radius, centerX, centerY );
207+
QgsGeometryUtils::circleCenterRadius( csPoints.at( 0 ), csPoints.at( 1 ), csPoints.at( 2 ), radius, center.rx(), center.ry() );
212208

213209
QgsLineStringV2* segment1 = new QgsLineStringV2();
214-
segment1->addVertex( QgsPointV2( centerX, centerY ) );
210+
segment1->addVertex( center );
215211
segment1->addVertex( csPoints.at( 0 ) );
216212

217213
QgsLineStringV2* segment2 = new QgsLineStringV2();
218214
segment2->addVertex( csPoints.at( 2 ) );
219-
segment2->addVertex( QgsPointV2( centerX, centerY ) );
215+
segment2->addVertex( center );
220216

221217
QgsCompoundCurveV2* cc = new QgsCompoundCurveV2();
222218
cc->addCurve( segment1 );

src/app/qgsmaptoolcircularstringcurvepoint.cpp

+5-8
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ QgsMapToolCircularStringCurvePoint::~QgsMapToolCircularStringCurvePoint()
1919

2020
void QgsMapToolCircularStringCurvePoint::cadCanvasReleaseEvent( QgsMapMouseEvent* e )
2121
{
22-
QgsPointV2 mapPoint( e->mapPoint().x(), e->mapPoint().y() );
22+
QgsPointV2 mapPoint( e->mapPoint() );
2323

2424
if ( e->button() == Qt::LeftButton )
2525
{
@@ -29,7 +29,7 @@ void QgsMapToolCircularStringCurvePoint::cadCanvasReleaseEvent( QgsMapMouseEvent
2929
createCenterPointRubberBand();
3030
}
3131

32-
if ( mPoints.size() >= 1 )
32+
if ( !mPoints.isEmpty() )
3333
{
3434
if ( !mTempRubberBand )
3535
{
@@ -43,7 +43,7 @@ void QgsMapToolCircularStringCurvePoint::cadCanvasReleaseEvent( QgsMapMouseEvent
4343
c->setPoints( rubberBandPoints );
4444
mTempRubberBand->setGeometry( c );
4545
}
46-
if ( mPoints.size() > 1 && ( mPoints.size() ) % 2 == 1 )
46+
if ( mPoints.size() > 1 && mPoints.size() % 2 )
4747
{
4848
if ( !mRubberBand )
4949
{
@@ -71,11 +71,8 @@ void QgsMapToolCircularStringCurvePoint::cadCanvasReleaseEvent( QgsMapMouseEvent
7171

7272
void QgsMapToolCircularStringCurvePoint::cadCanvasMoveEvent( QgsMapMouseEvent* e )
7373
{
74-
QgsPointV2 mapPoint( e->mapPoint().x(), e->mapPoint().y() );
75-
QgsVertexId idx;
76-
idx.part = 0;
77-
idx.ring = 0;
78-
idx.vertex = 1 + ( mPoints.size() + 1 ) % 2;
74+
QgsPointV2 mapPoint( e->mapPoint() );
75+
QgsVertexId idx( 0, 0, 1 + ( mPoints.size() + 1 ) % 2 );
7976
if ( mTempRubberBand )
8077
{
8178
mTempRubberBand->moveVertex( idx, mapPoint );

src/app/qgsmaptoolcircularstringradius.cpp

+14-18
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,7 @@
2727

2828
QgsMapToolCircularStringRadius::QgsMapToolCircularStringRadius( QgsMapToolCapture* parentTool, QgsMapCanvas* canvas, CaptureMode mode )
2929
: QgsMapToolAddCircularString( parentTool, canvas, mode ),
30-
mTemporaryEndPointX( 0.0 ),
31-
mTemporaryEndPointY( 0.0 ),
30+
mTemporaryEndPoint( QgsPointV2() ),
3231
mRadius( 0.0 ),
3332
mRadiusSpinBox( nullptr )
3433
{
@@ -48,7 +47,7 @@ void QgsMapToolCircularStringRadius::deactivate()
4847

4948
void QgsMapToolCircularStringRadius::cadCanvasReleaseEvent( QgsMapMouseEvent* e )
5049
{
51-
QgsPointV2 mapPoint( e->mapPoint().x(), e->mapPoint().y() );
50+
QgsPointV2 mapPoint( e->mapPoint() );
5251

5352
if ( e->button() == Qt::LeftButton )
5453
{
@@ -60,15 +59,14 @@ void QgsMapToolCircularStringRadius::cadCanvasReleaseEvent( QgsMapMouseEvent* e
6059
{
6160
if ( mPoints.size() % 2 )
6261
{
63-
mTemporaryEndPointX = mapPoint.x();
64-
mTemporaryEndPointY = mapPoint.y();
62+
mTemporaryEndPoint = mapPoint;
6563

6664
//initial radius is distance( tempPoint - mPoints.last ) / 2.0
67-
double minRadius = sqrt( QgsGeometryUtils::sqrDistance2D( mPoints.last(), QgsPointV2( mTemporaryEndPointX, mTemporaryEndPointY ) ) ) / 2.0;
65+
double minRadius = sqrt( QgsGeometryUtils::sqrDistance2D( mPoints.last(), mTemporaryEndPoint ) ) / 2.0;
6866
mRadius = minRadius + minRadius / 10.0;
6967

7068
QgsPointV2 result;
71-
if ( QgsGeometryUtils::segmentMidPoint( mPoints.last(), QgsPointV2( mTemporaryEndPointX, mTemporaryEndPointY ), result, mRadius, QgsPointV2( mapPoint.x(), mapPoint.y() ) ) )
69+
if ( QgsGeometryUtils::segmentMidPoint( mPoints.last(), mTemporaryEndPoint, result, mRadius, QgsPointV2( mapPoint.x(), mapPoint.y() ) ) )
7270
{
7371
mPoints.append( result );
7472
createRadiusSpinBox();
@@ -80,7 +78,7 @@ void QgsMapToolCircularStringRadius::cadCanvasReleaseEvent( QgsMapMouseEvent* e
8078
}
8179
else
8280
{
83-
mPoints.append( QgsPointV2( mTemporaryEndPointX, mTemporaryEndPointY ) );
81+
mPoints.append( mTemporaryEndPoint );
8482
deleteRadiusSpinBox();
8583
}
8684
recalculateCircularString();
@@ -102,10 +100,9 @@ void QgsMapToolCircularStringRadius::cadCanvasMoveEvent( QgsMapMouseEvent* e )
102100
{
103101
if ( !mPoints.isEmpty() )
104102
{
105-
mLastMouseMapPos.setX( e->mapPoint().x() );
106-
mLastMouseMapPos.setY( e->mapPoint().y() );
103+
mLastMouseMapPos = QgsPointV2( e->mapPoint() );
107104
recalculateCircularString();
108-
updateCenterPointRubberBand( QgsPointV2( mTemporaryEndPointX, mTemporaryEndPointY ) );
105+
updateCenterPointRubberBand( mTemporaryEndPoint );
109106
}
110107
}
111108

@@ -127,15 +124,15 @@ void QgsMapToolCircularStringRadius::recalculateCircularString()
127124
{
128125
//recalculate midpoint on circle segment
129126
QgsPointV2 midPoint;
130-
if ( !QgsGeometryUtils::segmentMidPoint( mPoints.at( mPoints.size() - 2 ), QgsPointV2( mTemporaryEndPointX, mTemporaryEndPointY ), midPoint, mRadius,
127+
if ( !QgsGeometryUtils::segmentMidPoint( mPoints.at( mPoints.size() - 2 ), mTemporaryEndPoint, midPoint, mRadius,
131128
mLastMouseMapPos ) )
132129
{
133130
return;
134131
}
135132
mPoints.replace( mPoints.size() - 1, midPoint );
136133
rubberBandPoints.append( mPoints.at( mPoints.size() - 2 ) );
137134
rubberBandPoints.append( mPoints.last() );
138-
rubberBandPoints.append( QgsPointV2( mTemporaryEndPointX, mTemporaryEndPointY ) );
135+
rubberBandPoints.append( mTemporaryEndPoint );
139136
}
140137
else
141138
{
@@ -165,13 +162,12 @@ void QgsMapToolCircularStringRadius::createRadiusSpinBox()
165162

166163
void QgsMapToolCircularStringRadius::deleteRadiusSpinBox()
167164
{
168-
if ( !mRadiusSpinBox )
165+
if ( mRadiusSpinBox )
169166
{
170-
return;
167+
QgisApp::instance()->statusBar()->removeWidget( mRadiusSpinBox );
168+
delete mRadiusSpinBox;
169+
mRadiusSpinBox = nullptr;
171170
}
172-
QgisApp::instance()->statusBar()->removeWidget( mRadiusSpinBox );
173-
delete mRadiusSpinBox;
174-
mRadiusSpinBox = nullptr;
175171
}
176172

177173
void QgsMapToolCircularStringRadius::updateRadiusFromSpinBox( double radius )

src/app/qgsmaptoolcircularstringradius.h

+4-3
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,16 @@ class QgsMapToolCircularStringRadius: public QgsMapToolAddCircularString
3737
void updateRadiusFromSpinBox( double radius );
3838

3939
private:
40-
double mTemporaryEndPointX;
41-
double mTemporaryEndPointY;
40+
QgsPointV2 mTemporaryEndPoint;
4241
double mRadius;
4342
QgsPointV2 mLastMouseMapPos;
4443
QDoubleSpinBox* mRadiusSpinBox;
4544

46-
//recalculate circular string and rubber band depending on mRadius/mLeft and endpoints
45+
//! recalculate the rubberband and the temporary rubberband
4746
void recalculateCircularString();
47+
//! (re-)create the spin box to enter the radius
4848
void createRadiusSpinBox();
49+
//! delete the spin box to enter the radius, if it exists
4950
void deleteRadiusSpinBox();
5051
};
5152

0 commit comments

Comments
 (0)