diff --git a/rtengine/imageio.cc b/rtengine/imageio.cc index 88274cdb4..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->getOrder() == rtexif::MOTOROLA; -#else - bool needsReverse = (bps == 16 || bps == 32) && 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 f79e173e9..765c4b704 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; diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index 7a9ac8b82..7505bccec 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -3930,22 +3930,14 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer } if (sat != 0 || hCurveEnabled || sCurveEnabled || vCurveEnabled) { + const float satby100 = sat / 100.f; for (int i = istart, ti = 0; i < tH; i++, ti++) { for (int j = jstart, tj = 0; j < tW; j++, tj++) { - - const float satby100 = sat / 100.f; - float r = rtemp[ti * TS + tj]; - float g = gtemp[ti * TS + tj]; - float b = btemp[ti * TS + tj]; float h, s, v; - Color::rgb2hsv (r, g, b, h, s, v); - + Color::rgb2hsvtc(rtemp[ti * TS + tj], gtemp[ti * TS + tj], btemp[ti * TS + tj], h, s, v); + h /= 6.f; if (sat > 0) { - s = (1.f - satby100) * s + satby100 * (1.f - SQR (SQR (1.f - min (s, 1.0f)))); - - if (s < 0.f) { - s = 0.f; - } + s = std::max(0.f, intp(satby100, 1.f - SQR(SQR(1.f - std::min(s, 1.0f))), s)); } else { /*if (sat < 0)*/ s *= 1.f + satby100; } @@ -4000,7 +3992,7 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer } - Color::hsv2rgb (h, s, v, rtemp[ti * TS + tj], gtemp[ti * TS + tj], btemp[ti * TS + tj]); + Color::hsv2rgbdcp(h * 6.f, s, v, rtemp[ti * TS + tj], gtemp[ti * TS + tj], btemp[ti * TS + tj]); } } } diff --git a/rtgui/fattaltonemap.cc b/rtgui/fattaltonemap.cc index a6f4c5190..5e4aa20d9 100644 --- a/rtgui/fattaltonemap.cc +++ b/rtgui/fattaltonemap.cc @@ -26,7 +26,7 @@ using namespace rtengine::procparams; FattalToneMapping::FattalToneMapping(): FoldableToolPanel(this, "fattal", M("TP_TM_FATTAL_LABEL"), true, true) { - amount = Gtk::manage(new Adjuster (M("TP_TM_FATTAL_AMOUNT"), 1., 100., 30., 0.0)); + amount = Gtk::manage(new Adjuster (M("TP_TM_FATTAL_AMOUNT"), 1., 100., 1., 30.)); threshold = Gtk::manage(new Adjuster (M("TP_TM_FATTAL_THRESHOLD"), -100., 100., 1., 0.0)); amount->setAdjusterListener(this);