/* This file is part of * ====================================================== * * LyX, The Document Processor * * Copyright 1995 Matthias Ettrich * Copyright 1995-2000 The LyX Team. * * ====================================================== */ #include #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++; } 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; }