]> git.lyx.org Git - lyx.git/blobdiff - src/ParagraphMetrics.h
Account for old versions of Pygments
[lyx.git] / src / ParagraphMetrics.h
index a0babdfdc46d2820ed6fce012ad8b1da48c0c1ff..7244e2a2d34b1a48b8e43463a1145f22ed3c0840 100644 (file)
@@ -5,10 +5,10 @@
  * Licence details can be found in the file COPYING.
  *
  * \author Asger Alstrup
- * \author Lars Gullik Bjønnes
+ * \author Lars Gullik Bjønnes
  * \author John Levon
- * \author André Pönitz
- * \author Jürgen Vigna
+ * \author André Pönitz
+ * \author Jürgen Vigna
  * \author Abdelrazak Younes
  *
  * Full author contact details are available in file CREDITS.
 #ifndef PARAGRAPH_METRICS_H
 #define PARAGRAPH_METRICS_H
 
-#include "Paragraph.h"
+#include "Dimension.h"
+#include "Row.h"
+
+#include <map>
+#include <vector>
 
 namespace lyx {
 
+/**
+ * Each paragraph is broken up into a number of rows on the screen.
+ * This is a list of such on-screen rows, ordered from the top row
+ * downwards.
+ */
+typedef std::vector<Row> RowList;
+
+class Buffer;
+class BufferView;
+class BufferParams;
+class Font;
+class Inset;
+class Paragraph;
 class MetricsInfo;
 class PainterInfo;
 
-/// Helper class for Paragraph Metrics.
-class ParagraphMetrics  {
+/// Helper class for paragraph metrics.
+class ParagraphMetrics {
 public:
        /// Default constructor (only here for STL containers).
-       ParagraphMetrics(): par_(0) {};
+       ParagraphMetrics() : position_(0), par_(0) {}
        /// The only useful constructor.
-       ParagraphMetrics(Paragraph const & par);
+       explicit ParagraphMetrics(Paragraph const & par);
 
        /// Copy operator.
-       /// Important note: We don't copy \c row_change_status_ and
-       /// \c row_signature_ because those are updated externally with
-       /// \c updateRowChangeStatus() in TextMetrics::redoParagraph().
        ParagraphMetrics & operator=(ParagraphMetrics const &);
 
+       void reset(Paragraph const & par);
+
        ///
        Row & getRow(pos_type pos, bool boundary);
        ///
@@ -49,37 +65,38 @@ public:
        Dimension const & dim() const { return dim_; }
        Dimension & dim() { return dim_; }
        /// total height of paragraph
-       unsigned int height() const { return dim_.height(); }
+       int height() const { return dim_.height(); }
        /// total width of paragraph, may differ from workwidth
-       unsigned int width() const { return dim_.width(); }
+       int width() const { return dim_.width(); }
        /// ascend of paragraph above baseline
-       unsigned int ascent() const { return dim_.ascent(); }
+       int ascent() const { return dim_.ascent(); }
        /// descend of paragraph below baseline
-       unsigned int descent() const { return dim_.descent(); }
-       /// LyXText updates the rows using this access point
+       int descent() const { return dim_.descent(); }
+       /// Text updates the rows using this access point
        RowList & rows() { return rows_; }
        /// The painter and others use this
        RowList const & rows() const { return rows_; }
-       /// The painter and others use this
-       std::vector<bool> const & rowChangeStatus() const 
-       { return row_change_status_; }
        ///
-       void updateRowChangeStatus();
-       ///
-       int rightMargin(Buffer const & buffer) const;
+       int rightMargin(BufferView const & bv) const;
 
        /// dump some information to lyxerr
        void dump() const;
 
-private:
        ///
-       size_type calculateRowSignature(Row const &);
+       bool hfillExpansion(Row const & row, pos_type pos) const;
+
        ///
-       mutable RowList rows_;
+       size_t computeRowSignature(Row const &, BufferView const & bv) const;
+
        ///
-       RowSignature row_signature_;
+       int position() const { return position_; }
+       void setPosition(int position);
+
+private:
+       ///
+       int position_;
        ///
-       std::vector<bool> row_change_status_;
+       mutable RowList rows_;
        /// cached dimensions of paragraph
        Dimension dim_;
        ///