Warning, file /office/calligra/filters/karbon/xfig/XFigImportFilter.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* This file is part of the Calligra project, made within the KDE community. 0002 0003 SPDX-FileCopyrightText: 2012 Friedrich W. H. Kossebau <kossebau@kde.org> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #include "XFigImportFilter.h" 0009 0010 // filter 0011 #include "XFigParser.h" 0012 #include "XFigDocument.h" 0013 #include "XFigOdgWriter.h" 0014 // Calligra core 0015 #include <KoOdf.h> 0016 #include <KoStore.h> 0017 #include <KoFilterChain.h> 0018 // KF5 0019 #include <kpluginfactory.h> 0020 // Qt 0021 #include <QFile> 0022 0023 0024 K_PLUGIN_FACTORY_WITH_JSON(XFigImportFactory, "calligra_filter_xfig2odg.json", 0025 registerPlugin<XFigImportFilter>();) 0026 0027 0028 XFigImportFilter::XFigImportFilter( QObject* parent, const QVariantList& ) 0029 : KoFilter(parent) 0030 { 0031 } 0032 0033 XFigImportFilter::~XFigImportFilter() 0034 { 0035 } 0036 0037 KoFilter::ConversionStatus 0038 XFigImportFilter::convert( const QByteArray& from, const QByteArray& to ) 0039 { 0040 if ((from != "image/x-xfig") || 0041 (to != "application/vnd.oasis.opendocument.graphics")) { 0042 return KoFilter::NotImplemented; 0043 } 0044 0045 // prepare input 0046 QFile inputFile( m_chain->inputFile() ); 0047 if( ! inputFile.open(QIODevice::ReadOnly) ) 0048 { 0049 return KoFilter::FileNotFound; 0050 } 0051 0052 // prepare output 0053 KoStore* outputStore = KoStore::createStore( m_chain->outputFile(), KoStore::Write, 0054 KoOdf::mimeType(KoOdf::Graphics), KoStore::Zip ); 0055 if( ! outputStore ) { 0056 return KoFilter::StorageCreationError; 0057 } 0058 0059 XFigOdgWriter odgWriter( outputStore ); 0060 0061 // translate! 0062 XFigDocument* document = XFigParser::parse( &inputFile ); 0063 if( ! document ) { 0064 return KoFilter::CreationError; 0065 } 0066 0067 const bool isWritten = odgWriter.write(document); 0068 0069 delete document; 0070 0071 return isWritten ? KoFilter::OK : KoFilter::CreationError; 0072 } 0073 0074 #include "XFigImportFilter.moc"