110 lines
2.9 KiB
C++
Executable File
110 lines
2.9 KiB
C++
Executable File
|
|
/**
|
|
**
|
|
** @RDE_HEADER@
|
|
** Implementation of line drawables
|
|
** $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 .........:
|
|
**
|
|
** 06.08.2015, JT : First edition for use with Qt5
|
|
**
|
|
** -----------------------------------------------------------------------------------------------
|
|
*/
|
|
|
|
#include "drawable_line.h"
|
|
|
|
#include <QtWidgets/QGraphicsLineItem>
|
|
|
|
|
|
namespace SituationMap { namespace RB
|
|
{
|
|
|
|
DrawableLine::DrawableLine(Esri::ArcGISRuntime::MapGraphicsView * map)
|
|
: RubberbandDrawable(map)
|
|
, _lineItem(nullptr)
|
|
, _lineStyle()
|
|
, _dottedLine(false)
|
|
{
|
|
_lineItem = new QGraphicsLineItem();
|
|
_scene -> addItem( _lineItem );
|
|
|
|
makeLineStyle( _dottedLine, _lineStyle );
|
|
_lineItem -> setPen( _lineStyle );
|
|
|
|
} /* DrawableLine::DrawableLine */
|
|
|
|
|
|
DrawableLine::DrawableLine(Esri::ArcGISRuntime::MapGraphicsView * map, QGraphicsScene * scene)
|
|
: RubberbandDrawable(map, scene)
|
|
, _lineItem(nullptr)
|
|
, _lineStyle()
|
|
, _dottedLine(false)
|
|
{
|
|
_lineItem = new QGraphicsLineItem();
|
|
_scene -> addItem( _lineItem );
|
|
makeLineStyle( _dottedLine, _lineStyle );
|
|
_lineItem -> setPen( _lineStyle );
|
|
|
|
} /* DrawableLine::DrawableLine */
|
|
|
|
DrawableLine::~DrawableLine()
|
|
{
|
|
if (_scene)
|
|
{
|
|
if (_lineItem)
|
|
{
|
|
_scene->removeItem(_lineItem);
|
|
delete _lineItem;
|
|
}
|
|
}
|
|
_lineItem = nullptr;
|
|
} /* DrawableLine::~DrawableLine */
|
|
|
|
|
|
void DrawableLine::setLine( const RubberbandDrawable::RubberbandCoordinate & p1, const RubberbandDrawable::RubberbandCoordinate & p2 )
|
|
{
|
|
_lineCoordinates[0] = p1;
|
|
_lineCoordinates[1] = p2;
|
|
updateGraphic();
|
|
} /* DrawableLine::setPath */
|
|
|
|
|
|
void DrawableLine::updateGraphic()
|
|
{
|
|
_lineCoordinates[0].mapToScene(_mapView);
|
|
_lineCoordinates[1].mapToScene(_mapView);
|
|
|
|
qreal x1 = _lineCoordinates[0]._sceneCoordinate.x();
|
|
qreal y1 = _lineCoordinates[0]._sceneCoordinate.y();
|
|
qreal x2 = _lineCoordinates[1]._sceneCoordinate.x();
|
|
qreal y2 = _lineCoordinates[1]._sceneCoordinate.y();
|
|
|
|
makeLineStyle( _dottedLine, _lineStyle );
|
|
|
|
_lineItem -> setLine( x1,y1,x2,y2 );
|
|
_lineItem -> setPen( _lineStyle );
|
|
_lineItem -> setVisible( _isVisible );
|
|
|
|
} /* DrawableLine::updateGraphic */
|
|
|
|
void DrawableLine::adjustCoordinates() { updateGraphic(); }
|
|
void DrawableLine::adjustWindow( const QRectF& ) { updateGraphic(); }
|
|
|
|
} } /* namespace SituationMap::RB */
|