Files
qt5-legatus-legacy/Lts/Viewer/SituationMap/Rubberbands/rubberband_ellipse.h
T
2026-08-13 18:33:10 +02:00

96 lines
3.0 KiB
Objective-C
Executable File

/**
**
** @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<RubberbandDrawable> & 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 */