]> git.lyx.org Git - lyx.git/blobdiff - src/paragraph_pimpl.h
fix typo that put too many include paths for most people
[lyx.git] / src / paragraph_pimpl.h
index 628f20d5e9e976d4055674968a438f2f245a4280..c504bc85aa806a0ceb5dda37ce001d2fa1334662 100644 (file)
@@ -1,9 +1,9 @@
 // -*- C++ -*-
 /* This file is part of
- * ====================================================== 
- * 
+ * ======================================================
+ *
  *           LyX, The Document Processor
- *      
+ *
  *         Copyright 1995 Matthias Ettrich
  *          Copyright 1995-2001 The LyX Team.
  *
 
 #include "paragraph.h"
 #include "ParagraphParameters.h"
+
 #include <boost/array.hpp>
 
+class LyXLayout;
+
 struct Paragraph::Pimpl {
+       ///
+       typedef std::vector<value_type> TextContainer;
+
        ///
        Pimpl(Paragraph * owner);
        /// Copy constructor
        Pimpl(Pimpl const &, Paragraph * owner, bool same_ids = false);
        ///
-       Paragraph::size_type size() const {
+       lyx::pos_type size() const {
                return text.size();
        }
        ///
@@ -34,20 +40,18 @@ struct Paragraph::Pimpl {
        ///
        void setContentsFromPar(Paragraph const * par);
        ///
-       Paragraph::value_type
-       getChar(Paragraph::size_type pos) const;
+       value_type getChar(lyx::pos_type pos) const;
        ///
-       void setChar(Paragraph::size_type pos, Paragraph::value_type c);
+       void setChar(lyx::pos_type pos, value_type c);
        ///
-       void insertChar(Paragraph::size_type pos,
-                       Paragraph::value_type c,
-                       LyXFont const & font);
+       void insertChar(lyx::pos_type pos, value_type c, LyXFont const & font);
        ///
-       void insertInset(Paragraph::size_type pos,
-                        Inset * inset,
-                        LyXFont const & font);
+       void insertInset(lyx::pos_type pos, Inset * inset, LyXFont const & font);
        ///
-       void erase(Paragraph::size_type pos);
+       void erase(lyx::pos_type pos);
+       ///
+       LyXFont const realizeFont(LyXFont const & font,
+                                 BufferParams const & bparams) const;
        ///
        Inset * inset_owner;
        ///
@@ -59,8 +63,7 @@ struct Paragraph::Pimpl {
        struct matchIT {
                /// used by lower_bound and upper_bound
                inline
-               int operator()(Paragraph::InsetTable const & a,
-                              Paragraph::InsetTable const & b) const {
+               int operator()(InsetTable const & a, InsetTable const & b) const {
                        return a.pos < b.pos;
                }
        };
@@ -77,29 +80,29 @@ struct Paragraph::Pimpl {
        */
        struct FontTable  {
                ///
-               FontTable(size_type p, LyXFont const & f)
+               FontTable(lyx::pos_type p, LyXFont const & f)
                        : pos_(p)
                        {
                                font_ = container.get(f);
                        }
                ///
-               size_type pos() const { return pos_; }
+               lyx::pos_type pos() const { return pos_; }
                ///
-               void pos(size_type p) { pos_ = p; }
+               void pos(lyx::pos_type p) { pos_ = p; }
                ///
                LyXFont const & font() const { return *font_; }
                ///
                void font(LyXFont const & f) { font_ = container.get(f);}
        private:
                /// End position of paragraph this font attribute covers
-               size_type pos_;
+               lyx::pos_type pos_;
                /** Font. Interpretation of the font values:
-                   If a value is LyXFont::INHERIT_*, it means that the font 
+                   If a value is LyXFont::INHERIT_*, it means that the font
                    attribute is inherited from either the layout of this
-                   paragraph or, in the case of nested paragraphs, from the 
-                   layout in the environment one level up until completely 
+                   paragraph or, in the case of nested paragraphs, from the
+                   layout in the environment one level up until completely
                    resolved.
-                   The values LyXFont::IGNORE_* and LyXFont::TOGGLE are NOT 
+                   The values LyXFont::IGNORE_* and LyXFont::TOGGLE are NOT
                    allowed in these font tables.
                */
                boost::shared_ptr<LyXFont> font_;
@@ -112,8 +115,7 @@ struct Paragraph::Pimpl {
        struct matchFT {
                /// used by lower_bound and upper_bound
                inline
-               int operator()(Paragraph::Pimpl::FontTable const & a,
-                              Paragraph::Pimpl::FontTable const & b) const {
+               int operator()(FontTable const & a, FontTable const & b) const {
                        return a.pos() < b.pos();
                }
        };
@@ -127,7 +129,7 @@ struct Paragraph::Pimpl {
                                 std::ostream &, TexRow & texrow);
        ///
        void simpleTeXBlanks(std::ostream &, TexRow & texrow,
-                            size_type const i,
+                            lyx::pos_type const i,
                             int & column, LyXFont const & font,
                             LyXLayout const & style);
        ///
@@ -137,7 +139,7 @@ struct Paragraph::Pimpl {
                                   LyXFont & font, LyXFont & running_font,
                                   LyXFont & basefont, bool & open_font,
                                   LyXLayout const & style,
-                                  size_type & i,
+                                  lyx::pos_type & i,
                                   int & column, value_type const c);
        ///
        Paragraph * getParFromID(int id) const;
@@ -148,6 +150,10 @@ struct Paragraph::Pimpl {
        ///
        ParagraphParameters params;
 private:
+       /// match a string against a particular point in the paragraph
+       bool isTextAt(BufferParams const &,
+                     string const & str, lyx::pos_type pos);
+
        /// Who owns us?
        Paragraph * owner_;
        ///