merge with dev

This commit is contained in:
Alberto Griggio 2018-01-11 09:41:07 +01:00
commit 6a281bbc05
4 changed files with 8 additions and 35 deletions

View File

@ -1484,30 +1484,9 @@ int ImageIO::saveTIFF (Glib::ustring fname, int bps, bool uncompressed)
TIFFSetField (out, TIFFTAG_ICCPROFILE, profileLength, profileData); 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++) { for (int row = 0; row < height; row++) {
getScanline (row, linebuffer, bps); 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) { if (TIFFWriteScanline (out, linebuffer, row, 0) < 0) {
TIFFClose (out); TIFFClose (out);
delete [] linebuffer; delete [] linebuffer;

View File

@ -1284,6 +1284,8 @@ void ImProcCoordinator::saveInputICCReference (const Glib::ustring& fname, bool
im = tempImage; im = tempImage;
} }
im->setMetadata (imgsrc->getMetaData()->getRootExifData ());
im->saveTIFF (fname, 16, true); im->saveTIFF (fname, 16, true);
delete im; delete im;

View File

@ -3930,22 +3930,14 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer
} }
if (sat != 0 || hCurveEnabled || sCurveEnabled || vCurveEnabled) { if (sat != 0 || hCurveEnabled || sCurveEnabled || vCurveEnabled) {
const float satby100 = sat / 100.f;
for (int i = istart, ti = 0; i < tH; i++, ti++) { for (int i = istart, ti = 0; i < tH; i++, ti++) {
for (int j = jstart, tj = 0; j < tW; j++, tj++) { 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; 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) { if (sat > 0) {
s = (1.f - satby100) * s + satby100 * (1.f - SQR (SQR (1.f - min (s, 1.0f)))); s = std::max(0.f, intp(satby100, 1.f - SQR(SQR(1.f - std::min(s, 1.0f))), s));
if (s < 0.f) {
s = 0.f;
}
} else { /*if (sat < 0)*/ } else { /*if (sat < 0)*/
s *= 1.f + satby100; 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]);
} }
} }
} }

View File

@ -26,7 +26,7 @@ using namespace rtengine::procparams;
FattalToneMapping::FattalToneMapping(): FoldableToolPanel(this, "fattal", M("TP_TM_FATTAL_LABEL"), true, true) 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)); threshold = Gtk::manage(new Adjuster (M("TP_TM_FATTAL_THRESHOLD"), -100., 100., 1., 0.0));
amount->setAdjusterListener(this); amount->setAdjusterListener(this);