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