#include "outputparams.h"
#include "texrow.h"
+#include <boost/next_prior.hpp>
using lyx::pos_type;
using std::ostream;
-// Initialize static member.
-ShareContainer<LyXFont> Paragraph::Pimpl::FontTable::container;
// Initialization of the counter for the paragraph id's,
unsigned int Paragraph::Pimpl::paragraph_id = 0;
}
-void Paragraph::Pimpl::insertChar(pos_type pos, value_type c,
- LyXFont const & font, Change change)
+void Paragraph::Pimpl::insertChar(pos_type pos, value_type c, Change change)
{
BOOST_ASSERT(pos <= size());
if (pos == size()) {
// when appending characters, no need to update tables
owner_->text_.push_back(c);
- owner_->setFont(pos, font);
return;
}
// Update the insets
owner_->insetlist.increasePosAfterPos(pos);
-
- owner_->setFont(pos, font);
}
void Paragraph::Pimpl::insertInset(pos_type pos,
- InsetOld * inset, LyXFont const & font, Change change)
+ InsetBase * inset, Change change)
{
BOOST_ASSERT(inset);
BOOST_ASSERT(pos <= size());
- insertChar(pos, META_INSET, font, change);
+ insertChar(pos, META_INSET, change);
BOOST_ASSERT(owner_->text_[pos] == META_INSET);
// Add a new entry in the insetlist.
owner_->insetlist.insert(inset, pos);
-
- if (inset_owner)
- inset->setOwner(inset_owner);
}
// only allow the actual removal if it was /new/ text
if (changetype != Change::INSERTED) {
if (owner_->text_[pos] == Paragraph::META_INSET) {
- InsetOld * i(owner_->getInset(pos));
- i->markErased();
+ owner_->getInset(pos)->markErased();
}
return false;
}
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;
}
if (c != '\0')
os << c;
} else {
- InsetOld const * inset = owner_->getInset(i);
- inset->plaintext(buf, os, runparams);
+ owner_->getInset(i)->plaintext(buf, os, runparams);
}
return;
}
// and then split to handle the two modes separately.
switch (c) {
case Paragraph::META_INSET: {
- InsetOld * inset = owner_->getInset(i);
+ InsetBase * inset = owner_->getInset(i);
// FIXME: remove this check
if (!inset)
break;
// FIXME: move this to InsetNewline::latex
- if (inset->lyxCode() == InsetOld::NEWLINE_CODE) {
+ if (inset->lyxCode() == InsetBase::NEWLINE_CODE) {
// newlines are handled differently here than
// the default in simpleTeXSpecialChars().
if (!style.newline_allowed) {
bool close = false;
ostream::pos_type const len = os.tellp();
- if ((inset->lyxCode() == InsetOld::GRAPHICS_CODE
- || inset->lyxCode() == InsetOld::MATH_CODE
- || inset->lyxCode() == InsetOld::URL_CODE)
+ if ((inset->lyxCode() == InsetBase::GRAPHICS_CODE
+ || inset->lyxCode() == InsetBase::MATH_CODE
+ || inset->lyxCode() == InsetBase::URL_CODE)
&& running_font.isRightToLeft()) {
os << "\\L{";
close = true;
column += 17;
break;
- case '*': case '[': case ']':
+ case '*': case '[':
// avoid being mistaken for optional arguments
os << '{' << c << '}';
column += 2;
features.require("ParagraphLeftIndent");
// then the insets
- InsetList::iterator icit = owner_->insetlist.begin();
- InsetList::iterator iend = owner_->insetlist.end();
+ InsetList::const_iterator icit = owner_->insetlist.begin();
+ InsetList::const_iterator iend = owner_->insetlist.end();
for (; icit != iend; ++icit) {
if (icit->inset) {
icit->inset->validate(features);
if (layout.needprotect &&
- icit->inset->lyxCode() == InsetOld::FOOT_CODE)
+ icit->inset->lyxCode() == InsetBase::FOOT_CODE)
features.require("NeedLyXFootnoteCode");
}
}