]> git.lyx.org Git - lyx.git/blobdiff - src/paragraph_pimpl.h
fix compilation bug
[lyx.git] / src / paragraph_pimpl.h
index 7fd48bafadd2c20b774e0f8cb94812e2299ea279..5ecd70bcf2df681072e6487eca0024b5745e6d07 100644 (file)
@@ -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 <boost/scoped_ptr.hpp>
 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,6 +146,7 @@ struct Paragraph::Pimpl {
        typedef std::vector<FontTable> FontList;
        ///
        FontList fontlist;
+
        ///
        Paragraph * TeXDeeper(Buffer const *, BufferParams const &,
                                 std::ostream &, TexRow & texrow);
@@ -130,6 +162,7 @@ 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,
                                   unsigned int & column, value_type const c);
@@ -138,8 +171,6 @@ struct Paragraph::Pimpl {
        void validate(LaTeXFeatures & features,
                      LyXLayout const & layout) const;
 
-       ///
-       Paragraph * getParFromID(int id) const;
        ///
        unsigned int id_;
        ///
@@ -148,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> changes_;
        /// Who owns us?
        Paragraph * owner_;
        ///