[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [calligra/calligra/2.9] krita/plugins/formats/tiff: Add a Save Profile checkbox to the tiff export f
From:       Boudewijn Rempt <boud () valdyas ! org>
Date:       2015-09-19 8:54:52
Message-ID: E1ZdDv2-00073K-4n () scm ! kde ! org
[Download RAW message or body]

Git commit 55be1fd496d31d250863766c2eca5c0d5c11c3da by Boudewijn Rempt.
Committed on 19/09/2015 at 08:53.
Pushed by rempt into branch 'calligra/2.9'.

Add a Save Profile checkbox to the tiff export filter

Also a few cleanups, use constData(), add a note to a ten-year
old todo, remove some code commented out since 2006

M  +3    -10   krita/plugins/formats/tiff/kis_dlg_options_tiff.cpp
M  +1    -0    krita/plugins/formats/tiff/kis_tiff_converter.h
M  +12   -12   krita/plugins/formats/tiff/kis_tiff_export.cc
M  +11   -14   krita/plugins/formats/tiff/kis_tiff_writer_visitor.cpp
M  +0    -1    krita/plugins/formats/tiff/kis_tiff_writer_visitor.h
M  +21   -65   krita/plugins/formats/tiff/kis_wdg_options_tiff.ui

http://commits.kde.org/calligra/55be1fd496d31d250863766c2eca5c0d5c11c3da

diff --git a/krita/plugins/formats/tiff/kis_dlg_options_tiff.cpp \
b/krita/plugins/formats/tiff/kis_dlg_options_tiff.cpp index c3392c4..cdff3a4 100644
--- a/krita/plugins/formats/tiff/kis_dlg_options_tiff.cpp
+++ b/krita/plugins/formats/tiff/kis_dlg_options_tiff.cpp
@@ -62,6 +62,7 @@ KisDlgOptionsTIFF::KisDlgOptionsTIFF(QWidget *parent)
     optionswdg->compressionLevelDeflate->setValue(cfg.getInt("deflate", 6));
     optionswdg->kComboBoxFaxMode->setCurrentIndex(cfg.getInt("faxmode", 0));
     optionswdg->compressionLevelPixarLog->setValue(cfg.getInt("pixarlog", 6));
+    optionswdg->chkSaveProfile->setChecked(cfg.getBool("saveProfile", true));
 }
 
 KisDlgOptionsTIFF::~KisDlgOptionsTIFF()
