File indexing completed on 2024-05-12 04:42:47

0001 /*
0002     SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #ifndef KPUBLICTRANSPORT_GEOJSON_P_H
0008 #define KPUBLICTRANSPORT_GEOJSON_P_H
0009 
0010 #include <vector>
0011 
0012 class QJsonObject;
0013 class QPointF;
0014 class QPolygonF;
0015 
0016 namespace KPublicTransport {
0017 
0018 /** GeoJSON utilities. */
0019 namespace GeoJson
0020 {
0021     /** Coordinate of a point geometry object. */
0022     QPointF readPoint(const QJsonObject &obj);
0023 
0024     /** Reads a line string object. */
0025     QPolygonF readLineString(const QJsonObject &obj);
0026 
0027     /** Outer path of a polygon or multi-polygon geometry object.
0028      *  Multiple outer polygons are united.
0029      */
0030     QPolygonF readOuterPolygon(const QJsonObject &obj);
0031     /** Outer paths of a polygon or multi-polygon geometry object. */
0032     std::vector<QPolygonF> readOuterPolygons(const QJsonObject &obj);
0033 
0034     /** Creates a line string object. */
0035     QJsonObject writeLineString(const QPolygonF &lineString);
0036 
0037     /** Create a polygon object. */
0038     QJsonObject writePolygon(const QPolygonF &polygon);
0039     /** Create a multi-polygon object. */
0040     QJsonObject writePolygons(const std::vector<QPolygonF> &polygons);
0041 }
0042 
0043 }
0044 
0045 #endif // KPUBLICTRANSPORT_GEOJSON_P_H