void CpFindTask::run(ThreadWeaver::JobPointer, ThreadWeaver::Thread*) { // Run CPFind to get control points and order the images cpFindPtoUrl = tmpDir; cpFindPtoUrl.setPath(cpFindPtoUrl.path() + QLatin1String("cp_pano.pto")); QStringList args; if (celeste) args << QLatin1String("--celeste"); args << QLatin1String("-o"); args << cpFindPtoUrl.toLocalFile(); args << ptoUrl.toLocalFile(); runProcess(args); // CPFind does not return an error code when something went wrong... QFile ptoOutput(cpFindPtoUrl.toLocalFile()); if (!ptoOutput.exists()) { successFlag = false; errString = getProcessError(); } printDebug(QLatin1String("cpfind")); }
void OptimisationTask::run(ThreadWeaver::JobPointer, ThreadWeaver::Thread*) { autoOptimiserPtoUrl = tmpDir.resolved(QUrl::fromLocalFile(QLatin1String("auto_op_pano.pto"))); QStringList args; args << QLatin1String("-am"); if (levelHorizon) args << QLatin1String("-l"); if (!buildGPano) args << QLatin1String("-s"); args << QLatin1String("-o"); args << autoOptimiserPtoUrl.toLocalFile(); args << ptoUrl.toLocalFile(); runProcess(args); // AutoOptimiser does not return an error code when something went wrong... QFile ptoOutput(autoOptimiserPtoUrl.toLocalFile()); if (!ptoOutput.exists()) { successFlag = false; errString = getProcessError(); } printDebug(QLatin1String("autooptimiser")); }
bool EnfuseFinalTask::startEnfuse(const KUrl::List& inUrls, KUrl& outUrl, const EnfuseSettings& settings, const QString& enfusePath, QString& errors) { QString comp; QString ext = KPSaveSettingsWidget::extensionForFormat(settings.outputFormat); if (ext == QString(".tif")) comp = QString("--compression=DEFLATE"); outUrl.setFileName(QString(".kipi-expoblending-tmp-") + QString::number(QDateTime::currentDateTime().toTime_t()) + ext); enfuseProcess = new KProcess; enfuseProcess->clearProgram(); enfuseProcess->setOutputChannelMode(KProcess::MergedChannels); QStringList args; args << enfusePath; if (!settings.autoLevels) { args << "-l"; args << QString::number(settings.levels); } if (settings.ciecam02) args << "-c"; if (!comp.isEmpty()) args << comp; if (settings.hardMask) { if (enfuseVersion4x) args << "--hard-mask"; else args << "--HardMask"; } if (enfuseVersion4x) { args << QString("--exposure-weight=%1").arg(settings.exposure); args << QString("--saturation-weight=%1").arg(settings.saturation); args << QString("--contrast-weight=%1").arg(settings.contrast); } else { args << QString("--wExposure=%1").arg(settings.exposure); args << QString("--wSaturation=%1").arg(settings.saturation); args << QString("--wContrast=%1").arg(settings.contrast); } args << "-v"; args << "-o"; args << outUrl.toLocalFile(); foreach(const KUrl& url, inUrls) args << url.toLocalFile(); enfuseProcess->setProgram(args); kDebug() << "Enfuse command line: " << enfuseProcess->program(); enfuseProcess->start(); if (!enfuseProcess->waitForFinished(-1)) { successFlag = false; errors = getProcessError(enfuseProcess); return false; } kDebug() << "Enfuse output url: " << outUrl; kDebug() << "Enfuse exit status: " << enfuseProcess->exitStatus(); kDebug() << "Enfuse exit code: " << enfuseProcess->exitCode(); if (enfuseProcess->exitStatus() != QProcess::NormalExit) { successFlag = false; return false; } if (enfuseProcess->exitCode() == 0) { // Process finished successfully ! return true; } errors = getProcessError(enfuseProcess); successFlag = false; return false; }