]> git.lyx.org Git - features.git/blobdiff - src/Changes.h
InsetIndex: hide printTree behind a LYX_INSET_INDEX_DEBUG flag
[features.git] / src / Changes.h
index 09ac0aa0fe7d3dd52271f2a1574ab23693d9a432..d53887556d5a32ffb9fc352ed8f7d3c03e3a32f3 100644 (file)
@@ -15,8 +15,6 @@
 #ifndef CHANGES_H
 #define CHANGES_H
 
-#include "ColorCode.h"
-
 #include "support/strfwd.h"
 #include "support/types.h"
 #include "support/lyxtime.h"
@@ -28,7 +26,14 @@ namespace lyx {
 
 class AuthorList;
 class Buffer;
+class Color;
 class DocIterator;
+class FontInfo;
+class OutputParams;
+class otexstream;
+class PainterInfo;
+class TocBackend;
+
 
 class Change {
 public:
@@ -39,13 +44,13 @@ public:
                DELETED // deleted text
        };
 
-       explicit Change(Type t = UNCHANGED, int a = 0, time_t ct = current_time())
+       explicit Change(Type t = UNCHANGED, int a = 0, time_t ct = support::current_time())
                : type(t), author(a), changetime(ct) {}
 
        /// is the change similar to the given change such that both can be merged?
        bool isSimilarTo(Change const & change) const;
        /// The color of this change on screen
-       ColorCode color() const;
+       Color color() const;
        ///
        bool changed() const { return type != UNCHANGED; }
        ///
@@ -58,6 +63,22 @@ public:
        bool deleted() const { return type == DELETED; }
        ///
        void setDeleted() { type = DELETED; }
+       /// 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;
 
@@ -80,11 +101,11 @@ public:
 
        /// erase the entry at pos and adjust all range bounds past it
        /// (assumes that a character was deleted at pos)
-       void erase(lyx::pos_type pos);
+       void erase(pos_type pos);
 
        /// insert a new entry at pos and adjust all range bounds past it
        /// (assumes that a character was inserted at pos)
-       void insert(Change const & change, lyx::pos_type pos);
+       void insert(Change const & change, pos_type pos);
 
        ///
 
@@ -93,21 +114,28 @@ 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;
 
        /// output latex to mark a transition between two change types
        /// returns length of text outputted
-       static int latexMarkChange(odocstream & os, BufferParams const & bparams,
-                                  Change const & oldChange, Change const & change);
+       static int latexMarkChange(otexstream & os, BufferParams const & bparams,
+                                  Change const & oldChange, Change const & change,
+                                  OutputParams const & runparams);
 
        /// output .lyx file format for transitions between changes
-       static void lyxMarkChange(std::ostream & os, int & column,
-               Change const & old, Change const & change);
+       static void lyxMarkChange(std::ostream & os, BufferParams const & bparams,
+               int & column, Change const & old, Change const & change);
 
        ///
-       void checkAuthors(AuthorList const & authorList);
+       void checkAuthors(AuthorList const & authorList) const;
 
        ///
-       void addToToc(DocIterator const & cdit, Buffer const & buffer) const;
+       void addToToc(DocIterator const & cdit, Buffer const & buffer,
+                     bool output_active, TocBackend & backend) const;
 
 private:
        class Range {