All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
te::edit::VertexTool Class Reference

This class implements a concrete tool for vertex operations (move, add, etc.). More...

#include <VertexTool.h>

Inheritance diagram for te::edit::VertexTool:
te::qt::widgets::AbstractTool

Public Types

enum  StageType {
  FEATURE_SELECTION, VERTEX_SEARCH, VERTEX_FOUND, VERTEX_MOVING,
  VERTEX_READY_TO_ADD
}
 Defines the operation stage to this tool. More...
 

Public Member Functions

virtual void setCursor (const QCursor &cursor)
 It sets the tool cursor. More...
 
Initializer Methods

Methods related to instantiation and destruction.

 VertexTool (te::qt::widgets::MapDisplay *display, const te::map::AbstractLayerPtr &layer, QObject *parent=0)
 It constructs a vertex tool associated with the given map display. More...
 
 ~VertexTool ()
 Destructor. More...
 
AbstractTool Methods

Methods related with tool behavior.

bool mousePressEvent (QMouseEvent *e)
 This event handler can be reimplemented in a concrete tool class to receive mouse press events for the watched object. More...
 
bool mouseMoveEvent (QMouseEvent *e)
 This event handler can be reimplemented in a concrete tool class to receive mouse move events for the watched object. More...
 
bool mouseReleaseEvent (QMouseEvent *e)
 This event handler can be reimplemented in a concrete tool class to receive mouse release events for the watched object. More...
 
bool mouseDoubleClickEvent (QMouseEvent *e)
 This event handler can be reimplemented in a concrete tool class to receive mouse double click events for the watched object. More...
 
AbstractTool Methods

Methods related with tool behavior.

virtual bool eventFilter (QObject *watched, QEvent *e)
 Filters events if this object has been installed as an event filter for the watched object. More...
 

Protected Attributes

QCursor m_cursor
 The default tool cursor. More...
 
MapDisplay * m_display
 The map display associated with the tool. More...
 

Private Slots

void onExtentChanged ()
 

Private Member Functions

te::gm::Envelope buildEnvelope (const QPointF &pos)
 
void draw (te::gm::Point *virtualVertex=0)
 
void pickFeature (const te::map::AbstractLayerPtr &layer, const QPointF &pos)
 
void pickFeature (const te::map::AbstractLayerPtr &layer, const te::gm::Envelope &env)
 
void reset ()
 
void setStage (StageType stage)
 
void storeEditedFeature ()
 
void updateCursor ()
 
void updateRTree ()
 

Private Attributes

StageType m_currentStage
 
VertexIndex m_currentVertexIndex
 
Featurem_feature
 
te::map::AbstractLayerPtr m_layer
 
std::vector< te::gm::LineString * > m_lines
 
te::sam::rtree::Index
< VertexIndex, 8 > 
m_rtree
 

Detailed Description

This class implements a concrete tool for vertex operations (move, add, etc.).

Definition at line 70 of file VertexTool.h.

Member Enumeration Documentation

Defines the operation stage to this tool.

Enumerator
FEATURE_SELECTION 

Selection of feature.

VERTEX_SEARCH 

Search of vertex.

VERTEX_FOUND 

Vertex found.

VERTEX_MOVING 

Vertex movement.

VERTEX_READY_TO_ADD 

Vertex add.

Definition at line 81 of file VertexTool.h.

Constructor & Destructor Documentation

te::edit::VertexTool::VertexTool ( te::qt::widgets::MapDisplay display,
const te::map::AbstractLayerPtr layer,
QObject *  parent = 0 
)

It constructs a vertex tool associated with the given map display.

Parameters
displayThe map display associated with the tool.
parentThe tool's parent.
Note
The tool will NOT take the ownership of the given pointers.

Definition at line 54 of file VertexTool.cpp.

References draw(), m_currentVertexIndex, te::qt::widgets::AbstractTool::m_display, m_layer, te::edit::VertexIndex::makeInvalid(), onExtentChanged(), and updateCursor().

te::edit::VertexTool::~VertexTool ( )

Destructor.

Definition at line 72 of file VertexTool.cpp.

Member Function Documentation

te::gm::Envelope te::edit::VertexTool::buildEnvelope ( const QPointF &  pos)
private

Definition at line 350 of file VertexTool.cpp.

bool te::qt::widgets::AbstractTool::eventFilter ( QObject *  watched,
QEvent *  e 
)
virtualinherited

Filters events if this object has been installed as an event filter for the watched object.

Parameters
watchedThe watched object.
eventThe last event sent to watched object.
Note
In your reimplementation of this function, if you want to filter the event out, i.e. stop it being handled further, return true; otherwise return false.
Here, the default implementation looks for QMouseEvents and call the pure virutal methods defined on AbstractTool class, e.g. mousePressEvent().

