X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fparagraph_pimpl.h;h=3b8e0b0fab6f61c497caa39f47298994a20b69a5;hb=52eb91c94fb70d58dceef430659c8781de2eccda;hp=0187490187b3aaad3f97a01ae9b49396f2fd211b;hpb=8f426399d8161c337f5974ac1896f0cbbde55bc4;p=lyx.git diff --git a/src/paragraph_pimpl.h b/src/paragraph_pimpl.h index 0187490187..3b8e0b0fab 100644 --- a/src/paragraph_pimpl.h +++ b/src/paragraph_pimpl.h @@ -23,6 +23,10 @@ #include + +namespace lyx { + +class Encoding; class LyXLayout; @@ -32,41 +36,36 @@ public: 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; @@ -84,20 +83,20 @@ public: 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 @@ -125,23 +124,30 @@ public: /// 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(BufferParams const &, 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 &, + Encoding const &, odocstream &, + TexRow & texrow, OutputParams const &, LyXFont & font, 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); /// @@ -157,15 +163,18 @@ public: 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_; + /// for recording and looking up changes + Changes changes_; /// Who owns us? Paragraph * owner_; }; + +} // namespace lyx + #endif