/** ** ** @RDE_HEADER@ ** Definition of rubberband class to define point feature geoemtry ** $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 .........: ** ** 17.06.2015, JT : First edition for use with Qt5 ** ** ----------------------------------------------------------------------------------------------- */ #pragma once #include "rubberband_rectangle.h" namespace SituationMap { namespace RB { /** @class RubberbandEllipse rubberband_ellipse.h @brief Implementation of a rubberband to input ellipses and circles @see Rubberband, RubberbandRectangle */ class SITUATIONMAP_EXPORT RubberbandEllipse : public RubberbandRectangle { Q_OBJECT /** @name Construction & Destruction @{ */ friend class RubberbandFactory; explicit RubberbandEllipse( SituationMap::Map * map, QObject * parent = nullptr ); public: virtual ~RubberbandEllipse(); RubberbandEllipse(const RubberbandEllipse &) = delete; RubberbandEllipse & operator = (const RubberbandEllipse &) = delete; /** @} */ void setSectorStart( qreal sinPhi, qreal cosPhi ); void setSectorEnd( qreal sinPhi, qreal cosPhi ); QPointF getRotatedPoint(QPointF sector)const; bool hasSector() const; QPointF sectorStart() const; QPointF sectorEnd() const; void enableSector( bool on = true ); bool isSectorEnabled() const; void setSectorAngleFixed(bool on); // true: start and end sectors positon can't be modifed bool isSectorFixedAngeEnabled() const; bool selectAction ( AbstractEventDispatcher * causer, int x, int y ) override; bool setCoordinateAction ( AbstractEventDispatcher * causer, int x, int y ) override; bool movePickedAction ( AbstractEventDispatcher * causer, int x, int y ) override; bool moveAction ( AbstractEventDispatcher * causer, int x, int y ) override; protected: void updateSectorHandles(); void update() override; struct InternalData; InternalData * _internal; void buildTmpConstruction( SituationMap::RefPointer & tmpGraphic, QPointF & start, QPointF & end ) override; void getTmpConstructionParameter( const QPointF & start, const QPointF & end, QPointF & sceneCenter, qreal & sceneWidth, qreal & sceneHeight ) override; }; /* RubberbandPointFeature */ } } /* namespace SituationMap::RB */