SVN commit 560198 by cgilles:
digikam from trunk : BUGFIX : use the default color space used by dcraw (sRGB) if digiKam CM is not enable. CCMAIL: [hidden email], [hidden email] M +32 -11 libs/dimg/loaders/rawloader.cpp M +7 -6 libs/dimg/rawdecodingsettings.h M +14 -4 utilities/imageeditor/editor/editorwindow.cpp --- trunk/extragear/graphics/digikam/libs/dimg/loaders/rawloader.cpp #560197:560198 @@ -43,6 +43,7 @@ #include <kdebug.h> #include <kprocess.h> +#include <kstandarddirs.h> // Local includes. @@ -124,10 +125,10 @@ { uchar *image = new uchar[m_width*m_height*8]; - unsigned short *dst = (unsigned short *)image; - uchar *src = m_data; - float fac = 65535.0 / m_rgbmax; - checkpoint = 0; + unsigned short *dst = (unsigned short *)image; + uchar *src = m_data; + float fac = 65535.0 / m_rgbmax; + checkpoint = 0; for (int h = 0; h < m_height; h++) { @@ -238,11 +239,14 @@ void RAWLoader::startProcess() { - if (m_observer && !m_observer->continueQuery(m_image)) + if (m_observer) { - m_running = false; - m_normalExit = false; - return; + if (!m_observer->continueQuery(m_image)) + { + m_running = false; + m_normalExit = false; + return; + } } // create KProcess and build argument list @@ -334,23 +338,40 @@ switch (m_rawDecodingSettings.ICCColorCorrectionMode) { - case RawDecodingSettings::EMBED: + case RawDecodingSettings::EMBED_WORKSPACE: + { *m_process << "-p"; *m_process << "embed"; break; + } - case RawDecodingSettings::USERPROFILE: + case RawDecodingSettings::SRGB_WORKSPACE: + { + *m_process << "-o"; + *m_process << "1"; + + KGlobal::dirs()->addResourceType("profiles", KGlobal::dirs()->kde_default("data") + "digikam/profiles"); + QString directory = KGlobal::dirs()->findResourceDir("profiles", "srgb.icm"); + m_image->getICCProfilFromFile(directory + "srgb.icm"); + break; + } + + case RawDecodingSettings::USER_PROFILES: + { *m_process << "-p"; *m_process << QFile::encodeName( m_rawDecodingSettings.cameraICCProfilePath ); break; + } default: // No ICC color Correction : converter to RAW Color Mode. + { *m_process << "-o"; *m_process << "0"; break; + } } - if (m_rawDecodingSettings.ICCColorCorrectionMode != RawDecodingSettings::NOICC && + if (m_rawDecodingSettings.ICCColorCorrectionMode != RawDecodingSettings::NO_ICC && !m_rawDecodingSettings.outputICCProfilePath.isEmpty()) { *m_process << "-o"; --- trunk/extragear/graphics/digikam/libs/dimg/rawdecodingsettings.h #560197:560198 @@ -35,16 +35,17 @@ public: - enum INPUTICCMODE + enum ICCCOLORCORRECTIONMODE { - NOICC = 0, // No color correction during Raw file decoding. - EMBED, // Using embedded ICC color profile in RAW file. - USERPROFILE // Using user input ICC profile file. + NO_ICC = 0, // No color correction during Raw file decoding. + SRGB_WORKSPACE, // Using default workspace color profile (sRGB) + EMBED_WORKSPACE, // Using embedded workspace color profile in RAW file. + USER_PROFILES // Using user input and workspace profile files. }; RawDecodingSettings() { - ICCColorCorrectionMode = NOICC; + ICCColorCorrectionMode = SRGB_WORKSPACE; cameraICCProfilePath = QString::null; outputICCProfilePath = QString::null; @@ -68,7 +69,7 @@ void optimizeTimeLoading(void) { - ICCColorCorrectionMode = NOICC; + ICCColorCorrectionMode = NO_ICC; enableNoiseReduction = false; enableRAWQuality = false; RGBInterpolate4Colors = false; --- trunk/extragear/graphics/digikam/utilities/imageeditor/editor/editorwindow.cpp #560197:560198 @@ -693,15 +693,15 @@ { KConfig* config = kapp->config(); - // -- Settings for Color Management stuff -------------------------------- + // -- Settings for Color Management stuff ---------------------------------------------- config->setGroup("Color Management"); - d->ICCSettings->renderingSetting = config->readNumEntry("RenderingIntent"); d->ICCSettings->enableCMSetting = config->readBoolEntry("EnableCM", false); d->ICCSettings->askOrApplySetting = config->readBoolEntry("BehaviourICC", false); d->ICCSettings->BPCSetting = config->readBoolEntry("BPCAlgorithm",false); d->ICCSettings->managedViewSetting = config->readBoolEntry("ManagedView", false); + d->ICCSettings->renderingSetting = config->readNumEntry("RenderingIntent"); d->ICCSettings->inputSetting = config->readPathEntry("InProfileFile", QString::null); d->ICCSettings->workspaceSetting = config->readPathEntry("WorkProfileFile", QString::null); d->ICCSettings->monitorSetting = config->readPathEntry("MonitorProfileFile", QString::null); @@ -709,7 +709,7 @@ DImgInterface::instance()->setICCSettings(d->ICCSettings); - // -- IO files format settings ------------------------------------------------ + // -- JPEG, PNG, TIFF files format settings ---------------------------------------------- config->setGroup("ImageViewer Settings"); @@ -723,6 +723,16 @@ m_IOFileSettings->TIFFCompression = config->readBoolEntry("TIFFCompression", false); + // -- RAW pictures decoding settings ------------------------------------------------------ + + // If digiKam Color Management is enable, no need to correct color of decoded RAW image, + // else, sRGB color workspace will be used. + + if (d->ICCSettings->enableCMSetting) + m_IOFileSettings->rawDecodingSettings.ICCColorCorrectionMode = RawDecodingSettings::NO_ICC; + else + m_IOFileSettings->rawDecodingSettings.ICCColorCorrectionMode = RawDecodingSettings::SRGB_WORKSPACE; + m_IOFileSettings->rawDecodingSettings.sixteenBitsImage = config->readBoolEntry("SixteenBitsImage", false); m_IOFileSettings->rawDecodingSettings.automaticColorBalance = config->readBoolEntry("AutomaticColorBalance", true); m_IOFileSettings->rawDecodingSettings.cameraColorBalance = config->readBoolEntry("CameraColorBalance", true); @@ -735,7 +745,7 @@ m_IOFileSettings->rawDecodingSettings.NRSigmaDomain = config->readDoubleNumEntry("NRSigmaDomain", 2.0); m_IOFileSettings->rawDecodingSettings.NRSigmaRange = config->readDoubleNumEntry("NRSigmaRange", 4.0); - // -- GUI Settings ------------------------------------------------------- + // -- GUI Settings ----------------------------------------------------------------------- QSizePolicy rightSzPolicy(QSizePolicy::Preferred, QSizePolicy::Expanding, 2, 1); if(config->hasKey("Splitter Sizes")) _______________________________________________ Digikam-devel mailing list [hidden email] https://mail.kde.org/mailman/listinfo/digikam-devel |
Free forum by Nabble | Edit this page |