diff options
author | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2016-12-12 16:50:48 +0200 |
---|---|---|
committer | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2016-12-12 22:34:52 +0200 |
commit | b65b2f1c299eb545ae0dab454c51f11c5833fdd8 (patch) | |
tree | dc5d610af16e4a4397bfc5dc7651073e1490fe03 /platform/qt | |
parent | c0e18ad80c56d6197cb0e5f1e29384ad54491dbb (diff) | |
download | qtlocation-mapboxgl-b65b2f1c299eb545ae0dab454c51f11c5833fdd8.tar.gz |
[qt] Skip ICU if WITH_QT_I18N is set
Diffstat (limited to 'platform/qt')
-rw-r--r-- | platform/qt/config.cmake | 12 | ||||
-rw-r--r-- | platform/qt/qt.cmake | 2 | ||||
-rw-r--r-- | platform/qt/src/bidi.cpp | 56 |
3 files changed, 67 insertions, 3 deletions
diff --git a/platform/qt/config.cmake b/platform/qt/config.cmake index f6b7d509f8..f2beedcfa2 100644 --- a/platform/qt/config.cmake +++ b/platform/qt/config.cmake @@ -2,7 +2,6 @@ include(platform/qt/qt.cmake) mason_use(sqlite VERSION 3.14.2) mason_use(gtest VERSION 1.7.0${MASON_CXXABI_SUFFIX}) -mason_use(icu VERSION 58.1) if(NOT WITH_QT_DECODERS) mason_use(libjpeg-turbo VERSION 1.5.0) @@ -10,6 +9,10 @@ if(NOT WITH_QT_DECODERS) mason_use(webp VERSION 0.5.1) endif() +if(NOT WITH_QT_I18N) + mason_use(icu VERSION 58.1) +endif() + macro(mbgl_platform_core) target_sources(mbgl-core ${MBGL_QT_FILES} @@ -40,7 +43,12 @@ macro(mbgl_platform_core) add_definitions(-DQT_IMAGE_DECODERS) endif() - target_add_mason_package(mbgl-core PRIVATE icu) + if(NOT WITH_QT_I18N) + target_sources(mbgl-core PRIVATE platform/default/bidi.cpp) + target_add_mason_package(mbgl-core PRIVATE icu) + else() + target_sources(mbgl-core PRIVATE platform/qt/src/bidi.cpp) + endif() endmacro() diff --git a/platform/qt/qt.cmake b/platform/qt/qt.cmake index c640ca5689..2950e1fb15 100644 --- a/platform/qt/qt.cmake +++ b/platform/qt/qt.cmake @@ -2,6 +2,7 @@ # support `mason` (i.e. Yocto). Do not add any `mason` macro. option(WITH_QT_DECODERS "Use builtin Qt image decoders" OFF) +option(WITH_QT_I18N "Use builtin Qt i18n support" OFF) option(WITH_QT_4 "Use Qt4 instead of Qt5" OFF) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -D__QT__") @@ -29,7 +30,6 @@ set(MBGL_QT_FILES # Misc PRIVATE platform/default/logging_stderr.cpp - PRIVATE platform/default/bidi.cpp # Thread pool PRIVATE platform/default/mbgl/util/default_thread_pool.cpp diff --git a/platform/qt/src/bidi.cpp b/platform/qt/src/bidi.cpp new file mode 100644 index 0000000000..99f09e8ef8 --- /dev/null +++ b/platform/qt/src/bidi.cpp @@ -0,0 +1,56 @@ +#include <memory> + +#include <mbgl/text/bidi.hpp> + +#include <QString> + +namespace mbgl { + +class BiDiImpl { +public: + QString string; +}; + +std::u16string applyArabicShaping(const std::u16string& input) { + QString utf16string = QString::fromStdU16String(input); + return utf16string.toStdU16String(); +} + +ProcessedBiDiText::ProcessedBiDiText(BiDi& p_bidi) : bidi(p_bidi) { +} + +void ProcessedBiDiText::mergeParagraphLineBreaks(std::set<int32_t>& lineBreakPoints) { + lineBreakPoints.insert(impl->string.length()); +} + +std::vector<std::u16string> +ProcessedBiDiText::applyLineBreaking(std::set<int32_t> lineBreakPoints) { + mergeParagraphLineBreaks(lineBreakPoints); + + std::vector<std::u16string> transformedLines; + int32_t start = 0; + for (int32_t lineBreakPoint : lineBreakPoints) { + transformedLines.push_back(bidi.getLine(start, lineBreakPoint)); + start = lineBreakPoint; + } + + return transformedLines; +} + +BiDi::BiDi() : impl(std::make_unique<BiDiImpl>()) +{ +} + +BiDi::~BiDi() { +} + +ProcessedBiDiText BiDi::processText(const std::u16string& input) { + impl->string = QString::fromStdU16String(input); + return ProcessedBiDiText(*this); +} + +std::u16string BiDi::getLine(int32_t start, int32_t end) { + return impl->string.mid(start, end - start).toStdU16String(); +} + +} // end namespace mbgl |