X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fparagraph_pimpl.h;h=3b8e0b0fab6f61c497caa39f47298994a20b69a5;hb=52eb91c94fb70d58dceef430659c8781de2eccda;hp=837b2add279e600bfd7971f4cc483bcd08c51482;hpb=ccd9433f4cb34e1bab6ecf53f6e35af79aba648e;p=lyx.git diff --git a/src/paragraph_pimpl.h b/src/paragraph_pimpl.h index 837b2add27..3b8e0b0fab 100644 --- a/src/paragraph_pimpl.h +++ b/src/paragraph_pimpl.h @@ -26,6 +26,7 @@ namespace lyx { +class Encoding; class LyXLayout; @@ -35,24 +36,25 @@ 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(pos_type pos) const; + Change const & lookupChange(pos_type pos) const; /// is there a change within the given range ? bool isChanged(pos_type start, pos_type end) const; - /// set change for the entire par - void setChange(Change const & change); + /// 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(pos_type pos, Change const & change); - /// accept change - void acceptChange(pos_type start, pos_type end); - /// reject change - void rejectChange(pos_type start, pos_type end); + /// 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(pos_type pos) const; @@ -60,12 +62,10 @@ public: void insertChar(pos_type pos, value_type c, Change const & change); /// void insertInset(pos_type pos, InsetBase * inset, Change const & change); - /// definite erase - void erase(pos_type pos); - /// erase the given position. Returns true if it was actually erased - bool erase(pos_type pos, bool trackChanges); - /// erase the given range - int erase(pos_type start, pos_type end, bool trackChanges); + /// (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; @@ -124,16 +124,23 @@ public: /// FontList fontlist; - /// - void simpleTeXBlanks(odocstream &, TexRow & texrow, - 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 &, - odocstream &, TexRow & texrow, - OutputParams const &, + Encoding const &, odocstream &, + TexRow & texrow, OutputParams const &, LyXFont & font, LyXFont & running_font, LyXFont & basefont, LyXFont const & outerfont,