diff --git a/platform/qt/config.cmake b/platform/qt/config.cmake index 329431000..d8ede6b45 100644 --- a/platform/qt/config.cmake +++ b/platform/qt/config.cmake @@ -57,6 +57,10 @@ macro(mbgl_platform_test) target_add_mason_package(mbgl-test PRIVATE sqlite) target_link_libraries(mbgl-test + PRIVATE qmapboxgl ${MBGL_QT_LIBRARIES} ) endmacro() + +target_add_mason_package(qmapboxgl PRIVATE geojson) +target_add_mason_package(qmapboxgl PRIVATE rapidjson) diff --git a/platform/qt/include/QQuickMapboxGL b/platform/qt/include/QQuickMapboxGL deleted file mode 100644 index db109a1d3..000000000 --- a/platform/qt/include/QQuickMapboxGL +++ /dev/null @@ -1 +0,0 @@ -#include "qquickmapboxgl.hpp" diff --git a/platform/qt/include/QQuickMapboxGLMapParameter b/platform/qt/include/QQuickMapboxGLMapParameter deleted file mode 100644 index 603fb2bd5..000000000 --- a/platform/qt/include/QQuickMapboxGLMapParameter +++ /dev/null @@ -1 +0,0 @@ -#include "qquickmapboxglmapparameter.hpp" diff --git a/platform/qt/include/qmapbox.hpp b/platform/qt/include/qmapbox.hpp index 4975076ee..9de4a7041 100644 --- a/platform/qt/include/qmapbox.hpp +++ b/platform/qt/include/qmapbox.hpp @@ -84,6 +84,7 @@ typedef void (*CustomLayerRenderFunction)(void* context, const CustomLayerRender typedef void (*CustomLayerDeinitializeFunction)(void* context); Q_DECL_EXPORT void initializeGLExtensions(); +Q_DECL_EXPORT void registerTypes(); } // namespace QMapbox diff --git a/platform/qt/qmlapp/main.cpp b/platform/qt/qmlapp/main.cpp index 030f6cc4b..0dd8c96b7 100644 --- a/platform/qt/qmlapp/main.cpp +++ b/platform/qt/qmlapp/main.cpp @@ -1,11 +1,10 @@ +#include + #include #include #include #include -#include -#include - int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); @@ -14,8 +13,9 @@ int main(int argc, char *argv[]) app.setWindowIcon(QIcon(":icon.png")); #endif - qmlRegisterType("QQuickMapboxGL", 1, 0, "MapboxMap"); - qmlRegisterType("QQuickMapboxGL", 1, 0, "MapParameter"); + // Exposes the QQuickMapboxGL module so we + // can do `import QQuickMapboxGL 1.0`. + QMapbox::registerTypes(); QQmlApplicationEngine engine; engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); diff --git a/platform/qt/qt.cmake b/platform/qt/qt.cmake index bee8e3e27..e606750be 100644 --- a/platform/qt/qt.cmake +++ b/platform/qt/qt.cmake @@ -37,24 +37,26 @@ set(MBGL_QT_FILES PRIVATE platform/qt/src/http_request.cpp PRIVATE platform/qt/src/http_request.hpp PRIVATE platform/qt/src/image.cpp - PRIVATE platform/qt/src/qmapbox.cpp - PRIVATE platform/qt/src/qmapboxgl.cpp - PRIVATE platform/qt/src/qmapboxgl_p.hpp PRIVATE platform/qt/src/run_loop.cpp PRIVATE platform/qt/src/run_loop_impl.hpp PRIVATE platform/qt/src/string_stdlib.cpp PRIVATE platform/qt/src/timer.cpp PRIVATE platform/qt/src/timer_impl.hpp - - # Public headers - PRIVATE platform/qt/include/qmapbox.hpp - PRIVATE platform/qt/include/qmapboxgl.hpp ) include_directories( PRIVATE platform/qt/include ) +# Shared library +add_library(qmapboxgl SHARED + platform/qt/include/qmapbox.hpp + platform/qt/include/qmapboxgl.hpp + platform/qt/src/qmapbox.cpp + platform/qt/src/qmapboxgl.cpp + platform/qt/src/qmapboxgl_p.hpp +) + # C++ app add_executable(mbgl-qt platform/qt/app/main.cpp diff --git a/platform/qt/qt4.cmake b/platform/qt/qt4.cmake index 451edbc15..56e41e847 100644 --- a/platform/qt/qt4.cmake +++ b/platform/qt/qt4.cmake @@ -9,11 +9,11 @@ set(MBGL_QT_LIBRARIES PRIVATE Qt4::QtOpenGL ) -add_library(qmapboxgl SHARED) - target_link_libraries(qmapboxgl - PUBLIC mbgl-core + PRIVATE mbgl-core PRIVATE Qt4::QtCore + PRIVATE Qt4::QtGui + PRIVATE Qt4::QtOpenGL ) target_link_libraries(mbgl-qt diff --git a/platform/qt/qt5.cmake b/platform/qt/qt5.cmake index 45b82e031..687a041b1 100644 --- a/platform/qt/qt5.cmake +++ b/platform/qt/qt5.cmake @@ -11,17 +11,19 @@ QT5_ADD_RESOURCES(MBGL_QT_FILES platform/qt/qmapbox.qrc) set(MBGL_QT_LIBRARIES PRIVATE Qt5::Core PRIVATE Qt5::Gui + PRIVATE Qt5::Location PRIVATE Qt5::Network PRIVATE Qt5::OpenGL + PRIVATE Qt5::Quick ) -add_library(qmapboxgl SHARED - platform/qt/include/qquickmapboxgl.hpp - platform/qt/include/qquickmapboxglmapparameter.hpp - platform/qt/src/qquickmapboxgl.cpp - platform/qt/src/qquickmapboxglmapparameter.cpp - platform/qt/src/qquickmapboxglrenderer.cpp - platform/qt/src/qquickmapboxglrenderer.hpp +target_sources(qmapboxgl + PRIVATE platform/qt/src/qquickmapboxgl.cpp + PRIVATE platform/qt/src/qquickmapboxgl.hpp + PRIVATE platform/qt/src/qquickmapboxglmapparameter.cpp + PRIVATE platform/qt/src/qquickmapboxglmapparameter.hpp + PRIVATE platform/qt/src/qquickmapboxglrenderer.cpp + PRIVATE platform/qt/src/qquickmapboxglrenderer.hpp ) target_link_libraries(qmapboxgl diff --git a/platform/qt/src/async_task.cpp b/platform/qt/src/async_task.cpp index c376c1c37..79abd2945 100644 --- a/platform/qt/src/async_task.cpp +++ b/platform/qt/src/async_task.cpp @@ -1,7 +1,6 @@ -#include - #include "async_task_impl.hpp" +#include #include #include diff --git a/platform/qt/src/qmapbox.cpp b/platform/qt/src/qmapbox.cpp index a101eb498..7e7a3c5f8 100644 --- a/platform/qt/src/qmapbox.cpp +++ b/platform/qt/src/qmapbox.cpp @@ -1,12 +1,14 @@ -#include +#include "qmapbox.hpp" + #include +#include #include #include #include -#include - #if QT_VERSION >= 0x050000 +#include "qquickmapboxgl.hpp" +#include "qquickmapboxglmapparameter.hpp" #include #else #include @@ -73,4 +75,12 @@ Q_DECL_EXPORT void initializeGLExtensions() }); } +Q_DECL_EXPORT void registerTypes() +{ +#if QT_VERSION >= 0x050000 + qmlRegisterType("QQuickMapboxGL", 1, 0, "MapboxMap"); + qmlRegisterType("QQuickMapboxGL", 1, 0, "MapParameter"); +#endif +} + } diff --git a/platform/qt/src/qmapboxgl.cpp b/platform/qt/src/qmapboxgl.cpp index 74238bd24..103ed8325 100644 --- a/platform/qt/src/qmapboxgl.cpp +++ b/platform/qt/src/qmapboxgl.cpp @@ -1,3 +1,4 @@ +#include "qmapboxgl.hpp" #include "qmapboxgl_p.hpp" #include "qt_conversion.hpp" @@ -28,7 +29,6 @@ #include #include -#include #include #include #include diff --git a/platform/qt/src/qmapboxgl_p.hpp b/platform/qt/src/qmapboxgl_p.hpp index 106ce97d5..11b5f695c 100644 --- a/platform/qt/src/qmapboxgl_p.hpp +++ b/platform/qt/src/qmapboxgl_p.hpp @@ -1,11 +1,12 @@ #pragma once +#include "qmapboxgl.hpp" + #include #include #include #include -#include #include #include diff --git a/platform/qt/src/qquickmapboxgl.cpp b/platform/qt/src/qquickmapboxgl.cpp index f71f869c9..b17d8bfe3 100644 --- a/platform/qt/src/qquickmapboxgl.cpp +++ b/platform/qt/src/qquickmapboxgl.cpp @@ -1,11 +1,11 @@ +#include "qquickmapboxgl.hpp" + +#include "qmapbox.hpp" +#include "qquickmapboxglmapparameter.hpp" #include "qquickmapboxglrenderer.hpp" #include -#include -#include -#include - #include #include #include @@ -14,7 +14,6 @@ #include #include - namespace { static const QRegularExpression s_camelCase {"([a-z0-9])([A-Z])"}; diff --git a/platform/qt/include/qquickmapboxgl.hpp b/platform/qt/src/qquickmapboxgl.hpp similarity index 97% rename from platform/qt/include/qquickmapboxgl.hpp rename to platform/qt/src/qquickmapboxgl.hpp index 44878c246..64cc41bf7 100644 --- a/platform/qt/include/qquickmapboxgl.hpp +++ b/platform/qt/src/qquickmapboxgl.hpp @@ -1,17 +1,16 @@ -#ifndef QQUICKMAPBOXGL_H -#define QQUICKMAPBOXGL_H +#pragma once + +#include "qmapbox.hpp" +#include "qquickmapboxglmapparameter.hpp" #include -#include #include #include #include +#include #include -#include #include - -#include -#include +#include class QDeclarativeGeoServiceProvider; class QQuickItem; @@ -174,5 +173,3 @@ private: friend class QQuickMapboxGLRenderer; }; - -#endif // QQUICKMAPBOXGL_H diff --git a/platform/qt/src/qquickmapboxglmapparameter.cpp b/platform/qt/src/qquickmapboxglmapparameter.cpp index 68fe8fac8..abf6e5ff1 100644 --- a/platform/qt/src/qquickmapboxglmapparameter.cpp +++ b/platform/qt/src/qquickmapboxglmapparameter.cpp @@ -1,11 +1,10 @@ -#include "QQuickMapboxGLMapParameter" +#include "qquickmapboxglmapparameter.hpp" #include #include #include #include - QQuickMapboxGLMapParameter::QQuickMapboxGLMapParameter(QObject *parent) : QObject(parent) , m_metaPropertyOffset(metaObject()->propertyCount()) diff --git a/platform/qt/include/qquickmapboxglmapparameter.hpp b/platform/qt/src/qquickmapboxglmapparameter.hpp similarity index 86% rename from platform/qt/include/qquickmapboxglmapparameter.hpp rename to platform/qt/src/qquickmapboxglmapparameter.hpp index 914b8e679..1dca0cf55 100644 --- a/platform/qt/include/qquickmapboxglmapparameter.hpp +++ b/platform/qt/src/qquickmapboxglmapparameter.hpp @@ -1,5 +1,4 @@ -#ifndef QQUICKMAPBOXGLMAPPARAMETER_H -#define QQUICKMAPBOXGLMAPPARAMETER_H +#pragma once #include #include @@ -33,5 +32,3 @@ private: }; QML_DECLARE_TYPE(QQuickMapboxGLMapParameter) - -#endif // QQUICKMAPBOXGLMAPPARAMETER_H diff --git a/platform/qt/src/qquickmapboxglrenderer.cpp b/platform/qt/src/qquickmapboxglrenderer.cpp index 420804738..d550794d6 100644 --- a/platform/qt/src/qquickmapboxglrenderer.cpp +++ b/platform/qt/src/qquickmapboxglrenderer.cpp @@ -1,7 +1,7 @@ #include "qquickmapboxglrenderer.hpp" -#include -#include +#include "qmapboxgl.hpp" +#include "qquickmapboxgl.hpp" #include #include diff --git a/platform/qt/src/qquickmapboxglrenderer.hpp b/platform/qt/src/qquickmapboxglrenderer.hpp index fa9b81ec7..e0fc767d5 100644 --- a/platform/qt/src/qquickmapboxglrenderer.hpp +++ b/platform/qt/src/qquickmapboxglrenderer.hpp @@ -1,12 +1,12 @@ #pragma once +#include "qmapbox.hpp" +#include "qmapboxgl.hpp" + #include #include #include -#include -#include - class QGeoCoordinate; class QOpenGLFramebufferObject; class QSize; diff --git a/platform/qt/src/qt_geojson.hpp b/platform/qt/src/qt_geojson.hpp index fd2b689fe..07813623f 100644 --- a/platform/qt/src/qt_geojson.hpp +++ b/platform/qt/src/qt_geojson.hpp @@ -4,12 +4,12 @@ #include #include -#include -#include - #include #include +#include +#include + namespace mbgl { namespace style { namespace conversion { diff --git a/platform/qt/src/run_loop.cpp b/platform/qt/src/run_loop.cpp index d33eb9cda..1c199be9d 100644 --- a/platform/qt/src/run_loop.cpp +++ b/platform/qt/src/run_loop.cpp @@ -4,11 +4,10 @@ #include +#include #include #include -#include - namespace { using namespace mbgl::util; diff --git a/platform/qt/src/timer.cpp b/platform/qt/src/timer.cpp index 6d0ccb41d..a0c1328d6 100644 --- a/platform/qt/src/timer.cpp +++ b/platform/qt/src/timer.cpp @@ -1,11 +1,10 @@ -#include +#include "timer_impl.hpp" #include +#include #include -#include "timer_impl.hpp" - namespace mbgl { namespace util {