Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qgeocameratiles_p_p.h
Go to the documentation of this file.
1// Copyright (C) 2018 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4#ifndef QGEOCAMERATILES_P_P_H
5#define QGEOCAMERATILES_P_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
19#include "qgeomaptype_p.h"
21#include "qgeotilespec_p.h"
22
23#include <QtCore/qlist.h>
24#include <QtCore/qset.h>
25
26#include <QtPositioning/private/qwebmercator_p.h>
27#include <QtPositioning/private/qdoublevector2d_p.h>
28#include <QtPositioning/private/qdoublevector3d_p.h>
29
30QT_BEGIN_NAMESPACE
31
32struct Q_LOCATION_EXPORT Frustum
33{
34 QDoubleVector3D apex;
35 QDoubleVector3D topLeftNear;
36 QDoubleVector3D topLeftFar;
37 QDoubleVector3D topRightNear;
38 QDoubleVector3D topRightFar;
39 QDoubleVector3D bottomLeftNear;
40 QDoubleVector3D bottomLeftFar;
41 QDoubleVector3D bottomRightNear;
42 QDoubleVector3D bottomRightFar;
43};
44
46
47class Q_LOCATION_EXPORT QGeoCameraTilesPrivate
48{
49public:
50 struct ClippedFootprint
51 {
52 ClippedFootprint()
53 {}
54 ClippedFootprint(const PolygonVector &left_, const PolygonVector &mid_, const PolygonVector &right_)
55 : left(left_), mid(mid_), right(right_)
56 {}
57 PolygonVector left;
58 PolygonVector mid;
59 PolygonVector right;
60 };
61
62 struct TileMap
63 {
64 TileMap();
65
66 void add(int tileX, int tileY);
67
68 QMap<int, QPair<int, int> > data;
69 };
70
71 void updateMetadata();
72 void updateGeometry();
73
74 Frustum createFrustum(double viewExpansion) const;
75 PolygonVector frustumFootprint(const Frustum &frustum) const;
76
77 QPair<PolygonVector, PolygonVector> splitPolygonAtAxisValue(const PolygonVector &polygon, int axis, double value) const;
78 ClippedFootprint clipFootprintToMap(const PolygonVector &footprint) const;
79
80 QList<QPair<double, int> > tileIntersections(double p1, int t1, double p2, int t2) const;
81 QSet<QGeoTileSpec> tilesFromPolygon(const PolygonVector &polygon) const;
82
83 static QGeoCameraTilesPrivate *get(QGeoCameraTiles *o) {
84 return o->d_ptr.get();
85 }
86
87public:
88 QString m_pluginString;
89 QGeoMapType m_mapType;
90 int m_mapVersion = -1;
91 QGeoCameraData m_camera;
92 QSize m_screenSize;
93 QRectF m_visibleArea;
94 int m_tileSize = 0;
95 QSet<QGeoTileSpec> m_tiles;
96
97 int m_intZoomLevel = 0;
98 int m_sideLength = 1;
99 bool m_dirtyGeometry = false;
100 bool m_dirtyMetadata = false;
101 double m_viewExpansion = 1.0;
102
103#ifdef QT_LOCATION_DEBUG
104 // updateGeometry
105 ClippedFootprint m_clippedFootprint;
106 PolygonVector m_frustumFootprint;
107 Frustum m_frustum;
108
109 // createFrustum
110 mutable QDoubleVector3D m_createFrustum_center;
111 mutable QDoubleVector3D m_createFrustum_eye;
112#endif
113};
114
115QT_END_NAMESPACE
116
117#endif // QGEOCAMERATILES_P_P_H
static QDoubleVector3D toDoubleVector3D(const QVector3D &in)
static bool appendZIntersects(const QDoubleVector3D &start, const QDoubleVector3D &end, double z, QList< QDoubleVector3D > &results)
static QVector3D toVector3D(const QDoubleVector3D &in)
static void addXOffset(PolygonVector &footprint, double xoff)
QList< QDoubleVector3D > PolygonVector