Skip to content

Commit c39ffe9

Browse files
committed
[FEATURE]: Tool to add circular strings with start point, curve point and end point
1 parent 9b31f34 commit c39ffe9

37 files changed

+308
-118
lines changed

images/images.qrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -504,6 +504,7 @@
504504
<file>themes/default/mIconClear.png</file>
505505
<file>flags/zh.png</file>
506506
<file>themes/default/mIconPaintEffects.svg</file>
507+
<file>themes/default/mActionCircularStringCurvePoint.png</file>
507508
</qresource>
508509
<qresource prefix="/images/tips">
509510
<file alias="symbol_levels.png">qgis_tips/symbol_levels.png</file>

python/core/geometry/qgsabstractgeometryv2.sip

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ class QgsAbstractGeometryV2
9090
virtual QgsRectangle calculateBoundingBox() const;
9191

9292
//render pipeline
93-
virtual void transform( const QgsCoordinateTransform& ct ) = 0;
93+
virtual void transform( const QgsCoordinateTransform& ct, QgsCoordinateTransform::TransformDirection d = QgsCoordinateTransform::ForwardTransform ) = 0;
9494
virtual void transform( const QTransform& t ) = 0;
9595
//virtual void clip( const QgsRectangle& rect );
9696
virtual void draw( QPainter& p ) const = 0;

python/core/geometry/qgscircularstringv2.sip

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class QgsCircularStringV2: public QgsCurveV2
3838
virtual QgsLineStringV2* curveToLine() const;
3939

4040
void draw( QPainter& p ) const;
41-
void transform( const QgsCoordinateTransform& ct );
41+
void transform( const QgsCoordinateTransform& ct, QgsCoordinateTransform::TransformDirection d = QgsCoordinateTransform::ForwardTransform );
4242
void transform( const QTransform& t );
4343
//void clip( const QgsRectangle& rect );
4444
void addToPainterPath( QPainterPath& path ) const;

python/core/geometry/qgscompoundcurvev2.sip

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class QgsCompoundCurveV2: public QgsCurveV2
4545
void close();
4646

4747
void draw( QPainter& p ) const;
48-
void transform( const QgsCoordinateTransform& ct );
48+
void transform( const QgsCoordinateTransform& ct, QgsCoordinateTransform::TransformDirection d = QgsCoordinateTransform::ForwardTransform );
4949
void transform( const QTransform& t );
5050
void addToPainterPath( QPainterPath& path ) const;
5151
void drawAsPolygon( QPainter& p ) const;

python/core/geometry/qgscurvepolygonv2.sip

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ class QgsCurvePolygonV2: public QgsSurfaceV2
4949
bool removeInteriorRing( int nr );
5050

5151
virtual void draw( QPainter& p ) const;
52-
void transform( const QgsCoordinateTransform& ct );
52+
void transform( const QgsCoordinateTransform& ct, QgsCoordinateTransform::TransformDirection d = QgsCoordinateTransform::ForwardTransform );
5353
void transform( const QTransform& t );
5454

5555
virtual bool insertVertex( const QgsVertexId& position, const QgsPointV2& vertex );

python/core/geometry/qgsgeometrycollectionv2.sip

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class QgsGeometryCollectionV2: public QgsAbstractGeometryV2
2323
virtual bool addGeometry( QgsAbstractGeometryV2* g /Transfer/ );
2424
virtual bool removeGeometry( int nr );
2525

26-
virtual void transform( const QgsCoordinateTransform& ct );
26+
virtual void transform( const QgsCoordinateTransform& ct, QgsCoordinateTransform::TransformDirection d = QgsCoordinateTransform::ForwardTransform );
2727
void transform( const QTransform& t );
2828
//virtual void clip( const QgsRectangle& rect );
2929
virtual void draw( QPainter& p ) const;

python/core/geometry/qgslinestringv2.sip

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class QgsLineStringV2: public QgsCurveV2
3838
void append( const QgsLineStringV2* line );
3939

4040
void draw( QPainter& p ) const;
41-
void transform( const QgsCoordinateTransform& ct );
41+
void transform( const QgsCoordinateTransform& ct, QgsCoordinateTransform::TransformDirection d = QgsCoordinateTransform::ForwardTransform );
4242
void transform( const QTransform& t );
4343

4444
void addToPainterPath( QPainterPath& path ) const;

