This class implements a concrete tool to measure operation (distance, area, and angle). More...
#include <Measure.h>
Public Types | |
| enum | MeasureType { Distance, Area, Angle } |
| Defines the measure type measured by 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. | |
| Measure (MapDisplay *display, const MeasureType &measureType, const QCursor &cursor, QObject *parent=0) | |
| It constructs a measure tool associated with the given map display. More... | |
| ~Measure () | |
| 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... | |
| bool | keyPressEvent (QKeyEvent *e) |
| This event handler can be reimplemented in a concrete tool class to receive key press 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 | |
| QBrush | m_brush |
| The brush used to draw the path. More... | |
| std::vector< te::gm::Coord2D > | m_coords |
| The coord list managed by the measure tool. More... | |
| QCursor | m_curCursor |
| The current mapdisplay cursor. More... | |
| QCursor | m_cursor |
| The default tool cursor. More... | |
| MapDisplay * | m_display |
| The map display associated with the tool. More... | |
| bool | m_isFinished |
| A flag that indicates if the operations was finished. More... | |
| te::gm::Coord2D | m_lastPos |
| The last position captured on mouse move event. More... | |
| MeasureType | m_measureType |
| The measure type. More... | |
| QPen | m_pen |
| The pen used to draw the path. More... | |
| std::string | m_unit |
| The unit symbol for the measure. More... | |
Private Slots | |
| void | onExtentChanged () |
Private Member Functions | |
| double | calculateAngle (te::gm::LineString *line) const |
| double | calculateLength (te::gm::LineString *line) const |
| void | clear () |
| void | drawGeometry () |
| void | drawLine (Canvas &canvas) |
| void | drawPolygon (Canvas &canvas) |
| void | drawText (Canvas &canvas, const std::string &text, te::gm::Point *p) |
This class implements a concrete tool to measure operation (distance, area, and angle).
| te::qt::widgets::Measure::Measure | ( | MapDisplay * | display, |
| const MeasureType & | measureType, | ||
| const QCursor & | cursor, | ||
| QObject * | parent = 0 |
||
| ) |
It constructs a measure tool associated with the given map display.
| display | The map display associated with the tool. |
| parent | The tool's parent. |
Definition at line 48 of file Measure.cpp.
References te::common::Singleton< SpatialReferenceSystemManager >::getInstance(), te::map::MapDisplay::getSRID(), m_brush, te::qt::widgets::AbstractTool::m_display, m_pen, m_unit, onExtentChanged(), te::qt::widgets::AbstractTool::setCursor(), and TE_UNKNOWN_SRS.
| te::qt::widgets::Measure::~Measure | ( | ) |
Destructor.
Definition at line 71 of file Measure.cpp.
References te::qt::widgets::MapDisplay::getDraftPixmap(), and te::qt::widgets::AbstractTool::m_display.
|
private |
Definition at line 285 of file Measure.cpp.
References te::gm::LineString::getPointN().
Referenced by drawLine().
|
private |
Definition at line 271 of file Measure.cpp.
References te::gm::LineString::getNPoints(), and te::gm::LineString::getPointN().
Referenced by drawLine().
|
private |
Definition at line 261 of file Measure.cpp.
References te::qt::widgets::MapDisplay::getDraftPixmap(), m_coords, and te::qt::widgets::AbstractTool::m_display.
Referenced by keyPressEvent(), and mousePressEvent().
|
private |
Definition at line 152 of file Measure.cpp.
References Angle, Area, Distance, drawLine(), drawPolygon(), te::qt::widgets::MapDisplay::getDraftPixmap(), te::map::MapDisplay::getExtent(), te::gm::Envelope::isValid(), m_coords, te::qt::widgets::AbstractTool::m_display, te::gm::Envelope::m_llx, te::gm::Envelope::m_lly, m_measureType, te::gm::Envelope::m_urx, te::gm::Envelope::m_ury, and te::qt::widgets::Canvas::setDevice().
Referenced by mouseMoveEvent(), and onExtentChanged().
|
private |
Definition at line 186 of file Measure.cpp.
References Angle, calculateAngle(), calculateLength(), Distance, te::qt::widgets::Canvas::draw(), drawText(), te::gm::LineString::getEndPoint(), te::gm::LineString::getNPoints(), te::gm::LineString::getPointN(), line, te::gm::LineStringType, m_coords, m_measureType, m_pen, m_unit, te::qt::widgets::Canvas::setLineColor(), te::qt::widgets::Canvas::setLineWidth(), and te::gm::LineString::setPoint().
Referenced by drawGeometry(), and drawPolygon().
|
private |
Definition at line 218 of file Measure.cpp.
References te::qt::widgets::Canvas::draw(), drawLine(), drawText(), te::gm::CurvePolygon::getArea(), te::gm::Envelope::getCenter(), te::gm::Geometry::getMBR(), te::gm::LineStringType, m_brush, m_coords, m_pen, m_unit, p, te::gm::PointType, te::gm::PolygonType, te::gm::LineString::setPoint(), te::qt::widgets::Canvas::setPolygonContourColor(), te::qt::widgets::Canvas::setPolygonContourWidth(), te::qt::widgets::Canvas::setPolygonFillColor(), te::gm::CurvePolygon::setRingN(), te::gm::Coord2D::x, and te::gm::Coord2D::y.
Referenced by drawGeometry().
|
private |
Definition at line 248 of file Measure.cpp.
References te::qt::widgets::Canvas::drawText(), te::qt::widgets::Canvas::setFontFamily(), te::qt::widgets::Canvas::setTextColor(), te::qt::widgets::Canvas::setTextContourColor(), te::qt::widgets::Canvas::setTextContourEnabled(), te::qt::widgets::Canvas::setTextContourWidth(), te::qt::widgets::Canvas::setTextPointSize(), te::qt::widgets::Canvas::setTextWeight(), TE_OPAQUE, and te::se::Font::WeightBold.
Referenced by drawLine(), and drawPolygon().
Filters events if this object has been installed as an event filter for the watched object.
| watched | The watched object. |
| event | The last event sent to watched object. |
Reimplemented in te::edit::GeometriesUpdateTool, te::qt::widgets::ZoomKeyboard, and te::qt::widgets::ZoomWheel.
Definition at line 50 of file AbstractTool.cpp.
References te::qt::widgets::AbstractTool::keyPressEvent(), te::qt::widgets::AbstractTool::m_cursor, te::qt::widgets::AbstractTool::m_display, te::qt::widgets::AbstractTool::mouseDoubleClickEvent(), te::qt::widgets::AbstractTool::mouseMoveEvent(), te::qt::widgets::AbstractTool::mousePressEvent(), and te::qt::widgets::AbstractTool::mouseReleaseEvent().
Referenced by te::qt::widgets::ZoomKeyboard::eventFilter(), te::qt::widgets::ZoomWheel::eventFilter(), and te::edit::GeometriesUpdateTool::eventFilter().
|
virtual |
This event handler can be reimplemented in a concrete tool class to receive key press events for the watched object.
| e | The key event. |
Reimplemented from te::qt::widgets::AbstractTool.
Definition at line 141 of file Measure.cpp.
References clear(), and m_isFinished.
|
virtual |
This event handler can be reimplemented in a concrete tool class to receive mouse double click events for the watched object.
| e | The mouse event. |
Reimplemented from te::qt::widgets::AbstractTool.
Definition at line 128 of file Measure.cpp.
References Area, m_coords, m_isFinished, and m_measureType.
|
virtual |
This event handler can be reimplemented in a concrete tool class to receive mouse move events for the watched object.
| e | The mouse event. |
Reimplemented from te::qt::widgets::AbstractTool.
Definition at line 98 of file Measure.cpp.
References drawGeometry(), m_coords, te::qt::widgets::AbstractTool::m_display, m_isFinished, m_lastPos, and te::qt::widgets::MapDisplay::transform().
|
virtual |
This event handler can be reimplemented in a concrete tool class to receive mouse press events for the watched object.
| e | The mouse event. |
Reimplemented from te::qt::widgets::AbstractTool.
Definition at line 77 of file Measure.cpp.
References Angle, clear(), m_coords, te::qt::widgets::AbstractTool::m_display, m_isFinished, m_measureType, and te::qt::widgets::MapDisplay::transform().
|
virtual |
This event handler can be reimplemented in a concrete tool class to receive mouse release events for the watched object.
| e | The mouse event. |
Reimplemented from te::qt::widgets::AbstractTool.
Definition at line 123 of file Measure.cpp.
|
privateslot |
Definition at line 297 of file Measure.cpp.
References drawGeometry(), te::common::Singleton< SpatialReferenceSystemManager >::getInstance(), te::map::MapDisplay::getSRID(), m_coords, te::qt::widgets::AbstractTool::m_display, m_lastPos, m_unit, and TE_UNKNOWN_SRS.
Referenced by Measure().
|
virtualinherited |
It sets the tool cursor.
| cursor | The cursor that will be used during the tool operation. |
Reimplemented in te::edit::GeometriesUpdateTool.
Definition at line 106 of file AbstractTool.cpp.
References te::qt::widgets::AbstractTool::m_curCursor, te::qt::widgets::AbstractTool::m_cursor, and te::qt::widgets::AbstractTool::m_display.
Referenced by te::qt::widgets::ExtentAcquire::ExtentAcquire(), te::qt::widgets::Info::Info(), Measure(), te::qt::widgets::Pan::Pan(), te::qt::widgets::PanExtent::PanExtent(), te::qt::widgets::PointMove::PointMove(), te::qt::widgets::PointPicker::PointPicker(), te::qt::widgets::PolygonAcquire::PolygonAcquire(), te::qt::widgets::Selection::Selection(), te::qt::widgets::ZoomArea::ZoomArea(), and te::qt::widgets::ZoomClick::ZoomClick().
|
protected |
The brush used to draw the path.
Definition at line 147 of file Measure.h.
Referenced by drawPolygon(), and Measure().
|
protected |
The coord list managed by the measure tool.
Definition at line 143 of file Measure.h.
Referenced by clear(), drawGeometry(), drawLine(), drawPolygon(), mouseDoubleClickEvent(), mouseMoveEvent(), mousePressEvent(), and onExtentChanged().
|
protectedinherited |
The current mapdisplay cursor.
Definition at line 173 of file AbstractTool.h.
Referenced by te::edit::GeometriesUpdateTool::setCursor(), te::qt::widgets::AbstractTool::setCursor(), and te::qt::widgets::AbstractTool::~AbstractTool().
|
protectedinherited |
The default tool cursor.
Definition at line 172 of file AbstractTool.h.
Referenced by te::qt::widgets::AbstractTool::eventFilter(), te::qt::widgets::Pan::mouseReleaseEvent(), te::edit::GeometriesUpdateTool::setCursor(), and te::qt::widgets::AbstractTool::setCursor().
|
protectedinherited |
The map display associated with the tool.
Definition at line 171 of file AbstractTool.h.
Referenced by te::qt::widgets::AbstractTool::AbstractTool(), te::qt::widgets::Zoom::applyZoom(), te::edit::MergeGeometriesTool::buildEnvelope(), te::edit::EditInfoTool::buildEnvelope(), te::qt::widgets::PointMove::buildEnvelope(), te::edit::SubtractAreaTool::buildEnvelope(), te::edit::RotateGeometryTool::buildEnvelope(), te::edit::DeleteGeometryTool::buildEnvelope(), te::edit::DeletePartTool::buildEnvelope(), te::edit::AggregateAreaTool::buildEnvelope(), te::edit::MoveGeometryTool::buildEnvelope(), te::edit::DeleteGeometryByAreaTool::buildEnvelope(), te::edit::VertexTool::buildEnvelope(), te::edit::CreateLineTool::buildLine(), te::edit::CreatePointTool::buildPoint(), te::edit::SubtractAreaTool::buildPolygon(), te::edit::AggregateAreaTool::buildPolygon(), te::edit::DeleteGeometryByAreaTool::buildPolygon(), te::edit::CreatePolygonTool::buildPolygon(), te::qt::widgets::PolygonAcquire::clear(), clear(), te::qt::widgets::CoordTracking::CoordTracking(), te::edit::CreateLineTool::CreateLineTool(), te::edit::CreatePolygonTool::CreatePolygonTool(), te::edit::MergeGeometriesTool::draw(), te::edit::EditInfoTool::draw(), te::edit::SubtractAreaTool::draw(), te::qt::widgets::PointMove::draw(), te::edit::AggregateAreaTool::draw(), te::edit::RotateGeometryTool::draw(), te::edit::CreatePointTool::draw(), te::edit::DeleteGeometryByAreaTool::draw(), te::edit::CreateLineTool::draw(), te::edit::CreatePolygonTool::draw(), te::edit::MoveGeometryTool::draw(), te::edit::SplitPolygonTool::draw(), te::edit::VertexTool::draw(), te::qt::widgets::PanExtent::drawCurrentExtent(), SelectionTool::drawGeometries(), te::qt::widgets::PolygonAcquire::drawGeometry(), drawGeometry(), te::edit::MergeGeometriesTool::editingFinished(), te::edit::SubtractAreaTool::editingFinished(), te::edit::AggregateAreaTool::editingFinished(), te::qt::widgets::ZoomKeyboard::eventFilter(), te::qt::widgets::ZoomWheel::eventFilter(), te::qt::widgets::AbstractTool::eventFilter(), te::qt::widgets::Selection::executeSelection(), te::edit::DeleteGeometryByAreaTool::executeSelection(), te::edit::MergeGeometriesTool::getBaseOID(), te::edit::MergeGeometriesTool::getRefEnvelope(), Measure(), te::edit::SubtractAreaTool::mouseDoubleClickEvent(), te::edit::AggregateAreaTool::mouseDoubleClickEvent(), te::qt::widgets::PolygonAcquire::mouseDoubleClickEvent(), te::edit::CreatePolygonTool::mouseDoubleClickEvent(), te::edit::VertexTool::mouseDoubleClickEvent(), te::qt::plugins::mnt::ShowValuesTool::mouseMoveEvent(), te::qt::widgets::PanMiddleClick::mouseMoveEvent(), te::qt::widgets::ZoomClick::mouseMoveEvent(), te::qt::widgets::Pan::mouseMoveEvent(), te::qt::widgets::CoordTracking::mouseMoveEvent(), te::qt::widgets::RubberBand::mouseMoveEvent(), te::qt::widgets::PointMove::mouseMoveEvent(), te::qt::widgets::PointPicker::mouseMoveEvent(), te::qt::widgets::Zoom::mouseMoveEvent(), te::qt::widgets::PanExtent::mouseMoveEvent(), te::qt::widgets::PolygonAcquire::mouseMoveEvent(), te::edit::CreateLineTool::mouseMoveEvent(), te::edit::DeleteGeometryByAreaTool::mouseMoveEvent(), te::edit::CreatePolygonTool::mouseMoveEvent(), te::edit::MoveGeometryTool::mouseMoveEvent(), mouseMoveEvent(), te::edit::VertexTool::mouseMoveEvent(), te::edit::EditInfoTool::mousePressEvent(), te::qt::widgets::ZoomLeftAndRightClick::mousePressEvent(), te::qt::widgets::PanMiddleClick::mousePressEvent(), te::qt::widgets::Pan::mousePressEvent(), te::qt::widgets::ZoomClick::mousePressEvent(), te::qt::widgets::PointPicker::mousePressEvent(), te::qt::widgets::PanExtent::mousePressEvent(), te::qt::widgets::PolygonAcquire::mousePressEvent(), te::edit::CreateLineTool::mousePressEvent(), te::edit::CreatePointTool::mousePressEvent(), te::edit::DeleteGeometryTool::mousePressEvent(), te::edit::DeletePartTool::mousePressEvent(), te::edit::CreatePolygonTool::mousePressEvent(), te::edit::MoveGeometryTool::mousePressEvent(), te::edit::DeleteGeometryByAreaTool::mousePressEvent(), mousePressEvent(), te::qt::widgets::ReadPixelTool::mouseReleaseEvent(), SelectionTool::mouseReleaseEvent(), ReadPixelTool::mouseReleaseEvent(), te::mnt::ProfileTools::mouseReleaseEvent(), te::edit::SubtractAreaTool::mouseReleaseEvent(), te::qt::widgets::PanMiddleClick::mouseReleaseEvent(), te::qt::widgets::ZoomArea::mouseReleaseEvent(), te::qt::widgets::Pan::mouseReleaseEvent(), te::qt::widgets::ZoomClick::mouseReleaseEvent(), te::qt::widgets::PointPicker::mouseReleaseEvent(), te::qt::widgets::PointMove::mouseReleaseEvent(), te::qt::widgets::RubberBand::mouseReleaseEvent(), te::qt::widgets::ExtentAcquire::mouseReleaseEvent(), te::qt::widgets::Zoom::mouseReleaseEvent(), te::edit::AggregateAreaTool::mouseReleaseEvent(), te::edit::CreatePolygonTool::mouseReleaseEvent(), te::qt::widgets::Selection::mouseReleaseEvent(), te::qt::widgets::Info::mouseReleaseEvent(), onExtentChanged(), te::edit::MergeGeometriesTool::pickFeature(), te::edit::EditInfoTool::pickFeature(), te::edit::SubtractAreaTool::pickFeature(), te::edit::RotateGeometryTool::pickFeature(), te::edit::AggregateAreaTool::pickFeature(), te::edit::MoveGeometryTool::pickFeature(), te::edit::VertexTool::pickFeature(), te::edit::SplitPolygonTool::pickFeatures(), te::qt::widgets::PolygonAcquire::PolygonAcquire(), SelectionTool::SelectionTool(), te::edit::GeometriesUpdateTool::setCursor(), te::qt::widgets::AbstractTool::setCursor(), te::edit::SplitPolygonTool::splitPolygon(), te::edit::SubtractAreaTool::storeUndoCommand(), te::edit::AggregateAreaTool::storeUndoCommand(), te::edit::MoveGeometryTool::storeUndoCommand(), te::edit::CreatePolygonTool::storeUndoCommand(), te::edit::VertexTool::storeUndoCommand(), te::qt::widgets::ZoomKeyboard::ZoomKeyboard(), te::qt::widgets::AbstractTool::~AbstractTool(), te::qt::widgets::Info::~Info(), ~Measure(), te::qt::widgets::PolygonAcquire::~PolygonAcquire(), and SelectionTool::~SelectionTool().
|
protected |
A flag that indicates if the operations was finished.
Definition at line 148 of file Measure.h.
Referenced by keyPressEvent(), mouseDoubleClickEvent(), mouseMoveEvent(), and mousePressEvent().
|
protected |
The last position captured on mouse move event.
Definition at line 144 of file Measure.h.
Referenced by mouseMoveEvent(), and onExtentChanged().
|
protected |
The measure type.
Definition at line 145 of file Measure.h.
Referenced by drawGeometry(), drawLine(), mouseDoubleClickEvent(), and mousePressEvent().
|
protected |
The pen used to draw the path.
Definition at line 146 of file Measure.h.
Referenced by drawLine(), drawPolygon(), and Measure().
|
protected |
The unit symbol for the measure.
Definition at line 149 of file Measure.h.
Referenced by drawLine(), drawPolygon(), Measure(), and onExtentChanged().