summaryrefslogtreecommitdiff
path: root/src/mbgl/text/bidi.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/text/bidi.hpp')
-rw-r--r--src/mbgl/text/bidi.hpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/mbgl/text/bidi.hpp b/src/mbgl/text/bidi.hpp
new file mode 100644
index 0000000000..59d306489c
--- /dev/null
+++ b/src/mbgl/text/bidi.hpp
@@ -0,0 +1,32 @@
+#pragma once
+
+#include <set>
+#include <string>
+#include <vector>
+#include <memory>
+
+#include <mbgl/util/noncopyable.hpp>
+
+namespace mbgl {
+
+class BiDi;
+class BiDiImpl;
+
+std::u16string applyArabicShaping(const std::u16string&);
+
+class BiDi : private util::noncopyable {
+public:
+ BiDi();
+ ~BiDi();
+
+ std::vector<std::u16string> processText(const std::u16string&, std::set<std::size_t>);
+
+private:
+ void mergeParagraphLineBreaks(std::set<std::size_t>&);
+ std::vector<std::u16string> applyLineBreaking(std::set<std::size_t>);
+ std::u16string getLine(std::size_t start, std::size_t end);
+
+ std::unique_ptr<BiDiImpl> impl;
+};
+
+} // end namespace mbgl