class LyXLayout;
-struct Paragraph::Pimpl {
+
+class Paragraph::Pimpl {
+public:
///
Pimpl(Paragraph * owner);
- /// Copy constructor
+ /// "Copy constructor"
Pimpl(Pimpl const &, Paragraph * owner);
///
void setContentsFromPar(Paragraph const & par);
+
+ //
+ // Change tracking
+ //
/// set tracking mode
void trackChanges(Change::Type type = Change::UNCHANGED);
/// stop tracking
void untrackChanges();
/// set all text as new for change mode
- void cleanChanges();
- /// look up change type at given pos
- Change::Type lookupChange(lyx::pos_type pos) const;
+ void cleanChanges(Paragraph::ChangeTracking ct = Paragraph::trackingUnknown);
/// look up change at given pos
- Change const lookupChangeFull(lyx::pos_type pos) const;
- /// is there a change in the given range ?
+ Change const lookupChange(lyx::pos_type pos) const;
+ /// is there a change within the given range ?
bool isChanged(lyx::pos_type start, lyx::pos_type end) const;
/// is there a non-addition in this range ?
bool isChangeEdited(lyx::pos_type start, lyx::pos_type end) const;
-
- /// set change at pos
- void setChange(lyx::pos_type pos, Change::Type type);
-
+ /// set change type at given pos
+ void setChangeType(lyx::pos_type pos, Change::Type type);
+ /// set change at given pos
+ void setChange(lyx::pos_type pos, Change change);
/// mark as erased
- void markErased();
-
+ void markErased(bool);
/// 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();
- }
+ bool tracking() const { return changes_.get(); }
///
value_type getChar(lyx::pos_type pos) const;
///
void setChar(lyx::pos_type pos, value_type c);
///
- void insertChar(lyx::pos_type pos, value_type c, LyXFont const & font, Change change = Change(Change::INSERTED));
+ void insertChar(lyx::pos_type pos, value_type c, Change change);
///
- void insertInset(lyx::pos_type pos, InsetOld * inset, LyXFont const & font, Change change = Change(Change::INSERTED));
+ void insertInset(lyx::pos_type pos, InsetBase * inset, Change change);
/// definite erase
void eraseIntern(lyx::pos_type pos);
/// erase the given position. Returns true if it was actually erased
/// erase the given range
int erase(lyx::pos_type start, lyx::pos_type end);
///
- UpdatableInset * inset_owner;
+ InsetBase * inset_owner;
/** A font entry covers a range of positions. Notice that the
entries in the list are inserted in random order.
and font_i covers the chars in positions pos_{i-1}+1,...,pos_i
(font_1 covers the chars 0,...,pos_1) (Dekel)
*/
- struct FontTable {
+ class FontTable {
+ public:
///
FontTable(lyx::pos_type p, LyXFont const & f)
- : pos_(p)
- {
- font_ = container.get(f);
- }
+ : pos_(p), font_(f)
+ {}
///
lyx::pos_type pos() const { return pos_; }
///
void pos(lyx::pos_type p) { pos_ = p; }
///
- LyXFont const & font() const { return *font_; }
+ LyXFont const & font() const { return font_; }
///
- void font(LyXFont const & f) { font_ = container.get(f);}
+ void font(LyXFont const & f) { font_ = f;}
private:
/// End position of paragraph this font attribute covers
lyx::pos_type pos_;
The values LyXFont::IGNORE_* and LyXFont::TOGGLE are NOT
allowed in these font tables.
*/
- boost::shared_ptr<LyXFont> font_;
- ///
- static ShareContainer<LyXFont> container;
+ LyXFont font_;
};
///
- friend struct matchFT;
+ friend class matchFT;
///
- struct matchFT {
+ class matchFT {
+ public:
/// used by lower_bound and upper_bound
- inline
int operator()(FontTable const & a, FontTable const & b) const {
return a.pos() < b.pos();
}