]> git.lyx.org Git - lyx.git/blobdiff - src/paragraph.h
Trivial fixes to some warnings thrown up by MSVS.Net 2003.
[lyx.git] / src / paragraph.h
index 36739946f9523494586abacace1c46eddb933cb2..13c99ca873527bec4efddf25eb3b39fb9e9dad43 100644 (file)
@@ -27,7 +27,6 @@
 #include "support/types.h"
 
 #include <string>
-#include <utility>
 
 class Buffer;
 class BufferParams;
@@ -47,6 +46,19 @@ class ParagraphParameters;
 class TexRow;
 
 
+class FontSpan {
+public:
+       /// Invalid font span containing no character
+       FontSpan() : first(0), last(-1) {}
+       /// Span including first and last
+       FontSpan(lyx::pos_type f, lyx::pos_type l) : first(f), last(l) {}
+
+public:
+       /// Range including first and last.
+       lyx::pos_type first, last;
+};
+
+       
 /// A Paragraph holds all text, attributes and insets in a text paragraph
 class Paragraph  {
 public:
@@ -219,8 +231,8 @@ public:
        /// reject change
        void rejectChange(lyx::pos_type start, lyx::pos_type end);
 
-       /// mark whole par as erased
-       void markErased();
+       /// mark whole par as erased or not
+       void markErased(bool erased);
 
        /// Paragraphs can contain "manual labels", for example, Description
        /// environment. The text for this user-editable label is stored in
@@ -279,11 +291,11 @@ public:
        /**
         * The font returned by the above functions is the same in a
         * span of characters. This method will return the first and
-        * the last last positions in the paragraph for which that
-        * font is the same. This can be used to avoid unnecessary
-        * calls to getFont.
+        * the last positions in the paragraph for which that font is
+        * the same. This can be used to avoid unnecessary calls to
+   * getFont.
         */
-       std::pair<lyx::pos_type, lyx::pos_type> getFontSpan(lyx::pos_type pos) const;
+       FontSpan fontSpan(lyx::pos_type pos) const;
        ///
        /// this is a bottleneck.
        value_type getChar(lyx::pos_type pos) const { return text_[pos]; }
@@ -315,23 +327,27 @@ public:
        ///
        bool insetAllowed(InsetBase_code code);
        ///
-       InsetBase * getInset(lyx::pos_type pos);
-       ///
-       InsetBase const * getInset(lyx::pos_type pos) const;
+       InsetBase * getInset(lyx::pos_type pos) {
+               return insetlist.get(pos);
+       }
        ///
-       InsetList insetlist;
-
+       InsetBase const * getInset(lyx::pos_type pos) const {
+               return insetlist.get(pos);
+       }
 
        ///
-       bool isHfill(lyx::pos_type pos) const;
+       bool isHfill(lyx::pos_type pos) const {
+       return isInset(pos)
+               && getInset(pos)->lyxCode() == InsetBase::HFILL_CODE;
+       }
        /// hinted by profiler
        bool isInset(lyx::pos_type pos) const {
                return getChar(pos) == static_cast<value_type>(META_INSET);
        }
        ///
        bool isNewline(lyx::pos_type pos) const;
-       ///
-       bool isSeparator(lyx::pos_type pos) const;
+       /// return true if the char is a word separator
+       bool isSeparator(lyx::pos_type pos) const { return getChar(pos) == ' '; }
        ///
        bool isLineSeparator(lyx::pos_type pos) const;
        /// True if the character/inset at this point can be part of a word
@@ -357,9 +373,9 @@ public:
        ParagraphParameters const & params() const;
 
        ///
-       Row & getRow(lyx::pos_type pos);
+       Row & getRow(lyx::pos_type pos, bool boundary);
        ///
-       Row const & getRow(lyx::pos_type pos) const;
+       Row const & getRow(lyx::pos_type pos, bool boundary) const;
        ///
        size_t pos2row(lyx::pos_type pos) const;
 
@@ -381,6 +397,11 @@ public:
 
        /// dump some information to lyxerr
        void dump() const;
+
+public:
+       ///
+       InsetList insetlist;
+
 private:
        /// cached dimensions of paragraph
        Dimension dim_;
@@ -397,6 +418,7 @@ private:
        /// end of label
        lyx::pos_type begin_of_body_;
 
+       /// Pimpl away stuff
        class Pimpl;
        ///
        friend class Paragraph::Pimpl;