Files
qt5-legatus-legacy/Lts/Viewer/SituationMap/Utils/mouse_move_overlay.cpp
T
2026-08-13 18:33:10 +02:00

103 lines
1.8 KiB
C++
Executable File

/**
* @RDE_HEADER@
* MouseMoveOverlay
* $Id$
* $HeadURL$
* $Author$
*/
#include "mouse_move_overlay.h"
// Own
#include <MapImpl/map_impl.h>
// ESRI
#include <arcgis/Map.h>
#include <arcgis/CoordinateConversion.h>
#include <arcgis/GeometryEngine.h>
// Qt
#include <QDebug>
#include <QGraphicsSceneHoverEvent>
namespace SituationMap
{
class MouseMoveOverlay::Private
{
public:
Private() = default;
~Private() = default;
// ESRI data:
EsriRuntimeQt::Map *m_map = nullptr;
// OWN data:
SituationMap::MapImpl *m_mapImpl = nullptr;
}; // class MouseMoveOverlay::Private
//-----------------------------------------------------------------------------
MouseMoveOverlay::MouseMoveOverlay(MapImpl *mapImpl)
: QGraphicsItem()
, d(new Private)
{
qDebug() << LOGFUNCTION;
// object to be called:
d->m_mapImpl = mapImpl;
if (d->m_mapImpl)
d->m_map = d->m_mapImpl->getEsriMap();
setAcceptHoverEvents(true);
}
MouseMoveOverlay::~MouseMoveOverlay()
{
qDebug() << LOGFUNCTION;
delete d;
}
QRectF MouseMoveOverlay::boundingRect() const
{
if (d->m_map)
return QRect(0, 0, d->m_map->width(), d->m_map->height());
return QRect(); // fallback
}
void MouseMoveOverlay::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
// No need to paint
Q_UNUSED(painter)
Q_UNUSED(option)
Q_UNUSED(widget)
}
void MouseMoveOverlay::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{
// qDebug() << LOGFUNCTION;
if (d->m_map)
{
if (!d->m_map->isReady())
return;
QPointF scenePoint = event->scenePos();
int scenePointX = scenePoint.x();
int scenePointY = scenePoint.y();
if (scenePointX < 0 || scenePointY < 0)
return;
d->m_mapImpl->onHandleMouseMove(scenePointX, scenePointY);
}
}
} // namespace SituationMap