lensfun: added possibility to use a private copy of the LF database
This commit is contained in:
@@ -231,6 +231,10 @@ if(NOT DEFINED APPDATADIR)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(DEFINED LENSFUNDBDIR AND NOT IS_ABSOLUTE "${LENSFUNDBDIR}")
|
||||||
|
set(LENSFUNDBDIR "${DATADIR}/${LENSFUNDBDIR}")
|
||||||
|
endif()
|
||||||
|
|
||||||
# Enforce absolute paths for non-bundle builds:
|
# Enforce absolute paths for non-bundle builds:
|
||||||
if(NOT BUILD_BUNDLE)
|
if(NOT BUILD_BUNDLE)
|
||||||
foreach(path BINDIR DATADIR LIBDIR DOCDIR CREDITSDIR LICENCEDIR)
|
foreach(path BINDIR DATADIR LIBDIR DOCDIR CREDITSDIR LICENCEDIR)
|
||||||
|
@@ -51,7 +51,7 @@ int init (const Settings* s, Glib::ustring baseDir, Glib::ustring userSettingsDi
|
|||||||
Color::init ();
|
Color::init ();
|
||||||
PerceptualToneCurve::init ();
|
PerceptualToneCurve::init ();
|
||||||
RawImageSource::init ();
|
RawImageSource::init ();
|
||||||
LFDatabase::init();
|
LFDatabase::init(s->lensfunDbDirectory);
|
||||||
delete lcmsMutex;
|
delete lcmsMutex;
|
||||||
lcmsMutex = new MyMutex;
|
lcmsMutex = new MyMutex;
|
||||||
dfm.init( s->darkFramesPath );
|
dfm.init( s->darkFramesPath );
|
||||||
|
@@ -253,10 +253,27 @@ bool LFLens::hasDistortionCorrection() const
|
|||||||
LFDatabase LFDatabase::instance_;
|
LFDatabase LFDatabase::instance_;
|
||||||
|
|
||||||
|
|
||||||
bool LFDatabase::init()
|
bool LFDatabase::init(const Glib::ustring &dbdir)
|
||||||
{
|
{
|
||||||
instance_.data_ = lfDatabase::Create();
|
instance_.data_ = lfDatabase::Create();
|
||||||
return instance_.data_->Load() != LF_NO_ERROR;
|
|
||||||
|
if (settings->verbose) {
|
||||||
|
std::cout << "Loading lensfun database from ";
|
||||||
|
if (dbdir.empty()) {
|
||||||
|
std::cout << "the default directories";
|
||||||
|
} else {
|
||||||
|
std::cout << "'" << dbdir << "'";
|
||||||
|
}
|
||||||
|
std::cout << "..." << std::flush;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ok = instance_.data_->Load(dbdir.empty() ? nullptr : dbdir.c_str()) == LF_NO_ERROR;
|
||||||
|
|
||||||
|
if (settings->verbose) {
|
||||||
|
std::cout << (ok ? "OK" : "FAIL") << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -100,7 +100,7 @@ class LFDatabase final :
|
|||||||
public NonCopyable
|
public NonCopyable
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static bool init();
|
static bool init(const Glib::ustring &dbdir);
|
||||||
static const LFDatabase *getInstance();
|
static const LFDatabase *getInstance();
|
||||||
|
|
||||||
~LFDatabase();
|
~LFDatabase();
|
||||||
|
@@ -92,6 +92,9 @@ public:
|
|||||||
double ed_low;
|
double ed_low;
|
||||||
double ed_lipinfl;
|
double ed_lipinfl;
|
||||||
double ed_lipampl;
|
double ed_lipampl;
|
||||||
|
|
||||||
|
Glib::ustring lensfunDbDirectory; ///< The directory containing the lensfun database. If empty, the system defaults will be used (as described in http://lensfun.sourceforge.net/manual/dbsearch.html)
|
||||||
|
|
||||||
/** Creates a new instance of Settings.
|
/** Creates a new instance of Settings.
|
||||||
* @return a pointer to the new Settings instance. */
|
* @return a pointer to the new Settings instance. */
|
||||||
static Settings* create ();
|
static Settings* create ();
|
||||||
|
@@ -25,5 +25,6 @@
|
|||||||
#define DOC_SEARCH_PATH "${DOCDIR}"
|
#define DOC_SEARCH_PATH "${DOCDIR}"
|
||||||
#define CREDITS_SEARCH_PATH "${CREDITSDIR}"
|
#define CREDITS_SEARCH_PATH "${CREDITSDIR}"
|
||||||
#define LICENCE_SEARCH_PATH "${LICENCEDIR}"
|
#define LICENCE_SEARCH_PATH "${LICENCEDIR}"
|
||||||
|
#define LENSFUN_DB_PATH "${LENSFUNDBDIR}"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -24,6 +24,7 @@
|
|||||||
#include "addsetids.h"
|
#include "addsetids.h"
|
||||||
#include "guiutils.h"
|
#include "guiutils.h"
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
#include <omp.h>
|
#include <omp.h>
|
||||||
@@ -727,6 +728,8 @@ void Options::setDefaults ()
|
|||||||
lastLensProfileDir = "";
|
lastLensProfileDir = "";
|
||||||
gimpPluginShowInfoDialog = true;
|
gimpPluginShowInfoDialog = true;
|
||||||
maxRecentFolders = 15;
|
maxRecentFolders = 15;
|
||||||
|
|
||||||
|
rtSettings.lensfunDbDirectory = LENSFUN_DB_PATH;
|
||||||
}
|
}
|
||||||
|
|
||||||
Options* Options::copyFrom (Options* other)
|
Options* Options::copyFrom (Options* other)
|
||||||
@@ -1868,6 +1871,12 @@ void Options::readFromFile (Glib::ustring fname)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (keyFile.has_group ("Lensfun")) {
|
||||||
|
if (keyFile.has_key ("Lensfun", "DBDirectory")) {
|
||||||
|
rtSettings.lensfunDbDirectory = keyFile.get_string ("Lensfun", "DBDirectory");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// --------------------------------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
filterOutParsedExtensions ();
|
filterOutParsedExtensions ();
|
||||||
@@ -2239,6 +2248,8 @@ void Options::saveToFile (Glib::ustring fname)
|
|||||||
keyFile.set_string ("Dialogs", "LastLensProfileDir", lastLensProfileDir);
|
keyFile.set_string ("Dialogs", "LastLensProfileDir", lastLensProfileDir);
|
||||||
keyFile.set_boolean ("Dialogs", "GimpPluginShowInfoDialog", gimpPluginShowInfoDialog);
|
keyFile.set_boolean ("Dialogs", "GimpPluginShowInfoDialog", gimpPluginShowInfoDialog);
|
||||||
|
|
||||||
|
keyFile.set_string ("Lensfun", "DBDirectory", rtSettings.lensfunDbDirectory);
|
||||||
|
|
||||||
keyData = keyFile.to_data ();
|
keyData = keyFile.to_data ();
|
||||||
|
|
||||||
} catch (Glib::KeyFileError &e) {
|
} catch (Glib::KeyFileError &e) {
|
||||||
|
Reference in New Issue
Block a user