]> git.lyx.org Git - lyx.git/blobdiff - src/Bidi.h
Split pdf format as discussed on the list
[lyx.git] / src / Bidi.h
index cad9891de452792b8a84dd1621a6d6dd623a97a7..dfa779ae4947d13a4d4f24c6de9a1c0f99e15b05 100644 (file)
 #ifndef BIDI_H
 #define BIDI_H
 
-#include <config.h>
-
 #include "support/types.h"
+
 #include <vector>
 
+
+namespace lyx {
+
 class Buffer;
+class Cursor;
 class Paragraph;
 class Row;
-class LyXFont;
+class Font;
 
 
 /// bidi stuff
-struct  Bidi {
+class Bidi {
+public:
        ///
        bool isBoundary(Buffer const &, Paragraph const & par,
-                       lyx::pos_type pos) const;
+                       pos_type pos) const;
        ///
        bool isBoundary(Buffer const &, Paragraph const & par,
-                               lyx::pos_type pos, LyXFont const & font) const;
+                               pos_type pos, Font const & font) const;
        ///
-       lyx::pos_type log2vis(lyx::pos_type pos) const;
+       pos_type log2vis(pos_type pos) const;
        /** Maps positions in the logical string to positions
         *  in visual string.
         */
-       lyx::pos_type vis2log(lyx::pos_type pos) const;
+       pos_type vis2log(pos_type pos) const;
        ///
-       lyx::pos_type level(lyx::pos_type pos) const;
+       pos_type level(pos_type pos) const;
        ///
-       bool inRange(lyx::pos_type pos) const;
+       bool inRange(pos_type pos) const;
        /// same_direction?
        bool same_direction() const;
        ///
@@ -50,17 +54,25 @@ private:
        ///
        bool same_direction_;
        ///
-       std::vector<lyx::pos_type> log2vis_list_;
+       std::vector<pos_type> log2vis_list_;
        /** Maps positions in the visual string to positions
         *  in logical string.
         */
-       std::vector<lyx::pos_type> vis2log_list_;
+       std::vector<pos_type> vis2log_list_;
        ///
-       std::vector<lyx::pos_type> levels_;
+       std::vector<pos_type> levels_;
        ///
-       lyx::pos_type start_;
+       pos_type start_;
        ///
-       lyx::pos_type end_;
+       pos_type end_;
 };
 
+/// Should interpretation of the arrow keys be reversed?
+bool reverseDirectionNeeded(Cursor const & cur);
+
+/// Is current paragraph in RTL mode?
+bool isWithinRtlParagraph(Cursor const & cur);
+
+} // namespace lyx
+
 #endif // BIDI_H