/** ** ** @RDE_HEADER@ ** Definition of base class for rubberband handles ** $Id$ ** $HeadURL$ ** $Author$ ** ** ----------------------------------------------------------------------------------------------- ** ** Hardware-Environment: Intel-PC ** Software-Environment: Windows 7, Qt 5.4. ArcGIS 10.2.5 ** ** Language ........: C++ 11 ** ** ----------------------------------------------------------------------------------------------- ** ** Author ...........: Jörg Turla, SPD G, Tel. 3132 ** ** ----------------------------------------------------------------------------------------------- ** ** Notes .........: ** ** 27.03.2015, JT : First edition for use with Qt5 ** ** ----------------------------------------------------------------------------------------------- */ #pragma once #include #include "rubberband_handle.h" class QGraphicsItem; class QGraphicsScene; namespace SituationMap { namespace RB { /** @class RubberbandPointHandle rubberband_point_handle.h @brief Implementation of a point handle for rubberband internal use. @see RubberbandHandle */ class RubberbandPointHandle : public RubberbandHandle { Q_OBJECT public: /** @name Construction & Destruction @{ */ RubberbandPointHandle( Esri::ArcGISRuntime::MapGraphicsView* , QGraphicsScene* , const QPointF & scenePosition ); RubberbandPointHandle( Esri::ArcGISRuntime::MapGraphicsView* , QGraphicsScene* , const Esri::ArcGISRuntime::Point & mapCoordinate ); RubberbandPointHandle( Esri::ArcGISRuntime::MapGraphicsView* , QGraphicsScene* , const QPointF & scenePosition , const QPixmap & icon ); RubberbandPointHandle( Esri::ArcGISRuntime::MapGraphicsView* , QGraphicsScene* , const Esri::ArcGISRuntime::Point & mapCoordinate , const QPixmap & icon ); ~RubberbandPointHandle(); /** @} */ void setIcon( const QPixmap & icon ); bool isPositionInside( const QPointF & scenePosition ) const override; virtual void updateCoordinate( const QPointF & scenePosition ); virtual void moveCoordinate( const QPointF & sceneDelta ); virtual void setCoordinate( const RubberbandCoordinate & ); virtual RubberbandCoordinate getCoordinate() const; QPointF getPixelCoordinate() const; inline void setSceneOffset(const QPointF & offset) { _sceneOffset = offset; } protected: QGraphicsItem * _pointSymbol; RubberbandCoordinate _coordinate; QPointF _sceneOffset; QPixmap * _iconPixmap; QGraphicsRectItem * _boundingRect; void updateGraphic() override; virtual void updateCoordinate(); void adjustCoordinates() override; void adjustWindow( const QRectF & ) override; private: QPointF getRotatedSceneOffset() const; void buildHandle( const QPointF & scenePosition ); }; /* RubberbandPointHandle */ } } /* namespace SituationMap::RB */