namespace lyx {
class BufferView;
-class LyXText;
+class Text;
class MetricsInfo;
-/// A map from a LyXText to the map of paragraphs metrics
+/// A map from a Text to the map of paragraphs metrics
class TextMetrics
{
public:
/// Default constructor (only here for STL containers).
TextMetrics(): text_(0) {}
/// The only useful constructor.
- TextMetrics(BufferView *, LyXText *);
+ TextMetrics(BufferView *, Text *);
///
ParagraphMetrics const & parMetrics(pit_type) const;
///
/// \retval true if a full screen redraw is needed.
/// \retval false if a single paragraph redraw is enough.
bool redoParagraph(pit_type const pit);
+ /// Clear cache of paragraph metrics
+ void clear() { par_metrics_.clear(); }
///
int ascent() const { return dim_.asc; }
private:
- ///
+ ///
ParagraphMetrics & parMetrics(pit_type, bool redo_paragraph);
/// the minimum space a manual label needs on the screen in pixels
int labelFill(Paragraph const & par, Row const & row) const;
+ /// FIXME??
+ int labelEnd(pit_type const pit) const;
+
+ /// sets row.end to the pos value *after* which a row should break.
+ /// for example, the pos after which isNewLine(pos) == true
+ void rowBreakPoint(int width, pit_type const pit, Row & row) const;
+
+ /// sets row.width to the minimum space a row needs on the screen in pixel
+ void setRowWidth(int right_margin, pit_type const pit, Row & row) const;
+
+ /// Calculate and set the height of the row
+ void setHeightOfRow(pit_type, Row & row);
+
+// Temporary public:
+public:
+ /// returns the column near the specified x-coordinate of the row.
+ /// x is an absolute screen coord, it is set to the real beginning
+ /// of this column.
+ pos_type getColumnNearX(pit_type pit, Row const & row, int & x,
+ bool & boundary) const;
+
+ /// returns pos in given par at given x coord.
+ pos_type x2pos(pit_type pit, int row, int x) const;
+
+ // FIXME: is there a need for this?
+ //int pos2x(pit_type pit, pos_type pos) const;
+
+private:
+
/// The BufferView owner.
BufferView * bv_;
/// The text contents (the model).
/// \todo FIXME: this should be const.
- LyXText * text_;
+ Text * text_;
bool main_text_;
/// A map from paragraph index number to paragraph metrics
mutable ParMetricsCache par_metrics_;
Dimension dim_;
int max_width_;
+
+ /// FIXME: transfer this code in CoordCache here.
+ /*
+ /// A map from paragraph index number to screen point
+ typedef std::map<pit_type, Point> InnerParPosCache;
+ /// A map from a Text to the map of paragraphs to screen points
+ typedef std::map<Text const *, InnerParPosCache> ParPosCache;
+ /// Paragraph grouped by owning text
+ ParPosCache pars_;
+ */
};
/// return the default height of a row in pixels, considering font zoom