X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fparagraph_pimpl.h;h=5ecd70bcf2df681072e6487eca0024b5745e6d07;hb=498f06d43a0f2000c3f704db1ea39fda3c819fe6;hp=35ad384f1a7d5ffff822d1cae8f3f08507e52f4f;hpb=13349032cb4dc8ef44146aa652ff6bbff6698249;p=lyx.git diff --git a/src/paragraph_pimpl.h b/src/paragraph_pimpl.h index 35ad384f1a..5ecd70bcf2 100644 --- a/src/paragraph_pimpl.h +++ b/src/paragraph_pimpl.h @@ -1,25 +1,20 @@ // -*- C++ -*- -/* This file is part of - * ====================================================== - * - * LyX, The Document Processor - * - * Copyright 1995 Matthias Ettrich - * Copyright 1995-2001 The LyX Team. - * - * ====================================================== */ +/** + * \file paragraph_pimpl.h + * Copyright 1995-2002 the LyX Team + * Read the file COPYING + */ #ifndef PARAGRAPH_PIMPL_H #define PARAGRAPH_PIMPL_H -#ifdef __GNUG__ -#pragma interface -#endif - #include "paragraph.h" #include "ParagraphParameters.h" +#include "changes.h" #include "counters.h" +#include + class LyXLayout; struct Paragraph::Pimpl { @@ -42,16 +37,52 @@ struct Paragraph::Pimpl { void clear(); /// void setContentsFromPar(Paragraph const * par); + /// 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; + /// look up change at given pos + Change const lookupChangeFull(lyx::pos_type pos) const; + /// is there a change in 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); + + /// mark as erased + void markErased(); + + /// 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(); + } + /// 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); - /// - void insertInset(lyx::pos_type pos, Inset * inset, LyXFont const & font); + void insertChar(lyx::pos_type pos, value_type c, LyXFont const & font, Change change = Change(Change::INSERTED)); /// + void insertInset(lyx::pos_type pos, Inset * inset, LyXFont const & font, Change change = Change(Change::INSERTED)); + /// definite erase + void eraseIntern(lyx::pos_type pos); + /// erase the given position void erase(lyx::pos_type pos); + /// erase the given range + bool erase(lyx::pos_type start, lyx::pos_type end); /// LyXFont const realizeFont(LyXFont const & font, BufferParams const & bparams) const; @@ -115,13 +146,15 @@ struct Paragraph::Pimpl { typedef std::vector FontList; /// FontList fontlist; + /// Paragraph * TeXDeeper(Buffer const *, BufferParams const &, std::ostream &, TexRow & texrow); /// void simpleTeXBlanks(std::ostream &, TexRow & texrow, lyx::pos_type const i, - int & column, LyXFont const & font, + unsigned int & column, + LyXFont const & font, LyXLayout const & style); /// void simpleTeXSpecialChars(Buffer const *, BufferParams const &, @@ -129,16 +162,15 @@ struct Paragraph::Pimpl { bool moving_arg, LyXFont & font, LyXFont & running_font, LyXFont & basefont, bool & open_font, + Change::Type & running_change, LyXLayout const & style, lyx::pos_type & i, - int & column, value_type const c); + unsigned int & column, value_type const c); /// void validate(LaTeXFeatures & features, LyXLayout const & layout) const; - /// - Paragraph * getParFromID(int id) const; /// unsigned int id_; /// @@ -147,9 +179,15 @@ struct Paragraph::Pimpl { ParagraphParameters params; private: + /// erase at the given position. Returns true if it was actually erased + bool erasePos(lyx::pos_type pos); + /// match a string against a particular point in the paragraph bool isTextAt(string const & str, lyx::pos_type pos) const; + /// for recording and looking up changes in revision tracking mode + boost::scoped_ptr changes_; + /// Who owns us? Paragraph * owner_; ///