/** ** ** @RDE_HEADER@ ** Definition of rubberband class to define point feature geometry in 3d ** $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_3d.h" namespace SituationMap { namespace RB { /** @class RubberbandPointFeature rubberband_point_feature.h @brief Implementation of a rubberband to input single coodinates for building point features @see Rubberband */ class SITUATIONMAP_EXPORT RubberbandPointFeature3D : public Rubberband3D { Q_OBJECT /** @name Construction & Destruction @{ */ friend class RubberbandFactory; explicit RubberbandPointFeature3D( SituationMap::Map * map, QObject * parent = nullptr, bool isActive = true ); public: ~RubberbandPointFeature3D(); /** @} */ bool selectAction ( AbstractEventDispatcher * causer, int x, int y ) override; bool setCoordinateAction ( AbstractEventDispatcher * causer, int x, int y ) override; bool moveAction ( AbstractEventDispatcher * causer, int x, int y ) override; bool movePickedAction ( AbstractEventDispatcher * causer, int x, int y ) override; bool contextMenuAction ( AbstractEventDispatcher * causer, int x, int y ) override; bool completeStateAction ( AbstractEventDispatcher * causer, int x, int y ) override; bool deleteAction ( AbstractEventDispatcher * causer, int x, int y ) override; bool undoAction ( AbstractEventDispatcher * causer, int x, int y ) override; unsigned int coordinateCount() const override; QVector coordinateVector( CoordinateSystem cs = CoordinateSystem::Geo ) const override; QPointF singleCoordinate( unsigned int idx = 0, CoordinateSystem cs = CoordinateSystem::Geo ) const override; void setCoordinateVector( const QVector & coordinateVector, CoordinateSystem cs = CoordinateSystem::Geo ) override; Point3D singleCoordinate3D( unsigned int idx = 0, CoordinateSystem cs = CoordinateSystem::Geo ) const override; QVector coordinateVector3D( CoordinateSystem cs = CoordinateSystem::Geo ) const override; void setCoordinateVector( const QVector & coordinateVector, CoordinateSystem cs = CoordinateSystem::Geo ) override; void enableModificationState(); protected: virtual bool buttonProxyActive( const QPointF & scenePos) const { Q_UNUSED(scenePos); return false; } void update() override; /* Forward declaration of internal container class for member variables. The derived classes of Rubberband often have also a declaration of InternalData for there own internal members. */ struct InternalData; InternalData * _internal; protected slots: void onMapPosition( const Point3D &mapCoordinate ); }; /* RubberbandPointFeature3D */ } } /* namespace SituationMap::RB */