* GHS GUI first step * GHS GUI first step * GUI step 3 * Hide show ghsmethod * Siril functions for ghs * Init ghs in iplocallab * ghs step 2 * ghs step 4 * Comment copyright Pixlnsight 2021 * Smooth highlights and tooltips * Enabled saturation and luminance ghs mode * First tooltip * Ghs tooltips * Remove wrong packstart inverssh * Change labels and tooltips * Disabled mask in global and other improvments * Comment code * appimage and windows yml ghs * Change tooltip * Ghsmethod hue and change tolltips * Change tooltip * Inverse Stretch step 1 * Inverse GHS * GHS tooltips * Change tooltips * Change tooltip * Linear black point * Small change to blackpoint * Change tooltip * Clean and comment code * forgotten GHS highlight attenuation msg in history * Comment code with Transformation equations * Change tooltip * Wrong default value balck point * Comment code iplocallab * Ghs curve step 1 * GHS curve step 2 * Show GHS setting in a Curve Box * Tooltip for ghs S curve * Disabled warning in compilation simpleprocess * Simplified code part 1 * Simplified code GHS graph part 2 * Improve black point with negatives values * Improve BP and tooltip * Listener enable only with GHS * White point for GHS * Change label and tooltip * Improve behavior white point and black point * Link sliders ghs_SP ghs_LP ghs_HP and change code to avoid balck screen * hide unused button in diagonal curve GHS * prevents the GHS representation in S from displaying artifacts if ghs-d=0 * Change tooltips * Improvment and tooltips * Forgotten tooltip * Improve GUI GHS S curve - change tooltips * Set transition gray areas in S curve GHS with values of the RT-spot * Change label GHS * setlogscale blackpoint and symmetry * Set recursive reference enable by default in controlspotpanel * Change lastlocalCurvesDir Dirghs in locallabtools and options - change labels * Added in converttonormal ghsMode.. not sure if this is useful * DIY to make GHS curve work without the choices * Change RGB calculation with luminance function working profile * 5 modes GHS method * Label to show datas clipped Black point and White point * Various change white point tooltips * Bad behavior wp bp labels * Small change to improccordinator call to ghschanged ghsbwchanged * Set log scale ghs_D * Hide Graduated filter if GHS enable * Luminance Lab in ghsmethod * Lab slope factor step 1 * Slope and Chromaticity GHS improvments * Fixed bad sqrt line 17477 iplocallab * Workaround linear GHS - re-enable Graduated filer GHS * Change limits slope lab factor * Ghs chromaticity Lab (Lch) * Improve ghs chromaticity * Change labels and tooltips Lab chroma * Slope Lab to 100 * Noise and saturation RGB * Saturation RGB standard and labels * Change histogram and navigator panel without gamma when using working profile * Remove gray in GHS curve * Local contrast a minima * Regularization stretch * Improve Graduated Filter in all cases GHS Color and Light etc. * Improves nlmeans to reduce noise after GHS * Change to GF - tooltip Nlmeans * Added oW oH tW tH etc. * Added call GF * tX tY for previewProps * Comment code GF * Improve local contrast ghs * Change norm to norm2 * Improve GUI mode complexity and Lab GHS * Show values BP WP in GUI * Labgrid ghs step 1 * Labgrid for simulation GHS - step 2 * More points for Labgrid ghs * Clean and comment code * Fixed crash in inverse GHS white point - set to 10 points for GSH simulation * Change to black point in inverse GHS * Intilialize simulation with nothing if new spot * Remove curve GHS - optimize code simulation - improve GUI * set ghs default - fixed crash is case HP SP LP * Fixed crash - I hope in inverse GHS * Simplify WP and BP limits to avoid crash in inverse GHS * Clean code with ghscurve - ghsshape * Change tooltips * Change to D - GUI - comment code * Simulation with 4 more points * Best simulation with point 0.05 and 0.95 * Clean code - change for crsah in Inverse GHS * Show values WP and BP * Change tooltips * Midtones after GHS * Modification code WP BP * Tests changes in settings for transition and Shape detection - see Preferences * Change order labels luma chroma hue * Fixed bad behavior localllistener denchanged in dcrop.cc * Save work * Work on graduated filter * Improve a little graduated filter SH and others... * 3 configurations tests graduated filter SH plain image - color more sk - exposure normal * Forgotten code ... * Change improccordinator parameter * Save work printf parameters GF * New test for GF * Hide plain image calculation GF * Small chnages and comment code * Change tooltip exp graduated filter * Change tooltip exp graduated filter * Save work * Change GF for some tools only in Global and Fullimage - test for GF SH mode plain image * Fixed crash and GUI part 1 * Others change GF * Change label - allow GF plain image in SH * Change GF with cx cy sk * Adapt locallabtool and locallabtools2 to GF * Clean code * GF wavelet only in fullimage and global * GF - Empirical correction to cx and cy in function of sk * Change label GHS and position in GUI * Fixed Black point bad behavior history - an oversight may be age * Change real strength of GF - to look like GF main * Include ksk - Skip correction in all code GF * Passed other parameters to try * New parameter for GF * Change position graph-curv ghs and labels black and white point * Change behavior and default value white point * Save provisory work * Save provisory work * Curve GHS with 21 points including 0 and 1 * Two prameters added to change behavior GF - rationalize their using * Change Black point direction * Change range black-point for negatives values - chnage tooltips * Change tooltips * Various change to avoid crash and settings defaults * Disabled showmùaskmethod - set max white point to 5 * Fixed bad behavior when change fullimage to global for mask * Clean comment code * Fixed - I hope - bad behavior when we go from Fullimage to Global and vice versa * Fixed crash in output tif and show time to calculate WP and BP * Change tooltip BP and WP * Change tooltips BP WP * move GF after GHS so as not to influence BP and WP * Clean code * Disable all mask and modifications in Global but remain active in fullimage and normal * Change tooltip graduated filter * Restore GF in normal mode - and increases GF strength as before * Clean code locallabtools 1 2 * Comment in calclocalGradientParams in iplocallab for changes in Graduated F * Change convention labels - tooltips * Change tooltips * improves (I hope) the readability of the tooltips * Remove with comment change complexity in Settings * Improve settings BP WP - improve tooltips * Refactor GHS curve and increase resolution Simplify how the curve parameters are passed to the drawing area. Use up to 400 line segments to draw the curve. * Update GHS curve tooltip Remove statement regarding the number of points used because it is no longer accurate. * Update rtdata/languages/default Co-authored-by: Lawrence37 <45837045+Lawrence37@users.noreply.github.com> * Update rtdata/languages/default Co-authored-by: Lawrence37 <45837045+Lawrence37@users.noreply.github.com> * Update rtdata/languages/default Co-authored-by: Lawrence37 <45837045+Lawrence37@users.noreply.github.com> * Update rtdata/languages/default Co-authored-by: Lawrence37 <45837045+Lawrence37@users.noreply.github.com> * Update rtdata/languages/default Co-authored-by: Lawrence37 <45837045+Lawrence37@users.noreply.github.com> * Update rtdata/languages/default Co-authored-by: Lawrence37 <45837045+Lawrence37@users.noreply.github.com> * Update rtdata/languages/default Co-authored-by: Lawrence37 <45837045+Lawrence37@users.noreply.github.com> * Update rtdata/languages/default Co-authored-by: Lawrence37 <45837045+Lawrence37@users.noreply.github.com> * Update rtdata/languages/default Co-authored-by: Lawrence37 <45837045+Lawrence37@users.noreply.github.com> * Update rtdata/languages/default Co-authored-by: Lawrence37 <45837045+Lawrence37@users.noreply.github.com> * Update rtdata/languages/default Co-authored-by: Lawrence37 <45837045+Lawrence37@users.noreply.github.com> * Update rtdata/languages/default Co-authored-by: Lawrence37 <45837045+Lawrence37@users.noreply.github.com> * Update rtdata/languages/default Co-authored-by: Lawrence37 <45837045+Lawrence37@users.noreply.github.com> * Update rtdata/languages/default Co-authored-by: Lawrence37 <45837045+Lawrence37@users.noreply.github.com> * Update rtdata/languages/default Co-authored-by: Lawrence37 <45837045+Lawrence37@users.noreply.github.com> * Update rtdata/languages/default Co-authored-by: Lawrence37 <45837045+Lawrence37@users.noreply.github.com> * Update rtdata/languages/default Co-authored-by: Lawrence37 <45837045+Lawrence37@users.noreply.github.com> * Update rtdata/languages/default Co-authored-by: Lawrence37 <45837045+Lawrence37@users.noreply.github.com> * Update rtdata/languages/default Co-authored-by: Lawrence37 <45837045+Lawrence37@users.noreply.github.com> * Update rtdata/languages/default Co-authored-by: Lawrence37 <45837045+Lawrence37@users.noreply.github.com> * Change Luma with Lightness * Update rtdata/languages/default Co-authored-by: Lawrence37 <45837045+Lawrence37@users.noreply.github.com> * Update rtdata/languages/default Co-authored-by: Lawrence37 <45837045+Lawrence37@users.noreply.github.com> * Remove warnings in icmpanel * Changes suggested by Lawrence37 * GHS - Hide inverse always show in some cases - improve tooltip BP WP * Change tooltip * Change tooltip * Small changes * Change tootip suggested by Lawrence37 - set midtones and LC set_sensitive in function of D * Add tooltip as suggest by Lawrence37 for LC and midtones * Remove tooltip on Frame LC and Midtones * Remove all traces toottips frame LD and Midtones * set sensitive BLP and HLP to false if stretch = 0 * Change Beep6581 to Rawtherapee in appimage.yml and Windows.yml * Hide LC and midtones when Stretch = 0 * Clean up Generalized Hyperbolic Stretch code Convert some ints into enum classes. Replace new/delete with std::unique_ptr for image. Remove unused GHS parameters in ProcParams and ParamsEdited which were used to draw the curve. Revert changes to the curve editors because they are not needed. Simplify the drawing of the curve background for efficiency. Restore the const-ness of some variables. * Change appimage.yml and windows.yml --------- Co-authored-by: Lawrence Lee <45837045+Lawrence37@users.noreply.github.com>
562 lines
18 KiB
C++
562 lines
18 KiB
C++
/*
|
|
* This file is part of RawTherapee.
|
|
*
|
|
* Copyright (c) 2004-2010 Gabor Horvath <hgabor@rawtherapee.com>
|
|
*
|
|
* RawTherapee is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* RawTherapee is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with RawTherapee. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
#pragma once
|
|
|
|
#include <set>
|
|
#include <vector>
|
|
#if defined __has_include
|
|
#if __has_include(<gtkmm/enums.h>)
|
|
#include <gtkmm/enums.h>
|
|
#else
|
|
#include <gtkmm-3.0/gtkmm/enums.h>
|
|
#endif
|
|
#else
|
|
#include <gtkmm/enums.h>
|
|
#endif
|
|
#include "rtengine/settings.h"
|
|
#include <exception>
|
|
|
|
#define STARTUPDIR_CURRENT 0
|
|
#define STARTUPDIR_HOME 1
|
|
#define STARTUPDIR_CUSTOM 2
|
|
#define STARTUPDIR_LAST 3
|
|
|
|
#define THEMEREGEXSTR "^(.+)\\.css$"
|
|
|
|
// Default bundled profile name to use for Raw images
|
|
#ifdef _WIN32
|
|
#define DEFPROFILE_RAW "${G}\\Auto-Matched Curve - ISO Low"
|
|
#else
|
|
#define DEFPROFILE_RAW "${G}/Auto-Matched Curve - ISO Low"
|
|
#endif
|
|
// Default bundled profile name to use for Standard images
|
|
#define DEFPROFILE_IMG "Neutral"
|
|
// Profile name to use for internal values' profile
|
|
#define DEFPROFILE_INTERNAL "Neutral"
|
|
// Special name for the Dynamic profile
|
|
#define DEFPROFILE_DYNAMIC "Dynamic"
|
|
|
|
struct ExternalEditor {
|
|
ExternalEditor();
|
|
ExternalEditor(const Glib::ustring &name, const Glib::ustring &command, bool native_command, const Glib::ustring &icon_serialized);
|
|
Glib::ustring name;
|
|
Glib::ustring command;
|
|
bool native_command;
|
|
Glib::ustring icon_serialized;
|
|
|
|
bool operator==(const ExternalEditor & other) const;
|
|
bool operator!=(const ExternalEditor & other) const;
|
|
};
|
|
|
|
struct SaveFormat {
|
|
SaveFormat(
|
|
const Glib::ustring& _format,
|
|
int _png_bits,
|
|
int _jpeg_quality,
|
|
int _jpeg_sub_samp,
|
|
int _tiff_bits,
|
|
bool _tiff_float,
|
|
bool _tiff_uncompressed,
|
|
bool _big_tiff,
|
|
bool _save_params
|
|
) :
|
|
format(_format),
|
|
pngBits(_png_bits),
|
|
jpegQuality(_jpeg_quality),
|
|
jpegSubSamp(_jpeg_sub_samp),
|
|
tiffBits(_tiff_bits),
|
|
tiffFloat(_tiff_float),
|
|
tiffUncompressed(_tiff_uncompressed),
|
|
bigTiff(_big_tiff),
|
|
saveParams(_save_params)
|
|
{
|
|
}
|
|
SaveFormat(
|
|
const Glib::ustring& _format,
|
|
int _png_bits,
|
|
int _tiff_bits,
|
|
bool _tiff_float
|
|
) :
|
|
SaveFormat(
|
|
_format,
|
|
_png_bits,
|
|
90,
|
|
2,
|
|
_tiff_bits,
|
|
_tiff_float,
|
|
true,
|
|
false,
|
|
true
|
|
)
|
|
{
|
|
}
|
|
SaveFormat() :
|
|
SaveFormat("jpg", 8, 8, false)
|
|
{
|
|
}
|
|
|
|
Glib::ustring format;
|
|
int pngBits;
|
|
int jpegQuality;
|
|
int jpegSubSamp; // 1=best compression, 3=best quality
|
|
int tiffBits;
|
|
bool tiffFloat;
|
|
bool tiffUncompressed;
|
|
bool bigTiff;
|
|
bool saveParams;
|
|
};
|
|
|
|
enum ThFileType {FT_Invalid = -1, FT_None = 0, FT_Raw = 1, FT_Jpeg = 2, FT_Tiff = 3, FT_Png = 4, FT_Custom = 5, FT_Tiff16 = 6, FT_Png16 = 7, FT_Custom16 = 8};
|
|
enum PPLoadLocation {PLL_Cache = 0, PLL_Input = 1};
|
|
enum CPBKeyType {CPBKT_TID = 0, CPBKT_NAME = 1, CPBKT_TID_NAME = 2};
|
|
enum prevdemo_t {PD_Sidecar = 1, PD_Fast = 0};
|
|
|
|
namespace Glib
|
|
{
|
|
|
|
class KeyFile;
|
|
|
|
}
|
|
|
|
class Options
|
|
{
|
|
public:
|
|
class Error: public std::exception
|
|
{
|
|
public:
|
|
explicit Error (const Glib::ustring &msg): msg_ (msg) {}
|
|
const char *what() const throw() override
|
|
{
|
|
return msg_.c_str();
|
|
}
|
|
const Glib::ustring &get_msg() const throw()
|
|
{
|
|
return msg_;
|
|
}
|
|
|
|
private:
|
|
Glib::ustring msg_;
|
|
};
|
|
|
|
private:
|
|
enum class DefProfError : short {
|
|
defProfRawMissing = 1 << 0,
|
|
bundledDefProfRawMissing = 1 << 1,
|
|
defProfImgMissing = 1 << 2,
|
|
bundledDefProfImgMissing = 1 << 3
|
|
};
|
|
short defProfError;
|
|
Glib::ustring userProfilePath;
|
|
Glib::ustring globalProfilePath;
|
|
bool checkProfilePath (Glib::ustring &path);
|
|
bool checkDirPath (Glib::ustring &path, Glib::ustring errString);
|
|
void updatePaths();
|
|
int getString (const char* src, char* dst);
|
|
void error (int line);
|
|
/**
|
|
* Safely reads a directory from the configuration file and only applies it
|
|
* to the provided destination variable if there is a non-empty string in
|
|
* the configuration.
|
|
*
|
|
* @param keyFile file to read configuration from
|
|
* @param section name of the section in the configuration file
|
|
* @param entryName name of the entry in the configuration file
|
|
* @param destination destination variable to store to
|
|
* @return @c true if @p destination was changed
|
|
*/
|
|
bool safeDirGet (const Glib::KeyFile& keyFile, const Glib::ustring& section,
|
|
const Glib::ustring& entryName, Glib::ustring& destination);
|
|
|
|
public:
|
|
enum class NavigatorUnit {
|
|
PERCENT,
|
|
R0_255,
|
|
R0_1,
|
|
_COUNT
|
|
};
|
|
|
|
enum class ScopeType {
|
|
NONE = -1,
|
|
HISTOGRAM,
|
|
HISTOGRAM_RAW,
|
|
PARADE,
|
|
VECTORSCOPE_HC,
|
|
VECTORSCOPE_HS,
|
|
WAVEFORM
|
|
};
|
|
|
|
bool savesParamsAtExit;
|
|
SaveFormat saveFormat, saveFormatBatch;
|
|
Glib::ustring savePathTemplate;
|
|
Glib::ustring savePathFolder;
|
|
bool saveUsePathTemplate;
|
|
Glib::ustring defProfRaw;
|
|
Glib::ustring defProfImg;
|
|
Glib::ustring dateFormat;
|
|
int adjusterMinDelay;
|
|
int adjusterMaxDelay;
|
|
int startupDir;
|
|
Gtk::SortType dirBrowserSortType;
|
|
Glib::ustring startupPath;
|
|
Glib::ustring profilePath; // can be an absolute or relative path; depending on this value, bundled profiles may not be found
|
|
bool useBundledProfiles; // only used if multiUser == true
|
|
Glib::ustring lastCopyMovePath;
|
|
Glib::ustring loadSaveProfilePath;
|
|
Glib::ustring lastSaveAsPath;
|
|
int saveAsDialogWidth;
|
|
int saveAsDialogHeight;
|
|
int toolPanelWidth;
|
|
int browserToolPanelWidth;
|
|
int browserToolPanelHeight;
|
|
bool browserToolPanelOpened;
|
|
bool browserDirPanelOpened;
|
|
bool editorFilmStripOpened;
|
|
int historyPanelWidth;
|
|
int windowX;
|
|
int windowY;
|
|
int windowWidth;
|
|
int windowHeight;
|
|
bool windowMaximized;
|
|
int windowMonitor;
|
|
int meowMonitor;
|
|
bool meowMaximized;
|
|
int meowWidth;
|
|
int meowHeight;
|
|
int meowX;
|
|
int meowY;
|
|
int detailWindowWidth;
|
|
int detailWindowHeight;
|
|
int dirBrowserWidth;
|
|
int dirBrowserHeight;
|
|
int preferencesWidth;
|
|
int preferencesHeight;
|
|
bool lastShowAllExif;
|
|
int lastScale;
|
|
int panAccelFactor;
|
|
int lastCropSize;
|
|
Glib::ustring fontFamily; // RT's main font family
|
|
int fontSize; // RT's main font size (units: pt)
|
|
Glib::ustring CPFontFamily; // ColorPicker font family
|
|
int CPFontSize; // ColorPicker font size (units: pt)
|
|
bool fbOnlyRaw;
|
|
bool fbShowDateTime;
|
|
bool fbShowBasicExif;
|
|
bool fbShowExpComp;
|
|
bool fbShowHidden;
|
|
int fbArrangement;
|
|
NavigatorUnit navRGBUnit;
|
|
NavigatorUnit navHSVUnit;
|
|
bool multiUser;
|
|
static Glib::ustring rtdir;
|
|
Glib::ustring version;
|
|
int thumbSize, thumbSizeTab, thumbSizeQueue;
|
|
bool sameThumbSize; // Will use only one thumb size for the file browser and the single editor tab, and avoid recomputing them
|
|
bool showHistory;
|
|
int showFilePanelState; // 0: normal, 1: maximized, 2: normal, 3: hidden
|
|
bool showInfo;
|
|
bool mainNBVertical; // main notebook vertical tabs?
|
|
bool showClippedHighlights;
|
|
bool showClippedShadows;
|
|
int highlightThreshold;
|
|
int shadowThreshold;
|
|
bool blinkClipped;
|
|
int bgcolor;
|
|
Glib::ustring language;
|
|
bool languageAutoDetect;
|
|
Glib::ustring theme;
|
|
static Glib::ustring cacheBaseDir;
|
|
bool autoSuffix;
|
|
bool forceFormatOpts;
|
|
int saveMethodNum;
|
|
bool saveParamsFile;
|
|
bool saveParamsCache;
|
|
PPLoadLocation paramsLoadLocation;
|
|
bool procQueueEnabled;
|
|
Glib::ustring gimpDir;
|
|
Glib::ustring psDir;
|
|
Glib::ustring customEditorProg;
|
|
std::vector<ExternalEditor> externalEditors;
|
|
int externalEditorIndex;
|
|
Glib::ustring CPBPath; // Custom Profile Builder's path
|
|
CPBKeyType CPBKeys; // Custom Profile Builder's key type
|
|
int editorToSendTo;
|
|
enum EditorOutDir {
|
|
EDITOR_OUT_DIR_TEMP,
|
|
EDITOR_OUT_DIR_CURRENT,
|
|
EDITOR_OUT_DIR_CUSTOM
|
|
};
|
|
EditorOutDir editor_out_dir; // output directory for "open in external editor"
|
|
Glib::ustring editor_custom_out_dir;
|
|
bool editor_float32;
|
|
bool editor_bypass_output_profile;
|
|
|
|
int maxThumbnailHeight;
|
|
int maxThumbnailWidth;
|
|
std::size_t maxCacheEntries;
|
|
int thumbInterp; // 0: nearest, 1: bilinear
|
|
|
|
std::vector<std::string> knownExtensions = {
|
|
"3fr", "arw", "arq", "cr2", "cr3", "crf", "crw", "dcr", "dng",
|
|
"fff", "iiq", "jpg", "jpeg", "jxl", "kdc", "mef", "mos", "mrw",
|
|
"nef", "nrw", "orf", "ori", "pef", "png", "raf", "raw", "rw2",
|
|
"rwl", "rwz", "sr2", "srf", "srw", "tif", "tiff", "x3f"};
|
|
|
|
std::vector<Glib::ustring> parseExtensions; // List containing all extensions type
|
|
std::vector<int> parseExtensionsEnabled; // List of bool to retain extension or not
|
|
std::vector<Glib::ustring> parsedExtensions; // List containing all retained extensions (lowercase)
|
|
std::set<std::string> parsedExtensionsSet; // Set containing all retained extensions (lowercase)
|
|
bool browseRecursive;
|
|
int browseRecursiveDepth;
|
|
int browseRecursiveMaxDirs;
|
|
bool browseRecursiveFollowLinks;
|
|
std::vector<int> tpOpen;
|
|
bool autoSaveTpOpen;
|
|
//std::vector<int> crvOpen;
|
|
std::vector<int> baBehav;
|
|
rtengine::Settings rtSettings;
|
|
bool showtooltip;
|
|
std::vector<Glib::ustring> favoriteDirs;
|
|
std::vector<Glib::ustring> renameTemplates;
|
|
bool renameUseTemplates;
|
|
bool internalThumbIfUntouched;
|
|
bool overwriteOutputFile;
|
|
int complexity;
|
|
int spotmet;
|
|
|
|
bool inspectorWindow; // open inspector in separate window
|
|
bool zoomOnScroll; // translate scroll events to zoom
|
|
|
|
std::vector<double> thumbnailZoomRatios;
|
|
bool overlayedFileNames;
|
|
bool filmStripOverlayedFileNames;
|
|
bool showFileNames;
|
|
bool filmStripShowFileNames;
|
|
bool tabbedUI;
|
|
bool rememberZoomAndPan;
|
|
int multiDisplayMode; // 0=none, 1=Edit panels on other display
|
|
std::vector<double> cutOverlayBrush; // Red;Green;Blue;Alpha , all ranging 0..1
|
|
std::vector<double> navGuideBrush; // Red;Green;Blue;Alpha , all ranging 0..1
|
|
|
|
Glib::ustring sndBatchQueueDone;
|
|
Glib::ustring sndLngEditProcDone;
|
|
double sndLngEditProcDoneSecs; // Minimum processing time seconds till the sound is played
|
|
bool sndEnable;
|
|
|
|
int histogramPosition; // 0=disabled, 1=left pane, 2=right pane
|
|
bool histogramRed, histogramGreen, histogramBlue;
|
|
bool histogramLuma, histogramChroma;
|
|
bool histogramBar;
|
|
int histogramHeight;
|
|
int histogramDrawMode;
|
|
ScopeType histogramScopeType;
|
|
bool histogramShowOptionButtons;
|
|
float histogramTraceBrightness;
|
|
bool FileBrowserToolbarSingleRow;
|
|
bool hideTPVScrollbar;
|
|
int whiteBalanceSpotSize;
|
|
int curvebboxpos; // 0=above, 1=right, 2=below, 3=left
|
|
|
|
bool showFilmStripToolBar;
|
|
|
|
// cropping options
|
|
int cropPPI;
|
|
enum CropGuidesMode { CROP_GUIDE_NONE, CROP_GUIDE_FRAME, CROP_GUIDE_FULL };
|
|
CropGuidesMode cropGuides;
|
|
bool cropAutoFit;
|
|
|
|
// Other options
|
|
|
|
// Maximum zoom
|
|
enum class MaxZoom: int {
|
|
PERCENTS_100 = 0,
|
|
PERCENTS_200,
|
|
PERCENTS_300,
|
|
PERCENTS_400,
|
|
PERCENTS_500,
|
|
PERCENTS_600,
|
|
PERCENTS_700,
|
|
PERCENTS_800,
|
|
PERCENTS_1600,
|
|
};
|
|
MaxZoom maxZoomLimit;
|
|
|
|
// Performance options
|
|
Glib::ustring clutsDir;
|
|
int rgbDenoiseThreadLimit; // maximum number of threads for the denoising tool ; 0 = use the maximum available
|
|
int maxInspectorBuffers; // maximum number of buffers (i.e. images) for the Inspector feature
|
|
int inspectorDelay;
|
|
int clutCacheSize;
|
|
bool filledProfile; // Used as reminder for the ProfilePanel "mode"
|
|
prevdemo_t prevdemo; // Demosaicing method used for the <100% preview
|
|
bool serializeTiffRead;
|
|
bool measure;
|
|
size_t chunkSizeAMAZE;
|
|
size_t chunkSizeCA;
|
|
size_t chunkSizeRCD;
|
|
size_t chunkSizeRGB;
|
|
size_t chunkSizeXT;
|
|
bool menuGroupRank;
|
|
bool menuGroupLabel;
|
|
bool menuGroupFileOperations;
|
|
bool menuGroupProfileOperations;
|
|
bool menuGroupExtProg;
|
|
|
|
// ICC Profile Creator
|
|
Glib::ustring ICCPC_primariesPreset;
|
|
double ICCPC_redPrimaryX;
|
|
double ICCPC_redPrimaryY;
|
|
double ICCPC_greenPrimaryX;
|
|
double ICCPC_greenPrimaryY;
|
|
double ICCPC_bluePrimaryX;
|
|
double ICCPC_bluePrimaryY;
|
|
Glib::ustring ICCPC_gammaPreset;
|
|
double ICCPC_gamma;
|
|
double ICCPC_slope;
|
|
Glib::ustring ICCPC_profileVersion;
|
|
Glib::ustring ICCPC_illuminant;
|
|
Glib::ustring ICCPC_description;
|
|
Glib::ustring ICCPC_copyright;
|
|
bool ICCPC_appendParamsToDesc;
|
|
|
|
// fast export options
|
|
bool fastexport_bypass_sharpening;
|
|
bool fastexport_bypass_sharpenEdge;
|
|
bool fastexport_bypass_sharpenMicro;
|
|
//bool fastexport_bypass_lumaDenoise;
|
|
//bool fastexport_bypass_colorDenoise;
|
|
bool fastexport_bypass_defringe;
|
|
bool fastexport_bypass_dirpyrDenoise;
|
|
bool fastexport_bypass_dirpyrequalizer;
|
|
bool fastexport_bypass_wavelet;
|
|
Glib::ustring fastexport_raw_bayer_method;
|
|
//bool fastexport_bypass_raw_bayer_all_enhance;
|
|
bool fastexport_bypass_raw_bayer_dcb_iterations;
|
|
bool fastexport_bypass_raw_bayer_dcb_enhance;
|
|
bool fastexport_bypass_raw_bayer_lmmse_iterations;
|
|
bool fastexport_bypass_raw_bayer_linenoise;
|
|
bool fastexport_bypass_raw_bayer_greenthresh;
|
|
Glib::ustring fastexport_raw_xtrans_method;
|
|
bool fastexport_bypass_raw_ccSteps;
|
|
bool fastexport_bypass_raw_ca;
|
|
bool fastexport_bypass_raw_df;
|
|
bool fastexport_bypass_raw_ff;
|
|
Glib::ustring fastexport_icm_input_profile;
|
|
Glib::ustring fastexport_icm_working_profile;
|
|
Glib::ustring fastexport_icm_output_profile;
|
|
int fastexport_icm_outputIntent;
|
|
bool fastexport_icm_outputBPC;
|
|
Glib::ustring fastexport_icm_custom_output_profile;
|
|
bool fastexport_resize_enabled;
|
|
double fastexport_resize_scale;
|
|
Glib::ustring fastexport_resize_appliesTo;
|
|
Glib::ustring fastexport_resize_method;
|
|
int fastexport_resize_dataspec;
|
|
int fastexport_resize_width;
|
|
int fastexport_resize_height;
|
|
int fastexport_resize_longedge;
|
|
int fastexport_resize_shortedge;
|
|
bool fastexport_use_fast_pipeline;
|
|
|
|
std::vector<Glib::ustring> favorites;
|
|
bool cloneFavoriteTools;
|
|
// Dialog settings
|
|
Glib::ustring lastIccDir;
|
|
Glib::ustring lastDarkframeDir;
|
|
Glib::ustring lastFlatfieldDir;
|
|
Glib::ustring lastCameraProfilesDir;
|
|
Glib::ustring lastLensProfilesDir;
|
|
Glib::ustring lastRgbCurvesDir;
|
|
Glib::ustring lastLabCurvesDir;
|
|
Glib::ustring lastRetinexDir;
|
|
Glib::ustring lastDenoiseCurvesDir;
|
|
Glib::ustring lastWaveletCurvesDir;
|
|
Glib::ustring lastIcmCurvesDir;
|
|
Glib::ustring lastlocalCurvesDir;
|
|
Glib::ustring lastlocalCurvesDirghs;
|
|
Glib::ustring lastPFCurvesDir;
|
|
Glib::ustring lastHsvCurvesDir;
|
|
Glib::ustring lastToneCurvesDir;
|
|
Glib::ustring lastColorToningCurvesDir;
|
|
Glib::ustring lastVibranceCurvesDir;
|
|
Glib::ustring lastProfilingReferenceDir;
|
|
Glib::ustring lastBWCurvesDir;
|
|
Glib::ustring lastLensProfileDir;
|
|
Glib::ustring lastICCProfCreatorDir;
|
|
bool gimpPluginShowInfoDialog;
|
|
|
|
size_t maxRecentFolders; // max. number of recent folders stored in options file
|
|
std::vector<Glib::ustring> recentFolders; // List containing all recent folders
|
|
|
|
enum class ThumbnailPropertyMode {
|
|
PROCPARAMS, // store rank and color in procparams sidecars
|
|
XMP // store rank and color xmp sidecar
|
|
};
|
|
ThumbnailPropertyMode thumbnailRankColorMode;
|
|
|
|
enum SortMethod {
|
|
SORT_BY_NAME,
|
|
SORT_BY_DATE,
|
|
SORT_BY_EXIF,
|
|
SORT_BY_RANK,
|
|
SORT_BY_LABEL,
|
|
SORT_METHOD_COUNT,
|
|
};
|
|
SortMethod sortMethod; // remembers current state of file browser
|
|
bool sortDescending;
|
|
|
|
|
|
Options ();
|
|
|
|
Options* copyFrom (Options* other);
|
|
void filterOutParsedExtensions ();
|
|
void setDefaults ();
|
|
void readFromFile (Glib::ustring fname);
|
|
void saveToFile (Glib::ustring fname);
|
|
static void load (bool lightweight = false);
|
|
static void save();
|
|
|
|
// if multiUser=false, send back the global profile path
|
|
Glib::ustring getPreferredProfilePath();
|
|
Glib::ustring getUserProfilePath();
|
|
Glib::ustring getGlobalProfilePath();
|
|
Glib::ustring findProfilePath (Glib::ustring &profName);
|
|
bool is_parse_extention (Glib::ustring fname);
|
|
bool has_retained_extention (const Glib::ustring& fname);
|
|
bool is_new_version();
|
|
bool is_extention_enabled (const Glib::ustring& ext);
|
|
bool is_defProfRawMissing();
|
|
bool is_bundledDefProfRawMissing();
|
|
bool is_defProfImgMissing();
|
|
bool is_bundledDefProfImgMissing();
|
|
void setDefProfRawMissing (bool value);
|
|
void setBundledDefProfRawMissing (bool value);
|
|
void setDefProfImgMissing (bool value);
|
|
void setBundledDefProfImgMissing (bool value);
|
|
static Glib::ustring getICCProfileCopyright();
|
|
};
|
|
|
|
extern Options options;
|
|
extern Glib::ustring argv0;
|
|
extern Glib::ustring argv1;
|
|
extern bool simpleEditor;
|
|
extern bool gimpPlugin;
|
|
extern bool remote;
|
|
extern Glib::ustring versionString;
|
|
extern Glib::ustring paramFileExtension;
|