]> git.lyx.org Git - lyx.git/blobdiff - src/Changes.h
Make the session zoom relative to the default zoom
[lyx.git] / src / Changes.h
index 84c4fea707e67d684287cb6e83cd36d3e0d368b4..5bded171ac5c5d5bce5d2c6596b38610f2629456 100644 (file)
@@ -17,7 +17,6 @@
 
 #include "Color.h"
 
-#include "support/docstream.h"
 #include "support/strfwd.h"
 #include "support/types.h"
 #include "support/lyxtime.h"
@@ -30,7 +29,12 @@ namespace lyx {
 class AuthorList;
 class Buffer;
 class DocIterator;
+class FontInfo;
 class OutputParams;
+class otexstream;
+class PainterInfo;
+class TocBackend;
+
 
 class Change {
 public:
@@ -63,6 +67,20 @@ public:
        /// Is this change made by the current author ?
        bool currentAuthor() const { return author == 0; }
 
+       /// Paint under- or strike-through line
+       ///
+       /// Text : underline or strike through
+       /// \param x1 begin
+       /// \param x2 end
+       /// \param y baseline
+       void paintCue(PainterInfo & pi, double const x1, double const y,
+                      double const x2, FontInfo const & font) const;
+       /// Box : line below or diagonal
+       /// \param x1,y1 top-left corner
+       /// \param x2,y2 bottom-right corner
+       void paintCue(PainterInfo & pi, double const x1, double const y1,
+                      double const x2, double const y2) const;
+
        Type type;
 
        int author;
@@ -77,6 +95,8 @@ class BufferParams;
 
 class Changes {
 public:
+       Changes() : previously_changed_(false) {}
+
        /// set the pos to the given change
        void set(Change const & change, pos_type pos);
        /// set the range (excluding end) to the given change
@@ -97,6 +117,8 @@ public:
 
        /// return true if there is a change in the given range (excluding end)
        bool isChanged(pos_type start, pos_type end) const;
+       ///
+       bool isChanged() const;
 
        /// return true if the whole range is deleted
        bool isDeleted(pos_type start, pos_type end) const;
@@ -115,7 +137,13 @@ public:
        void checkAuthors(AuthorList const & authorList);
 
        ///
-       void addToToc(DocIterator const & cdit, Buffer const & buffer) const;
+       void addToToc(DocIterator const & cdit, Buffer const & buffer,
+                     bool output_active, TocBackend & backend) const;
+
+       ///
+       void updateBuffer(Buffer const & buf);
+       ///
+       bool isUpdateRequired() const { return previously_changed_ != isChanged(); }
 
 private:
        class Range {
@@ -159,6 +187,10 @@ private:
 
        /// table of changes, every row a change and range descriptor
        ChangeTable table_;
+
+       /// cache previous value of isChanged to be able to tell whether the
+       /// buffer's flag tracked_changes_present_ needs to be recomputed
+       bool previously_changed_;
 };