[Digikam-devel] [Bug 125733] Enabling 'Always apply ICM profiles' can lead to suprising results

Gilles Caulier caulier.gilles at free.fr
Mon May 15 15:24:31 CEST 2006


------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
         
http://bugs.kde.org/show_bug.cgi?id=125733         




------- Additional Comments From caulier.gilles free fr  2006-05-15 15:24 -------
SVN commit 541066 by cgilles:

digikam from trunk : add 2 new button on preview of ICC color correction dialog to see embedded or output ICC color profile informations.

CCMAIL: digikam-devel kde org, francisco.jct gmail com
CCBUGS: 125733

 M  +15 -7     libs/dialogs/iccprofileinfodlg.cpp  
 M  +1 -2      libs/dialogs/iccprofileinfodlg.h  
 M  +20 -0     libs/dimg/filters/icctransform.cpp  
 M  +7 -2      libs/dimg/filters/icctransform.h  
 M  +1 -0      utilities/imageeditor/canvas/Makefile.am  
 M  +28 -5     utilities/imageeditor/canvas/colorcorrectiondlg.cpp  
 M  +11 -1     utilities/imageeditor/canvas/colorcorrectiondlg.h  


--- trunk/extragear/graphics/digikam/libs/dialogs/iccprofileinfodlg.cpp #541065:541066
 @ -1,5 +1,4  @
 /* ============================================================
- * File  : iccprofileinfodlg.cpp
  * Author: Gilles Caulier <caulier dot gilles at kdemail dot net>
  * Date  : 2006-02-16
  * Description : a dialog to display icc profile informations.
 @ -54,15 +53,21  @
 namespace Digikam
 {
 
-ICCProfileInfoDlg::ICCProfileInfoDlg(QWidget* parent, const QString& profilePath)
+ICCProfileInfoDlg::ICCProfileInfoDlg(QWidget* parent, const QString& profilePath,
+                                     const QByteArray& profileData)
                  : KDialogBase(Plain, i18n("Color Profile Info"), Help|Ok, Ok,
                                parent, 0, true, true)
 {
     setHelp("iccprofile.anchor", "digikam");
 
     QString intent;
+    cmsHPROFILE hProfile=0;
 
-    cmsHPROFILE hProfile        = cmsOpenProfileFromFile(QFile::encodeName(profilePath), "r");
+    if (profileData.isEmpty())
+        hProfile = cmsOpenProfileFromFile(QFile::encodeName(profilePath), "r");
+    else 
+        hProfile = cmsOpenProfileFromMem(profileData.data(), (DWORD)profileData.size());
+        
     QString profileName         = QString((cmsTakeProductName(hProfile)));
     QString profileDescription  = QString((cmsTakeProductDesc(hProfile)));
     QString profileManufacturer = QString(cmsTakeCopyright(hProfile));
 @ -108,10 +113,13  @
     grid->addMultiCellWidget(label7, 3, 3, 0, 0);
     grid->addMultiCellWidget(label8, 3, 3, 1, 1);
                                      
-    QLabel *label9  = new QLabel(i18n("<p><b>Path:</b>"), plainPage());
-    KSqueezedTextLabel *label10 = new KSqueezedTextLabel(profilePath, plainPage());
-    grid->addMultiCellWidget(label9, 4, 4, 0, 0);
-    grid->addMultiCellWidget(label10, 4, 4, 1, 1);
+    if (profileData.isEmpty())
+    {
+        QLabel *label9  = new QLabel(i18n("<p><b>Path:</b>"), plainPage());
+        KSqueezedTextLabel *label10 = new KSqueezedTextLabel(profilePath, plainPage());
+        grid->addMultiCellWidget(label9, 4, 4, 0, 0);
+        grid->addMultiCellWidget(label10, 4, 4, 1, 1);
+    }
                                      
     QLabel *label11  = new QLabel(i18n("<p><b>CIE diagram:</b>"), plainPage());
     CIETongueWidget *cieTongue = new CIETongueWidget(256, 256, plainPage());
--- trunk/extragear/graphics/digikam/libs/dialogs/iccprofileinfodlg.h #541065:541066
 @ -1,5 +1,4  @
 /* ============================================================
- * File  : iccprofileinfodlg.h
  * Author: Gilles Caulier <caulier dot gilles at kdemail dot net>
  * Date  : 2006-02-16
  * Description : a dialog to display icc profile informations.
 @ -46,7 +45,7  @
 
 public:
 
-    ICCProfileInfoDlg(QWidget *parent, const QString& profilePath);
+    ICCProfileInfoDlg(QWidget *parent, const QString& profilePath, const QByteArray& profileData=QByteArray());
     ~ICCProfileInfoDlg();
 
 };
--- trunk/extragear/graphics/digikam/libs/dimg/filters/icctransform.cpp #541065:541066
 @ -80,6 +80,26  @
     return d->has_output_profile;
 }
 
+QByteArray IccTransform::embeddedProfile() const
+{
+    return d->embedded_profile;
+}
+
+QByteArray IccTransform::inputProfile() const
+{
+    return d->input_profile;
+}
+
+QByteArray IccTransform::outputProfile() const
+{
+    return d->output_profile;
+}
+
+QByteArray IccTransform::proofProfile() const
+{
+    return d->proof_profile;
+}
+
 void IccTransform::getTransformType(bool do_proof_profile)
 {
     if (do_proof_profile)
--- trunk/extragear/graphics/digikam/libs/dimg/filters/icctransform.h #541065:541066
 @ -45,12 +45,17  @
     
     void getTransformType(bool do_proof_profile);
     void apply(DImg& image);
-    void apply(DImg& image, QByteArray& profile, int intent, bool useBPC = false, bool checkGamut = false,
-               bool useBuiltin=false);
+    void apply(DImg& image, QByteArray& profile, int intent, 
+               bool useBPC=false, bool checkGamut=false, bool useBuiltin=false);
     void getEmbeddedProfile(DImg image);
 
     int  getRenderingIntent();
     
+    QByteArray embeddedProfile() const;
+    QByteArray inputProfile() const;
+    QByteArray outputProfile() const;
+    QByteArray proofProfile() const;
+    
     //Input profile from file
     void setProfiles(QString input_profile, QString output_profile);
     void setProfiles(QString input_profile, QString output_profile, QString proof_profile);
--- trunk/extragear/graphics/digikam/utilities/imageeditor/canvas/Makefile.am #541065:541066
 @ -15,6 +15,7  @
 	  -I$(top_srcdir)/digikam/libs/dimg \
 	  -I$(top_srcdir)/digikam/libs/dimg/filters \
           -I$(top_srcdir)/digikam/libs/dmetadata \
+          -I$(top_srcdir)/digikam/libs/dialogs \
 	  -I$(top_srcdir)/digikam/libs/histogram \
 	  -I$(top_srcdir)/digikam/libs/threadimageio \
 	  -I$(top_srcdir)/digikam/utilities/splashscreen \
--- trunk/extragear/graphics/digikam/utilities/imageeditor/canvas/colorcorrectiondlg.cpp #541065:541066
 @ -38,19 +38,24  @
 
 #include "dimg.h"
 #include "icctransform.h"
+#include "iccprofileinfodlg.h"
 #include "colorcorrectiondlg.h"
 
 namespace Digikam
 {
 
 ColorCorrectionDlg::ColorCorrectionDlg(QWidget* parent, DImg *preview, 
-                                       IccTransform *iccTrans, const QString& msg)
-                  : KDialogBase(Plain, i18n("Applying Workspace Color Profile"), Help|Ok|Cancel, Ok,
-                                parent, 0, true, true)
+                                       IccTransform *iccTrans, const QString& msg,
+                                       bool hasEmbededProfile)
+                  : KDialogBase(Plain, i18n("Applying Workspace Color Profile"), Help|User1|User2|Ok|Cancel,
+                                Ok, parent, 0, true, true)
 {
+    m_iccTrans = iccTrans;
     setHelp("iccprofile.anchor", "digikam");
-    setButtonText(Ok, i18n("Apply Profile"));
+    setButtonText(Ok, i18n("Apply"));
     setButtonText(Cancel, i18n("Do Nothing"));
+    setButtonText(User1, i18n("Workspace Profile Info..."));
+    setButtonText(User2, i18n("Image Profile Info..."));
     
     QGridLayout* grid = new QGridLayout( plainPage(), 4, 1, 0, KDialog::spacingHint());
         
 @ -62,7 +67,7  @
     QLabel *message         = new QLabel(msg, plainPage());
     
     previewOriginal->setPixmap(preview->convertToPixmap());
-    previewTarget->setPixmap(preview->convertToPixmap(iccTrans));
+    previewTarget->setPixmap(preview->convertToPixmap(m_iccTrans));
     KIconLoader* iconLoader = KApplication::kApplication()->iconLoader();
     logo->setPixmap(iconLoader->loadIcon("digikam", KIcon::NoGroup, 128, KIcon::DefaultState, 0, true));    
     
 @ -78,5 +83,23  @
 {
 }
 
+void ColorCorrectionDlg::slotUser1()
+{
+    if (m_iccTrans->outputProfile().isEmpty())
+        return;
+
+    ICCProfileInfoDlg infoDlg(this, QString::null, m_iccTrans->outputProfile());
+    infoDlg.exec();
+}
+
+void ColorCorrectionDlg::slotUser2()
+{
+    if (m_iccTrans->embeddedProfile().isEmpty())
+        return;
+
+    ICCProfileInfoDlg infoDlg(this, QString::null, m_iccTrans->embeddedProfile());
+    infoDlg.exec();
+}
+
 }  // NameSpace Digikam
 
--- trunk/extragear/graphics/digikam/utilities/imageeditor/canvas/colorcorrectiondlg.h #541065:541066
 @ -42,9 +42,19  @
 public:
 
     ColorCorrectionDlg(QWidget *parent, DImg *preview, 
-                       IccTransform *iccTrans, const QString& msg);
+                       IccTransform *iccTrans, const QString& msg,
+                       bool hasEmbededProfile=false);
     ~ColorCorrectionDlg();
+    
+protected slots:
+    
+    void slotUser1();
+    void slotUser2();
+    
+private: 
 
+    IccTransform *m_iccTrans;
+
 };
 
 }  // Namespace Digikam


More information about the Digikam-devel mailing list