Reimplemented in te::qt::widgets::ZoomKeyboard, and te::qt::widgets::ZoomWheel.

Definition at line 50 of file AbstractTool.cpp.

Referenced by te::qt::widgets::ZoomKeyboard::eventFilter(), and te::qt::widgets::ZoomWheel::eventFilter().

bool te::edit::VertexTool::mouseDoubleClickEvent ( QMouseEvent *  e)
virtual

This event handler can be reimplemented in a concrete tool class to receive mouse double click events for the watched object.

Parameters
eThe mouse event.
Returns
If you want to filter the event out, i.e. stop it being handled further, return true; otherwise return false.
Note
The AbstractTool will also receive mouse press and mouse release events in addition to the double click event. It is up to the developer to ensure that the application interprets these events correctly.

Reimplemented from te::qt::widgets::AbstractTool.

Definition at line 217 of file VertexTool.cpp.

References te::edit::AddVertex(), and te::edit::GetPosition().

bool te::edit::VertexTool::mouseMoveEvent ( QMouseEvent *  e)
virtual

This event handler can be reimplemented in a concrete tool class to receive mouse move events for the watched object.

Parameters
eThe mouse event.
Returns
If you want to filter the event out, i.e. stop it being handled further, return true; otherwise return false.

Reimplemented from te::qt::widgets::AbstractTool.

Definition at line 119 of file VertexTool.cpp.

References te::gm::Envelope::getCenter(), te::gm::GetGeomFromEnvelope(), te::edit::GetPosition(), te::edit::MoveVertex(), te::gm::Coord2D::x, and te::gm::Coord2D::y.

bool te::edit::VertexTool::mousePressEvent ( QMouseEvent *  e)
virtual

This event handler can be reimplemented in a concrete tool class to receive mouse press events for the watched object.

Parameters
eThe mouse event.
Returns
If you want to filter the event out, i.e. stop it being handled further, return true; otherwise return false.

Reimplemented from te::qt::widgets::AbstractTool.

Definition at line 77 of file VertexTool.cpp.

References te::edit::RemoveVertex().

bool te::edit::VertexTool::mouseReleaseEvent ( QMouseEvent *  e)
virtual

This event handler can be reimplemented in a concrete tool class to receive mouse release events for the watched object.

Parameters
eThe mouse event.
Returns
If you want to filter the event out, i.e. stop it being handled further, return true; otherwise return false.

Reimplemented from te::qt::widgets::AbstractTool.

Definition at line 188 of file VertexTool.cpp.

References te::edit::GetPosition().

void te::edit::VertexTool::onExtentChanged ( )
privateslot

Definition at line 345 of file VertexTool.cpp.

Referenced by VertexTool().

void te::edit::VertexTool::pickFeature ( const te::map::AbstractLayerPtr layer,
const QPointF &  pos 
)
private

Definition at line 262 of file VertexTool.cpp.

void te::edit::VertexTool::pickFeature ( const te::map::AbstractLayerPtr layer,
const te::gm::Envelope env 
)
private

Definition at line 268 of file VertexTool.cpp.

References te::edit::GetLines(), and te::edit::PickFeature().

void te::edit::VertexTool::reset ( )
private

Definition at line 248 of file VertexTool.cpp.

void te::edit::VertexTool::setStage ( StageType  stage)
private

Definition at line 387 of file VertexTool.cpp.

void te::edit::VertexTool::storeEditedFeature ( )
private
void te::edit::VertexTool::updateCursor ( )
private

Definition at line 393 of file VertexTool.cpp.

Referenced by VertexTool().

void te::edit::VertexTool::updateRTree ( )
private

Member Data Documentation

StageType te::edit::VertexTool::m_currentStage
private

Definition at line 156 of file VertexTool.h.

VertexIndex te::edit::VertexTool::m_currentVertexIndex
private

Definition at line 154 of file VertexTool.h.

Referenced by VertexTool().

QCursor te::qt::widgets::AbstractTool::m_cursor
protectedinherited

The default tool cursor.

Definition at line 161 of file AbstractTool.h.

Feature* te::edit::VertexTool::m_feature
private

Definition at line 152 of file VertexTool.h.

te::map::AbstractLayerPtr te::edit::VertexTool::m_layer
private

Definition at line 151 of file VertexTool.h.

Referenced by VertexTool().

std::vector<te::gm::LineString*> te::edit::VertexTool::m_lines
private

Definition at line 153 of file VertexTool.h.

te::sam::rtree::Index<VertexIndex, 8> te::edit::VertexTool::m_rtree
private

Definition at line 155 of file VertexTool.h.


The documentation for this class was generated from the following files: