Merge branch 'relative_clut_path' into dev
This commit is contained in:
@@ -307,12 +307,17 @@ std::shared_ptr<rtengine::HaldCLUT> rtengine::CLUTStore::getClut(const Glib::ust
|
|||||||
{
|
{
|
||||||
std::shared_ptr<rtengine::HaldCLUT> result;
|
std::shared_ptr<rtengine::HaldCLUT> result;
|
||||||
|
|
||||||
if (!cache.get(filename, result)) {
|
const Glib::ustring full_filename =
|
||||||
|
!Glib::path_is_absolute(filename)
|
||||||
|
? Glib::ustring(Glib::build_filename(options.clutsDir, filename))
|
||||||
|
: filename;
|
||||||
|
|
||||||
|
if (!cache.get(full_filename, result)) {
|
||||||
std::unique_ptr<rtengine::HaldCLUT> clut(new rtengine::HaldCLUT);
|
std::unique_ptr<rtengine::HaldCLUT> clut(new rtengine::HaldCLUT);
|
||||||
|
|
||||||
if (clut->load(filename)) {
|
if (clut->load(full_filename)) {
|
||||||
result = std::move(clut);
|
result = std::move(clut);
|
||||||
cache.insert(filename, result);
|
cache.insert(full_filename, result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -11,33 +11,45 @@ using namespace rtengine::procparams;
|
|||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Glib::ustring stripPrefixDir(const Glib::ustring& filename, const Glib::ustring& dir)
|
||||||
|
{
|
||||||
|
const Glib::ustring full_dir =
|
||||||
|
!Glib::str_has_suffix(dir, G_DIR_SEPARATOR_S)
|
||||||
|
? dir + G_DIR_SEPARATOR_S
|
||||||
|
: dir;
|
||||||
|
return
|
||||||
|
Glib::str_has_prefix(filename, full_dir)
|
||||||
|
? filename.substr(full_dir.size())
|
||||||
|
: filename;
|
||||||
|
}
|
||||||
|
|
||||||
bool notifySlowParseDir (const std::chrono::system_clock::time_point& startedAt)
|
bool notifySlowParseDir (const std::chrono::system_clock::time_point& startedAt)
|
||||||
{
|
{
|
||||||
static enum
|
enum Decision {
|
||||||
{
|
UNDECIDED,
|
||||||
Undecided,
|
CANCEL,
|
||||||
Cancel,
|
CONTINUE
|
||||||
Continue
|
};
|
||||||
}
|
|
||||||
decision = Undecided;
|
|
||||||
|
|
||||||
if (decision == Cancel) {
|
static Decision decision = UNDECIDED;
|
||||||
|
|
||||||
|
if (decision == CANCEL) {
|
||||||
return false;
|
return false;
|
||||||
} else if (decision == Continue) {
|
} else if (decision == CONTINUE) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto now = std::chrono::system_clock::now ();
|
const auto now = std::chrono::system_clock::now();
|
||||||
if (now - startedAt < std::chrono::seconds (10)) {
|
if (now - startedAt < std::chrono::seconds(10)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Gtk::MessageDialog dialog (M ("TP_FILMSIMULATION_SLOWPARSEDIR"), false, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_YES_NO, true);
|
Gtk::MessageDialog dialog(M("TP_FILMSIMULATION_SLOWPARSEDIR"), false, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_YES_NO, true);
|
||||||
if (dialog.run () == Gtk::RESPONSE_YES) {
|
if (dialog.run() == Gtk::RESPONSE_YES) {
|
||||||
decision = Cancel;
|
decision = CANCEL;
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
decision = Continue;
|
decision = CONTINUE;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -111,32 +123,40 @@ void FilmSimulation::read( const rtengine::procparams::ProcParams* pp, const Par
|
|||||||
{
|
{
|
||||||
//copypasted from lensprofile.cc & sharpening.cc
|
//copypasted from lensprofile.cc & sharpening.cc
|
||||||
disableListener();
|
disableListener();
|
||||||
updateDisable( true );
|
updateDisable(true);
|
||||||
|
|
||||||
setEnabled (pp->filmSimulation.enabled);
|
setEnabled(pp->filmSimulation.enabled);
|
||||||
|
|
||||||
if ( !pp->filmSimulation.clutFilename.empty() ) {
|
if (!pp->filmSimulation.clutFilename.empty()) {
|
||||||
m_clutComboBox->setSelectedClut( pp->filmSimulation.clutFilename );
|
m_clutComboBox->setSelectedClut(
|
||||||
|
!Glib::path_is_absolute(pp->filmSimulation.clutFilename)
|
||||||
|
? Glib::ustring(Glib::build_filename(options.clutsDir, pp->filmSimulation.clutFilename))
|
||||||
|
: pp->filmSimulation.clutFilename
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_strength->setValue( pp->filmSimulation.strength );
|
m_strength->setValue(pp->filmSimulation.strength);
|
||||||
|
|
||||||
if (pedited) {
|
if (pedited) {
|
||||||
set_inconsistent (multiImage && !pedited->filmSimulation.enabled);
|
set_inconsistent (multiImage && !pedited->filmSimulation.enabled);
|
||||||
m_strength->setEditedState (pedited->filmSimulation.strength ? Edited : UnEdited);
|
m_strength->setEditedState(
|
||||||
|
pedited->filmSimulation.strength
|
||||||
|
? Edited
|
||||||
|
: UnEdited
|
||||||
|
);
|
||||||
|
|
||||||
if ( !pedited->filmSimulation.clutFilename ) {
|
if (!pedited->filmSimulation.clutFilename) {
|
||||||
m_clutComboBox->setSelectedClut("NULL");
|
m_clutComboBox->setSelectedClut("NULL");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !get_inconsistent() && !pp->filmSimulation.enabled ) {
|
if (!get_inconsistent() && !pp->filmSimulation.enabled) {
|
||||||
if (options.clutCacheSize == 1) {
|
if (options.clutCacheSize == 1) {
|
||||||
CLUTStore::getInstance().clearCache();
|
CLUTStore::getInstance().clearCache();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
updateDisable( false );
|
updateDisable(false);
|
||||||
enableListener();
|
enableListener();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -147,17 +167,17 @@ void FilmSimulation::updateDisable( bool value )
|
|||||||
|
|
||||||
void FilmSimulation::write( rtengine::procparams::ProcParams* pp, ParamsEdited* pedited )
|
void FilmSimulation::write( rtengine::procparams::ProcParams* pp, ParamsEdited* pedited )
|
||||||
{
|
{
|
||||||
if ( pedited ) {
|
if (pedited) {
|
||||||
pedited->filmSimulation.enabled = !get_inconsistent();
|
pedited->filmSimulation.enabled = !get_inconsistent();
|
||||||
pedited->filmSimulation.strength = m_strength->getEditedState ();
|
pedited->filmSimulation.strength = m_strength->getEditedState();
|
||||||
pedited->filmSimulation.clutFilename = m_clutComboBox->getSelectedClut() != "NULL";
|
pedited->filmSimulation.clutFilename = m_clutComboBox->getSelectedClut() != "NULL";
|
||||||
}
|
}
|
||||||
|
|
||||||
pp->filmSimulation.enabled = getEnabled();
|
pp->filmSimulation.enabled = getEnabled();
|
||||||
Glib::ustring clutFName = m_clutComboBox->getSelectedClut();
|
const Glib::ustring clutFName = m_clutComboBox->getSelectedClut();
|
||||||
|
|
||||||
if ( clutFName != "NULL" ) { // We do not want to set "NULL" in clutFilename, even if "unedited"
|
if (clutFName != "NULL") { // We do not want to set "NULL" in clutFilename, even if "unedited"
|
||||||
pp->filmSimulation.clutFilename = clutFName;
|
pp->filmSimulation.clutFilename = stripPrefixDir(clutFName, options.clutsDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
pp->filmSimulation.strength = m_strength->getValue();
|
pp->filmSimulation.strength = m_strength->getValue();
|
||||||
|
Reference in New Issue
Block a user