Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_dlg_options_tiff.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2005 Cyrille Berger <cberger@cberger.net>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
8
9#include <QCheckBox>
10#include <QGroupBox>
11#include <QSlider>
12#include <QStackedWidget>
13#include <QApplication>
14
15#include <kcombobox.h>
16#include <klocalizedstring.h>
17
19#include <KoChannelInfo.h>
21#include <KoColorSpace.h>
22#include <kis_config.h>
24
25#include <config-tiff.h>
26
28 : KisConfigWidget(parent)
29{
30 setupUi(this);
31 activated(0);
32 connect(kComboBoxCompressionType, SIGNAL(activated(int)), this, SLOT(activated(int)));
33 connect(flatten, SIGNAL(toggled(bool)), this, SLOT(flattenToggled(bool)));
34 setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum));
35
36 // See KisTIFFOptions::fromProperties
37 kComboBoxCompressionType->addItem(i18nc("TIFF options", "None"), 0);
38 kComboBoxCompressionType->addItem(
39 i18nc("TIFF options", "JPEG DCT compression"),
40 1);
41 kComboBoxCompressionType->addItem(i18nc("TIFF options", "Deflate (ZIP)"),
42 2);
43 kComboBoxCompressionType->addItem(
44 i18nc("TIFF options", "Lempel-Ziv & Welch"),
45 3);
46 kComboBoxCompressionType->addItem(i18nc("TIFF options", "Pixar Log"), 4);
47
48 connect(kComboBoxCompressionType,
49 QOverload<int>::of(&QComboBox::currentIndexChanged),
50 [&](int index) {
51 const int deflate = kComboBoxCompressionType->findData(2);
52 const int lzw = kComboBoxCompressionType->findData(3);
53 kComboBoxPredictor->setEnabled(index == deflate
54 || index == lzw);
55 });
56
57 kComboBoxPredictor->addItem(i18nc("TIFF options", "None"), 0);
58 kComboBoxPredictor->addItem(
59 i18nc("TIFF options", "Horizontal Differencing"),
60 1);
61 kComboBoxPredictor->addItem(
62 i18nc("TIFF options", "Floating Point Horizontal Differencing"),
63 2);
64}
65
67{
68 kComboBoxCompressionType->setCurrentIndex(cfg->getInt("compressiontype", 0));
69 activated(kComboBoxCompressionType->currentIndex());
70 kComboBoxPredictor->setCurrentIndex(cfg->getInt("predictor", 0));
71 alpha->setChecked(cfg->getBool("alpha", true));
72#ifdef TIFF_CAN_WRITE_PSD_TAGS
73 chkPhotoshop->setEnabled(true);
74 chkPhotoshop->setChecked(cfg->getBool("saveAsPhotoshop", false));
75 kComboBoxPSDCompressionType->setCurrentIndex(cfg->getInt("psdCompressionType", 0));
76#else
77 chkPhotoshop->setEnabled(false);
78 chkPhotoshop->setChecked(false);
79#endif
80 flatten->setChecked(cfg->getBool("flatten", true));
81 flattenToggled(flatten->isChecked());
82 qualityLevel->setValue(cfg->getInt("quality", 80));
83 compressionLevelDeflate->setValue(cfg->getInt("deflate", 6));
84 compressionLevelPixarLog->setValue(cfg->getInt("pixarlog", 6));
85 chkSaveProfile->setChecked(cfg->getBool("saveProfile", true));
86
87 {
88 const QString colorDepthId =
90
91 if (colorDepthId == Float16BitsColorDepthID.id()
92 || colorDepthId == Float32BitsColorDepthID.id()
93 || colorDepthId == Float64BitsColorDepthID.id()) {
94 kComboBoxPredictor->removeItem(1);
95 } else {
96 kComboBoxPredictor->removeItem(2);
97 }
98
99 if (colorDepthId != Integer8BitsColorDepthID.id()) {
100 kComboBoxCompressionType->removeItem(
101 kComboBoxCompressionType->findData(1));
102 }
103 }
104
105 {
106 const QString colorModelId =
108
109 if (colorModelId == YCbCrAColorModelID.id()) {
110 alpha->setChecked(false);
111 alpha->setEnabled(false);
112 }
113 }
114}
115
117{
119 cfg->setProperty("compressiontype",
120 kComboBoxCompressionType->currentData());
121 cfg->setProperty("predictor", kComboBoxPredictor->currentData());
122 cfg->setProperty("alpha", alpha->isChecked());
123 cfg->setProperty("saveAsPhotoshop", chkPhotoshop->isChecked());
124 cfg->setProperty("psdCompressionType", kComboBoxPSDCompressionType->currentIndex());
125 cfg->setProperty("flatten", flatten->isChecked());
126 cfg->setProperty("quality", qualityLevel->value());
127 cfg->setProperty("deflate", compressionLevelDeflate->value());
128 cfg->setProperty("pixarlog", compressionLevelPixarLog->value());
129 cfg->setProperty("saveProfile", chkSaveProfile->isChecked());
130
131 return cfg;
132}
133
135{
136 const int data = kComboBoxCompressionType->itemData(index).value<int>();
137 switch (data) {
138 case 1: // JPEG
139 codecsOptionsStack->setCurrentIndex(1);
140 break;
141 case 2: // Deflate
142 codecsOptionsStack->setCurrentIndex(2);
143 break;
144 case 4: // Pixar Log
145 codecsOptionsStack->setCurrentIndex(3);
146 break;
147 default:
148 codecsOptionsStack->setCurrentIndex(0);
149 }
150}
151
153{
154 alpha->setEnabled(t);
155 if (!t) {
156 alpha->setChecked(true);
157 }
158#ifdef TIFF_CAN_WRITE_PSD_TAGS
159 chkPhotoshop->setEnabled(!t);
160 if (t) {
161 chkPhotoshop->setChecked(false);
162 }
163#endif
164}
165
const KoID Float32BitsColorDepthID("F32", ki18n("32-bit float/channel"))
const KoID YCbCrAColorModelID("YCbCrA", ki18n("YCbCr/Alpha"))
const KoID Float64BitsColorDepthID("F64", ki18n("64-bit float/channel"))
const KoID Float16BitsColorDepthID("F16", ki18n("16-bit float/channel"))
const KoID Integer8BitsColorDepthID("U8", ki18n("8-bit integer/channel"))
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
static const QString ColorDepthIDTag
static const QString ColorModelIDTag
void setConfiguration(const KisPropertiesConfigurationSP cfg) override
KisTIFFOptionsWidget(QWidget *parent=0)
KisPropertiesConfigurationSP configuration() const override
QString id() const
Definition KoID.cpp:63