From 91e494a7098e760d2422003011e8311d7032bba5 Mon Sep 17 00:00:00 2001 From: Hombre Date: Wed, 10 Jan 2018 18:22:50 +0100 Subject: [PATCH] Fix issue #4291 : "Bug when edit current image in external editor" Is also add metadata to the "ICC Reference image" (ICM tool). --- rtengine/imageio.cc | 21 --------------------- rtengine/improccoordinator.cc | 2 ++ 2 files changed, 2 insertions(+), 21 deletions(-) diff --git a/rtengine/imageio.cc b/rtengine/imageio.cc index 4cd762d0b..1b6a4ad20 100644 --- a/rtengine/imageio.cc +++ b/rtengine/imageio.cc @@ -1484,30 +1484,9 @@ int ImageIO::saveTIFF (Glib::ustring fname, int bps, bool uncompressed) TIFFSetField (out, TIFFTAG_ICCPROFILE, profileLength, profileData); } -#if __BYTE_ORDER__==__ORDER_LITTLE_ENDIAN__ - bool needsReverse = (bps == 16 || bps == 32) && exifRoot && exifRoot->getOrder() == rtexif::MOTOROLA; -#else - bool needsReverse = (bps == 16 || bps == 32) && exifRoot && exifRoot->getOrder() == rtexif::INTEL; -#endif - for (int row = 0; row < height; row++) { getScanline (row, linebuffer, bps); - if (needsReverse) { - if (bps == 16) { - for (int i = 0; i < lineWidth; i += 2) { - char c = linebuffer[i]; - linebuffer[i] = linebuffer[i + 1]; - linebuffer[i + 1] = c; - } - } else { - for (int i = 0; i < lineWidth; i += 4) { - std::swap(linebuffer[i], linebuffer[i+3]); - std::swap(linebuffer[i+1], linebuffer[i+2]); - } - } - } - if (TIFFWriteScanline (out, linebuffer, row, 0) < 0) { TIFFClose (out); delete [] linebuffer; diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 97e356f18..34478c983 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -1284,6 +1284,8 @@ void ImProcCoordinator::saveInputICCReference (const Glib::ustring& fname, bool im = tempImage; } + im->setMetadata (imgsrc->getMetaData()->getRootExifData ()); + im->saveTIFF (fname, 16, true); delete im;