]> git.lyx.org Git - lyx.git/blobdiff - src/ParagraphMetrics.h
* Doxy: polish html output.
[lyx.git] / src / ParagraphMetrics.h
index 759c346b01726a3a1e22056d213ebb8ab2dc845a..53f5f4379a4c37b2121183e6c8fa26ee5c187bfe 100644 (file)
 #ifndef PARAGRAPH_METRICS_H
 #define PARAGRAPH_METRICS_H
 
-#include "Paragraph.h"
+#include "Dimension.h"
+#include "Row.h"
+
+#include <map>
+#include <vector>
 
 namespace lyx {
 
@@ -28,16 +32,21 @@ namespace lyx {
  */
 typedef std::vector<Row> RowList;
 
+class Buffer;
+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() : par_(0) {}
        /// The only useful constructor.
-       ParagraphMetrics(Paragraph const & par);
+       explicit ParagraphMetrics(Paragraph const & par);
 
        /// Copy operator.
        ParagraphMetrics & operator=(ParagraphMetrics const &);
@@ -55,13 +64,13 @@ 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(); }
+       int descent() const { return dim_.descent(); }
        /// Text updates the rows using this access point
        RowList & rows() { return rows_; }
        /// The painter and others use this
@@ -73,16 +82,35 @@ public:
 
        /// dump some information to lyxerr
        void dump() const;
+
+       ///
+       bool hfillExpansion(Row const & row, pos_type pos) const;
+
        /// 
-       void computeRowSignature(Row &, BufferParams const & bparams);
+       size_t computeRowSignature(Row const &, BufferParams const & bparams) const;
+
+       ///
+       int position() const { return position_; }
+       void setPosition(int position);
+
+       ///
+       Dimension const & insetDimension(Inset const * inset) const;
+       ///
+       void setInsetDimension(Inset const *, Dimension const & dim);
 
 private:
+       ///
+       int position_;
        ///
        mutable RowList rows_;
        /// cached dimensions of paragraph
        Dimension dim_;
        ///
        Paragraph const * par_;
+       
+       typedef std::map<Inset const *, Dimension> InsetDims;
+       ///
+       InsetDims inset_dims_;
 };
 
 } // namespace lyx