1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2017 The Qt Company Ltd. 4 ** Copyright (C) 2017 Mapbox, Inc. 5 ** Contact: http://www.qt.io/licensing/ 6 ** 7 ** This file is part of the QtLocation module of the Qt Toolkit. 8 ** 9 ** $QT_BEGIN_LICENSE:LGPL3$ 10 ** Commercial License Usage 11 ** Licensees holding valid commercial Qt licenses may use this file in 12 ** accordance with the commercial license agreement provided with the 13 ** Software or, alternatively, in accordance with the terms contained in 14 ** a written agreement between you and The Qt Company. For licensing terms 15 ** and conditions see http://www.qt.io/terms-conditions. For further 16 ** information use the contact form at http://www.qt.io/contact-us. 17 ** 18 ** GNU Lesser General Public License Usage 19 ** Alternatively, this file may be used under the terms of the GNU Lesser 20 ** General Public License version 3 as published by the Free Software 21 ** Foundation and appearing in the file LICENSE.LGPLv3 included in the 22 ** packaging of this file. Please review the following information to 23 ** ensure the GNU Lesser General Public License version 3 requirements 24 ** will be met: https://www.gnu.org/licenses/lgpl.html. 25 ** 26 ** GNU General Public License Usage 27 ** Alternatively, this file may be used under the terms of the GNU 28 ** General Public License version 2.0 or later as published by the Free 29 ** Software Foundation and appearing in the file LICENSE.GPL included in 30 ** the packaging of this file. Please review the following information to 31 ** ensure the GNU General Public License version 2.0 requirements will be 32 ** met: http://www.gnu.org/licenses/gpl-2.0.html. 33 ** 34 ** $QT_END_LICENSE$ 35 ** 36 ****************************************************************************/ 37 38 #ifndef QGEOMAPMAPBOXGL_P_H 39 #define QGEOMAPMAPBOXGL_P_H 40 41 #include <QtCore/QHash> 42 #include <QtCore/QList> 43 #include <QtCore/QSharedPointer> 44 #include <QtCore/QTimer> 45 #include <QtCore/QVariant> 46 #include <QtCore/QRectF> 47 #include <QtLocation/private/qgeomap_p_p.h> 48 #include <QtLocation/private/qgeomapparameter_p.h> 49 50 class QMapboxGL; 51 class QMapboxGLStyleChange; 52 53 class QGeoMapMapboxGLPrivate : public QGeoMapPrivate 54 { 55 Q_DECLARE_PUBLIC(QGeoMapMapboxGL) 56 57 public: 58 QGeoMapMapboxGLPrivate(QGeoMappingManagerEngineMapboxGL *engine); 59 60 ~QGeoMapMapboxGLPrivate(); 61 62 QSGNode *updateSceneGraph(QSGNode *oldNode, QQuickWindow *window); 63 64 void addParameter(QGeoMapParameter *param) override; 65 void removeParameter(QGeoMapParameter *param) override; 66 67 QGeoMap::ItemTypes supportedMapItemTypes() const override; 68 void addMapItem(QDeclarativeGeoMapItemBase *item) override; 69 void removeMapItem(QDeclarativeGeoMapItemBase *item) override; 70 71 /* Data members */ 72 enum SyncState : int { 73 NoSync = 0, 74 ViewportSync = 1 << 0, 75 CameraDataSync = 1 << 1, 76 MapTypeSync = 1 << 2, 77 VisibleAreaSync = 1 << 3 78 }; 79 Q_DECLARE_FLAGS(SyncStates, SyncState); 80 81 QMapboxGLSettings m_settings; 82 bool m_useFBO = true; 83 bool m_developmentMode = false; 84 QString m_mapItemsBefore; 85 86 QTimer m_refresh; 87 bool m_shouldRefresh = true; 88 bool m_warned = false; 89 bool m_threadedRendering = false; 90 bool m_styleLoaded = false; 91 92 SyncStates m_syncState = NoSync; 93 94 QList<QSharedPointer<QMapboxGLStyleChange>> m_styleChanges; 95 96 protected: 97 void changeViewportSize(const QSize &size) override; 98 void changeCameraData(const QGeoCameraData &oldCameraData) override; 99 void changeActiveMapType(const QGeoMapType mapType) override; 100 101 void setVisibleArea(const QRectF &visibleArea) override; 102 QRectF visibleArea() const override; 103 104 private: 105 Q_DISABLE_COPY(QGeoMapMapboxGLPrivate); 106 107 void syncStyleChanges(QMapboxGL *map); 108 void threadedRenderingHack(QQuickWindow *window, QMapboxGL *map); 109 110 QRectF m_visibleArea; 111 }; 112 113 Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoMapMapboxGLPrivate::SyncStates) 114 115 #endif // QGEOMAPMAPBOXGL_P_H 116