]> git.lyx.org Git - lyx.git/blobdiff - src/Paragraph.h
Merge branch 'master' of lyx:lyx
[lyx.git] / src / Paragraph.h
index ed8d7f4027e3edc641b1aaea0c6263b38db54391..f5d6a23b26f9b18f20f47542ab3a6c2cdf870c62 100644 (file)
@@ -77,12 +77,34 @@ public:
        {
                return first == s.first && last == s.last;
        }
-       
+
        inline bool inside(pos_type p) const
        {
                return first <= p && p <= last;
        }
 
+       inline size_t size() const
+       {
+               return empty() ? 0 : last - first;
+       }
+       
+
+       inline FontSpan intersect(FontSpan const & f) const
+       {
+               FontSpan result = FontSpan();
+               if (inside(f.first))
+                       result.first = f.first;
+               else if (f.inside(first))
+                       result.first = first;
+               else
+                       return result;
+               if (inside(f.last))
+                       result.last = f.last;
+               else if (f.inside(last))
+                       result.last = last;
+               return result;
+       }
+       
        inline bool empty() const
        {
                return first > last;
@@ -170,8 +192,8 @@ public:
 
        /// \param force means: output even if layout.inpreamble is true.
        void latex(BufferParams const &, Font const & outerfont, otexstream &,
-                  TexRow & texrow, OutputParams const &,
-                  int start_pos = 0, int end_pos = -1, bool force = false) const;
+                  OutputParams const &, int start_pos = 0, int end_pos = -1,
+                  bool force = false) const;
 
        /// Can we drop the standard paragraph wrapper?
        bool emptyTag() const;
@@ -398,6 +420,9 @@ public:
        bool isChar(pos_type pos) const;
        /// True if the element at this point is a space
        bool isSpace(pos_type pos) const;
+       /// True if the element at this point is a hard hyphen or a apostrophe
+       /// If it is enclosed by spaces return false
+       bool isHardHyphenOrApostrophe(pos_type pos) const;
 
        /// returns true if at least one line break or line separator has been deleted
        /// at the beginning of the paragraph (either physically or logically)
@@ -456,8 +481,10 @@ public:
                bool check_learned = false) const;
 
        /// Spell checker status at position \p pos.
-       /// \return true if pointed position is misspelled.
-       bool isMisspelled(pos_type pos) const;
+       /// If \p check_boundary is true the status of position immediately
+       /// before \p pos is tested too if it is at word boundary.
+       /// \return true if one of the tested positions is misspelled.
+       bool isMisspelled(pos_type pos, bool check_boundary = false) const;
 
        /// \return true if both positions are inside the same
        /// spell range - i.e. the same word.