@@ -71,26 +72,18 @@ KisDlgOptionsTIFF::~KisDlgOptionsTIFF()
 
 void KisDlgOptionsTIFF::activated(int index)
 {
-    /*    optionswdg->groupBoxJPEG->hide();
-        optionswdg->groupBoxDeflate->hide();
-        optionswdg->groupBoxCCITGroupCCITG3->hide();
-        optionswdg->groupBoxPixarLog->hide();*/
     switch (index) {
     case 1:
         optionswdg->codecsOptionsStack->setCurrentIndex(1);
-//             optionswdg->groupBoxJPEG->show();
         break;
     case 2:
         optionswdg->codecsOptionsStack->setCurrentIndex(2);
-//             optionswdg->groupBoxDeflate->show();
         break;
     case 6:
         optionswdg->codecsOptionsStack->setCurrentIndex(3);
-//             optionswdg->groupBoxCCITGroupCCITG3->show();
         break;
     case 8:
         optionswdg->codecsOptionsStack->setCurrentIndex(4);
-//             optionswdg->groupBoxPixarLog->show();
         break;
     default:
         optionswdg->codecsOptionsStack->setCurrentIndex(0);
@@ -147,8 +140,7 @@ KisTIFFOptions KisDlgOptionsTIFF::options()
     options.deflateCompress = optionswdg->compressionLevelDeflate->value();
     options.faxMode = optionswdg->kComboBoxFaxMode->currentIndex() + 1;
     options.pixarLogCompress = optionswdg->compressionLevelPixarLog->value();
-
-    qDebug() << options.compressionType << options.predictor << options.alpha << \
options.jpegQuality << options.deflateCompress << options.faxMode << \
options.pixarLogCompress; +    options.saveProfile = \
optionswdg->chkSaveProfile->isChecked();  
     KisPropertiesConfiguration cfg;
     cfg.setProperty("compressiontype", \
optionswdg->kComboBoxCompressionType->currentIndex()); @@ -159,6 +151,7 @@ \
KisTIFFOptions KisDlgOptionsTIFF::options()  cfg.setProperty("deflate", \
options.deflateCompress);  cfg.setProperty("faxmode", options.faxMode - 1);
     cfg.setProperty("pixarlog", options.pixarLogCompress);
+    cfg.setProperty("saveProfile", options.saveProfile);
 
     KisConfig().setExportConfiguration("TIFF", cfg);
 
diff --git a/krita/plugins/formats/tiff/kis_tiff_converter.h \
b/krita/plugins/formats/tiff/kis_tiff_converter.h index 140b3bb..8a84214 100644
--- a/krita/plugins/formats/tiff/kis_tiff_converter.h
+++ b/krita/plugins/formats/tiff/kis_tiff_converter.h
@@ -59,6 +59,7 @@ struct KisTIFFOptions {
     quint16 deflateCompress;
     quint16 faxMode;
     quint16 pixarLogCompress;
+    bool saveProfile;
 };
 
 class KisTIFFConverter : public QObject
diff --git a/krita/plugins/formats/tiff/kis_tiff_export.cc \
b/krita/plugins/formats/tiff/kis_tiff_export.cc index 196a7d3..0a68ecd 100644
--- a/krita/plugins/formats/tiff/kis_tiff_export.cc
+++ b/krita/plugins/formats/tiff/kis_tiff_export.cc
@@ -59,27 +59,28 @@ KisImportExportFilter::ConversionStatus \
KisTIFFExport::convert(const QByteArray&  if (from != "application/x-krita")
         return KisImportExportFilter::NotImplemented;
 
-
-    KisDlgOptionsTIFF* kdb = new KisDlgOptionsTIFF(0);
-
     KisDocument *input = m_chain->inputDocument();
-    if (!input)
+    if (!input) {
         return KisImportExportFilter::NoDocumentCreated;
+    }
 
+    KisDlgOptionsTIFF dlg;
     const KoColorSpace* cs = input->image()->colorSpace();
     KoChannelInfo::enumChannelValueType type = \
cs->channels()[0]->channelValueType(); +
     if (type == KoChannelInfo::FLOAT16 || type == KoChannelInfo::FLOAT32) {
-        kdb->optionswdg->kComboBoxPredictor->removeItem(1);
+        dlg.optionswdg->kComboBoxPredictor->removeItem(1);
     } else {
-        kdb->optionswdg->kComboBoxPredictor->removeItem(2);
+        dlg.optionswdg->kComboBoxPredictor->removeItem(2);
     }
 
     if (cs->colorModelId() == CMYKAColorModelID) {
-        kdb->optionswdg->alpha->setChecked(false);
-        kdb->optionswdg->alpha->setEnabled(false);
+        dlg.optionswdg->alpha->setChecked(false);
+        dlg.optionswdg->alpha->setEnabled(false);
     }
+
     if (!m_chain->manager()->getBatchMode()) {
-        if (kdb->exec() == QDialog::Rejected) {
+        if (dlg.exec() == QDialog::Rejected) {
             return KisImportExportFilter::UserCancelled;
         }
     }
@@ -89,12 +90,11 @@ KisImportExportFilter::ConversionStatus \
KisTIFFExport::convert(const QByteArray&  }
     input->image()->waitForDone();
 
-    KisTIFFOptions options = kdb->options();
+    KisTIFFOptions options = dlg.options();
 
-    if ((type == KoChannelInfo::FLOAT16 || type == KoChannelInfo::FLOAT32) && \
options.predictor == 2) { // FIXME THIS IS AN HACK FIX THAT IN 2.0 !! +    if ((type \
== KoChannelInfo::FLOAT16 || type == KoChannelInfo::FLOAT32) && options.predictor == \
2) { // FIXME THIS IS AN HACK FIX THAT IN 2.0 !! \
(62456a7b47636548c6507593df3e2bdf440f7544, BUG:135649)  options.predictor = 3;
     }
-    delete kdb;
 
     QString filename = m_chain->outputFile();
 
diff --git a/krita/plugins/formats/tiff/kis_tiff_writer_visitor.cpp \
b/krita/plugins/formats/tiff/kis_tiff_writer_visitor.cpp index e5dbb1b..92a5989 \
                100644
--- a/krita/plugins/formats/tiff/kis_tiff_writer_visitor.cpp
+++ b/krita/plugins/formats/tiff/kis_tiff_writer_visitor.cpp
@@ -86,11 +86,6 @@ KisTIFFWriterVisitor::~KisTIFFWriterVisitor()
 {
 }
 
-bool KisTIFFWriterVisitor::saveAlpha()
-{
-    return m_options->alpha;
-}
-
 bool KisTIFFWriterVisitor::copyDataToStrips(KisHLineConstIteratorSP it, tdata_t \
buff, uint8 depth, uint16 sample_format, uint8 nbcolorssamples, quint8* poses)  {
     if (depth == 32) {
@@ -102,7 +97,7 @@ bool \
KisTIFFWriterVisitor::copyDataToStrips(KisHLineConstIteratorSP it, tdata_t  for (i = \
                0; i < nbcolorssamples; i++) {
                 *(dst++) = d[poses[i]];
             }
-            if (saveAlpha()) *(dst++) = d[poses[i]];
+            if (m_options->alpha) *(dst++) = d[poses[i]];
         } while (it->nextPixel());
         return true;
     }
@@ -116,7 +111,7 @@ bool \
KisTIFFWriterVisitor::copyDataToStrips(KisHLineConstIteratorSP it, tdata_t  for (i = \
                0; i < nbcolorssamples; i++) {
                     *(dst++) = d[poses[i]];
                 }
-                if (saveAlpha()) *(dst++) = d[poses[i]];
+                if (m_options->alpha) *(dst++) = d[poses[i]];
 
             } while (it->nextPixel());
             return true;
@@ -130,7 +125,7 @@ bool \
KisTIFFWriterVisitor::copyDataToStrips(KisHLineConstIteratorSP it, tdata_t  for (i = \
                0; i < nbcolorssamples; i++) {
                     *(dst++) = d[poses[i]];
                 }
-                if (saveAlpha()) *(dst++) = d[poses[i]];
+                if (m_options->alpha) *(dst++) = d[poses[i]];
 
             } while (it->nextPixel());
             return true;
@@ -144,7 +139,7 @@ bool \
KisTIFFWriterVisitor::copyDataToStrips(KisHLineConstIteratorSP it, tdata_t  for (i = \
                0; i < nbcolorssamples; i++) {
                 *(dst++) = d[poses[i]];
             }
-            if (saveAlpha()) *(dst++) = d[poses[i]];
+            if (m_options->alpha) *(dst++) = d[poses[i]];
             
         } while (it->nextPixel());
         return true;
@@ -187,7 +182,7 @@ bool KisTIFFWriterVisitor::saveLayerProjection(KisLayer * layer)
     int depth = 8 * pd->pixelSize() / pd->channelCount();
     TIFFSetField(image(), TIFFTAG_BITSPERSAMPLE, depth);
     // Save number of samples
-    if (saveAlpha()) {
+    if (m_options->alpha) {
         TIFFSetField(image(), TIFFTAG_SAMPLESPERPIXEL, pd->channelCount());
         uint16 sampleinfo[1] = { EXTRASAMPLE_UNASSALPHA };
         TIFFSetField(image(), TIFFTAG_EXTRASAMPLES, 1, sampleinfo);
@@ -222,10 +217,12 @@ bool KisTIFFWriterVisitor::saveLayerProjection(KisLayer * \
layer)  TIFFSetField(image(), TIFFTAG_ROWSPERSTRIP, 8);
 
     // Save profile
-    const KoColorProfile* profile = pd->colorSpace()->profile();
-    if (profile && profile->type() == "icc" && !profile->rawData().isEmpty()) {
-        QByteArray ba = profile->rawData();
-        TIFFSetField(image(), TIFFTAG_ICCPROFILE, ba.size(), ba.data());
+    if (m_options->saveProfile) {
+        const KoColorProfile* profile = pd->colorSpace()->profile();
+        if (profile && profile->type() == "icc" && !profile->rawData().isEmpty()) {
+            QByteArray ba = profile->rawData();
+            TIFFSetField(image(), TIFFTAG_ICCPROFILE, ba.size(), ba.constData());
+        }
     }
     tsize_t stripsize = TIFFStripSize(image());
     tdata_t buff = _TIFFmalloc(stripsize);
diff --git a/krita/plugins/formats/tiff/kis_tiff_writer_visitor.h \
b/krita/plugins/formats/tiff/kis_tiff_writer_visitor.h index 539d0af..b227b0f 100644
--- a/krita/plugins/formats/tiff/kis_tiff_writer_visitor.h
+++ b/krita/plugins/formats/tiff/kis_tiff_writer_visitor.h
@@ -72,7 +72,6 @@ private:
     inline TIFF* image() {
         return m_image;
     }
-    inline bool saveAlpha();
     bool copyDataToStrips(KisHLineConstIteratorSP it, tdata_t buff, uint8 depth, \
uint16 sample_format, uint8 nbcolorssamples, quint8* poses);  bool \
saveLayerProjection(KisLayer *);  private:
diff --git a/krita/plugins/formats/tiff/kis_wdg_options_tiff.ui \
b/krita/plugins/formats/tiff/kis_wdg_options_tiff.ui index ddda0f4..2207843 100644
--- a/krita/plugins/formats/tiff/kis_wdg_options_tiff.ui
+++ b/krita/plugins/formats/tiff/kis_wdg_options_tiff.ui
@@ -20,16 +20,7 @@
    <string>TIFF Options</string>
   </property>
   <layout class="QVBoxLayout">
-   <property name="leftMargin">
-    <number>0</number>
-   </property>
-   <property name="topMargin">
-    <number>0</number>
-   </property>
-   <property name="rightMargin">
-    <number>0</number>
-   </property>
-   <property name="bottomMargin">
+   <property name="margin">
     <number>0</number>
    </property>
    <item>
@@ -188,6 +179,16 @@ You can uncheck the box if you are not using transparency and \
you want to make t  </property>
        </widget>
       </item>
+      <item>
+       <widget class="QCheckBox" name="chkSaveProfile">
+        <property name="text">
+         <string>Save ICC Profile</string>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
      </layout>
     </widget>
    </item>
@@ -196,21 +197,12 @@ You can uncheck the box if you are not using transparency and \
you want to make t  <property name="frameShape">
       <enum>QFrame::NoFrame</enum>
      </property>
-     <widget class="QWidget">
+     <widget class="QWidget" name="widget">
       <layout class="QHBoxLayout">
        <property name="spacing">
         <number>0</number>
        </property>
-       <property name="leftMargin">
-        <number>0</number>
-       </property>
-       <property name="topMargin">
-        <number>0</number>
-       </property>
-       <property name="rightMargin">
-        <number>0</number>
-       </property>
-       <property name="bottomMargin">
+       <property name="margin">
         <number>0</number>
        </property>
        <item>
@@ -225,21 +217,12 @@ You can uncheck the box if you are not using transparency and \
you want to make t  </item>
       </layout>
      </widget>
-     <widget class="QWidget">
+     <widget class="QWidget" name="widget">
       <layout class="QHBoxLayout">
        <property name="spacing">
         <number>0</number>
        </property>
-       <property name="leftMargin">
-        <number>0</number>
-       </property>
-       <property name="topMargin">
-        <number>0</number>
-       </property>
-       <property name="rightMargin">
-        <number>0</number>
-       </property>
-       <property name="bottomMargin">
+       <property name="margin">
         <number>0</number>
        </property>
        <item>
@@ -334,21 +317,12 @@ You can uncheck the box if you are not using transparency and \
you want to make t  </item>
       </layout>
      </widget>
-     <widget class="QWidget">
+     <widget class="QWidget" name="widget">
       <layout class="QHBoxLayout">
        <property name="spacing">
         <number>0</number>
        </property>
-       <property name="leftMargin">
-        <number>0</number>
-       </property>
-       <property name="topMargin">
-        <number>0</number>
-       </property>
-       <property name="rightMargin">
-        <number>0</number>
-       </property>
-       <property name="bottomMargin">
+       <property name="margin">
         <number>0</number>
        </property>
        <item>
@@ -456,21 +430,12 @@ You can uncheck the box if you are not using transparency and \
you want to make t  </item>
       </layout>
      </widget>
-     <widget class="QWidget">
+     <widget class="QWidget" name="widget">
       <layout class="QHBoxLayout">
        <property name="spacing">
         <number>0</number>
        </property>
-       <property name="leftMargin">
-        <number>0</number>
-       </property>
-       <property name="topMargin">
-        <number>0</number>
-       </property>
-       <property name="rightMargin">
-        <number>0</number>
-       </property>
-       <property name="bottomMargin">
+       <property name="margin">
         <number>0</number>
        </property>
        <item>
@@ -519,21 +484,12 @@ You can uncheck the box if you are not using transparency and \
you want to make t  </item>
       </layout>
      </widget>
-     <widget class="QWidget">
+     <widget class="QWidget" name="widget">
       <layout class="QHBoxLayout">
        <property name="spacing">
         <number>0</number>
        </property>
-       <property name="leftMargin">
-        <number>0</number>
-       </property>
-       <property name="topMargin">
-        <number>0</number>
-       </property>
-       <property name="rightMargin">
-        <number>0</number>
-       </property>
-       <property name="bottomMargin">
+       <property name="margin">
         <number>0</number>
        </property>
        <item>


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic