X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FParagraphMetrics.h;h=63ed0f3cdf689bc6aecf3459c6430b065c228f2c;hb=38c2cde0d8695ac5287bae218c4a33a2acf18ef8;hp=0bff836cc3058f9925c2404e6de2981e8b458e44;hpb=063fdd118b87462c4670246484df389f1e2ffeb7;p=lyx.git diff --git a/src/ParagraphMetrics.h b/src/ParagraphMetrics.h index 0bff836cc3..63ed0f3cdf 100644 --- a/src/ParagraphMetrics.h +++ b/src/ParagraphMetrics.h @@ -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. @@ -17,27 +17,43 @@ #ifndef PARAGRAPH_METRICS_H #define PARAGRAPH_METRICS_H -#include "paragraph.h" +#include "Dimension.h" +#include "Row.h" + +#include +#include 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 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); /// @@ -45,41 +61,39 @@ public: /// size_t pos2row(pos_type pos) const; - /// BufferView::redoParagraph updates this + /// TextMetrics::redoParagraph updates this 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 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 ParagraphMetrics::calculateRowSignature(Row const &); + bool hfillExpansion(Row const & row, pos_type pos) const; + /// - mutable RowList rows_; + int position() const { return position_; } + void setPosition(int position); + +private: /// - RowSignature row_signature_; + int position_; /// - std::vector row_change_status_; + mutable RowList rows_; /// cached dimensions of paragraph Dimension dim_; ///