]> git.lyx.org Git - lyx.git/blobdiff - src/paragraph_pimpl.C
mathed uglyfication
[lyx.git] / src / paragraph_pimpl.C
index 413f49d4c324a4aca30a4ab9e507c6e35965370f..91d67776610bbff0ca207c5353890633543ae561 100644 (file)
 #include "encoding.h"
 #include "language.h"
 #include "LaTeXFeatures.h"
-#include "latexrunparams.h"
+#include "LColor.h"
 #include "lyxlength.h"
 #include "lyxrc.h"
+#include "outputparams.h"
 #include "texrow.h"
 
 
@@ -30,7 +31,8 @@ using lyx::pos_type;
 
 using std::endl;
 using std::upper_bound;
-
+using std::lower_bound;
+using std::string;
 using std::ostream;
 
 
@@ -71,7 +73,6 @@ Paragraph::Pimpl::Pimpl(Pimpl const & p, Paragraph * owner)
        : params(p.params), owner_(owner)
 {
        inset_owner = p.inset_owner;
-       text = p.text;
        fontlist = p.fontlist;
        id_ = paragraph_id++;
 
@@ -80,16 +81,9 @@ Paragraph::Pimpl::Pimpl(Pimpl const & p, Paragraph * owner)
 }
 
 
-void Paragraph::Pimpl::clear()
-{
-       text.clear();
-#warning changes ?
-}
-
-
 void Paragraph::Pimpl::setContentsFromPar(Paragraph const & par)
 {
-       text = par.pimpl_->text;
+       owner_->text_ = par.text_;
        if (par.pimpl_->tracking()) {
                changes_.reset(new Changes(*(par.pimpl_->changes_.get())));
        }
@@ -255,31 +249,7 @@ void Paragraph::Pimpl::rejectChange(pos_type start, pos_type end)
 
 Paragraph::value_type Paragraph::Pimpl::getChar(pos_type pos) const
 {
-#if 1
-       // This is in the critical path for loading!
-       pos_type const siz = size();
-
-       BOOST_ASSERT(pos <= siz);
-
-       if (pos == siz) {
-               lyxerr << "getChar() on pos " << pos << " in par id "
-                      << owner_->id() << " of size " << siz
-                      << "  is a bit silly !" << endl;
-               return '\0';
-       }
-
-       return text[pos];
-#else
-       BOOST_ASSERT(pos < size());
-       return text[pos];
-#endif
-}
-
-
-void Paragraph::Pimpl::setChar(pos_type pos, value_type c)
-{
-#warning changes
-       text[pos] = c;
+       return owner_->getChar(pos);
 }
 
 
@@ -296,12 +266,12 @@ void Paragraph::Pimpl::insertChar(pos_type pos, value_type c,
        // maybe inserting ascii text)
        if (pos == size()) {
                // when appending characters, no need to update tables
-               text.push_back(c);
+               owner_->text_.push_back(c);
                owner_->setFont(pos, font);
                return;
        }
 
-       text.insert(text.begin() + pos, c);
+       owner_->text_.insert(owner_->text_.begin() + pos, c);
 
        // Update the font table.
        FontTable search_font(pos, LyXFont());
@@ -327,7 +297,7 @@ void Paragraph::Pimpl::insertInset(pos_type pos,
        BOOST_ASSERT(pos <= size());
 
        insertChar(pos, META_INSET, font, change);
-       BOOST_ASSERT(text[pos] == META_INSET);
+       BOOST_ASSERT(owner_->text_[pos] == META_INSET);
 
        // Add a new entry in the insetlist.
        owner_->insetlist.insert(inset, pos);
@@ -340,11 +310,11 @@ void Paragraph::Pimpl::insertInset(pos_type pos,
 void Paragraph::Pimpl::eraseIntern(pos_type pos)
 {
        // if it is an inset, delete the inset entry
-       if (text[pos] == Paragraph::META_INSET) {
+       if (owner_->text_[pos] == Paragraph::META_INSET) {
                owner_->insetlist.erase(pos);
        }
 
-       text.erase(text.begin() + pos);
+       owner_->text_.erase(owner_->text_.begin() + pos);
 
        // Erase entries in the tables.
        FontTable search_font(pos, LyXFont());
@@ -391,9 +361,8 @@ bool Paragraph::Pimpl::erase(pos_type pos)
 
                // only allow the actual removal if it was /new/ text
                if (changetype != Change::INSERTED) {
-                       if (text[pos] == Paragraph::META_INSET) {
-                               InsetOld * i(owner_->getInset(pos));
-                               i->markErased();
+                       if (owner_->text_[pos] == Paragraph::META_INSET) {
+                               owner_->getInset(pos)->markErased();
                        }
                        return false;
                }
@@ -407,12 +376,9 @@ bool Paragraph::Pimpl::erase(pos_type pos)
 int Paragraph::Pimpl::erase(pos_type start, pos_type end)
 {
        pos_type i = start;
-       pos_type count = end - start;
-       while (count) {
-               if (!erase(i)) {
+       for (pos_type count = end - start; count; --count) {
+               if (!erase(i))
                        ++i;
-               }
-               --count;
        }
        return end - i;
 }
@@ -462,7 +428,7 @@ bool Paragraph::Pimpl::isTextAt(string const & str, pos_type pos) const
 
        // does the wanted text start at point?
        for (string::size_type i = 0; i < str.length(); ++i) {
-               if (str[i] != text[pos + i])
+               if (str[i] != owner_->text_[pos + i])
                        return false;
        }
 
@@ -484,7 +450,7 @@ void Paragraph::Pimpl::simpleTeXSpecialChars(Buffer const & buf,
                                             BufferParams const & bparams,
                                             ostream & os,
                                             TexRow & texrow,
-                                            LatexRunParams const & runparams,
+                                            OutputParams const & runparams,
                                             LyXFont & font,
                                             LyXFont & running_font,
                                             LyXFont & basefont,
@@ -502,7 +468,7 @@ void Paragraph::Pimpl::simpleTeXSpecialChars(Buffer const & buf,
                                os << c;
                } else {
                        InsetOld const * inset = owner_->getInset(i);
-                       inset->ascii(buf, os, 0);
+                       inset->plaintext(buf, os, runparams);
                }
                return;
        }
@@ -553,8 +519,8 @@ void Paragraph::Pimpl::simpleTeXSpecialChars(Buffer const & buf,
                }
 
                bool close = false;
-               int const len = os.tellp();
-               //ostream::pos_type const len = os.tellp();
+               ostream::pos_type const len = os.tellp();
+
                if ((inset->lyxCode() == InsetOld::GRAPHICS_CODE
                     || inset->lyxCode() == InsetOld::MATH_CODE
                     || inset->lyxCode() == InsetOld::URL_CODE)
@@ -592,7 +558,7 @@ void Paragraph::Pimpl::simpleTeXSpecialChars(Buffer const & buf,
                        texrow.start(owner_->id(), i + 1);
                        column = 0;
                } else {
-                       column += int(os.tellp()) - len;
+                       column += os.tellp() - len;
                }
        }
        break;
@@ -766,8 +732,6 @@ void Paragraph::Pimpl::validate(LaTeXFeatures & features,
        BufferParams const & bparams = features.bufferParams();
 
        // check the params.
-       if (params.lineTop() || params.lineBottom())
-               features.require("lyxline");
        if (!params.spacing().isDefault())
                features.require("setspace");