+ /// return first row of text
+ RowList::iterator firstRow() const;
+ /// return last row of text
+ RowList::iterator lastRow() const;
+ /// return row "behind" last row of text
+ RowList::iterator endRow() const;
+ /// return next row crossing paragraph boundaries
+ void nextRow(ParagraphList::iterator & pit,
+ RowList::iterator & rit) const;
+ /// return previous row crossing paragraph boundaries
+ void previousRow(ParagraphList::iterator & pit,
+ RowList::iterator & rit) const;
+
+ /// is this row the last in the text?
+ bool isLastRow(ParagraphList::iterator pit, Row const & row) const;
+ /// is this row the first in the text?
+ bool isFirstRow(ParagraphList::iterator pit, Row const & row) const;
+
+ ///
+ std::string selectionAsString(Buffer const & buffer, bool label) const;
+ ///
+ double spacing(Paragraph const &) const;
+ ///
+ void cursorLeftOneWord(LyXCursor &);
+ ///
+ void cursorRightOneWord(LyXCursor &);
+
+ ///
+ DispatchResult moveRight();
+ ///
+ DispatchResult moveLeft();
+ ///
+ DispatchResult moveRightIntern(bool front,
+ bool activate_inset, bool selecting);
+ ///
+ DispatchResult moveLeftIntern(bool front,
+ bool activate_inset, bool selecting);
+ ///
+ DispatchResult moveUp();
+ ///
+ DispatchResult moveDown();
+ ///
+ bool checkAndActivateInset(bool front);
+
+ ///
+ void write(Buffer const & buf, std::ostream & os) const;
+ /// returns whether we've seen our usual 'end' marker
+ bool read(Buffer const & buf, LyXLex & lex);
+
+ ///
+ int ascent() const;
+ ///
+ int descent() const;