#include #include #include namespace mbgl { class BiDiImpl { public: QString string; }; std::u16string applyArabicShaping(const std::u16string& input) { return input; } void BiDi::mergeParagraphLineBreaks(std::set& lineBreakPoints) { lineBreakPoints.insert(static_cast(impl->string.length())); } std::vector BiDi::applyLineBreaking(std::set lineBreakPoints) { mergeParagraphLineBreaks(lineBreakPoints); std::vector transformedLines; std::size_t start = 0; for (std::size_t lineBreakPoint : lineBreakPoints) { transformedLines.push_back(getLine(start, lineBreakPoint)); start = lineBreakPoint; } return transformedLines; } BiDi::BiDi() : impl(std::make_unique()) { } BiDi::~BiDi() = default; std::vector BiDi::processText(const std::u16string& input, std::set lineBreakPoints) { impl->string = QString::fromUtf16(reinterpret_cast(input.data()), int(input.size())); return applyLineBreaking(lineBreakPoints); } std::u16string BiDi::getLine(std::size_t start, std::size_t end) { auto utf16 = impl->string.mid(static_cast(start), static_cast(end - start)); return std::u16string(reinterpret_cast(utf16.utf16()), utf16.length()); } } // end namespace mbgl