[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [calligra/calligra/2.9] krita/plugins/formats/jpeg: BUG:351298 Do not crash saving 16 bit CMYK to JP
From: Boudewijn Rempt <boud () valdyas ! org>
Date: 2015-08-15 11:52:09
Message-ID: E1ZQa0P-00061m-FX () scm ! kde ! org
[Download RAW message or body]
Git commit ec4b279d67ed7962ff3e8e8a385138759a460b73 by Boudewijn Rempt.
Committed on 15/08/2015 at 11:51.
Pushed by rempt into branch 'calligra/2.9'.
BUG:351298 Do not crash saving 16 bit CMYK to JPEG
The result looks wrong, though... Inverted. This also makes
the filter obey the batch mode setting, so it won't show a
warning message box when saving lab or ycbcr to jpeg.
M +9 -3 krita/plugins/formats/jpeg/kis_jpeg_converter.cc
M +2 -1 krita/plugins/formats/jpeg/kis_jpeg_converter.h
M +2 -2 krita/plugins/formats/jpeg/kis_jpeg_export.cc
M +2 -1 krita/plugins/formats/jpeg/kis_jpeg_import.cc
http://commits.kde.org/calligra/ec4b279d67ed7962ff3e8e8a385138759a460b73
diff --git a/krita/plugins/formats/jpeg/kis_jpeg_converter.cc \
b/krita/plugins/formats/jpeg/kis_jpeg_converter.cc index ec00fd6..191ab9f 100644
--- a/krita/plugins/formats/jpeg/kis_jpeg_converter.cc
+++ b/krita/plugins/formats/jpeg/kis_jpeg_converter.cc
@@ -91,10 +91,9 @@ J_COLOR_SPACE getColorTypeforColorSpace(const KoColorSpace * cs)
if (KoID(cs->id()) == KoID("RGBA") || KoID(cs->id()) == KoID("RGBA16")) {
return JCS_RGB;
}
- if (KoID(cs->id()) == KoID("CMYK") || KoID(cs->id()) == KoID("CMYK16")) {
+ if (KoID(cs->id()) == KoID("CMYK") || KoID(cs->id()) == KoID("CMYKAU16")) {
return JCS_CMYK;
}
- QMessageBox::information(0, i18nc("@title:window", "Krita"), i18n("Cannot export \
images in %1.\nWill save as RGB.", cs->name())) ; return JCS_UNKNOWN;
}
@@ -113,11 +112,12 @@ QString getColorSpaceModelForColorType(J_COLOR_SPACE \
color_type)
}
-KisJPEGConverter::KisJPEGConverter(KisDocument *doc)
+KisJPEGConverter::KisJPEGConverter(KisDocument *doc, bool batchMode)
{
m_doc = doc;
m_job = 0;
m_stop = false;
+ m_batchMode = batchMode;
}
KisJPEGConverter::~KisJPEGConverter()
@@ -475,9 +475,14 @@ KisImageBuilder_Result KisJPEGConverter::buildFile(const KUrl& \
uri, KisPaintLaye
const KoColorSpace * cs = layer->colorSpace();
J_COLOR_SPACE color_type = getColorTypeforColorSpace(cs);
+
if (color_type == JCS_UNKNOWN) {
+ if (!m_batchMode) {
+ QMessageBox::information(0, i18nc("@title:window", "Krita"), \
i18n("Cannot export images in %1.\nWill save as RGB.", cs->name())); + }
KUndo2Command *tmp = \
layer->paintDevice()->convertTo(KoColorSpaceRegistry::instance()->rgb8(), \
KoColorConversionTransformation::InternalRenderingIntent, \
KoColorConversionTransformation::InternalConversionFlags); delete tmp;
+ cs = KoColorSpaceRegistry::instance()->rgb8();
color_type = JCS_RGB;
}
@@ -485,6 +490,7 @@ KisImageBuilder_Result KisJPEGConverter::buildFile(const KUrl& \
uri, KisPaintLaye const KoColorSpace* dst = \
KoColorSpaceRegistry::instance()->colorSpace(RGBAColorModelID.id(), \
layer->colorSpace()->colorDepthId().id(), "sRGB built-in - (lcms internal)"); \
KUndo2Command *tmp = layer->paintDevice()->convertTo(dst); delete tmp;
+ cs = dst;
color_type = JCS_RGB;
}
diff --git a/krita/plugins/formats/jpeg/kis_jpeg_converter.h \
b/krita/plugins/formats/jpeg/kis_jpeg_converter.h index d24a152..256ca87 100644
--- a/krita/plugins/formats/jpeg/kis_jpeg_converter.h
+++ b/krita/plugins/formats/jpeg/kis_jpeg_converter.h
@@ -85,7 +85,7 @@ class KisJPEGConverter : public QObject
{
Q_OBJECT
public:
- KisJPEGConverter(KisDocument *doc);
+ KisJPEGConverter(KisDocument *doc, bool batchMode = false);
virtual ~KisJPEGConverter();
public:
KisImageBuilder_Result buildImage(const KUrl& uri);
@@ -102,6 +102,7 @@ private:
KisDocument *m_doc;
bool m_stop;
KIO::TransferJob *m_job;
+ bool m_batchMode;
};
#endif
diff --git a/krita/plugins/formats/jpeg/kis_jpeg_export.cc \
b/krita/plugins/formats/jpeg/kis_jpeg_export.cc index 3c09ea7..173e218 100644
--- a/krita/plugins/formats/jpeg/kis_jpeg_export.cc
+++ b/krita/plugins/formats/jpeg/kis_jpeg_export.cc
@@ -48,7 +48,7 @@
#include <kis_exif_info_visitor.h>
#include <generator/kis_generator_layer.h>
#include "kis_jpeg_converter.h"
-
+#include <KisImportExportManager.h>
#include "ui_kis_wdg_options_jpeg.h"
@@ -195,7 +195,7 @@ KisImportExportFilter::ConversionStatus \
KisJPEGExport::convert(const QByteArray& image->refreshGraph();
image->lock();
- KisJPEGConverter kpc(input);
+ KisJPEGConverter kpc(input, m_chain->manager()->getBatchMode());
KisPaintDeviceSP pd = new KisPaintDevice(*image->projection());
image->unlock();
diff --git a/krita/plugins/formats/jpeg/kis_jpeg_import.cc \
b/krita/plugins/formats/jpeg/kis_jpeg_import.cc index 2592179..ff2e82e 100644
--- a/krita/plugins/formats/jpeg/kis_jpeg_import.cc
+++ b/krita/plugins/formats/jpeg/kis_jpeg_import.cc
@@ -27,6 +27,7 @@
#include <kis_image.h>
#include <KisViewManager.h>
+#include <KisImportExportManager.h>
#include "kis_jpeg_converter.h"
@@ -64,7 +65,7 @@ KisImportExportFilter::ConversionStatus \
KisJPEGImport::convert(const QByteArray& if (url.isEmpty())
return KisImportExportFilter::FileNotFound;
- KisJPEGConverter ib(doc);
+ KisJPEGConverter ib(doc, m_chain->manager()->getBatchMode());
// if (view != 0)
// view -> canvasSubject() -> progressDisplay() -> setSubject(&ib, \
false, true);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic