/** * @RDE_HEADER@ * GeometryModel - Renderer * $Id$ * $HeadURL$ * $Author$ */ #pragma once // Own #include #include #include #include "situation_map_export.h" // Qt #include namespace SituationMap { class Map; class AbstractMultiPointMapObject; class RenderMapObjectsVisitor; class SITUATIONMAP_EXPORT GeometryModelRendererEsri : public GeometryModelRenderer { Q_OBJECT private: friend class MapImpl; explicit GeometryModelRendererEsri(Map *map, const QString &layerName, GeometryModel &geometryModel, QObject *parent = nullptr); ~GeometryModelRendererEsri() = default; public: bool render() override; bool renderNode(const GeometryModel::Node &node) override; bool render(QPixmap &drawable) override; GeometryModel::Node getAssociatedNode(const AbstractMapObject *mapObject) override; bool getNodesPickable() const override; void setNodesPickable(bool nodesPickable) override; bool editorMode() const override; void setEditorMode(bool on) override; UniqueMapId getIdFromNode(const GeometryModel::Node &node) const override; protected: friend class RenderMapObjectsVisitor; bool drawNodesRecursive(const GeometryModel::Node &); void drawPolyline(const GeometryModel::Node &, const QString &layer, const QList &points, SituationMap::AbstractMapObject *mapObj, bool geoCoordinates = true); void drawParticipantSymbol( const GeometryModel::Node &, const QString &layer, SituationMap::AbstractMapObject *mapObj ); void drawDictionarySymbol ( const GeometryModel::Node &, const QString &layer, SituationMap::AbstractMapObject *mapObj ); void drawEllipse ( const GeometryModel::Node &, const QString &layer, SituationMap::AbstractMapObject *mapObj ); void drawLine ( const GeometryModel::Node &, const QString &layer, SituationMap::AbstractMapObject *mapObj ); void drawPolyline ( const GeometryModel::Node &, const QString &layer, SituationMap::AbstractMapObject *mapObj ); void drawRectangle ( const GeometryModel::Node &, const QString &layer, SituationMap::AbstractMapObject *mapObj ); void drawSpline ( const GeometryModel::Node &, const QString &layer, SituationMap::AbstractMapObject *mapObj ); void drawSymbol ( const GeometryModel::Node &, const QString &layer, SituationMap::AbstractMapObject *mapObj ); void drawText ( const GeometryModel::Node &, const QString &layer, SituationMap::AbstractMapObject *mapObj ); template uint setLineStyle(const GeometryModel::Node &p, MapObjectClass *objPtr) const; template void setFillStyle(const GeometryModel::Node &p, MapObjectClass *objPtr) const; bool m_editorMode; QTimer *m_delayedRenderTimer; QSet m_delayedRenderIds; protected slots: void onDelayedRenderNodes(); void onCleanupMapObjects(const SituationMap::GeometryModel::Node &node); void onRemoveMapObject(int uid); void onUpdate(const SituationMap::GeometryModel::Node &node, SituationMap::GeometryModel::Attribute att, bool coordsChanged); }; // GeometryModelRendererEsri }