/** ** ** @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 "rubberband_drawable.h" namespace SituationMap { namespace RB { /** @class RubberbandHandle rubberband_handle.h @brief Base class of all rubberband handles for rubberband internal use. */ class RubberbandHandle : public RubberbandDrawable { Q_OBJECT public: /** @name Construction & Destruction @{ */ explicit RubberbandHandle( QGraphicsView * ); explicit RubberbandHandle( Esri::ArcGISRuntime::MapGraphicsView * ); explicit RubberbandHandle( Esri::ArcGISRuntime::MapGraphicsView *, QGraphicsScene * ); ~RubberbandHandle(); /** @} */ virtual bool isPositionInside( const QPointF & scenePosition ) const = 0; inline bool isSelected() const { return _isSelected; } inline void setSelection( bool on = true ) { _isSelected = _isSelectable && on; updateGraphic(); } inline bool isSelectable() const { return _isSelectable; } inline void setSelectable(bool on = true) { _isSelectable = on; if (!on) { _isSelected = false; updateGraphic(); } } inline void setSelectionColor( const QColor & col ) { _selectionColor = col; updateGraphic(); } inline void setUserData( void * ptr ) { _userData = ptr; } inline void* userData() { return _userData; } inline unsigned int pickingRatio() const { return _pickingRatio; } inline void setPickingRatio(unsigned int value) { if (value > 5) _pickingRatio = value; } inline bool isFirst() const { return _is_first; } inline void setIsFirst(bool on = true) { _is_first = on; } protected: void updateGraphic() override = 0; void adjustCoordinates() override = 0; void adjustWindow( const QRectF& ) override = 0; unsigned int _pickingRatio; bool _isSelected; bool _isSelectable; QColor _selectionColor; bool _is_first{false}; private: void * _userData; signals: void adjusted(); }; /* RubberbandHandle */ } } /* namespace SituationMap::RB */