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"