#include "support/types.h"
#include "support/lyxtime.h"
-#include "texstream.h"
-
#include <vector>
class AuthorList;
class Buffer;
class DocIterator;
+class FontInfo;
class OutputParams;
+class otexstream;
+class PainterInfo;
+class TocBackend;
+
class Change {
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;
class Changes {
public:
- Changes() : is_update_required_(false) {}
+ Changes() : previously_changed_(false) {}
/// set the pos to the given change
void set(Change const & change, pos_type pos);
///
void addToToc(DocIterator const & cdit, Buffer const & buffer,
- bool output_active) const;
+ bool output_active, TocBackend & backend) const;
///
void updateBuffer(Buffer const & buf);
///
- bool isUpdateRequired() const { return is_update_required_; }
+ bool isUpdateRequired() const { return previously_changed_ != isChanged(); }
private:
class Range {
/// 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_;
+ /// 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_;
};