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 }