From 8de054d504a2f0af9f3790e2eb77b7590b145b6b Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Mon, 19 Nov 2018 13:46:14 +0100 Subject: [PATCH 1/5] Formatted lensprofile.* --- rtgui/lensprofile.cc | 150 ++++++++++++++++++++++++++++--------------- rtgui/lensprofile.h | 35 ++++++---- 2 files changed, 120 insertions(+), 65 deletions(-) diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index a725ae9f8..e67a4e589 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -31,7 +31,7 @@ using namespace rtengine::procparams; LensProfilePanel::LFDbHelper *LensProfilePanel::lf(nullptr); -LensProfilePanel::LensProfilePanel () : +LensProfilePanel::LensProfilePanel() : FoldableToolPanel(this, "lensprof", M("TP_LENSPROFILE_LABEL")), lcModeChanged(false), lcpFileChanged(false), @@ -56,10 +56,10 @@ LensProfilePanel::LensProfilePanel () : corrOff = Gtk::manage(new Gtk::RadioButton(corrGroup, M("GENERAL_NONE"))); pack_start(*corrOff); - + corrLensfunAuto = Gtk::manage(new Gtk::RadioButton(corrGroup, M("LENSPROFILE_CORRECTION_AUTOMATCH"))); pack_start(*corrLensfunAuto); - + corrLensfunManual = Gtk::manage(new Gtk::RadioButton(corrGroup, M("LENSPROFILE_CORRECTION_MANUAL"))); pack_start(*corrLensfunManual); @@ -78,7 +78,7 @@ LensProfilePanel::LensProfilePanel () : cellRenderer->property_ellipsize() = Pango::ELLIPSIZE_MIDDLE; cellRenderer->property_ellipsize_set() = true; lensfunLenses->setPreferredWidth(50, 120); - + Gtk::HBox *hb = Gtk::manage(new Gtk::HBox()); hb->pack_start(*Gtk::manage(new Gtk::Label(M("EXIFFILTER_CAMERA"))), Gtk::PACK_SHRINK, 4); hb->pack_start(*lensfunCameras); @@ -119,23 +119,24 @@ LensProfilePanel::LensProfilePanel () : } else if (!options.lastLensProfileDir.empty()) { fcbLCPFile->set_current_folder(options.lastLensProfileDir); } + bindCurrentFolder(*fcbLCPFile, options.lastLensProfileDir); hbLCPFile->pack_start(*fcbLCPFile); pack_start(*hbLCPFile, Gtk::PACK_SHRINK, 4); - ckbUseDist = Gtk::manage (new Gtk::CheckButton (M("TP_LENSPROFILE_USEDIST"))); - pack_start (*ckbUseDist, Gtk::PACK_SHRINK, 4); - ckbUseVign = Gtk::manage (new Gtk::CheckButton (M("TP_LENSPROFILE_USEVIGN"))); - pack_start (*ckbUseVign, Gtk::PACK_SHRINK, 4); - ckbUseCA = Gtk::manage (new Gtk::CheckButton (M("TP_LENSPROFILE_USECA"))); - pack_start (*ckbUseCA, Gtk::PACK_SHRINK, 4); + ckbUseDist = Gtk::manage(new Gtk::CheckButton(M("TP_LENSPROFILE_USEDIST"))); + pack_start(*ckbUseDist, Gtk::PACK_SHRINK, 4); + ckbUseVign = Gtk::manage(new Gtk::CheckButton(M("TP_LENSPROFILE_USEVIGN"))); + pack_start(*ckbUseVign, Gtk::PACK_SHRINK, 4); + ckbUseCA = Gtk::manage(new Gtk::CheckButton(M("TP_LENSPROFILE_USECA"))); + pack_start(*ckbUseCA, Gtk::PACK_SHRINK, 4); - conLCPFile = fcbLCPFile->signal_file_set().connect( sigc::mem_fun(*this, &LensProfilePanel::onLCPFileChanged)); //, true); - conUseDist = ckbUseDist->signal_toggled().connect( sigc::mem_fun(*this, &LensProfilePanel::onUseDistChanged) ); - ckbUseVign->signal_toggled().connect( sigc::mem_fun(*this, &LensProfilePanel::onUseVignChanged) ); - ckbUseCA->signal_toggled().connect( sigc::mem_fun(*this, &LensProfilePanel::onUseCAChanged) ); + conLCPFile = fcbLCPFile->signal_file_set().connect(sigc::mem_fun(*this, &LensProfilePanel::onLCPFileChanged)); //, true); + conUseDist = ckbUseDist->signal_toggled().connect(sigc::mem_fun(*this, &LensProfilePanel::onUseDistChanged)); + ckbUseVign->signal_toggled().connect(sigc::mem_fun(*this, &LensProfilePanel::onUseVignChanged)); + ckbUseCA->signal_toggled().connect(sigc::mem_fun(*this, &LensProfilePanel::onUseCAChanged)); lensfunCameras->signal_changed().connect(sigc::mem_fun(*this, &LensProfilePanel::onLensfunCameraChanged)); lensfunLenses->signal_changed().connect(sigc::mem_fun(*this, &LensProfilePanel::onLensfunLensChanged)); @@ -145,13 +146,13 @@ LensProfilePanel::LensProfilePanel () : corrLcpFile->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLcpFile)); corrUnchanged->hide(); - + allowFocusDep = true; } void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited) { - disableListener (); + disableListener(); conUseDist.block(true); if (!batchMode) { @@ -160,16 +161,19 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa corrLensfunAuto->set_sensitive(true); - switch(pp->lensProf.lcMode) { + switch (pp->lensProf.lcMode) { case procparams::LensProfParams::LcMode::LCP : corrLcpFile->set_active(true); break; + case procparams::LensProfParams::LcMode::LENSFUNAUTOMATCH : corrLensfunAuto->set_active(true); break; + case procparams::LensProfParams::LcMode::LENSFUNMANUAL : corrLensfunManual->set_active(true); break; + case procparams::LensProfParams::LcMode::NONE : corrOff->set_active(true); } @@ -181,8 +185,9 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa bindCurrentFolder(*fcbLCPFile, options.lastLensProfileDir); updateDisabled(false); } else if (LCPStore::getInstance()->isValidLCPFileName(pp->lensProf.lcpFile)) { - fcbLCPFile->set_filename (pp->lensProf.lcpFile); - if(corrLcpFile->get_active()) { + fcbLCPFile->set_filename(pp->lensProf.lcpFile); + + if (corrLcpFile->get_active()) { updateDisabled(true); } } else { @@ -192,20 +197,21 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa const LFDatabase *db = LFDatabase::getInstance(); LFCamera c; - + if (!setLensfunCamera(pp->lensProf.lfCameraMake, pp->lensProf.lfCameraModel) && !pp->lensProf.lfManual()) { if (metadata) { c = db->findCamera(metadata->getMake(), metadata->getModel()); setLensfunCamera(c.getMake(), c.getModel()); } } + if (!setLensfunLens(pp->lensProf.lfLens) && !pp->lensProf.lfManual()) { if (metadata) { LFLens l = db->findLens(c, metadata->getLens()); setLensfunLens(l.getLens()); } } - + lcModeChanged = lcpFileChanged = useDistChanged = useVignChanged = useCAChanged = false; useLensfunChanged = lensfunAutoChanged = lensfunCameraChanged = lensfunLensChanged = false; @@ -213,6 +219,7 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa if (corrLensfunAuto->get_active()) { corrOff->set_active(true); } + corrLensfunAuto->set_sensitive(false); } @@ -222,11 +229,11 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa updateLensfunWarning(); - ckbUseDist->set_active (pp->lensProf.useDist); - ckbUseVign->set_active (pp->lensProf.useVign && isRaw); + ckbUseDist->set_active(pp->lensProf.useDist); + ckbUseVign->set_active(pp->lensProf.useVign && isRaw); ckbUseCA->set_active(pp->lensProf.useCA && isRaw && ckbUseCA->get_sensitive()); - - enableListener (); + + enableListener(); conUseDist.block(false); } @@ -234,33 +241,43 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa void LensProfilePanel::updateLensfunWarning() { warning->hide(); + if (corrLensfunManual->get_active() || corrLensfunAuto->get_active()) { const LFDatabase *db = LFDatabase::getInstance(); - + auto itc = lensfunCameras->get_active(); + if (!itc) { return; } + LFCamera c = db->findCamera((*itc)[lf->lensfunModelCam.make], (*itc)[lf->lensfunModelCam.model]); auto itl = lensfunLenses->get_active(); + if (!itl) { return; } + LFLens l = db->findLens(LFCamera(), (*itl)[lf->lensfunModelLens.lens]); float lenscrop = l.getCropFactor(); float camcrop = c.getCropFactor(); + if (lenscrop <= 0 || camcrop <= 0 || lenscrop / camcrop >= 1.01f) { warning->show(); } + ckbUseVign->set_sensitive(l.hasVignettingCorrection()); ckbUseDist->set_sensitive(l.hasDistortionCorrection()); ckbUseCA->set_sensitive(l.hasCACorrection()); + if (!isRaw || !l.hasVignettingCorrection()) { ckbUseVign->set_active(false); } + if (!l.hasDistortionCorrection()) { ckbUseDist->set_active(false); } + if (!l.hasCACorrection()) { ckbUseCA->set_active(false); } @@ -284,15 +301,15 @@ void LensProfilePanel::setRawMeta(bool raw, const rtengine::FramesMetaData* pMet metadata = pMeta; } -void LensProfilePanel::write( rtengine::procparams::ProcParams* pp, ParamsEdited* pedited) +void LensProfilePanel::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited) { if (corrLcpFile->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::LCP; - } else if(corrLensfunManual->get_active()) { + } else if (corrLensfunManual->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::LENSFUNMANUAL; - } else if(corrLensfunAuto->get_active()) { + } else if (corrLensfunAuto->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::LENSFUNAUTOMATCH; - } else if(corrOff->get_active()) { + } else if (corrOff->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::NONE; } @@ -307,6 +324,7 @@ void LensProfilePanel::write( rtengine::procparams::ProcParams* pp, ParamsEdited pp->lensProf.useCA = ckbUseCA->get_active(); auto itc = lensfunCameras->get_active(); + if (itc) { pp->lensProf.lfCameraMake = (*itc)[lf->lensfunModelCam.make]; pp->lensProf.lfCameraModel = (*itc)[lf->lensfunModelCam.model]; @@ -314,7 +332,9 @@ void LensProfilePanel::write( rtengine::procparams::ProcParams* pp, ParamsEdited pp->lensProf.lfCameraMake = ""; pp->lensProf.lfCameraModel = ""; } + auto itl = lensfunLenses->get_active(); + if (itl) { pp->lensProf.lfLens = (*itl)[lf->lensfunModelLens.lens]; } else { @@ -347,7 +367,8 @@ void LensProfilePanel::onLCPFileChanged() corrLcpFile->set_active(true); enableListener(); } - listener->panelChanged (EvLCPFile, Glib::path_get_basename(fcbLCPFile->get_filename())); + + listener->panelChanged(EvLCPFile, Glib::path_get_basename(fcbLCPFile->get_filename())); } } @@ -356,7 +377,7 @@ void LensProfilePanel::onUseDistChanged() useDistChanged = true; if (listener) { - listener->panelChanged (EvLCPUseDist, ckbUseDist->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); + listener->panelChanged(EvLCPUseDist, ckbUseDist->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); } } void LensProfilePanel::onUseVignChanged() @@ -364,7 +385,7 @@ void LensProfilePanel::onUseVignChanged() useVignChanged = true; if (listener) { - listener->panelChanged (EvLCPUseVign, ckbUseVign->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); + listener->panelChanged(EvLCPUseVign, ckbUseVign->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); } } void LensProfilePanel::onUseCAChanged() @@ -372,7 +393,7 @@ void LensProfilePanel::onUseCAChanged() useCAChanged = true; if (listener) { - listener->panelChanged (EvLCPUseCA, ckbUseCA->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); + listener->panelChanged(EvLCPUseCA, ckbUseCA->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); } } @@ -386,6 +407,7 @@ void LensProfilePanel::updateDisabled(bool enable) void LensProfilePanel::setBatchMode(bool yes) { FoldableToolPanel::setBatchMode(yes); + if (yes) { corrUnchanged->show(); corrUnchanged->set_active(true); @@ -399,25 +421,30 @@ bool LensProfilePanel::setLensfunCamera(const Glib::ustring &make, const Glib::u { if (!make.empty() && !model.empty()) { auto it = lensfunCameras->get_active(); + if (it && (*it)[lf->lensfunModelCam.make] == make && (*it)[lf->lensfunModelCam.model] == model) { return true; } - + // search for the active row for (auto row : lf->lensfunCameraModel->children()) { if (row[lf->lensfunModelCam.make] == make) { auto &c = row.children(); + for (auto it = c.begin(), end = c.end(); it != end; ++it) { auto &childrow = *it; + if (childrow[lf->lensfunModelCam.model] == model) { lensfunCameras->set_active(it); return true; } } + break; } } } + lensfunCameras->set_active(-1); return false; } @@ -427,21 +454,26 @@ bool LensProfilePanel::setLensfunLens(const Glib::ustring &lens) { if (!lens.empty()) { auto it = lensfunLenses->get_active(); + if (it && (*it)[lf->lensfunModelLens.lens] == lens) { return true; } bool first_maker_found = false; + for (auto row : lf->lensfunLensModel->children()) { if (lens.find(row[lf->lensfunModelLens.lens]) == 0) { auto &c = row.children(); + for (auto it = c.begin(), end = c.end(); it != end; ++it) { auto &childrow = *it; + if (childrow[lf->lensfunModelLens.lens] == lens) { lensfunLenses->set_active(it); return true; } } + // we do not break immediately here, because there might be multiple makers // sharing the same prefix (e.g. "Leica" and "Leica Camera AG"). // therefore, we break below when the lens doesn't match any of them @@ -451,6 +483,7 @@ bool LensProfilePanel::setLensfunLens(const Glib::ustring &lens) } } } + lensfunLenses->set_active(-1); return false; } @@ -468,7 +501,7 @@ void LensProfilePanel::onLensfunCameraChanged() disableListener(); corrLensfunManual->set_active(true); enableListener(); - + Glib::ustring name = (*iter)[lf->lensfunModelCam.model]; listener->panelChanged(EvLensCorrLensfunCamera, name); } @@ -489,7 +522,7 @@ void LensProfilePanel::onLensfunLensChanged() disableListener(); corrLensfunManual->set_active(true); enableListener(); - + Glib::ustring name = (*iter)[lf->lensfunModelLens.prettylens]; listener->panelChanged(EvLensCorrLensfunLens, name); } @@ -533,6 +566,7 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged) LFLens l = db->findLens(c, metadata->getLens()); setLensfunCamera(c.getMake(), c.getModel()); setLensfunLens(l.getLens()); + if (b) { enableListener(); } @@ -590,6 +624,7 @@ bool LensProfilePanel::checkLensfunCanCorrect(bool automatch) if (!metadata) { return false; } + rtengine::procparams::ProcParams lpp; write(&lpp); std::unique_ptr mod(LFDatabase::findModifier(lpp.lensProf, metadata, 100, 100, lpp.coarse, -1)); @@ -604,24 +639,24 @@ bool LensProfilePanel::checkLensfunCanCorrect(bool automatch) LensProfilePanel::LFDbHelper::LFDbHelper() { #ifdef _OPENMP -#pragma omp parallel sections if (!options.rtSettings.verbose) + #pragma omp parallel sections if (!options.rtSettings.verbose) #endif -{ + { #ifdef _OPENMP -#pragma omp section + #pragma omp section #endif -{ - lensfunCameraModel = Gtk::TreeStore::create(lensfunModelCam); - fillLensfunCameras(); -} + { + lensfunCameraModel = Gtk::TreeStore::create(lensfunModelCam); + fillLensfunCameras(); + } #ifdef _OPENMP -#pragma omp section + #pragma omp section #endif -{ - lensfunLensModel = Gtk::TreeStore::create(lensfunModelLens); - fillLensfunLenses(); -} -} + { + lensfunLensModel = Gtk::TreeStore::create(lensfunModelLens); + fillLensfunLenses(); + } + } } void LensProfilePanel::LFDbHelper::fillLensfunCameras() @@ -629,19 +664,23 @@ void LensProfilePanel::LFDbHelper::fillLensfunCameras() if (options.rtSettings.verbose) { std::cout << "LENSFUN, scanning cameras:" << std::endl; } + std::map> camnames; auto camlist = LFDatabase::getInstance()->getCameras(); + for (auto &c : camlist) { camnames[c.getMake()].insert(c.getModel()); if (options.rtSettings.verbose) { std::cout << " found: " << c.getDisplayString().c_str() << std::endl; - } + } } + for (auto &p : camnames) { Gtk::TreeModel::Row row = *(lensfunCameraModel->append()); row[lensfunModelCam.make] = p.first; row[lensfunModelCam.model] = p.first; + for (auto &c : p.second) { Gtk::TreeModel::Row child = *(lensfunCameraModel->append(row.children())); child[lensfunModelCam.make] = p.first; @@ -656,8 +695,10 @@ void LensProfilePanel::LFDbHelper::fillLensfunLenses() if (options.rtSettings.verbose) { std::cout << "LENSFUN, scanning lenses:" << std::endl; } + std::map> lenses; auto lenslist = LFDatabase::getInstance()->getLenses(); + for (auto &l : lenslist) { auto name = l.getLens(); auto make = l.getMake(); @@ -667,15 +708,18 @@ void LensProfilePanel::LFDbHelper::fillLensfunLenses() std::cout << " found: " << l.getDisplayString().c_str() << std::endl; } } + for (auto &p : lenses) { Gtk::TreeModel::Row row = *(lensfunLensModel->append()); row[lensfunModelLens.lens] = p.first; row[lensfunModelLens.prettylens] = p.first; + for (auto &c : p.second) { Gtk::TreeModel::Row child = *(lensfunLensModel->append(row.children())); child[lensfunModelLens.lens] = c; - if (c.find(p.first, p.first.size()+1) == p.first.size()+1) { - child[lensfunModelLens.prettylens] = c.substr(p.first.size()+1); + + if (c.find(p.first, p.first.size() + 1) == p.first.size() + 1) { + child[lensfunModelLens.prettylens] = c.substr(p.first.size() + 1); } else { child[lensfunModelLens.prettylens] = c; } diff --git a/rtgui/lensprofile.h b/rtgui/lensprofile.h index 8c814e6fc..692005d01 100644 --- a/rtgui/lensprofile.h +++ b/rtgui/lensprofile.h @@ -50,25 +50,36 @@ protected: MyComboBox *lensfunLenses; Gtk::Image *warning; - class LFDbHelper { + class LFDbHelper + { public: - class LFModelCam: public Gtk::TreeModel::ColumnRecord { + class LFModelCam: public Gtk::TreeModel::ColumnRecord + { public: - LFModelCam() { add(make); add(model); } + LFModelCam() + { + add(make); + add(model); + } Gtk::TreeModelColumn make; Gtk::TreeModelColumn model; }; - class LFModelLens: public Gtk::TreeModel::ColumnRecord { + class LFModelLens: public Gtk::TreeModel::ColumnRecord + { public: - LFModelLens() { add(lens); add(prettylens); } + LFModelLens() + { + add(lens); + add(prettylens); + } Gtk::TreeModelColumn lens; Gtk::TreeModelColumn prettylens; }; LFModelCam lensfunModelCam; LFModelLens lensfunModelLens; - + Glib::RefPtr lensfunCameraModel; Glib::RefPtr lensfunLensModel; @@ -87,16 +98,16 @@ protected: bool setLensfunLens(const Glib::ustring &lens); bool checkLensfunCanCorrect(bool automatch); void updateLensfunWarning(); - + public: - LensProfilePanel (); + LensProfilePanel(); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setRawMeta (bool raw, const rtengine::FramesMetaData* pMeta); + void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); + void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); + void setRawMeta(bool raw, const rtengine::FramesMetaData* pMeta); - void onLCPFileChanged (); + void onLCPFileChanged(); void onUseDistChanged(); void onUseVignChanged(); void onUseCAChanged(); From ff6d02fd71591ed60bbac5abb9ee6825572296b1 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Mon, 19 Nov 2018 14:12:28 +0100 Subject: [PATCH 2/5] Hide manual lens correction widgets when not needed - The comboboxes and their respective labels for manually specifying a camera and lens are now hidden when not in manual mode to not confuse the user. - All Lens Correction Profile widgets are now aligned. - Labels changed to not mislead users - the tool lets you select a lens profile, but it does not let you manually specify the individual correction parameters as previously implied. Closes #4995, closes #4997 --- rtdata/languages/Catala | 6 - rtdata/languages/Chinese (Simplified) | 6 - rtdata/languages/Chinese (Traditional) | 6 - rtdata/languages/Czech | 6 - rtdata/languages/Dansk | 6 - rtdata/languages/Deutsch | 6 - rtdata/languages/English (UK) | 6 - rtdata/languages/English (US) | 6 - rtdata/languages/Espanol | 6 - rtdata/languages/Euskara | 6 - rtdata/languages/Francais | 6 - rtdata/languages/Greek | 6 - rtdata/languages/Hebrew | 6 - rtdata/languages/Italiano | 6 - rtdata/languages/Japanese | 6 - rtdata/languages/Latvian | 6 - rtdata/languages/Magyar | 6 - rtdata/languages/Nederlands | 6 - rtdata/languages/Norsk BM | 6 - rtdata/languages/Polish | 6 - rtdata/languages/Polish (Latin Characters) | 6 - rtdata/languages/Portugues (Brasil) | 6 - rtdata/languages/Russian | 6 - rtdata/languages/Serbian (Cyrilic Characters) | 6 - rtdata/languages/Serbian (Latin Characters) | 6 - rtdata/languages/Slovak | 6 - rtdata/languages/Suomi | 6 - rtdata/languages/Swedish | 6 - rtdata/languages/Turkish | 6 - rtdata/languages/default | 16 +- rtgui/lensprofile.cc | 261 +++++++++++------- rtgui/lensprofile.h | 21 +- 32 files changed, 189 insertions(+), 283 deletions(-) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index bd9cb8359..8e2cbc611 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -790,9 +790,6 @@ TP_LENSGEOM_AUTOCROP;Auto cropa TP_LENSGEOM_FILL;Auto omple TP_LENSGEOM_LABEL;Lent / Geometria TP_LENSPROFILE_LABEL;Perfil de correcció de lent -TP_LENSPROFILE_USECA;Usa correcció AC -TP_LENSPROFILE_USEDIST;Correcció de distorsió -TP_LENSPROFILE_USEVIGN;Correcció de vores fosques TP_NEUTRAL_TIP;Torna els controls d'exposició a valors neutrals TP_PERSPECTIVE_HORIZONTAL;Horitzontal TP_PERSPECTIVE_LABEL;Perspectiva @@ -1431,9 +1428,6 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters -!LENSPROFILE_CORRECTION_LCPFILE;LCP File -!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index 5478d820a..ef507b9f3 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -878,9 +878,6 @@ TP_LENSGEOM_AUTOCROP;自动剪切 TP_LENSGEOM_FILL;自动填充 TP_LENSGEOM_LABEL;镜头 / 几何 TP_LENSPROFILE_LABEL;镜头矫正档案 -TP_LENSPROFILE_USECA;色散矫正 -TP_LENSPROFILE_USEDIST;畸变矫正 -TP_LENSPROFILE_USEVIGN;暗角矫正 TP_PCVIGNETTE_FEATHER;羽化 TP_PCVIGNETTE_LABEL;暗角滤镜 TP_PCVIGNETTE_ROUNDNESS;圆度 @@ -1507,9 +1504,6 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters -!LENSPROFILE_CORRECTION_LCPFILE;LCP File -!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index 9404a8a6b..5d8cc106a 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -1093,9 +1093,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters -!LENSPROFILE_CORRECTION_LCPFILE;LCP File -!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator @@ -1827,9 +1824,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index caaba31bb..2b2c257ce 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -811,9 +811,6 @@ IPTCPANEL_TITLE;Titulek IPTCPANEL_TITLEHINT;Vložte krátké, popisné a lidsky čitelné jméno obrázku. Například název souboru. IPTCPANEL_TRANSREFERENCE;Číslo úlohy IPTCPANEL_TRANSREFERENCEHINT;Zadejte číslo nebo identifikátor potřebný v pracovním postupu nebo pro sledování. -LENSPROFILE_CORRECTION_AUTOMATCH;Automatický dohledané korekční parametry -LENSPROFILE_CORRECTION_LCPFILE;LCP Soubor -LENSPROFILE_CORRECTION_MANUAL;Ruční korekční parametry LENSPROFILE_LENS_WARNING;Varování: crop factor použitý pro profilování objektivu je větší než crop factor fotoaparátu. Výsledek může být nesprávný. MAIN_BUTTON_FULLSCREEN;Celá obrazovka MAIN_BUTTON_NAVNEXT_TOOLTIP;Přejít k dalšímu obrázku relativnímu k obrázku otevřenému v editoru.\nZkratka: Shift-F4\n\nPřejít k dalšímu obrázku relativnímu k vybranému náhledu v prohlížeči souborů nebo na filmovém pásu:\nZkratka: F4 @@ -1687,9 +1684,6 @@ TP_LENSGEOM_AUTOCROP;Automatický ořez TP_LENSGEOM_FILL;Automatické vyplnění TP_LENSGEOM_LABEL;Objektiv / Geometrie TP_LENSPROFILE_LABEL;Korekční profily objektivů -TP_LENSPROFILE_USECA;Korekce chromatické aberace -TP_LENSPROFILE_USEDIST;Korekce zkreslení -TP_LENSPROFILE_USEVIGN;Korekce vinětace TP_LOCALCONTRAST_AMOUNT;Míra TP_LOCALCONTRAST_DARKNESS;Úroveň tmavé TP_LOCALCONTRAST_LABEL;Místní kontrast diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index aaa58fce2..8dc73105b 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -1088,9 +1088,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters -!LENSPROFILE_CORRECTION_LCPFILE;LCP File -!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator @@ -1824,9 +1821,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 14debc30f..f354c45e9 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -910,9 +910,6 @@ IPTCPANEL_TITLE;Titel IPTCPANEL_TITLEHINT;Geben Sie einen kurzen lesbaren Namen\nfür das Bild ein, z.B. den Dateinamen. IPTCPANEL_TRANSREFERENCE;Verarbeitungs-ID IPTCPANEL_TRANSREFERENCEHINT;Geben Sie eine Kennung zur Kontrolle oder\nVerfolgung des Arbeitsablaufes ein. -LENSPROFILE_CORRECTION_AUTOMATCH;Automatisch (Lensfun) -LENSPROFILE_CORRECTION_LCPFILE;LCP-Datei -LENSPROFILE_CORRECTION_MANUAL;Benutzerdefiniert (Lensfun) LENSPROFILE_LENS_WARNING;Warnung: Der Cropfaktor des Profils entspricht nicht dem des Objektivs.\nDies kann zu einem fehlerhaften Ergebnis führen. MAIN_BUTTON_FULLSCREEN;Vollbild\nTaste: F11 MAIN_BUTTON_ICCPROFCREATOR;ICC-Profil erstellen. @@ -1816,9 +1813,6 @@ TP_LENSGEOM_AUTOCROP;Auto-Schneiden TP_LENSGEOM_FILL;Auto-Füllen TP_LENSGEOM_LABEL;Objektivkorrekturen TP_LENSPROFILE_LABEL;Objektivkorrekturprofil -TP_LENSPROFILE_USECA;CA korrigieren -TP_LENSPROFILE_USEDIST;Verzeichnung korrigieren -TP_LENSPROFILE_USEVIGN;Vignettierung korrigieren TP_LOCALCONTRAST_AMOUNT;Intensität TP_LOCALCONTRAST_DARKNESS;Dunkle Bereiche TP_LOCALCONTRAST_LABEL;Lokaler Kontrast diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index 791a913ee..c53038f87 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -949,9 +949,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters -!LENSPROFILE_CORRECTION_LCPFILE;LCP File -!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator @@ -1790,9 +1787,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index fe7565d28..67c025236 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -861,9 +861,6 @@ !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters -!LENSPROFILE_CORRECTION_LCPFILE;LCP File -!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator @@ -1774,9 +1771,6 @@ !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index b70f2b3a7..84d268726 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -1279,9 +1279,6 @@ TP_LENSGEOM_AUTOCROP;Auto recorte TP_LENSGEOM_FILL;Auto relleno TP_LENSGEOM_LABEL;Lente / Geometría TP_LENSPROFILE_LABEL;Perfil de corrección de lente -TP_LENSPROFILE_USECA;Corrección de AC -TP_LENSPROFILE_USEDIST;Corrección de distorsión -TP_LENSPROFILE_USEVIGN;Corrección de viñeteo TP_NEUTRAL_TIP;Restablecer controles de exposición a valores neutros\nAplica a los mismos controles que son afectados por Niveles Automáticos, sin importar si usa o no Niveles Automáticos TP_PCVIGNETTE_FEATHER;Difuminado TP_PCVIGNETTE_FEATHER_TOOLTIP;Difuminación: \n0=Solo Esquinas\n50=Hasta medio camino al centro\n100=Hasta el Centro @@ -1814,9 +1811,6 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters -!LENSPROFILE_CORRECTION_LCPFILE;LCP File -!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index 19ec9ba7d..1cd513ef4 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -1089,9 +1089,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters -!LENSPROFILE_CORRECTION_LCPFILE;LCP File -!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator @@ -1825,9 +1822,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 34c74ea67..cfbb04dc3 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -860,9 +860,6 @@ IPTCPANEL_TITLE;Titre IPTCPANEL_TITLEHINT;Enterez un nom court et humainement lisible pour l'image, cela peut être le nom du fichier. IPTCPANEL_TRANSREFERENCE;ID du travail IPTCPANEL_TRANSREFERENCEHINT;Enterez un nombre ou identifiant servant au contrôle du flux de travail ou au suivi. -LENSPROFILE_CORRECTION_AUTOMATCH;Paramètres de correction trouvés automatiquement -LENSPROFILE_CORRECTION_LCPFILE;Fichier LCP -LENSPROFILE_CORRECTION_MANUAL;Paramètres de correction manuel LENSPROFILE_LENS_WARNING;Attention: la taille du capteur utilisé pour le profilage de l'objectif est plus grand que celui de l'appareil sélectionné, le résultat peut être faux. MAIN_BUTTON_FULLSCREEN;Plein écran MAIN_BUTTON_ICCPROFCREATOR;Créateur de Profil ICC @@ -1787,9 +1784,6 @@ TP_LENSGEOM_AUTOCROP;Recadrage auto TP_LENSGEOM_FILL;Remplir TP_LENSGEOM_LABEL;Objectif / Géométrie TP_LENSPROFILE_LABEL;Profil de correction d'objectif -TP_LENSPROFILE_USECA;Corr. de l'aber. chromatique -TP_LENSPROFILE_USEDIST;Corr. de la distortion -TP_LENSPROFILE_USEVIGN;Corr. du vignettage TP_LOCALCONTRAST_AMOUNT;Quantité TP_LOCALCONTRAST_DARKNESS;Niveau des ombres TP_LOCALCONTRAST_LABEL;Contraste Local diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index 761d0ea77..d2d7335ac 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -1088,9 +1088,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters -!LENSPROFILE_CORRECTION_LCPFILE;LCP File -!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator @@ -1824,9 +1821,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index d909f15c4..73b2752bf 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -1089,9 +1089,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters -!LENSPROFILE_CORRECTION_LCPFILE;LCP File -!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator @@ -1825,9 +1822,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index 173fb2a23..a3fcd92dc 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -1130,9 +1130,6 @@ TP_LENSGEOM_AUTOCROP; Ritaglio automatico TP_LENSGEOM_FILL;Adattamento automatico TP_LENSGEOM_LABEL;Obiettivo/Geometria TP_LENSPROFILE_LABEL;Profilo di Correzione dell'Obiettivo -TP_LENSPROFILE_USECA;Correzione dell'Aberrazione Cromatica (AC) -TP_LENSPROFILE_USEDIST;Correzione della Distorsione -TP_LENSPROFILE_USEVIGN;Correzione della Vignettatura TP_NEUTRAL_TIP;Riporta i controlli dell'esposizione ai valori neutrali.\nVale per gli stessi controlli cui è applicato Livelli Automatici, indipendentemente dal fatto che Livelli Automatici sia abilitato. TP_PCVIGNETTE_FEATHER;Scia TP_PCVIGNETTE_FEATHER_TOOLTIP;Scia:\n0 = solo i bordi,\n50 = a metà strada con il centro,\n100 = al centro. @@ -1689,9 +1686,6 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters -!LENSPROFILE_CORRECTION_LCPFILE;LCP File -!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_SENDTOEDITOR;Edit image in external editor diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index e36e77efb..0ebb061a1 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -892,9 +892,6 @@ IPTCPANEL_TITLE;タイトル IPTCPANEL_TITLEHINT;画像を短く表す言葉や撮影者名、或いは画像のタイトルでもよい IPTCPANEL_TRANSREFERENCE;作業のID IPTCPANEL_TRANSREFERENCEHINT;作業工程の管理やトラッキングのための画像の数字或いは識別 -LENSPROFILE_CORRECTION_AUTOMATCH;自動でパラメータを補正する -LENSPROFILE_CORRECTION_LCPFILE;LCPファイル -LENSPROFILE_CORRECTION_MANUAL;手動でパラメータを補正する LENSPROFILE_LENS_WARNING;注意:レンズプロファイルに関する切り抜きの因数がカメラの因数より大きいと、誤った結果になるかもしれません MAIN_BUTTON_FULLSCREEN;フルスクリーン MAIN_BUTTON_ICCPROFCREATOR;ICCプロファイルクリエーター @@ -1805,9 +1802,6 @@ TP_LENSGEOM_AUTOCROP;自動的に切り抜き選択 TP_LENSGEOM_FILL;オートフィル TP_LENSGEOM_LABEL;レンズ / ジオメトリ TP_LENSPROFILE_LABEL;レンズ補正 プロファイル -TP_LENSPROFILE_USECA;色収差補正 -TP_LENSPROFILE_USEDIST;歪曲収差補正 -TP_LENSPROFILE_USEVIGN;周辺光量補正 TP_LOCALCONTRAST_AMOUNT;量 TP_LOCALCONTRAST_DARKNESS;暗い部分のレベル TP_LOCALCONTRAST_LABEL;ローカルコントラスト diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index 22847390d..47006479f 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -1089,9 +1089,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters -!LENSPROFILE_CORRECTION_LCPFILE;LCP File -!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator @@ -1825,9 +1822,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index 600877671..b64b83f16 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -1361,9 +1361,6 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters -!LENSPROFILE_CORRECTION_LCPFILE;LCP File -!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 @@ -1918,9 +1915,6 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_LABCURVE_RSTPROTECTION;Red and skin-tones protection !TP_LABCURVE_RSTPRO_TOOLTIP;Works on the Chromaticity slider and the CC curve. !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index 315868150..ba0873377 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -1575,9 +1575,6 @@ TP_LENSGEOM_AUTOCROP;Automatisch bijsnijden TP_LENSGEOM_FILL;Automatisch uitvullen TP_LENSGEOM_LABEL;Objectief / Geometrie TP_LENSPROFILE_LABEL;Lenscorrectie Profielen -TP_LENSPROFILE_USECA;CA correctie -TP_LENSPROFILE_USEDIST;Lensvervorming correctie -TP_LENSPROFILE_USEVIGN;Vignettering correctie TP_NEUTRAL;Terugzetten TP_NEUTRAL_TIP;Alle belichtingsinstellingen naar 0 TP_PCVIGNETTE_FEATHER;Straal @@ -2198,9 +2195,6 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... !ICCPROFCREATOR_SLOPE;Slope !ICCPROFCREATOR_TRC_PRESET;Tone response curve: -!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters -!LENSPROFILE_CORRECTION_LCPFILE;LCP File -!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index 9ec4fc6e2..00c8532f8 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -1088,9 +1088,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters -!LENSPROFILE_CORRECTION_LCPFILE;LCP File -!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator @@ -1824,9 +1821,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index ec60c307f..67f37623f 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -1236,9 +1236,6 @@ TP_LENSGEOM_AUTOCROP;Auto-kadrowanie TP_LENSGEOM_FILL;Auto-wypełnienie TP_LENSGEOM_LABEL;Obiektyw / Geometria TP_LENSPROFILE_LABEL;Profil korekcji obiektywu LCP -TP_LENSPROFILE_USECA;Korekja aberacji chromatycznej -TP_LENSPROFILE_USEDIST;Korekcja dystorsji -TP_LENSPROFILE_USEVIGN;Korekcja winietowania TP_NEUTRAL_TIP;Zresetuj ustawienia do wartości neutralnych.\nDziała na tych samych suwakach na których funkcja "Wyrównaj poziomy" działa, niezależnie od tego czy funkcja ta była użyta czy nie. TP_PCVIGNETTE_FEATHER;Wtapianie TP_PCVIGNETTE_FEATHER_TOOLTIP;Wtapianie:\n0 = tylko brzegi,\n50 = w pół drogi do środka,\n100 = aż do środka. @@ -1771,9 +1768,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters -!LENSPROFILE_CORRECTION_LCPFILE;LCP File -!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_SENDTOEDITOR;Edit image in external editor diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index a75a3c475..3a3c360b4 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -1236,9 +1236,6 @@ TP_LENSGEOM_AUTOCROP;Auto-kadrowanie TP_LENSGEOM_FILL;Auto-wypelnienie TP_LENSGEOM_LABEL;Obiektyw / Geometria TP_LENSPROFILE_LABEL;Profil korekcji obiektywu LCP -TP_LENSPROFILE_USECA;Korekja aberacji chromatycznej -TP_LENSPROFILE_USEDIST;Korekcja dystorsji -TP_LENSPROFILE_USEVIGN;Korekcja winietowania TP_NEUTRAL_TIP;Zresetuj ustawienia do wartosci neutralnych.\nDziala na tych samych suwakach na ktorych funkcja "Wyrownaj poziomy" dziala, niezaleznie od tego czy funkcja ta byla uzyta czy nie. TP_PCVIGNETTE_FEATHER;Wtapianie TP_PCVIGNETTE_FEATHER_TOOLTIP;Wtapianie:\n0 = tylko brzegi,\n50 = w pol drogi do srodka,\n100 = az do srodka. @@ -1771,9 +1768,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters -!LENSPROFILE_CORRECTION_LCPFILE;LCP File -!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_SENDTOEDITOR;Edit image in external editor diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index cb2c20e1a..d2c5077f2 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -835,9 +835,6 @@ IPTCPANEL_TITLE;Título IPTCPANEL_TITLEHINT;Digite um nome curto e legível para a imagem, pode ser o nome do arquivo. IPTCPANEL_TRANSREFERENCE;Job ID IPTCPANEL_TRANSREFERENCEHINT;Digite um número ou identificador necessário para controle ou rastreamento do fluxo de trabalho. -LENSPROFILE_CORRECTION_AUTOMATCH;Parâmetros de correção de correspondência automática -LENSPROFILE_CORRECTION_LCPFILE;Arquivo LCP -LENSPROFILE_CORRECTION_MANUAL;Parâmetros de correção manual LENSPROFILE_LENS_WARNING;Aviso: o fator de corte usado para o perfil da lente é maior que o fator de corte da câmera, os resultados podem estar errados. MAIN_BUTTON_FULLSCREEN;Tela cheia MAIN_BUTTON_ICCPROFCREATOR;Criador de Perfil ICC @@ -1729,9 +1726,6 @@ TP_LENSGEOM_AUTOCROP;Corte automático TP_LENSGEOM_FILL;Preenchimento automático TP_LENSGEOM_LABEL;Lente / Geometria TP_LENSPROFILE_LABEL;Correção de lente perfilada -TP_LENSPROFILE_USECA;Correção da aberração cromática -TP_LENSPROFILE_USEDIST;Correção de distorção -TP_LENSPROFILE_USEVIGN;Correção de vinheta TP_LOCALCONTRAST_AMOUNT;Montante TP_LOCALCONTRAST_DARKNESS;Nível de escuridão TP_LOCALCONTRAST_LABEL;Contraste Local diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index 6769dd724..a0d3d1e85 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -538,9 +538,6 @@ IPTCPANEL_RESET;Сбросить IPTCPANEL_RESETHINT;Сбросить профиль на значения по умолчанию IPTCPANEL_SOURCE;Источник IPTCPANEL_TITLE;Название -LENSPROFILE_CORRECTION_AUTOMATCH;Автоподбор параметров коррекции -LENSPROFILE_CORRECTION_LCPFILE;Файл LCP -LENSPROFILE_CORRECTION_MANUAL;Ручные параметры коррекции LENSPROFILE_LENS_WARNING;Внимание: кроп-фактор используемый для анализа объектива больше чем кроп-фактор камеры, результаты могут быть не верны. MAIN_BUTTON_FULLSCREEN;Полный экран MAIN_BUTTON_NAVNEXT_TOOLTIP;Перейти к следующему изображению относительно открытого в редакторе\nГорячая клавиша: Shift+F4\n\nПерейти к следущему изображению относительно выбранного в файловом браузере\nгорячая клавиша F4 @@ -1222,9 +1219,6 @@ TP_LENSGEOM_AUTOCROP;Автокадрирование TP_LENSGEOM_FILL;Автозаполнение TP_LENSGEOM_LABEL;Геометрия TP_LENSPROFILE_LABEL;Профиль коррекции объектива -TP_LENSPROFILE_USECA;Корректировать ХА -TP_LENSPROFILE_USEDIST;Корректировать дисторсию -TP_LENSPROFILE_USEVIGN;Корректировать виньетирование TP_LOCALCONTRAST_AMOUNT;Величина TP_LOCALCONTRAST_DARKNESS;Тёмные тона TP_LOCALCONTRAST_LABEL;Локальный контраст diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index 080824fed..2f5de7b52 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -1086,9 +1086,6 @@ TP_LENSGEOM_AUTOCROP;Сам исеци TP_LENSGEOM_FILL;Сам попуни TP_LENSGEOM_LABEL;Објектив и геометрија TP_LENSPROFILE_LABEL;Профили за исправљање изобличења објектива -TP_LENSPROFILE_USECA;Исправљање хром. аберација -TP_LENSPROFILE_USEDIST;Исправљање изобличења -TP_LENSPROFILE_USEVIGN;Исправљање вињетарења TP_NEUTRAL;Неутрално TP_NEUTRAL_TIP;Враћа клизаче експозиције на неутралне вредности.\nПримењује се на исте контроле као у Ауто нивои, без обзира на то да ли сте користили Ауто нивое или не. TP_PCVIGNETTE_FEATHER;Умекшавање @@ -1665,9 +1662,6 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters -!LENSPROFILE_CORRECTION_LCPFILE;LCP File -!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index b0d929858..061b90fba 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -1086,9 +1086,6 @@ TP_LENSGEOM_AUTOCROP;Sam iseci TP_LENSGEOM_FILL;Sam popuni TP_LENSGEOM_LABEL;Objektiv i geometrija TP_LENSPROFILE_LABEL;Profili za ispravljanje izobličenja objektiva -TP_LENSPROFILE_USECA;Ispravljanje hrom. aberacija -TP_LENSPROFILE_USEDIST;Ispravljanje izobličenja -TP_LENSPROFILE_USEVIGN;Ispravljanje vinjetarenja TP_NEUTRAL;Neutralno TP_NEUTRAL_TIP;Vraća klizače ekspozicije na neutralne vrednosti.\nPrimenjuje se na iste kontrole kao u Auto nivoi, bez obzira na to da li ste koristili Auto nivoe ili ne. TP_PCVIGNETTE_FEATHER;Umekšavanje @@ -1665,9 +1662,6 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters -!LENSPROFILE_CORRECTION_LCPFILE;LCP File -!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index 3f8854ae8..fdad901a6 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -1151,9 +1151,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters -!LENSPROFILE_CORRECTION_LCPFILE;LCP File -!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 @@ -1845,9 +1842,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_LABCURVE_RSTPROTECTION;Red and skin-tones protection !TP_LABCURVE_RSTPRO_TOOLTIP;Works on the Chromaticity slider and the CC curve. !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index e304366b7..2875e4a0b 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -1090,9 +1090,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters -!LENSPROFILE_CORRECTION_LCPFILE;LCP File -!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator @@ -1825,9 +1822,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index 3c56bbcd1..ee2af3156 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -1440,9 +1440,6 @@ TP_LENSGEOM_AUTOCROP;Autobeskärning TP_LENSGEOM_FILL;Fyll automatiskt TP_LENSGEOM_LABEL;Geometrisk- och distorsionskorrigering TP_LENSPROFILE_LABEL;Objektivkorrigeringsprofil -TP_LENSPROFILE_USECA;Korrigera för kromatiska abberationer -TP_LENSPROFILE_USEDIST;Korrigera distorsion -TP_LENSPROFILE_USEVIGN;Korrigera vinjettering TP_NEUTRAL;Återställ TP_NEUTRAL_TIP;Återställ exponeringsreglagen till neutrala värden.\nGäller för samma reglage som autonivåer, oavsett om du använder autonivåer eller ej TP_PCVIGNETTE_FEATHER;Fjäder @@ -2026,9 +2023,6 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters -!LENSPROFILE_CORRECTION_LCPFILE;LCP File -!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index 812f70f4b..d63d13825 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -1089,9 +1089,6 @@ TP_WBALANCE_TEMPERATURE;Isı !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters -!LENSPROFILE_CORRECTION_LCPFILE;LCP File -!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator @@ -1824,9 +1821,6 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast diff --git a/rtdata/languages/default b/rtdata/languages/default index 02ded5378..7fadbaa72 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -860,10 +860,6 @@ IPTCPANEL_TITLE;Title IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. IPTCPANEL_TRANSREFERENCE;Job ID IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters -LENSPROFILE_CORRECTION_LCPFILE;LCP File -LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters -LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. MAIN_BUTTON_FULLSCREEN;Fullscreen MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 @@ -1772,10 +1768,16 @@ TP_LABCURVE_RSTPRO_TOOLTIP;Works on the Chromaticity slider and the CC curve. TP_LENSGEOM_AUTOCROP;Auto-Crop TP_LENSGEOM_FILL;Auto-fill TP_LENSGEOM_LABEL;Lens / Geometry +TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +TP_LENSPROFILE_CORRECTION_MANUAL;Manually TP_LENSPROFILE_LABEL;Profiled Lens Correction -TP_LENSPROFILE_USECA;Chromatic aberration correction -TP_LENSPROFILE_USEDIST;Distortion correction -TP_LENSPROFILE_USEVIGN;Vignetting correction +TP_LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. +TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +TP_LENSPROFILE_USE_CA;Chromatic aberration +TP_LENSPROFILE_USE_GEOMETRIC;Geometric +TP_LENSPROFILE_USE_VIGNETTING;Vignetting TP_LOCALCONTRAST_AMOUNT;Amount TP_LOCALCONTRAST_DARKNESS;Darkness level TP_LOCALCONTRAST_LABEL;Local Contrast diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index e67a4e589..1158928e5 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -49,103 +49,157 @@ LensProfilePanel::LensProfilePanel() : lf = new LFDbHelper(); } - corrUnchanged = Gtk::manage(new Gtk::RadioButton(M("GENERAL_UNCHANGED"))); - pack_start(*corrUnchanged); - corrGroup = corrUnchanged->get_group(); - corrOff = Gtk::manage(new Gtk::RadioButton(corrGroup, M("GENERAL_NONE"))); - pack_start(*corrOff); + // Main containers: - corrLensfunAuto = Gtk::manage(new Gtk::RadioButton(corrGroup, M("LENSPROFILE_CORRECTION_AUTOMATCH"))); - pack_start(*corrLensfunAuto); + modesGrid = Gtk::manage(new Gtk::Grid()); + modesGrid->get_style_context()->add_class("grid-spacing"); + setExpandAlignProperties(modesGrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - corrLensfunManual = Gtk::manage(new Gtk::RadioButton(corrGroup, M("LENSPROFILE_CORRECTION_MANUAL"))); - pack_start(*corrLensfunManual); + distGrid = Gtk::manage(new Gtk::Grid()); + distGrid->get_style_context()->add_class("grid-spacing"); + setExpandAlignProperties(distGrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + + + + // Mode choice widgets: + + Gtk::Label *corrHeaderLbl = Gtk::manage(new Gtk::Label(M("TP_LENSPROFILE_MODE_HEADER"))); + setExpandAlignProperties(corrHeaderLbl, true, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + + corrUnchangedRB = Gtk::manage(new Gtk::RadioButton(M("GENERAL_UNCHANGED"))); + corrUnchangedRB->hide(); + corrGroup = corrUnchangedRB->get_group(); + + corrOffRB = Gtk::manage(new Gtk::RadioButton(corrGroup, M("GENERAL_NONE"))); + + corrLensfunAutoRB = Gtk::manage(new Gtk::RadioButton(corrGroup, M("TP_LENSPROFILE_CORRECTION_AUTOMATCH"))); + + corrLensfunManualRB = Gtk::manage(new Gtk::RadioButton(corrGroup, M("TP_LENSPROFILE_CORRECTION_MANUAL"))); + + corrLcpFileRB = Gtk::manage(new Gtk::RadioButton(corrGroup, M("TP_LENSPROFILE_CORRECTION_LCPFILE"))); + corrLcpFileChooser = Gtk::manage(new MyFileChooserButton(M("TP_LENSPROFILE_LABEL"), Gtk::FILE_CHOOSER_ACTION_OPEN)); + setExpandAlignProperties(corrLcpFileChooser, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + + + + // Manually-selected profile widgets: + + lensfunCamerasLbl = Gtk::manage(new Gtk::Label(M("EXIFFILTER_CAMERA"))); + setExpandAlignProperties(lensfunCamerasLbl, false, false, Gtk::ALIGN_END, Gtk::ALIGN_CENTER); lensfunCameras = Gtk::manage(new MyComboBox()); lensfunCameras->set_model(lf->lensfunCameraModel); lensfunCameras->pack_start(lf->lensfunModelCam.model); + lensfunCameras->setPreferredWidth(50, 120); + setExpandAlignProperties(lensfunCameras, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + Gtk::CellRendererText* cellRenderer = dynamic_cast(lensfunCameras->get_first_cell()); cellRenderer->property_ellipsize() = Pango::ELLIPSIZE_MIDDLE; cellRenderer->property_ellipsize_set() = true; - lensfunCameras->setPreferredWidth(50, 120); + + lensfunLensesLbl = Gtk::manage(new Gtk::Label(M("EXIFFILTER_LENS"))); + setExpandAlignProperties(lensfunLensesLbl, false, false, Gtk::ALIGN_END, Gtk::ALIGN_CENTER); lensfunLenses = Gtk::manage(new MyComboBox()); lensfunLenses->set_model(lf->lensfunLensModel); lensfunLenses->pack_start(lf->lensfunModelLens.prettylens); + lensfunLenses->setPreferredWidth(50, 120); + setExpandAlignProperties(lensfunLenses, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + cellRenderer = dynamic_cast(lensfunLenses->get_first_cell()); cellRenderer->property_ellipsize() = Pango::ELLIPSIZE_MIDDLE; cellRenderer->property_ellipsize_set() = true; - lensfunLenses->setPreferredWidth(50, 120); - Gtk::HBox *hb = Gtk::manage(new Gtk::HBox()); - hb->pack_start(*Gtk::manage(new Gtk::Label(M("EXIFFILTER_CAMERA"))), Gtk::PACK_SHRINK, 4); - hb->pack_start(*lensfunCameras); - pack_start(*hb); - - hb = Gtk::manage(new Gtk::HBox()); - hb->pack_start(*Gtk::manage(new Gtk::Label(M("EXIFFILTER_LENS"))), Gtk::PACK_SHRINK, 4); - hb->pack_start(*lensfunLenses); warning = Gtk::manage(new Gtk::Image()); warning->set_from_icon_name("dialog-warning", Gtk::ICON_SIZE_LARGE_TOOLBAR); - warning->set_tooltip_text(M("LENSPROFILE_LENS_WARNING")); + warning->set_tooltip_text(M("TP_LENSPROFILE_LENS_WARNING")); warning->hide(); - hb->pack_start(*warning, Gtk::PACK_SHRINK, 4); - pack_start(*hb); - corrLcpFile = Gtk::manage(new Gtk::RadioButton(corrGroup)); - hbLCPFile = Gtk::manage(new Gtk::HBox()); - hbLCPFile->pack_start(*corrLcpFile, Gtk::PACK_SHRINK); - lLCPFileHead = Gtk::manage(new Gtk::Label(M("LENSPROFILE_CORRECTION_LCPFILE"))); - hbLCPFile->pack_start(*lLCPFileHead, Gtk::PACK_SHRINK, 4); - fcbLCPFile = Gtk::manage(new MyFileChooserButton(M("TP_LENSPROFILE_LABEL"), Gtk::FILE_CHOOSER_ACTION_OPEN)); + // LCP file filter config: Glib::RefPtr filterLCP = Gtk::FileFilter::create(); filterLCP->set_name(M("FILECHOOSER_FILTER_LCP")); filterLCP->add_pattern("*.lcp"); filterLCP->add_pattern("*.LCP"); - fcbLCPFile->add_filter(filterLCP); + corrLcpFileChooser->add_filter(filterLCP); Glib::ustring defDir = LCPStore::getInstance()->getDefaultCommonDirectory(); if (!defDir.empty()) { #ifdef WIN32 - fcbLCPFile->set_show_hidden(true); // ProgramData is hidden on Windows + corrLcpFileChooser->set_show_hidden(true); // ProgramData is hidden on Windows #endif - fcbLCPFile->set_current_folder(defDir); + corrLcpFileChooser->set_current_folder(defDir); } else if (!options.lastLensProfileDir.empty()) { - fcbLCPFile->set_current_folder(options.lastLensProfileDir); + corrLcpFileChooser->set_current_folder(options.lastLensProfileDir); } - bindCurrentFolder(*fcbLCPFile, options.lastLensProfileDir); + bindCurrentFolder(*corrLcpFileChooser, options.lastLensProfileDir); - hbLCPFile->pack_start(*fcbLCPFile); - pack_start(*hbLCPFile, Gtk::PACK_SHRINK, 4); - ckbUseDist = Gtk::manage(new Gtk::CheckButton(M("TP_LENSPROFILE_USEDIST"))); - pack_start(*ckbUseDist, Gtk::PACK_SHRINK, 4); - ckbUseVign = Gtk::manage(new Gtk::CheckButton(M("TP_LENSPROFILE_USEVIGN"))); - pack_start(*ckbUseVign, Gtk::PACK_SHRINK, 4); - ckbUseCA = Gtk::manage(new Gtk::CheckButton(M("TP_LENSPROFILE_USECA"))); - pack_start(*ckbUseCA, Gtk::PACK_SHRINK, 4); + // Choice of properties to correct, applicable to all modes: - conLCPFile = fcbLCPFile->signal_file_set().connect(sigc::mem_fun(*this, &LensProfilePanel::onLCPFileChanged)); //, true); + Gtk::Label *useHeaderLbl = Gtk::manage(new Gtk::Label(M("TP_LENSPROFILE_USE_HEADER"))); + setExpandAlignProperties(useHeaderLbl, true, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + + ckbUseDist = Gtk::manage(new Gtk::CheckButton(M("TP_LENSPROFILE_USE_GEOMETRIC"))); + ckbUseVign = Gtk::manage(new Gtk::CheckButton(M("TP_LENSPROFILE_USE_VIGNETTING"))); + ckbUseCA = Gtk::manage(new Gtk::CheckButton(M("TP_LENSPROFILE_USE_CA"))); + + + + // Populate modes grid: + + modesGrid->attach(*corrHeaderLbl, 0, 0, 2, 1); + modesGrid->attach(*corrOffRB, 0, 1, 2, 1); + modesGrid->attach(*corrLensfunAutoRB, 0, 2, 2, 1); + modesGrid->attach(*corrLensfunManualRB, 0, 3, 2, 1); + + modesGrid->attach(*lensfunCamerasLbl, 0, 4, 1, 1); + modesGrid->attach(*lensfunCameras, 1, 4, 1, 1); + modesGrid->attach(*lensfunLensesLbl, 0, 5, 1, 1); + modesGrid->attach(*lensfunLenses, 1, 5, 1, 1); + modesGrid->attach(*warning, 2, 5, 1, 1); + + modesGrid->attach(*corrLcpFileRB, 0, 6, 1, 1); + modesGrid->attach(*corrLcpFileChooser, 1, 6, 1, 1); + + + + // Populate distortions grid: + + distGrid->attach(*useHeaderLbl, 0, 0, 1, 1); + distGrid->attach(*ckbUseDist, 0, 1, 1, 1); + distGrid->attach(*ckbUseVign, 0, 2, 1, 1); + distGrid->attach(*ckbUseCA, 0, 3, 1, 1); + + + + // Attach grids: + + pack_start(*modesGrid); + pack_start(*distGrid); + + + + // Signals: + + conLCPFile = corrLcpFileChooser->signal_file_set().connect(sigc::mem_fun(*this, &LensProfilePanel::onLCPFileChanged)); conUseDist = ckbUseDist->signal_toggled().connect(sigc::mem_fun(*this, &LensProfilePanel::onUseDistChanged)); ckbUseVign->signal_toggled().connect(sigc::mem_fun(*this, &LensProfilePanel::onUseVignChanged)); ckbUseCA->signal_toggled().connect(sigc::mem_fun(*this, &LensProfilePanel::onUseCAChanged)); lensfunCameras->signal_changed().connect(sigc::mem_fun(*this, &LensProfilePanel::onLensfunCameraChanged)); lensfunLenses->signal_changed().connect(sigc::mem_fun(*this, &LensProfilePanel::onLensfunLensChanged)); - corrOff->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrOff)); - corrLensfunAuto->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLensfunAuto)); - corrLensfunManual->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLensfunManual)); - corrLcpFile->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLcpFile)); - - corrUnchanged->hide(); + corrOffRB->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrOffRB)); + corrLensfunAutoRB->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLensfunAutoRB)); + corrLensfunManualRB->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLensfunManualRB)); + corrLcpFileRB->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLcpFileRB)); allowFocusDep = true; } @@ -156,42 +210,42 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa conUseDist.block(true); if (!batchMode) { - corrUnchanged->hide(); + corrUnchangedRB->hide(); } - corrLensfunAuto->set_sensitive(true); + corrLensfunAutoRB->set_sensitive(true); switch (pp->lensProf.lcMode) { case procparams::LensProfParams::LcMode::LCP : - corrLcpFile->set_active(true); + corrLcpFileRB->set_active(true); break; case procparams::LensProfParams::LcMode::LENSFUNAUTOMATCH : - corrLensfunAuto->set_active(true); + corrLensfunAutoRB->set_active(true); break; case procparams::LensProfParams::LcMode::LENSFUNMANUAL : - corrLensfunManual->set_active(true); + corrLensfunManualRB->set_active(true); break; case procparams::LensProfParams::LcMode::NONE : - corrOff->set_active(true); + corrOffRB->set_active(true); } if (pp->lensProf.lcpFile.empty()) { - Glib::ustring lastFolder = fcbLCPFile->get_current_folder(); - fcbLCPFile->set_current_folder(lastFolder); - fcbLCPFile->unselect_all(); - bindCurrentFolder(*fcbLCPFile, options.lastLensProfileDir); + Glib::ustring lastFolder = corrLcpFileChooser->get_current_folder(); + corrLcpFileChooser->set_current_folder(lastFolder); + corrLcpFileChooser->unselect_all(); + bindCurrentFolder(*corrLcpFileChooser, options.lastLensProfileDir); updateDisabled(false); } else if (LCPStore::getInstance()->isValidLCPFileName(pp->lensProf.lcpFile)) { - fcbLCPFile->set_filename(pp->lensProf.lcpFile); + corrLcpFileChooser->set_filename(pp->lensProf.lcpFile); - if (corrLcpFile->get_active()) { + if (corrLcpFileRB->get_active()) { updateDisabled(true); } } else { - fcbLCPFile->unselect_filename(fcbLCPFile->get_filename()); + corrLcpFileChooser->unselect_filename(corrLcpFileChooser->get_filename()); updateDisabled(false); } @@ -216,15 +270,15 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa useLensfunChanged = lensfunAutoChanged = lensfunCameraChanged = lensfunLensChanged = false; if (!batchMode && !checkLensfunCanCorrect(true)) { - if (corrLensfunAuto->get_active()) { - corrOff->set_active(true); + if (corrLensfunAutoRB->get_active()) { + corrOffRB->set_active(true); } - corrLensfunAuto->set_sensitive(false); + corrLensfunAutoRB->set_sensitive(false); } - if (corrLensfunManual->get_active() && !checkLensfunCanCorrect(false)) { - corrOff->set_active(true); + if (corrLensfunManualRB->get_active() && !checkLensfunCanCorrect(false)) { + corrOffRB->set_active(true); } updateLensfunWarning(); @@ -237,12 +291,28 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa conUseDist.block(false); } +void LensProfilePanel::setManualParamsVisibility(bool setVisible) +{ + if (setVisible) { + lensfunCamerasLbl->show(); + lensfunCameras->show(); + lensfunLensesLbl->show(); + lensfunLenses->show(); + updateLensfunWarning(); + } else { + lensfunCamerasLbl->hide(); + lensfunCameras->hide(); + lensfunLensesLbl->hide(); + lensfunLenses->hide(); + warning->hide(); + } +} void LensProfilePanel::updateLensfunWarning() { warning->hide(); - if (corrLensfunManual->get_active() || corrLensfunAuto->get_active()) { + if (corrLensfunManualRB->get_active() || corrLensfunAutoRB->get_active()) { const LFDatabase *db = LFDatabase::getInstance(); auto itc = lensfunCameras->get_active(); @@ -303,18 +373,18 @@ void LensProfilePanel::setRawMeta(bool raw, const rtengine::FramesMetaData* pMet void LensProfilePanel::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited) { - if (corrLcpFile->get_active()) { + if (corrLcpFileRB->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::LCP; - } else if (corrLensfunManual->get_active()) { + } else if (corrLensfunManualRB->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::LENSFUNMANUAL; - } else if (corrLensfunAuto->get_active()) { + } else if (corrLensfunAutoRB->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::LENSFUNAUTOMATCH; - } else if (corrOff->get_active()) { + } else if (corrOffRB->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::NONE; } - if (LCPStore::getInstance()->isValidLCPFileName(fcbLCPFile->get_filename())) { - pp->lensProf.lcpFile = fcbLCPFile->get_filename(); + if (LCPStore::getInstance()->isValidLCPFileName(corrLcpFileChooser->get_filename())) { + pp->lensProf.lcpFile = corrLcpFileChooser->get_filename(); } else { pp->lensProf.lcpFile = ""; } @@ -358,17 +428,17 @@ void LensProfilePanel::write(rtengine::procparams::ProcParams* pp, ParamsEdited* void LensProfilePanel::onLCPFileChanged() { lcpFileChanged = true; - bool valid = LCPStore::getInstance()->isValidLCPFileName(fcbLCPFile->get_filename()); + bool valid = LCPStore::getInstance()->isValidLCPFileName(corrLcpFileChooser->get_filename()); updateDisabled(valid); if (listener) { if (valid) { disableListener(); - corrLcpFile->set_active(true); + corrLcpFileRB->set_active(true); enableListener(); } - listener->panelChanged(EvLCPFile, Glib::path_get_basename(fcbLCPFile->get_filename())); + listener->panelChanged(EvLCPFile, Glib::path_get_basename(corrLcpFileChooser->get_filename())); } } @@ -409,10 +479,10 @@ void LensProfilePanel::setBatchMode(bool yes) FoldableToolPanel::setBatchMode(yes); if (yes) { - corrUnchanged->show(); - corrUnchanged->set_active(true); + corrUnchangedRB->show(); + corrUnchangedRB->set_active(true); } else { - corrUnchanged->hide(); + corrUnchangedRB->hide(); } } @@ -499,7 +569,7 @@ void LensProfilePanel::onLensfunCameraChanged() if (listener) { disableListener(); - corrLensfunManual->set_active(true); + corrLensfunManualRB->set_active(true); enableListener(); Glib::ustring name = (*iter)[lf->lensfunModelCam.model]; @@ -520,7 +590,7 @@ void LensProfilePanel::onLensfunLensChanged() if (listener) { disableListener(); - corrLensfunManual->set_active(true); + corrLensfunManualRB->set_active(true); enableListener(); Glib::ustring name = (*iter)[lf->lensfunModelLens.prettylens]; @@ -531,14 +601,13 @@ void LensProfilePanel::onLensfunLensChanged() updateLensfunWarning(); } - void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged) { if (rbChanged->get_active()) { // because the method gets called for the enabled AND the disabled RadioButton, we do the processing only for the enabled one Glib::ustring mode; - if (rbChanged == corrOff) { + if (rbChanged == corrOffRB) { useLensfunChanged = true; lensfunAutoChanged = true; lcpFileChanged = true; @@ -548,7 +617,7 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged) ckbUseCA->set_sensitive(false); mode = M("GENERAL_NONE"); - } else if (rbChanged == corrLensfunAuto) { + } else if (rbChanged == corrLensfunAutoRB) { useLensfunChanged = true; lensfunAutoChanged = true; lcpFileChanged = true; @@ -572,8 +641,8 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged) } } - mode = M("LENSPROFILE_CORRECTION_AUTOMATCH"); - } else if (rbChanged == corrLensfunManual) { + mode = M("TP_LENSPROFILE_CORRECTION_AUTOMATCH"); + } else if (rbChanged == corrLensfunManualRB) { useLensfunChanged = true; lensfunAutoChanged = true; lcpFileChanged = true; @@ -584,8 +653,8 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged) ckbUseVign->set_sensitive(true); ckbUseCA->set_sensitive(false); - mode = M("LENSPROFILE_CORRECTION_MANUAL"); - } else if (rbChanged == corrLcpFile) { + mode = M("TP_LENSPROFILE_CORRECTION_MANUAL"); + } else if (rbChanged == corrLcpFileRB) { useLensfunChanged = true; lensfunAutoChanged = true; lcpFileChanged = true; @@ -594,8 +663,8 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged) updateDisabled(true); - mode = M("LENSPROFILE_CORRECTION_LCPFILE"); - } else if (rbChanged == corrUnchanged) { + mode = M("TP_LENSPROFILE_CORRECTION_LCPFILE"); + } else if (rbChanged == corrUnchangedRB) { useLensfunChanged = false; lensfunAutoChanged = false; lcpFileChanged = false; @@ -612,6 +681,12 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged) lcModeChanged = true; updateLensfunWarning(); + if (rbChanged == corrLensfunManualRB) { + setManualParamsVisibility(true); + } else { + setManualParamsVisibility(false); + } + if (listener) { listener->panelChanged(EvLensCorrMode, mode); } @@ -639,18 +714,18 @@ bool LensProfilePanel::checkLensfunCanCorrect(bool automatch) LensProfilePanel::LFDbHelper::LFDbHelper() { #ifdef _OPENMP - #pragma omp parallel sections if (!options.rtSettings.verbose) +#pragma omp parallel sections if (!options.rtSettings.verbose) #endif { #ifdef _OPENMP - #pragma omp section +#pragma omp section #endif { lensfunCameraModel = Gtk::TreeStore::create(lensfunModelCam); fillLensfunCameras(); } #ifdef _OPENMP - #pragma omp section +#pragma omp section #endif { lensfunLensModel = Gtk::TreeStore::create(lensfunModelLens); diff --git a/rtgui/lensprofile.h b/rtgui/lensprofile.h index 692005d01..9b68ad26b 100644 --- a/rtgui/lensprofile.h +++ b/rtgui/lensprofile.h @@ -29,10 +29,6 @@ class LensProfilePanel : public ToolParamBlock, public FoldableToolPanel protected: - MyFileChooserButton *fcbLCPFile; - Gtk::CheckButton *ckbUseDist, *ckbUseVign, *ckbUseCA; - Gtk::HBox *hbLCPFile; - Gtk::Label *lLCPFileHead; bool lcModeChanged, lcpFileChanged, useDistChanged, useVignChanged, useCAChanged; sigc::connection conLCPFile, conUseDist, conUseVign, conUseCA; void updateDisabled(bool enable); @@ -40,14 +36,20 @@ protected: bool isRaw; const rtengine::FramesMetaData* metadata; + Gtk::CheckButton *ckbUseDist, *ckbUseVign, *ckbUseCA; Gtk::RadioButton::Group corrGroup; - Gtk::RadioButton *corrOff; - Gtk::RadioButton *corrLensfunAuto; - Gtk::RadioButton *corrLensfunManual; - Gtk::RadioButton *corrLcpFile; - Gtk::RadioButton *corrUnchanged; + Gtk::RadioButton *corrOffRB; + Gtk::RadioButton *corrLensfunAutoRB; + Gtk::RadioButton *corrLensfunManualRB; + Gtk::RadioButton *corrLcpFileRB; + Gtk::RadioButton *corrUnchangedRB; + Gtk::Grid *modesGrid; + Gtk::Grid *distGrid; + Gtk::Label *lensfunCamerasLbl; + Gtk::Label *lensfunLensesLbl; MyComboBox *lensfunCameras; MyComboBox *lensfunLenses; + MyFileChooserButton *corrLcpFileChooser; Gtk::Image *warning; class LFDbHelper @@ -97,6 +99,7 @@ protected: bool setLensfunCamera(const Glib::ustring &make, const Glib::ustring &model); bool setLensfunLens(const Glib::ustring &lens); bool checkLensfunCanCorrect(bool automatch); + void setManualParamsVisibility(bool setVisible); void updateLensfunWarning(); public: From 452dec763ca71e50c226dc660cb9c8836c75fef2 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Mon, 19 Nov 2018 21:38:43 +0100 Subject: [PATCH 3/5] Show PLC widgets for auto+manual modes #4999 The Profile Lens Correction comboboxes for choosing the camera + lens are now visible in both manual and automatic modes as requested. --- rtgui/lensprofile.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index 1158928e5..8f4253db3 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -681,7 +681,7 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged) lcModeChanged = true; updateLensfunWarning(); - if (rbChanged == corrLensfunManualRB) { + if (rbChanged == corrLensfunManualRB || rbChanged == corrLensfunAutoRB) { setManualParamsVisibility(true); } else { setManualParamsVisibility(false); From 7e70412090a63b63661cfdcb3cd147113217c54e Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 20 Nov 2018 12:47:25 +0100 Subject: [PATCH 4/5] Constified and shuffled by Floessie #4999 I added the missing "(Unchanged)" mode for Batch Edit, which is currently broken #5002. --- rtengine/rt_math.h | 14 ++ rtgui/lensprofile.cc | 534 +++++++++++++++++++++---------------------- rtgui/lensprofile.h | 118 +++++----- 3 files changed, 336 insertions(+), 330 deletions(-) diff --git a/rtengine/rt_math.h b/rtengine/rt_math.h index 9342f5430..b21d26564 100644 --- a/rtengine/rt_math.h +++ b/rtengine/rt_math.h @@ -56,6 +56,13 @@ constexpr const T& min(const T& a, const T& b) return b < a ? b : a; } +template<> +constexpr const float& min(const float& a, const float& b) +{ + // For consistency reasons we return b instead of a if a == b or a == NaN + return a < b ? a : b; +} + template constexpr const T& min(const T& a, const T& b, const ARGS&... args) { @@ -74,6 +81,13 @@ constexpr const T& max(const T& a, const T& b) return a < b ? b : a; } +template<> +constexpr const float& max(const float& a, const float& b) +{ + // For consistency reasons we return b instead of a if a == b or a == NaN + return b < a ? a : b; +} + template constexpr const T& max(const T& a, const T& b, const ARGS&... args) { diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index 8f4253db3..0d5d9a0c3 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -29,8 +29,6 @@ using namespace rtengine; using namespace rtengine::procparams; -LensProfilePanel::LFDbHelper *LensProfilePanel::lf(nullptr); - LensProfilePanel::LensProfilePanel() : FoldableToolPanel(this, "lensprof", M("TP_LENSPROFILE_LABEL")), lcModeChanged(false), @@ -38,96 +36,89 @@ LensProfilePanel::LensProfilePanel() : useDistChanged(false), useVignChanged(false), useCAChanged(false), - isRaw(true), - metadata(nullptr), useLensfunChanged(false), lensfunAutoChanged(false), lensfunCameraChanged(false), - lensfunLensChanged(false) + lensfunLensChanged(false), + allowFocusDep(true), + isRaw(true), + metadata(nullptr), + modesGrid(Gtk::manage(new Gtk::Grid())), + distGrid(Gtk::manage((new Gtk::Grid()))), + corrUnchangedRB(Gtk::manage((new Gtk::RadioButton(M("GENERAL_UNCHANGED"))))), + corrOffRB(Gtk::manage((new Gtk::RadioButton(corrGroup, M("GENERAL_NONE"))))), + corrLensfunAutoRB(Gtk::manage((new Gtk::RadioButton(corrGroup, M("TP_LENSPROFILE_CORRECTION_AUTOMATCH"))))), + corrLensfunManualRB(Gtk::manage((new Gtk::RadioButton(corrGroup, M("TP_LENSPROFILE_CORRECTION_MANUAL"))))), + corrLcpFileRB(Gtk::manage((new Gtk::RadioButton(corrGroup, M("TP_LENSPROFILE_CORRECTION_LCPFILE"))))), + corrLcpFileChooser(Gtk::manage((new MyFileChooserButton(M("TP_LENSPROFILE_LABEL"), Gtk::FILE_CHOOSER_ACTION_OPEN)))), + lensfunCamerasLbl(Gtk::manage((new Gtk::Label(M("EXIFFILTER_CAMERA"))))), + lensfunCameras(Gtk::manage((new MyComboBox()))), + lensfunLensesLbl(Gtk::manage((new Gtk::Label(M("EXIFFILTER_LENS"))))), + lensfunLenses(Gtk::manage((new MyComboBox()))), + warning(Gtk::manage((new Gtk::Image()))), + ckbUseDist(Gtk::manage((new Gtk::CheckButton(M("TP_LENSPROFILE_USE_GEOMETRIC"))))), + ckbUseVign(Gtk::manage((new Gtk::CheckButton(M("TP_LENSPROFILE_USE_VIGNETTING"))))), + ckbUseCA(Gtk::manage((new Gtk::CheckButton(M("TP_LENSPROFILE_USE_CA"))))) { if (!lf) { lf = new LFDbHelper(); } - - // Main containers: - modesGrid = Gtk::manage(new Gtk::Grid()); modesGrid->get_style_context()->add_class("grid-spacing"); setExpandAlignProperties(modesGrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - distGrid = Gtk::manage(new Gtk::Grid()); distGrid->get_style_context()->add_class("grid-spacing"); setExpandAlignProperties(distGrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - - // Mode choice widgets: - Gtk::Label *corrHeaderLbl = Gtk::manage(new Gtk::Label(M("TP_LENSPROFILE_MODE_HEADER"))); + Gtk::Label* const corrHeaderLbl = Gtk::manage(new Gtk::Label(M("TP_LENSPROFILE_MODE_HEADER"))); setExpandAlignProperties(corrHeaderLbl, true, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); - corrUnchangedRB = Gtk::manage(new Gtk::RadioButton(M("GENERAL_UNCHANGED"))); corrUnchangedRB->hide(); corrGroup = corrUnchangedRB->get_group(); - corrOffRB = Gtk::manage(new Gtk::RadioButton(corrGroup, M("GENERAL_NONE"))); - - corrLensfunAutoRB = Gtk::manage(new Gtk::RadioButton(corrGroup, M("TP_LENSPROFILE_CORRECTION_AUTOMATCH"))); - - corrLensfunManualRB = Gtk::manage(new Gtk::RadioButton(corrGroup, M("TP_LENSPROFILE_CORRECTION_MANUAL"))); - - corrLcpFileRB = Gtk::manage(new Gtk::RadioButton(corrGroup, M("TP_LENSPROFILE_CORRECTION_LCPFILE"))); - corrLcpFileChooser = Gtk::manage(new MyFileChooserButton(M("TP_LENSPROFILE_LABEL"), Gtk::FILE_CHOOSER_ACTION_OPEN)); setExpandAlignProperties(corrLcpFileChooser, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - - // Manually-selected profile widgets: - lensfunCamerasLbl = Gtk::manage(new Gtk::Label(M("EXIFFILTER_CAMERA"))); setExpandAlignProperties(lensfunCamerasLbl, false, false, Gtk::ALIGN_END, Gtk::ALIGN_CENTER); - lensfunCameras = Gtk::manage(new MyComboBox()); lensfunCameras->set_model(lf->lensfunCameraModel); lensfunCameras->pack_start(lf->lensfunModelCam.model); lensfunCameras->setPreferredWidth(50, 120); setExpandAlignProperties(lensfunCameras, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - Gtk::CellRendererText* cellRenderer = dynamic_cast(lensfunCameras->get_first_cell()); - cellRenderer->property_ellipsize() = Pango::ELLIPSIZE_MIDDLE; - cellRenderer->property_ellipsize_set() = true; + Gtk::CellRendererText* const camerasCellRenderer = static_cast(lensfunCameras->get_first_cell()); + camerasCellRenderer->property_ellipsize() = Pango::ELLIPSIZE_MIDDLE; + camerasCellRenderer->property_ellipsize_set() = true; - lensfunLensesLbl = Gtk::manage(new Gtk::Label(M("EXIFFILTER_LENS"))); setExpandAlignProperties(lensfunLensesLbl, false, false, Gtk::ALIGN_END, Gtk::ALIGN_CENTER); - lensfunLenses = Gtk::manage(new MyComboBox()); lensfunLenses->set_model(lf->lensfunLensModel); lensfunLenses->pack_start(lf->lensfunModelLens.prettylens); lensfunLenses->setPreferredWidth(50, 120); setExpandAlignProperties(lensfunLenses, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - cellRenderer = dynamic_cast(lensfunLenses->get_first_cell()); - cellRenderer->property_ellipsize() = Pango::ELLIPSIZE_MIDDLE; - cellRenderer->property_ellipsize_set() = true; + Gtk::CellRendererText* const lensesCellRenderer = static_cast(lensfunLenses->get_first_cell()); + lensesCellRenderer->property_ellipsize() = Pango::ELLIPSIZE_MIDDLE; + lensesCellRenderer->property_ellipsize_set() = true; - warning = Gtk::manage(new Gtk::Image()); warning->set_from_icon_name("dialog-warning", Gtk::ICON_SIZE_LARGE_TOOLBAR); warning->set_tooltip_text(M("TP_LENSPROFILE_LENS_WARNING")); warning->hide(); - - // LCP file filter config: - Glib::RefPtr filterLCP = Gtk::FileFilter::create(); + const Glib::RefPtr filterLCP = Gtk::FileFilter::create(); filterLCP->set_name(M("FILECHOOSER_FILTER_LCP")); filterLCP->add_pattern("*.lcp"); filterLCP->add_pattern("*.LCP"); corrLcpFileChooser->add_filter(filterLCP); - Glib::ustring defDir = LCPStore::getInstance()->getDefaultCommonDirectory(); + const Glib::ustring defDir = LCPStore::getInstance()->getDefaultCommonDirectory(); if (!defDir.empty()) { #ifdef WIN32 @@ -140,36 +131,27 @@ LensProfilePanel::LensProfilePanel() : bindCurrentFolder(*corrLcpFileChooser, options.lastLensProfileDir); - - // Choice of properties to correct, applicable to all modes: - Gtk::Label *useHeaderLbl = Gtk::manage(new Gtk::Label(M("TP_LENSPROFILE_USE_HEADER"))); + Gtk::Label* const useHeaderLbl = Gtk::manage(new Gtk::Label(M("TP_LENSPROFILE_USE_HEADER"))); setExpandAlignProperties(useHeaderLbl, true, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); - ckbUseDist = Gtk::manage(new Gtk::CheckButton(M("TP_LENSPROFILE_USE_GEOMETRIC"))); - ckbUseVign = Gtk::manage(new Gtk::CheckButton(M("TP_LENSPROFILE_USE_VIGNETTING"))); - ckbUseCA = Gtk::manage(new Gtk::CheckButton(M("TP_LENSPROFILE_USE_CA"))); - - - // Populate modes grid: modesGrid->attach(*corrHeaderLbl, 0, 0, 2, 1); - modesGrid->attach(*corrOffRB, 0, 1, 2, 1); - modesGrid->attach(*corrLensfunAutoRB, 0, 2, 2, 1); - modesGrid->attach(*corrLensfunManualRB, 0, 3, 2, 1); - - modesGrid->attach(*lensfunCamerasLbl, 0, 4, 1, 1); - modesGrid->attach(*lensfunCameras, 1, 4, 1, 1); - modesGrid->attach(*lensfunLensesLbl, 0, 5, 1, 1); - modesGrid->attach(*lensfunLenses, 1, 5, 1, 1); - modesGrid->attach(*warning, 2, 5, 1, 1); - - modesGrid->attach(*corrLcpFileRB, 0, 6, 1, 1); - modesGrid->attach(*corrLcpFileChooser, 1, 6, 1, 1); + modesGrid->attach(*corrUnchangedRB, 0, 1, 2, 1); + modesGrid->attach(*corrOffRB, 0, 2, 2, 1); + modesGrid->attach(*corrLensfunAutoRB, 0, 3, 2, 1); + modesGrid->attach(*corrLensfunManualRB, 0, 4, 2, 1); + modesGrid->attach(*lensfunCamerasLbl, 0, 5, 1, 1); + modesGrid->attach(*lensfunCameras, 1, 5, 1, 1); + modesGrid->attach(*lensfunLensesLbl, 0, 6, 1, 1); + modesGrid->attach(*lensfunLenses, 1, 6, 1, 1); + modesGrid->attach(*warning, 2, 6, 1, 1); + modesGrid->attach(*corrLcpFileRB, 0, 7, 1, 1); + modesGrid->attach(*corrLcpFileChooser, 1, 7, 1, 1); // Populate distortions grid: @@ -178,15 +160,11 @@ LensProfilePanel::LensProfilePanel() : distGrid->attach(*ckbUseVign, 0, 2, 1, 1); distGrid->attach(*ckbUseCA, 0, 3, 1, 1); - - // Attach grids: pack_start(*modesGrid); pack_start(*distGrid); - - // Signals: conLCPFile = corrLcpFileChooser->signal_file_set().connect(sigc::mem_fun(*this, &LensProfilePanel::onLCPFileChanged)); @@ -200,8 +178,6 @@ LensProfilePanel::LensProfilePanel() : corrLensfunAutoRB->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLensfunAutoRB)); corrLensfunManualRB->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLensfunManualRB)); corrLcpFileRB->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLcpFileRB)); - - allowFocusDep = true; } void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited) @@ -216,40 +192,47 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa corrLensfunAutoRB->set_sensitive(true); switch (pp->lensProf.lcMode) { - case procparams::LensProfParams::LcMode::LCP : + case procparams::LensProfParams::LcMode::LCP: { corrLcpFileRB->set_active(true); break; + } - case procparams::LensProfParams::LcMode::LENSFUNAUTOMATCH : + case procparams::LensProfParams::LcMode::LENSFUNAUTOMATCH: { corrLensfunAutoRB->set_active(true); break; + } - case procparams::LensProfParams::LcMode::LENSFUNMANUAL : + case procparams::LensProfParams::LcMode::LENSFUNMANUAL: { corrLensfunManualRB->set_active(true); break; + } - case procparams::LensProfParams::LcMode::NONE : + case procparams::LensProfParams::LcMode::NONE: { corrOffRB->set_active(true); + break; + } } if (pp->lensProf.lcpFile.empty()) { - Glib::ustring lastFolder = corrLcpFileChooser->get_current_folder(); + const Glib::ustring lastFolder = corrLcpFileChooser->get_current_folder(); corrLcpFileChooser->set_current_folder(lastFolder); corrLcpFileChooser->unselect_all(); bindCurrentFolder(*corrLcpFileChooser, options.lastLensProfileDir); updateDisabled(false); - } else if (LCPStore::getInstance()->isValidLCPFileName(pp->lensProf.lcpFile)) { + } + else if (LCPStore::getInstance()->isValidLCPFileName(pp->lensProf.lcpFile)) { corrLcpFileChooser->set_filename(pp->lensProf.lcpFile); if (corrLcpFileRB->get_active()) { updateDisabled(true); } - } else { + } + else { corrLcpFileChooser->unselect_filename(corrLcpFileChooser->get_filename()); updateDisabled(false); } - const LFDatabase *db = LFDatabase::getInstance(); + const LFDatabase* const db = LFDatabase::getInstance(); LFCamera c; if (!setLensfunCamera(pp->lensProf.lfCameraMake, pp->lensProf.lfCameraModel) && !pp->lensProf.lfManual()) { @@ -261,7 +244,7 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa if (!setLensfunLens(pp->lensProf.lfLens) && !pp->lensProf.lfManual()) { if (metadata) { - LFLens l = db->findLens(c, metadata->getLens()); + const LFLens l = db->findLens(c, metadata->getLens()); setLensfunLens(l.getLens()); } } @@ -291,95 +274,18 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa conUseDist.block(false); } -void LensProfilePanel::setManualParamsVisibility(bool setVisible) -{ - if (setVisible) { - lensfunCamerasLbl->show(); - lensfunCameras->show(); - lensfunLensesLbl->show(); - lensfunLenses->show(); - updateLensfunWarning(); - } else { - lensfunCamerasLbl->hide(); - lensfunCameras->hide(); - lensfunLensesLbl->hide(); - lensfunLenses->hide(); - warning->hide(); - } -} - -void LensProfilePanel::updateLensfunWarning() -{ - warning->hide(); - - if (corrLensfunManualRB->get_active() || corrLensfunAutoRB->get_active()) { - const LFDatabase *db = LFDatabase::getInstance(); - - auto itc = lensfunCameras->get_active(); - - if (!itc) { - return; - } - - LFCamera c = db->findCamera((*itc)[lf->lensfunModelCam.make], (*itc)[lf->lensfunModelCam.model]); - auto itl = lensfunLenses->get_active(); - - if (!itl) { - return; - } - - LFLens l = db->findLens(LFCamera(), (*itl)[lf->lensfunModelLens.lens]); - float lenscrop = l.getCropFactor(); - float camcrop = c.getCropFactor(); - - if (lenscrop <= 0 || camcrop <= 0 || lenscrop / camcrop >= 1.01f) { - warning->show(); - } - - ckbUseVign->set_sensitive(l.hasVignettingCorrection()); - ckbUseDist->set_sensitive(l.hasDistortionCorrection()); - ckbUseCA->set_sensitive(l.hasCACorrection()); - - if (!isRaw || !l.hasVignettingCorrection()) { - ckbUseVign->set_active(false); - } - - if (!l.hasDistortionCorrection()) { - ckbUseDist->set_active(false); - } - - if (!l.hasCACorrection()) { - ckbUseCA->set_active(false); - } - } -} - -void LensProfilePanel::setRawMeta(bool raw, const rtengine::FramesMetaData* pMeta) -{ - if (!raw || pMeta->getFocusDist() <= 0) { - disableListener(); - - // CA is very focus layer dependent, otherwise it might even worsen things - allowFocusDep = false; - ckbUseCA->set_active(false); - ckbUseCA->set_sensitive(false); - - enableListener(); - } - - isRaw = raw; - metadata = pMeta; -} - void LensProfilePanel::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited) { if (corrLcpFileRB->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::LCP; - } else if (corrLensfunManualRB->get_active()) { + } + else if (corrLensfunManualRB->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::LENSFUNMANUAL; - } else if (corrLensfunAutoRB->get_active()) { + } + else if (corrLensfunAutoRB->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::LENSFUNAUTOMATCH; - } else if (corrOffRB->get_active()) { + } + else if (corrOffRB->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::NONE; } @@ -393,7 +299,7 @@ void LensProfilePanel::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pp->lensProf.useVign = ckbUseVign->get_active(); pp->lensProf.useCA = ckbUseCA->get_active(); - auto itc = lensfunCameras->get_active(); + const auto itc = lensfunCameras->get_active(); if (itc) { pp->lensProf.lfCameraMake = (*itc)[lf->lensfunModelCam.make]; @@ -403,7 +309,7 @@ void LensProfilePanel::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pp->lensProf.lfCameraModel = ""; } - auto itl = lensfunLenses->get_active(); + const auto itl = lensfunLenses->get_active(); if (itl) { pp->lensProf.lfLens = (*itl)[lf->lensfunModelLens.lens]; @@ -425,10 +331,27 @@ void LensProfilePanel::write(rtengine::procparams::ProcParams* pp, ParamsEdited* } } +void LensProfilePanel::setRawMeta(bool raw, const rtengine::FramesMetaData* pMeta) +{ + if (!raw || pMeta->getFocusDist() <= 0) { + disableListener(); + + // CA is very focus layer dependent, otherwise it might even worsen things + allowFocusDep = false; + ckbUseCA->set_active(false); + ckbUseCA->set_sensitive(false); + + enableListener(); + } + + isRaw = raw; + metadata = pMeta; +} + void LensProfilePanel::onLCPFileChanged() { lcpFileChanged = true; - bool valid = LCPStore::getInstance()->isValidLCPFileName(corrLcpFileChooser->get_filename()); + const bool valid = LCPStore::getInstance()->isValidLCPFileName(corrLcpFileChooser->get_filename()); updateDisabled(valid); if (listener) { @@ -450,6 +373,7 @@ void LensProfilePanel::onUseDistChanged() listener->panelChanged(EvLCPUseDist, ckbUseDist->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); } } + void LensProfilePanel::onUseVignChanged() { useVignChanged = true; @@ -458,6 +382,7 @@ void LensProfilePanel::onUseVignChanged() listener->panelChanged(EvLCPUseVign, ckbUseVign->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); } } + void LensProfilePanel::onUseCAChanged() { useCAChanged = true; @@ -467,13 +392,6 @@ void LensProfilePanel::onUseCAChanged() } } -void LensProfilePanel::updateDisabled(bool enable) -{ - ckbUseDist->set_sensitive(enable); - ckbUseVign->set_sensitive(enable && isRaw); - ckbUseCA->set_sensitive(enable && allowFocusDep); -} - void LensProfilePanel::setBatchMode(bool yes) { FoldableToolPanel::setBatchMode(yes); @@ -486,83 +404,9 @@ void LensProfilePanel::setBatchMode(bool yes) } } - -bool LensProfilePanel::setLensfunCamera(const Glib::ustring &make, const Glib::ustring &model) -{ - if (!make.empty() && !model.empty()) { - auto it = lensfunCameras->get_active(); - - if (it && (*it)[lf->lensfunModelCam.make] == make && (*it)[lf->lensfunModelCam.model] == model) { - return true; - } - - // search for the active row - for (auto row : lf->lensfunCameraModel->children()) { - if (row[lf->lensfunModelCam.make] == make) { - auto &c = row.children(); - - for (auto it = c.begin(), end = c.end(); it != end; ++it) { - auto &childrow = *it; - - if (childrow[lf->lensfunModelCam.model] == model) { - lensfunCameras->set_active(it); - return true; - } - } - - break; - } - } - } - - lensfunCameras->set_active(-1); - return false; -} - - -bool LensProfilePanel::setLensfunLens(const Glib::ustring &lens) -{ - if (!lens.empty()) { - auto it = lensfunLenses->get_active(); - - if (it && (*it)[lf->lensfunModelLens.lens] == lens) { - return true; - } - - bool first_maker_found = false; - - for (auto row : lf->lensfunLensModel->children()) { - if (lens.find(row[lf->lensfunModelLens.lens]) == 0) { - auto &c = row.children(); - - for (auto it = c.begin(), end = c.end(); it != end; ++it) { - auto &childrow = *it; - - if (childrow[lf->lensfunModelLens.lens] == lens) { - lensfunLenses->set_active(it); - return true; - } - } - - // we do not break immediately here, because there might be multiple makers - // sharing the same prefix (e.g. "Leica" and "Leica Camera AG"). - // therefore, we break below when the lens doesn't match any of them - first_maker_found = true; - } else if (first_maker_found) { - break; - } - } - } - - lensfunLenses->set_active(-1); - return false; -} - - - void LensProfilePanel::onLensfunCameraChanged() { - auto iter = lensfunCameras->get_active(); + const auto iter = lensfunCameras->get_active(); if (iter) { lensfunCameraChanged = true; @@ -572,7 +416,7 @@ void LensProfilePanel::onLensfunCameraChanged() corrLensfunManualRB->set_active(true); enableListener(); - Glib::ustring name = (*iter)[lf->lensfunModelCam.model]; + const Glib::ustring name = (*iter)[lf->lensfunModelCam.model]; listener->panelChanged(EvLensCorrLensfunCamera, name); } } @@ -580,10 +424,9 @@ void LensProfilePanel::onLensfunCameraChanged() updateLensfunWarning(); } - void LensProfilePanel::onLensfunLensChanged() { - auto iter = lensfunLenses->get_active(); + const auto iter = lensfunLenses->get_active(); if (iter) { lensfunLensChanged = true; @@ -593,7 +436,7 @@ void LensProfilePanel::onLensfunLensChanged() corrLensfunManualRB->set_active(true); enableListener(); - Glib::ustring name = (*iter)[lf->lensfunModelLens.prettylens]; + const Glib::ustring name = (*iter)[lf->lensfunModelLens.prettylens]; listener->panelChanged(EvLensCorrLensfunLens, name); } } @@ -601,7 +444,7 @@ void LensProfilePanel::onLensfunLensChanged() updateLensfunWarning(); } -void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged) +void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) { if (rbChanged->get_active()) { // because the method gets called for the enabled AND the disabled RadioButton, we do the processing only for the enabled one @@ -629,14 +472,14 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged) ckbUseCA->set_sensitive(false); if (metadata) { - bool b = disableListener(); - const LFDatabase *db = LFDatabase::getInstance(); - LFCamera c = db->findCamera(metadata->getMake(), metadata->getModel()); - LFLens l = db->findLens(c, metadata->getLens()); + const bool disabled = disableListener(); + const LFDatabase* const db = LFDatabase::getInstance(); + const LFCamera c = db->findCamera(metadata->getMake(), metadata->getModel()); + const LFLens l = db->findLens(c, metadata->getLens()); setLensfunCamera(c.getMake(), c.getModel()); setLensfunLens(l.getLens()); - if (b) { + if (disabled) { enableListener(); } } @@ -693,20 +536,6 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged) } } - -bool LensProfilePanel::checkLensfunCanCorrect(bool automatch) -{ - if (!metadata) { - return false; - } - - rtengine::procparams::ProcParams lpp; - write(&lpp); - std::unique_ptr mod(LFDatabase::findModifier(lpp.lensProf, metadata, 100, 100, lpp.coarse, -1)); - return mod.get() != nullptr; -} - - //----------------------------------------------------------------------------- // LFDbHelper //----------------------------------------------------------------------------- @@ -741,9 +570,9 @@ void LensProfilePanel::LFDbHelper::fillLensfunCameras() } std::map> camnames; - auto camlist = LFDatabase::getInstance()->getCameras(); + const auto camlist = LFDatabase::getInstance()->getCameras(); - for (auto &c : camlist) { + for (const auto& c : camlist) { camnames[c.getMake()].insert(c.getModel()); if (options.rtSettings.verbose) { @@ -751,12 +580,12 @@ void LensProfilePanel::LFDbHelper::fillLensfunCameras() } } - for (auto &p : camnames) { + for (const auto& p : camnames) { Gtk::TreeModel::Row row = *(lensfunCameraModel->append()); row[lensfunModelCam.make] = p.first; row[lensfunModelCam.model] = p.first; - for (auto &c : p.second) { + for (const auto& c : p.second) { Gtk::TreeModel::Row child = *(lensfunCameraModel->append(row.children())); child[lensfunModelCam.make] = p.first; child[lensfunModelCam.model] = c; @@ -764,7 +593,6 @@ void LensProfilePanel::LFDbHelper::fillLensfunCameras() } } - void LensProfilePanel::LFDbHelper::fillLensfunLenses() { if (options.rtSettings.verbose) { @@ -772,11 +600,11 @@ void LensProfilePanel::LFDbHelper::fillLensfunLenses() } std::map> lenses; - auto lenslist = LFDatabase::getInstance()->getLenses(); + const auto lenslist = LFDatabase::getInstance()->getLenses(); - for (auto &l : lenslist) { - auto name = l.getLens(); - auto make = l.getMake(); + for (const auto& l : lenslist) { + const auto& name = l.getLens(); + const auto& make = l.getMake(); lenses[make].insert(name); if (options.rtSettings.verbose) { @@ -784,7 +612,7 @@ void LensProfilePanel::LFDbHelper::fillLensfunLenses() } } - for (auto &p : lenses) { + for (const auto& p : lenses) { Gtk::TreeModel::Row row = *(lensfunLensModel->append()); row[lensfunModelLens.lens] = p.first; row[lensfunModelLens.prettylens] = p.first; @@ -801,3 +629,157 @@ void LensProfilePanel::LFDbHelper::fillLensfunLenses() } } } + +void LensProfilePanel::updateDisabled(bool enable) +{ + ckbUseDist->set_sensitive(enable); + ckbUseVign->set_sensitive(enable && isRaw); + ckbUseCA->set_sensitive(enable && allowFocusDep); +} + +bool LensProfilePanel::setLensfunCamera(const Glib::ustring& make, const Glib::ustring& model) +{ + if (!make.empty() && !model.empty()) { + const auto camera_it = lensfunCameras->get_active(); + + if (camera_it && (*camera_it)[lf->lensfunModelCam.make] == make && (*camera_it)[lf->lensfunModelCam.model] == model) { + return true; + } + + // search for the active row + for (const auto& row : lf->lensfunCameraModel->children()) { + if (row[lf->lensfunModelCam.make] == make) { + const auto& c = row.children(); + + for (auto model_it = c.begin(), end = c.end(); model_it != end; ++model_it) { + const auto& childrow = *model_it; + + if (childrow[lf->lensfunModelCam.model] == model) { + lensfunCameras->set_active(model_it); + return true; + } + } + + break; + } + } + } + + lensfunCameras->set_active(-1); + return false; +} + +bool LensProfilePanel::setLensfunLens(const Glib::ustring& lens) +{ + if (!lens.empty()) { + const auto lens_it = lensfunLenses->get_active(); + + if (lens_it && (*lens_it)[lf->lensfunModelLens.lens] == lens) { + return true; + } + + bool first_maker_found = false; + + for (const auto& row : lf->lensfunLensModel->children()) { + if (lens.find(row[lf->lensfunModelLens.lens]) == 0) { + const auto& c = row.children(); + + for (auto model_it = c.begin(), end = c.end(); model_it != end; ++model_it) { + const auto& childrow = *model_it; + + if (childrow[lf->lensfunModelLens.lens] == lens) { + lensfunLenses->set_active(model_it); + return true; + } + } + + // we do not break immediately here, because there might be multiple makers + // sharing the same prefix (e.g. "Leica" and "Leica Camera AG"). + // therefore, we break below when the lens doesn't match any of them + first_maker_found = true; + } else if (first_maker_found) { + break; + } + } + } + + lensfunLenses->set_active(-1); + return false; +} + +bool LensProfilePanel::checkLensfunCanCorrect(bool automatch) +{ + if (!metadata) { + return false; + } + + rtengine::procparams::ProcParams lpp; + write(&lpp); + const std::unique_ptr mod(LFDatabase::findModifier(lpp.lensProf, metadata, 100, 100, lpp.coarse, -1)); + return static_cast(mod); +} + +void LensProfilePanel::setManualParamsVisibility(bool setVisible) +{ + if (setVisible) { + lensfunCamerasLbl->show(); + lensfunCameras->show(); + lensfunLensesLbl->show(); + lensfunLenses->show(); + updateLensfunWarning(); + } else { + lensfunCamerasLbl->hide(); + lensfunCameras->hide(); + lensfunLensesLbl->hide(); + lensfunLenses->hide(); + warning->hide(); + } +} + +void LensProfilePanel::updateLensfunWarning() +{ + warning->hide(); + + if (corrLensfunManualRB->get_active() || corrLensfunAutoRB->get_active()) { + const LFDatabase* const db = LFDatabase::getInstance(); + + const auto itc = lensfunCameras->get_active(); + + if (!itc) { + return; + } + + const LFCamera c = db->findCamera((*itc)[lf->lensfunModelCam.make], (*itc)[lf->lensfunModelCam.model]); + const auto itl = lensfunLenses->get_active(); + + if (!itl) { + return; + } + + const LFLens l = db->findLens(LFCamera(), (*itl)[lf->lensfunModelLens.lens]); + const float lenscrop = l.getCropFactor(); + const float camcrop = c.getCropFactor(); + + if (lenscrop <= 0 || camcrop <= 0 || lenscrop / camcrop >= 1.01f) { + warning->show(); + } + + ckbUseVign->set_sensitive(l.hasVignettingCorrection()); + ckbUseDist->set_sensitive(l.hasDistortionCorrection()); + ckbUseCA->set_sensitive(l.hasCACorrection()); + + if (!isRaw || !l.hasVignettingCorrection()) { + ckbUseVign->set_active(false); + } + + if (!l.hasDistortionCorrection()) { + ckbUseDist->set_active(false); + } + + if (!l.hasCACorrection()) { + ckbUseCA->set_active(false); + } + } +} + +LensProfilePanel::LFDbHelper* LensProfilePanel::lf(nullptr); diff --git a/rtgui/lensprofile.h b/rtgui/lensprofile.h index 9b68ad26b..42b60a414 100644 --- a/rtgui/lensprofile.h +++ b/rtgui/lensprofile.h @@ -16,46 +16,42 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _LENSPROFILE_H_ -#define _LENSPROFILE_H_ +#pragma once #include -#include "toolpanel.h" + #include "guiutils.h" #include "lensgeom.h" +#include "toolpanel.h" -class LensProfilePanel : public ToolParamBlock, public FoldableToolPanel +class LensProfilePanel final : + public ToolParamBlock, + public FoldableToolPanel { +public: + LensProfilePanel(); -protected: + void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); + void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); + void setRawMeta(bool raw, const rtengine::FramesMetaData* pMeta); - bool lcModeChanged, lcpFileChanged, useDistChanged, useVignChanged, useCAChanged; - sigc::connection conLCPFile, conUseDist, conUseVign, conUseCA; - void updateDisabled(bool enable); - bool allowFocusDep; - bool isRaw; - const rtengine::FramesMetaData* metadata; + void onLCPFileChanged(); + void onUseDistChanged(); + void onUseVignChanged(); + void onUseCAChanged(); - Gtk::CheckButton *ckbUseDist, *ckbUseVign, *ckbUseCA; - Gtk::RadioButton::Group corrGroup; - Gtk::RadioButton *corrOffRB; - Gtk::RadioButton *corrLensfunAutoRB; - Gtk::RadioButton *corrLensfunManualRB; - Gtk::RadioButton *corrLcpFileRB; - Gtk::RadioButton *corrUnchangedRB; - Gtk::Grid *modesGrid; - Gtk::Grid *distGrid; - Gtk::Label *lensfunCamerasLbl; - Gtk::Label *lensfunLensesLbl; - MyComboBox *lensfunCameras; - MyComboBox *lensfunLenses; - MyFileChooserButton *corrLcpFileChooser; - Gtk::Image *warning; + void setBatchMode(bool yes); - class LFDbHelper + void onLensfunCameraChanged(); + void onLensfunLensChanged(); + void onCorrModeChanged(const Gtk::RadioButton* rbChanged); + +private: + class LFDbHelper final { public: - class LFModelCam: public Gtk::TreeModel::ColumnRecord + class LFModelCam final : + public Gtk::TreeModel::ColumnRecord { public: LFModelCam() @@ -67,7 +63,8 @@ protected: Gtk::TreeModelColumn model; }; - class LFModelLens: public Gtk::TreeModel::ColumnRecord + class LFModelLens final : + public Gtk::TreeModel::ColumnRecord { public: LFModelLens() @@ -86,40 +83,53 @@ protected: Glib::RefPtr lensfunLensModel; LFDbHelper(); + void fillLensfunCameras(); void fillLensfunLenses(); }; - static LFDbHelper *lf; - bool useLensfunChanged; - bool lensfunAutoChanged; - bool lensfunCameraChanged; - bool lensfunLensChanged; + void updateDisabled(bool enable); - bool setLensfunCamera(const Glib::ustring &make, const Glib::ustring &model); - bool setLensfunLens(const Glib::ustring &lens); + bool setLensfunCamera(const Glib::ustring& make, const Glib::ustring& model); + bool setLensfunLens(const Glib::ustring& lens); bool checkLensfunCanCorrect(bool automatch); void setManualParamsVisibility(bool setVisible); void updateLensfunWarning(); -public: + bool lcModeChanged; + bool lcpFileChanged; + bool useDistChanged; + bool useVignChanged; + bool useCAChanged; + bool useLensfunChanged; + bool lensfunAutoChanged; + bool lensfunCameraChanged; + bool lensfunLensChanged; + sigc::connection conLCPFile; + sigc::connection conUseDist; + sigc::connection conUseVign; + sigc::connection conUseCA; + bool allowFocusDep; + bool isRaw; + const rtengine::FramesMetaData* metadata; - LensProfilePanel(); + Gtk::Grid* const modesGrid; + Gtk::Grid* const distGrid; + Gtk::RadioButton* const corrUnchangedRB; + Gtk::RadioButton::Group corrGroup; + Gtk::RadioButton* const corrOffRB; + Gtk::RadioButton* const corrLensfunAutoRB; + Gtk::RadioButton* const corrLensfunManualRB; + Gtk::RadioButton* const corrLcpFileRB; + MyFileChooserButton* const corrLcpFileChooser; + Gtk::Label* const lensfunCamerasLbl; + MyComboBox* const lensfunCameras; + Gtk::Label* const lensfunLensesLbl; + MyComboBox* const lensfunLenses; + Gtk::Image* const warning; + Gtk::CheckButton* const ckbUseDist; + Gtk::CheckButton* const ckbUseVign; + Gtk::CheckButton* const ckbUseCA; - void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setRawMeta(bool raw, const rtengine::FramesMetaData* pMeta); - - void onLCPFileChanged(); - void onUseDistChanged(); - void onUseVignChanged(); - void onUseCAChanged(); - - void setBatchMode(bool yes); - - void onLensfunCameraChanged(); - void onLensfunLensChanged(); - void onCorrModeChanged(const Gtk::RadioButton *rbChanged); + static LFDbHelper* lf; }; - -#endif From ab80e01451ccd065d9ca9da08f36d74044534122 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 20 Nov 2018 13:06:53 +0100 Subject: [PATCH 5/5] Revert unintentional changes to rt_math.h This reverts a part of commit 7e70412090a63b63661cfdcb3cd147113217c54e. --- rtengine/rt_math.h | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/rtengine/rt_math.h b/rtengine/rt_math.h index b21d26564..9342f5430 100644 --- a/rtengine/rt_math.h +++ b/rtengine/rt_math.h @@ -56,13 +56,6 @@ constexpr const T& min(const T& a, const T& b) return b < a ? b : a; } -template<> -constexpr const float& min(const float& a, const float& b) -{ - // For consistency reasons we return b instead of a if a == b or a == NaN - return a < b ? a : b; -} - template constexpr const T& min(const T& a, const T& b, const ARGS&... args) { @@ -81,13 +74,6 @@ constexpr const T& max(const T& a, const T& b) return a < b ? b : a; } -template<> -constexpr const float& max(const float& a, const float& b) -{ - // For consistency reasons we return b instead of a if a == b or a == NaN - return b < a ? a : b; -} - template constexpr const T& max(const T& a, const T& b, const ARGS&... args) {