1 #pragma once 2 3 #include <set> 4 #include <string> 5 #include <vector> 6 #include <memory> 7 8 #include <mbgl/util/noncopyable.hpp> 9 10 namespace mbgl { 11 12 class BiDi; 13 class BiDiImpl; 14 15 std::u16string applyArabicShaping(const std::u16string&); 16 17 class BiDi : private util::noncopyable { 18 public: 19 BiDi(); 20 ~BiDi(); 21 22 std::vector<std::u16string> processText(const std::u16string&, std::set<std::size_t>); 23 24 private: 25 void mergeParagraphLineBreaks(std::set<std::size_t>&); 26 std::vector<std::u16string> applyLineBreaking(std::set<std::size_t>); 27 std::u16string getLine(std::size_t start, std::size_t end); 28 29 std::unique_ptr<BiDiImpl> impl; 30 }; 31 32 } // end namespace mbgl 33