Skip to content

Commit

Permalink
Simplify annotation drawing map tool classes
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Sep 24, 2021
1 parent 55a76d1 commit 54772f0
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 117 deletions.
127 changes: 45 additions & 82 deletions src/gui/annotations/qgscreateannotationitemmaptool_impl.cpp
Expand Up @@ -31,6 +31,46 @@

///@cond PRIVATE

//
// QgsMapToolCaptureAnnotationItem
//

QgsMapToolCaptureAnnotationItem::QgsMapToolCaptureAnnotationItem( QgsMapCanvas *canvas, QgsAdvancedDigitizingDockWidget *cadDockWidget, CaptureMode mode )
: QgsMapToolCapture( canvas, cadDockWidget, mode )
{

}

QgsCreateAnnotationItemMapToolHandler *QgsMapToolCaptureAnnotationItem::handler()
{
return mHandler;
}

QgsMapTool *QgsMapToolCaptureAnnotationItem::mapTool()
{
return this;
}

QgsMapLayer *QgsMapToolCaptureAnnotationItem::layer() const
{
return mHandler->targetLayer();
}


QgsMapToolCapture::Capabilities QgsMapToolCaptureAnnotationItem::capabilities() const
{
// no geometry validation!
return SupportsCurves;
}

bool QgsMapToolCaptureAnnotationItem::supportsTechnique( CaptureTechnique ) const
{
return true;
}




//
// QgsCreatePointTextItemMapTool
//
Expand Down Expand Up @@ -77,14 +117,11 @@ QgsMapTool *QgsCreatePointTextItemMapTool::mapTool()
//

QgsCreateMarkerItemMapTool::QgsCreateMarkerItemMapTool( QgsMapCanvas *canvas, QgsAdvancedDigitizingDockWidget *cadDockWidget )
: QgsMapToolCapture( canvas, cadDockWidget, CapturePoint )
, mHandler( new QgsCreateAnnotationItemMapToolHandler( canvas, cadDockWidget ) )
: QgsMapToolCaptureAnnotationItem( canvas, cadDockWidget, CapturePoint )
{

mHandler = new QgsCreateAnnotationItemMapToolHandler( canvas, cadDockWidget, this );
}

QgsCreateMarkerItemMapTool::~QgsCreateMarkerItemMapTool() = default;

void QgsCreateMarkerItemMapTool::cadCanvasReleaseEvent( QgsMapMouseEvent *event )
{
if ( event->button() != Qt::LeftButton )
Expand All @@ -108,52 +145,14 @@ void QgsCreateMarkerItemMapTool::cadCanvasReleaseEvent( QgsMapMouseEvent *event
cadDockWidget()->clearPoints();
}

QgsCreateAnnotationItemMapToolHandler *QgsCreateMarkerItemMapTool::handler()
{
return mHandler;
}

QgsMapTool *QgsCreateMarkerItemMapTool::mapTool()
{
return this;
}

QgsMapLayer *QgsCreateMarkerItemMapTool::layer() const
{
return mHandler->targetLayer();
}

//
// QgsMapToolCaptureAnnotationItem
//

QgsMapToolCaptureAnnotationItem::QgsMapToolCaptureAnnotationItem( QgsMapCanvas *canvas, QgsAdvancedDigitizingDockWidget *cadDockWidget, CaptureMode mode )
: QgsMapToolCapture( canvas, cadDockWidget, mode )
{

}

QgsMapToolCapture::Capabilities QgsMapToolCaptureAnnotationItem::capabilities() const
{
// no geometry validation!
return SupportsCurves;
}

bool QgsMapToolCaptureAnnotationItem::supportsTechnique( CaptureTechnique ) const
{
return true;
}


//
// QgsCreateLineMapTool
//

QgsCreateLineItemMapTool::QgsCreateLineItemMapTool( QgsMapCanvas *canvas, QgsAdvancedDigitizingDockWidget *cadDockWidget )
: QgsMapToolCaptureAnnotationItem( canvas, cadDockWidget, CaptureLine )
, mHandler( new QgsCreateAnnotationItemMapToolHandler( canvas, cadDockWidget ) )
{

mHandler = new QgsCreateAnnotationItemMapToolHandler( canvas, cadDockWidget, this );
}

void QgsCreateLineItemMapTool::cadCanvasReleaseEvent( QgsMapMouseEvent *e )
Expand Down Expand Up @@ -202,34 +201,14 @@ void QgsCreateLineItemMapTool::cadCanvasReleaseEvent( QgsMapMouseEvent *e )
}
}

QgsCreateLineItemMapTool::~QgsCreateLineItemMapTool() = default;

QgsCreateAnnotationItemMapToolHandler *QgsCreateLineItemMapTool::handler()
{
return mHandler;
}

QgsMapTool *QgsCreateLineItemMapTool::mapTool()
{
return this;
}

QgsMapLayer *QgsCreateLineItemMapTool::layer() const
{
return mHandler->targetLayer();
}



//
// QgsCreatePolygonItemMapTool
//

QgsCreatePolygonItemMapTool::QgsCreatePolygonItemMapTool( QgsMapCanvas *canvas, QgsAdvancedDigitizingDockWidget *cadDockWidget )
: QgsMapToolCaptureAnnotationItem( canvas, cadDockWidget, CapturePolygon )
, mHandler( new QgsCreateAnnotationItemMapToolHandler( canvas, cadDockWidget ) )
{

mHandler = new QgsCreateAnnotationItemMapToolHandler( canvas, cadDockWidget, this );
}

