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"