File indexing completed on 2024-04-28 04:58:02

0001 /*
0002     SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-KDE-Accepted-GPL
0003     SPDX-FileCopyrightText: 2020 Stefan BrĂ¼ns <stefan.bruens@rwth-aachen.de>
0004 */
0005 
0006 #include "djvucreator.h"
0007 #include "thumbnail-djvu-logsettings.h"
0008 
0009 #include <QImage>
0010 #include <QProcess>
0011 #include <QString>
0012 
0013 #include <KPluginFactory>
0014 
0015 K_PLUGIN_CLASS_WITH_JSON(DjVuCreator, "djvuthumbnail.json")
0016 
0017 DjVuCreator::DjVuCreator(QObject *parent, const QVariantList &args)
0018     : KIO::ThumbnailCreator(parent, args)
0019 {
0020 }
0021 
0022 KIO::ThumbnailResult DjVuCreator::create(const KIO::ThumbnailRequest &request)
0023 {
0024     QProcess ddjvu;
0025 
0026     const QStringList args{QStringLiteral("-page=1"),
0027                            QStringLiteral("-size=") + QString::number(request.targetSize().width()) + QChar('x')
0028                                + QString::number(request.targetSize().height()),
0029                            QStringLiteral("-format=ppm"),
0030                            request.url().toLocalFile()};
0031 
0032     ddjvu.start(QStringLiteral("ddjvu"), args);
0033     ddjvu.waitForFinished();
0034 
0035     static bool warnOnce = true;
0036     if (ddjvu.exitCode() != 0) {
0037         if (warnOnce) {
0038             qCWarning(KIO_THUMBNAIL_DJVU_LOG) << ddjvu.error() << ddjvu.readAllStandardError();
0039             warnOnce = false;
0040         }
0041         return KIO::ThumbnailResult::fail();
0042     }
0043 
0044     QImage img;
0045     bool okay = img.load(&ddjvu, "ppm");
0046     return okay ? KIO::ThumbnailResult::pass(img) : KIO::ThumbnailResult::fail();
0047 }
0048 
0049 #include "djvucreator.moc"
0050 #include "moc_djvucreator.cpp"