#ifndef BIDI_H
#define BIDI_H
-#include <config.h>
-
#include "support/types.h"
+#include "Cursor.h"
#include <vector>
+
+namespace lyx {
+
class Buffer;
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;
///
///
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