src/app/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,8 @@ SET(QGIS_APP_SRCS
117117
qgsvectorlayerproperties.cpp
118118
qgsvisibilitypresets.cpp
119119
qgshandlebadlayers.cpp
120+
qgsmaptooladdcircularstring.cpp
121+
qgsmaptoolcircularstringcurvepoint.cpp
120122

121123
composer/qgsattributeselectiondialog.cpp
122124
composer/qgscomposer.cpp
@@ -240,6 +242,7 @@ SET (QGIS_APP_MOC_HDRS
240242
qgsmaptoolsimplify.h
241243
qgsmaptoolsplitfeatures.h
242244
qgsmaptoolsplitparts.h
245+
qgsmaptooladdcircularstring.h
243246

244247
nodetool/qgsmaptoolnodetool.h
245248
nodetool/qgsselectedfeature.h

src/app/qgisapp.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,7 @@
250250
#include "qgsmaptooladdring.h"
251251
#include "qgsmaptoolfillring.h"
252252
#include "qgsmaptoolannotation.h"
253+
#include "qgsmaptoolcircularstringcurvepoint.h"
253254
#include "qgsmaptooldeletering.h"
254255
#include "qgsmaptooldeletepart.h"
255256
#include "qgsmaptoolfeatureaction.h"
@@ -1170,6 +1171,7 @@ void QgisApp::createActions()
11701171
connect( mActionCopyStyle, SIGNAL( triggered() ), this, SLOT( copyStyle() ) );
11711172
connect( mActionPasteStyle, SIGNAL( triggered() ), this, SLOT( pasteStyle() ) );
11721173
connect( mActionAddFeature, SIGNAL( triggered() ), this, SLOT( addFeature() ) );
1174+
connect( mActionCircularStringCurvePoint, SIGNAL( triggered() ), this, SLOT( circularStringCurvePoint() ) );
11731175
connect( mActionMoveFeature, SIGNAL( triggered() ), this, SLOT( moveFeature() ) );
11741176
connect( mActionRotateFeature, SIGNAL( triggered() ), this, SLOT( rotateFeature() ) );
11751177

@@ -1444,6 +1446,7 @@ void QgisApp::createActionGroups()
14441446
mMapToolGroup->addAction( mActionMeasureArea );
14451447
mMapToolGroup->addAction( mActionMeasureAngle );
14461448
mMapToolGroup->addAction( mActionAddFeature );
1449+
mMapToolGroup->addAction( mActionCircularStringCurvePoint );
14471450
mMapToolGroup->addAction( mActionMoveFeature );
14481451
mMapToolGroup->addAction( mActionRotateFeature );
14491452
#if defined(GEOS_VERSION_MAJOR) && defined(GEOS_VERSION_MINOR) && \
@@ -2293,6 +2296,8 @@ void QgisApp::createCanvasTools()
22932296
mMapTools.mAnnotation->setAction( mActionAnnotation );
22942297
mMapTools.mAddFeature = new QgsMapToolAddFeature( mMapCanvas );
22952298
mMapTools.mAddFeature->setAction( mActionAddFeature );
2299+
mMapTools.mCircularStringCurvePoint = new QgsMapToolCircularStringCurvePoint( dynamic_cast<QgsMapToolAddFeature*>( mMapTools.mAddFeature ), mMapCanvas );
2300+
mMapTools.mCircularStringCurvePoint->setAction( mActionCircularStringCurvePoint );
22962301
mMapTools.mMoveFeature = new QgsMapToolMoveFeature( mMapCanvas );
22972302
mMapTools.mMoveFeature->setAction( mActionMoveFeature );
22982303
mMapTools.mRotateFeature = new QgsMapToolRotateFeature( mMapCanvas );
@@ -6159,6 +6164,11 @@ void QgisApp::addFeature()
61596164
mMapCanvas->setMapTool( mMapTools.mAddFeature );
61606165
}
61616166

6167+
void QgisApp::circularStringCurvePoint()
6168+
{
6169+
mMapCanvas->setMapTool( mMapTools.mCircularStringCurvePoint );
6170+
}
6171+
61626172
void QgisApp::selectFeatures()
61636173
{
61646174
mMapCanvas->setMapTool( mMapTools.mSelectFeatures );

src/app/qgisapp.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -966,6 +966,8 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
966966
void newBookmark();
967967
//! activates the add feature tool
968968
void addFeature();
969+
//! activates the add circular string tool
970+
void circularStringCurvePoint();
969971
//! activates the move feature tool
970972
void moveFeature();
971973
//! activates the offset curve tool
@@ -1471,6 +1473,7 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
14711473
QgsMapTool *mMeasureArea;
14721474
QgsMapTool *mMeasureAngle;
14731475
QgsMapTool *mAddFeature;
1476+
QgsMapTool *mCircularStringCurvePoint;
14741477
QgsMapTool *mMoveFeature;
14751478
QgsMapTool *mOffsetCurve;
14761479
QgsMapTool *mReshapeFeatures;

0 commit comments

Comments
 (0)