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 QSGMAPBOXGLNODE_H 39 #define QSGMAPBOXGLNODE_H 40 41 #include <QtQuick/QQuickWindow> 42 #include <QtQuick/QSGRenderNode> 43 #include <QtQuick/QSGSimpleTextureNode> 44 #include <QtQuick/private/qsgtexture_p.h> 45 #include <QtGui/QOpenGLFramebufferObject> 46 47 #include <QMapboxGL> 48 49 class QGeoMapMapboxGL; 50 51 class QSGMapboxGLTextureNode : public QSGSimpleTextureNode 52 { 53 public: 54 QSGMapboxGLTextureNode(const QMapboxGLSettings &, const QSize &, qreal pixelRatio, QGeoMapMapboxGL *geoMap); 55 56 QMapboxGL* map() const; 57 58 void resize(const QSize &size, qreal pixelRatio); 59 void render(QQuickWindow *); 60 61 private: 62 QScopedPointer<QMapboxGL> m_map; 63 QScopedPointer<QOpenGLFramebufferObject> m_fbo; 64 }; 65 66 class QSGMapboxGLRenderNode : public QSGRenderNode 67 { 68 public: 69 QSGMapboxGLRenderNode(const QMapboxGLSettings &, const QSize &, qreal pixelRatio, QGeoMapMapboxGL *geoMap); 70 71 QMapboxGL* map() const; 72 73 // QSGRenderNode 74 void render(const RenderState *state) override; 75 StateFlags changedStates() const override; 76 77 private: 78 QScopedPointer<QMapboxGL> m_map; 79 }; 80 81 #endif // QSGMAPBOXGLNODE_H 82