File indexing completed on 2025-07-06 10:21:33

0001 /* This file is part of the KDE project
0002    SPDX-FileCopyrightText: 2002 Lars Siebold <khandha5@gmx.net>
0003    SPDX-FileCopyrightText: 2002-2003, 2005 Rob Buis <buis@kde.org>
0004    SPDX-FileCopyrightText: 2002, 2005-2006 David Faure <faure@kde.org>
0005    SPDX-FileCopyrightText: 2002 Werner Trobin <trobin@kde.org>
0006    SPDX-FileCopyrightText: 2002 Lennart Kudling <kudling@kde.org>
0007    SPDX-FileCopyrightText: 2004 Nicolas Goutte <nicolasg@snafu.de>
0008    SPDX-FileCopyrightText: 2005 Boudewijn Rempt <boud@valdyas.org>
0009    SPDX-FileCopyrightText: 2005 Raphael Langerhorst <raphael.langerhorst@kdemail.net>
0010    SPDX-FileCopyrightText: 2005 Thomas Zander <zander@kde.org>
0011    SPDX-FileCopyrightText: 2005, 2007-2008 Jan Hambrecht <jaham@gmx.net>
0012    SPDX-FileCopyrightText: 2006 Inge Wallin <inge@lysator.liu.se>
0013    SPDX-FileCopyrightText: 2006 Martin Pfeiffer <hubipete@gmx.net>
0014    SPDX-FileCopyrightText: 2006 Gábor Lehel <illissius@gmail.com>
0015    SPDX-FileCopyrightText: 2006 Laurent Montel <montel@kde.org>
0016    SPDX-FileCopyrightText: 2006 Christian Mueller <cmueller@gmx.de>
0017    SPDX-FileCopyrightText: 2006 Ariya Hidayat <ariya@kde.org>
0018    SPDX-FileCopyrightText: 2010 Thorsten Zachmann <zachmann@kde.org>
0019 
0020    SPDX-License-Identifier: LGPL-2.0-or-later
0021 */
0022 
0023 #include "SvgExport.h"
0024 #include <SvgWriter.h>
0025 
0026 #include <KarbonDocument.h>
0027 #include <KarbonPart.h>
0028 
0029 #include <KoDocument.h>
0030 #include <KoFilterChain.h>
0031 #include <KoPAPageBase.h>
0032 #include <KoPageLayout.h>
0033 
0034 #include <kpluginfactory.h>
0035 
0036 #include <QString>
0037 
0038 K_PLUGIN_FACTORY_WITH_JSON(SvgExportFactory, "calligra_filter_karbon2svg.json",
0039                            registerPlugin<SvgExport>();)
0040 
0041 SvgExport::SvgExport(QObject*parent, const QVariantList&)
0042     : KoFilter(parent)
0043 {
0044 }
0045 
0046 KoFilter::ConversionStatus SvgExport::convert(const QByteArray& from, const QByteArray& to)
0047 {
0048     if (to != "image/svg+xml" || from != "application/vnd.oasis.opendocument.graphics")
0049         return KoFilter::NotImplemented;
0050 
0051     KoDocument * document = m_chain->inputDocument();
0052     if (!document)
0053         return KoFilter::ParsingError;
0054 
0055     KarbonDocument * karbonPart = dynamic_cast<KarbonDocument*>(document);
0056     if (!karbonPart)
0057         return KoFilter::WrongFormat;
0058 
0059     KoPAPageBase *page = karbonPart->pages().value(0);
0060     if (!page) {
0061         return KoFilter::WrongFormat;
0062     }
0063     const KoPageLayout &layout = page->pageLayout();
0064     const QSizeF size(layout.width, layout.height);
0065     SvgWriter writer(page->shapes(), size);
0066     if (!writer.save(m_chain->outputFile(), true))
0067         return KoFilter::CreationError;
0068 
0069     return KoFilter::OK;
0070 }
0071 
0072 #include "SvgExport.moc"