]> git.lyx.org Git - lyx.git/blobdiff - src/Bidi.h
Fix thinko in loop detection
[lyx.git] / src / Bidi.h
index 5287b1455c508f0526fe93b2c82108f31bd422d8..c406a7a2b52ed995ab5e5f8f0f8a1be2c5f8524f 100644 (file)
 #define BIDI_H
 
 #include "support/types.h"
+
 #include <vector>
 
 
 namespace lyx {
 
 class Buffer;
+class Cursor;
 class Paragraph;
 class Row;
-class LyXFont;
+class Font;
 
 
 /// bidi stuff
@@ -32,20 +34,28 @@ public:
                        pos_type pos) const;
        ///
        bool isBoundary(Buffer const &, Paragraph const & par,
-                               pos_type pos, LyXFont const & font) const;
-       ///
+                               pos_type pos, Font const & font) const;
+       /** Maps positions in the visual string to positions
+        *  in logical string.
+        */
        pos_type log2vis(pos_type pos) const;
        /** Maps positions in the logical string to positions
         *  in visual string.
         */
        pos_type vis2log(pos_type pos) const;
-       ///
+       /* 
+        * The text direction at logical position \param pos.
+        * Possible values are
+        *  0: left-to-right text
+        *  1: right-to-left text
+        *  2: left-to-right text in right-to-left language (aka numbers)
+        */
        pos_type level(pos_type pos) const;
-       ///
+       /// Is logical position covered by this row?
        bool inRange(pos_type pos) const;
-       /// same_direction?
+       /// Is the whole row in the same direction as the paragraph?
        bool same_direction() const;
-       ///
+       /// Compute the data for visual positions. 
        void computeTables(Paragraph const & par,
                           Buffer const &, Row const & row);
 private:
@@ -65,6 +75,11 @@ private:
        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