X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FChanges.h;h=ea6e4b393155af0ebb5ef3212d4310f1cc168b92;hb=2de30c62f8d671a8c8d4d52a6a7310e2c5ca84de;hp=87fdb712308e41cb6eb70b00949bac6c77167d17;hpb=dfabfe49c6e6b07298a189b5424e41f1731d10b9;p=lyx.git diff --git a/src/Changes.h b/src/Changes.h index 87fdb71230..ea6e4b3931 100644 --- a/src/Changes.h +++ b/src/Changes.h @@ -29,6 +29,11 @@ namespace lyx { class AuthorList; class Buffer; class DocIterator; +class OutputParams; +class otexstream; +class PainterInfo; +class FontInfo; + class Change { public: @@ -39,7 +44,7 @@ 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? @@ -61,6 +66,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; @@ -75,6 +94,8 @@ class BufferParams; class Changes { public: + Changes() : is_update_required_(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 @@ -95,14 +116,17 @@ 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 isFullyDeleted(pos_type const start, pos_type const end) const; + 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, BufferParams const & bparams, @@ -112,7 +136,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) const; + + /// + void updateBuffer(Buffer const & buf); + /// + bool isUpdateRequired() const { return is_update_required_; } private: class Range { @@ -156,6 +186,10 @@ private: /// table of changes, every row a change and range descriptor ChangeTable table_; + + /// signals that the buffer's flag tracked_changes_present_ needs to be + /// recalculated + bool is_update_required_; };