#include <boost/scoped_ptr.hpp>
+
+namespace lyx {
+
+class Encoding;
class LyXLayout;
Pimpl(Paragraph * owner);
/// "Copy constructor"
Pimpl(Pimpl const &, Paragraph * owner);
- ///
- void setContentsFromPar(Paragraph const & par);
//
// Change tracking
//
/// look up change at given pos
- Change const lookupChange(lyx::pos_type pos) const;
+ Change const & lookupChange(pos_type pos) const;
/// is there a change within the given range ?
- bool isChanged(lyx::pos_type start, lyx::pos_type end) const;
- /// set change for the entire par
- void setChange(Change const & change);
+ bool isChanged(pos_type start, pos_type end) const;
+ /// will the paragraph be physically merged with the next
+ /// one if the imaginary end-of-par character is logically deleted?
+ bool isMergedOnEndOfParDeletion(bool trackChanges) const;
+ /// set change for the entire par
+ void setChange(Change const & change);
/// set change at given pos
- void setChange(lyx::pos_type pos, Change const & change);
- /// accept change
- void acceptChange(lyx::pos_type start, lyx::pos_type end);
- /// reject change
- void rejectChange(lyx::pos_type start, lyx::pos_type end);
- /// are we tracking changes ?
- bool tracking() const { return changes_.get(); }
+ void setChange(pos_type pos, Change const & change);
+ /// accept changes within the given range
+ void acceptChanges(BufferParams const & bparams, pos_type start, pos_type end);
+ /// reject changes within the given range
+ void rejectChanges(BufferParams const & bparams, pos_type start, pos_type end);
///
- value_type getChar(lyx::pos_type pos) const;
- ///
- void setChar(lyx::pos_type pos, value_type c);
+ value_type getChar(pos_type pos) const;
///
- void insertChar(lyx::pos_type pos, value_type c, Change const & change);
+ void insertChar(pos_type pos, value_type c, Change const & change);
///
- void insertInset(lyx::pos_type pos, InsetBase * inset, Change const & change);
- /// definite erase
- void eraseIntern(lyx::pos_type pos);
- /// erase the given position. Returns true if it was actually erased
- bool erase(lyx::pos_type pos);
- /// erase the given range
- int erase(lyx::pos_type start, lyx::pos_type end);
+ void insertInset(pos_type pos, InsetBase * inset, Change const & change);
+ /// (logically) erase the char at pos; return true if it was actually erased
+ bool eraseChar(pos_type pos, bool trackChanges);
+ /// (logically) erase the given range; return the number of chars actually erased
+ int eraseChars(pos_type start, pos_type end, bool trackChanges);
///
InsetBase * inset_owner;
class FontTable {
public:
///
- FontTable(lyx::pos_type p, LyXFont const & f)
+ FontTable(pos_type p, LyXFont const & f)
: pos_(p), font_(f)
{}
///
- lyx::pos_type pos() const { return pos_; }
+ pos_type pos() const { return pos_; }
///
- void pos(lyx::pos_type p) { pos_ = p; }
+ void pos(pos_type p) { pos_ = p; }
///
LyXFont const & font() const { return font_; }
///
void font(LyXFont const & f) { font_ = f;}
private:
/// End position of paragraph this font attribute covers
- lyx::pos_type pos_;
+ pos_type pos_;
/** Font. Interpretation of the font values:
If a value is LyXFont::INHERIT_*, it means that the font
attribute is inherited from either the layout of this
///
FontList fontlist;
- ///
- void simpleTeXBlanks(std::ostream &, TexRow & texrow,
- lyx::pos_type const i,
+ /// Output the surrogate pair formed by \p c and \p next to \p os.
+ /// \return the number of characters written.
+ int latexSurrogatePair(odocstream & os, value_type c, value_type next,
+ Encoding const &);
+ /// Output a space in appropriate formatting (or a surrogate pair
+ /// if the next character is a combining character).
+ /// \return whether a surrogate pair was output.
+ bool simpleTeXBlanks(Encoding const &,
+ odocstream &, TexRow & texrow,
+ pos_type & i,
unsigned int & column,
LyXFont const & font,
LyXLayout const & style);
///
void simpleTeXSpecialChars(Buffer const &, BufferParams const &,
- std::ostream &, TexRow & texrow,
- OutputParams const &,
- LyXFont & font, LyXFont & running_font,
+ odocstream &,
+ TexRow & texrow, OutputParams const &,
+ LyXFont & running_font,
LyXFont & basefont,
LyXFont const & outerfont,
bool & open_font,
Change::Type & running_change,
LyXLayout const & style,
- lyx::pos_type & i,
+ pos_type & i,
unsigned int & column, value_type const c);
///
private:
///
- lyx::pos_type size() const { return owner_->size(); }
+ pos_type size() const { return owner_->size(); }
/// match a string against a particular point in the paragraph
- bool isTextAt(std::string const & str, lyx::pos_type pos) const;
+ bool isTextAt(std::string const & str, pos_type pos) const;
- /// for recording and looking up changes in revision tracking mode
- boost::scoped_ptr<Changes> changes_;
+ /// for recording and looking up changes
+ Changes changes_;
/// Who owns us?
Paragraph * owner_;
};
+
+} // namespace lyx
+
#endif