/** ** ** @RDE_HEADER@ ** Definition of rubberband class to define multi point feature geometry with an additional width coordinate ** $Id$ ** $HeadURL$ ** $Author$ ** ** ----------------------------------------------------------------------------------------------- ** ** Hardware-Environment: Intel-PC ** Software-Environment: Linux, Windows 7, Qt 5.7. ArcGISRuntimeQt 100 ** ** Language ........: C++ 11 ** ** ----------------------------------------------------------------------------------------------- ** ** Author ...........: Jörg Turla, SPD G, Tel. 3132 ** ** ----------------------------------------------------------------------------------------------- ** ** Notes .........: ** ** 7.12.2016, JT : First edition for use with Qt5 ** ** ----------------------------------------------------------------------------------------------- */ #pragma once #include "rubberband_multi_point_feature.h" namespace SituationMap { namespace RB { class RubberbandLineHandle; class RubberbandFrameHandle; /** @class RubberbandPolylineWidth rubberband_smooth_line.h @brief Implementation of a multi point feature rubberband with rounded edges. @see RubberbandFactory, Rubberband, RubberbandMultiPointFeature */ class SITUATIONMAP_EXPORT RubberbandPolylineWidth : public RubberbandMultiPointFeature { Q_OBJECT /** @name Construction & Destruction @{ */ friend class RubberbandFactory; explicit RubberbandPolylineWidth( SituationMap::Map * map, QObject * parent = nullptr ); public: virtual ~RubberbandPolylineWidth(); /** @} */ virtual QVector coordinateVector( CoordinateSystem cs = CoordinateSystem::Geo ) const override; virtual QPointF singleCoordinate( unsigned int idx = 0, CoordinateSystem cs = CoordinateSystem::Geo ) const override; virtual void setCoordinateVector( const QVector &, CoordinateSystem cs = CoordinateSystem::Geo ) override; 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: /* Forward declaration of InternalData to hold private member variables. Becareful the base class Rubberband has similary a class for internal data member with name "InternalData". Don't be confused it is not the same. */ struct InternalData; InternalData * _internal; void update() override; void buildWidthItem(const QPointF & mapPos1, const QPointF & mapPos2) const; void setUpWidthItem(const QPointF & mapPos) const; }; /* RubberbandSmoothLine */ } } /* namespace SituationMap::RB */