3 * \file ParagraphMetrics.h
4 * This file is part of LyX, the document processor.
5 * Licence details can be found in the file COPYING.
7 * \author Asger Alstrup
8 * \author Lars Gullik Bjønnes
10 * \author André Pönitz
11 * \author Jürgen Vigna
12 * \author Abdelrazak Younes
14 * Full author contact details are available in file CREDITS.
17 #ifndef PARAGRAPH_METRICS_H
18 #define PARAGRAPH_METRICS_H
20 #include "Dimension.h"
29 * Each paragraph is broken up into a number of rows on the screen.
30 * This is a list of such on-screen rows, ordered from the top row
33 typedef std::vector
<Row
> RowList
;
43 /// Helper class for paragraph metrics.
44 class ParagraphMetrics
{
46 /// Default constructor (only here for STL containers).
47 ParagraphMetrics() : par_(0) {}
48 /// The only useful constructor.
49 explicit ParagraphMetrics(Paragraph
const & par
);
52 ParagraphMetrics
& operator=(ParagraphMetrics
const &);
54 void reset(Paragraph
const & par
);
57 Row
& getRow(pos_type pos
, bool boundary
);
59 Row
const & getRow(pos_type pos
, bool boundary
) const;
61 size_t pos2row(pos_type pos
) const;
63 /// BufferView::redoParagraph updates this
64 Dimension
const & dim() const { return dim_
; }
65 Dimension
& dim() { return dim_
; }
66 /// total height of paragraph
67 int height() const { return dim_
.height(); }
68 /// total width of paragraph, may differ from workwidth
69 int width() const { return dim_
.width(); }
70 /// ascend of paragraph above baseline
71 int ascent() const { return dim_
.ascent(); }
72 /// descend of paragraph below baseline
73 int descent() const { return dim_
.descent(); }
74 /// Text updates the rows using this access point
75 RowList
& rows() { return rows_
; }
76 /// The painter and others use this
77 RowList
const & rows() const { return rows_
; }
79 int rightMargin(Buffer
const & buffer
) const;
81 int singleWidth(pos_type pos
, Font
const & Font
) const;
83 /// dump some information to lyxerr
87 bool hfillExpansion(Row
const & row
, pos_type pos
) const;
90 void computeRowSignature(Row
&, BufferParams
const & bparams
);
93 int position() const { return position_
; }
94 void setPosition(int position
);
97 Dimension
const & insetDimension(Inset
const * inset
) const;
99 void setInsetDimension(Inset
const *, Dimension
const & dim
);
105 mutable RowList rows_
;
106 /// cached dimensions of paragraph
109 Paragraph
const * par_
;
111 typedef std::map
<Inset
const *, Dimension
> InsetDims
;
113 InsetDims inset_dims_
;
118 #endif // PARAGRAPH_METRICS_H