Files
qt-migration-legatus/qt5-before/dlbo/Lts/Viewer/SituationMap/Rubberbands/rubberband_drawable.h
T
torstenandCopilot 7173785915 Qt6 Migration: Complete migration with DDS/RTI support and build validation
Major Changes:
- Merged latest Qt5 devel content from dlbo (292 files changed, 7 new dirs)
- Consolidated forward-declarations and include folders
- Removed unneeded modules per Niklas' repo check list

Build System Fixes:
- Fixed CMake VERSION_GREATER syntax in ParticipantManagement/CMakeLists.txt
- Added VLC packages (libvlc-dev, vlc-plugin-base) to docker_build.sh
- Added PostgreSQL dev packages (libpq-dev, postgresql-server-dev-all) to Dockerfile
- Fixed locale warnings (ANSI_X3.4-1968 → C.UTF-8)
- Fixed ArcGIS SDK path warnings when BUILD_ARCGIS=OFF

Code Generation Fixes:
- Fixed IDL enum collisions (PortType→CorePortType/DdsutPortType, PdmEventType)
- Fixed Grantlee template svc_translation.cpp.grantlee:
  - Changed {{ idl_enum.name }}_def:: to {{ idl_enum.name }}::
  - Fixed .underlying() calls for C++11 scoped enums (enum class)
- Removed generated files from repo (moc_*, *_dtc.h, *_ftc.h)

Validation:
- BUILD_RTI=ON: SUCCESS
- BUILD_RTI=OFF: SUCCESS
- C++17 standard maintained for RTI 7.7 compatibility
- Ubuntu 26.04 Docker environment verified

Remaining Warnings (expected):
- BgViewer, KDChart, KDReports, Poppler-Qt6 not found (optional features)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-09-15 18:20:26 +00:00

213 lines
6.8 KiB
Objective-C

/**
**
** @RDE_HEADER@
** Definition of base class for rubberband drawing objects
** $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 <QtCore/QObject>
#include <QtGui/QColor>
#include <arcgis/MapGraphicsView.h>
#include <arcgis/Point.h>
#include <Common/referenced.h>
#include <Common/situation_map_logging.h>
class QGraphicsScene;
namespace SituationMap { namespace RB
{
Esri::ArcGISRuntime::Point convert(const QPointF &point, const Esri::ArcGISRuntime::SpatialReference& spatialReference);
/**
@class RubberbandDrawable rubberband_drawable.h
@brief Base class of all rubberband drawables and handles for rubberband internal use.
*/
class RubberbandDrawable : public QObject, public SituationMap::Referenced
{
Q_OBJECT
public:
enum class ZBufferPlane
{
FrameHandle = 10,
Drawables = 20,
LineHandle = 30,
ArrowSymbol = 31,
PointHandle = 40,
Widget = 100
}; /* InputMethode */
/**
Manages scene and map coordinates.
*/
struct RubberbandCoordinate
{
QPointF _sceneCoordinate;
Esri::ArcGISRuntime::Point _mapCoordinate;
RubberbandCoordinate()
{}
explicit RubberbandCoordinate( const QPointF & sceneCoordinate)
{
updateSceneCoordinate( sceneCoordinate );
} /* RubberbandCoordinate */
explicit RubberbandCoordinate( Esri::ArcGISRuntime::MapGraphicsView * mapView, const QPointF & sceneCoordinate)
{
updateSceneCoordinate( mapView, sceneCoordinate );
} /* RubberbandCoordinate */
explicit RubberbandCoordinate( Esri::ArcGISRuntime::MapGraphicsView * mapView, const Esri::ArcGISRuntime::Point & mapCoordinate)
: _mapCoordinate(mapCoordinate)
{
mapToScene( mapView );
} /* RubberbandCoordinate */
inline QPointF mapToScene(Esri::ArcGISRuntime::MapGraphicsView * mapView)
{
if (!_mapCoordinate.isValid())
return QPointF();
const QPointF pixelCoordinate = mapView->locationToScreen(_mapCoordinate);
_sceneCoordinate = mapView->mapToScene( pixelCoordinate.x(), pixelCoordinate.y() );
return _sceneCoordinate;
} /* QPointF mapToScene(Esri::ArcGISRuntime::MapGraphicsView * mapView) */
inline void updateSceneCoordinate( Esri::ArcGISRuntime::MapGraphicsView * mapView, const QPointF & sceneCoordinate)
{
if (mapView)
{
_sceneCoordinate = sceneCoordinate;
QPoint pixelCoordinate = mapView->mapFromScene(sceneCoordinate);
_mapCoordinate = mapView->screenToLocation( pixelCoordinate.x(), pixelCoordinate.y() );
}
else updateSceneCoordinate( sceneCoordinate );
} /* void updateSceneCoordinate( Esri::ArcGISRuntime::MapGraphicsView * mapView, const QPointF & sceneCoordinate) */
inline void updateSceneCoordinate( const QPointF & sceneCoordinate )
{
_sceneCoordinate = sceneCoordinate;
_mapCoordinate = Esri::ArcGISRuntime::Point();
} /* void updateSceneCoordinate( const QPointF & sceneCoordinate ) */
bool isNull() const
{
return _sceneCoordinate.isNull();
}
}; /* RubberbandCoordinate */
/**
@name Construction & Destruction
@{
*/
explicit RubberbandDrawable( QGraphicsView *view );
explicit RubberbandDrawable( Esri::ArcGISRuntime::MapGraphicsView * );
explicit RubberbandDrawable( Esri::ArcGISRuntime::MapGraphicsView *, QGraphicsScene * );
~RubberbandDrawable();
/** @} */
inline bool isVisible() const { return _isVisible; }
inline void setVisibility(bool on = true) { _isVisible = on; updateGraphic(); }
inline void setDrawColor (const QColor & col) { _drawColor = col; updateGraphic(); }
inline void setFillColor (const QColor & col) { _fillColor = col; updateGraphic(); }
inline void setLineWidth(unsigned int width) { _lineWidth = width; updateGraphic(); }
inline void zBufferPlane( ZBufferPlane zPlane ) { _zBufferValue = (unsigned int) zPlane; }
inline void setZValue(qreal zValue) { _zValue = zValue; updateGraphic(); }
inline qreal zValue() const { return _zValue; }
protected:
QPointer<QGraphicsScene> _scene;
QPointer<Esri::ArcGISRuntime::MapGraphicsView> _mapView;
bool _isVisible;
QColor _drawColor;
QColor _fillColor;
unsigned int _lineWidth;
qreal _zBufferValue;
qreal _zValue{0}; // combine _zBufferValue and _zValue???
LOGGER_T _logger;
#ifdef ADJUST_COORDINATES_EVERY_PAINT_EVENT
bool eventFilter(QObject*, QEvent*) override;
#endif
virtual void updateGraphic() = 0;
void makeLineStyle( bool dottedLine, QPen & lineStyle );
inline void forceUpdateViewWidget() { _mapView->viewport()->update(); }
virtual void adjustCoordinates() = 0;
virtual void adjustWindow( const QRectF& ) = 0;
QColor transparentFillColor() const
{
QColor fillColor(_fillColor);
if (fillColor.alphaF() > 0.85)
{
fillColor.setAlphaF( fillColor.alphaF()*0.5 );
}
return fillColor;
} // QColor transparentFillColor()
protected slots:
void onDo_adjustCoordinates();
void onDo_adjustWindow(const QRectF & );
private:
void doConnecting();
}; /* RubberbandDrawable */
} } /* namespace SituationMap::RB */