#include "MLPlineList.h" #include "MLPline.h" MLPlineList::MLPlineList() { } MLPlineList::~MLPlineList() { clearPline(); } void MLPlineList::clearPline() { /*while (!m_PlineList.isEmpty()) { delete m_PlineList.first(); }*/ for (int i = m_PlineList.count() - 1; i >= 0; i--) { delete m_PlineList[i]; m_PlineList[i] = nullptr; } m_PlineList.clear(); } int MLPlineList::getCount() const { return m_PlineList.count(); } void MLPlineList::addPline(MLPline* pPline) { m_PlineList.push_back(pPline); } void MLPlineList::removePline(MLPline* pPline) { m_PlineList.removeOne(pPline); } MLPline* MLPlineList::getPline(int index) const { if (index >= 0 && index < getCount()) { return m_PlineList[index]; } return nullptr; } MLPline* MLPlineList::getPline(char* name) const { return nullptr; } MLPline* MLPlineList::getPline(const QString& sLineName) const { return nullptr; } bool MLPlineList::readPline(const QString& sPath) { QFile file(sPath); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { return false; } QTextStream stream(&file); QString sLine; while (!stream.atEnd()) { sLine = stream.readLine().simplified(); if (!sLine.indexOf("New", 0, Qt::CaseInsensitive)) { while (!stream.atEnd()) { sLine = stream.readLine().simplified(); if (!sLine.indexOf("EndNew", 0, Qt::CaseInsensitive)) break; } } else if (sLine.indexOf("Pline", 0, Qt::CaseInsensitive) >= 0) { QString name; int p = sLine.indexOf("."); if (p > 0 && p < sLine.length() - 1) name = sLine.mid(p + 1); MLPline* pPline = new MLPline; pPline->setName(name.toLocal8Bit().data()); while (!stream.atEnd()) { sLine = stream.readLine().simplified(); if (sLine.isEmpty()) break; double x, y; sscanf(sLine.toLocal8Bit().data(), "%lf,%lf\n", &x, &y); pPline->addTailPt(x, y); } addPline(pPline); } } file.close(); return true; } bool MLPlineList::writePline(const QString& sPath) { QFile file(sPath); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { return false; } QTextStream stream(&file); for (MLPline* pPline : m_PlineList) { pPline->write(stream); } file.close(); return true; } void MLPlineList::write(QTextStream& out) { for (MLPline* pPline : m_PlineList) { pPline->write(out); } }