X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FChanges.h;h=615b1099b1a7e848fd8741762282c7ee103271ca;hb=0e8b1dc29a4d5acd01a0e6f4c12b1ccc5fb2c8da;hp=b50c00e02cff2f61907f7b839d2b7fcd50f78f20;hpb=f630be890494c849981e4fb52ea4740506e92bed;p=lyx.git diff --git a/src/Changes.h b/src/Changes.h index b50c00e02c..615b1099b1 100644 --- a/src/Changes.h +++ b/src/Changes.h @@ -15,7 +15,10 @@ #ifndef CHANGES_H #define CHANGES_H -#include "support/docstream.h" +#include "Color.h" + +#include "support/strfwd.h" +#include "support/types.h" #include "support/lyxtime.h" #include @@ -23,6 +26,9 @@ namespace lyx { +class AuthorList; +class Buffer; +class DocIterator; class Change { public: @@ -33,22 +39,38 @@ public: DELETED // deleted text }; - explicit Change(Type t, int a = 0, time_type ct = current_time()) + explicit Change(Type t = UNCHANGED, int a = 0, time_t ct = 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); + bool isSimilarTo(Change const & change) const; + /// The color of this change on screen + Color color() const; + /// + bool changed() const { return type != UNCHANGED; } + /// + void setUnchanged() { type = UNCHANGED; } + /// + bool inserted() const { return type == INSERTED; } + /// + void setInserted() { type = INSERTED; } + /// + bool deleted() const { return type == DELETED; } + /// + void setDeleted() { type = DELETED; } Type type; int author; - time_type changetime; + time_t changetime; }; bool operator==(Change const & l, Change const & r); bool operator!=(Change const & l, Change const & r); +class BufferParams; + class Changes { public: /// set the pos to the given change @@ -72,17 +94,24 @@ public: /// return true if there is a change in the given range (excluding end) bool isChanged(pos_type start, pos_type end) const; - /// + /// return true if the whole range is deleted + bool isFullyDeleted(pos_type const start, pos_type const end) const; /// output latex to mark a transition between two change types /// returns length of text outputted - static int latexMarkChange(odocstream & os, Change::Type oldChangeType, - Change::Type changeType, bool const & output); + static int latexMarkChange(odocstream & os, BufferParams const & bparams, + Change const & oldChange, Change const & change); /// output .lyx file format for transitions between changes static void lyxMarkChange(std::ostream & os, int & column, Change const & old, Change const & change); + /// + void checkAuthors(AuthorList const & authorList); + + /// + void addToToc(DocIterator const & cdit, Buffer const & buffer) const; + private: class Range { public: