27
27
28
28
QgsMapToolCircularStringRadius::QgsMapToolCircularStringRadius ( QgsMapToolCapture* parentTool, QgsMapCanvas* canvas, CaptureMode mode )
29
29
: QgsMapToolAddCircularString( parentTool, canvas, mode ),
30
- mTemporaryEndPointX( 0.0 ),
31
- mTemporaryEndPointY( 0.0 ),
30
+ mTemporaryEndPoint( QgsPointV2() ),
32
31
mRadius( 0.0 ),
33
32
mRadiusSpinBox( nullptr )
34
33
{
@@ -48,7 +47,7 @@ void QgsMapToolCircularStringRadius::deactivate()
48
47
49
48
void QgsMapToolCircularStringRadius::cadCanvasReleaseEvent ( QgsMapMouseEvent* e )
50
49
{
51
- QgsPointV2 mapPoint ( e->mapPoint (). x (), e-> mapPoint (). y () );
50
+ QgsPointV2 mapPoint ( e->mapPoint () );
52
51
53
52
if ( e->button () == Qt::LeftButton )
54
53
{
@@ -60,15 +59,14 @@ void QgsMapToolCircularStringRadius::cadCanvasReleaseEvent( QgsMapMouseEvent* e
60
59
{
61
60
if ( mPoints .size () % 2 )
62
61
{
63
- mTemporaryEndPointX = mapPoint.x ();
64
- mTemporaryEndPointY = mapPoint.y ();
62
+ mTemporaryEndPoint = mapPoint;
65
63
66
64
// 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 ;
68
66
mRadius = minRadius + minRadius / 10.0 ;
69
67
70
68
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 () ) ) )
72
70
{
73
71
mPoints .append ( result );
74
72
createRadiusSpinBox ();
@@ -80,7 +78,7 @@ void QgsMapToolCircularStringRadius::cadCanvasReleaseEvent( QgsMapMouseEvent* e
80
78
}
81
79
else
82
80
{
83
- mPoints .append ( QgsPointV2 ( mTemporaryEndPointX , mTemporaryEndPointY ) );
81
+ mPoints .append ( mTemporaryEndPoint );
84
82
deleteRadiusSpinBox ();
85
83
}
86
84
recalculateCircularString ();
@@ -102,10 +100,9 @@ void QgsMapToolCircularStringRadius::cadCanvasMoveEvent( QgsMapMouseEvent* e )
102
100
{
103
101
if ( !mPoints .isEmpty () )
104
102
{
105
- mLastMouseMapPos .setX ( e->mapPoint ().x () );
106
- mLastMouseMapPos .setY ( e->mapPoint ().y () );
103
+ mLastMouseMapPos = QgsPointV2 ( e->mapPoint () );
107
104
recalculateCircularString ();
108
- updateCenterPointRubberBand ( QgsPointV2 ( mTemporaryEndPointX , mTemporaryEndPointY ) );
105
+ updateCenterPointRubberBand ( mTemporaryEndPoint );
109
106
}
110
107
}
111
108
@@ -127,15 +124,15 @@ void QgsMapToolCircularStringRadius::recalculateCircularString()
127
124
{
128
125
// recalculate midpoint on circle segment
129
126
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 ,
131
128
mLastMouseMapPos ) )
132
129
{
133
130
return ;
134
131
}
135
132
mPoints .replace ( mPoints .size () - 1 , midPoint );
136
133
rubberBandPoints.append ( mPoints .at ( mPoints .size () - 2 ) );
137
134
rubberBandPoints.append ( mPoints .last () );
138
- rubberBandPoints.append ( QgsPointV2 ( mTemporaryEndPointX , mTemporaryEndPointY ) );
135
+ rubberBandPoints.append ( mTemporaryEndPoint );
139
136
}
140
137
else
141
138
{
@@ -165,13 +162,12 @@ void QgsMapToolCircularStringRadius::createRadiusSpinBox()
165
162
166
163
void QgsMapToolCircularStringRadius::deleteRadiusSpinBox ()
167
164
{
168
- if ( ! mRadiusSpinBox )
165
+ if ( mRadiusSpinBox )
169
166
{
170
- return ;
167
+ QgisApp::instance ()->statusBar ()->removeWidget ( mRadiusSpinBox );
168
+ delete mRadiusSpinBox ;
169
+ mRadiusSpinBox = nullptr ;
171
170
}
172
- QgisApp::instance ()->statusBar ()->removeWidget ( mRadiusSpinBox );
173
- delete mRadiusSpinBox ;
174
- mRadiusSpinBox = nullptr ;
175
171
}
176
172
177
173
void QgsMapToolCircularStringRadius::updateRadiusFromSpinBox ( double radius )
0 commit comments