SVN commit 541387 by cgilles:
digikam from trunk : DImg::RAWLoader : restore RAW loading in digiKam - Fix broken loading with dcraw and all parameter witch require a value. Since we use KProcess, implementation need to use QString at all, especially to add space between option and value. The better way is to use QString::arg() method. - Add comments about dcraw Quality rules with digiKam. CCMAIL: [hidden email] M +20 -8 rawloader.cpp --- trunk/extragear/graphics/digikam/libs/dimg/loaders/rawloader.cpp #541386:541387 @@ -267,22 +267,27 @@ connect(m_process, SIGNAL(processExited(KProcess *)), this, SLOT(slotProcessExited(KProcess *))); + connect(m_process, SIGNAL(receivedStdout(KProcess *, char *, int)), this, SLOT(slotReceivedStdout(KProcess *, char *, int))); + connect(m_process, SIGNAL(receivedStderr(KProcess *, char *, int)), this, SLOT(slotReceivedStderr(KProcess *, char *, int))); // run dcraw with options: // -c : write to stdout + // // -2 : 8bit ppm output // OR // -4 : 16bit ppm output + // // -f : Interpolate RGB as four colors. This blurs the image a little, but it eliminates false 2x2 mesh patterns. // -a : Use automatic white balance // -w : Use camera white balance, if possible // -n : Don't clip colors // -s : Use secondary pixels (Fuji Super CCD SR only) - // -q : Use simple bilinear interpolation for quick results + // -q : Use simple bilinear interpolation for quick results. Warning: this option require arguments + // depending dcraw version (look below) // -B : Use bilateral filter to smooth noise while preserving edges. // -p : Use the input ICC profiles to define the camera's raw colorspace. // -o : Use ICC profiles to define the output colorspace. @@ -313,10 +318,17 @@ *m_process << "-b 0.25"; } + // Since dcraw 0.8, the command line compatibility have been broken. + // To use Quality settings, we will use : + // '-q' alone (dcraw < 8.0) + // '-q value' (dcraw >= 8.0) + // In fact, m_rawDecodingSettings.enableRAWQuality is used to preserve compatibility. + QString rawQuality = "-q"; + if (m_rawDecodingSettings.enableRAWQuality) { - rawQuality += " " + QString::number(m_rawDecodingSettings.RAWQuality); + rawQuality.append(QString(" %1").arg(QString::number(m_rawDecodingSettings.RAWQuality))); } *m_process << rawQuality; @@ -335,8 +347,7 @@ break; case RawDecodingSettings::USERPROFILE: - *m_process << "-p " - + QFile::encodeName( m_rawDecodingSettings.cameraICCProfilePath ); + *m_process << QString("-p %1").arg(QFile::encodeName( m_rawDecodingSettings.cameraICCProfilePath )); break; default: @@ -346,8 +357,7 @@ if (m_rawDecodingSettings.ICCColorCorrectionMode != RawDecodingSettings::NOICC && !m_rawDecodingSettings.outputICCProfilePath.isEmpty()) { - *m_process << "-o " - + QFile::encodeName( m_rawDecodingSettings.outputICCProfilePath ); + *m_process << QString("-o %1").arg(QFile::encodeName( m_rawDecodingSettings.outputICCProfilePath )); } *m_process << QFile::encodeName( m_filePath ); @@ -427,9 +437,11 @@ int i = 0; int counter = 0; - while (i < buflen) { + while (i < buflen) + { if (counter == 3) break; - if (buffer[i] == '\n') { + if (buffer[i] == '\n') + { counter++; } ++i; _______________________________________________ Digikam-devel mailing list [hidden email] https://mail.kde.org/mailman/listinfo/digikam-devel |
Free forum by Nabble | Edit this page |