Warning, file /office/calligra/filters/karbon/xfig/XFigStreamLineReader.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002     This file is part of the Calligra project, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2012 Friedrich W. H. Kossebau <kossebau@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.0-or-later
0007 */
0008 
0009 #include "XFigStreamLineReader.h"
0010 
0011 // Qt
0012 #include <QIODevice>
0013 
0014 
0015 XFigStreamLineReader::XFigStreamLineReader(QIODevice* device)
0016   : m_TextStream(device)
0017   , m_ObjectCode(-1)
0018   , m_HasError((device==0)||(! device->isReadable()))
0019 {
0020 }
0021 
0022 XFigStreamLineReader::~XFigStreamLineReader()
0023 {
0024 }
0025 
0026 bool XFigStreamLineReader::atEnd() const
0027 {
0028     return m_HasError ||
0029            m_TextStream.atEnd();
0030 }
0031 
0032 
0033 bool XFigStreamLineReader::readNextObjectLine()
0034 {
0035     if (m_HasError) {
0036         return false;
0037     }
0038 
0039     m_ObjectCode = 0;
0040 
0041     if (readNextLine(CollectComments)) {
0042         QTextStream textStream(&m_Line, QIODevice::ReadOnly);
0043         textStream >> m_ObjectCode;
0044         m_HasError = (textStream.status() != QTextStream::Ok);
0045         if (! m_HasError) {
0046             m_Line.remove(0, textStream.pos());
0047         }
0048     }
0049 
0050     return m_HasError;
0051 }
0052 
0053 
0054 bool XFigStreamLineReader::readNextLine(CommentReadModus commentModus)
0055 {
0056     if (m_HasError) {
0057         return false;
0058     }
0059 
0060     m_Comment.clear();
0061 
0062     while (true) {
0063         if (m_TextStream.atEnd()) {
0064             m_HasError = true;
0065             break;
0066         }
0067 
0068         m_Line = m_TextStream.readLine();
0069 
0070         // skip empty lines
0071         if (m_Line.isEmpty()) {
0072             continue;
0073         }
0074 
0075         // skip (and collect) comment lines
0076         if (m_Line.startsWith(QLatin1Char('#'))) {
0077             if (commentModus == TakeComment) {
0078                 break;
0079             } else if (commentModus == CollectComments) {
0080                 m_Comment += m_Line.mid(1).trimmed() + QLatin1Char('\n');
0081             }
0082             continue;
0083         }
0084 
0085         break;
0086     }
0087 
0088     return (! m_HasError);
0089 }