diff --git a/.clang-tidy b/.clang-tidy index 2b1b8a0..b9925b4 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -26,6 +26,7 @@ Checks: > -misc-include-cleaner, -misc-no-recursion, -misc-non-private-member-variables-in-classes, + -misc-use-internal-linkage, -modernize-avoid-c-arrays, -modernize-use-trailing-return-type, -readability-convert-member-functions-to-static, diff --git a/.github/workflows/Android.yml b/.github/workflows/Android.yml index cee7aea..2e3b2cd 100644 --- a/.github/workflows/Android.yml +++ b/.github/workflows/Android.yml @@ -110,7 +110,7 @@ jobs: - name: Set up OpenJDK 17 uses: actions/setup-java@v4 with: - distribution: adopt + distribution: temurin java-version: 17 - name: Setup ninja diff --git a/CHANGELOG.md b/CHANGELOG.md index debafc9..fde719d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,35 @@ # Changelog +## v3.0.0 + +### ✨ New features + +- Completely reorganized the project structure into the `QMapLibre` namespace + and three libraries: `QMapLibre`, `QMapLibreLocation` and `QMapLibreWidgets`. +- Reference documentation now available at + https://maplibre.org/maplibre-native-qt/docs/. +- Built with Qt 6.5, 6.6 and 6.7 for all platforms and also Qt 5.15.2 for + macOS, Linux and Windows. +- QML configuration cleaned up, styles are now set with `maplibre.map.styles`. +- QML style parameters are also made available in C++. + Now imported using `import MapLibre 3.0`. +- QML plugins can be installed using a CMake helper function + `qmaplibre_location_setup_plugins`. +- Add ability to build as static libraries (#98). +- Add CMake presets for easier usage (#112). +- Support image coordinate change (#139). +- Add mouse events with coordinate to GLWidget (#141). +- Improve GeoJSON and image source handling (#164). + +### 🐞 Bug fixes + +- Improve handling of system ICU on Linux (#56). +- Allow to use as a CMake included project (#100). +- Make creation of Style with empty URL possible (#107). +- Set proper soversion (#117). +- Use less generic target names to allow usage as subproject (#127). +- Fix style filters setting (#163). + ## v2.1.0 ### ✨ New features diff --git a/docs/Building.md b/docs/Building.md index c68039c..89fd140 100644 --- a/docs/Building.md +++ b/docs/Building.md @@ -30,11 +30,55 @@ ninja ninja install ``` -See below for platform-specific instructions. +See [below](#platform-specific-build-instructions) for platform-specific instructions. @note It is recommended to use [CMake workflows](#using-cmake-workflows) as they are always up-to-date and cover all supported platforms. +## Using CMake workflows + +CMake workflow presets are provided for all supported platforms. +Run the following command in the root directory to use a preset: + +```shell +cmake --workflow --preset +``` + +for example + +```shell +cmake --workflow --preset macOS-ccache +``` + +will run the macOS build with `ccache` enabled. + +It is recommended to set `QT_ROOT_DIR` environment variable as the path +to the Qt installation to be used, mainly for mobile platforms to use +the correct Qt version. + +For Android, the `ANDROID_ABI` environment variable should be set. + +### Supported release workflows + +| Platform | Qt6 | Qt6 with ccache | Qt5 | Qt5 with ccache | +|----------|-----------|------------------|------------------|-------------------------| +| Linux | `Linux` | `Linux-ccache` | `Linux-legacy` | `Linux-legacy-ccache` | +| macOS | `macOS` | `macOS-ccache` | `macOS-legacy` | `macOS-legacy-ccache` | +| Windows | `Windows` | `Windows-ccache` | `Windows-legacy` | `Windows-legacy-ccache` | +| iOS | `iOS` | `iOS-ccache` | | | +| Android | `Android` | `Android-ccache` | | | +| WASM | `WASM` | `WASM-ccache` | | | + +### Special workflows + +| Platform | Workflow | Description | +|----------|----------------------|---------------------------------------------------------------------| +| Linux | `Linux-coverage` | Linux build with Qt6, `ccache` and code coverage | +| Linux | `Linux-internal-icu` | Linux build with Qt6 and internal ICU library (also with `-ccache`) | +| macOS | `macOS-clang-tidy` | macOS build with Qt6, `ccache` and `clang-tidy` | + +## Platform specific build instructions + ### Linux Release binaries are build with `-DCMAKE_BUILD_TYPE="Release"`. @@ -92,6 +136,7 @@ cmake ../maplibre-native-qt -G "Ninja Multi-Config" \ -DCMAKE_CONFIGURATION_TYPES="Release;Debug" \ -DCMAKE_C_COMPILER_LAUNCHER="ccache" \ -DCMAKE_CXX_COMPILER_LAUNCHER="ccache" \ + -DCMAKE_DEFAULT_CONFIGS="all" \ -DCMAKE_INSTALL_PREFIX="../install" ninja ninja install @@ -112,6 +157,7 @@ cmake ../maplibre-native-qt -G "Ninja Multi-Config" \ -DCMAKE_CONFIGURATION_TYPES="Release;Debug" \ -DCMAKE_C_COMPILER_LAUNCHER="ccache" \ -DCMAKE_CXX_COMPILER_LAUNCHER="ccache" \ + -DCMAKE_DEFAULT_CONFIGS="all" \ -DCMAKE_INSTALL_PREFIX="../install" \ -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \ -DCMAKE_OSX_DEPLOYMENT_TARGET="14.0" @@ -157,48 +203,6 @@ ninja ninja install ``` -## Using CMake workflows - -CMake workflow presets are provided for all supported platforms. -They can be simply used by running in the root directory of the repository: - -```shell -cmake --workflow --preset -``` - -for example - -```shell -cmake --workflow --preset macOS-ccache -``` - -will run the macOS build with `ccache` enabled. - -It is recommended to set `QT_ROOT_DIR` environment variable as the path -to the Qt installation to be used, mainly for mobile platforms to use -the correct Qt version. - -For Android, `ANDROID_ABI` environment variable should be set. - -### Supported release workflows - -| Platform | Qt6 | Qt6 with ccache | Qt5 | Qt5 with ccache | -|----------|-----------|------------------|------------------|-------------------------| -| Linux | `Linux` | `Linux-ccache` | `Linux-legacy` | `Linux-legacy-ccache` | -| macOS | `macOS` | `macOS-ccache` | `macOS-legacy` | `macOS-legacy-ccache` | -| Windows | `Windows` | `Windows-ccache` | `Windows-legacy` | `Windows-legacy-ccache` | -| iOS | `iOS` | `iOS-ccache` | | | -| Android | `Android` | `Android-ccache` | | | -| WASM | `WASM` | `WASM-ccache` | | | - -### Special workflows - -| Platform | Workflow | Description | -|----------|----------------------|---------------------------------------------------------------------| -| Linux | `Linux-coverage` | Linux build with Qt6, `ccache` and code coverage | -| Linux | `Linux-internal-icu` | Linux build with Qt6 and internal ICU library (also with `-ccache`) | -| macOS | `macOS-clang-tidy` | macOS build with Qt6, `ccache` and `clang-tidy` | -
| Previous | Next | diff --git a/docs/Documentation.md b/docs/Documentation.md index e45462a..807d5db 100644 --- a/docs/Documentation.md +++ b/docs/Documentation.md @@ -5,6 +5,9 @@ You would normally use this API in a Qt-based application. If you are interested in the internals of MapLibre Native you can also look at [Core C++ API](https://maplibre.org/maplibre-native/cpp/api/). +If not explicitly specified, all classes and functions are available +as of version 3.0 of the library. + The source code can be found [on GitHub](https://github.com/maplibre/maplibre-native-qt): ```shell diff --git a/docs/Doxyfile b/docs/Doxyfile index 07842b5..708ee56 100644 --- a/docs/Doxyfile +++ b/docs/Doxyfile @@ -952,6 +952,7 @@ WARN_LOGFILE = INPUT = \ ../src/core \ ../src/widgets \ + ../CHANGELOG.md \ location \ Documentation.md \ Building.md \ diff --git a/test/widgets/gl_tester.cpp b/test/widgets/gl_tester.cpp index 1739d5c..6cde942 100644 --- a/test/widgets/gl_tester.cpp +++ b/test/widgets/gl_tester.cpp @@ -38,7 +38,7 @@ void GLTester::initializeAnimation() { int GLTester::selfTest() { if (m_bearingAnimation) { m_bearingAnimation->setDuration(kAnimationDuration); - m_bearingAnimation->setEndValue(map()->bearing() + 360 * 4); + m_bearingAnimation->setEndValue(map()->bearing() + (360 * 4)); m_bearingAnimation->start(); }