]> git.lyx.org Git - lyx.git/blobdiff - src/lyxrow.h
Collapse all those LFUN_XYZ_APPLY to a single LFUN_INSET_APPLY.
[lyx.git] / src / lyxrow.h
index 876a61cc44c3f8d12264bc2684fb0d9cd02ae10f..ab94db1a4cade351edc9bc27ae9570e0b105b7c9 100644 (file)
@@ -1,38 +1,39 @@
 // -*- C++ -*-
-/* This file is part of
- * ====================================================== 
- * 
- *           LyX, The Document Processor
- *      
- *           Copyright 1995 Matthias Ettrich
- *           Copyright 1995-2000 The LyX Team.
+/**
+ * \file lyxrow.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
  *
- * ====================================================== */
+ * \author unknown
+ *
+ * Full author contact details are available in file CREDITS
+ *
+ * Metrics for an on-screen text row.
+ */
 
 #ifndef LYXROW_H
 #define LYXROW_H
 
-#ifdef __GNUG__
-#pragma interface
-#endif
+#include "support/types.h"
 
-#include "lyxparagraph.h"
+class Paragraph;
 
 ///
 class Row {
 public:
        ///
        Row();
+
        ///
-       void par(LyXParagraph * p);
+       void par(Paragraph * p);
        ///
-       LyXParagraph * par();
+       Paragraph * par();
        ///
-       LyXParagraph * par() const;
+       Paragraph * par() const;
        ///
-       void pos(LyXParagraph::size_type p);
+       void pos(lyx::pos_type p);
        ///
-       LyXParagraph::size_type pos() const;
+       lyx::pos_type pos() const;
        ///
        void fill(int f);
        ///
@@ -50,6 +51,10 @@ public:
        ///
        unsigned short ascent_of_text() const;
        ///
+       void top_of_text(unsigned int top);
+       ///
+       unsigned int top_of_text() const;
+       ///
        void baseline(unsigned int b);
        ///
        unsigned int baseline() const;
@@ -61,11 +66,45 @@ public:
        void previous(Row * r);
        ///
        Row * previous() const;
+
+       /// return true if this row is the start of a paragraph
+       bool isParStart() const;
+
+       /// return true if this  row is the end of a paragraph
+       bool isParEnd() const;
+
+       /// return the position of the last character in this row
+       lyx::pos_type lastPos() const;
+       /// return the position of the last normal, printable character in this row
+       lyx::pos_type lastPrintablePos() const;
+       
+       /**
+        * Returns the number of separators.
+        * The separator on the very last column doesnt count.
+        */
+       int numberOfSeparators() const;
+
+       /** 
+        * Returns the number of hfills. It works like a LaTeX \hfill:
+        * the hfills at the beginning and at the end are ignored.
+        * This is much more useful than not to ignore!
+        */
+       int numberOfHfills() const;
+
+       /// Returns the number of hfills in the manual label. See numberOfHfills().
+       int numberOfLabelHfills() const;
+
+       /**
+        * Returns true if a expansion is needed at the given position.
+        * Rules are given by LaTeX
+        */
+       bool hfillExpansion(lyx::pos_type pos) const;
+
 private:
        ///
-       LyXParagraph * par_;
+       Paragraph * par_;
        ///
-       LyXParagraph::size_type pos_;
+       lyx::pos_type pos_;
        /** what is missing to a full row can be negative.
          Needed for hfills, flushright, block etc. */
        mutable int fill_;
@@ -73,8 +112,10 @@ private:
        unsigned short height_;
        ///
        unsigned int width_;
-       ///
+       /// ascent from baseline including prelude space
        unsigned short ascent_of_text_;
+       /// the top of the real text in the row
+       unsigned int top_of_text_;
        ///
        unsigned int baseline_;
        ///
@@ -85,14 +126,14 @@ private:
 
 
 inline
-LyXParagraph * Row::par()
+Paragraph * Row::par()
 {
        return par_;
 }
 
 
 inline
-LyXParagraph * Row::par() const
+Paragraph * Row::par() const
 {
        return par_;
 }