diff --git a/COMPILE.txt b/COMPILE.txt index f03dc46a4..cc40b784a 100644 --- a/COMPILE.txt +++ b/COMPILE.txt @@ -1,35 +1,183 @@ -If you have problems with the compilation, identified the reason and fixed -the bug, please send me the updated build scripts (CMakeLists.txt files) to: -hgabor@rawtherapee.com +If you have problems with the compilation, please ask on the appropriated RawTherapee forum : +http://www.rawtherapee.com/forum/viewforum.php?f=10 + Windows ------- - METHOD 1: - Requirements: - - MinGW + MSYS - - CMake - - GTK and GTKMM development environments - - Compile: - - Start MSYS - - Enter the root directory of the RawTherapee source tree - - Type: cmake -G "MSYS Makefiles" . - - Type: make install - - You find the compiled program in the release directory + The toolchain: - METHOD 2: - Requirements: - - tdm-gcc (http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/tdm-gcc-4.5.1.exe/download) - - cmake (http://www.cmake.org/cmake/resources/software.html) - - mercurial (http://mercurial.selenic.com/wiki/WindowsInstall) - - gtkmm (http://ftp.se.debian.org/pub/gnome/binaries/win32/gtkmm/2.22/) - - Compile: - - Enter the root directory of the RawTherapee source tree - - Type: cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./release -DBINDIR=. -DDATADIR=. -DLIBDIR=. - - Type: mingw32-make.exe install - - You find the compiled program in the "release" directory + There is 2 method to compile RawTherapee, and they each rely on different and common packages. They are + now referred to METHOD 1 and METHOD 2. + Of course, you'll have to install the package for the build method explained later in this document. + + The rest of this document assumes that you've installed MinGW, MSYS and Gtkmm respectively to "C:\mingw", + "C:\msys" and "C:\Gtkmm". + This tutorial assume that you've installed the packages in a paths THAT DOES NOT CONTAIN SPACES. + + METHOD 1: + - MinGW-TDM (http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/tdm-gcc-4.5.1.exe/download) + OpenMP seems to be broken in TDM-GCC4.5.1, so when MinGW has been installed, download and install + libgomp form tdm-gcc-4.5.0 + (http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%204.5%20series/Previous/4.5.0-tdm-1%20SJLJ/gcc-4.5.0-tdm-1-openmp.zip/download) + - MSYS (http://downloads.sourceforge.net/mingw/MSYS-1.0.11.exe) + If you have some trouble installing MSYS, see here : http://www.mingw.org/wiki/MSYS + - CMake (http://www.cmake.org/cmake/resources/software.html) + - Gtkmm2.22 (http://ftp.se.debian.org/pub/gnome/binaries/win32/gtkmm/2.22/) + + METHOD 2: + - MinGW-TDM (http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/tdm-gcc-4.5.1.exe/download) + - CMake (http://www.cmake.org/cmake/resources/software.html) + - Gtkmm2.22 (http://ftp.se.debian.org/pub/gnome/binaries/win32/gtkmm/2.22/) + + Additionnal steps: + When all the packages of your preferred method are installed: + - set the GTKMM_BASEPATH user or system environment variable to the installation directory of Gtkmm + (the Gtkmm's installer can do it for you) + - set the MINGW_BASEPATH user or system environment variable to the installation directory of MinGW32 + - set the PKG_CONFIG_PATH user or system environment variable to the location of the pkgconfig directories: + c:\mingw\lib\pkgconfig;c:\gtkmm\lib\pkgconfig + You have to restart the console to take this new variables into account + - Copy the "Win32CMakeOptions-sample.txt" file located in the root directory of RT's source tree, to "cmo.txt" (e.g.) + You can edit that copy to change the compilation flags to your needs, but the default values should be fine. + + Dependancies: + + RawTherapee rely on libraries that may not be part of the Gtkmm or MinGW package. There is two ways of installing + thoses libraries. + + The simple way: + + For your convenience, those libraries has been precompiled and are downloadable at : + + http://www.rawtherapee.com/releases_head/windows/dependencies_for_creating_builds/ + + If you don't find a suitable package for your toolchain, take the DIY way or ask a developer + to build them for you. + + Just unpack the content of this archive to the base installation dir of MinGW, and everything + should work fine. + + The "Do It Yourself" way: + + The MSYS package is required to build the libraries. See above for the download link. + + Before building them, look if they are already installed in your Gtkmm and MinGW directories. There shouldn't be + two versions of the same library in different place. + + Open an MSYS console, that will create a Linux environment, and compile the dependancies in that order: + + zlib: + If you have Gtkmm2.22 installed, you can skip this section + - download: http://zlib.net/ + - how to build: + cd to the unarchiving directory of zlib-1.2.5 + make -f win32/Makefile.gcc + + Then, manually copy the files as follows: + + cp -iv zlib1.dll /mingw/bin + cp -iv zconf.h zlib.h /mingw/include + cp -iv libz.a /mingw/lib + cp -iv libzdll.a /mingw/lib/libz.dll.a + + libpng: + If you have Gtkmm2.22 installed, you can skip this section + - download: http://sourceforge.net/projects/libpng/files/ + (please note that libpng 1.5 has not been tested yet) + - how to build: + cd to the unarchiving directory of lpng144 + + There's two options to build libpng : + 1. gtkmm doesn't provide zlib so i've compiled it myself + cmake -G "MSYS Makefiles" -DCMAKE_INSTALL_PREFIX:PATH=/mingw -DCMAKE_BUILD_TYPE:STRING=Release + 2. gtkmm provide zlib and i want to reuse it (so we're assuming that you didn't compiled zlib like explained here above) + cmake -G "MSYS Makefiles" -DCMAKE_INSTALL_PREFIX:PATH=/mingw -DCMAKE_PREFIX_PATH:PATH=C:/gtkmm -DCMAKE_BUILD_TYPE:STRING=Release + + Then build and install: + make + make install + + libjpeg: + - download: http://www.ijg.org/ + - how to build: + cd to the unarchiving directory of jpeg-8b + ./configure --prefix=/mingw + copy the content of jconfig.txt to jconfig.h (overwrite the existing file) + make + make install + + libtiff: + - download: ftp://ftp.remotesensing.org/pub/libtiff/ + - how to build: + ./configure --prefix=/mingw + make + cd libtiff + make install + + libiptcdata: + - download: http://libiptcdata.sourceforge.net/ + - how to build: + ./configure --prefix=/mingw + + Edit the "Makefile" file from the root dir of libiptcdata, and search for "DIST_SUBDIRS =" + and "SUBDIRS =". You should only find one line for each search. From those lines, remove "iptc", then + + make + make install + + lcms: + - download v1.x (v2.x is not supported yet): http://sourceforge.net/projects/lcms/files/ + - how to build: + ./configure --prefix=/mingw + make + make install + + Rawzor: + provided in RT's source tree (downloaded from http://www.rawzor.com/developers/) + + IMPORTANT: + Make sure that the lcms.pc and libiptcdata.pc files located in the pkgconfig dir has the first + line like this : prefix=/mingw + + If everything is well installed, you should see the following lines when running the cmake command (see "Building RT" below) : + -- checking for module 'libiptcdata' + -- found libiptcdata, version 1.0.4 + -- checking for module 'lcms<=1.99' + -- found lcms, version 1.19 + -- Found JPEG: C:/mingw/lib/libjpeg.dll.a + -- Found ZLIB: C:/gtkmm/lib/libz.dll.a + -- Found PNG: C:/gtkmm/lib/libpng.lib + -- Found TIFF: C:/mingw/lib/libtiff.dll.a + + Building RT: + + METHOD 1: + Requirements: + - MinGW + MSYS (FIXME: Do we talk + - CMake + - GTK and GTKMM development environments + + Compile: + - Start an MSYS command line interface + - Enter the root directory of the RawTherapee source tree (type: cd "/C/Absolute/Path/To/RawTherapee_sourceTree") + - Type: cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -Ccmo.txt . + - Type: make install + - You'll find the compiled program in the subdirectory named like the value of CMAKE_BUILD_TYPE ("Release" in this example) + + METHOD 2: + Requirements: + - MinGW-TDM (http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/tdm-gcc-4.5.1.exe/download) + - CMake (http://www.cmake.org/cmake/resources/software.html) + - Mercurial (http://mercurial.selenic.com/wiki/WindowsInstall) + - Gtkmm (http://ftp.se.debian.org/pub/gnome/binaries/win32/gtkmm/2.22/) + + Compile: + - Start a standard DOS command line interface (WIN + "R" -> "cmd") + - Enter the root directory of the RawTherapee source tree (type: cd C:\Absolute\Path\To\RawTherapee_sourceTree) + - Type: cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -Ccmo.txt . + - Type: mingw32-make.exe install + - You'll find the compiled program in the subdirectory named like the value of CMAKE_BUILD_TYPE ("Release" in this example) Linux ----- @@ -47,8 +195,7 @@ Linux - Enter the root directory of the RawTherapee source tree - Type: cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./release -DBINDIR=. -DDATADIR=. -DLIBDIR=. - Type: make install - - You find the compiled program in the release directory (you can copy it - anywhere you want) + - You find the compiled program in the release directory (you can copy it anywhere you want) (By changing the cmake flags, you can change where the release is. By removing all flags it should go to the standard system install location). @@ -59,36 +206,33 @@ Linux click Help -> Install new Software. The Eclipse Update Site for MercurialEclipse is available at this URL: http://cbes.javaforge.com/update - + Import the rawtherapee mercurial repository: File->new->'other'->mercurial->Clone existing repository fill in URL: https://rawtherapee.googlecode.com/hg - + Enter root directory of RawTherapee source tree from a terminal window. configure the source for Eclipse with: cmake -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_INSTALL_PREFIX=./release -DBINDIR=. -DDATADIR=. -DLIBDIR=. -DCMAKE_BUILD_TYPE=Release - + Eclipse does not do 'make install' but only 'make all' so to get the release there are 2 ways. 1. type 'make install' in the console or, 2. in 'Project'->'properties'->'C/C++ Make Project'->'Build (incremental build)' change 'all' to 'install' - -... - OSX --- Requirements: - XCode Development Tools (you only need a subset of these, but it is probably easier to just install all of them) - MacPorts - - Set /opt/local/etc/macports/variants.conf to include "+no_x11 +quartz" - - If you want to build for multiple architectures, add +universal to variants.conf. Note that this will increase the size of the final application substantially. - - Set /opt/local/etc/macports/macports.conf key 'universal_archs' to the architectures you wish to build for. Possible values - include "i386 x86_64 ppc ppc64" - - Edit beginning of CMakeLists.txt to enable the same architectures as you added to variants.conf - - Run "sudo port install cairomm pango-devel gtk2 cmake glibmm gtkmm lcms libiptcdata" to install all needed libraries and tools - - If you don't already have Mercurial installed, run "sudo port install mercurial" - - If you want to try OpenMP builds, run "sudo port install gcc45" + - Set /opt/local/etc/macports/variants.conf to include "+no_x11 +quartz" + - If you want to build for multiple architectures, add +universal to variants.conf. Note that this will increase the size of the final application substantially. + - Set /opt/local/etc/macports/macports.conf key 'universal_archs' to the architectures you wish to build for. Possible values + include "i386 x86_64 ppc ppc64" + - Edit beginning of CMakeLists.txt to enable the same architectures as you added to variants.conf + - Run "sudo port install cairomm pango-devel gtk2 cmake glibmm gtkmm lcms libiptcdata" to install all needed libraries and tools + - If you don't already have Mercurial installed, run "sudo port install mercurial" + - If you want to try OpenMP builds, run "sudo port install gcc45" Compile: - Enter root directory of RawTherapee source tree diff --git a/rtdata/languages/default b/rtdata/languages/default index 044c7cbc5..596fd8b29 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -451,6 +451,8 @@ PREFERENCES_DIRSOFTWARE;Installation directory PREFERENCES_DMETHOD;Method PREFERENCES_EDITORCMDLINE;Other command line PREFERENCES_EDITORLAYOUT;Editor Layout +PREFERENCES_EXPOS;Exposure before interpolation\n :correction (lin) +PREFERENCES_PRESER;Exposure before interpolation\n :preserve highlights (EV) PREFERENCES_EXTERNALEDITOR;External editor PREFERENCES_FALSECOLOR;False color suppression steps PREFERENCES_FBROWSEROPTS;File Browser Options diff --git a/rtdata/profiles/crisp.pp3 b/rtdata/profiles/crisp.pp3 index 1c50c7bdf..a6ffd6fdb 100644 --- a/rtdata/profiles/crisp.pp3 +++ b/rtdata/profiles/crisp.pp3 @@ -173,6 +173,8 @@ CA=false HotDeadPixels=false LineDenoise=0 GreenEqThreshold=0 +PreExposure=1 +PrePreserv=0 CcSteps=1 Method=amaze DCBIterations=2 diff --git a/rtdata/profiles/default.pp3 b/rtdata/profiles/default.pp3 index 49b3a6680..30f2d7fd7 100644 --- a/rtdata/profiles/default.pp3 +++ b/rtdata/profiles/default.pp3 @@ -173,6 +173,8 @@ CA=false HotDeadPixels=false LineDenoise=0 GreenEqThreshold=0 +PreExposure=1 +PrePreserv=0 CcSteps=1 Method=amaze DCBIterations=2 diff --git a/rtdata/profiles/neutral.pp3 b/rtdata/profiles/neutral.pp3 index fdecac574..aa550bf00 100644 --- a/rtdata/profiles/neutral.pp3 +++ b/rtdata/profiles/neutral.pp3 @@ -172,6 +172,8 @@ CA=false HotDeadPixels=false LineDenoise=0 GreenEqThreshold=0 +PreExposure=1 +PrePreserv=0 CcSteps=1 Method=amaze DCBIterations=2 diff --git a/rtengine/expo_before_b.cc b/rtengine/expo_before_b.cc new file mode 100644 index 000000000..a19329ece --- /dev/null +++ b/rtengine/expo_before_b.cc @@ -0,0 +1,111 @@ + +//////////////////////////////////////////////////////////////// +// +// //exposure correction before interpolation +// +// code dated: December 27, 2010 +// +// Expo_before.cc 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. +// +// This program 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 this program. If not, see . +// +//////////////////////////////////////////////////////////////// +//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +// Jacques Desmis +// use fast-demo(provisional) from Emil Martinec +// inspired from work Guillermo Luijk and Manuel LLorens(Perfectraw) +// I use OMP + // This function uses parameters: + // exposure (lineal): 2^(-8..0..8): currently 0.5 +3 + // preserve (log) : 0..8 : currently 0.1 1 + +//modi : 31/12/2010 +#define LIM(x,min,max) MAX(min,MIN(x,max)) +#define CLIPF(x) LIM(x,0.0,65535.0) + +void RawImageSource::exp_bef(float expos, float preser) { + double dt,dT2; + clock_t t1, t2,t3,t4,t5; + float Yp, exposure2, K, EV; +// float LUT[65536]; +float *LUT = new float[65536]; + int i; + int row,col; + int width=W, height=H; + + // I use with Dcraw FDD interpolate from Luis Sanz , very fast and good, one can change for another : here with Rawtherpee == fastdemo() from Emil Martinec + //t1 = clock(); + //float *img = new float[H*W];//to save configuration : with RT is it necessary ?? + unsigned short** imgd; + imgd = allocArray< unsigned short >(W,H);//with memcpy : faster than for (...) + for (int i=0; i(imgd, H);//free memory imgd + + //exposure correction inspired from G.Luijk + if(preser==0.0){ // protect highlights +#pragma omp parallel for shared(expos) + for(int row=0;row1){ + K=65535/expos*exp(-preser*log((double) 2)); + for(int j=0;j<=65535;j++) LUT[(int)j]=CLIPF(((65535-K*expos)/(65535-K)*(j-65535)+65535)/j); + +#pragma omp parallel for shared(expos) + for(int row=0;rowsetProgress (0.0); } - CA_correct_RT(raw.cared, raw.cablue); + CA_correct_RT(raw.cared, raw.cablue); } + + if ( raw.expos !=1 ) { // exposure + if (plistener) { + plistener->setProgressStr ("Exposure Correction..."); + plistener->setProgress (0.0); + } + exp_bef(raw.expos, raw.preser); + + } + t2.set(); if( settings->verbose ) printf("Preprocessing: %d usec\n", t2.etime(t1)); @@ -3203,6 +3213,8 @@ void RawImageSource::dcb_demosaic(int iterations, int dcb_enhance) #include "CA_correct_RT.cc"//Emil's CA auto correction #include "cfa_linedn_RT.cc"//Emil's CA auto correction #include "green_equil_RT.cc"//Emil's green channel equilibration +#include "expo_before_b.cc"//Jacques's exposure before interpolation + //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/rtengine/rawimagesource.h b/rtengine/rawimagesource.h index 868f5a062..e49ba0ca1 100644 --- a/rtengine/rawimagesource.h +++ b/rtengine/rawimagesource.h @@ -150,6 +150,7 @@ class RawImageSource : public ImageSource { int LinEqSolve( int nDim, float* pfMatr, float* pfVect, float* pfSolution);//Emil's CA auto correction void CA_correct_RT (double cared, double cablue); + void exp_bef (float expos, float preser);//exposi int cfaCleanFromMap( PixelsMap &bitmapBads ); int findHotDeadPixel( PixelsMap &bpMap, float thresh); void ddct8x8s(int isgn, float **a); diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index 507241fff..b7d1c0f6f 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -288,6 +288,8 @@ void ParamsEdited::initFrom (const std::vector raw.caCorrection = raw.caCorrection && p.raw.ca_autocorrect == other.raw.ca_autocorrect; raw.caRed = raw.caRed && p.raw.cared == other.raw.cared; raw.caBlue = raw.caBlue && p.raw.cablue == other.raw.cablue; + raw.exPos = raw.exPos && p.raw.expos == other.raw.expos; + raw.exPreser = raw.exPreser && p.raw.preser == other.raw.preser; //exposi raw.darkFrame = raw.darkFrame && p.raw.dark_frame == other.raw.dark_frame; raw.dfAuto = raw.dfAuto && p.raw.df_autoselect == other.raw.df_autoselect; raw.greenEq = raw.greenEq && p.raw.greenthresh == other.raw.greenthresh; @@ -434,6 +436,8 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten if (raw.caCorrection) toEdit.raw.ca_autocorrect = mods.raw.ca_autocorrect; if (raw.caRed) toEdit.raw.cared = mods.raw.cared; if (raw.caBlue) toEdit.raw.cablue = mods.raw.cablue; + if (raw.exPos) toEdit.raw.expos =mods.raw.expos; + if (raw.exPreser) toEdit.raw.preser =mods.raw.preser; if (raw.greenEq) toEdit.raw.greenthresh = mods.raw.greenthresh; if (raw.hotDeadPixel) toEdit.raw.hotdeadpix_filt= mods.raw.hotdeadpix_filt; if (raw.linenoise) toEdit.raw.linenoise = mods.raw.linenoise; diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index ba217d079..3778a7546 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -287,6 +287,9 @@ class RAWParamsEdited { bool linenoise; bool darkFrame; bool dfAuto; + bool exCorrection; + bool exPos; + bool exPreser; }; class ExifPairEdited { diff --git a/rtgui/preprocess.cc b/rtgui/preprocess.cc index b8b1bc666..68733278b 100644 --- a/rtgui/preprocess.cc +++ b/rtgui/preprocess.cc @@ -41,6 +41,20 @@ PreProcess::PreProcess () caBlue = Gtk::manage(new Adjuster (M("PREFERENCES_CABLUE"),-4.0,4.0,0.1,0)); caBlue->setAdjusterListener (this); caBlue->show(); +//exposi + /*exPos = Gtk::manage(new Adjuster (M("PREFERENCES_EXPOS"),0.2,4.0,0.1,1)); + exPos->setAdjusterListener (this); + exPos->show(); + exPreser = Gtk::manage(new Adjuster (M("PREFERENCES_PRESER"),0,2.5,0.1,0)); + exPreser->setAdjusterListener (this); + exPreser->show();*/ + PexPos = Gtk::manage(new Adjuster (M("PREFERENCES_EXPOS"),0.2,4.0,0.1,1)); + PexPos->setAdjusterListener (this); + PexPos->show(); + PexPreser = Gtk::manage(new Adjuster (M("PREFERENCES_PRESER"),0,2.5,0.1,0)); + PexPreser->setAdjusterListener (this); + PexPreser->show(); + hotDeadPixel = Gtk::manage(new Gtk::CheckButton((M("PREFERENCES_HOTDEADPIXFILT")))); @@ -60,6 +74,9 @@ PreProcess::PreProcess () pack_start( *caAutocorrect, Gtk::PACK_SHRINK, 4); pack_start( *caRed, Gtk::PACK_SHRINK, 4); pack_start( *caBlue, Gtk::PACK_SHRINK, 4); + pack_start( *PexPos, Gtk::PACK_SHRINK, 4);//exposi + pack_start( *PexPreser, Gtk::PACK_SHRINK, 4); + pack_start( *Gtk::manage (new Gtk::HSeparator())); pack_start( *lineDenoise, Gtk::PACK_SHRINK, 4); pack_start( *Gtk::manage (new Gtk::HSeparator())); @@ -85,6 +102,10 @@ void PreProcess::read(const rtengine::procparams::ProcParams* pp, const ParamsEd caAutocorrect->set_inconsistent(!pedited->raw.caCorrection); caRed->setEditedState( pedited->raw.caRed ? Edited : UnEdited ); caBlue->setEditedState( pedited->raw.caBlue ? Edited : UnEdited ); + PexPos->setEditedState( pedited->raw.exPos ? Edited : UnEdited ); + PexPreser->setEditedState( pedited->raw.exPreser ? Edited : UnEdited ); + + //exposure hotDeadPixel->set_inconsistent (!pedited->raw.hotDeadPixel); lineDenoise->setEditedState( pedited->raw.linenoise ? Edited : UnEdited ); greenEqThreshold->setEditedState( pedited->raw.greenEq ? Edited : UnEdited ); @@ -103,6 +124,9 @@ void PreProcess::read(const rtengine::procparams::ProcParams* pp, const ParamsEd caAutocorrect->set_active(pp->raw.ca_autocorrect); caRed->setValue (pp->raw.cared); caBlue->setValue (pp->raw.cablue); + PexPos->setValue (pp->raw.expos); + PexPreser->setValue (pp->raw.preser);//exposi + hotDeadPixel->set_active (pp->raw.hotdeadpix_filt); lineDenoise->setValue (pp->raw.linenoise); greenEqThreshold->setValue (pp->raw.greenthresh); @@ -124,6 +148,9 @@ void PreProcess::write( rtengine::procparams::ProcParams* pp, ParamsEdited* pedi pp->raw.ca_autocorrect = caAutocorrect->get_active(); pp->raw.cared = (double)caRed->getValue(); pp->raw.cablue = (double)caBlue->getValue(); + pp->raw.expos = (double)PexPos->getValue(); + pp->raw.preser = (double)PexPreser->getValue();//exposi + pp->raw.hotdeadpix_filt = hotDeadPixel->get_active(); pp->raw.linenoise = (int)lineDenoise->getValue(); pp->raw.greenthresh = (int)greenEqThreshold->getValue(); @@ -136,6 +163,9 @@ void PreProcess::write( rtengine::procparams::ProcParams* pp, ParamsEdited* pedi pedited->raw.caCorrection = !caAutocorrect->get_inconsistent(); pedited->raw.caRed = caRed->getEditedState (); pedited->raw.caBlue = caBlue->getEditedState (); + pedited->raw.exPos = PexPos->getEditedState (); + pedited->raw.exPreser = PexPreser->getEditedState ();//exposi + pedited->raw.hotDeadPixel = !hotDeadPixel->get_inconsistent(); } } @@ -151,6 +181,9 @@ void PreProcess::setBatchMode(bool batchMode) ToolPanel::setBatchMode (batchMode); caRed->showEditedCB (); caBlue->showEditedCB (); + PexPos->showEditedCB (); + PexPreser->showEditedCB ();//exposi + lineDenoise->showEditedCB (); greenEqThreshold->showEditedCB (); } @@ -160,16 +193,25 @@ void PreProcess::setDefaults(const rtengine::procparams::ProcParams* defParams, lineDenoise->setDefault( defParams->raw.linenoise); caRed->setDefault( defParams->raw.cared); caBlue->setDefault( defParams->raw.cablue); + PexPos->setDefault( defParams->raw.expos); + PexPreser->setDefault( defParams->raw.preser); + greenEqThreshold->setDefault (defParams->raw.greenthresh); if (pedited) { lineDenoise->setDefaultEditedState( pedited->raw.linenoise ? Edited : UnEdited); caRed->setDefaultEditedState( pedited->raw.caRed ? Edited : UnEdited); caBlue->setDefaultEditedState( pedited->raw.caBlue ? Edited : UnEdited); + PexPos->setDefaultEditedState( pedited->raw.exPos ? Edited : UnEdited); + PexPreser->setDefaultEditedState( pedited->raw.exPreser ? Edited : UnEdited); + greenEqThreshold->setDefaultEditedState(pedited->raw.greenEq ? Edited : UnEdited); }else{ lineDenoise->setDefaultEditedState( Irrelevant ); caRed->setDefaultEditedState( Irrelevant ); caBlue->setDefaultEditedState( Irrelevant ); + PexPos->setDefaultEditedState( Irrelevant ); + PexPreser->setDefaultEditedState( Irrelevant ); + greenEqThreshold->setDefaultEditedState(Irrelevant ); } } diff --git a/rtgui/preprocess.h b/rtgui/preprocess.h index ec699e91f..c411cb07e 100644 --- a/rtgui/preprocess.h +++ b/rtgui/preprocess.h @@ -37,6 +37,9 @@ class PreProcess : public Gtk::VBox, public AdjusterListener, public ToolPanel{ Adjuster* caRed; Adjuster* caBlue; + Adjuster* PexPos; + Adjuster* PexPreser; + Adjuster* lineDenoise; Adjuster* greenEqThreshold; Gtk::CheckButton* caAutocorrect;