Merge branch 'dev' into rawcacorrection_iterate

This commit is contained in:
heckflosse
2018-09-11 12:55:52 +02:00
7 changed files with 57 additions and 11 deletions

View File

@@ -1136,7 +1136,7 @@ void CLASS lossless_dng_load_raw()
fseek (ifp, get4(), SEEK_SET);
if (!ljpeg_start (&jh, 0)) break;
jwide = jh.wide;
if (filters) jwide *= jh.clrs;
if (filters || (colors == 1 && jh.clrs > 1)) jwide *= jh.clrs;
jwide /= MIN (is_raw, tiff_samples);
switch (jh.algo) {
case 0xc1:

View File

@@ -5466,7 +5466,7 @@ void ImProcFunctions::getAutoExp (const LUTu &histogram, int histcompr, double
//now tune hlcompr to bring back rawmax to 65535
hlcomprthresh = 33;
hlcomprthresh = 0;
//this is a series approximation of the actual formula for comp,
//which is a transcendental equation
float comp = (gain * ((float)whiteclip) / scale - 1.f) * 2.3f; // 2.3 instead of 2 to increase slightly comp

View File

@@ -330,7 +330,7 @@ ToneCurveParams::ToneCurveParams() :
saturation(0),
shcompr(50),
hlcompr(0),
hlcomprthresh(33),
hlcomprthresh(0),
histmatching(false),
fromHistMatching(false),
clampOOG(true)

View File

@@ -991,8 +991,11 @@ void MyScrolledWindow::get_preferred_height_for_width_vfunc (int width, int &min
MyScrolledToolbar::MyScrolledToolbar ()
{
set_policy (Gtk::POLICY_EXTERNAL, Gtk::POLICY_NEVER);
set_propagate_natural_height(true);
get_style_context()->add_class("scrollableToolbar");
// Works fine with Gtk 3.22, but a a custom made get_preferred_height had to be created as a workaround
// taken from the official Gtk3.22 source code
//set_propagate_natural_height(true);
}
bool MyScrolledToolbar::on_scroll_event (GdkEventScroll* event)
@@ -1032,6 +1035,23 @@ bool MyScrolledToolbar::on_scroll_event (GdkEventScroll* event)
return true;
}
void MyScrolledToolbar::get_preferred_height (int &minimumHeight, int &naturalHeight)
{
int currMinHeight = 0;
int currNatHeight = 0;
std::vector<Widget*> childs = get_children();
minimumHeight = naturalHeight = 0;
for (auto child : childs)
{
if(child->is_visible()) {
child->get_preferred_height(currMinHeight, currNatHeight);
minimumHeight = rtengine::max(currMinHeight, minimumHeight);
naturalHeight = rtengine::max(currNatHeight, naturalHeight);
}
}
}
MyComboBoxText::MyComboBoxText (bool has_entry) : Gtk::ComboBoxText(has_entry)
{
minimumWidth = naturalWidth = 70;

View File

@@ -300,6 +300,7 @@ class MyScrolledToolbar : public Gtk::ScrolledWindow
{
bool on_scroll_event (GdkEventScroll* event);
void get_preferred_height (int &minimumHeight, int &naturalHeight);
public:
MyScrolledToolbar();

View File

@@ -182,7 +182,7 @@ void SaveFormatPanel::formatChanged ()
int act = format->get_active_row_number();
if (act < 0 || act > 5) {
if (act < 0 || act > 6) {
return;
}

View File

@@ -111,7 +111,7 @@ ToneCurve::ToneCurve () : FoldableToolPanel(this, "tonecurve", M("TP_EXPOSURE_LA
//----------- Highlight recovery & threshold -------------
hlcompr = Gtk::manage (new Adjuster (M("TP_EXPOSURE_COMPRHIGHLIGHTS"), 0, 500, 1, 0));
pack_start (*hlcompr);
hlcomprthresh = Gtk::manage (new Adjuster (M("TP_EXPOSURE_COMPRHIGHLIGHTSTHRESHOLD"), 0, 100, 1, 33));
hlcomprthresh = Gtk::manage (new Adjuster (M("TP_EXPOSURE_COMPRHIGHLIGHTSTHRESHOLD"), 0, 100, 1, 0));
pack_start (*hlcomprthresh);
//----------- Black Level & Compression -------------------
@@ -229,10 +229,14 @@ void ToneCurve::read (const ProcParams* pp, const ParamsEdited* pedited)
hlcomprthresh->setValue (pp->toneCurve.hlcomprthresh);
shcompr->setValue (pp->toneCurve.shcompr);
if (!black->getAddMode()) {
if (!black->getAddMode() && !batchMode) {
shcompr->set_sensitive(!((int)black->getValue () == 0)); //at black=0 shcompr value has no effect
}
if (!hlcompr->getAddMode() && !batchMode) {
hlcomprthresh->set_sensitive(!((int)hlcompr->getValue () == 0)); //at hlcompr=0 hlcomprthresh value has no effect
}
brightness->setValue (pp->toneCurve.brightness);
contrast->setValue (pp->toneCurve.contrast);
saturation->setValue (pp->toneCurve.saturation);
@@ -611,7 +615,7 @@ void ToneCurve::adjusterChanged (Adjuster* a, double newval)
} else if (a == black) {
listener->panelChanged (EvBlack, costr);
if (!black->getAddMode()) {
if (!black->getAddMode() && !batchMode) {
shcompr->set_sensitive(!((int)black->getValue () == 0)); //at black=0 shcompr value has no effect
}
} else if (a == contrast) {
@@ -620,6 +624,10 @@ void ToneCurve::adjusterChanged (Adjuster* a, double newval)
listener->panelChanged (EvSaturation, costr);
} else if (a == hlcompr) {
listener->panelChanged (EvHLCompr, costr);
if (!hlcompr->getAddMode() && !batchMode) {
hlcomprthresh->set_sensitive(!((int)hlcompr->getValue () == 0)); //at hlcompr=0 hlcomprthresh value has no effect
}
} else if (a == hlcomprthresh) {
listener->panelChanged (EvHLComprThreshold, costr);
} else if (a == shcompr) {
@@ -660,10 +668,14 @@ void ToneCurve::neutral_pressed ()
hlrbox->hide();
}
if (!black->getAddMode()) {
if (!black->getAddMode() && !batchMode) {
shcompr->set_sensitive(!((int)black->getValue () == 0)); //at black=0 shcompr value has no effect
}
if (!hlcompr->getAddMode() && !batchMode) {
hlcomprthresh->set_sensitive(!((int)hlcompr->getValue () == 0)); //at hlcompr=0 hlcomprthresh value has no effect
}
contrast->setValue(0);
//saturation->setValue(0);
@@ -733,6 +745,11 @@ void ToneCurve::autolevels_toggled ()
if (!black->getAddMode()) {
shcompr->set_sensitive(!((int)black->getValue () == 0)); //at black=0 shcompr value has no effect
}
if (!hlcompr->getAddMode() && !batchMode) {
hlcomprthresh->set_sensitive(!((int)hlcompr->getValue () == 0)); //at hlcompr=0 hlcomprthresh value has no effect
}
} else {
listener->panelChanged (EvFixedExp, M("GENERAL_DISABLED"));
}
@@ -847,10 +864,14 @@ bool ToneCurve::autoExpComputed_ ()
hlrbox->hide();
}
if (!black->getAddMode()) {
if (!black->getAddMode() && !batchMode) {
shcompr->set_sensitive(!((int)black->getValue () == 0)); //at black=0 shcompr value has no effect
}
if (!hlcompr->getAddMode() && !batchMode) {
hlcomprthresh->set_sensitive(!((int)hlcompr->getValue () == 0)); //at hlcompr=0 hlcomprthresh value has no effect
}
enableListener ();
return false;
@@ -971,10 +992,14 @@ bool ToneCurve::histmatchingComputed()
contrast->setValue(0);
black->setValue(0);
if (!black->getAddMode()) {
if (!black->getAddMode() && !batchMode) {
shcompr->set_sensitive(!((int)black->getValue() == 0));
}
if (!hlcompr->getAddMode() && !batchMode) {
hlcomprthresh->set_sensitive(!((int)hlcompr->getValue () == 0)); //at hlcompr=0 hlcomprthresh value has no effect
}
if (autolevels->get_active() ) {
expcomp->setValue(0);
autoconn.block(true);