lyx_mirror/src/texrow.C
Lars Gullik Bjønnes 2889b5fd3e some small stuff before the meeting begins for real
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@806 a592a061-630c-0410-9148-cb99ea01b6c8
2000-06-08 23:16:16 +00:00

86 lines
1.6 KiB
C

/* This file is part of
* ======================================================
*
* LyX, The Document Processor
*
* Copyright 1995 Matthias Ettrich
* Copyright 1995-2000 The LyX Team.
*
* ====================================================== */
#include <config.h>
#ifdef __GNUG__
#pragma implementation
#endif
#include "texrow.h"
#include "lyxparagraph.h"
#include "debug.h"
// Delete linked list
void TexRow::reset()
{
rowlist.clear();
count = 0;
lastpar = 0;
lastpos = -1;
}
// Defines paragraph and position for the beginning of this row
void TexRow::start(LyXParagraph * par, int pos)
{
lastpar = par;
lastpos = pos;
}
// Insert node when line is completed
void TexRow::newline()
{
RowItem tmp;
tmp.pos(lastpos);
if (lastpar)
tmp.id(lastpar->id());
else
tmp.id(-1);
tmp.rownumber(++count);
rowlist.push_back(tmp);
}
void TexRow::getIdFromRow(int row, int & id, int & pos)
{
RowList::const_iterator cit = rowlist.begin();
for (; cit != rowlist.end(); ++cit) {
if ((*cit).rownumber() == row) break;
}
if (cit != rowlist.end()) {
RowList::iterator kit = rowlist.begin();
// Increase the pos of all rows with the
// same id (and where the pos is larger)
// to avoid putting errorinsets at the
// same pos.
for(; kit != rowlist.end(); ++kit) {
if (&(*kit) != &(*cit)
&& (*kit).id() == (*cit).id()
&& (*kit).pos() >= (*cit).pos())
(*kit).pos((*kit).pos() + 1);
}
id = (*cit).id();
pos = (*cit).pos();
} else {
id = -1;
pos = 0;
}
}
TexRow & TexRow::operator+= (TexRow const & tr)
{
rowlist.insert(rowlist.end(), tr.rowlist.begin(), tr.rowlist.end());
return *this;
}