[qt] Skip ICU if WITH_QT_I18N is set

This commit is contained in:
Bruno de Oliveira Abinader
2016-12-12 16:50:48 +02:00
parent c0e18ad80c
commit b65b2f1c29
4 changed files with 69 additions and 3 deletions

View File

@@ -389,6 +389,7 @@ $(QT_BUILD): $(BUILD_DEPS)
-DMASON_PLATFORM=$(BUILD_PLATFORM) \
-DMASON_PLATFORM_VERSION=$(BUILD_PLATFORM_VERSION) \
-DWITH_QT_DECODERS=${WITH_QT_DECODERS} \
-DWITH_QT_I18N=${WITH_QT_I18N} \
-DWITH_QT_4=${WITH_QT_4} \
-DWITH_CXX11ABI=$(shell scripts/check-cxx11abi.sh) \
-DWITH_COVERAGE=${WITH_COVERAGE} \
@@ -404,6 +405,7 @@ $(MACOS_QT_PROJ_PATH): $(BUILD_DEPS)
-DMASON_PLATFORM=$(BUILD_PLATFORM) \
-DMASON_PLATFORM_VERSION=$(BUILD_PLATFORM_VERSION) \
-DWITH_QT_DECODERS=${WITH_QT_DECODERS} \
-DWITH_QT_I18N=${WITH_QT_I18N} \
-DWITH_QT_4=${WITH_QT_4} \
-DWITH_CXX11ABI=$(shell scripts/check-cxx11abi.sh) \
-DWITH_COVERAGE=${WITH_COVERAGE} \

View File

@@ -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()

View File

@@ -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

56
platform/qt/src/bidi.cpp Normal file
View File

@@ -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