X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FChanges.h;h=d53887556d5a32ffb9fc352ed8f7d3c03e3a32f3;hb=3bf1b97ae547aea5d0243e41b2d8af463a6e40c5;hp=09ac0aa0fe7d3dd52271f2a1574ab23693d9a432;hpb=5ce39aa8b5afb1fa88c39797cea6d4e5da5dafe3;p=features.git diff --git a/src/Changes.h b/src/Changes.h index 09ac0aa0fe..d53887556d 100644 --- a/src/Changes.h +++ b/src/Changes.h @@ -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 {