Files
qt-migration-legatus/qt5-before/dlbo/Lts/Viewer/SituationMap/Rubberbands/rubberband_arrow.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

131 lines
4.6 KiB
Objective-C

/**
**
** @RDE_HEADER@
** Definition of rubberband class to define multi point feature geoemtry with Arrow
** $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 .........:
**
** 21.08.2015, JT : First edition for use with Qt5
**
** -----------------------------------------------------------------------------------------------
*/
#pragma once
#include "rubberband_multi_point_feature.h"
namespace SituationMap { namespace RB
{
class RubberbandLineHandle;
class RubberbandFrameHandle;
/**
@class RubberbandArrow rubberband_arrow.h
@brief Implementation of a rubberband for lines with arrow.
@see RubberbandFactory, Rubberband, RubberbandMultiPointFeature
Implementation of rubberbands used to input corridors. There are two different modes \c InputCenterLine and \c InputBoundary. In the
InputCenterLine mode the center line of the corridor has to be defined. The rubberband displays then the border geometry.
In the InputBoundary mode one side of the border has to be defined. The \c coordinateVector methodes always working on the input geometry.
*/
class SITUATIONMAP_EXPORT RubberbandArrow : public RubberbandMultiPointFeature
{
Q_OBJECT
public:
/**
@name Construction & Destruction
@{
*/
private:
friend class RubberbandFactory;
explicit RubberbandArrow( SituationMap::Map * map, QObject * parent = nullptr );
public:
~RubberbandArrow();
/** @} */
/**
Sets coordinates to modify to internal coordinate list.
@param coordinateVec List of coordinates to modify.
@param cs Defines the coordinate system of returned coordinates.
*/
void setCoordinateVector( const QVector<QPointF> & coordinateVec, CoordinateSystem cs = CoordinateSystem::Geo ) override;
/**
Sets coordinates to modify to internal coordinate list. In \c InputCenterLine mode the coordinates will be interpreted as
center line of the corridor. In \c InputBoundary the coordinates are defining one border. Id \c corridorWidth is negative
the coordinates are the right border otherwise the left one.
@param coordinateVec List of coordinates to modify.
@param arrowHalfWidth Half width of arrow in pixel.
@param arrowLength Length of arrow in pixel.
@param cs Defines the coordinate system of returned coordinates.
*/
void setCoordinateVectorArrow(const QVector<QPointF> & coordinateVec, unsigned int arrowHalfWidth, unsigned int arrowLength, CoordinateSystem cs = CoordinateSystem::Geo );
/**
Return the width of the corridor.
*/
unsigned int arrowHalfWidth() const;
unsigned int arrowLength() 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;
bool completeStateAction ( AbstractEventDispatcher * causer, int x, int y ) override;
protected:
/*
Forward declaration of InternalData to hold private member variables. Becareful the base class Rubberband
has similary a class for internal data member with name "InternalData". Don't be confused it is not the same.
*/
struct InternalData;
InternalData * _internal;
unsigned int _arrowSceneHalfWidth;
unsigned int _arrowSceneLength;
void update() override;
void updateArrowPath();
void updateHandleScenePosition();
void constructArrow( const QPointF & p );
void constructArrowHandle();
QPointF getArrowHandleScenePosition();
QPointF getArrowHandlePosition();
}; /* RubberbandCorridor */
} } /* namespace SituationMap::RB */