1 /*
2  *  This file is part of RawTherapee.
3  *
4  *  Copyright (c) 2004-2010 Gabor Horvath <hgabor@rawtherapee.com>
5  *
6  *  RawTherapee is free software: you can redistribute it and/or modify
7  *  it under the terms of the GNU General Public License as published by
8  *  the Free Software Foundation, either version 3 of the License, or
9  *  (at your option) any later version.
10  *
11  *  RawTherapee is distributed in the hope that it will be useful,
12  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  *  GNU General Public License for more details.
15  *
16  *  You should have received a copy of the GNU General Public License
17  *  along with RawTherapee.  If not, see <http://www.gnu.org/licenses/>.
18  */
19 #ifndef _RTSETTINGS_
20 #define _RTSETTINGS_
21 
22 #include "procparams.h"
23 
24 namespace rtengine
25 {
26 
27 /** This structure holds the global parameters used by the RT engine. */
28 class Settings
29 {
30 public:
31     Glib::ustring   iccDirectory;           ///< The directory containing the possible output icc profiles
32     int             viewingdevice;          // white of output device (D50...D65..)
33     int             viewingdevicegrey;          // level of grey output device
34     int             viewinggreySc;          // level of grey Scene
35     int             leveldnv;           // level of crop denoise
36     int             leveldnti;          // size of tiles denoise
37     int             leveldnaut;             // level of auto denoise
38     int             leveldnliss;            // level of auto multi zone
39     int             leveldnautsimpl;            // STD or EXPERT
40 
41     Glib::ustring   monitorProfile;         ///< ICC profile name used for the monitor
42     RenderingIntent monitorIntent;          ///< Colorimetric intent used with the above profile
43     bool            monitorBPC;             ///< Black Point Compensation for the Labimage->Monitor transform (directly, i.e. not soft-proofing and no WCS in between)
44     bool            autoMonitorProfile;     ///< Try to auto-determine the correct monitor color profile
45     bool            autocielab;
46     bool            rgbcurveslumamode_gamut;// controls gamut enforcement for RGB curves in lumamode
47     bool            verbose;
48     Glib::ustring   darkFramesPath;         ///< The default directory for dark frames
49     Glib::ustring   flatFieldsPath;         ///< The default directory for flat fields
50     Glib::ustring   adobe;                  // default name of AdobeRGB1998
51     Glib::ustring   prophoto;               // default name of Prophoto
52     Glib::ustring   prophoto10;             // default name of Prophoto
53 
54     Glib::ustring   widegamut;              //default name of WidegamutRGB
55     Glib::ustring   beta;                   // default name of BetaRGB
56     Glib::ustring   best;                   // default name of BestRGB
57     Glib::ustring   bruce;                  // default name of Bruce
58     Glib::ustring   srgb;                   // default name of SRGB space profile
59     Glib::ustring   srgb10;                 // default name of SRGB space profile
60     Glib::ustring   rec2020;                   // default name of rec2020
61 
62     bool            gamutICC; // no longer used
63     bool            gamutLch;
64     bool            ciecamfloat;
65     bool            HistogramWorking;
66     int             amchroma;
67     int             protectred;
68     double          protectredh;
69     double          nrauto;
70     double          nrautomax;
71     double          nrhigh;
72     int             nrwavlevel;
73     bool            daubech;
74     bool            ciebadpixgauss;
75     int             CRI_color; // Number for display Lab value; 0 = disabled
76     int             denoiselabgamma; // 0=gamma 26 11   1=gamma 40 5  2 =gamma 55 10
77     //  double          colortoningab; //
78     //  double          decaction;
79     //  bool            bw_complementary;
80     double          artifact_cbdl;
81     double          level0_cbdl;
82     double          level123_cbdl;
83     double          bot_left;
84     double          top_left;
85     double          top_right;
86     double          bot_right;
87     double          ed_detec;
88     double          ed_detecStr;
89     double          ed_low;
90     double          ed_lipinfl;
91     double          ed_lipampl;
92     /** Creates a new instance of Settings.
93       * @return a pointer to the new Settings instance. */
94     static Settings* create  ();
95     /** Destroys an instance of Settings.
96       * @param s a pointer to the Settings instance to destroy. */
97     static void      destroy (Settings* s);
98 };
99 }
100 
101 #endif
102 
103