Initial commit

This commit is contained in:
torsten committed 2026-08-13 18:33:10 +02:00
commit b7d90b9afe
16245 files changed
+3396666

No files matched your search

@@ -0,0 +1,93 @@
/**
**
** @RDE_HEADER@
** Definition of rubberband class to define multi point feature geometry
** $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
**
** -----------------------------------------------------------------------------------------------
*/
#include "rubberband_smooth_line.h"
#include "rubberband_point_handle.h"
#include "drawable_smooth_path.h"
#include "rubberband_internal.h"
namespace SituationMap { namespace RB
{
struct RubberbandSmoothLine::InternalData
{
SituationMap::RefPointer<DrawableSmoothPath> _smoothLineItem;
}; /* RubberbandSmoothLine::InternalData*/
RubberbandSmoothLine::RubberbandSmoothLine( SituationMap::Map * map, QObject * parent )
: RubberbandMultiPointFeature(map,true,parent), _internal( new InternalData() )
{
} /* RubberbandSmoothLine::RubberbandSmoothLine */
RubberbandSmoothLine::~RubberbandSmoothLine()
{
delete _internal;
} /* RubberbandSmoothLine::~RubberbandSmoothLine */
void RubberbandSmoothLine::update()
{
QVector<RubberbandDrawable::RubberbandCoordinate> vertexVector;
vertexVector.reserve( Rubberband::_internal->_handleList.size() );
for (auto handle : qAsConst(Rubberband::_internal->_handleList))
{
RubberbandPointHandle * pointHandlePtr = dynamic_cast<RubberbandPointHandle*>(handle.get());
if (pointHandlePtr)
{
vertexVector.append( pointHandlePtr -> getCoordinate() );
}
}
if (vertexVector.size() > 2)
{
if (!_internal->_smoothLineItem)
{
_internal->_smoothLineItem = new DrawableSmoothPath( Rubberband::_internal->_mapView );
}
_internal->_smoothLineItem -> enableClosedLine( isClosedEnabled() );
_internal->_smoothLineItem -> setDrawColor( _drawColor );
_internal->_smoothLineItem -> setFillColor( _fillColor );
_internal->_smoothLineItem -> setVisibility( true );
_internal->_smoothLineItem -> setPath( vertexVector );
}
else if (_internal->_smoothLineItem) _internal->_smoothLineItem->setVisibility( false );
RubberbandMultiPointFeature::update();
} /* RubberbandSmoothLine::update */
} } /* namespace SituationMap::RB */