/** ** ** @RDE_HEADER@ ** 2D matrix operations ** $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 .........: ** ** 22.06.2016, JT : First edition for use with Qt5 ** ** ----------------------------------------------------------------------------------------------- */ #pragma once #include #include #include namespace Esri { namespace ArcGISRuntime { class Geometry; } } namespace SituationMap { class Map; class AbstractMapObject; class CoordTranslationFunctor; namespace MathUtils { class SITUATIONMAP_EXPORT GeometryEngine { public: using Geometry = Esri::ArcGISRuntime::Geometry; static Geometry *createLine (Map *map, const QPointF &p1, const QPointF &p2); static Geometry *createPolyline(Map *map, const QVector &vertices); static Geometry *createPolyline(Map *map, const QList &vertices); static Geometry *createPolygon (Map *map, const QVector &vertices); static Geometry *createPolygon (Map *map, const QList &vertices); static void deleteGeometry(Geometry *geom); static bool contains(const Geometry &geom, const Geometry &hull); static bool contains(AbstractMapObject *mapObj, const Geometry &hull); static bool intersect(const Geometry &inputGeom, const Geometry &intersector); static bool intersect(AbstractMapObject *mapObj , const Geometry &intersector); /** Calculating a parallel line. @param mapCtFunctor CoordTranslationFunctor to translate coordinates from geographic to map coordinate system and vis versa. @param line Line to use as input, the coordinates are geograpihc coordinates. @param distance Distance in meter. */ static QVector parallelTranslation(SituationMap::CoordTranslationFunctor *mapCtFunctor, const QVector &line, double distance ); static QVector buffer(AbstractMapObject *mapObj, double distance); }; // GeometryEngine } // namespace MathUtils } // namespace SituationMap