merge with 'dev'
This commit is contained in:
@@ -192,7 +192,7 @@ void BatchQueuePanel::init (RTWindow *parent)
|
||||
saveFormatPanel->init (options.saveFormatBatch);
|
||||
}
|
||||
|
||||
// it is expected to have a non null forceOrientation value on Preferences update only. In this case, qsize is ingored and computed automatically
|
||||
// it is expected to have a non null forceOrientation value on Preferences update only. In this case, qsize is ignored and computed automatically
|
||||
void BatchQueuePanel::updateTab (int qsize, int forceOrientation)
|
||||
{
|
||||
Gtk::Notebook *nb = (Gtk::Notebook *)(this->get_parent());
|
||||
|
||||
@@ -390,7 +390,7 @@ void BatchToolPanelCoordinator::panelChanged (rtengine::ProcEvent event, const G
|
||||
}
|
||||
|
||||
// If only a single item is selected, we emulate the behaviour of the editor tool panel coordinator,
|
||||
// otherwise we adjust the inital parameters on a per-image basis.
|
||||
// otherwise we adjust the initial parameters on a per-image basis.
|
||||
if (selected.size() == 1) {
|
||||
// Compensate rotation on flip
|
||||
if (event == rtengine::EvCTHFlip || event == rtengine::EvCTVFlip) {
|
||||
|
||||
@@ -29,7 +29,7 @@ class CacheImageData: public rtengine::FramesMetaData
|
||||
|
||||
public:
|
||||
|
||||
// basic informations
|
||||
// basic information
|
||||
Glib::ustring md5;
|
||||
Glib::ustring version;
|
||||
bool supported;
|
||||
|
||||
@@ -148,7 +148,7 @@ class EditSubscriber;
|
||||
*
|
||||
* When the Edit process stops, the Subscriber is removed from the DataProvider, so buffers can be freed up.
|
||||
* A new ToolPanelListener::panelChanged event is also thrown to update the preview again, without the tool's
|
||||
* graphical objects. The Edit button is also toggled off (by the user or programatically).
|
||||
* graphical objects. The Edit button is also toggled off (by the user or programmatically).
|
||||
*
|
||||
* It means that each Edit buttons toggled on will start an update of the preview which might or might not create
|
||||
* a new History entry, depending on the ProcEvent used.
|
||||
|
||||
@@ -674,7 +674,7 @@ void FileCatalog::_refreshProgressBar ()
|
||||
// Also mention that this progress bar only measures the FIRST pass (quick thumbnails)
|
||||
// The second, usually longer pass is done multithreaded down in the single entries and is NOT measured by this
|
||||
if (!inTabMode) {
|
||||
GThreadLock lock; // All GUI acces from idle_add callbacks or separate thread HAVE to be protected
|
||||
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||
|
||||
Gtk::Notebook *nb = (Gtk::Notebook *)(filepanel->get_parent());
|
||||
Gtk::Grid* grid = Gtk::manage (new Gtk::Grid ());
|
||||
@@ -790,7 +790,7 @@ void FileCatalog::previewsFinishedUI ()
|
||||
{
|
||||
|
||||
{
|
||||
GThreadLock lock; // All GUI acces from idle_add callbacks or separate thread HAVE to be protected
|
||||
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||
redrawAll ();
|
||||
previewsToLoad = 0;
|
||||
|
||||
@@ -872,7 +872,7 @@ void FileCatalog::refreshHeight ()
|
||||
{
|
||||
int newHeight = fileBrowser->getEffectiveHeight();
|
||||
|
||||
if (newHeight < 5) { // This may occure if there's no thumbnail.
|
||||
if (newHeight < 5) { // This may occur if there's no thumbnail.
|
||||
int w, h;
|
||||
get_size_request(w, h);
|
||||
newHeight = h;
|
||||
|
||||
@@ -411,7 +411,7 @@ bool FilePanel::handleShortcutKey (GdkEventKey* event)
|
||||
|
||||
void FilePanel::loadingThumbs(Glib::ustring str, double rate)
|
||||
{
|
||||
GThreadLock lock; // All GUI acces from idle_add callbacks or separate thread HAVE to be protected
|
||||
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||
|
||||
if( !str.empty()) {
|
||||
parent->setProgressStr(str);
|
||||
|
||||
@@ -58,7 +58,7 @@ public:
|
||||
{
|
||||
parent = p;
|
||||
}
|
||||
void init (); // dont call it directly, the constructor calls it as idle source
|
||||
void init (); // don't call it directly, the constructor calls it as idle source
|
||||
void on_realize ();
|
||||
void setAspect();
|
||||
void open (const Glib::ustring& d); // open a file or a directory
|
||||
|
||||
@@ -336,7 +336,7 @@ void drawCrop (Cairo::RefPtr<Cairo::Context> cr, int imx, int imy, int imw, int
|
||||
}
|
||||
} else if (cparams.guide == "ePassport") {
|
||||
/* Official measurements do not specify exact ratios, just min/max measurements within which the eyes and chin-crown distance must lie. I averaged those measurements to produce these guides.
|
||||
* The first horizontal guide is for the crown, the second is rougly for the nostrils, the third is for the chin.
|
||||
* The first horizontal guide is for the crown, the second is roughly for the nostrils, the third is for the chin.
|
||||
* http://www.homeoffice.gov.uk/agencies-public-bodies/ips/passports/information-photographers/
|
||||
* "(...) the measurement of the face from the bottom of the chin to the crown (ie the top of the head, not the top of the hair) is between 29mm and 34mm."
|
||||
*/
|
||||
|
||||
@@ -483,7 +483,7 @@ void HistogramRGBArea::updateBackBuffer (int r, int g, int b, const Glib::ustrin
|
||||
}
|
||||
|
||||
// Mostly not necessary, but should be in some case
|
||||
GThreadLock lock; // All GUI acces from idle_add callbacks or separate thread HAVE to be protected
|
||||
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||
|
||||
Glib::RefPtr<Gdk::Window> window = get_window();
|
||||
int winx, winy, winw, winh;
|
||||
|
||||
@@ -272,7 +272,7 @@ void LensProfilePanel::setRawMeta(bool raw, const rtengine::FramesMetaData* pMet
|
||||
if (!raw || pMeta->getFocusDist() <= 0) {
|
||||
disableListener();
|
||||
|
||||
// CA is very focus layer dependend, otherwise it might even worsen things
|
||||
// CA is very focus layer dependent, otherwise it might even worsen things
|
||||
allowFocusDep = false;
|
||||
ckbUseCA->set_active(false);
|
||||
ckbUseCA->set_sensitive(false);
|
||||
|
||||
@@ -178,7 +178,7 @@ bool LWButton::releaseNotify (int x, int y)
|
||||
void LWButton::redraw (Cairo::RefPtr<Cairo::Context> context)
|
||||
{
|
||||
|
||||
GThreadLock lock; // All GUI acces from idle_add callbacks or separate thread HAVE to be protected
|
||||
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||
context->set_line_width (1.0);
|
||||
context->set_antialias (Cairo::ANTIALIAS_SUBPIXEL);
|
||||
context->rectangle (xpos + 0.5, ypos + 0.5, w - 1.0, h - 1.0);
|
||||
|
||||
@@ -1280,7 +1280,7 @@ void MyDiagonalCurve::pipetteDrag(EditDataProvider *provider, int modifierKey)
|
||||
void MyDiagonalCurve::getCursorPositionFromCurve(float x)
|
||||
{
|
||||
|
||||
// the graph is refreshed only if a new point is created (snaped to a pixel)
|
||||
// the graph is refreshed only if a new point is created (snapped to a pixel)
|
||||
clampedX = x;
|
||||
clampedY = point.getVal01(x);
|
||||
|
||||
@@ -1292,7 +1292,7 @@ void MyDiagonalCurve::getCursorPositionFromCurve(float x)
|
||||
void MyDiagonalCurve::getCursorPositionFromCurve(int x)
|
||||
{
|
||||
|
||||
// the graph is refreshed only if a new point is created (snaped to a pixel)
|
||||
// the graph is refreshed only if a new point is created (snapped to a pixel)
|
||||
cursorX = x - graphX;
|
||||
clampedX = (float(cursorX) - 1.5) / float(graphW - 3);
|
||||
clampedY = point.getVal01(clampedX);
|
||||
|
||||
@@ -556,7 +556,7 @@ void Options::setDefaults ()
|
||||
rtSettings.verbose = false;
|
||||
rtSettings.gamutICC = true;
|
||||
rtSettings.gamutLch = true;
|
||||
rtSettings.amchroma = 40;//between 20 and 140 low values increase effect..and also artefacts, high values reduces
|
||||
rtSettings.amchroma = 40;//between 20 and 140 low values increase effect..and also artifacts, high values reduces
|
||||
rtSettings.artifact_cbdl = 4.;
|
||||
rtSettings.level0_cbdl = 0;
|
||||
rtSettings.level123_cbdl = 30;
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
#pragma once
|
||||
|
||||
// This number has to be incremented whenever the PP3 file format is modified or the behaviour of a tool changes
|
||||
#define PPVERSION 330
|
||||
#define PPVERSION 331
|
||||
#define PPVERSION_AEXP 301 //value of PPVERSION when auto exposure algorithm was modified
|
||||
|
||||
/*
|
||||
Log of version changes
|
||||
331 2018-14-02
|
||||
changed wavelet.Lmethod to int
|
||||
330 2018-20-01
|
||||
Added 'Auto-matched Tone Curve' button, performing histogram matching
|
||||
329 2017-12-09
|
||||
@@ -25,7 +27,7 @@
|
||||
321 2014-08-17
|
||||
[Film Simulation] new tool using HALDCLUT files
|
||||
320 2014-07-02 (yes, same version number... this is an error due to a wrong version number set in comment of previous change)
|
||||
New [RAW Bayer] and [RAW X-Trans] sections, with some parameters transfered from [RAW] to [RAW Bayer]
|
||||
New [RAW Bayer] and [RAW X-Trans] sections, with some parameters transferred from [RAW] to [RAW Bayer]
|
||||
320 2014-03-29
|
||||
[ColorToning] new tool for color toning
|
||||
319 2014-02-11
|
||||
|
||||
@@ -40,7 +40,7 @@ void SoundManager::init()
|
||||
// Unfortunately MinGW does not support this yet. If audioclient.h is available, add an Init
|
||||
// called once on program start.
|
||||
//
|
||||
// This mitigation plays an empty file on start, so RT is immidiately avaible in the Windows mixer at least
|
||||
// This mitigation plays an empty file on start, so RT is immediately available in the Windows mixer at least
|
||||
playSoundAsync(Glib::ustring("sounds\\Empty.wav"));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -116,7 +116,7 @@ Splash::Splash (Gtk::Window& parent) : Gtk::Dialog(M("GENERAL_ABOUT"), parent, t
|
||||
nb->append_page (*splashImage, M("ABOUT_TAB_SPLASH"));
|
||||
splashImage->show ();
|
||||
|
||||
// Tab 2: the informations about the current version
|
||||
// Tab 2: the information about the current version
|
||||
std::string buildFileName = Glib::build_filename (creditsPath, "AboutThisBuild.txt");
|
||||
|
||||
if ( Glib::file_test(buildFileName, (Glib::FILE_TEST_EXISTS)) ) {
|
||||
|
||||
@@ -208,7 +208,7 @@ ThumbImageUpdater::add(ThumbBrowserEntryBase* tbe, bool* priority, bool upgrade,
|
||||
}
|
||||
|
||||
// create a new job and append to queue
|
||||
DEBUG("queing job %s", tbe->shortname.c_str());
|
||||
DEBUG("queueing job %s", tbe->shortname.c_str());
|
||||
impl_->jobs_.push_back(Impl::Job(tbe, priority, upgrade, l));
|
||||
|
||||
DEBUG("adding run request %s", tbe->shortname.c_str());
|
||||
|
||||
@@ -803,7 +803,7 @@ void ToneCurve::enableAll ()
|
||||
bool ToneCurve::autoExpComputed_ ()
|
||||
{
|
||||
|
||||
GThreadLock lock; // All GUI acces from idle_add callbacks or separate thread HAVE to be protected
|
||||
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||
disableListener ();
|
||||
enableAll ();
|
||||
expcomp->setValue (nextExpcomp);
|
||||
|
||||
@@ -845,7 +845,7 @@ bool ToolPanelCoordinator::handleShortcutKey (GdkEventKey* event)
|
||||
|
||||
void ToolPanelCoordinator::updateVScrollbars (bool hide)
|
||||
{
|
||||
GThreadLock lock; // All GUI acces from idle_add callbacks or separate thread HAVE to be protected
|
||||
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||
Gtk::PolicyType policy = hide ? Gtk::POLICY_NEVER : Gtk::POLICY_AUTOMATIC;
|
||||
exposurePanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy);
|
||||
detailsPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy);
|
||||
@@ -861,7 +861,7 @@ void ToolPanelCoordinator::updateVScrollbars (bool hide)
|
||||
|
||||
void ToolPanelCoordinator::updateTabsHeader (bool useIcons)
|
||||
{
|
||||
GThreadLock lock; // All GUI acces from idle_add callbacks or separate thread HAVE to be protected
|
||||
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||
TOITypes type = useIcons ? TOI_ICON : TOI_TEXT;
|
||||
|
||||
toiE->switchTo (type);
|
||||
@@ -887,7 +887,7 @@ void ToolPanelCoordinator::updateTabsUsesIcons (bool useIcons)
|
||||
|
||||
void ToolPanelCoordinator::toolSelected (ToolMode tool)
|
||||
{
|
||||
GThreadLock lock; // All GUI acces from idle_add callbacks or separate thread HAVE to be protected
|
||||
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||
|
||||
switch (tool) {
|
||||
case TMCropSelect:
|
||||
|
||||
@@ -890,7 +890,7 @@ void Wavelet::wavChanged (double nlevel)
|
||||
nextnlevel = nlevel;
|
||||
|
||||
const auto func = [](gpointer data) -> gboolean {
|
||||
GThreadLock lock; // All GUI acces from idle_add callbacks or separate thread HAVE to be protected
|
||||
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||
static_cast<Wavelet*>(data)->wavComputed_();
|
||||
|
||||
return FALSE;
|
||||
@@ -1096,7 +1096,7 @@ void Wavelet::read (const ProcParams* pp, const ParamsEdited* pedited)
|
||||
Dirmethod->set_active (3);
|
||||
}
|
||||
|
||||
int selectedLevel = atoi(pp->wavelet.Lmethod.data()) - 1;
|
||||
int selectedLevel = pp->wavelet.Lmethod - 1;
|
||||
Lmethod->set_active (selectedLevel == -1 ? 4 : selectedLevel);
|
||||
|
||||
ccshape->setCurve (pp->wavelet.ccwcurve);
|
||||
@@ -1735,9 +1735,7 @@ void Wavelet::write (ProcParams* pp, ParamsEdited* pedited)
|
||||
pp->wavelet.Dirmethod = "all";
|
||||
}
|
||||
|
||||
char lMethod[3]; // one additional char to avoid buffer overrun if someone increases number of levels > 9
|
||||
sprintf(lMethod, "%d", Lmethod->get_active_row_number() + 1);
|
||||
pp->wavelet.Lmethod = lMethod;
|
||||
pp->wavelet.Lmethod = Lmethod->get_active_row_number() + 1;
|
||||
}
|
||||
|
||||
void Wavelet::curveChanged (CurveEditor* ce)
|
||||
|
||||
Reference in New Issue
Block a user