void QgsCreatePolygonItemMapTool::cadCanvasReleaseEvent( QgsMapMouseEvent *e )
Expand Down Expand Up @@ -281,21 +260,5 @@ void QgsCreatePolygonItemMapTool::cadCanvasReleaseEvent( QgsMapMouseEvent *e )
}
}

QgsCreatePolygonItemMapTool::~QgsCreatePolygonItemMapTool() = default;

QgsCreateAnnotationItemMapToolHandler *QgsCreatePolygonItemMapTool::handler()
{
return mHandler;
}

QgsMapTool *QgsCreatePolygonItemMapTool::mapTool()
{
return this;
}

QgsMapLayer *QgsCreatePolygonItemMapTool::layer() const
{
return mHandler->targetLayer();
}

///@endcond PRIVATE

53 changes: 18 additions & 35 deletions src/gui/annotations/qgscreateannotationitemmaptool_impl.h
Expand Up @@ -24,93 +24,76 @@

///@cond PRIVATE

class QgsCreatePointTextItemMapTool: public QgsMapToolAdvancedDigitizing, public QgsCreateAnnotationItemMapToolInterface
class QgsMapToolCaptureAnnotationItem: public QgsMapToolCapture, public QgsCreateAnnotationItemMapToolInterface
{
Q_OBJECT

public:

QgsCreatePointTextItemMapTool( QgsMapCanvas *canvas, QgsAdvancedDigitizingDockWidget *cadDockWidget );
~QgsCreatePointTextItemMapTool() override;

void cadCanvasPressEvent( QgsMapMouseEvent *event ) override;
QgsMapToolCaptureAnnotationItem( QgsMapCanvas *canvas, QgsAdvancedDigitizingDockWidget *cadDockWidget, CaptureMode mode );
QgsCreateAnnotationItemMapToolHandler *handler() override;
QgsMapTool *mapTool() override;
QgsMapLayer *layer() const override;
QgsMapToolCapture::Capabilities capabilities() const override;
bool supportsTechnique( CaptureTechnique technique ) const override;

private:
protected:

QgsCreateAnnotationItemMapToolHandler *mHandler = nullptr;

};

class QgsCreateMarkerItemMapTool: public QgsMapToolCapture, public QgsCreateAnnotationItemMapToolInterface
class QgsCreatePointTextItemMapTool: public QgsMapToolAdvancedDigitizing, public QgsCreateAnnotationItemMapToolInterface
{
Q_OBJECT

public:

QgsCreateMarkerItemMapTool( QgsMapCanvas *canvas, QgsAdvancedDigitizingDockWidget *cadDockWidget );
~QgsCreateMarkerItemMapTool() override;
QgsCreatePointTextItemMapTool( QgsMapCanvas *canvas, QgsAdvancedDigitizingDockWidget *cadDockWidget );
~QgsCreatePointTextItemMapTool() override;

void cadCanvasReleaseEvent( QgsMapMouseEvent *event ) override;
void cadCanvasPressEvent( QgsMapMouseEvent *event ) override;
QgsCreateAnnotationItemMapToolHandler *handler() override;
QgsMapTool *mapTool() override;
QgsMapLayer *layer() const override;

private:

QgsCreateAnnotationItemMapToolHandler *mHandler = nullptr;

};

class QgsMapToolCaptureAnnotationItem : public QgsMapToolCapture

class QgsCreateMarkerItemMapTool: public QgsMapToolCaptureAnnotationItem
{
Q_OBJECT

public:
QgsMapToolCaptureAnnotationItem( QgsMapCanvas *canvas, QgsAdvancedDigitizingDockWidget *cadDockWidget, CaptureMode mode );

QgsMapToolCapture::Capabilities capabilities() const override;
bool supportsTechnique( CaptureTechnique technique ) const override;
QgsCreateMarkerItemMapTool( QgsMapCanvas *canvas, QgsAdvancedDigitizingDockWidget *cadDockWidget );

void cadCanvasReleaseEvent( QgsMapMouseEvent *event ) override;

};

class QgsCreateLineItemMapTool: public QgsMapToolCaptureAnnotationItem, public QgsCreateAnnotationItemMapToolInterface
class QgsCreateLineItemMapTool: public QgsMapToolCaptureAnnotationItem
{
Q_OBJECT

public:

QgsCreateLineItemMapTool( QgsMapCanvas *canvas, QgsAdvancedDigitizingDockWidget *cadDockWidget );
~QgsCreateLineItemMapTool() override;

void cadCanvasReleaseEvent( QgsMapMouseEvent *e ) override;
QgsCreateAnnotationItemMapToolHandler *handler() override;
QgsMapTool *mapTool() override;
QgsMapLayer *layer() const override;

private:

QgsCreateAnnotationItemMapToolHandler *mHandler = nullptr;

};

class QgsCreatePolygonItemMapTool: public QgsMapToolCaptureAnnotationItem, public QgsCreateAnnotationItemMapToolInterface
class QgsCreatePolygonItemMapTool: public QgsMapToolCaptureAnnotationItem
{
Q_OBJECT

public:

QgsCreatePolygonItemMapTool( QgsMapCanvas *canvas, QgsAdvancedDigitizingDockWidget *cadDockWidget );
~QgsCreatePolygonItemMapTool() override;

void cadCanvasReleaseEvent( QgsMapMouseEvent *e ) override;
QgsCreateAnnotationItemMapToolHandler *handler() override;
QgsMapTool *mapTool() override;
QgsMapLayer *layer() const override;

private:

QgsCreateAnnotationItemMapToolHandler *mHandler = nullptr;

};

Expand Down

0 comments on commit 54772f0

Please sign in to comment.