diff -Nru luminance-2.2.1/build/msvc/build.cmd luminance-2.3.0/build/msvc/build.cmd --- luminance-2.2.1/build/msvc/build.cmd 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/build/msvc/build.cmd 2012-07-01 09:10:50.000000000 +0000 @@ -47,6 +47,7 @@ IF NOT EXIST %CYGWIN_DIR%\bin\cvs.exe GOTO cygwin_error IF NOT EXIST %CYGWIN_DIR%\bin\git.exe GOTO cygwin_error IF NOT EXIST %CYGWIN_DIR%\bin\gzip.exe GOTO cygwin_error +IF NOT EXIST %CYGWIN_DIR%\bin\mv.exe GOTO cygwin_error IF NOT EXIST %CYGWIN_DIR%\bin\sed.exe GOTO cygwin_error IF NOT EXIST %CYGWIN_DIR%\bin\ssh.exe GOTO cygwin_error IF NOT EXIST %CYGWIN_DIR%\bin\svn.exe GOTO cygwin_error @@ -60,6 +61,7 @@ echo cvs echo git echo gzip +echo mv echo sed echo ssh echo svn @@ -91,12 +93,12 @@ %CYGWIN_DIR%\bin\wget.exe -O %TEMP_DIR%/align_image_stack_%RawPlatform%.exe qtpfsgui.sourceforge.net/win/align_image_stack_%RawPlatform%.exe ) -IF NOT EXIST %TEMP_DIR%\zlib125.zip ( - %CYGWIN_DIR%\bin\wget.exe -O %TEMP_DIR%/zlib125.zip http://zlib.net/zlib125.zip +IF NOT EXIST %TEMP_DIR%\zlib127.zip ( + %CYGWIN_DIR%\bin\wget.exe -O %TEMP_DIR%/zlib127.zip http://zlib.net/zlib127.zip ) -IF NOT EXIST zlib-1.2.5 ( - %CYGWIN_DIR%\bin\unzip.exe -q %TEMP_DIR%/zlib125.zip - pushd zlib-1.2.5\contrib\masmx64 +IF NOT EXIST zlib-1.2.7 ( + %CYGWIN_DIR%\bin\unzip.exe -q %TEMP_DIR%/zlib127.zip + pushd zlib-1.2.7\contrib\masmx64 call bld_ml64.bat cd ..\masmx86 call bld_ml32.bat @@ -105,27 +107,46 @@ popd ) -IF NOT EXIST %TEMP_DIR%\expat-2.0.1.tar ( - %CYGWIN_DIR%\bin\wget.exe -O %TEMP_DIR%/expat-2.0.1.tar.gz http://sourceforge.net/projects/expat/files/expat/2.0.1/expat-2.0.1.tar.gz/download - %CYGWIN_DIR%\bin\gzip.exe -d %TEMP_DIR%/expat-2.0.1.tar.gz +REM zlib copy for libpng +IF NOT EXIST zlib ( + mkdir zlib + copy zlib-1.2.7\*.h zlib + copy zlib-1.2.7\contrib\vstudio\%VS_SHORT%\%RawPlatform%\ZlibDll%Configuration%\*.lib zlib + copy zlib-1.2.7\contrib\vstudio\%VS_SHORT%\%RawPlatform%\ZlibDll%Configuration%\*.dll zlib ) -IF NOT EXIST expat-2.0.1 ( - %CYGWIN_DIR%\bin\tar.exe -xf %TEMP_DIR%/expat-2.0.1.tar + +IF NOT EXIST %TEMP_DIR%\lpng1511.zip ( + %CYGWIN_DIR%\bin\wget.exe -O %TEMP_DIR%/lpng1511.zip http://prdownloads.sourceforge.net/libpng/lpng1511.zip?download +) +IF NOT EXIST lpng1511 ( + %CYGWIN_DIR%\bin\unzip.exe -q %TEMP_DIR%/lpng1511.zip + pushd lpng1511 + nmake /f scripts\makefile.vcwin32 + popd +) + +IF NOT EXIST %TEMP_DIR%\expat-2.1.0.tar ( + %CYGWIN_DIR%\bin\wget.exe -O %TEMP_DIR%/expat-2.1.0.tar.gz http://sourceforge.net/projects/expat/files/expat/2.1.0/expat-2.1.0.tar.gz/download + %CYGWIN_DIR%\bin\gzip.exe -d %TEMP_DIR%/expat-2.1.0.tar.gz +) +IF NOT EXIST expat-2.1.0 ( + %CYGWIN_DIR%\bin\tar.exe -xf %TEMP_DIR%/expat-2.1.0.tar ) + IF NOT EXIST exiv2-trunk ( set exiv2-compile=true - %CYGWIN_DIR%\bin\svn.exe co -r 2672 svn://dev.exiv2.org/svn/trunk exiv2-trunk + %CYGWIN_DIR%\bin\svn.exe co -r 2756 svn://dev.exiv2.org/svn/trunk exiv2-trunk ) ELSE ( - rem svn update exiv2-trunk - rem set exiv2-compile=true + %CYGWIN_DIR%\bin\svn.exe update -r 2756 exiv2-trunk + set exiv2-compile=true ) IF DEFINED exiv2-compile ( REM msvc64 is the right one for Win32 too pushd exiv2-trunk\msvc64 devenv exiv2.sln /upgrade - devenv exiv2.sln /build "%Configuration%DLL|%Platform%" + devenv exiv2.sln /build "%Configuration%DLL|%Platform%" /Project exiv2 popd ) @@ -152,36 +173,73 @@ popd ) -IF NOT EXIST %TEMP_DIR%\tiff-4.0.1.zip ( - %CYGWIN_DIR%\bin\wget.exe -O %TEMP_DIR%/tiff-4.0.1.zip http://download.osgeo.org/libtiff/tiff-4.0.1.zip +IF NOT EXIST %TEMP_DIR%\lcms2-9e246e.zip ( + %CYGWIN_DIR%\bin\wget.exe -O %TEMP_DIR%/lcms2-9e246e.zip --no-check-certificate https://github.com/mm2/Little-CMS/zipball/9e246ece55017da090a842e0cf3273483f32afa1 +) + + +IF NOT EXIST lcms2-9e246e ( + %CYGWIN_DIR%\bin\unzip.exe -q %TEMP_DIR%/lcms2-9e246e.zip + %CYGWIN_DIR%\bin\mv.exe mm2-Little-CMS-* lcms2-9e246e + + pushd lcms2-9e246e + devenv Projects\VC2010\lcms2.sln /Upgrade + devenv Projects\VC2010\lcms2.sln /build "%Configuration%|%Platform%" /Project lcms2_DLL + popd +) + +IF NOT EXIST %TEMP_DIR%\tiff-4.0.2.zip ( + %CYGWIN_DIR%\bin\wget.exe -O %TEMP_DIR%/tiff-4.0.2.zip http://download.osgeo.org/libtiff/tiff-4.0.2.zip ) -IF NOT EXIST tiff-4.0.1 ( - %CYGWIN_DIR%\bin\unzip.exe -q %TEMP_DIR%/tiff-4.0.1.zip +IF NOT EXIST tiff-4.0.2 ( + %CYGWIN_DIR%\bin\unzip.exe -q %TEMP_DIR%/tiff-4.0.2.zip - echo.JPEG_SUPPORT=^0> tiff-4.0.1\qtpfsgui_commands.in - echo.JPEGDIR=..\..\libjpeg>> tiff-4.0.1\qtpfsgui_commands.in - echo.JPEG_INCLUDE=-I$^(JPEGDIR^)>> tiff-4.0.1\qtpfsgui_commands.in - echo.JPEG_LIB=$^(JPEGDIR^)\libjpeg.lib>> tiff-4.0.1\qtpfsgui_commands.in - echo.ZIP_SUPPORT=^0>> tiff-4.0.1\qtpfsgui_commands.in - echo.ZLIBDIR=..\..\zlib-1.2.5\contrib\vstudio\%VS_SHORT%\%RawPlatform%\ZlibDll%Configuration%>> tiff-4.0.1\qtpfsgui_commands.in - echo.ZLIB_INCLUDE=-I..\..\zlib-1.2.5>> tiff-4.0.1\qtpfsgui_commands.in - echo.ZLIB_LIB=$^(ZLIBDIR^)\zlibwapi.lib>> tiff-4.0.1\qtpfsgui_commands.in + echo.JPEG_SUPPORT=^1> tiff-4.0.2\qtpfsgui_commands.in + echo.JPEGDIR=..\..\libjpeg>> tiff-4.0.2\qtpfsgui_commands.in + echo.JPEG_INCLUDE=-I$^(JPEGDIR^)>> tiff-4.0.2\qtpfsgui_commands.in + echo.JPEG_LIB=$^(JPEGDIR^)\libjpeg.lib>> tiff-4.0.2\qtpfsgui_commands.in + echo.ZIP_SUPPORT=^1>> tiff-4.0.2\qtpfsgui_commands.in + echo.ZLIBDIR=..\..\zlib-1.2.7\contrib\vstudio\%VS_SHORT%\%RawPlatform%\ZlibDll%Configuration%>> tiff-4.0.2\qtpfsgui_commands.in + echo.ZLIB_INCLUDE=-I..\..\zlib-1.2.7>> tiff-4.0.2\qtpfsgui_commands.in + echo.ZLIB_LIB=$^(ZLIBDIR^)\zlibwapi.lib>> tiff-4.0.2\qtpfsgui_commands.in - pushd tiff-4.0.1 + pushd tiff-4.0.2 nmake /s /c /f Makefile.vc @qtpfsgui_commands.in popd ) -IF NOT EXIST %TEMP_DIR%\LibRaw-0.14.5.zip ( - %CYGWIN_DIR%\bin\wget.exe -O %TEMP_DIR%/LibRaw-0.14.5.zip http://www.libraw.org/data/LibRaw-0.14.5.zip +IF NOT EXIST %TEMP_DIR%\LibRaw-4ad62bd.zip ( + %CYGWIN_DIR%\bin\wget.exe -O %TEMP_DIR%/LibRaw-4ad62bd.zip --no-check-certificate https://github.com/LibRaw/LibRaw/zipball/4ad62bd3a4face10222fec8884e8b21d858aa48b ) -IF NOT EXIST LibRaw-0.14.5 ( - %CYGWIN_DIR%\bin\unzip.exe -q %TEMP_DIR%/LibRaw-0.14.5.zip +IF NOT EXIST %TEMP_DIR%\LibRaw-demosaic-pack-GPL2-0.14.6.tar ( + %CYGWIN_DIR%\bin\wget.exe -O %TEMP_DIR%/LibRaw-demosaic-pack-GPL2-0.14.6.tar.gz http://www.libraw.org/data/LibRaw-demosaic-pack-GPL2-0.14.6.tar.gz + %CYGWIN_DIR%\bin\gzip.exe -d %TEMP_DIR%/LibRaw-demosaic-pack-GPL2-0.14.6.tar.gz +) +IF NOT EXIST LibRaw-demosaic-pack-GPL2-0.14.6 ( + rem %CYGWIN_DIR%\bin\unzip.exe -q %TEMP_DIR%/LibRaw-demosaic-pack-GPL2-0.14.6.tar.gz + + %CYGWIN_DIR%\bin\tar.exe -xf %TEMP_DIR%/LibRaw-demosaic-pack-GPL2-0.14.6.tar +) + +IF NOT EXIST LibRaw-4ad62bd ( + %CYGWIN_DIR%\bin\unzip.exe -q %TEMP_DIR%/LibRaw-4ad62bd.zip + %CYGWIN_DIR%\bin\mv.exe LibRaw-LibRaw-* LibRaw-4ad62bd + + + pushd LibRaw-4ad62bd + + rem echo.COPT_OPT="/openmp"> qtpfsgui_commands.in + echo.CFLAGS_DP2=/I..\LibRaw-demosaic-pack-GPL2-0.14.6> qtpfsgui_commands.in + echo.CFLAGSG2=/DLIBRAW_DEMOSAIC_PACK_GPL2>> qtpfsgui_commands.in + echo.LCMS_DEF="/DUSE_LCMS2 /DCMS_DLL /I..\lcms2-9e246e\include">> qtpfsgui_commands.in + echo.LCMS_LIB="..\lcms2-9e246e\bin\lcms2_dll.lib">> qtpfsgui_commands.in + rem echo.LCMS_DEF="/DUSE_LCMS /DLCMS_DLL /I..\lcms-1.19\include">> qtpfsgui_commands.in + rem echo.LCMS_LIB="..\lcms-1.19\bin\lcms.lib">> qtpfsgui_commands.in - pushd LibRaw-0.14.5 - nmake /f Makefile.msvc + nmake /f Makefile.msvc @qtpfsgui_commands.in clean + nmake /f Makefile.msvc @qtpfsgui_commands.in bin\libraw.dll popd ) @@ -217,9 +275,9 @@ ) popd - copy zlib-1.2.5\*.h OpenExrStuff\Deploy\include - copy zlib-1.2.5\contrib\vstudio\%VS_SHORT%\%RawPlatform%\ZlibDll%Configuration%\*.lib OpenExrStuff\Deploy\lib\%Platform%\%Configuration% - copy zlib-1.2.5\contrib\vstudio\%VS_SHORT%\%RawPlatform%\ZlibDll%Configuration%\*.dll OpenExrStuff\Deploy\bin\%Platform%\%Configuration% + copy zlib-1.2.7\*.h OpenExrStuff\Deploy\include + copy zlib-1.2.7\contrib\vstudio\%VS_SHORT%\%RawPlatform%\ZlibDll%Configuration%\*.lib OpenExrStuff\Deploy\lib\%Platform%\%Configuration% + copy zlib-1.2.7\contrib\vstudio\%VS_SHORT%\%RawPlatform%\ZlibDll%Configuration%\*.dll OpenExrStuff\Deploy\bin\%Platform%\%Configuration% ) pushd OpenExrStuff\openexr-cvs @@ -250,23 +308,24 @@ ) IF %Platform% EQU Win32 ( - IF NOT EXIST %TEMP_DIR%\fftw-3.3-dll32.zip ( - %CYGWIN_DIR%\bin\wget.exe -O %TEMP_DIR%/fftw-3.3-dll32.zip ftp://ftp.fftw.org/pub/fftw/fftw-3.3-dll32.zip + IF NOT EXIST %TEMP_DIR%\fftw-3.3.2-dll32.zip ( + %CYGWIN_DIR%\bin\wget.exe -O %TEMP_DIR%/fftw-3.3.2-dll32.zip ftp://ftp.fftw.org/pub/fftw/fftw-3.3.2-dll32.zip ) ) ELSE ( - IF NOT EXIST %TEMP_DIR%\fftw-3.3-dll64.zip ( - %CYGWIN_DIR%\bin\wget.exe -O %TEMP_DIR%/fftw-3.3-dll64.zip ftp://ftp.fftw.org/pub/fftw/fftw-3.3-dll64.zip + IF NOT EXIST %TEMP_DIR%\fftw-3.3.2-dll64.zip ( + %CYGWIN_DIR%\bin\wget.exe -O %TEMP_DIR%/fftw-3.3.2-dll64.zip ftp://ftp.fftw.org/pub/fftw/fftw-3.3.2-dll64.zip + ) ) -IF NOT EXIST fftw-3.3-dll ( +IF NOT EXIST fftw-3.3.2-dll ( IF %Platform% EQU Win32 ( - %CYGWIN_DIR%\bin\unzip.exe -q -d fftw-3.3-dll %TEMP_DIR%/fftw-3.3-dll32.zip + %CYGWIN_DIR%\bin\unzip.exe -q -d fftw-3.3.2-dll %TEMP_DIR%/fftw-3.3.2-dll32.zip ) ELSE ( - %CYGWIN_DIR%\bin\unzip.exe -q -d fftw-3.3-dll %TEMP_DIR%/fftw-3.3-dll64.zip + %CYGWIN_DIR%\bin\unzip.exe -q -d fftw-3.3.2-dll %TEMP_DIR%/fftw-3.3.2-dll64.zip ) - pushd fftw-3.3-dll + pushd fftw-3.3.2-dll lib /def:libfftw3-3.def lib /def:libfftw3f-3.def lib /def:libfftw3l-3.def @@ -325,7 +384,9 @@ popd ) ELSE ( pushd LuminanceHdrStuff\qtpfsgui - %CYGWIN_DIR%\bin\git.exe pull + IF %UPDATE_REPO_LUMINANCE% EQU 1 ( + %CYGWIN_DIR%\bin\git.exe pull + ) popd ) @@ -339,38 +400,50 @@ mkdir bin popd - for %%v in ("exiv2", "libtiff", "libraw", "OpenEXR", "fftw3", "gsl") do ( + for %%v in ("libpng", "libjpeg", "lcms2", "exiv2", "libtiff", "libraw", "OpenEXR", "fftw3", "gsl") do ( mkdir LuminanceHdrStuff\DEPs\include\%%v mkdir LuminanceHdrStuff\DEPs\lib\%%v mkdir LuminanceHdrStuff\DEPs\bin\%%v ) + + + copy lpng1511\*.h LuminanceHdrStuff\DEPs\include\libpng + copy lpng1511\*.lib LuminanceHdrStuff\DEPs\lib\libpng + rem copy lpng1511\*.dll LuminanceHdrStuff\DEPs\bin\libpng + + copy libjpeg\*.h LuminanceHdrStuff\DEPs\include\libjpeg + + copy lcms2-9e246e\include\*.h LuminanceHdrStuff\DEPs\include\lcms2 + copy lcms2-9e246e\bin\*.lib LuminanceHdrStuff\DEPs\lib\lcms2 + copy lcms2-9e246e\bin\*.dll LuminanceHdrStuff\DEPs\bin\lcms2 + copy exiv2-trunk\msvc64\include\* LuminanceHdrStuff\DEPs\include\exiv2 copy exiv2-trunk\msvc64\include\exiv2\* LuminanceHdrStuff\DEPs\include\exiv2 copy exiv2-trunk\msvc64\exiv2lib\%Platform%\%Configuration%DLL\*.lib LuminanceHdrStuff\DEPs\lib\exiv2 copy exiv2-trunk\msvc64\exiv2lib\%Platform%\%Configuration%DLL\*.dll LuminanceHdrStuff\DEPs\bin\exiv2 - copy tiff-4.0.1\libtiff\*.h LuminanceHdrStuff\DEPs\include\libtiff - copy tiff-4.0.1\libtiff\*.lib LuminanceHdrStuff\DEPs\lib\libtiff - copy tiff-4.0.1\libtiff\*.dll LuminanceHdrStuff\DEPs\bin\libtiff + copy tiff-4.0.2\libtiff\*.h LuminanceHdrStuff\DEPs\include\libtiff + copy tiff-4.0.2\libtiff\*.lib LuminanceHdrStuff\DEPs\lib\libtiff + copy tiff-4.0.2\libtiff\*.dll LuminanceHdrStuff\DEPs\bin\libtiff mkdir LuminanceHdrStuff\DEPs\include\libraw\libraw - copy LibRaw-0.14.5\libraw\*.h LuminanceHdrStuff\DEPs\include\libraw\libraw - copy LibRaw-0.14.5\lib\*.lib LuminanceHdrStuff\DEPs\lib\libraw - copy LibRaw-0.14.5\bin\*.dll LuminanceHdrStuff\DEPs\bin\libraw + copy LibRaw-4ad62bd\libraw\*.h LuminanceHdrStuff\DEPs\include\libraw\libraw + copy LibRaw-4ad62bd\lib\*.lib LuminanceHdrStuff\DEPs\lib\libraw + copy LibRaw-4ad62bd\bin\*.dll LuminanceHdrStuff\DEPs\bin\libraw copy OpenExrStuff\Deploy\include\*.h LuminanceHdrStuff\DEPs\include\OpenEXR copy OpenExrStuff\Deploy\lib\%Platform%\%Configuration%\*.lib LuminanceHdrStuff\DEPs\lib\OpenEXR copy OpenExrStuff\Deploy\bin\%Platform%\%Configuration%\*.dll LuminanceHdrStuff\DEPs\bin\OpenEXR - copy fftw-3.3-dll\*.h LuminanceHdrStuff\DEPs\include\fftw3 - copy fftw-3.3-dll\*.lib LuminanceHdrStuff\DEPs\lib\fftw3 - copy fftw-3.3-dll\*.dll LuminanceHdrStuff\DEPs\bin\fftw3 + copy fftw-3.3.2-dll\*.h LuminanceHdrStuff\DEPs\include\fftw3 + copy fftw-3.3.2-dll\*.lib LuminanceHdrStuff\DEPs\lib\fftw3 + copy fftw-3.3.2-dll\*.dll LuminanceHdrStuff\DEPs\bin\fftw3 mkdir LuminanceHdrStuff\DEPs\include\gsl\gsl copy gsl-1.15\gsl\*.h LuminanceHdrStuff\DEPs\include\gsl\gsl copy gsl-1.15\build.vc10\lib\%Platform%\%Configuration%\*.lib LuminanceHdrStuff\DEPs\lib\gsl - copy gsl-1.15\build.vc10\dll\*.dll LuminanceHdrStuff\DEPs\bin\gsl + rem copy gsl-1.15\build.vc10\dll\*.dll LuminanceHdrStuff\DEPs\bin\gsl ) @@ -422,10 +495,11 @@ IF NOT EXIST LuminanceHdrStuff\qtpfsgui.build\%Configuration%\zlib1.dll ( pushd LuminanceHdrStuff\DEPs\bin - for %%v in ("exiv2\exiv2.dll", "exiv2\libexpat.dll", "exiv2\zlib1.dll", "OpenEXR\Half.dll", "OpenEXR\Iex.dll", "OpenEXR\IlmImf.dll", "OpenEXR\IlmThread.dll", "OpenEXR\zlibwapi.dll", "libraw\libraw.dll", "fftw3\libfftw3f-3.dll") do ( + for %%v in ("lcms2\lcms2_DLL.dll", "lcms2\lcms.dll", "exiv2\exiv2.dll", "exiv2\libexpat.dll", "exiv2\zlib1.dll", "OpenEXR\Half.dll", "OpenEXR\Iex.dll", "OpenEXR\IlmImf.dll", "OpenEXR\IlmThread.dll", "OpenEXR\zlibwapi.dll", "libraw\libraw.dll", "fftw3\libfftw3f-3.dll") do ( copy %%v ..\..\qtpfsgui.build\%Configuration% ) popd + ren LuminanceHdrStuff\qtpfsgui.build\%Configuration%\lcms2_DLL.dll lcms2.dll ) IF NOT EXIST LuminanceHdrStuff\qtpfsgui.build\%Configuration%\i18n\ ( mkdir LuminanceHdrStuff\qtpfsgui.build\%Configuration%\i18n diff -Nru luminance-2.2.1/build/msvc/setenv.cmd luminance-2.3.0/build/msvc/setenv.cmd --- luminance-2.2.1/build/msvc/setenv.cmd 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/build/msvc/setenv.cmd 2012-07-01 09:10:50.000000000 +0000 @@ -15,3 +15,6 @@ REM Optional variables REM SET L_BOOST_DIR=C:\Data\Develop\libhdrStuff + +REM should the Luminance git repo be updated (defaulting to true for read-only git download) +SET UPDATE_REPO_LUMINANCE=1 \ No newline at end of file diff -Nru luminance-2.2.1/Changelog luminance-2.3.0/Changelog --- luminance-2.2.1/Changelog 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/Changelog 2012-07-01 09:10:50.000000000 +0000 @@ -1,3 +1,20 @@ +Changes 2.3.0 +* New Fattal02 solver based on FFT (thanks to Tino Kluge) +* Port of color management system to LCMS2 +* Improved fit between saved files and preview +* UI improvements (tonemapping warning dialog) +* Update translations +* Bug fixes + + +Changes 2.3.0-beta1 +* NEW: colour management system +The new colour management system allows to load colour profile for screen and printer so that users can double-check the final quality of their HDR images before being saved to JPEG or PNG. +* Windows: new task bar progress report +* Improved load/save of calculated profile for the merge operator +* Improved JPG, PNG and TIFF reader and writer +* + Changes 2.2.1 * NEW: splitted executable luminance-hdr-cli for commandline mode * NEW: Windows Installer optionally registers file associations @@ -17,7 +34,7 @@ * NEW: Speed improvement due to OpenMP * More speed improvements: tone-mapping (Mantiuk 06/08, Fattal, Reinhard) * NEW: image viewers with improved crop/selection tool -* Improvement and optimized level and gamma control (new histogram) +* Improvement and optimised level and gamma control (new histogram) * Improved UI: Tonemapping Panel, Preference Dialog and Mainwindow * Revert HDR merge algorithms to Qtpfsgui 1.8.12 * Supporting better portrait HDRs @@ -330,4 +347,4 @@ * Compilable both in linux and in windows with mingw. * supported hdr formats in windows are only: HDR(rgbe) and PFS. Linux also supports OpenEXR. Still problems compiling OpenEXR in windows with MinGW, seems like no one has ever done it... :( - Also, OpenEXR is compilable with Cygwin, but Qt (qmake and everything) doesn't work with cygwin. \ No newline at end of file + Also, OpenEXR is compilable with Cygwin, but Qt (qmake and everything) doesn't work with cygwin. diff -Nru luminance-2.2.1/cmake/Findfftwf.cmake luminance-2.3.0/cmake/Findfftwf.cmake --- luminance-2.2.1/cmake/Findfftwf.cmake 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/cmake/Findfftwf.cmake 2012-07-01 09:10:50.000000000 +0000 @@ -3,40 +3,41 @@ # FFTWF_FOUND = true if FFTW3 is found IF(FFTWF_INCLUDE_DIRS) - FIND_PATH(FFTWF_INCLUDE_DIR fftw3.h ${FFTWF_INCLUDE_DIRS}) + FIND_PATH(FFTWF_INCLUDE_DIR fftw3.h ${FFTWF_INCLUDE_DIRS}) FIND_LIBRARY(FFTWF_LIBRARY fftw3f ${FFTWF_LIBRARY_DIRS}) + FIND_LIBRARY(FFTWF_THREADS_LIBRARY fftw3f_threads ${FFTWF_LIBRARY_DIRS}) ELSE(FFTWF_INCLUDE_DIRS) - # SET(TRIAL_PATHS - # $ENV{FFTWF_HOME}/include - # /usr/include - # /usr/local/include - # /opt/include - # /usr/apps/include - # ) - # - # SET(TRIAL_LIBRARY_PATHS - # $ENV{FFTWF_HOME}/lib - # /usr/lib - # /usr/local/lib - # /opt/lib - # /sw/lib - # ) - # - # FIND_PATH(FFTWF_INCLUDE_DIR fftw3.h ${TRIAL_PATHS}) - # FIND_LIBRARY(FFTWF_LIBRARY fftw3 ${TRIAL_LIBRARY_PATHS}) - FIND_PATH(FFTWF_INCLUDE_DIR fftw3.h ${QMC_INCLUDE_PATHS}) - FIND_LIBRARY(FFTWF_LIBRARIES fftw3f ${QMC_LIBRARY_PATHS}) - + SET(TRIAL_PATHS + $ENV{FFTWF_HOME}/include + /usr/include + /usr/local/include + /opt/include + /usr/apps/include + ) + + SET(TRIAL_LIBRARY_PATHS + $ENV{FFTWF_HOME}/lib + /usr/lib + /usr/local/lib + /opt/lib + /sw/lib + ) + + FIND_PATH(FFTWF_INCLUDE_DIR fftw3.h ${TRIAL_PATHS}) + FIND_LIBRARY(FFTWF_LIBRARIES fftw3f ${TRIAL_LIBRARY_PATHS}) + FIND_LIBRARY(FFTWF_THREADS_LIBRARIES fftw3f_threads ${TRIAL_LIBRARY_PATHS}) ENDIF(FFTWF_INCLUDE_DIRS) -IF(FFTWF_INCLUDE_DIR AND FFTWF_LIBRARIES) +IF(FFTWF_INCLUDE_DIR AND FFTWF_LIBRARIES AND FFTWF_THREADS_LIBRARIES) SET(FFTWF_FOUND TRUE) ELSE() SET(FFTWF_FOUND FALSE) ENDIF() IF(FFTWF_FOUND) + SET(FFTWF_LIBRARIES ${FFTWF_LIBRARIES} ${FFTWF_THREADS_LIBRARIES}) + MESSAGE(STATUS "Found FFTW3F (FFTWF_INCLUDE_DIR = ${FFTWF_INCLUDE_DIR})") MESSAGE(STATUS "Found FFTW3F (FFTWF_LIBRARIES = ${FFTWF_LIBRARIES})") ELSE() diff -Nru luminance-2.2.1/cmake/FindGit.cmake luminance-2.3.0/cmake/FindGit.cmake --- luminance-2.2.1/cmake/FindGit.cmake 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/cmake/FindGit.cmake 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,5 @@ +FIND_PROGRAM(GIT_EXECUTABLE git /usr/bin /usr/local/bin) + +IF (EXISTS ${GIT_EXECUTABLE}) + SET(GIT_FOUND 1) +ENDIF() diff -Nru luminance-2.2.1/cmake/Findlcms2.cmake luminance-2.3.0/cmake/Findlcms2.cmake --- luminance-2.2.1/cmake/Findlcms2.cmake 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/cmake/Findlcms2.cmake 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,27 @@ +FIND_PATH(LCMS2_INCLUDE_DIR lcms2.h + /usr/local/include + /usr/include + /opt/local/include +) + +SET(LCMS2_NAMES ${LCMS2_NAMES} lcms2) +FIND_LIBRARY(LCMS2_LIBRARY NAMES ${LCMS2_NAMES} ) + +# handle the QUIETLY and REQUIRED arguments and set LCMS2_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(LCMS2 DEFAULT_MSG LCMS2_LIBRARY LCMS2_INCLUDE_DIR) + +IF(LCMS2_FOUND) + SET( LCMS2_LIBRARIES ${LCMS2_LIBRARY} ) + IF(NOT LCMS2_FIND_QUIETLY) + MESSAGE(STATUS "Found LCMS2 (LCMS2_LIBRARIES = ${LCMS2_LIBRARIES})") + MESSAGE(STATUS "Found LCMS2 (LCMS2_INCLUDE_DIR = ${LCMS2_INCLUDE_DIR})") + ENDIF(NOT LCMS2_FIND_QUIETLY) +ELSE(LCMS2_FOUND) + IF(LCMS2_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Could not find LCMS2") + ENDIF(LCMS2_FIND_REQUIRED) +ENDIF(LCMS2_FOUND) + +MARK_AS_ADVANCED(LCMS2_INCLUDE_DIR LCMS2_LIBRARY) diff -Nru luminance-2.2.1/cmake/Findlibjpeg.cmake luminance-2.3.0/cmake/Findlibjpeg.cmake --- luminance-2.2.1/cmake/Findlibjpeg.cmake 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/cmake/Findlibjpeg.cmake 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,30 @@ +FIND_PATH(JPEGLIB_INCLUDE_DIR jpeglib.h + /usr/local/include + /usr/include + /opt/local/include +) + +SET(JPEGLIB_NAMES ${JPEGLIB_NAMES} jpeg) +FIND_LIBRARY(JPEGLIB_LIBRARY NAMES ${JPEGLIB_NAMES} ) + +# handle the QUIETLY and REQUIRED arguments and set JPEGLIB_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(JPEGLIB DEFAULT_MSG JPEGLIB_LIBRARY JPEGLIB_INCLUDE_DIR) + +IF(JPEGLIB_FOUND) + SET( JPEGLIB_LIBRARIES ${JPEGLIB_LIBRARY} ) + IF(NOT JPEGLIB_FIND_QUIETLY) + MESSAGE(STATUS "Found jpeglib (JPEGLIB_LIBRARIES = ${JPEGLIB_LIBRARIES})") + MESSAGE(STATUS "Found jpeglib (JPEGLIB_INCLUDE_DIR = ${JPEGLIB_INCLUDE_DIR})") + ENDIF(NOT JPEGLIB_FIND_QUIETLY) +ELSE(JPEGLIB_FOUND) + IF(JPEGLIB_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Could not find jpeglib") + ENDIF(JPEGLIB_FIND_REQUIRED) +ENDIF(JPEGLIB_FOUND) + + + +MARK_AS_ADVANCED(JPEGLIB_INCLUDE_DIR JPEGLIB_LIBRARY) + diff -Nru luminance-2.2.1/cmake/Findlibpng.cmake luminance-2.3.0/cmake/Findlibpng.cmake --- luminance-2.2.1/cmake/Findlibpng.cmake 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/cmake/Findlibpng.cmake 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,30 @@ +FIND_PATH(LIBPNG_INCLUDE_DIR png.h + /usr/local/include + /usr/include + /opt/local/include +) + +SET(LIBPNG_NAMES ${LIBPNG_NAMES} png) +FIND_LIBRARY(LIBPNG_LIBRARY NAMES ${LIBPNG_NAMES} ) + +# handle the QUIETLY and REQUIRED arguments and set LIBPNG_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBPNG DEFAULT_MSG LIBPNG_LIBRARY LIBPNG_INCLUDE_DIR) + +IF(LIBPNG_FOUND) + SET( LIBPNG_LIBRARIES ${LIBPNG_LIBRARY} ) + IF(NOT LIBPNG_FIND_QUIETLY) + MESSAGE(STATUS "Found libpng (LIBPNG_LIBRARIES = ${LIBPNG_LIBRARIES})") + MESSAGE(STATUS "Found libpng (LIBPNG_INCLUDE_DIR = ${LIBPNG_INCLUDE_DIR})") + ENDIF(NOT LIBPNG_FIND_QUIETLY) +ELSE(LIBPNG_FOUND) + IF(LIBPNG_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Could not find libpng") + ENDIF(LIBPNG_FIND_REQUIRED) +ENDIF(LIBPNG_FOUND) + + + +MARK_AS_ADVANCED(LIBPNG_INCLUDE_DIR LIBPNG_LIBRARY) + diff -Nru luminance-2.2.1/cmake/FindLibRAW.cmake luminance-2.3.0/cmake/FindLibRAW.cmake --- luminance-2.2.1/cmake/FindLibRAW.cmake 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/cmake/FindLibRAW.cmake 2012-07-01 09:10:50.000000000 +0000 @@ -25,4 +25,4 @@ MESSAGE(FATAL_ERROR "Could not find LibRAW") ENDIF(LIBRAW_FOUND) -MARK_AS_ADVANCED(LIBRAW_INCLUDE_DIR LIBRAW_LIBRARY) \ No newline at end of file +MARK_AS_ADVANCED(LIBRAW_INCLUDE_DIR LIBRAW_LIBRARIES) diff -Nru luminance-2.2.1/CMakeGlobal.txt luminance-2.3.0/CMakeGlobal.txt --- luminance-2.2.1/CMakeGlobal.txt 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/CMakeGlobal.txt 2012-07-01 09:10:50.000000000 +0000 @@ -11,6 +11,7 @@ #ADD_DEFINITIONS(-DPREFIX=${CMAKE_INSTALL_PREFIX}) #ADD_DEFINITIONS(-DI18NDIR="${CMAKE_INSTALL_PREFIX}/share/luminance-hdr/i18n") SET(I18NDIR "\"${CMAKE_INSTALL_PREFIX}/share/luminance-hdr/i18n\"") +SET(HELPDIR "\"${CMAKE_INSTALL_PREFIX}/share/luminance-hdr/help\"") ELSEIF(WIN32) #ADD_DEFINITIONS(-DI18NDIR=QCoreApplication::applicationDirPath\(\)+"/i18n") SET(I18NDIR QCoreApplication::applicationDirPath\(\)+"/i18n") diff -Nru luminance-2.2.1/CMakeLists.txt luminance-2.3.0/CMakeLists.txt --- luminance-2.2.1/CMakeLists.txt 2012-03-11 22:57:25.000000000 +0000 +++ luminance-2.3.0/CMakeLists.txt 2012-07-01 09:10:50.000000000 +0000 @@ -8,10 +8,12 @@ INCLUDE(CMakeGlobal.txt) IF(NOT CMAKE_BUILD_TYPE) - SET( CMAKE_BUILD_TYPE "RelWithDebInfo" ) + SET(CMAKE_BUILD_TYPE "RelWithDebInfo" ) ENDIF() -IF(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "MinSizeRel") +# MESSAGE(${CMAKE_BUILD_TYPE}) + +IF(${CMAKE_BUILD_TYPE} STREQUAL "Release" OR ${CMAKE_BUILD_TYPE} STREQUAL "MinSizeRel") ADD_DEFINITIONS("-DQT_NO_DEBUG_OUTPUT") ENDIF() @@ -37,7 +39,6 @@ FIND_PACKAGE(Git) #FIND_PACKAGE(Git QUIET) IF(NOT GIT_FOUND) - message(STATUS "Git not found") FIND_FILE(GIT_EXECUTABLE git.exe $ENV{CYGWIN_DIR}\\bin $ENV{CYGWIN_DIR} @@ -45,21 +46,19 @@ IF (EXISTS ${GIT_EXECUTABLE}) SET(GIT_FOUND 1) ENDIF() - FIND_FILE(GIT_EXE git - $ENV{/usr/bin} - ) - IF (EXISTS ${GIT_EXE}) - SET(GIT_FOUND 1) - ENDIF() ENDIF() IF(GIT_FOUND) include(GetGitRevisionDescription) get_git_head_revision(GIT_REFSPEC GIT_SHA1) + message(STATUS "Git found") +ELSE() + message(STATUS "Git not found") ENDIF() IF(WIN32) -# Windows Section + # Windows Section + SET(OPENEXR_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/../DEPs/include/OpenEXR") SET(TIFF_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/../DEPs/include/libtiff") SET(LIBRAW_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/../DEPs/include/libraw") @@ -67,55 +66,45 @@ SET(GSL_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/../DEPs/include/gsl") SET(GSLCBLAS_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/../DEPs/include/gsl") SET(EXIV2_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/../DEPs/include/exiv2") - - IF(MSVC) - # Enable multi processor compilation - ADD_DEFINITIONS(/MP) - - # Full optimization - # Davide: Don't add it by default, let CMake choose the right compilation settings based on CMake profile (Debug, Release, ...) - #ADD_DEFINITIONS(/Ox) - - # Enable OpenMP - # Davide: Line 150: inclusion of OpenMP, can you check if that works? If it does, you don't need this line - #ADD_DEFINITIONS(/openmp) - - # Enable SSE2 - # Davide: is it necessary? - ADD_DEFINITIONS(/arch:SSE2) - - ADD_DEFINITIONS(-DUNICODE ) - ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS -DOPENEXR_DLL -D_REENTRANT) - SET(FFTWF_LIBRARIES "${CMAKE_SOURCE_DIR}/../DEPs/lib/fftw3/libfftw3f-3.lib") - ADD_DEFINITIONS(-DHAVE_FFTW3F) - - SET(OPENEXR_LIBRARIES "${CMAKE_SOURCE_DIR}/../DEPs/lib/OpenEXR/Half.lib") - SET(OPENEXR_LIBRARIES ${OPENEXR_LIBRARIES} "${CMAKE_SOURCE_DIR}/../DEPs/lib/OpenEXR/Iex.lib") - SET(OPENEXR_LIBRARIES ${OPENEXR_LIBRARIES} "${CMAKE_SOURCE_DIR}/../DEPs/lib/OpenEXR/IlmImf.lib") - - SET(TIFF_LIBRARIES "${CMAKE_SOURCE_DIR}/../DEPs/lib/libtiff/libtiff.lib") - - SET(LIBRAW_LIBRARIES "${CMAKE_SOURCE_DIR}/../DEPs/lib/libraw/libraw.lib") - - SET(GSL_LIBRARIES "${CMAKE_SOURCE_DIR}/../DEPs/lib/gsl/gsl.lib") - SET(GSLCBLAS_LIBRARIES "${CMAKE_SOURCE_DIR}/../DEPs/lib/gsl/cblas.lib") - - SET(EXIV2_LIBRARIES "${CMAKE_SOURCE_DIR}/../DEPs/lib/exiv2/exiv2.lib") - ELSE() - SET(OPENEXR_LIBRARIES "-lIlmImf.dll -lHalf.dll -lIex.dll -L${CMAKE_SOURCE_DIR}/../DEPs/lib/OpenEXR") - - SET(TIFF_LIBRARIES "-L../DEPs/lib/libtiff -ltiff") - - SET(LIBRAW_LIBRARIES "-L../DEPs/lib/libraw -lraw_r -lws2_32 -lm") - ADD_DEFINITIONS(-DLIBRAW_NODLL -D_REENTRANT) - - SET(FFTWF_LIBRARIES "-L${CMAKE_SOURCE_DIR}/../DEPs/lib/fftw3 -lfftw3f-3 -lm") - - SET(GSL_LIBRARIES "-L${CMAKE_SOURCE_DIR}/../DEPs/lib/gsl -lgsl") - SET(GSLCBLAS_LIBRARIES "-L${CMAKE_SOURCE_DIR}/../DEPs/lib/gsl -lgslcblas") - - SET(EXIV2_LIBRARIES "-lexiv2 -L${CMAKE_SOURCE_DIR}/../DEPs/lib/exiv2") - ENDIF() + SET(LCMS2_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/../DEPs/include/lcms2") + SET(JPEGLIB_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/../DEPs/include/libjpeg") + SET(LIBPNG_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/../DEPs/include/libpng") + + # Enable multi processor compilation + ADD_DEFINITIONS(/MP) + + # Enable SSE2 + ADD_DEFINITIONS(/arch:SSE2) + + # Don't "Treat WChar_t As Build in Type", in order to be able to use Qts (from|to)StdWString functions + ADD_DEFINITIONS(/Zc:wchar_t-) + + ADD_DEFINITIONS(-DUNICODE ) + ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS -DOPENEXR_DLL -D_REENTRANT) + SET(FFTWF_LIBRARIES "${CMAKE_SOURCE_DIR}/../DEPs/lib/fftw3/libfftw3f-3.lib") + ADD_DEFINITIONS(-DHAVE_FFTW3F) + + SET(OPENEXR_LIBRARIES "${CMAKE_SOURCE_DIR}/../DEPs/lib/OpenEXR/Half.lib") + SET(OPENEXR_LIBRARIES ${OPENEXR_LIBRARIES} "${CMAKE_SOURCE_DIR}/../DEPs/lib/OpenEXR/Iex.lib") + SET(OPENEXR_LIBRARIES ${OPENEXR_LIBRARIES} "${CMAKE_SOURCE_DIR}/../DEPs/lib/OpenEXR/IlmImf.lib") + + SET(TIFF_LIBRARIES "${CMAKE_SOURCE_DIR}/../DEPs/lib/libtiff/libtiff.lib") + + SET(LIBRAW_LIBRARIES "${CMAKE_SOURCE_DIR}/../DEPs/lib/libraw/libraw.lib") + + SET(GSL_LIBRARIES "${CMAKE_SOURCE_DIR}/../DEPs/lib/gsl/gsl.lib") + SET(GSLCBLAS_LIBRARIES "${CMAKE_SOURCE_DIR}/../DEPs/lib/gsl/cblas.lib") + + SET(EXIV2_LIBRARIES "${CMAKE_SOURCE_DIR}/../DEPs/lib/exiv2/exiv2.lib") + #SET(LCMS2_LIBRARIES "${CMAKE_SOURCE_DIR}/../DEPs/lib/lcms2/lcms2.lib") + #SET(LCMS_LIBRARIES "${CMAKE_SOURCE_DIR}/../DEPs/lib/lcms2/lcms.lib") + SET(LCMS2_LIBRARIES "${CMAKE_SOURCE_DIR}/../DEPs/lib/lcms2/lcms2_dll.lib") + #ADD_DEFINITIONS(-DLCMS_DLL) + ADD_DEFINITIONS(-DCMS_DLL) + ADD_DEFINITIONS(-DUSE_LCMS2) + + SET(LIBPNG_LIBRARIES "${CMAKE_SOURCE_DIR}/../DEPs/lib/libpng/libpng.lib") + ELSE() # Unix & Apple part @@ -125,6 +114,9 @@ FIND_PACKAGE(fftwf REQUIRED) FIND_PACKAGE(GSL REQUIRED) FIND_PACKAGE(exiv2 REQUIRED) + FIND_PACKAGE(libjpeg REQUIRED) + FIND_PACKAGE(lcms2 REQUIRED) + FIND_PACKAGE(libpng REQUIRED) ENDIF() @@ -148,6 +140,15 @@ SET(INCLUDE_DIRS ${INCLUDE_DIRS} ${EXIV2_INCLUDE_DIR} "${EXIV2_INCLUDE_DIR}/exiv2") SET(LIBS ${LIBS} ${EXIV2_LIBRARIES}) +SET(INCLUDE_DIRS ${INCLUDE_DIRS} ${JPEGLIB_INCLUDE_DIR}) +SET(LIBS ${LIBS} ${JPEGLIB_LIBRARIES}) + +SET(INCLUDE_DIRS ${INCLUDE_DIRS} ${LCMS2_INCLUDE_DIR}) +SET(LIBS ${LIBS} ${LCMS2_LIBRARIES}) + +SET(INCLUDE_DIRS ${INCLUDE_DIRS} ${LIBPNG_INCLUDE_DIR}) +SET(LIBS ${LIBS} ${LIBPNG_LIBRARIES}) + #OpenMP Support under Linux, Windows with MSVC & MacOS X with GCC >= 4.3 IF(MSVC) FIND_PACKAGE(OpenMP REQUIRED) @@ -213,12 +214,17 @@ # Apple Mac OS X IF(APPLE) + FILE(GLOB LUMINANCE_QT_QM i18n-qt/*.qm) # ${QT_TRANSLATIONS_DIR}/qt_*.qm) + SET(LUMINANCE_FILES ${LUMINANCE_FILES} ${LUMINANCE_QT_QM}) + # icon files to copy in the bundle SET( OSX_ICON_FILES "${CMAKE_SOURCE_DIR}/images/luminance.icns") # set where in the bundle to put the icns files SET_SOURCE_FILES_PROPERTIES(${OSX_ICON_FILES} PROPERTIES MACOSX_PACKAGE_LOCATION Resources) # set where in the bundle to put the translation files SET_SOURCE_FILES_PROPERTIES(${LUMINANCE_QM} PROPERTIES MACOSX_PACKAGE_LOCATION Resources/i18n) + SET_SOURCE_FILES_PROPERTIES(${LUMINANCE_QT_QM} PROPERTIES MACOSX_PACKAGE_LOCATION Resources/i18n) + # include the icns files in the target SET(LUMINANCE_FILES ${LUMINANCE_FILES} ${OSX_ICON_FILES}) @@ -235,6 +241,8 @@ SET_TARGET_PROPERTIES(luminance-hdr PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${CMAKE_SOURCE_DIR}/build/macosx/Info.plist") # Unix ELSEIF(UNIX) + FILE(GLOB LUMINANCE_QT_QM i18n-qt/*.qm) + SET(LUMINANCE_FILES ${LUMINANCE_FILES} ${LUMINANCE_QT_QM}) ADD_EXECUTABLE(luminance-hdr ${LUMINANCE_FILES}) ADD_EXECUTABLE(luminance-hdr-cli ${LUMINANCE_FILES}) @@ -243,6 +251,8 @@ INSTALL(TARGETS luminance-hdr RUNTIME DESTINATION bin) # main GUI exec INSTALL(TARGETS luminance-hdr-cli RUNTIME DESTINATION bin) # main CLI exec INSTALL(FILES ${LUMINANCE_QM} DESTINATION share/luminance-hdr/i18n) # i18n + INSTALL(FILES ${LUMINANCE_QT_QM} DESTINATION share/luminance-hdr/i18n) # i18n + INSTALL(FILES ${CMAKE_SOURCE_DIR}/images/luminance-hdr.png DESTINATION share/icons/hicolor/48x48/apps) # icon INSTALL(FILES ${CMAKE_SOURCE_DIR}/luminance-hdr.desktop DESTINATION share/applications) #desktop entry INSTALL(FILES diff -Nru luminance-2.2.1/debian/changelog luminance-2.3.0/debian/changelog --- luminance-2.2.1/debian/changelog 2012-04-11 04:24:38.000000000 +0000 +++ luminance-2.3.0/debian/changelog 2012-07-06 18:23:03.000000000 +0000 @@ -1,3 +1,20 @@ +luminance (2.3.0-1dhor~precise) precise; urgency=low + + * New Fattal02 solver based on FFT (thanks to Tino Kluge) + * Port of color management system to LCMS2 + * Improved fit between saved files and preview + * UI improvements (tonemapping warning dialog) + * Update translations + * Bug fixes + * NEW: colour management system - the new colour management system allows to + load colour profile for screen and printer so that users can double-check + the final quality of their HDR images before being saved to JPEG or PNG + * Windows: new task bar progress report + * Improved load/save of calculated profile for the merge operator + * Improved JPG, PNG and TIFF reader and writer + + -- Dariusz Duma Fri, 06 Jul 2012 20:21:27 +0200 + luminance (2.2.1-1dhor~precise) precise; urgency=low * NEW: splitted executable luminance-hdr-cli for commandline mode diff -Nru luminance-2.2.1/debian/control luminance-2.3.0/debian/control --- luminance-2.2.1/debian/control 2012-03-25 09:57:05.000000000 +0000 +++ luminance-2.3.0/debian/control 2012-07-06 18:33:51.000000000 +0000 @@ -2,7 +2,7 @@ Section: graphics Priority: extra Maintainer: Dariusz Duma -Build-Depends: debhelper (>= 7.0.50~), cmake, libqt4-dev, libqt4-webkit, qt4-qmake, libexiv2-dev, libopenexr-dev, libfftw3-dev, libtiff4-dev, libraw-dev, qt4-dev-tools, libgsl0-dev, libqtwebkit-dev +Build-Depends: debhelper (>= 7.0.50~), cmake, libqt4-dev, libqt4-webkit, qt4-qmake, libexiv2-dev, libopenexr-dev, libfftw3-dev, libtiff4-dev, libraw-dev, qt4-dev-tools, libgsl0-dev, libqtwebkit-dev, libpng12-dev Standards-Version: 3.8.4 Homepage: http://qtpfsgui.sourceforge.net/ #Vcs-Git: git://git.debian.org/collab-maint/luminance.git diff -Nru luminance-2.2.1/help/en/basics.html luminance-2.3.0/help/en/basics.html --- luminance-2.2.1/help/en/basics.html 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/help/en/basics.html 2012-07-01 09:10:50.000000000 +0000 @@ -17,7 +17,7 @@
LDR
Stands for "Low Dynamic Range". The most common image formats, such as JPEG, PNG, GIF, ... have 8 bits per color channel, LDR is just another umbrella definition.
Tone mapping
-
A method of converting an HDR image into a LDR image. Various algorithms exist for this purpose, and in this context they are also known as "tone mapping operators", or in this manual simply as "operators". You can choose an operator fron a list in the top of tone mapping options sidebar.
+
A method of converting an HDR image into a LDR image. Various algorithms exist for this purpose, and in this context they are also known as "tone mapping operators", or in this manual simply as "operators". You can choose an operator from a list in the top of tone mapping options sidebar.
TMO
Shorthand for "Tone Mapping Operator".
Raw
diff -Nru luminance-2.2.1/help/en/color_management.html luminance-2.3.0/help/en/color_management.html --- luminance-2.2.1/help/en/color_management.html 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/help/en/color_management.html 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,21 @@ + + + + +Luminance HDR User Manual - Color Management + + + + +Luminance HDR has the ability to read the color profile embedded in your RAW or JPEG files, convert the colors to the internal sRGB color space for processing with the program, use the provided monitor profile to show the result in your monitor, do soft proof and gamut check using the printer profile provided. +To begin with the color management support in Luminance HDR click on Tools->Preferences then select Color Management. +Select a profile for the monitor, printer and camera (or set the option to Built-in to use the embedded profile). +After tonemapping an HDR, the resulting image is displayed on the monitor with the proper colors, you can then click on the Soft Proofing button on the toolbar to see how the image will appear once printed on your printer. Clicking on the Gamut Check button will show in blue the colors that are out of gamut, that is cannot be reproduced by your printer. +If you choose to save the LDR in TIFF or JPEG format the standard sRGB profile is automatically embedded to the file for further processing with another color managed application. +
+
+
+ + + + \ No newline at end of file diff -Nru luminance-2.2.1/help/en/features.html luminance-2.3.0/help/en/features.html --- luminance-2.2.1/help/en/features.html 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/help/en/features.html 2012-07-01 09:10:50.000000000 +0000 @@ -27,6 +27,7 @@
  • Russian
  • Spanish (outdated)
  • Turkish (outdated)
  • +
  • Romanian
  • If your language is not supported or localization is incomplete or outdated @@ -52,7 +53,7 @@

    Binary files /tmp/OixCUJjOIG/luminance-2.2.1/help/en/images/batch-hdr.png and /tmp/waD_RZYqTx/luminance-2.3.0/help/en/images/batch-hdr.png differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/help/en/images/batch-tmo.png and /tmp/waD_RZYqTx/luminance-2.3.0/help/en/images/batch-tmo.png differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/help/en/images/color_management.png and /tmp/waD_RZYqTx/luminance-2.3.0/help/en/images/color_management.png differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/help/en/images/cropping_frame.png and /tmp/waD_RZYqTx/luminance-2.3.0/help/en/images/cropping_frame.png differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/help/en/images/mainwin.png and /tmp/waD_RZYqTx/luminance-2.3.0/help/en/images/mainwin.png differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/help/en/images/preferences.png and /tmp/waD_RZYqTx/luminance-2.3.0/help/en/images/preferences.png differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/help/en/images/prefs-cms.png and /tmp/waD_RZYqTx/luminance-2.3.0/help/en/images/prefs-cms.png differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/help/en/images/prefs-ext.png and /tmp/waD_RZYqTx/luminance-2.3.0/help/en/images/prefs-ext.png differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/help/en/images/prefs-hdr.png and /tmp/waD_RZYqTx/luminance-2.3.0/help/en/images/prefs-hdr.png differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/help/en/images/prefs-raw.png and /tmp/waD_RZYqTx/luminance-2.3.0/help/en/images/prefs-raw.png differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/help/en/images/prefs-tm.png and /tmp/waD_RZYqTx/luminance-2.3.0/help/en/images/prefs-tm.png differ diff -Nru luminance-2.2.1/help/en/menu.xml luminance-2.3.0/help/en/menu.xml --- luminance-2.2.1/help/en/menu.xml 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/help/en/menu.xml 2012-07-01 09:10:50.000000000 +0000 @@ -24,7 +24,10 @@ - + + + + @@ -41,6 +44,7 @@ + diff -Nru luminance-2.2.1/help/en/news.html luminance-2.3.0/help/en/news.html --- luminance-2.2.1/help/en/news.html 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/help/en/news.html 2012-07-01 09:10:50.000000000 +0000 @@ -12,28 +12,24 @@

    The version you are looking at contains a number of improvements over the previous one, such as:

    -
      -
    • New SDI interface
    • -
    • LibRaw for handling RAW images and a nice tool to configure its settings
    • -
    • It is now possible to select the output image size for batch processing
    • -
    • Centralized database to save tonemapping parameters with the possibility to add a short comment to each set of parameters
    • -
    • It is now possible to add and remove images before processing them in HDR Wizard
    • -
    • New Preview Panel. It shows small preview images for each operator based on the currently open image
    • +
        +
      • Color Management Support (read/write ICC profiles, soft proofing, gamut check)
      • +
      • Selection of output image size and quality in Batch TM
      • +
      • Fixed memory leak in Batch HDR
      • +
      • Fattal and Reinhard02 now thread safe (speed improvement with multicore processors)
      • +
      • Windows: Better OS Integration
      • Other small impovements and bugfixing as usual
      • -
      -

      Previous release features:

      +
    +

    Previous release features and fixes:

      -
    • Qtpfsgui is finally renamed to Luminance HDR;
    • -
    • HDR images can now be cropped (to a new HDR image);
    • -
    • original HDR image can be displayed in tonemapping dialog;
    • -
    • thus tonemapping of selection is possible now;
    • -
    • view of Tonemapped LDR images can now be locked to sync navigation;
    • -
    • new tonemapping operator, Mantiuk'08, was added;
    • -
    • active tone mapping processes dialog;
    • -
    • you can undo and redo changes in TM operator settings (full actions history system still not implemented);
    • -
    • new help browser (taken from Scribus/Fontmatrix) and new localizable documentation;
    • -
    • new progress vizualization
    • +
    • Splitted executable luminance-hdr-cli for commandline mode
    • +
    • Aborting batch HDR creation and batch tonemapping is now possible
    • +
    • Speed improvements in Reinhard05
    • +
    • Language change without restarting application
    • +
    • Corrected detection of exif rotation
    • +
    • Windows: TIFF support now works correctly
    • +
    • Windows: fixed some align_image_stack and temp dir problems

    Due to lack of active developers please don't expect much other than cleanups and documentation updates in the coming releases.

    diff -Nru luminance-2.2.1/help/en/prefs_cms.html luminance-2.3.0/help/en/prefs_cms.html --- luminance-2.2.1/help/en/prefs_cms.html 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/help/en/prefs_cms.html 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,23 @@ + + + + +Luminance HDR User Manual — Setting up Luminance HDR — Color Management + + + + +

    Monitor Profile

    + Select a color profile associated with your monitor from file. You can find the icc profile in the CD supplied with the monitor or you can download it from the vendor website. +

    Camera Profile

    + Select a color profile for your camera make and model. Chose None if your camera does not have a profile (sRGB is used as default), Built in to use the profile embedded in your image files, Custom to select a color profile from file. +

    Printer Profile

    + Select a color profile for your printer from file. As for the monitor you should be able to find the icc profile in the CD provided or you can download it from the vendor website. +
    +
    +
    +
    +
    +
    + + diff -Nru luminance-2.2.1/help/en/prefs_hdr.html luminance-2.3.0/help/en/prefs_hdr.html --- luminance-2.2.1/help/en/prefs_hdr.html 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/help/en/prefs_hdr.html 2012-07-01 09:10:50.000000000 +0000 @@ -17,7 +17,13 @@

    HDR Visualization

    -

    Click on the buttons to pop-up a window that lets you choose which color to use for the nan/inf and for the negative values.

    +

    Click on the buttons to pop-up a window that lets you choose which color to use for the nan/inf and for the negative values. +
    +
    +
    +
    +
    +

    diff -Nru luminance-2.2.1/help/en/prefs.html luminance-2.3.0/help/en/prefs.html --- luminance-2.2.1/help/en/prefs.html 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/help/en/prefs.html 2012-07-01 09:10:50.000000000 +0000 @@ -9,7 +9,9 @@

    Setting up

    -

    You can configure behaviour of Luminance HDR using Preferences dialog available via Tools > Preferences... menu item. +

    You can configure behaviour of Luminance HDR using Preferences dialog available via Tools > Preferences... menu item. +
    +


    Preferences Dialog
    diff -Nru luminance-2.2.1/help/en/prefs_rawconversion.html luminance-2.3.0/help/en/prefs_rawconversion.html --- luminance-2.2.1/help/en/prefs_rawconversion.html 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/help/en/prefs_rawconversion.html 2012-07-01 09:10:50.000000000 +0000 @@ -93,9 +93,17 @@

    Blue multiplier
    -Set here the magnification factor of the blue layer -

    -

    Color Management

    -

    Not yet implemented

    +Set here the magnification factor of the blue layer +
    +
    +
    +
    +

    +

    + +

    +

    + +

    diff -Nru luminance-2.2.1/help/en/prefs_tonemapping.html luminance-2.3.0/help/en/prefs_tonemapping.html --- luminance-2.2.1/help/en/prefs_tonemapping.html 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/help/en/prefs_tonemapping.html 2012-07-01 09:10:50.000000000 +0000 @@ -9,14 +9,20 @@

    Tone Mapping

    -

    Cache. Luminance HDR needs a directory to save temporary files to. By default home +

    Temporary Working Folder. Luminance HDR needs a directory to save temporary files to. By default home directory is used, but you can specify some other directory.

    You can also specify two options for Batch Tone Mapping feature:

    -

    File format for LDR images. This is the file format to which tonemapped LDR images will be saved to. JPEG, PNG, PPM, PBM and BMP are your options.

    +

    Batch Tonemapping Default Output Format. This is the file format to which tonemapped LDR images will be saved to. TIFF, JPEG, PNG, PPM, PBM and BMP are your options. +

    -

    Number of threads. How many threads you want to use. Each thread gets allocated to a different CPU or a core of a multicore CPU.

    +

    Batch Tonemapping Number of threads. How many threads you want to use. Each thread gets allocated to a different CPU or a core of a multicore CPU. +
    +
    +
    +
    +

    diff -Nru luminance-2.2.1/help/en/prefs_tools.html luminance-2.3.0/help/en/prefs_tools.html --- luminance-2.2.1/help/en/prefs_tools.html 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/help/en/prefs_tools.html 2012-07-01 09:10:50.000000000 +0000 @@ -38,7 +38,11 @@
    Verbose, print progress messages. Repeat for higher verbosity
    -

    By default Luminance HDR just defines prefix for aligned images: -a aligned_ and for verbose printing -v. +

    By default Luminance HDR just defines prefix for aligned images: -a aligned_ and for verbose printing -v. +
    +
    +
    +

    diff -Nru luminance-2.2.1/i18n/lang_cs.ts luminance-2.3.0/i18n/lang_cs.ts --- luminance-2.2.1/i18n/lang_cs.ts 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/i18n/lang_cs.ts 2012-07-01 09:10:50.000000000 +0000 @@ -63,7 +63,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:11pt; font-weight:400; font-style:normal;"> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#00007f;">Luminance HDR</span> — HDR imaging workflow application<br />(c) 2006-2009, Giuseppe Rota</p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010, 2011, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010-2012, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> @@ -86,7 +86,16 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:danielkaneider@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">danielkaneider@users.sourceforge.net</span></a></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; text-decoration: underline; color:#0000ff;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">pfs{tools|calibration|tmo} codebase</span><span style=" font-size:9pt;"><br /> Grzegorz Krawczyk<br /> </span><a href="mailto:krawczyk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">krawczyk@mpi-sb.mpg.de</span></a><span style=" font-size:9pt;"><br /> <br /> Rafal Mantiuk<br /> </span><a href="mailto:mantiuk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mantiuk@mpi-sb.mpg.de </span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-family:'Sans Serif'; font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Chinese translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Lei Zhao</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Slovakian translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Zuzana Cupkova</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Hindi translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Rohit Sharma</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> @@ -110,7 +119,7 @@ Choose one of the creation predefined profiles. -See documentation for more informations. +See documentation for more information. @@ -182,12 +191,8 @@ - Messages - - - Choose a directory - Vybrat adresář + Vybrat adresář Started processing... @@ -238,14 +243,6 @@ - Select &Input Folder - - - - Select &Output Folder - - - &Cancel &Storno @@ -261,6 +258,48 @@ Aborting... Přerušuji... + + Warning + + + + Total number of pictures must be a multiple of number of bracketed images. + + + + Output + Výstup + + + Progress + + + + Select... + + + + Input folder: + + + + Output folder: + + + + Choose a source directory + + + + Choose a output directory + + + + The chosen output directory contains HDR files. Those files might be overwritten. + +Continue? + + BatchTMDialog @@ -270,27 +309,27 @@ Add all the HDRs in a directory to the list - Přidat do seznamu všechny HDR v adresáři + Přidat do seznamu všechny HDR v adresáři Add &Directory - Přidat a&dresář + Přidat a&dresář Add single HDR files to the list - Přidat jeden HDR do seznamu + Přidat jeden HDR do seznamu &Add Files - &Přidat soubory + &Přidat soubory Remove single HDR files to the list - Odstranit jeden HDR ze seznamu + Odstranit jeden HDR ze seznamu &Remove Files - Odst&ranit soubory + Odst&ranit soubory List of HDRs that will be tone mapped @@ -298,27 +337,27 @@ Add all the Tone Mapping Setting files in a directory to the list - Přidat do seznamu všechny soubory nastavení přemapování z adresáře + Přidat do seznamu všechny soubory nastavení přemapování z adresáře Add D&irectory - Přidat a&dresář + Přidat a&dresář Add single Tone Mapping Setting files to the list - Přidat do seznamu jeden soubor nastavení přemapování + Přidat do seznamu jeden soubor nastavení přemapování Add Fi&les - Přidat &soubory + Přidat &soubory Remove single Tone Mapping Setting files to the list - Odstranit ze seznamu jeden soubor nastavení přemapování + Odstranit ze seznamu jeden soubor nastavení přemapování R&emove Files - O&dstranit soubory + O&dstranit soubory List of Tone Mapping Setting files that will be used to tone map each HDR @@ -334,7 +373,7 @@ Select &Output Folder... - Vybrat &výstupní adresář... + Vybrat &výstupní adresář... Batch operations report @@ -401,10 +440,6 @@ - Tone Mapping Settings Files - - - Conversion Log @@ -441,12 +476,96 @@ - Saving using file format: %1, (quality - if applicable): %2 + Aborting... + Přerušuji... + + + Tone Mapping Settings - Aborting... - Přerušuji... + % + + + + Output Image Quality + + + + Saving using file format: %1 + + + + Ouput Image Width: + + + + Output Folder: + + + + Selec&t... + + + + Add Directory (Alt+D) + + + + ... + + + + Alt+D + + + + Add Files (Alt+F) + + + + Alt+F + + + + Remove Files (Alt+R) + + + + Alt+R + + + + Add Directory (Alt+I) + + + + Alt+I + + + + Add Files (Alt+L) + + + + Alt+L + + + + Add from Database (Alt+B) + + + + Alt+B + + + + Remove Settings (Alt+M) + + + + Alt+M + @@ -519,7 +638,7 @@ CHYBA: Počet zadaných hodnot kroků EV se neshoduje s počtem vstupních souborů. - Error: Exif data missing in images and EV values not specifed on the commandline, bailing out. + Error: Exif data missing in images and EV values not specified on the commandline, bailing out. Chyba: V obrázcích chybí exif data a ani v příkazové řádce nejsou určeny hodnoty EV. @@ -695,6 +814,22 @@ Tonemapping requested, saving to file %1. + + Failed loading images + + + + Failed aligning images. + + + + Error: Quality must be in the range [0-100]. + + + + -q --quality VALUE Quality of the saved tone mapped file (0-100). + + DnDOption @@ -1032,6 +1167,10 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Pokud je vybrán stejný obrázek v sezamu editovatelných i referenčních obrázků, bude zde zobrazen pouze on.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Oblast výřezu lze vybrat kliknutím a tažením levým myšítkem.</p></body></html> + + Histogram + + GenericViewer @@ -1069,6 +1208,10 @@ ERROR: %1 + + ERROR loading %1 + + HdrViewer @@ -1515,6 +1658,10 @@ Weights: Váha: + + align_image_stack failed to align images. + + HelpBrowser @@ -2281,43 +2428,11 @@ - Next - - - - Next Image - - - - Show Next Image - - - - Ctrl+PgDown - - - - Previous - - - - Previous Image - - - - Show Previous Image - - - - Ctrl+PgUp - - - Lock Viewers - Syncronize viewers mode (fit, fill or 1:1). + Synchronize viewers mode (fit, fill or 1:1). @@ -2432,11 +2547,12 @@ Error: %1 - - - ParametersDialog - Saved Parameters + Soft Proofing + + + + Gamut Check @@ -2499,58 +2615,6 @@ - Czech - - - - English - - - - Finnish - - - - French - - - - German - - - - Indonesian - - - - Italian - - - - Polish - - - - Romanian - - - - Russian - - - - Spanish - - - - Turkish - - - - Hungarian - - - Always show Preview Panel @@ -2583,10 +2647,6 @@ - C&hoose - - - Which LDR image format to save to @@ -2877,159 +2937,128 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Camera Profile</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the input color space used to decode RAW data.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">None</span>: no input color profile is used during RAW decoding.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Embedded</span>: use embedded color profile from RAW file if exist.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom input color space profile.</p></body></html> - - - - None - - - - Built in +</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Read </span><span style=" font-family:'Sans Serif'; font-style:italic;">Help &gt; Contents &gt; Setting up Luminance &gt; External tools</span><span style=" font-family:'Sans Serif';"> to find out more about align_image_stack command line arguments</span></p></body></html> - Custom + Language - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Workspace</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the output color space used to decode RAW data.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Raw (linear)</span>: in this mode, no output color space is used during RAW decoding.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">sRGB</span>: this is a RGB color space, created cooperatively by Hewlett-Packard and Microsoft. It is the best choice for images destined for the Web and portrait photography.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Adobe RGB</span>: this color space is an extended RGB color space, developed by Adobe. It is used for photography applications such as advertising and fine art.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wide Gamut</span>: this color space is an expanded version of the Adobe RGB color space.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Pro-Photo</span>: this color space is an RGB color space, developed by Kodak, that offers an especially large gamut designed for use with photographic outputs in mind.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom output color space profile.</p></body></html> + Default Previews Width - RAW + px - sRGB + HDR TIFF Default File Format - Adobe RGB + Temporary Working Folder - Wide Gamut + Batch Tonemapping Default Output Format - Pro Photo + Batch Tonemapping Number of Threads - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Read </span><span style=" font-family:'Sans Serif'; font-style:italic;">Help &gt; Contents &gt; Setting up Luminance &gt; External tools</span><span style=" font-family:'Sans Serif';"> to find out more about align_image_stack command line arguments</span></p></body></html> + General - Language + Method - Default Previews Width + Temperature (Kelvin) - px + Green - HDR TIFF Default File Format + Highlights - Temporary Working Folder + Level - Batch Tonemapping Default Output Format - + Brightness + Jas<br>(Brightness) - Batch Tonemapping Number of Threads + Saturation - Batch Tonemapping Default Output Quality + NR and CA Correction - General + Red Component - Method + Blue Component - Temperature (Kelvin) + Camera profile - Green + align_image_stack command line arguments - Highlights + Color Management - Level + Monitor - Brightness - Jas<br>(Brightness) - - - Saturation + Monitor Profile - NR and CA Correction + Printer - Red Component + Printer profile - Blue Component + Open ICC Profile - Camera Profile + Color profile (*.icc) - Camera profile + &Browse... - Color Space + Browse... - align_image_stack command line arguments + Color profile (*.icc *.ICC *.icm *.ICM) @@ -3044,10 +3073,6 @@ Reinhard '05 - Form - - - Mantiuk '06 @@ -3075,6 +3100,10 @@ Pattanaik + + Preview + + ProjectionsDialog @@ -3240,6 +3269,46 @@ Successfully loaded file %1. + + Warning + + + + Error Opening RAW File + + + + Error Unpacking RAW File + + + + Error Processing RAW File + + + + Memory Error in processing RAW File + + + + Error Creating PFS Frame + + + + I cannot open monitor profile. Please select a different one. + + + + I cannot open printer profile. Please select a different one. + + + + Please select a printer profile . + + + + I cannot perform the color transform. Please select a different monitor profile. + + ResizeDialog @@ -3296,107 +3365,142 @@ SavedParameters Simple - Jednoduchý + Jednoduchý Local Contrast Threshold - Práh lokálního kontrastu<br>(Local Contrast Threshold) + Práh lokálního kontrastu<br>(Local Contrast Threshold) Bias - Síla<br>(Bias) + Síla<br>(Bias) Spatial Kernel Sigma - Prostorové zrno<br>(Spatial Kernel Sigma) + Prostorové zrno<br>(Spatial Kernel Sigma) Range Kernel Sigma - Rádius<br>(Range Kernel Sigma) + Rádius<br>(Range Kernel Sigma) Base Contrast - Základní kontrast<br>(Base Contrast) + Základní kontrast<br>(Base Contrast) Color Saturation - Saturace barev<br>(Color Saturation) + Saturace barev<br>(Color Saturation) Noise Reduction - Redukce šumu<br>(Noise Reduction) + Redukce šumu<br>(Noise Reduction) Contrast Equalization - Varovnání kontrastu (Contrast Equalization) + Varovnání kontrastu (Contrast Equalization) Contrast Factor - Koeficient kontrastu<br>(Contrast Factor) + Koeficient kontrastu<br>(Contrast Factor) Saturation Factor - Koeficient saturace<br>(Saturation Factor) + Koeficient saturace<br>(Saturation Factor) Cone and Rod based on Luminance - Cone a Rod podle jasu (Cone and Rod based on Luminance) + Cone a Rod podle jasu (Cone and Rod based on Luminance) Cone Level - Úroveň Cone<br>(Cone Level) + Úroveň Cone<br>(Cone Level) Rod Level - Úroveň Rod<br>(Rod Level) + Úroveň Rod<br>(Rod Level) Multiplier - Násobitel<br>(Multiplier) + Násobitel<br>(Multiplier) Use Scales - Použít stupnice (Use Scales) + Použít stupnice (Use Scales) Key Value - Klíčová hodnota<br>(Key Value) + Klíčová hodnota<br>(Key Value) Range - Rozsah<br>(Range) + Rozsah<br>(Range) Lower Scale - Nižší stupnice<br>(Lower Scale) + Nižší stupnice<br>(Lower Scale) Upper Scale - Vyšší stupnice<br>(Upper Scale) + Vyšší stupnice<br>(Upper Scale) Brightness - Jas<br>(Brightness) + Jas<br>(Brightness) Chromatic Adaptation - Adaptace barev<br>(Chromatic Adaptation) + Adaptace barev<br>(Chromatic Adaptation) Light Adaptation - Adaptace světel<br>(Light Adaptation) + Adaptace světel<br>(Light Adaptation) + + + + SavedParametersDialog + + Saved Parameters + + + + Comment + + + + TM Operator + + + + Simple + Jednoduchý Equation 2 + Local Contrast Threshold + Práh lokálního kontrastu<br>(Local Contrast Threshold) + + Pre-gamma - Comment - + Bias + Síla<br>(Bias) + + + Spatial Kernel Sigma + Prostorové zrno<br>(Spatial Kernel Sigma) + + + Range Kernel Sigma + Rádius<br>(Range Kernel Sigma) + + + Base Contrast + Základní kontrast<br>(Base Contrast) Alpha @@ -3407,10 +3511,30 @@ + Color Saturation + Saturace barev<br>(Color Saturation) + + + Noise Reduction + Redukce šumu<br>(Noise Reduction) + + Old Fattal + Contrast Equalization + Varovnání kontrastu (Contrast Equalization) + + + Contrast Factor + Koeficient kontrastu<br>(Contrast Factor) + + + Saturation Factor + Koeficient saturace<br>(Saturation Factor) + + Detail Factor @@ -3427,16 +3551,60 @@ + Cone and Rod based on Luminance + Cone a Rod podle jasu (Cone and Rod based on Luminance) + + Local Tonemapping + Cone Level + Úroveň Cone<br>(Cone Level) + + + Rod Level + Úroveň Rod<br>(Rod Level) + + + Multiplier + Násobitel<br>(Multiplier) + + + Use Scales + Použít stupnice (Use Scales) + + + Key Value + Klíčová hodnota<br>(Key Value) + + Phi Value - TM Operator - + Range + Rozsah<br>(Range) + + + Lower Scale + Nižší stupnice<br>(Lower Scale) + + + Upper Scale + Vyšší stupnice<br>(Upper Scale) + + + Brightness + Jas<br>(Brightness) + + + Chromatic Adaptation + Adaptace barev<br>(Chromatic Adaptation) + + + Light Adaptation + Adaptace světel<br>(Light Adaptation) @@ -3841,10 +4009,6 @@ - Version Pre 1.8.4 - - - Auto Cone/Rod @@ -3876,19 +4040,19 @@ Set Custom Output Size - - - TonemappingWarningDialog - Attention! + Version 2.3.0 + + + TonemappingWarningDialog - Ask again + Fattal Warning - This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. + This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. Do you want to continue? @@ -3918,7 +4082,7 @@ Log: - Log: + Log: Exif operations report @@ -3957,37 +4121,33 @@ &Hotovo - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">From:</span></p></body></html> + &Filter log messages: - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">To:</span></p></body></html> + Keep existing Exif tags in destination file - &Filter log messages: + &Start - Keep existing Exif tags in destination file + All Supported formats - &Start + From - All Supported formats + To + + Log + Log + UMessageBox diff -Nru luminance-2.2.1/i18n/lang_de.ts luminance-2.3.0/i18n/lang_de.ts --- luminance-2.2.1/i18n/lang_de.ts 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/i18n/lang_de.ts 2012-07-01 09:10:50.000000000 +0000 @@ -63,7 +63,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:11pt; font-weight:400; font-style:normal;"> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#00007f;">Luminance HDR</span> — HDR imaging workflow application<br />(c) 2006-2009, Giuseppe Rota</p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010, 2011, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010-2012, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> @@ -86,8 +86,17 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:danielkaneider@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">danielkaneider@users.sourceforge.net</span></a></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; text-decoration: underline; color:#0000ff;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">pfs{tools|calibration|tmo} codebase</span><span style=" font-size:9pt;"><br /> Grzegorz Krawczyk<br /> </span><a href="mailto:krawczyk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">krawczyk@mpi-sb.mpg.de</span></a><span style=" font-size:9pt;"><br /> <br /> Rafal Mantiuk<br /> </span><a href="mailto:mantiuk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mantiuk@mpi-sb.mpg.de </span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-family:'Sans Serif'; font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> - +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Chinese translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Lei Zhao</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Slovakian translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Zuzana Cupkova</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Hindi translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Rohit Sharma</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> + @@ -110,7 +119,7 @@ Choose one of the creation predefined profiles. -See documentation for more informations. +See documentation for more information. Eines der vordefinierten Profile wählen. In der Dokumentation findest du weitere Informationen. @@ -195,22 +204,10 @@ Ordner mit Aufnahmen der Belichtungsreihe (alphabetisch sortiert) - Select &Input Folder - &Quellordner wählen - - Folder where created HDRs are saved Ordner zum Speichern der erzeugten HDR-Bilder - Select &Output Folder - &Ausgabeordner wählen - - - Messages - Meldungen - - &Cancel A&bbrechen @@ -223,10 +220,6 @@ S&chließen - Choose a directory - Ordner wählen - - Started processing... Beginne mit Verarbeitung ... @@ -262,48 +255,64 @@ Aborting... Abbrechen ... - - - BatchTMDialog - Batch Tone Mapping - Stapel-Dynamikkompression + Warning + Warnung - Add &Directory - &Ordner hinzufügen + Total number of pictures must be a multiple of number of bracketed images. + Die Anzahl der Bilder muss einem Vielfachen der Anzahl der Aufnahmen der Belichtungsreihe entsprechen. - &Add Files - Dateien &hinzufügen + Output + Ausgabe - &Remove Files - Dateien &entfernen + Progress + Fortschritt - List of HDRs that will be tone mapped - Liste von HDR-Bildern, die dynamikkomprimiert werden + Select... + Wählen ... - Add D&irectory - O&rdner hinzufügen + Input folder: + Quellordner: - Add Fi&les - D&ateien hinzufügen + Output folder: + Ausgabeordner: - R&emove Files - Dateien e&ntfernen + Choose a source directory + Quellordner wählen - Output - Ausgabe + Choose a output directory + Ausgabeordner wählen + + + The chosen output directory contains HDR files. Those files might be overwritten. + +Continue? + Der gewählte Ausgabeordner enthält HDR-Dateien. Diese könnten überschrieben werden. + +Fortfahren? + + + + BatchTMDialog + + Batch Tone Mapping + Stapel-Dynamikkompression + + + List of HDRs that will be tone mapped + Liste von HDR-Bildern, die dynamikkomprimiert werden - Select &Output Folder... - A&usgabeordner wählen ... + Output + Ausgabe &Show only: @@ -326,10 +335,6 @@ Abbre&chen - Saving using file format: %1, (quality - if applicable): %2 - Speichere im Dateiformat: %1, (Qualität - falls möglich): %2 - - Choose a directory Ordner wählen @@ -347,41 +352,13 @@ &Done - &Fertig + F&ertig HDR Images to Convert Zu konvertierende HDR-Bilder - Add all the HDRs in a directory to the list - Alle in einem Ordner befindlichen HDR-Dateien der Liste hinzufügen - - - Add single HDR files to the list - Einzelne HDR-Dateien der Liste hinzufügen - - - Remove single HDR files to the list - Einzelne HDR-Dateien aus der Liste entfernen - - - Tone Mapping Settings Files - Dateien mit Dynamikkompressionsvorgaben - - - Add all the Tone Mapping Setting files in a directory to the list - Alle in einem Ordner befindlichen Dateien mit Dynamikkompressionsvorgaben der Liste hinzufügen - - - Add single Tone Mapping Setting files to the list - Einzelne Datei mit Dynamikkompressionsvorgaben der Liste hinzufügen - - - Remove single Tone Mapping Setting files to the list - Einzelne Datei mit Dynamikkompressionsvorgaben aus der Liste entfernen - - List of Tone Mapping Setting files that will be used to tone map each HDR Liste von Dateien mit Dynamikkompressionsvorgaben, die auf jedes HDR-Bild angewendet werden @@ -449,6 +426,94 @@ Aborting... Abbrechen ... + + Tone Mapping Settings + Dynamikkompressionsvorgaben + + + % + + + + Output Image Quality + Qualität des Ausgabebildes + + + Saving using file format: %1 + Speichere im Dateiformat: %1 + + + Ouput Image Width: + Breite des Ausgabebildes: + + + Output Folder: + Ausgabeordner: + + + Selec&t... + &Wählen ... + + + Add Directory (Alt+D) + Ordner hinzufügen (Alt+D) + + + ... + + + + Alt+D + + + + Add Files (Alt+F) + Dateien hinzufügen (Alt+F) + + + Alt+F + + + + Remove Files (Alt+R) + Dateien entfernen (Alt+R) + + + Alt+R + + + + Add Directory (Alt+I) + Ordner hinzufügen (Alt+I) + + + Alt+I + + + + Add Files (Alt+L) + Dateien hinzufügen (Alt+L) + + + Alt+L + + + + Add from Database (Alt+B) + Aus Datenbank hinzufügen (Alt+B) + + + Alt+B + + + + Remove Settings (Alt+M) + Einstellungen entfernen (Alt+M) + + + Alt+M + + BatchTMJob @@ -520,7 +585,7 @@ Fehler: Die Anzahl der angegebenen EV-Werte unterscheidet sich von der Anzahl der Quelldateien. - Error: Exif data missing in images and EV values not specifed on the commandline, bailing out. + Error: Exif data missing in images and EV values not specified on the commandline, bailing out. Fehler: In den Bildern sind keine EXIF-Daten vorhanden und in der Kommandozeile wurden keine EV-Werte angegeben. Breche ab. @@ -689,6 +754,22 @@ Tonemapping requested, saving to file %1. Dynamikkompression angefordert, speichere in Datei %1. + + Failed loading images + Bilder konnten nicht geladen werden + + + Failed aligning images. + Bilder konnten nicht ausgerichtet werden. + + + Error: Quality must be in the range [0-100]. + Fehler: Qualität muss im Bereich [0-100] liegen. + + + -q --quality VALUE Quality of the saved tone mapped file (0-100). + -q --quality VALUE Qualität der gespeicherten dynamikkomprimierten Datei (0-100). + DnDOption @@ -1026,6 +1107,10 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Wenn das gleiche Bild in beiden Listen ausgewählt ist, wird in diesem Bereich das Bild selbst dargestellt.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Durch Klicken und Halten der linken Maustaste kann eine Fläche zum Zuschneiden festgelegt werden.</p></body></html> + + Histogram + Histogramm + GenericViewer @@ -1063,6 +1148,10 @@ ERROR: Failed Loading file: %1 FEHLER: Datei konnte nicht geladen werden: %1 + + ERROR loading %1 + FEHLER beim Laden von %1 + HdrViewer @@ -1543,6 +1632,10 @@ Weights: Gewichte: + + align_image_stack failed to align images. + align_image_stack konnte die Bilder nicht ausrichten. + HelpBrowser @@ -2075,31 +2168,11 @@ Aus&wahl aufheben - Next - Nächstes - - - Next Image - Nächstes Bild - - - Show Next Image - Nächstes Bild anzeigen - - - Ctrl+PgDown - Strg+Bild ab - - - Ctrl+PgUp - Strg+Bild auf - - Lock Viewers Ansicht angleichen - Syncronize viewers mode (fit, fill or 1:1). + Synchronize viewers mode (fit, fill or 1:1). Ansicht synchronisieren (anpassen, füllen, 1:1). @@ -2119,18 +2192,6 @@ Strg+H - Previous - Vorheriges - - - Previous Image - Vorheriges Bild - - - Show Previous Image - Vorheriges Bild anzeigen - - Lock the images for sync view Ansicht aller Bilder an Ausrichtung angleichen @@ -2462,12 +2523,13 @@ &Crop to Selection &Auf Auswahl zuschneiden - - - ParametersDialog - Saved Parameters - Gespeicherte Parameter + Soft Proofing + Softproofing + + + Gamut Check + Farbumfang-Prüfung @@ -2509,54 +2571,6 @@ Oberfläche - Czech - Tschechisch - - - English - Englisch - - - Finnish - Finnisch - - - French - Französisch - - - German - Deutsch - - - Indonesian - Indonesisch - - - Italian - Italienisch - - - Polish - Polnisch - - - Romanian - Rumänisch - - - Russian - Russisch - - - Spanish - Spanisch - - - Turkish - Türkisch - - HDR Options HDR-Optionen @@ -2581,10 +2595,6 @@ Negative Werte anzeigen als: - C&hoose - Wä&hlen - - Which LDR image format to save to Auswahl des zu speichernden LDR-Bildformats @@ -2667,10 +2677,6 @@ Anzahl Threads für Stapel-Dynamikkompression - Batch Tonemapping Default Output Quality - Standardausgabequalität für Stapel-Dynamikkompression - - General Allgemein @@ -3058,145 +3064,90 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Camera Profile</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the input color space used to decode RAW data.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">None</span>: no input color profile is used during RAW decoding.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Embedded</span>: use embedded color profile from RAW file if exist.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom input color space profile.</p></body></html> +</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Read </span><span style=" font-family:'Sans Serif'; font-style:italic;">Help &gt; Contents &gt; Setting up Luminance &gt; External tools</span><span style=" font-family:'Sans Serif';"> to find out more about align_image_stack command line arguments</span></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Kameraprofil</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Auswahl des Eingabefarbraums zur Dekodierung der RAW-Daten.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Keines</span>: zur RAW-Dekodierung wird kein Eingabefarbprofil verwendet.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Eingebettetes</span>: falls in der RAW-Datei ein eingebettetes Farbprofil existiert, wird es verwendet.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Eigenes</span>: ein eigenes Eingabefarbprofil wird verwendet.</p></body></html> +</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Für weitere Informationen zu den Argumenten des Befehls align_image_stack siehe </span><span style=" font-family:'Sans Serif'; font-style:italic;">Hilfe &gt; Inhalt ... &gt; Setting up &gt; External tools</span><span style=" font-family:'Sans Serif';"></span></p></body></html> - None - Keines + Show nan and +/-Inf values as: + Werte NaN und +/- unendlich anzeigen als: - Built in - Eingebettetes + Red Component + Rotanteil - Custom - Eigenes + Blue Component + Blauanteil - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Workspace</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the output color space used to decode RAW data.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Raw (linear)</span>: in this mode, no output color space is used during RAW decoding.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">sRGB</span>: this is a RGB color space, created cooperatively by Hewlett-Packard and Microsoft. It is the best choice for images destined for the Web and portrait photography.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Adobe RGB</span>: this color space is an extended RGB color space, developed by Adobe. It is used for photography applications such as advertising and fine art.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wide Gamut</span>: this color space is an expanded version of the Adobe RGB color space.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Pro-Photo</span>: this color space is an RGB color space, developed by Kodak, that offers an especially large gamut designed for use with photographic outputs in mind.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom output color space profile.</p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Farbraum</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Auswahl des Ausgabefarbraums zur Dekodierung der RAW-Daten.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">RAW (linear)</span>: zur RAW-Dekodierung wird kein Ausgabefarbprofil verwendet.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">sRGB</span>: ein von Hewlett-Packard und Microsoft gemeinsam entwickelter RGB-Farbraum, der für Web und Portraitfotografie am besten geeignet ist.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Adobe RGB</span>: ein von Adobe entwickelter erweiterter RGB-Farbraum für fotografische Anwendungen wie Werbung und Kunst.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Breiter Gamut</span>: eine Erweiterung des Adobe-RGB-Farbraums.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">ProPhoto</span>: ein von Kodak entwickelter RGB-Farbraum mit besonders großem Gamut, der für fotografische Ausgaben gedacht ist.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Eigenes</span>: ein eigenes Ausgabefarbprofil wird verwendet.</p></body></html> + Camera profile + Kameraprofil - RAW - + align_image_stack command line arguments + Argumente des Befehls align_image_stack - sRGB - + &Cancel + Abbre&chen - Adobe RGB + &OK - Wide Gamut - Breiter Gamut - - - Pro Photo - ProPhoto - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Read </span><span style=" font-family:'Sans Serif'; font-style:italic;">Help &gt; Contents &gt; Setting up Luminance &gt; External tools</span><span style=" font-family:'Sans Serif';"> to find out more about align_image_stack command line arguments</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Für weitere Informationen zu den Argumenten des Befehls align_image_stack siehe </span><span style=" font-family:'Sans Serif'; font-style:italic;">Hilfe &gt; Inhalt ... &gt; Setting up &gt; External tools</span><span style=" font-family:'Sans Serif';"></span></p></body></html> - - - Show nan and +/-Inf values as: - Werte NaN und +/- unendlich anzeigen als: + Choose a directory + Ordner wählen - Red Component - Rotanteil + Color Management + Farbverwaltung - Blue Component - Blauanteil + Monitor + Bildschirm - Camera Profile - Kameraprofil + Monitor Profile + Bildschirmprofil - Camera profile - Kameraprofil + Printer + Drucker - Color Space - Farbraum + Printer profile + Druckerprofil - align_image_stack command line arguments - Argumente des Befehls align_image_stack + Open ICC Profile + ICC-Profil öffnen - &Cancel - Abbre&chen + Color profile (*.icc) + Farbprofil (*.icc) - &OK - + &Browse... + &Durchsuchen ... - Hungarian - Ungarisch + Browse... + Durchsuchen ... - Choose a directory - Ordner wählen + Color profile (*.icc *.ICC *.icm *.ICM) + Farbprofil (*.icc *.ICC *.icm *.ICM) PreviewPanel - Form - [Christian Raue] I have no idea if or where this will be shown and what it means. Will leave it as is. - - - Mantiuk '06 @@ -3232,6 +3183,10 @@ Pattanaik + + Preview + Vorschau + ProjectionsDialog @@ -3397,6 +3352,46 @@ Successfully loaded file %1. Datei %1 erfolgreich geladen. + + Warning + Warnung + + + Error Opening RAW File + Fehler beim Laden der RAW-Datei + + + Error Unpacking RAW File + Fehler beim Entpacken der RAW-Datei + + + Error Processing RAW File + Fehler beim Verarbeiten der RAW-Datei + + + Memory Error in processing RAW File + Speicherfehler beim Verarbeiten der RAW-Datei + + + Error Creating PFS Frame + Fehler beim Erzeugen des PFS-Frames + + + I cannot open monitor profile. Please select a different one. + Bildschirmprofil konnte nicht geöffnet werden. Bitte anderes wählen. + + + I cannot open printer profile. Please select a different one. + Druckerprofil konnte nicht geöffnet werden. Bitte anderes wählen. + + + Please select a printer profile . + Bitte ein Druckerprofil wählen. + + + I cannot perform the color transform. Please select a different monitor profile. + Farbraumkonvertierung konnte nicht durchgeführt werden. Bitte anderes Bildschirmprofil wählen. + ResizeDialog @@ -3450,7 +3445,19 @@ - SavedParameters + SavedParametersDialog + + Saved Parameters + Gespeicherte Parameter + + + Comment + Kommentar + + + TM Operator + Dynamikkompressionsoperator + Simple Einfach @@ -3468,10 +3475,6 @@ Pre-Gamma - Comment - Kommentar - - Bias @@ -3505,7 +3508,7 @@ Old Fattal - altes Fattal + Altes Fattal Contrast Equalization @@ -3591,10 +3594,6 @@ Light Adaptation Lichtanpassung - - TM Operator - Dynamikkompressionsoperator - SavingParameters @@ -3769,10 +3768,6 @@ Hauptwert - Version Pre 1.8.4 - Version vor 1.8.4 - - Phi @@ -4037,19 +4032,19 @@ Start tonemapping (CTRL+T) Dynamikkompression starten (Strg+T) + + Version 2.3.0 + + TonemappingWarningDialog - Attention! - Achtung! - - - Ask again - Erneut fragen + Fattal Warning + Fattal-Warnung - This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. + This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. Do you want to continue? Dieser Dynamikkompressionsoperator hängt von der Größe des Quellbildes ab. Diesen Operator auf ein Bild in Originalgröße anzuwenden, wird höchstwahrscheinlich ein anderes Ergebnis zur Folge haben. @@ -4088,34 +4083,6 @@ &Fertig - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">From:</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">Quelle:</span></p></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">To:</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">Ziel:</span></p></body></html> - - - Log: - Protokoll: - - Exif operations report Bericht zur EXIF-Verarbeitung @@ -4159,6 +4126,18 @@ All Supported formats Alle unterstützten Formate + + From + Quelle + + + To + Ziel + + + Log + Protokoll + UMessageBox diff -Nru luminance-2.2.1/i18n/lang_es.ts luminance-2.3.0/i18n/lang_es.ts --- luminance-2.2.1/i18n/lang_es.ts 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/i18n/lang_es.ts 2012-07-01 09:10:50.000000000 +0000 @@ -63,7 +63,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:11pt; font-weight:400; font-style:normal;"> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#00007f;">Luminance HDR</span> — HDR imaging workflow application<br />(c) 2006-2009, Giuseppe Rota</p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010, 2011, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010-2012, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> @@ -86,7 +86,16 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:danielkaneider@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">danielkaneider@users.sourceforge.net</span></a></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; text-decoration: underline; color:#0000ff;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">pfs{tools|calibration|tmo} codebase</span><span style=" font-size:9pt;"><br /> Grzegorz Krawczyk<br /> </span><a href="mailto:krawczyk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">krawczyk@mpi-sb.mpg.de</span></a><span style=" font-size:9pt;"><br /> <br /> Rafal Mantiuk<br /> </span><a href="mailto:mantiuk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mantiuk@mpi-sb.mpg.de </span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-family:'Sans Serif'; font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Chinese translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Lei Zhao</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Slovakian translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Zuzana Cupkova</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Hindi translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Rohit Sharma</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> @@ -110,7 +119,7 @@ Choose one of the creation predefined profiles. -See documentation for more informations. +See documentation for more information. @@ -182,12 +191,8 @@ - Messages - - - Choose a directory - Seleccione un directorio + Seleccione un directorio Started processing... @@ -238,14 +243,6 @@ - Select &Input Folder - - - - Select &Output Folder - - - &Cancel &Cancelar @@ -261,6 +258,48 @@ Aborting... + + Warning + + + + Total number of pictures must be a multiple of number of bracketed images. + + + + Output + Salida + + + Progress + + + + Select... + + + + Input folder: + + + + Output folder: + + + + Choose a source directory + + + + Choose a output directory + + + + The chosen output directory contains HDR files. Those files might be overwritten. + +Continue? + + BatchTMDialog @@ -270,15 +309,15 @@ Add &Directory - Añadir &Directorio + Añadir &Directorio &Add Files - &Añadir Archivos + &Añadir Archivos &Remove Files - &Borrar Archivos + &Borrar Archivos List of HDRs that will be tone mapped @@ -286,15 +325,15 @@ Add D&irectory - Añadir &Directorio + Añadir &Directorio Add Fi&les - Añadir A&rchivos + Añadir A&rchivos R&emove Files - B&orrar archivos + B&orrar archivos Output @@ -302,7 +341,7 @@ Select &Output Folder... - Seleccione carpeta de &destino... + Seleccione carpeta de &destino... &Show only: @@ -338,27 +377,27 @@ Add all the HDRs in a directory to the list - Añadir todos los HDRs del directorio a la lista + Añadir todos los HDRs del directorio a la lista Add single HDR files to the list - Añadir archivos HDR a la lista + Añadir archivos HDR a la lista Remove single HDR files to the list - Eliminar archivos HDR de la lista + Eliminar archivos HDR de la lista Add all the Tone Mapping Setting files in a directory to the list - Añadir a la lista todos los archivos de configuración en el directorio + Añadir a la lista todos los archivos de configuración en el directorio Add single Tone Mapping Setting files to the list - Añadir a la lista archivos de configuración + Añadir a la lista archivos de configuración Remove single Tone Mapping Setting files to the list - Eliminar de la lista archivos de configuración + Eliminar de la lista archivos de configuración List of Tone Mapping Setting files that will be used to tone map each HDR @@ -401,10 +440,6 @@ - Tone Mapping Settings Files - - - Conversion Log @@ -441,11 +476,95 @@ - Saving using file format: %1, (quality - if applicable): %2 + Aborting... - Aborting... + Tone Mapping Settings + + + + % + + + + Output Image Quality + + + + Saving using file format: %1 + + + + Ouput Image Width: + + + + Output Folder: + + + + Selec&t... + + + + Add Directory (Alt+D) + + + + ... + + + + Alt+D + + + + Add Files (Alt+F) + + + + Alt+F + + + + Remove Files (Alt+R) + + + + Alt+R + + + + Add Directory (Alt+I) + + + + Alt+I + + + + Add Files (Alt+L) + + + + Alt+L + + + + Add from Database (Alt+B) + + + + Alt+B + + + + Remove Settings (Alt+M) + + + + Alt+M @@ -519,7 +638,7 @@ Error: El valor numérico indicado en EV es diferente al número de archivos de entrada. - Error: Exif data missing in images and EV values not specifed on the commandline, bailing out. + Error: Exif data missing in images and EV values not specified on the commandline, bailing out. Error: Datos EXIF no encontrados en la imagen y valor EV no indicado en la linea de comandos. Rescatando. @@ -695,6 +814,22 @@ Tonemapping requested, saving to file %1. + + Failed loading images + + + + Failed aligning images. + + + + Error: Quality must be in the range [0-100]. + + + + -q --quality VALUE Quality of the saved tone mapped file (0-100). + + DnDOption @@ -1032,6 +1167,10 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Si se selecciona la misma imagen tanto en la lista de editables como en la lista de referencias, este area mostrará la imagen tal como es.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Pulsando y manteniendo pulsado el botón izquierdo del ratón usted habilita el area de recorte.</p></body></html> + + Histogram + + GenericViewer @@ -1069,6 +1208,10 @@ ERROR: %1 + + ERROR loading %1 + + HdrViewer @@ -1515,6 +1658,10 @@ Weights: Peso: + + align_image_stack failed to align images. + + HelpBrowser @@ -2285,43 +2432,11 @@ - Next - - - - Next Image - - - - Show Next Image - - - - Ctrl+PgDown - - - - Previous - - - - Previous Image - - - - Show Previous Image - - - - Ctrl+PgUp - - - Lock Viewers - Syncronize viewers mode (fit, fill or 1:1). + Synchronize viewers mode (fit, fill or 1:1). @@ -2432,11 +2547,12 @@ Error: %1 - - - ParametersDialog - Saved Parameters + Soft Proofing + + + + Gamut Check @@ -2499,58 +2615,6 @@ - Czech - - - - English - - - - Finnish - - - - French - - - - German - - - - Indonesian - - - - Italian - - - - Polish - - - - Romanian - - - - Russian - - - - Spanish - - - - Turkish - - - - Hungarian - - - Always show Preview Panel @@ -2583,10 +2647,6 @@ - C&hoose - - - Which LDR image format to save to @@ -2877,159 +2937,128 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Camera Profile</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the input color space used to decode RAW data.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">None</span>: no input color profile is used during RAW decoding.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Embedded</span>: use embedded color profile from RAW file if exist.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom input color space profile.</p></body></html> - - - - None - - - - Built in +</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Read </span><span style=" font-family:'Sans Serif'; font-style:italic;">Help &gt; Contents &gt; Setting up Luminance &gt; External tools</span><span style=" font-family:'Sans Serif';"> to find out more about align_image_stack command line arguments</span></p></body></html> - Custom + Language - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Workspace</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the output color space used to decode RAW data.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Raw (linear)</span>: in this mode, no output color space is used during RAW decoding.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">sRGB</span>: this is a RGB color space, created cooperatively by Hewlett-Packard and Microsoft. It is the best choice for images destined for the Web and portrait photography.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Adobe RGB</span>: this color space is an extended RGB color space, developed by Adobe. It is used for photography applications such as advertising and fine art.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wide Gamut</span>: this color space is an expanded version of the Adobe RGB color space.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Pro-Photo</span>: this color space is an RGB color space, developed by Kodak, that offers an especially large gamut designed for use with photographic outputs in mind.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom output color space profile.</p></body></html> + Default Previews Width - RAW + px - sRGB + HDR TIFF Default File Format - Adobe RGB + Temporary Working Folder - Wide Gamut + Batch Tonemapping Default Output Format - Pro Photo + Batch Tonemapping Number of Threads - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Read </span><span style=" font-family:'Sans Serif'; font-style:italic;">Help &gt; Contents &gt; Setting up Luminance &gt; External tools</span><span style=" font-family:'Sans Serif';"> to find out more about align_image_stack command line arguments</span></p></body></html> + General - Language + Method - Default Previews Width + Temperature (Kelvin) - px + Green - HDR TIFF Default File Format + Highlights - Temporary Working Folder + Level - Batch Tonemapping Default Output Format - + Brightness + Brillo - Batch Tonemapping Number of Threads + Saturation - Batch Tonemapping Default Output Quality + NR and CA Correction - General + Red Component - Method + Blue Component - Temperature (Kelvin) + Camera profile - Green + align_image_stack command line arguments - Highlights + Color Management - Level + Monitor - Brightness - Brillo - - - Saturation + Monitor Profile - NR and CA Correction + Printer - Red Component + Printer profile - Blue Component + Open ICC Profile - Camera Profile + Color profile (*.icc) - Camera profile + &Browse... - Color Space + Browse... - align_image_stack command line arguments + Color profile (*.icc *.ICC *.icm *.ICM) @@ -3044,10 +3073,6 @@ Reinhard '05 - Form - - - Mantiuk '06 @@ -3075,6 +3100,10 @@ Pattanaik + + Preview + + ProjectionsDialog @@ -3240,6 +3269,46 @@ Successfully loaded file %1. + + Warning + + + + Error Opening RAW File + + + + Error Unpacking RAW File + + + + Error Processing RAW File + + + + Memory Error in processing RAW File + + + + Error Creating PFS Frame + + + + I cannot open monitor profile. Please select a different one. + + + + I cannot open printer profile. Please select a different one. + + + + Please select a printer profile . + + + + I cannot perform the color transform. Please select a different monitor profile. + + ResizeDialog @@ -3296,121 +3365,184 @@ SavedParameters Simple - Simple + Simple Local Contrast Threshold - Umbral de contraste local + Umbral de contraste local Bias - Bias + Bias Spatial Kernel Sigma - Spatial Kernel Sigma + Spatial Kernel Sigma Range Kernel Sigma - Range Kernel Sigma + Range Kernel Sigma Base Contrast - Contraste + Contraste Alpha - Alpha + Alpha Beta - Beta + Beta Color Saturation - Saturación de color + Saturación de color Noise Reduction - Reducción de ruido + Reducción de ruido Contrast Equalization - Equalización de Contraste + Equalización de Contraste Contrast Factor - Facto de Constraste + Facto de Constraste Saturation Factor - Factor de Saturacion + Factor de Saturacion Cone and Rod based on Luminance - Cono y barra basado en luminancia + Cono y barra basado en luminancia Cone Level - Nivel de cono + Nivel de cono Rod Level - Nivel de cono + Nivel de cono Multiplier - Multiplicador + Multiplicador Use Scales - Usar escalas + Usar escalas Key Value - Valor clave + Valor clave Range - Rango + Rango Lower Scale - Escala baja + Escala baja Upper Scale - Escala alta + Escala alta Brightness - Brillo + Brillo Chromatic Adaptation - Adaptación cromática + Adaptación cromática Light Adaptation - Adaptación lumínicia + Adaptación lumínicia + + + + SavedParametersDialog + + Saved Parameters + + + + Comment + + + + TM Operator + + + + Simple + Simple Equation 2 + Local Contrast Threshold + Umbral de contraste local + + Pre-gamma - Comment - + Bias + Bias + + + Spatial Kernel Sigma + Spatial Kernel Sigma + + + Range Kernel Sigma + Range Kernel Sigma + + + Base Contrast + Contraste + + + Alpha + Alpha + + + Beta + Beta + + + Color Saturation + Saturación de color + + + Noise Reduction + Reducción de ruido Old Fattal + Contrast Equalization + Equalización de Contraste + + + Contrast Factor + Facto de Constraste + + + Saturation Factor + Factor de Saturacion + + Detail Factor @@ -3427,16 +3559,60 @@ + Cone and Rod based on Luminance + Cono y barra basado en luminancia + + Local Tonemapping + Cone Level + Nivel de cono + + + Rod Level + Nivel de cono + + + Multiplier + Multiplicador + + + Use Scales + Usar escalas + + + Key Value + Valor clave + + Phi Value - TM Operator - + Range + Rango + + + Lower Scale + Escala baja + + + Upper Scale + Escala alta + + + Brightness + Brillo + + + Chromatic Adaptation + Adaptación cromática + + + Light Adaptation + Adaptación lumínicia @@ -3841,10 +4017,6 @@ - Version Pre 1.8.4 - - - Auto Cone/Rod @@ -3876,19 +4048,19 @@ Set Custom Output Size - - - TonemappingWarningDialog - Attention! + Version 2.3.0 + + + TonemappingWarningDialog - Ask again + Fattal Warning - This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. + This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. Do you want to continue? @@ -3926,7 +4098,7 @@ Log: - Log: + Log: Exif operations report @@ -3957,37 +4129,33 @@ &Cancelar - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">From:</span></p></body></html> + &Filter log messages: - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">To:</span></p></body></html> + Keep existing Exif tags in destination file - &Filter log messages: + &Start - Keep existing Exif tags in destination file + All Supported formats - &Start + From - All Supported formats + To + + Log + Log + UMessageBox diff -Nru luminance-2.2.1/i18n/lang_fi.ts luminance-2.3.0/i18n/lang_fi.ts --- luminance-2.2.1/i18n/lang_fi.ts 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/i18n/lang_fi.ts 2012-07-01 09:10:50.000000000 +0000 @@ -63,7 +63,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:11pt; font-weight:400; font-style:normal;"> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#00007f;">Luminance HDR</span> — HDR imaging workflow application<br />(c) 2006-2009, Giuseppe Rota</p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010, 2011, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010-2012, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> @@ -86,7 +86,16 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:danielkaneider@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">danielkaneider@users.sourceforge.net</span></a></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; text-decoration: underline; color:#0000ff;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">pfs{tools|calibration|tmo} codebase</span><span style=" font-size:9pt;"><br /> Grzegorz Krawczyk<br /> </span><a href="mailto:krawczyk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">krawczyk@mpi-sb.mpg.de</span></a><span style=" font-size:9pt;"><br /> <br /> Rafal Mantiuk<br /> </span><a href="mailto:mantiuk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mantiuk@mpi-sb.mpg.de </span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-family:'Sans Serif'; font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Chinese translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Lei Zhao</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Slovakian translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Zuzana Cupkova</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Hindi translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Rohit Sharma</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> @@ -110,7 +119,7 @@ Choose one of the creation predefined profiles. -See documentation for more informations. +See documentation for more information. @@ -182,12 +191,8 @@ - Messages - - - Choose a directory - Valitse hakemisto + Valitse hakemisto Started processing... @@ -238,14 +243,6 @@ - Select &Input Folder - - - - Select &Output Folder - - - &Cancel &Peruuta @@ -261,6 +258,48 @@ Aborting... Keskeytetään... + + Warning + + + + Total number of pictures must be a multiple of number of bracketed images. + + + + Output + Lopputulos + + + Progress + + + + Select... + + + + Input folder: + + + + Output folder: + + + + Choose a source directory + + + + Choose a output directory + + + + The chosen output directory contains HDR files. Those files might be overwritten. + +Continue? + + BatchTMDialog @@ -275,27 +314,27 @@ Add all the HDRs in a directory to the list - Lisää kaikki hakemiston HDR-kuvat listaan + Lisää kaikki hakemiston HDR-kuvat listaan Add &Directory - Lisää &Hakemisto + Lisää &Hakemisto Add single HDR files to the list - Lisää HDR-kuva listalle + Lisää HDR-kuva listalle &Add Files - &Lisää tiedostot + &Lisää tiedostot Remove single HDR files to the list - Poista yksittäisiä HDR-kuvia listalta + Poista yksittäisiä HDR-kuvia listalta &Remove Files - &Poista Tiedostot + &Poista Tiedostot List of HDRs that will be tone mapped @@ -303,31 +342,31 @@ Tone Mapping Settings Files - Tonemappauksen asetustiedostot + Tonemappauksen asetustiedostot Add all the Tone Mapping Setting files in a directory to the list - Lisää kaikki tonemappauksen asetustiedostot hakemistosta listalle + Lisää kaikki tonemappauksen asetustiedostot hakemistosta listalle Add D&irectory - Lisää &Hakemisto + Lisää &Hakemisto Add single Tone Mapping Setting files to the list - Lisää yksittäinen tonemappauksen asetustiedosto listalle + Lisää yksittäinen tonemappauksen asetustiedosto listalle Add Fi&les - &Lisää tiedostot + &Lisää tiedostot Remove single Tone Mapping Setting files to the list - Poista yksittäisiä tonemappauksen asetustiedostoja listalta + Poista yksittäisiä tonemappauksen asetustiedostoja listalta R&emove Files - &Poista Tiedostot + &Poista Tiedostot List of Tone Mapping Setting files that will be used to tone map each HDR @@ -343,7 +382,7 @@ Select &Output Folder... - Valitse &kohdekansio... + Valitse &kohdekansio... Conversion Log @@ -442,12 +481,96 @@ - Saving using file format: %1, (quality - if applicable): %2 + Aborting... + Keskeytetään... + + + Tone Mapping Settings + Tonemappauksen asetukset + + + % - Aborting... - Keskeytetään... + Output Image Quality + + + + Saving using file format: %1 + + + + Ouput Image Width: + + + + Output Folder: + + + + Selec&t... + + + + Add Directory (Alt+D) + + + + ... + ... + + + Alt+D + + + + Add Files (Alt+F) + + + + Alt+F + + + + Remove Files (Alt+R) + + + + Alt+R + + + + Add Directory (Alt+I) + + + + Alt+I + + + + Add Files (Alt+L) + + + + Alt+L + + + + Add from Database (Alt+B) + + + + Alt+B + + + + Remove Settings (Alt+M) + + + + Alt+M + @@ -524,7 +647,7 @@ Virhe: EV-arvojen annettu määrä poikkeaa syötettyjen tiedostojen määrästä. - Error: Exif data missing in images and EV values not specifed on the commandline, bailing out. + Error: Exif data missing in images and EV values not specified on the commandline, bailing out. Virhe: Exif-tiedot puuttuvat kuvista ja EV-arvoja ei ole määrittety komentorivillä, poistutaan. @@ -696,6 +819,22 @@ Tonemapping requested, saving to file %1. + + Failed loading images + + + + Failed aligning images. + + + + Error: Quality must be in the range [0-100]. + + + + -q --quality VALUE Quality of the saved tone mapped file (0-100). + + DnDOption @@ -1033,6 +1172,10 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Jos sama kuva on valittu sekä muokattavien ja vertailukuvien listassa, tämä alue näyttää itse kuvan.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Klikkaamalla ja pitämällä pohjassa hiiren vasenta nappia näet rajattavan alueen.</p></body></html> + + Histogram + + GenericViewer @@ -1070,6 +1213,10 @@ ERROR: Failed Loading file: %1 VIRHE: Tiedoston lataus epäonnistui: %1 + + ERROR loading %1 + + HdrViewer @@ -1549,6 +1696,10 @@ Weights: Painoarvot: + + align_image_stack failed to align images. + + HelpBrowser @@ -2322,11 +2473,11 @@ Next Image - Seuraava kuva + Seuraava kuva Previous Image - Edellinen kuva + Edellinen kuva Adjust &Levels @@ -2365,35 +2516,11 @@ - Next - - - - Show Next Image - - - - Ctrl+PgDown - - - - Previous - - - - Show Previous Image - - - - Ctrl+PgUp - - - Lock Viewers - Syncronize viewers mode (fit, fill or 1:1). + Synchronize viewers mode (fit, fill or 1:1). @@ -2468,11 +2595,12 @@ Untitled %1 - - - ParametersDialog - Saved Parameters + Soft Proofing + + + + Gamut Check @@ -2496,47 +2624,47 @@ Czech - Tsekki + Tsekki English - Englanti + Englanti French - Ranska + Ranska German - Saksa + Saksa Indonesian - Indonesia + Indonesia Italian - Italia + Italia Polish - Puola + Puola Russian - Venäjä + Venäjä Spanish - Espanja + Espanja Turkish - Turkki + Turkki Hungarian - Unkari + Unkari HDR Options @@ -2568,7 +2696,7 @@ C&hoose - &Valitse + &Valitse Which LDR image format to save to @@ -2986,7 +3114,7 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">None</span>: no input color profile is used during RAW decoding.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Embedded</span>: use embedded color profile from RAW file if exist.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom input color space profile.</p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> @@ -2998,15 +3126,15 @@ None - Ei mitään + Ei mitään Built in - Sisäänrakennettu + Sisäänrakennettu Custom - Kustomoitu + Kustomoitu <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -3021,7 +3149,7 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wide Gamut</span>: this color space is an expanded version of the Adobe RGB color space.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Pro-Photo</span>: this color space is an RGB color space, developed by Kodak, that offers an especially large gamut designed for use with photographic outputs in mind.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom output color space profile.</p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> @@ -3036,23 +3164,23 @@ RAW - RAW + RAW sRGB - sRGB + sRGB Adobe RGB - Adobe RGB + Adobe RGB Wide Gamut - Wide Gamut + Wide Gamut Pro Photo - Pro Photo + Pro Photo <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -3088,17 +3216,13 @@ Finnish - Suomi + Suomi RAW Conversion - Romanian - - - Always show Preview Panel @@ -3139,10 +3263,6 @@ - Batch Tonemapping Default Output Quality - - - General @@ -3187,19 +3307,51 @@ - Camera Profile + Camera profile - Camera profile + align_image_stack command line arguments - Color Space + Color Management - align_image_stack command line arguments + Monitor + + + + Monitor Profile + + + + Printer + + + + Printer profile + + + + Open ICC Profile + + + + Color profile (*.icc) + + + + &Browse... + + + + Browse... + + + + Color profile (*.icc *.ICC *.icm *.ICM) @@ -3242,8 +3394,8 @@ Pattanaik - Form - + Preview + Esikatselu @@ -3410,6 +3562,46 @@ Successfully loaded file %1. + + Warning + + + + Error Opening RAW File + + + + Error Unpacking RAW File + + + + Error Processing RAW File + + + + Memory Error in processing RAW File + + + + Error Creating PFS Frame + + + + I cannot open monitor profile. Please select a different one. + + + + I cannot open printer profile. Please select a different one. + + + + Please select a printer profile . + + + + I cannot perform the color transform. Please select a different monitor profile. + + ResizeDialog @@ -3466,147 +3658,266 @@ SavedParameters Simple - Yksinkertainen + Yksinkertainen Local Contrast Threshold - Paikallisen kontrastin kynnysarvo + Paikallisen kontrastin kynnysarvo Bias - Bias + Bias Spatial Kernel Sigma - Spatial Kernel Sigma + Spatial Kernel Sigma Range Kernel Sigma - Range Kernel Sigma + Range Kernel Sigma Base Contrast - Base Contrast + Base Contrast Alpha - Alpha + Alpha Beta - Beta + Beta Color Saturation - Värin saturaatio + Värin saturaatio Noise Reduction - Kohinanpoisto + Kohinanpoisto Contrast Equalization - Kontrastin tasoitus + Kontrastin tasoitus Contrast Factor - Kontrastin kerroin + Kontrastin kerroin Saturation Factor - Värikylläisyyden kerroin + Värikylläisyyden kerroin Detail Factor - Yksityiskohtien kerroin + Yksityiskohtien kerroin Contrast Enhancement - Kontrastin parannus + Kontrastin parannus Luminance Level - Luminanssin taso + Luminanssin taso Cone and Rod based on Luminance - Cone and Rod based on Luminance + Cone and Rod based on Luminance Cone Level - Cone Level + Cone Level Rod Level - Rod Level + Rod Level Multiplier - Kerroin + Kerroin Use Scales - Use Sclaes + Use Sclaes Key Value - Key Value + Key Value Range - Range + Range Lower Scale - Lower Scale + Lower Scale Upper Scale - Upper Scale + Upper Scale Brightness - Kirkkaus + Kirkkaus Chromatic Adaptation - Kromaattinen adaptaatio + Kromaattinen adaptaatio Light Adaptation - Valon adaptaatio + Valon adaptaatio + + + + SavedParametersDialog + + Saved Parameters + + + + Comment + + + + TM Operator + + + + Simple + Yksinkertainen Equation 2 + Local Contrast Threshold + Paikallisen kontrastin kynnysarvo + + Pre-gamma - Comment - + Bias + Bias + + + Spatial Kernel Sigma + Spatial Kernel Sigma + + + Range Kernel Sigma + Range Kernel Sigma + + + Base Contrast + Base Contrast + + + Alpha + Alpha + + + Beta + Beta + + + Color Saturation + Värin saturaatio + + + Noise Reduction + Kohinanpoisto Old Fattal + Contrast Equalization + Kontrastin tasoitus + + + Contrast Factor + Kontrastin kerroin + + + Saturation Factor + Värikylläisyyden kerroin + + + Detail Factor + Yksityiskohtien kerroin + + + Contrast Enhancement + Kontrastin parannus + + + Luminance Level + Luminanssin taso + + Manual Luminance Level + Cone and Rod based on Luminance + Cone and Rod based on Luminance + + Local Tonemapping + Cone Level + Cone Level + + + Rod Level + Rod Level + + + Multiplier + Kerroin + + + Use Scales + Use Sclaes + + + Key Value + Key Value + + Phi Value - TM Operator - + Range + Range + + + Lower Scale + Lower Scale + + + Upper Scale + Upper Scale + + + Brightness + Kirkkaus + + + Chromatic Adaptation + Kromaattinen adaptaatio + + + Light Adaptation + Valon adaptaatio @@ -4023,10 +4334,6 @@ - Version Pre 1.8.4 - - - Auto Cone/Rod @@ -4062,25 +4369,39 @@ Error: The tone mapping settings file format has changed. This (old) file cannot be used with this version of LuminanceHDR. Create a new one. + + Version 2.3.0 + + TonemappingWarningDialog Attention! - Huomio! + Huomio! Ask again - Kysy uudelleen + Kysy uudelleen This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. Do you want to continue? - Tämä tonemappausoperaattori on riipuvainen annetun kuvan koosta. Lopputulos on todennäköisesti erilainen, kun operaattoria käytetään täysikokoiseen kuvaan. + Tämä tonemappausoperaattori on riipuvainen annetun kuvan koosta. Lopputulos on todennäköisesti erilainen, kun operaattoria käytetään täysikokoiseen kuvaan. Haluatko jatkaa? + + Fattal Warning + + + + This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. + +Do you want to continue? + + TransplantExifDialog @@ -4110,7 +4431,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">From:</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -4122,7 +4443,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">To:</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -4130,7 +4451,7 @@ Log: - Loki: + Loki: Exif operations report @@ -4184,6 +4505,18 @@ &Done &Valmis + + From + + + + To + + + + Log + Loki + UMessageBox diff -Nru luminance-2.2.1/i18n/lang_fr.ts luminance-2.3.0/i18n/lang_fr.ts --- luminance-2.2.1/i18n/lang_fr.ts 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/i18n/lang_fr.ts 2012-07-01 09:10:50.000000000 +0000 @@ -63,7 +63,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:11pt; font-weight:400; font-style:normal;"> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#00007f;">Luminance HDR</span> — HDR imaging workflow application<br />(c) 2006-2009, Giuseppe Rota</p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010, 2011, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010-2012, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> @@ -86,7 +86,16 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:danielkaneider@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">danielkaneider@users.sourceforge.net</span></a></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; text-decoration: underline; color:#0000ff;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">pfs{tools|calibration|tmo} codebase</span><span style=" font-size:9pt;"><br /> Grzegorz Krawczyk<br /> </span><a href="mailto:krawczyk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">krawczyk@mpi-sb.mpg.de</span></a><span style=" font-size:9pt;"><br /> <br /> Rafal Mantiuk<br /> </span><a href="mailto:mantiuk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mantiuk@mpi-sb.mpg.de </span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-family:'Sans Serif'; font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Chinese translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Lei Zhao</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Slovakian translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Zuzana Cupkova</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Hindi translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Rohit Sharma</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> @@ -110,7 +119,7 @@ Choose one of the creation predefined profiles. -See documentation for more informations. +See documentation for more information. @@ -182,12 +191,8 @@ - Messages - - - Choose a directory - Choisir un dossier + Choisir un dossier Started processing... @@ -238,14 +243,6 @@ - Select &Input Folder - - - - Select &Output Folder - - - &Cancel &Annuler @@ -261,6 +258,48 @@ Aborting... Abandon... + + Warning + + + + Total number of pictures must be a multiple of number of bracketed images. + + + + Output + Sortie + + + Progress + + + + Select... + + + + Input folder: + + + + Output folder: + + + + Choose a source directory + + + + Choose a output directory + + + + The chosen output directory contains HDR files. Those files might be overwritten. + +Continue? + + BatchTMDialog @@ -270,15 +309,15 @@ Add &Directory - Ajouter &Répertoire + Ajouter &Répertoire &Add Files - &Ajouter Fichiers + &Ajouter Fichiers &Remove Files - Efface&r Fichiers + Efface&r Fichiers List of HDRs that will be tone mapped @@ -286,15 +325,15 @@ Add D&irectory - Ajouter Réperto&ire + Ajouter Réperto&ire Add Fi&les - Ajouter Fi&chiers + Ajouter Fi&chiers R&emove Files - Effac&er Fichiers + Effac&er Fichiers Output @@ -302,7 +341,7 @@ Select &Output Folder... - Ch&oisir le répertoire de sortie... + Ch&oisir le répertoire de sortie... &Show only: @@ -350,31 +389,31 @@ Add all the HDRs in a directory to the list - Ajouter tous les HDRs d'un répertoire à la liste + Ajouter tous les HDRs d'un répertoire à la liste Add single HDR files to the list - Ajouter les HDR séparément à la liste + Ajouter les HDR séparément à la liste Remove single HDR files to the list - Retirer les HDR séparément à la liste + Retirer les HDR séparément à la liste Tone Mapping Settings Files - Fichiers de configuration pour le Tone Mapping + Fichiers de configuration pour le Tone Mapping Add all the Tone Mapping Setting files in a directory to the list - Ajouter tous les fichiers de paramètres tone mapping à la liste + Ajouter tous les fichiers de paramètres tone mapping à la liste Add single Tone Mapping Setting files to the list - Ajouter séparément les fichiers de paramètres tone mapping à la liste + Ajouter séparément les fichiers de paramètres tone mapping à la liste Remove single Tone Mapping Setting files to the list - Retirer séparément les fichiers de paramètres tone mapping à la liste + Retirer séparément les fichiers de paramètres tone mapping à la liste List of Tone Mapping Setting files that will be used to tone map each HDR @@ -441,12 +480,96 @@ Toutes les tâches sont accomplies. - Saving using file format: %1, (quality - if applicable): %2 + Aborting... + Abandon... + + + Tone Mapping Settings + Paramètres de tone mapping + + + % - Aborting... - Abandon... + Output Image Quality + + + + Saving using file format: %1 + + + + Ouput Image Width: + + + + Output Folder: + + + + Selec&t... + + + + Add Directory (Alt+D) + + + + ... + + + + Alt+D + + + + Add Files (Alt+F) + + + + Alt+F + + + + Remove Files (Alt+R) + + + + Alt+R + + + + Add Directory (Alt+I) + + + + Alt+I + + + + Add Files (Alt+L) + + + + Alt+L + + + + Add from Database (Alt+B) + + + + Alt+B + + + + Remove Settings (Alt+M) + + + + Alt+M + @@ -519,7 +642,7 @@ Erreur : le nombre de valeurs d'exposition est différent du nombre de fichiers en entrée. - Error: Exif data missing in images and EV values not specifed on the commandline, bailing out. + Error: Exif data missing in images and EV values not specified on the commandline, bailing out. Erreur : les données exif manquantes et les valeurs d'exposition ne sont pas renseignées dans la ligne de commande, abandon. @@ -696,6 +819,22 @@ Tonemapping requested, saving to file %1. + + Failed loading images + + + + Failed aligning images. + + + + Error: Quality must be in the range [0-100]. + + + + -q --quality VALUE Quality of the saved tone mapped file (0-100). + + DnDOption @@ -1034,6 +1173,10 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Si la même image est sélectionnée des deux côtés, cette zone montrera l'image elle même.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">En cliquant et en maintenant le bouton gauche de la souris, vous pourrez sélectionner une zone de découpe.</p></body></html> + + Histogram + + GenericViewer @@ -1072,6 +1215,10 @@ ERROR: Failed Loading file: %1 ERREUR : Le chargement du fichier %1 a échoué + + ERROR loading %1 + + HdrViewer @@ -1552,6 +1699,10 @@ Weights: Poids: + + align_image_stack failed to align images. + + HelpBrowser @@ -2040,7 +2191,7 @@ Get verbose information about user interface elements - Obtenir des informations détaillées sur les éléments de l'interface graphique + Obtenir des information détaillées sur les éléments de l'interface graphique About &Luminance HDR @@ -2048,11 +2199,11 @@ Show information about Luminance HDR - Afficher les informations à propos de Luminance HDR + Afficher les information à propos de Luminance HDR Show information about Luminance HDR, its authors and contributors - Afficher les informations à propos de Luminance HDR, ses auteurs et contributeurs + Afficher les information à propos de Luminance HDR, ses auteurs et contributeurs Save HDR image &preview... @@ -2268,11 +2419,11 @@ Show information about Qt - Afficher les informations sur Qt + Afficher les information sur Qt Show information about Qt library that is used by Luminance - Afficher les informations sur la librairie Qt utilisée par Luminance + Afficher les information sur la librairie Qt utilisée par Luminance Text &under Icons @@ -2304,11 +2455,11 @@ Next Image - Image suivante + Image suivante Previous Image - Image précédente + Image précédente Adjust &Levels @@ -2375,35 +2526,11 @@ Ctrl+D - Next - - - - Show Next Image - - - - Ctrl+PgDown - - - - Previous - - - - Show Previous Image - - - - Ctrl+PgUp - - - Lock Viewers - Syncronize viewers mode (fit, fill or 1:1). + Synchronize viewers mode (fit, fill or 1:1). @@ -2474,11 +2601,12 @@ Untitled %1 - - - ParametersDialog - Saved Parameters + Soft Proofing + + + + Gamut Check @@ -2502,51 +2630,51 @@ Czech - Tchèque + Tchèque English - Anglais + Anglais Finnish - Finnois + Finnois French - Français + Français German - Allemand + Allemand Indonesian - Indonésien + Indonésien Italian - Italien + Italien Polish - Polonais + Polonais Romanian - Roumain + Roumain Russian - Russe + Russe Spanish - Espagnol + Espagnol Turkish - Turc + Turc HDR Options @@ -2574,7 +2702,7 @@ C&hoose - C&hoisir + C&hoisir Which LDR image format to save to @@ -2959,7 +3087,7 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">None</span>: no input color profile is used during RAW decoding.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Embedded</span>: use embedded color profile from RAW file if exist.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom input color space profile.</p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> @@ -2971,15 +3099,15 @@ None - Aucun + Aucun Built in - Intégré + Intégré Custom - Personnalisé + Personnalisé <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -2994,7 +3122,7 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wide Gamut</span>: this color space is an expanded version of the Adobe RGB color space.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Pro-Photo</span>: this color space is an RGB color space, developed by Kodak, that offers an especially large gamut designed for use with photographic outputs in mind.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom output color space profile.</p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> @@ -3009,15 +3137,15 @@ sRGB - sRVB + sRVB Adobe RGB - RVB Adobe + RVB Adobe Wide Gamut - Gamme étendue + Gamme étendue <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -3045,7 +3173,7 @@ Hungarian - Hongrois + Hongrois Please restart LuminanceHDR to use the new language (%1). @@ -3112,14 +3240,6 @@ - RAW - - - - Pro Photo - - - Language @@ -3148,10 +3268,6 @@ - Batch Tonemapping Default Output Quality - - - General @@ -3196,19 +3312,51 @@ - Camera Profile + Camera profile - Camera profile + align_image_stack command line arguments - Color Space + Color Management - align_image_stack command line arguments + Monitor + + + + Monitor Profile + + + + Printer + + + + Printer profile + + + + Open ICC Profile + + + + Color profile (*.icc) + + + + &Browse... + + + + Browse... + + + + Color profile (*.icc *.ICC *.icm *.ICM) @@ -3223,10 +3371,6 @@ Reinhard '05 - Form - - - Mantiuk '06 @@ -3254,6 +3398,10 @@ Pattanaik + + Preview + Prévisualisation + ProjectionsDialog @@ -3419,6 +3567,46 @@ Successfully loaded file %1. + + Warning + + + + Error Opening RAW File + + + + Error Unpacking RAW File + + + + Error Processing RAW File + + + + Memory Error in processing RAW File + + + + Error Creating PFS Frame + + + + I cannot open monitor profile. Please select a different one. + + + + I cannot open printer profile. Please select a different one. + + + + Please select a printer profile . + + + + I cannot perform the color transform. Please select a different monitor profile. + + ResizeDialog @@ -3475,147 +3663,266 @@ SavedParameters Simple - Simple + Simple Local Contrast Threshold - Seuil de contraste local + Seuil de contraste local Bias - Bais + Bais Spatial Kernel Sigma - Spatial Kernel Sigma + Spatial Kernel Sigma Range Kernel Sigma - Range Kernel Sigma + Range Kernel Sigma Base Contrast - Contraste de base + Contraste de base Alpha - Alpha + Alpha Beta - Bêta + Bêta Color Saturation - Saturation de couleur + Saturation de couleur Noise Reduction - Réduction du bruit + Réduction du bruit Contrast Equalization - Égalisation du contraste + Égalisation du contraste Contrast Factor - Facteur de contraste + Facteur de contraste Saturation Factor - Facteur de saturation + Facteur de saturation Detail Factor - Facteur de détail + Facteur de détail Contrast Enhancement - Amélioration de contraste + Amélioration de contraste Luminance Level - Niveau de luminance + Niveau de luminance Cone and Rod based on Luminance - Cône et bâtonnets basés sur la luminance + Cône et bâtonnets basés sur la luminance Cone Level - Quantité de cônes + Quantité de cônes Rod Level - Quantité de bâtonnets + Quantité de bâtonnets Multiplier - Facteur + Facteur Use Scales - Utiliser des échelles + Utiliser des échelles Key Value - Valeur clé + Valeur clé Range - Étendue + Étendue Lower Scale - Échelle la plus basse + Échelle la plus basse Upper Scale - Échelle la plus haute + Échelle la plus haute Brightness - Luminosité + Luminosité Chromatic Adaptation - Adaptation Chromatique + Adaptation Chromatique Light Adaptation - Adaptation de lumière + Adaptation de lumière + + + + SavedParametersDialog + + Saved Parameters + + + + Comment + + + + TM Operator + + + + Simple + Simple Equation 2 + Local Contrast Threshold + Seuil de contraste local + + Pre-gamma - Comment - + Bias + Bais + + + Spatial Kernel Sigma + Spatial Kernel Sigma + + + Range Kernel Sigma + Range Kernel Sigma + + + Base Contrast + Contraste de base + + + Alpha + Alpha + + + Beta + Bêta + + + Color Saturation + Saturation de couleur + + + Noise Reduction + Réduction du bruit Old Fattal + Contrast Equalization + Égalisation du contraste + + + Contrast Factor + Facteur de contraste + + + Saturation Factor + Facteur de saturation + + + Detail Factor + Facteur de détail + + + Contrast Enhancement + Amélioration de contraste + + + Luminance Level + Niveau de luminance + + Manual Luminance Level + Cone and Rod based on Luminance + Cône et bâtonnets basés sur la luminance + + Local Tonemapping + Cone Level + Quantité de cônes + + + Rod Level + Quantité de bâtonnets + + + Multiplier + Facteur + + + Use Scales + Utiliser des échelles + + + Key Value + Valeur clé + + Phi Value - TM Operator - + Range + Étendue + + + Lower Scale + Échelle la plus basse + + + Upper Scale + Échelle la plus haute + + + Brightness + Luminosité + + + Chromatic Adaptation + Adaptation Chromatique + + + Light Adaptation + Adaptation de lumière @@ -3675,7 +3982,7 @@ LuminanceHDR tonemapping settings text file (*.txt) - Fichier texte de paramètre tonemapping de LuminanceHDR + Fichier texte de paramètre tonemapping de LuminanceHDR (*.txt) Aborting... @@ -4032,10 +4339,6 @@ - Version Pre 1.8.4 - - - Auto Cone/Rod @@ -4071,25 +4374,39 @@ Error: The tone mapping settings file format has changed. This (old) file cannot be used with this version of LuminanceHDR. Create a new one. + + Version 2.3.0 + + TonemappingWarningDialog Attention! - Attention! + Attention! Ask again - Redemander + Redemander This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. Do you want to continue? - L'effet de cet opérateur de tonemapping varie selon la taille de l'image. L'aspect en pleine résolution sera sans doute différent. + L'effet de cet opérateur de tonemapping varie selon la taille de l'image. L'aspect en pleine résolution sera sans doute différent. Continuer? + + Fattal Warning + + + + This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. + +Do you want to continue? + + TransplantExifDialog @@ -4127,7 +4444,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">From:</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -4139,7 +4456,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">To:</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -4147,7 +4464,7 @@ Log: - Journal : + Journal : Exif operations report @@ -4193,6 +4510,18 @@ All Supported formats Tous les formats supportés + + From + + + + To + + + + Log + Log + UMessageBox diff -Nru luminance-2.2.1/i18n/lang_hi.ts luminance-2.3.0/i18n/lang_hi.ts --- luminance-2.2.1/i18n/lang_hi.ts 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/i18n/lang_hi.ts 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,5042 @@ + + + + + AboutLuminance + + + About Luminance + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:13pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600; color:#00007f;">Luminance HDR</span></p></body></html> + + + + + &About + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:11pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#00007f;">Luminance HDR</span> — HDR imaging workflow application<br />(c) 2006-2009, Giuseppe Rota</p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010-2012, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> + + + + + A&uthors + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Please </span><a href="mailto:davideanastasia@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">let me know</span></a><span style=" font-size:9pt;">, if I forgot to add someone to this list.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; font-weight:600;">Main developer QtPfsGui</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Giuseppe Rota<br /> </span><a href="mailto:grota@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">grota@users.sourceforge.net</span></a><span style=" font-size:9pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Main Developers Luminance HDR</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Franco Comida</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:fcomida@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">fcomida@users.sourceforge.net</span></a></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Davide Anastasia</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:davideanastasia@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">davideanastasia@users.sourceforge.net</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; font-weight:600;">Improvements, bugfixing</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Daniel Kaneider</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:danielkaneider@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">danielkaneider@users.sourceforge.net</span></a></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; text-decoration: underline; color:#0000ff;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">pfs{tools|calibration|tmo} codebase</span><span style=" font-size:9pt;"><br /> Grzegorz Krawczyk<br /> </span><a href="mailto:krawczyk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">krawczyk@mpi-sb.mpg.de</span></a><span style=" font-size:9pt;"><br /> <br /> Rafal Mantiuk<br /> </span><a href="mailto:mantiuk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mantiuk@mpi-sb.mpg.de </span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Chinese translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Lei Zhao</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Slovakian translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Zuzana Cupkova</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Hindi translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Rohit Sharma</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> + + + + + &Thanks To + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Please </span><a href="mailto:grota@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">let me know</span></a><span style=" font-size:9pt;">, if I forgot to add someone to this list.<br /><br /></span><span style=" font-size:9pt; font-weight:600;">All the community on </span><a href="http://www.flickr.com/groups/qtpfsgui"><span style=" text-decoration: underline; color:#0057ae;">Flickr</span></a><span style=" font-size:9pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Hugin's </span><span style=" font-size:9pt; font-weight:600; font-style:italic;">align_image_stack</span><span style=" font-size:9pt; font-weight:600;"> and more</span><span style=" font-size:9pt;"><br /> Pablo D'Angelo<br /> <br /></span><span style=" font-size:9pt; font-weight:600;">Opensuse 10.2 and 10.3 packager</span><span style=" font-size:9pt;"><br /> Peter Linnell<br /> <br /></span><span style=" font-size:9pt; font-weight:600;">Fedora packager and bug reports</span><span style=" font-size:9pt;"><br /> Douglas E. Warner<br /><br /></span><span style=" font-size:9pt; font-weight:600;">openSUSE 10.2 packager</span><span style=" font-size:9pt;"><br /> Rauch Christian<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Gentoo Linux Ebuild</span><span style=" font-size:9pt;"><br /> Rene Zbinden<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Various suggestions</span><span style=" font-size:9pt;"><br /> Arne Hagenah<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Tiff LDR bugfixes and suggestion</span><span style=" font-size:9pt;"><br /> Ignacy Gawedzki<br /> </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">DCRaw</span><span style=" font-size:9pt;"><br /> Dave Coffin<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">And also</span><span style=" font-size:9pt;"><br /> Erik Ouchterlony<br /> Antoine Latter<br /> Frank Boehme<br /> Sloan Poe<br /> Elizabeth Oldham </span></p></body></html> + + + + + &License Agreement + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + &OK + + + + + BatchHDRDialog + + + Batch HDR Dialog + + + + + Number of bracketed images: + + + + + + Select the number of bracketed pictures used to create the HDRs + + + + + Output + + + + + Output format: + + + + + Choose an HDR output file format + + + + + hdr + + + + + exr + + + + + PFS + + + + + tiff + + + + + Predefined profile: + + + + + Choose one of the creation predefined profiles. +See documentation for more information. + + + + + Profile 1 + + + + + Profile 2 + + + + + Profile 3 + + + + + Profile 4 + + + + + Profile 5 + + + + + Profile 6 + + + + + Alignment + + + + + Auto align the bracketed pictures + + + + + Auto-align images + + + + + Use Hugin's align_image_stack engine + + + + + Hugin's align_image_stack + + + + + Use MTB (Median Threshold Bitmap) engine + + + + + MTB + + + + + Progress + + + + + Folder where created HDRs are saved + + + + + + Select... + + + + + Folder where bracketed pictures are located (in alphabetical order) + + + + + Input folder: + + + + + Output folder: + + + + + &Cancel + + + + + &Start + + + + + &Close + + + + + Choose a source directory + + + + + Choose a output directory + + + + + + Warning + + + + + Total number of pictures must be a multiple of number of bracketed images. + + + + + The chosen output directory contains HDR files. Those files might be overwritten. + +Continue? + + + + + Started processing... + + + + + Creating HDR... + + + + + Completed with errors + + + + + Completed without errors + + + + + Error: missing EXIF data + + + + + Aligning... + + + + + Written + + + + + Error: + + + + + Aborting... + + + + + BatchTMDialog + + + Batch Tone Mapping + + + + + HDR Images to Convert + + + + + List of HDRs that will be tone mapped + + + + + Add Directory (Alt+D) + + + + + + + + + + + ... + + + + + Alt+D + + + + + Add Files (Alt+F) + + + + + Alt+F + + + + + Remove Files (Alt+R) + + + + + Alt+R + + + + + Tone Mapping Settings + + + + + Add Directory (Alt+I) + + + + + Alt+I + + + + + Add Files (Alt+L) + + + + + Alt+L + + + + + Add from Database (Alt+B) + + + + + Alt+B + + + + + Remove Settings (Alt+M) + + + + + Alt+M + + + + + List of Tone Mapping Setting files that will be used to tone map each HDR + + + + + Specify output folder for the tone mapped files + + + + + Output + + + + + Ouput Image Width: + + + + + % + + + + + Output Image Quality + + + + + Output Folder: + + + + + Selec&t... + + + + + Conversion Log + + + + + Batch operations report + + + + + &Show only: + + + + + Filter messages based on severity + + + + + All messages + + + + + Errors only + + + + + Success messages + + + + + &Filter log messages: + + + + + Clear filter text + + + + + Overall completion progress + + + + + &Cancel + + + + + Start batch tone mapping + + + + + &Start + + + + + Using %1 thread(s) + + + + + Saving using file format: %1 + + + + + + + Choose a directory + + + + + All HDR images + + + + + Select input images + + + + + Load tone mapping settings text files... + + + + + LuminanceHDR tone mapping settings text file (*.txt) + + + + + Processing... + + + + + Start processing... + + + + + Close + + + + + &Done + + + + + All tasks completed. + + + + + Aborting... + + + + + BatchTMJob + + + [T%1] Start processing %2 + + + + + [T%1] Successfully load %2 + + + + + [T%1] Successfully saved LDR file: %2 + + + + + [T%1] ERROR: Cannot save to file: %2 + + + + + [T%1] ERROR: Loading of %2 failed + + + + + CommandLineInterfaceManager + + + Error: Alignment engine not recognized. + + + + + Error: Wrong HDR creation format. + + + + + Error: Unknown weight function specified. + + + + + Error: Unknown response curve specified. + + + + + Error: Unknown HDR creation model specified. + + + + + Error: Unknown HDR creation format specified. + + + + + Error: Unknown tone mapping operator specified. + + + + + Error: Wrong tone mapping option format. + + + + + Error: Unknown tone mapping option specified. + + + + + Error: Quality must be in the range [0-100]. + + + + + Error: Unknown option %1. + + + + + Error: Missing argument for %1. + + + + + Error: The number of EV values specified is different from the number of input files. + + + + + Load file %1 failed + + + + + Error: Exif data missing in images and EV values not specified on the commandline, bailing out. + + + + + EV values have been assigned. + + + + + Failed executing align_image_stack + + + + + Failed aligning images. + + + + + Creating (in memory) the HDR. + + + + + Saving to file %1. + + + + + + Image %1 saved successfully + + + + + Could not save %1 + + + + + NOT Saving HDR image to file. %1 + + + + + Tonemapping requested, saving to file %1. + + + + + ERROR: Cannot save to file: %1 + + + + + Failed loading images + + + + + Usage: %1 [OPTIONS]... [INPUTFILES]... + + + + + Commandline interface to %1. + + + + + -h --help Display this help. + + + + + -v --verbose Print more messages during execution. + + + + + -a --align AIS|MTB Align Engine to use during HDR creation (default: no alignment). + + + + + -e --ev EV1,EV2,... Specify numerical EV values (as many as INPUTFILES). + + + + + -c --config HDR creation config. Possible values: + + + + + weight=triangular|gaussian|plateau:response_curve=from_file|linear|gamma|log|robertson:model=robertson|debevec:curve_filename=your_file_here.m + + + + + (Default is weight=triangular:response_curve=linear:model=debevec) + + + + + -l --load HDR_FILE Load an HDR instead of creating a new one. + + + + + -s --save HDR_FILE Save to a HDR file format. (default: don't save) + + + + + -g --gamma VALUE Gamma value to use during tone mapping. (default: 1) + + + + + -r --resize VALUE Width you want to resize your HDR to (resized before gamma and tone mapping) + + + + + -t --tmo Tone mapping operator. Legal values are: + + + + + ashikhmin|drago|durand|fattal|pattanaik|reinhard02|reinhard05|mantiuk06|mantiuk08 + + + + + (Default is mantiuk06) + + + + + -p --tmoptions Tone mapping operator options. Legal values are: + + + + + alpha=VALUE:beta=VALUE:color=VALUE:noise=VALUE:new=true|false (for fattal) + + + + + contrast=VALUE:saturation=VALUE:detail=VALUE:equalization=true|false (for mantiuk06) + + + + + colorsaturation=VALUE:contrastenhancement=VALUE:luminancelevel=VALUE:setluminance=true|false (for mantiuk08) + + + + + localcontrast=VALUE:eq=2|4:simple=true|false (for ashikhmin) + + + + + sigma_s=VALUE:sigma_r=VALUE:base=VALUE (for durand) + + + + + bias=VALUE (for drago) + + + + + local=true|false:autolum=true|false:cone=VALUE:rod=VALUE:multiplier=VALUE (for pattanaik) + + + + + scales=true|false:key=VALUE:phi=VALUE:num=VALUE:low=VALUE:high=VALUE (for reinhard02) + + + + + brightness=VALUE:chroma=VALUE:lightness=VALUE (for reinhard05) + + + + + (default is contrast=0.3:equalization=false:saturation=1.8, see also -o) + + + + + -o --output LDR_FILE File name you want to save your tone mapped LDR to. + + + + + -q --quality VALUE Quality of the saved tone mapped file (0-100). + + + + + (No tonemapping is performed unless -o is specified). + + + + + You must either load an existing HDR file (via the -l option) or specify INPUTFILES to create a new HDR. + + + + + + DnDOption + + + Drag and Drop + + + + + <b>What would you like to do with the file(s)?</b> + + + + + &Open + + + + + Open an existing HDR image + + + + + &New + + + + + Create a new HDR image from one or more images + + + + + &Cancel + + + + + Cancel the drag and drop process and return to the main window + + + + + EditingTools + + + Pan the image to a region + + + + + Choose a directory and a prefix + + + + + EditingToolsDialog + + + Editing Tools + + + + + Visualization and Navigation + + + + + Fit to window + + + + + &Fit to Window + + + + + Original size + + + + + Origina&l Size + + + + + Zoom In + + + + + Zoom &In + + + + + Zoom Out + + + + + Zoom &Out + + + + + Preview &Mode: + + + + + Difference (E-P) + + + + + Overlay (E+P) + + + + + Editable Only (E) + + + + + Pivot Only (P) + + + + + Antighosting Mask + + + + + Mask Color + + + + + Images List + + + + + Ed&itable + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The currently selected image is the one that you can shift and paint an anti-ghosting mask on.</p></body></html> + + + + + The image currently selected in this list can be translated up,down,left and right using the controls below. +This image's histogram is diplayed in the widget above. + + + + + Select the previous image in both lists + + + + + Use this button to move the selection to the previous image in both lists. + + + + + Select the next image in both lists + + + + + Use this button to move the selection to the next image in both lists. + + + + + R&eference + + + + + The reference image is the one currently selected + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The image currently selected in this list serves as a reference position for the editable image</p></body></html> + + + + + Tools + + + + + Crop the stack of images after a selection with the left mouse button has been made + + + + + Clicking this button you will be able to crop all the images to the size that you have previously selected with the left mouse button (press and hold the left mouse button and move the pointer to select a crop area, then press this button). + + + + + &Crop All Images + + + + + Ctrl+X + + + + + &Anti Ghosting + + + + + &Save Images + + + + + Ctrl+S + + + + + A&dd Mask + + + + + Remove Mas&k + + + + + Size: + + + + + pixels + + + + + &Strength: + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This area shows the preview (using the preview mode on the left) between the editable and reference image.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If the same image is selected in both the editable and reference list, this area will show the image itself.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clicking and holding the left mouse button you will be able to select a crop area.</p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Shift values for the currently selected editable image</p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here the user can view and set the shift values for the currently selected editable image</p></body></html> + + + + + Shift values for editable image + + + + + Reset the shift values for the currently selected movable image + + + + + &Reset + + + + + Reset the shift values for all the images + + + + + Reset &All + + + + + &Horizontal: + + + + + &Vertical: + + + + + Insert an horizontal shift value for the currently selected movable image + + + + + + px + + + + + Insert a vertical shift value for the currently selected movable image + + + + + Move up of 1 pixel the currently selected movable image + + + + + Move down of 1 pixel the currently selected movable image + + + + + Move right of 1 pixel the currently selected movable image + + + + + Move left of 1 pixel the currently selected movable image + + + + + Histogram + + + + + Get information about the graphical elements + + + + + &What's this? + + + + + Shift+F1 + + + + + &Next > + + + + + &Cancel + + + + + GenericViewer + + + Pan the image to a region + + + + + HdrCreationManager + + + The image %1 is an 8 bit format (LDR) while the previous ones are not. + + + + + + The image %1 has an invalid size. + + + + + The image %1 is an 16 bit format while the previous ones are not. + + + + + HdrInputLoader + + + + + + ERROR loading %1 + + + + + ERROR: The file<br>%1<br> is not a 8 bit or 16 bit tiff. + + + + + ERROR: %1 + + + + + ERROR: Failed Loading file: %1 + + + + + HdrViewer + + + &Mapping: + + + + + Histogram: + + + + + Linear + + + + + Gamma 1.4 + + + + + Gamma 1.8 + + + + + Gamma 2.2 + + + + + Gamma 2.6 + + + + + Logarithmic + + + + + HdrWizard + + + HDR Creation Wizard + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">HDR Creation Wizard</span></p> +<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:16pt; font-weight:600;"></p> +<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:16pt; font-weight:600;"></p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This tool help you in fusing bracketed images taken with different exposures to make an <a href="http://en.wikipedia.org/wiki/High_Dynamic_Range"><span style=" text-decoration: underline; color:#0057ae;">HDR Image</span></a>. </p> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The bracketed images must be taken with the same camera in the same conditions and possibly using a tripod.</p> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This assistant will help you through all the steps: importing the images, aligning them, choosing a profile to create an HDR.</p> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Constraints:</p> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">All images must have same dimension</p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">All images must have same color depth</p></body></html> + + + + + [1/2] Load Input Images + + + + + Currently Loaded &Files + + + + + Add Images + + + + + + + ... + + + + + Remove Selected Image + + + + + Clear List + + + + + Preview + + + + + Selected Image &Exposure + + + + + EV: + + + + + Alignment + + + + + &Autoalign images + + + + + Hugin's align_image_stack + + + + + MTB + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Start loading a set of images with different exposure</span></p></body></html> + + + + + [2/2] Choose Settings for HDR Creation + + + + + Choose one of the predefined profiles: + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">The first predefined profile in the list usually leads to best results. Change it only if the resulting HDR image is not good enough.</span></p></body></html> + + + + + Profile 1 + + + + + Profile 2 + + + + + Profile 3 + + + + + Profile 4 + + + + + Profile 5 + + + + + Profile 6 + + + + + Weighting function: + + + + + + + Triangular + + + + + + Response curve: + + + + + + + + Linear + + + + + HDR creation model: + + + + + + + Debevec + + + + + Anti-ghosting (beta!) + + + + + + + Gamma + + + + + + Log + + + + + Calibration + + + + + Amount of iterations: + + + + + Keep it small + + + + + Use this only if the default profiles above do not yield good results + + + + + Use custom configuration + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Choose one of the predefined profiles or use a custom configuration</span></p></body></html> + + + + + [2/2] Choose Custom Configuration + + + + + Weights: + + + + + Choose confidence function over all the possible pixel values: + + + + + + Gaussian + + + + + + Plateau + + + + + Response Curve: + + + + + Predefined response curves: + + + + + Load response function from file + + + + + Load... + + + + + Use calibration to find response curve (robertson02 algorithm) + + + + + Save response function to file: + + + + + Save As... + + + + + HDR Creation Equation: + + + + + Choose model: + + + + + + Robertson + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Here you can customize the HDR creation process</span></p></body></html> + + + + + + &Next > + + + + + &Cancel + + + + + Image Filename + + + + + Exposure + + + + + All formats (*.jpeg *.jpg *.tiff *.tif *.crw *.cr2 *.nef *.dng *.mrw *.orf *.kdc *.dcr *.arw *.raf *.ptx *.pef *.x3f *.raw *.sr2 *.rw2 *.3fr *.mef *.mos *.erf *.nrw *.srw + + + + + *.JPEG *.JPG *.TIFF *.TIF *.CRW *.CR2 *.NEF *.DNG *.MRW *.ORF *.KDC *.DCR *.ARW *.RAF *.PTX *.PEF *.X3F *.RAW *.SR2 *.RW2 *.3FR *.MEF *.MOS *.ERF *.NRW *.SRW);; + + + + + JPEG (*.jpeg *.jpg *.JPEG *.JPG);; + + + + + TIFF Images (*.tiff *.tif *.TIFF *.TIF);; + + + + + RAW Images (*.crw *.cr2 *.nef *.dng *.mrw *.orf *.kdc *.dcr *.arw *.raf *.ptx *.pef *.x3f *.raw *.sr2 *.rw2 *.3fr *.mef *.mos *.erf *.nrw *.srw + + + + + *.CRW *.CR2 *.NEF *.DNG *.MRW *.ORF *.KDC *.DCR *.ARW *.RAF *.PTX *.PEF *.X3F *.RAW *.SR2 *.RW2 *.3FR *.MEF *.MOS *.ERF *.NRW *.SRW) + + + + + Select the input images + + + + + Loading... + + + + + + Start loading a set of images with different exposure + + + + + <center><font color="#008400"><h3><b>Images Loaded.</b></h3></font></center> + + + + + <font color="#FF0000"><h3><b>WARNING:</b></h3></font> Luminance HDR was not able to find the relevant <i>EXIF</i> tags +for the following images: + <ul> %1</ul> <hr>You can still proceed creating an Hdr. To do so you have to insert <b>manually</b> the EV (exposure values) or stop difference values. <hr>If you want Luminance HDR to do this <b>automatically</b>, you have to load images that have at least +the following exif data: <ul><li>Shutter Speed (seconds)</li> <li>Aperture (f-number)</li></ul> <hr><b>HINT:</b> Losing EXIF data usually happens when you preprocess your pictures.<br> You can perform a <b>one-to-one copy of the exif data</b> between two sets of images via the <i><b>"Tools->Copy Exif Data..."</b></i> menu item. + + + + + EXIF data not found + + + + + + <center><h3><b>To proceed you need to manually set the exposure values.<br><font color="#FF0000">%1</font> values still required.</b></h3></center> + + + + + Loading Error: + + + + + Unknown + + + + + + + + Error... + + + + + align_image_stack failed to align images. + + + + + Failed to start external application "<em>align_image_stack</em>".<br>Please read "Help -> Contents... -> Setting up -> External Tools" for more information. + + + + + The external application "<em>align_image_stack</em>" crashed... + + + + + An unknown error occurred while executing the "<em>align_image_stack</em>" application... + + + + + Now click on next button + + + + + + + &Finish + + + + + Aligning... + + + + + + Processing... + + + + + Load a camera response curve file + + + + + + Camera response curve (*.m);;All Files (*) + + + + + Save a camera response curve file + + + + + Weights: + + + + + - Response curve: + + + + + - Model: + + + + + Logarithmic + + + + + From Calibration + + + + + From File + + + + + <center><font color="#008400"><h3><b>All the EV values have been set.<br>Now click on Next button.</b></h3></font></center> + + + + + HelpBrowser + + + Luminance HDR Help + + + + + Luminance Help + + + + + + &Print... + + + + + &Exit + + + + + + &Find... + + + + + Find &Next... + + + + + Find &Previous... + + + + + &Add + + + + + + &Delete + + + + + + D&elete All + + + + + Help SideBar + + + + + LuminanceHDR Online Help + + + + + &File + + + + + &Edit + + + + + &View + + + + + + &Bookmarks + + + + + &Quit + + + + + Find &Next + + + + + Find &Previous + + + + + &Contents + + + + + &Search + + + + + &Add Bookmark + + + + + Find + + + + + Search Term: + + + + + New Bookmark + + + + + New Bookmark's Title: + + + + + <h2><p>Sorry, no manual is installed!</p><p>Please contact your package provider or LuminanceHDR team if you built the application yourself</p></h2> + HTML message for no documentation available to show + + + + + LuminanceHDR - Help Browser + + + + + This protocol is not handled by the help browser. +Do you want to open the link with the default application +associated with the protocol? + + + + + HelpSideBar + + + Contents + + + + + &Contents + + + + + Se&arch + + + + + Searching is case insensitive + + + + + &Search + + + + + + 1 + + + + + Book&marks + + + + + &Add + + + + + &Remove + + + + + R&emove All + + + + + IOWorker + + + ERROR: The following file is not readable: %1 + + + + + ERROR: File %1 has unsupported extension. + + + + + ERROR: Failed loading file: %1 + + + + + ImageQualityDialog + + + Unknown + + + + + ImgQualityDialog + + + Save as + + + + + Saved File Quality + + + + + Quality: + + + + + File size: + + + + + Unknown + + + + + Ca&lculate + + + + + &Save + + + + + &Cancel + + + + + LdrViewer + + + + LDR image [%1 x %2] + + + + + LevelsDialog + + + Levels and Gamma + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Adjust Color Levels</span></p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Input Levels</span></p></body></html> + + + + + Clip black + + + + + Gamma + + + + + Clip White + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Output Levels</span></p></body></html> + + + + + &Reset + + + + + &Cancel + + + + + &OK + + + + + MainWindow + + + + Luminance HDR + + + + + &Tools + + + + + &Help + + + + + &Windows + + + + + &View + + + + + HDR &Histogram + + + + + &Toolbars + + + + + &File + + + + + &Edit + + + + + Main Toolbar + + + + + &New HDR image... + + + + + New HDR image + + + + + + Create a new HDR image from a set of LDR or Raw images + + + + + Create a new HDR image from a set of JPEG, Raw, or 8/16 bpc TIFF files + + + + + Ctrl+N + + + + + &Open HDR image... + + + + + Open HDR image + + + + + + + Load an existing HDR image file (OpenEXR, Radiance RGBE, PFS stream, RAW or TIFF) + + + + + Ctrl+O + + + + + &Save as... + + + + + Save as... + + + + + + + Save image (HDR or LDR) + + + + + Ctrl+S + + + + + &Quit + + + + + + Quit Luminance HDR + + + + + Exit + + + + + Ctrl+Q + + + + + Rotate c&ounter-clockwise + + + + + Rotate counter-clockwise + + + + + + + Rotate counter-clockwise the HDR image + + + + + < + + + + + Rotate c&lockwise + + + + + Rotate clockwise + + + + + + + Rotate clockwise the HDR image + + + + + > + + + + + Low Dynamic Range + + + + + + L + + + + + Fit to Dynamic Range + + + + + Fit to dynamic range + + + + + \ + + + + + Shrink Dynamic Range + + + + + [ + + + + + Extend Dynamic Range + + + + + ] + + + + + Decrease Exposure + + + + + 0 + + + + + &Increase Exposure + + + + + 9 + + + + + &Contents... + + + + + About... + + + + + + + Open user manual for Luminance HDR + + + + + F1 + + + + + &Normal Size + + + + + Normal size + + + + + + + View HDR image at its normal size + + + + + O + + + + + Zoom &In + + + + + + + Zoom in + + + + + + + + + + + Zoom &Out + + + + + + + Zoom out + + + + + - + + + + + &Fit in Window + + + + + + Fit in Window + + + + + + Make the HDR image fit its window + + + + + W + + + + + &Preferences... + + + + + Luminance Options + + + + + + + Set various options of Luminance + + + + + Ctrl+P + + + + + &Resize... + + + + + Resize the HDR image + + + + + + + Change size of the HDR image + + + + + Ctrl+R + + + + + Copy &Exif Data... + + + + + Copy Exif Data + + + + + + + Copy Exif data between two sets of files + + + + + Ctrl+E + + + + + &Align Images... + + + + + + + WORK IN PROGRESS + + + + + &About Qt + + + + + Show information about Qt + + + + + + Show information about Qt library that is used by Luminance + + + + + &Tile + + + + + &Cascade + + + + + + Cascade + + + + + Toolbars + + + + + Text &under Icons + + + + + &Icons Only + + + + + &Text Only + + + + + Text &Alongside Icons + + + + + &Batch Tone Mapping... + + + + + Convert multiple HDR images to LDR + + + + + + Convert multiple HDR images to LDR using existing settings files + + + + + Ctrl+B + + + + + &What's This? + + + + + + Get verbose information about user interface elements + + + + + Shift+F1 + + + + + About &Luminance HDR + + + + + Show information about Luminance HDR + + + + + + Show information about Luminance HDR, its authors and contributors + + + + + Save HDR image &preview... + + + + + + + Save the current HDR Preview to an LDR file + + + + + &Projective Transformation... + + + + + + + Apply projective transformation to the current HDR image + + + + + &Crop to Selection + + + + + Crop to Selection + + + + + + Crop the image to selection rectangle + + + + + Click and drag inside image area to create a selection, then use this button to crop to a new HDR image + + + + + Remove &Selection + + + + + Remove selection rectangle + + + + + + Remove selection rectangle from image area + + + + + Make a &Donation + + + + + Ctrl+D + + + + + Lock Viewers + + + + + Synchronize viewers mode (fit, fill or 1:1). + + + + + Lock the images for sync view + + + + + Minimize + + + + + Maximize + + + + + Bring All to Front + + + + + Show Preview Panel + + + + + Show/Hide Preview Panel + + + + + Ctrl+V + + + + + Adjust &Levels + + + + + + Adjust Levels + + + + + + Tune the histogram for the current LDR + + + + + Ctrl+L + + + + + Save All + + + + + + Save All LDR files + + + + + Remove Tab + + + + + Ctrl+W + + + + + Fill Window + + + + + Fill window with the current viewer + + + + + Batch HDR... + + + + + Ctrl+H + + + + + Soft Proofing + + + + + Gamut Check + + + + + Ready. Now open an existing HDR image or create a new one! + + + + + All HDR formats + + + + + Load one or more HDR images... + + + + + Save files in + + + + + Failed to save + + + + + Done! + + + + + Aborting... + + + + + Cropped Image + + + + + Unsaved changes... + + + + + This HDR image has unsaved changes.<br>Do you want to save it? + + + + + Untitled + + + + + Untitled %1 + + + + + Error: %1 + + + + + PreferencesDialog + + + Preferences + + + + + External Tools + + + + + HDR Options + + + + + Interface + + + + + Tone Mapping + + + + + RAW Conversion + + + + + Color Management + + + + + Language + + + + + Default Previews Width + + + + + px + + + + + Always show Preview Panel + + + + + Always show Wizard first page + + + + + HDR TIFF Default File Format + + + + + Good quality and smaller file size + + + + + LogLuv TIFF (float, 16bit per color channel) + + + + + Better quality, larger file size, better compatibility with other applications + + + + + Float TIFF (float, 32bit per color channel) + + + + + Show negative numbers as: + + + + + Show nan and +/-Inf values as: + + + + + Temporary Working Folder + + + + + &Browse... + + + + + + Which LDR image format to save to + + + + + Batch Tonemapping Default Output Format + + + + + JPEG + + + + + PNG + + + + + PPM + + + + + PBM + + + + + BMP + + + + + TIFF + + + + + + Amount of threads to use on multicore/SMP machines + + + + + Batch Tonemapping Number of Threads + + + + + General + + + + + Quality: + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Quality (interpolation)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the demosaicing RAW images decoding interpolation method. A demosaicing algorithm is a digital image process used to interpolate a complete image from the partial raw data received from the color-filtered image sensor internal to many digital cameras in form of a matrix of colored pixels. Also known as CFA interpolation or color reconstruction, another common spelling is demosaicing. There are 4 methods to demosaicing RAW images:</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Bilinear</span>: use high-speed but low-quality bilinear interpolation (default - for slow computer). In this method, the red value of a non-red pixel is computed as the average of the adjacent red pixels, and similar for blue and green.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">VNG</span>: use Variable Number of Gradients interpolation. This method computes gradients near the pixel of interest and uses the lower gradients (representing smoother and more similar parts of the image) to make an estimate.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">PPG</span>: use Patterned Pixel Grouping interpolation. Pixel Grouping uses assumptions about natural scenery in making estimates. It has fewer color artifacts on natural images than the Variable Number of Gradients method.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">AHD</span>: use Adaptive Homogeneity-Directed interpolation. This method selects the direction of interpolation so as to maximize a homogeneity metric, thus typically minimizing color artifacts.</p></body></html> + + + + + Bilinear + + + + + VNG + + + + + PPG + + + + + AHD + + + + + + + + + + + + + + + + + ... + + + + + Median: + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Median Filter</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set here the passes used by median filter applied after interpolation to Red-Green and Blue-Green channels.</p></body></html> + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Do not stretch or rotate pixels</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">For Fuji Super CCD cameras, show the image tilted 45 degrees. For cameras with non-square pixels, do not stretch the image to its correct aspect ratio. In any case, this option guarantees that each output pixel corresponds to one RAW pixel.</p></body></html> + + + + + Do not stretch or rotate pixels + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Interpolate RGB as four colors</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The default is to assume that all green pixels are the same. If even-row green pixels are more sensitive to ultraviolet light than odd-row this difference causes a mesh pattern in the output; using this option solves this problem with minimal loss of detail.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">To resume, this option blurs the image a little, but it eliminates false 2x2 mesh patterns with VNG quality method or mazes with AHD quality method.</p></body></html> + + + + + Interpolate RGB using 4 colours + + + + + White Balance + + + + + Method + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">White Balance Method</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Configure the raw white balance :</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Default D65</span>: Use a standard daylight D65 white balance (dcraw defaults)</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Camera</span>: Use the white balance specified by the camera. If not available, reverts to default neutral white balance</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Automatic</span>: Calculates an automatic white balance averaging the entire image</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Manual</span>: Set a custom temperature and green level values</p></body></html> + + + + + Predefined D65 + + + + + + Camera + + + + + Auto + + + + + Manual + + + + + Temperature (Kelvin) + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Temperature</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set here the color temperature in Kelvin.</p></body></html> + + + + + Green + + + + + Set here the green component to set magenta color cast removal level + + + + + Highlights + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Highlights</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the highlight clipping method:</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Solid white</span>: clip all highlights to solid white</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Unclip</span>: leave highlights unclipped in various shades of pink</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Blend</span>: Blend clipped and unclipped values together for a gradual fade to white</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Rebuild</span>: reconstruct highlights using a level value</p></body></html> + + + + + Solid White + + + + + Do not transform + + + + + Blend + + + + + Reconstruct + + + + + Level + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Level</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Specify the reconstruct highlight level. Low values favor whites and high values favor colors.</p></body></html> + + + + + Correct false colors in highlights + + + + + Auto Brightness + + + + + Brightness + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Brighness</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Specify the brightness level of output image. The default value is 1.0</p></body></html> + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Black point</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Use a specific black point value to decode RAW pictures. If you set this option to off, the Black Point value will be automatically computed.</p></body></html> + + + + + Black + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Black point value</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Specify specific black point value of the output image.</p></body></html> + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">White point</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Use a specific white point value to decode RAW pictures. If you set this option to off, the White Point value will be automatically computed.</p></body></html> + + + + + Saturation + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">White point value</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Specify specific white point value of the output image.</p></body></html> + + + + + NR and CA Correction + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Enable Noise Reduction</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Use wavelets to erase noise while preserving real detail.</p></body></html> + + + + + Enable noise reduction + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Threshold</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set here the noise reduction threshold value to use.</p></body></html> + + + + + Threshold: + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Enable Chromatic Aberration correction</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Enlarge the raw red and blue layers by the given factors, typically 0.999 to 1.001, to correct chromatic aberration.</p></body></html> + + + + + Enable Chromatic Aberration correction + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Red multiplier</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set here the magnification factor of the red layer</p></body></html> + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Blue multiplier</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set here the magnification factor of the blue layer</p></body></html> + + + + + Red Component + + + + + Blue Component + + + + + Monitor + + + + + Monitor Profile + + + + + + + Browse... + + + + + Camera profile + + + + + Printer + + + + + Printer profile + + + + + align_image_stack command line arguments + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Read </span><span style=" font-family:'Sans Serif'; font-style:italic;">Help &gt; Contents &gt; Setting up Luminance &gt; External tools</span><span style=" font-family:'Sans Serif';"> to find out more about align_image_stack command line arguments</span></p></body></html> + + + + + &Cancel + + + + + &OK + + + + + Choose a directory + + + + + + + Open ICC Profile + + + + + Color profile (*.icc *.ICC *.icm *.ICM) + + + + + + Color profile (*.icc) + + + + + PreviewPanel + + + Preview + + + + + Mantiuk '06 + + + + + Mantiuk '08 + + + + + Fattal + + + + + Drago + + + + + Durand + + + + + Reinhard '02 + + + + + Reinhard '05 + + + + + Ashikhmin + + + + + Pattanaik + + + + + ProjectionsDialog + + + Projective Transformation + + + + + Projections + + + + + Source Projection: + + + + + + Polar + + + + + + Angular + + + + + + Cylindrical + + + + + + Mirror Ball + + + + + Destination Projection: + + + + + Angles: + + + + + + + + ° + + + + + Bilinear Interpolation + + + + + Oversample factor: + + + + + Rotation (degrees) + + + + + Yaw: + + + + + Pitch: + + + + + Roll: + + + + + &Cancel + + + + + &OK + + + + + QApplication + + + ERROR: cannot load Tone Mapping Setting file: + + + + + ERROR: File too old, cannot parse Tone Mapping Setting file: + + + + + ERROR: cannot parse Tone Mapping Setting file: + + + + + QObject + + + + Error Opening RAW File + + + + + Error Unpacking RAW File + + + + + Error Processing RAW File + + + + + Memory Error in processing RAW File + + + + + Error Creating PFS Frame + + + + + Cannot convert %1 to a float + + + + + Cannot convert %1 to an integer + + + + + Input file %1 + + + + + Running in HDR-creation mode. + + + + + Running in Load-HDR mode. + + + + + Temporary directory: %1 + + + + + Using %1 threads. + + + + + Loading file %1 + + + + + Successfully loaded file %1. + + + + + Aborting... + + + + + Cannot find Qt's JPEG Plugin...<br>Please unzip the DLL package with the option "use folder names" activated. + + + + + All LDR formats + + + + + Save the LDR image as... + + + + + All HDR formats + + + + + Save the HDR image as... + + + + + Save as... + + + + + Option -v -a... + + + + + LuminanceHDR requires align_image_stack to be executed with the "-v -a aligned_" options. Command line options have been corrected. + + + + + + + + Warning + + + + + I cannot open monitor profile. Please select a different one. + + + + + I cannot open printer profile. Please select a different one. + + + + + Please select a printer profile . + + + + + I cannot perform the color transform. Please select a different monitor profile. + + + + + ResizeDialog + + + Scale Image + + + + + Hdr Image Size + + + + + Width: + + + + + Switch between pixels or percentage + + + + + Pixels + + + + + Percent + + + + + Height: + + + + + Result size + + + + + Restore original size + + + + + &Reset + + + + + &Cancel + + + + + &Scale + + + + + SavedParametersDialog + + + Saved Parameters + + + + + + Comment + + + + + TM Operator + + + + + Simple + + + + + Equation 2 + + + + + Local Contrast Threshold + + + + + Bias + + + + + Spatial Kernel Sigma + + + + + Range Kernel Sigma + + + + + Base Contrast + + + + + Alpha + + + + + Beta + + + + + + Color Saturation + + + + + Noise Reduction + + + + + Old Fattal + + + + + Contrast Equalization + + + + + Contrast Factor + + + + + Saturation Factor + + + + + Detail Factor + + + + + Contrast Enhancement + + + + + Luminance Level + + + + + Manual Luminance Level + + + + + Cone and Rod based on Luminance + + + + + Local Tonemapping + + + + + Cone Level + + + + + Rod Level + + + + + Multiplier + + + + + Use Scales + + + + + Key Value + + + + + Phi Value + + + + + Range + + + + + Lower Scale + + + + + Upper Scale + + + + + Brightness + + + + + Chromatic Adaptation + + + + + Light Adaptation + + + + + Pre-gamma + + + + + SavingParameters + + + Saving Parameters + + + + + Enter a short comment for the saved parameters: + + + + + SplashLuminance + + + Luminance HDR - Make a Donation + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Droid Sans'; font-size:8pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-weight:600; color:#000000;">Luminance HDR</span><span style=" font-family:'Sans Serif'; color:#000000;"> is open-source software and its development required hundreds of hours of work.<br /><br />If you like it, if you use it in your work and you would like to see it gradually improved,<br />please support its authors by making a donation.<br /><br />Would you like to make a donation for Luminance HDR now?</span></p></body></html> + + + + + Yes, I'd love to! + + + + + Ask me again later + + + + + No, Stop bothering me! + + + + + TMOProgressIndicator + + + Abort computation + + + + + TonemappingPanel + + + Tone mapping operators and their options + + + + + Start tonemapping (CTRL+T) + + + + + Use current parameters above (pregamma and tone mapping operator) to compute an LDR image + + + + + &Tonemap + + + + + Ctrl+T + + + + + Update current LDR + + + + + Tonemap + + + + + Mantiuk '06 + + + + + Mantiuk '08 + + + + + Fattal + + + + + Drago + + + + + Durand + + + + + Reinhard '02 + + + + + Reinhard '05 + + + + + Ashikhmin + + + + + Pattanaik + + + + + Operator + + + + + Contrast Factor + + + + + Saturation Factor + + + + + Detail Factor + + + + + Contrast Equalization + + + + + Predefined Display + + + + + Lcd Office + + + + + Lcd + + + + + Lcd Bright + + + + + CRT + + + + + + Color Saturation + + + + + Contrast Enhancement + + + + + Enable +Luminace Level + + + + + Luminance Level + + + + + Alpha + + + + + Beta + + + + + Noise Reduction + + + + + Version 2.3.0 + + + + + Bias + + + + + Spatial Kernel Sigma + + + + + Range Kernel Sigma + + + + + Base Contrast + + + + + Key Value + + + + + Phi + + + + + Use Scales + + + + + Range + + + + + Lower Scale + + + + + Upper Scale + + + + + Brightness + + + + + Chromatic Adaptation + + + + + Light Adaptation + + + + + Local Contrast Threshold + + + + + Simple + + + + + Equation Number + + + + + Eqn 2 + + + + + Eqn 4 + + + + + Multiplier + + + + + Local Tone Mapping + + + + + Auto Cone/Rod + + + + + Cone Level + + + + + Rod Level + + + + + Restore operator's default values + + + + + Restore + + + + + Previous applied settings + + + + + Previous + + + + + Next applied settings + + + + + Next + + + + + Here you can load and save a tone mapping settings file.<br>You can also apply the contents of the currently loaded settings file. + + + + + Tone Mapping Settings + + + + + Save current parameters to a text file + + + + + Save current parameters (pregamma and TMO) to a text file. + + + + + &Save to File + + + + + Load an existing text file containing pregamma and TMO settings + + + + + Load an existing text file containing pregamma and TMO settings. + + + + + &Load from File + + + + + Save current parameters + + + + + + + ... + + + + + Load saved parameters + + + + + Load parameters by comment + + + + + Here you can apply a gamma correction to the HDR.<br>The gamma correction will applied before tone mapping. + + + + + Process + + + + + &Result Size + + + + + + Gamma applied before tonemapping + + + + + Pre-gamma + + + + + Restore pregamma's default value (1) + + + + + Size of the resulting LDR image + + + + + Here you can choose the size of the resulting LDR image. + + + + + Set Custom Output Size + + + + + Clicking this button you will be able to insert a <i>width</i> value for the size of the resulting LDR image.<br>After pressing Enter (or Return) a height value will be automatically computed and the new size added to the list. + + + + + TM Database Problem + + + + + The database used for saving TM parameters cannot be opened. +Error: %1 + + + + + Load a tonemapping settings text file... + + + + + + LuminanceHDR tonemapping settings text file (*.txt) + + + + + + + + Aborting... + + + + + File is not readable (check existence, permissions,...) + + + + + Save tonemapping settings text file to... + + + + + File is not writable (check permissions, path...) + + + + + File is not readable (check permissions, path...) + + + + + Error: The tone mapping settings file format has changed. This (old) file cannot be used with this version of LuminanceHDR. Create a new one. + + + + + Custom LDR size + + + + + Enter the width of the new size: + + + + + TonemappingWarningDialog + + + Fattal Warning + + + + + This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. + +Do you want to continue? + + + + + TransplantExifDialog + + + Copy Exif data + + + + + From + + + + + + Append files to the list + + + + + + Remove selected file(s) from the list + + + + + + Move up selected file(s) + + + + + + Move down selected file(s) + + + + + To + + + + + Log + + + + + Exif operations report + + + + + &Show only: + + + + + Filter messages based on severity + + + + + All messages + + + + + Errors only + + + + + &Filter log messages: + + + + + Clear filter text + + + + + Keep existing Exif tags in destination file + + + + + &Cancel + + + + + &Start + + + + + + All Supported formats + + + + + + Select the input images + + + + + &Done + + + + + UMessageBox + + + %1 License document not found, you can find it online: %2here%3 + %2 and %3 are html tags + + + + + Donation + + + + + Would you like to donate? + + + + + Yes, I'd love to! + + + + + Stop Bothering Me + + + + + Remind me later + + + + diff -Nru luminance-2.2.1/i18n/lang_hu.ts luminance-2.3.0/i18n/lang_hu.ts --- luminance-2.2.1/i18n/lang_hu.ts 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/i18n/lang_hu.ts 2012-07-01 09:10:50.000000000 +0000 @@ -63,7 +63,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:11pt; font-weight:400; font-style:normal;"> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#00007f;">Luminance HDR</span> — HDR imaging workflow application<br />(c) 2006-2009, Giuseppe Rota</p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010, 2011, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010-2012, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> @@ -86,7 +86,16 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:danielkaneider@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">danielkaneider@users.sourceforge.net</span></a></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; text-decoration: underline; color:#0000ff;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">pfs{tools|calibration|tmo} codebase</span><span style=" font-size:9pt;"><br /> Grzegorz Krawczyk<br /> </span><a href="mailto:krawczyk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">krawczyk@mpi-sb.mpg.de</span></a><span style=" font-size:9pt;"><br /> <br /> Rafal Mantiuk<br /> </span><a href="mailto:mantiuk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mantiuk@mpi-sb.mpg.de </span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-family:'Sans Serif'; font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Chinese translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Lei Zhao</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Slovakian translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Zuzana Cupkova</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Hindi translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Rohit Sharma</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> @@ -110,7 +119,7 @@ Choose one of the creation predefined profiles. -See documentation for more informations. +See documentation for more information. @@ -182,12 +191,8 @@ - Messages - - - Choose a directory - Válasszon egy mappát + Válasszon egy mappát Started processing... @@ -238,14 +243,6 @@ - Select &Input Folder - - - - Select &Output Folder - - - &Cancel Mé&gsem @@ -261,6 +258,48 @@ Aborting... Megszakítás... + + Warning + + + + Total number of pictures must be a multiple of number of bracketed images. + + + + Output + Eredmény + + + Progress + + + + Select... + + + + Input folder: + + + + Output folder: + + + + Choose a source directory + + + + Choose a output directory + + + + The chosen output directory contains HDR files. Those files might be overwritten. + +Continue? + + BatchTMDialog @@ -270,15 +309,15 @@ Add &Directory - &Mappa hozzáadása + &Mappa hozzáadása &Add Files - &Fájlok hozzáadása + &Fájlok hozzáadása &Remove Files - Fájlok &törlése + Fájlok &törlése List of HDRs that will be tone mapped @@ -286,15 +325,15 @@ Add D&irectory - Ma&ppa hozzáadása + Ma&ppa hozzáadása Add Fi&les - Fá&jlok hozzáadása + Fá&jlok hozzáadása R&emove Files - Fájlok tö&rlése + Fájlok tö&rlése Output @@ -302,7 +341,7 @@ Select &Output Folder... - &Eredmények mappája... + &Eredmények mappája... &Show only: @@ -338,27 +377,27 @@ Add all the HDRs in a directory to the list - A mappában levő összes HDR hozzáadása + A mappában levő összes HDR hozzáadása Add single HDR files to the list - HDR fájlok hozzáadása egyenként + HDR fájlok hozzáadása egyenként Remove single HDR files to the list - HDR fájlok törlése egyenként + HDR fájlok törlése egyenként Add all the Tone Mapping Setting files in a directory to the list - A mappában levő összes árnyalatnövelési jellemző fájl hozzáadása + A mappában levő összes árnyalatnövelési jellemző fájl hozzáadása Add single Tone Mapping Setting files to the list - Árnyalatnövelési jellemző fájlok hozzáadása egyenként + Árnyalatnövelési jellemző fájlok hozzáadása egyenként Remove single Tone Mapping Setting files to the list - Árnyalatnövelési jellemző fájlok törlése egyenként + Árnyalatnövelési jellemző fájlok törlése egyenként List of Tone Mapping Setting files that will be used to tone map each HDR @@ -401,10 +440,6 @@ - Tone Mapping Settings Files - - - Conversion Log @@ -441,12 +476,96 @@ - Saving using file format: %1, (quality - if applicable): %2 + Aborting... + Megszakítás... + + + Tone Mapping Settings + + + + % - Aborting... - Megszakítás... + Output Image Quality + + + + Saving using file format: %1 + + + + Ouput Image Width: + + + + Output Folder: + + + + Selec&t... + + + + Add Directory (Alt+D) + + + + ... + + + + Alt+D + + + + Add Files (Alt+F) + + + + Alt+F + + + + Remove Files (Alt+R) + + + + Alt+R + + + + Add Directory (Alt+I) + + + + Alt+I + + + + Add Files (Alt+L) + + + + Alt+L + + + + Add from Database (Alt+B) + + + + Alt+B + + + + Remove Settings (Alt+M) + + + + Alt+M + @@ -523,7 +642,7 @@ Hiba: A megvilágítási értékek száma különbözik a feldolgozandó képek számától. - Error: Exif data missing in images and EV values not specifed on the commandline, bailing out. + Error: Exif data missing in images and EV values not specified on the commandline, bailing out. Hiba: Az EXIF adatok hiányoznak a képekből és nincs megadva megvilágítási érték a parancssorban, ezért megszakítva. @@ -695,6 +814,22 @@ Tonemapping requested, saving to file %1. + + Failed loading images + + + + Failed aligning images. + + + + Error: Quality must be in the range [0-100]. + + + + -q --quality VALUE Quality of the saved tone mapped file (0-100). + + DnDOption @@ -1032,6 +1167,10 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ha ugyanaz a kép lett kiválasztva eredetinek és szerkesztettniek is, akkor természetesen ez a kép lesz itt látható.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">A bal egérgomb nyomvatartásával ki lehet szabni a képet.</p></body></html> + + Histogram + + GenericViewer @@ -1069,6 +1208,10 @@ ERROR: %1 + + ERROR loading %1 + + HdrViewer @@ -1515,6 +1658,10 @@ Weights: Súlyok: + + align_image_stack failed to align images. + + HelpBrowser @@ -2297,43 +2444,11 @@ - Next - - - - Next Image - - - - Show Next Image - - - - Ctrl+PgDown - - - - Previous - - - - Previous Image - - - - Show Previous Image - - - - Ctrl+PgUp - - - Lock Viewers - Syncronize viewers mode (fit, fill or 1:1). + Synchronize viewers mode (fit, fill or 1:1). @@ -2432,11 +2547,12 @@ Error: %1 - - - ParametersDialog - Saved Parameters + Soft Proofing + + + + Gamut Check @@ -2476,43 +2592,43 @@ Czech - cseh + cseh English - angol + angol French - francia + francia German - német + német Indonesian - indonéziai + indonéziai Italian - olasz + olasz Polish - lengyel + lengyel Russian - orosz + orosz Spanish - spanyol + spanyol Turkish - török + török Show nan and +/-Inf values as: @@ -2528,7 +2644,7 @@ Hungarian - magyar + magyar Please restart... @@ -2555,14 +2671,6 @@ - Finnish - - - - Romanian - - - Always show Preview Panel @@ -2591,10 +2699,6 @@ - C&hoose - - - Which LDR image format to save to @@ -2885,155 +2989,124 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Camera Profile</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the input color space used to decode RAW data.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">None</span>: no input color profile is used during RAW decoding.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Embedded</span>: use embedded color profile from RAW file if exist.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom input color space profile.</p></body></html> - - - - None - - - - Built in +</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Read </span><span style=" font-family:'Sans Serif'; font-style:italic;">Help &gt; Contents &gt; Setting up Luminance &gt; External tools</span><span style=" font-family:'Sans Serif';"> to find out more about align_image_stack command line arguments</span></p></body></html> - Custom + Default Previews Width - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Workspace</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the output color space used to decode RAW data.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Raw (linear)</span>: in this mode, no output color space is used during RAW decoding.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">sRGB</span>: this is a RGB color space, created cooperatively by Hewlett-Packard and Microsoft. It is the best choice for images destined for the Web and portrait photography.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Adobe RGB</span>: this color space is an extended RGB color space, developed by Adobe. It is used for photography applications such as advertising and fine art.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wide Gamut</span>: this color space is an expanded version of the Adobe RGB color space.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Pro-Photo</span>: this color space is an RGB color space, developed by Kodak, that offers an especially large gamut designed for use with photographic outputs in mind.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom output color space profile.</p></body></html> + px - RAW + HDR TIFF Default File Format - sRGB + Temporary Working Folder - Adobe RGB + Batch Tonemapping Default Output Format - Wide Gamut + Batch Tonemapping Number of Threads - Pro Photo + General - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Read </span><span style=" font-family:'Sans Serif'; font-style:italic;">Help &gt; Contents &gt; Setting up Luminance &gt; External tools</span><span style=" font-family:'Sans Serif';"> to find out more about align_image_stack command line arguments</span></p></body></html> + Method - Default Previews Width + Temperature (Kelvin) - px + Green - HDR TIFF Default File Format + Highlights - Temporary Working Folder + Level - Batch Tonemapping Default Output Format - + Brightness + Fényesség - Batch Tonemapping Number of Threads + Saturation - Batch Tonemapping Default Output Quality + NR and CA Correction - General + Red Component - Method + Blue Component - Temperature (Kelvin) + Camera profile - Green + align_image_stack command line arguments - Highlights + Color Management - Level + Monitor - Brightness - Fényesség - - - Saturation + Monitor Profile - NR and CA Correction + Printer - Red Component + Printer profile - Blue Component + Open ICC Profile - Camera Profile + Color profile (*.icc) - Camera profile + &Browse... - Color Space + Browse... - align_image_stack command line arguments + Color profile (*.icc *.ICC *.icm *.ICM) @@ -3068,15 +3141,15 @@ Pattanaik - Form + Mantiuk '06 - Mantiuk '06 + Mantiuk '08 - Mantiuk '08 + Preview @@ -3244,6 +3317,46 @@ Successfully loaded file %1. + + Warning + + + + Error Opening RAW File + + + + Error Unpacking RAW File + + + + Error Processing RAW File + + + + Memory Error in processing RAW File + + + + Error Creating PFS Frame + + + + I cannot open monitor profile. Please select a different one. + + + + I cannot open printer profile. Please select a different one. + + + + Please select a printer profile . + + + + I cannot perform the color transform. Please select a different monitor profile. + + ResizeDialog @@ -3300,125 +3413,192 @@ SavedParameters Simple - Egyszerű + Egyszerű Local Contrast Threshold - Heli kontraszt küszöb + Heli kontraszt küszöb Bias - Eltolás (bias) + Eltolás (bias) Spatial Kernel Sigma - Térbeli szigma mag + Térbeli szigma mag Range Kernel Sigma - Tartományi szigma mag + Tartományi szigma mag Base Contrast - Alapkontraszt + Alapkontraszt Alpha - Alfa + Alfa Beta - Béta + Béta Color Saturation - Színtelítettség + Színtelítettség Noise Reduction - Zajcsökkentés + Zajcsökkentés Contrast Equalization - Kontraszt kiegyenlítés + Kontraszt kiegyenlítés Contrast Factor - Kontraszt tényező + Kontraszt tényező Saturation Factor - Telítettségi tényező + Telítettségi tényező Detail Factor - Részlettényező + Részlettényező Cone and Rod based on Luminance - Fényességen alapuló kúp és rúd + Fényességen alapuló kúp és rúd Cone Level - Kúp szintje + Kúp szintje Rod Level - Rúd szintje + Rúd szintje Multiplier - Szorzó + Szorzó Use Scales - Fokozatokat használni + Fokozatokat használni Key Value - Kulcsérték + Kulcsérték Range - Tartomány + Tartomány Lower Scale - Alsó fokozat + Alsó fokozat Upper Scale - Felső fokozat + Felső fokozat Brightness - Fényesség + Fényesség Chromatic Adaptation - Színmódosítás + Színmódosítás Light Adaptation - Fénymódosítás + Fénymódosítás + + + + SavedParametersDialog + + Saved Parameters + + + + Comment + + + + TM Operator + + + + Simple + Egyszerű Equation 2 + Local Contrast Threshold + Heli kontraszt küszöb + + Pre-gamma - Comment - + Bias + Eltolás (bias) + + + Spatial Kernel Sigma + Térbeli szigma mag + + + Range Kernel Sigma + Tartományi szigma mag + + + Base Contrast + Alapkontraszt + + + Alpha + Alfa + + + Beta + Béta + + + Color Saturation + Színtelítettség + + + Noise Reduction + Zajcsökkentés Old Fattal + Contrast Equalization + Kontraszt kiegyenlítés + + + Contrast Factor + Kontraszt tényező + + + Saturation Factor + Telítettségi tényező + + + Detail Factor + Részlettényező + + Contrast Enhancement @@ -3431,16 +3611,60 @@ + Cone and Rod based on Luminance + Fényességen alapuló kúp és rúd + + Local Tonemapping + Cone Level + Kúp szintje + + + Rod Level + Rúd szintje + + + Multiplier + Szorzó + + + Use Scales + Fokozatokat használni + + + Key Value + Kulcsérték + + Phi Value - TM Operator - + Range + Tartomány + + + Lower Scale + Alsó fokozat + + + Upper Scale + Felső fokozat + + + Brightness + Fényesség + + + Chromatic Adaptation + Színmódosítás + + + Light Adaptation + Fénymódosítás @@ -3845,10 +4069,6 @@ - Version Pre 1.8.4 - - - Auto Cone/Rod @@ -3880,19 +4100,19 @@ Set Custom Output Size - - - TonemappingWarningDialog - Attention! + Version 2.3.0 + + + TonemappingWarningDialog - Ask again + Fattal Warning - This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. + This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. Do you want to continue? @@ -3930,7 +4150,7 @@ Log: - Napló: + Napló: Exif operations report @@ -3965,33 +4185,29 @@ Minden felismert fájltípus - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">From:</span></p></body></html> + &Filter log messages: - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">To:</span></p></body></html> + Keep existing Exif tags in destination file - &Filter log messages: + &Start - Keep existing Exif tags in destination file + From - &Start + To + + Log + Logaritmikus + UMessageBox diff -Nru luminance-2.2.1/i18n/lang_id.ts luminance-2.3.0/i18n/lang_id.ts --- luminance-2.2.1/i18n/lang_id.ts 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/i18n/lang_id.ts 2012-07-01 09:10:50.000000000 +0000 @@ -63,7 +63,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:11pt; font-weight:400; font-style:normal;"> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#00007f;">Luminance HDR</span> — HDR imaging workflow application<br />(c) 2006-2009, Giuseppe Rota</p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010, 2011, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010-2012, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> @@ -86,7 +86,16 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:danielkaneider@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">danielkaneider@users.sourceforge.net</span></a></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; text-decoration: underline; color:#0000ff;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">pfs{tools|calibration|tmo} codebase</span><span style=" font-size:9pt;"><br /> Grzegorz Krawczyk<br /> </span><a href="mailto:krawczyk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">krawczyk@mpi-sb.mpg.de</span></a><span style=" font-size:9pt;"><br /> <br /> Rafal Mantiuk<br /> </span><a href="mailto:mantiuk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mantiuk@mpi-sb.mpg.de </span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-family:'Sans Serif'; font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Chinese translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Lei Zhao</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Slovakian translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Zuzana Cupkova</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Hindi translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Rohit Sharma</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> @@ -110,7 +119,7 @@ Choose one of the creation predefined profiles. -See documentation for more informations. +See documentation for more information. @@ -182,12 +191,8 @@ - Messages - - - Choose a directory - Pilih direktori + Pilih direktori Started processing... @@ -238,14 +243,6 @@ - Select &Input Folder - - - - Select &Output Folder - - - &Cancel &Batal @@ -261,6 +258,48 @@ Aborting... Membatalkan... + + Warning + + + + Total number of pictures must be a multiple of number of bracketed images. + + + + Output + Output + + + Progress + + + + Select... + + + + Input folder: + + + + Output folder: + + + + Choose a source directory + + + + Choose a output directory + + + + The chosen output directory contains HDR files. Those files might be overwritten. + +Continue? + + BatchTMDialog @@ -270,27 +309,27 @@ Add all the HDRs in a directory to the list - Tambah semua HDR kedalam direktory dalam daftar + Tambah semua HDR kedalam direktory dalam daftar Add &Directory - Tambah &Direktori + Tambah &Direktori Add single HDR files to the list - Tambah file single HDR ke dalam daftar + Tambah file single HDR ke dalam daftar &Add Files - &Tambah File + &Tambah File Remove single HDR files to the list - Buang file single HDR ke dalam daftar + Buang file single HDR ke dalam daftar &Remove Files - &Buang File + &Buang File List of HDRs that will be tone mapped @@ -298,27 +337,27 @@ Add all the Tone Mapping Setting files in a directory to the list - Tambah semua file di direktori Tone Mapping Setting ke dalam daftar + Tambah semua file di direktori Tone Mapping Setting ke dalam daftar Add D&irectory - Tambah D&irektori + Tambah D&irektori Add single Tone Mapping Setting files to the list - Tambah file single Tone Mapping Setting ke dalam daftar + Tambah file single Tone Mapping Setting ke dalam daftar Add Fi&les - Tambah Fi&les + Tambah Fi&les Remove single Tone Mapping Setting files to the list - Buang file single Tone Mapping Setting ke dalam daftar + Buang file single Tone Mapping Setting ke dalam daftar R&emove Files - &Hapus File + &Hapus File List of Tone Mapping Setting files that will be used to tone map each HDR @@ -334,7 +373,7 @@ Select &Output Folder... - Pilih folder &output... + Pilih folder &output... Batch operations report @@ -401,10 +440,6 @@ - Tone Mapping Settings Files - - - Conversion Log @@ -441,12 +476,96 @@ - Saving using file format: %1, (quality - if applicable): %2 + Aborting... + Membatalkan... + + + Tone Mapping Settings - Aborting... - Membatalkan... + % + + + + Output Image Quality + + + + Saving using file format: %1 + + + + Ouput Image Width: + + + + Output Folder: + + + + Selec&t... + + + + Add Directory (Alt+D) + + + + ... + + + + Alt+D + + + + Add Files (Alt+F) + + + + Alt+F + + + + Remove Files (Alt+R) + + + + Alt+R + + + + Add Directory (Alt+I) + + + + Alt+I + + + + Add Files (Alt+L) + + + + Alt+L + + + + Add from Database (Alt+B) + + + + Alt+B + + + + Remove Settings (Alt+M) + + + + Alt+M + @@ -523,7 +642,7 @@ Error: Jumlah spesifik nilai EV berbeda dengan file masukan. - Error: Exif data missing in images and EV values not specifed on the commandline, bailing out. + Error: Exif data missing in images and EV values not specified on the commandline, bailing out. Error: kehilangan Exif data pada image dan nilai EV tidak spesifik pada commandline, bailing out. @@ -695,6 +814,22 @@ Tonemapping requested, saving to file %1. + + Failed loading images + + + + Failed aligning images. + + + + Error: Quality must be in the range [0-100]. + + + + -q --quality VALUE Quality of the saved tone mapped file (0-100). + + DnDOption @@ -1027,6 +1162,10 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clicking and holding the left mouse button you will be able to select a crop area.</p></body></html> + + Histogram + + GenericViewer @@ -1064,6 +1203,10 @@ ERROR: %1 + + ERROR loading %1 + + HdrViewer @@ -1510,6 +1653,10 @@ Weights: + + align_image_stack failed to align images. + + HelpBrowser @@ -2280,43 +2427,11 @@ - Next - - - - Next Image - - - - Show Next Image - - - - Ctrl+PgDown - - - - Previous - - - - Previous Image - - - - Show Previous Image - - - - Ctrl+PgUp - - - Lock Viewers - Syncronize viewers mode (fit, fill or 1:1). + Synchronize viewers mode (fit, fill or 1:1). @@ -2427,11 +2542,12 @@ Error: %1 - - - ParametersDialog - Saved Parameters + Soft Proofing + + + + Gamut Check @@ -2494,58 +2610,6 @@ - Czech - - - - English - - - - Finnish - - - - French - - - - German - - - - Indonesian - - - - Italian - - - - Polish - - - - Romanian - - - - Russian - - - - Spanish - - - - Turkish - - - - Hungarian - - - Always show Preview Panel @@ -2578,10 +2642,6 @@ - C&hoose - - - Which LDR image format to save to @@ -2872,159 +2932,128 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Camera Profile</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the input color space used to decode RAW data.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">None</span>: no input color profile is used during RAW decoding.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Embedded</span>: use embedded color profile from RAW file if exist.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom input color space profile.</p></body></html> - - - - None - - - - Built in +</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Read </span><span style=" font-family:'Sans Serif'; font-style:italic;">Help &gt; Contents &gt; Setting up Luminance &gt; External tools</span><span style=" font-family:'Sans Serif';"> to find out more about align_image_stack command line arguments</span></p></body></html> - Custom + Language - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Workspace</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the output color space used to decode RAW data.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Raw (linear)</span>: in this mode, no output color space is used during RAW decoding.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">sRGB</span>: this is a RGB color space, created cooperatively by Hewlett-Packard and Microsoft. It is the best choice for images destined for the Web and portrait photography.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Adobe RGB</span>: this color space is an extended RGB color space, developed by Adobe. It is used for photography applications such as advertising and fine art.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wide Gamut</span>: this color space is an expanded version of the Adobe RGB color space.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Pro-Photo</span>: this color space is an RGB color space, developed by Kodak, that offers an especially large gamut designed for use with photographic outputs in mind.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom output color space profile.</p></body></html> + Default Previews Width - RAW + px - sRGB + HDR TIFF Default File Format - Adobe RGB + Temporary Working Folder - Wide Gamut + Batch Tonemapping Default Output Format - Pro Photo + Batch Tonemapping Number of Threads - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Read </span><span style=" font-family:'Sans Serif'; font-style:italic;">Help &gt; Contents &gt; Setting up Luminance &gt; External tools</span><span style=" font-family:'Sans Serif';"> to find out more about align_image_stack command line arguments</span></p></body></html> + General - Language + Method - Default Previews Width + Temperature (Kelvin) - px + Green - HDR TIFF Default File Format + Highlights - Temporary Working Folder + Level - Batch Tonemapping Default Output Format - + Brightness + Brightness - Batch Tonemapping Number of Threads + Saturation - Batch Tonemapping Default Output Quality + NR and CA Correction - General + Red Component - Method + Blue Component - Temperature (Kelvin) + Camera profile - Green + align_image_stack command line arguments - Highlights + Color Management - Level + Monitor - Brightness - Brightness - - - Saturation + Monitor Profile - NR and CA Correction + Printer - Red Component + Printer profile - Blue Component + Open ICC Profile - Camera Profile + Color profile (*.icc) - Camera profile + &Browse... - Color Space + Browse... - align_image_stack command line arguments + Color profile (*.icc *.ICC *.icm *.ICM) @@ -3039,10 +3068,6 @@ Reinhard '05 - Form - - - Mantiuk '06 @@ -3070,6 +3095,10 @@ Pattanaik + + Preview + + ProjectionsDialog @@ -3235,6 +3264,46 @@ Successfully loaded file %1. + + Warning + + + + Error Opening RAW File + + + + Error Unpacking RAW File + + + + Error Processing RAW File + + + + Memory Error in processing RAW File + + + + Error Creating PFS Frame + + + + I cannot open monitor profile. Please select a different one. + + + + I cannot open printer profile. Please select a different one. + + + + Please select a printer profile . + + + + I cannot perform the color transform. Please select a different monitor profile. + + ResizeDialog @@ -3291,95 +3360,114 @@ SavedParameters Simple - Simple + Simple Bias - Bias + Bias Spatial Kernel Sigma - Spatial Kernel Sigma + Spatial Kernel Sigma Range Kernel Sigma - Range Kernel Sigma + Range Kernel Sigma Base Contrast - Base Contrast + Base Contrast Beta - Beta + Beta Color Saturation - Color Saturation + Color Saturation Noise Reduction - Noise Reduction + Noise Reduction Contrast Equalization - Contrast Equalization + Contrast Equalization Contrast Factor - Contrast Factor + Contrast Factor Saturation Factor - Saturation Factor + Saturation Factor Cone and Rod based on Luminance - Cone and Rod based on Luminance + Cone and Rod based on Luminance Cone Level - Cone Level + Cone Level Rod Level - Rod Level + Rod Level Multiplier - Multiplier + Multiplier Use Scales - Gunakan Skala + Gunakan Skala Key Value - Niai Kunci + Niai Kunci Range - Range + Range Lower Scale - Lower Scale + Lower Scale Upper Scale - Upper Scale + Upper Scale Brightness - Brightness + Brightness Chromatic Adaptation - Chromatic Adaptation + Chromatic Adaptation Light Adaptation - Light Adaptation + Light Adaptation + + + + SavedParametersDialog + + Saved Parameters + + + + Comment + + + + TM Operator + + + + Simple + Simple Equation 2 @@ -3394,18 +3482,54 @@ - Comment - + Bias + Bias + + + Spatial Kernel Sigma + Spatial Kernel Sigma + + + Range Kernel Sigma + Range Kernel Sigma + + + Base Contrast + Base Contrast Alpha + Beta + Beta + + + Color Saturation + Color Saturation + + + Noise Reduction + Noise Reduction + + Old Fattal + Contrast Equalization + Contrast Equalization + + + Contrast Factor + Contrast Factor + + + Saturation Factor + Saturation Factor + + Detail Factor @@ -3422,16 +3546,60 @@ + Cone and Rod based on Luminance + Cone and Rod based on Luminance + + Local Tonemapping + Cone Level + Cone Level + + + Rod Level + Rod Level + + + Multiplier + Multiplier + + + Use Scales + Gunakan Skala + + + Key Value + Niai Kunci + + Phi Value - TM Operator - + Range + Range + + + Lower Scale + Lower Scale + + + Upper Scale + Upper Scale + + + Brightness + Brightness + + + Chromatic Adaptation + Chromatic Adaptation + + + Light Adaptation + Light Adaptation @@ -3836,10 +4004,6 @@ - Version Pre 1.8.4 - - - Auto Cone/Rod @@ -3871,19 +4035,19 @@ Set Custom Output Size - - - TonemappingWarningDialog - Attention! + Version 2.3.0 + + + TonemappingWarningDialog - Ask again + Fattal Warning - This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. + This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. Do you want to continue? @@ -3913,7 +4077,7 @@ Log: - Log: + Log: Exif operations report @@ -3952,37 +4116,33 @@ &Selesai - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">From:</span></p></body></html> + &Filter log messages: - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">To:</span></p></body></html> + Keep existing Exif tags in destination file - &Filter log messages: + &Start - Keep existing Exif tags in destination file + All Supported formats - &Start + From - All Supported formats + To + + Log + Log + UMessageBox diff -Nru luminance-2.2.1/i18n/lang_it.ts luminance-2.3.0/i18n/lang_it.ts --- luminance-2.2.1/i18n/lang_it.ts 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/i18n/lang_it.ts 2012-07-01 09:10:50.000000000 +0000 @@ -71,7 +71,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:11pt; font-weight:400; font-style:normal;"> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#00007f;">Luminance HDR</span> — HDR imaging workflow application<br />(c) 2006-2009, Giuseppe Rota</p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010, 2011, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010-2012, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> @@ -94,7 +94,16 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:danielkaneider@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">danielkaneider@users.sourceforge.net</span></a></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; text-decoration: underline; color:#0000ff;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">pfs{tools|calibration|tmo} codebase</span><span style=" font-size:9pt;"><br /> Grzegorz Krawczyk<br /> </span><a href="mailto:krawczyk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">krawczyk@mpi-sb.mpg.de</span></a><span style=" font-size:9pt;"><br /> <br /> Rafal Mantiuk<br /> </span><a href="mailto:mantiuk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mantiuk@mpi-sb.mpg.de </span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-family:'Sans Serif'; font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Chinese translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Lei Zhao</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Slovakian translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Zuzana Cupkova</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Hindi translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Rohit Sharma</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> @@ -118,7 +127,7 @@ Choose one of the creation predefined profiles. -See documentation for more informations. +See documentation for more information. Scegli uno dei profili predefiniti per la creazione degli HDR. Vedi la documentazione per maggiori informazioni. @@ -192,11 +201,11 @@ Messages - Messaggi + Messaggi Choose a directory - Seleziona una directory + Seleziona una directory Started processing... @@ -224,11 +233,11 @@ Written - Scritto + Scritto Error: - Errore: + Errore: Auto-align images @@ -248,11 +257,11 @@ Select &Input Folder - Seleziona la cartella &sorgente + Seleziona la cartella &sorgente Select &Output Folder - Seleziona la cartella &destinazione + Seleziona la cartella &destinazione &Cancel @@ -268,7 +277,59 @@ Aborting... - Operazione interrotta... + Operazione interrotta... + + + Warning + Attenzione + + + The chosen output directory contains HDR files. Those files might be overwritten, + La directory di output selezionata contiene files HDR. Questi files potrebbero venir sovrascritti. + + + Total number of pictures must be a multiple of number of bracketed images. + Il numero totale di immagini deve essere un multiplo delle differenti esposizioni. + + + The chosen output directory contains HDR files. Those files might be overwritten. + La directory di output selezionata contiene files HDR. Questi files potrebbero venir sovrascritti. + + + Output + Destinazione + + + Progress + Messaggi + + + Select... + Seleziona... + + + Input folder: + Cartella di input + + + Output folder: + Cartella di output + + + Choose a source directory + Scegli cartella sorgente + + + Choose a output directory + Scegli cartella destinazione + + + The chosen output directory contains HDR files. Those files might be overwritten. + +Continue? + La cartella di uscita selezionata contiene dei files HDR. Questi file potrebbero essere sovrascritti. + +Continuare? @@ -279,15 +340,15 @@ Add &Directory - Aggiungi una &Directory + Aggiungi &Cartella &Add Files - &Aggiungi dei File + &Aggiungi File &Remove Files - &Rimuovi dei File + &Rimuovi File List of HDRs that will be tone mapped @@ -295,15 +356,15 @@ Add D&irectory - Aggiungi una &Directory + Aggiungi Ca&rtella Add Fi&les - &Aggiungi dei File + Aggiungi Fi&le R&emove Files - &Rimuovi dei File + &Rimuovi dei File Output @@ -311,7 +372,7 @@ Select &Output Folder... - Selezione una cartella di &uscita... + Selezione una cartella di &uscita... &Show only: @@ -339,7 +400,7 @@ Processing... - Stò processando... + Sto processando... Start processing... @@ -359,31 +420,31 @@ Add all the HDRs in a directory to the list - Aggiungi tutti gli HDR in una directory alla lista + Aggiungi tutti gli HDR in una directory alla lista Add single HDR files to the list - Aggiungi singoli file HDR alla lista + Aggiungi singoli file HDR alla lista Remove single HDR files to the list - Rimuovi singoli file HDR dalla lista + Rimuovi singoli file HDR dalla lista Tone Mapping Settings Files - Files parametri di Tonemapping + Files parametri di Tonemapping Add all the Tone Mapping Setting files in a directory to the list - Aggiungi tutti i file di impostazioni di tone mapping presenti in una directory alla lista + Aggiungi tutti i file di impostazioni di tone mapping presenti in una directory alla lista Add single Tone Mapping Setting files to the list - Aggiungi dei singoli file di impostazioni di tone mapping alla lista + Aggiungi dei singoli file di impostazioni di tone mapping alla lista Remove single Tone Mapping Setting files to the list - Rimuovi file di impostazioni di tone mapping dalla lista + Rimuovi file di impostazioni di tone mapping dalla lista List of Tone Mapping Setting files that will be used to tone map each HDR @@ -451,11 +512,115 @@ Saving using file format: %1, (quality - if applicable): %2 - Salvataggio in formato %1, (qualità - se applicabile): %2 + Salvataggio in formato %1, (qualità - se applicabile): %2 Aborting... - Operazione interrotta... + Operazione interrotta... + + + Tone Mapping Settings + Impostazioni tone mapping + + + From Database + Da Database + + + R&emove + R&imuovi + + + Ouput Image Width + Larghezza immagine + + + % + % + + + Output Image Quality + Qualità immagine + + + Saving using file format: %1 + Salvataggio usando formato file: %1 + + + From Data&base + Da Data&base + + + Ouput Image Width: + Larghezza Immagine: + + + Output Folder: + Cartella di destinazione: + + + Selec&t... + Sele&ziona... + + + Add Directory (Alt+D) + Aggiungi una directory (Alt+D) + + + ... + ... + + + Alt+D + Alt+D + + + Add Files (Alt+F) + Aggiungi dei files (Alt+F) + + + Alt+F + Alt+F + + + Remove Files (Alt+R) + Rimuovi dei files (Alt+R) + + + Alt+R + Alt+R + + + Add Directory (Alt+I) + Aggiungi una directory (Alt+I) + + + Alt+I + Alt+I + + + Add Files (Alt+L) + Aggiungi dei files (Alt+L) + + + Alt+L + Alt+L + + + Add from Database (Alt+B) + Aggiungi dal database (Alt+B) + + + Alt+B + Alt+B + + + Remove Settings (Alt+M) + Rimuovi impostazioni (Alt+M) + + + Alt+M + Alt+M @@ -528,7 +693,7 @@ Errore: Il numero di valori EV specificati e' differente dal numero di file di input. - Error: Exif data missing in images and EV values not specifed on the commandline, bailing out. + Error: Exif data missing in images and EV values not specified on the commandline, bailing out. Errore: Dati Exif mancanti nelle immagini e valori EV non specificati manualmente. @@ -577,7 +742,7 @@ -c --config HDR creation config. Possible values: - -c --config Configurazione per la creazione di HDR. alori possibili: + -c --config Configurazione per la creazione di HDR. Valori possibili: -l --load HDR_FILE Load an HDR instead of creating a new one. @@ -589,11 +754,11 @@ -g --gamma VALUE Gamma value to use during tone mapping. (default: 1) - -g --gamma VALUE Valore di gamma da usare per il tone mapping. (default: 1) + -g --gamma VALORE Valore di gamma da usare per il tone mapping. (default: 1) -r --resize VALUE Width you want to resize your HDR to (resized before gamma and tone mapping) - -r --resize VALUE Larghezza a cui viene ridimensionato l'HDR (ridimensionato prima del gamma e tone mapping) + -r --resize VALORE Larghezza a cui viene ridimensionato l'HDR (ridimensionato prima del gamma e tone mapping) -t --tmo Tone mapping operator. Legal values are: @@ -605,7 +770,7 @@ contrast=VALUE:saturation=VALUE:detail=VALUE:equalization=true|false (for mantiuk06) - contrast=VALUE:saturation=VALUE:detail=VALUE:equalization=true|false (per mantiuk06) + contrast=VALORE:saturation=VALORE:detail=VALORE:equalization=true|false (per mantiuk06) -o --output LDR_FILE File name you want to save your tone mapped LDR to. @@ -631,31 +796,31 @@ alpha=VALUE:beta=VALUE:color=VALUE:noise=VALUE:new=true|false (for fattal) - alpha=VALORE:beta=VALORE:color=VALORE:noise=VALORE:new=true|false (for fattal) + alpha=VALORE:beta=VALORE:color=VALORE:noise=VALORE:new=true|false (per fattal) localcontrast=VALUE:eq=2|4:simple=true|false (for ashikhmin) - localcontrast=VALORE:eq=2|4:simple=true|false (for ashikhmin) + localcontrast=VALORE:eq=2|4:simple=true|false (per ashikhmin) sigma_s=VALUE:sigma_r=VALUE:base=VALUE (for durand) - sigma_s=VALORE:sigma_r=VALORE:base=VALORE (for durand) + sigma_s=VALORE:sigma_r=VALORE:base=VALORE (per durand) bias=VALUE (for drago) - bias=VALORE (for drago) + bias=VALORE (per drago) local=true|false:autolum=true|false:cone=VALUE:rod=VALUE:multiplier=VALUE (for pattanaik) - local=true|false:autolum=true|false:cone=VALORE:rod=VALORE:multiplier=VALORE (for pattanaik) + local=true|false:autolum=true|false:cone=VALORE:rod=VALORE:multiplier=VALORE (per pattanaik) scales=true|false:key=VALUE:phi=VALUE:num=VALUE:low=VALUE:high=VALUE (for reinhard02) - scales=true|false:key=VALORE:phi=VALORE:num=VALORE:low=VALORE:high=VALORE (for reinhard02) + scales=true|false:key=VALORE:phi=VALORE:num=VALORE:low=VALORE:high=VALORE (per reinhard02) brightness=VALUE:chroma=VALUE:lightness=VALUE (for reinhard05) - brightness=VALORE:chroma=VALORE:lightness=VALORE (for reinhard05) + brightness=VALORE:chroma=VALORE:lightness=VALORE (per reinhard05) (default is contrast=0.3:equalization=false:saturation=1.8, see also -o) @@ -679,35 +844,51 @@ Load file %1 failed - + Caricamento del file %1 fallito EV values have been assigned. - + I valori EV sono stati assegnati. Creating (in memory) the HDR. - + Creazione (in memoria) dell'HDR. Saving to file %1. - + Salvando su file %1. Image %1 saved successfully - + Immagine %1 salvata con successo Could not save %1 - + Non posso salvare %1 NOT Saving HDR image to file. %1 - + NON stò salvando l'immagine sul file. %1 Tonemapping requested, saving to file %1. - + Richiesto tonemapping, salvando sul file %1. + + + Failed loading images + Caricamento immagini fallito + + + Failed aligning images. + Allineamento immagini fallito. + + + Error: Quality must be in the range [0-100]. + Errore: La qualità deve essere nell'intervallo [0-100]. + + + -q --quality VALUE Quality of the saved tone mapped file (0-100). + -q --quality VALORE Qualità del file che viene salvato (0-100). @@ -1046,6 +1227,10 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Se la stessa immagine e' selezionata in entrambe le liste, questa area mostrera' tale immagine.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Cliccando e tenendo premuto il pulsante sinistro del mouse e' possibile selezionare una area di taglio.</p></body></html> + + Histogram + Istogramma + GenericViewer @@ -1083,6 +1268,10 @@ ERROR: Failed Loading file: %1 ERRORE: Impossibile caricare il file: %1 + + ERROR loading %1 + ERRORE caricando %1 + HdrViewer @@ -1483,11 +1672,11 @@ Aligning... - Stò allineando... + Sto allineando... Processing... - Stò processando... + Sto processando... Load a camera response curve file @@ -1565,6 +1754,10 @@ Weights: Pesi: + + align_image_stack failed to align images. + align_image_stack ha fallito nell'allineare le immagini. + HelpBrowser @@ -1795,6 +1988,26 @@ LDR image [%1 x %2] Immagine LDR [%1x%2] + + Warning + Attenzione + + + I cannot open monitor profile. Please select a different one. + Non posso aprire il profilo del monitor. Selezionarne uno differente. + + + I cannot open printer profile. Please select a different one. + Non posso aprire il profilo della stampante. Selezionarne uno differente. + + + Please select a printer profile . + Selezionare un profilo della stampante. + + + I cannot perform the color transform. Please select a different monitor profile. + Non posso eseguire la trasformazione di colore. Selezionare un profilo del monitor differente. + LevelsDialog @@ -2338,27 +2551,27 @@ Next - Successivo + Successivo Next Image - Immagine successiva + Immagine successiva Show Next Image - Visualizza l'immagine successiva + Visualizza l'immagine successiva Previous - Precedente + Precedente Previous Image - Immagine precedente + Immagine precedente Show Previous Image - Visualizza l'immagine precedente + Visualizza l'immagine precedente Lock the images for sync view @@ -2449,19 +2662,11 @@ Clicca e trascina nell'aria dell'immagine per creare una seleziona, dopo usa questo tasto per tagliare l'immagine in un nuovo HDR - Ctrl+PgDown - - - - Ctrl+PgUp - - - Lock Viewers Sincronizza i visualizzatori - Syncronize viewers mode (fit, fill or 1:1). + Synchronize viewers mode (fit, fill or 1:1). Modalità di sincronizza delle anteprima (adatta, riempi o 1:1). @@ -2484,12 +2689,20 @@ Batch HDR... Batch HDR... + + Soft Proofing + + + + Gamut Check + + ParametersDialog Saved Parameters - Parametri salvati + Parametri salvati @@ -2536,51 +2749,51 @@ Czech - Ceco + Ceco English - Inglese + Inglese Finnish - Finlandese + Finlandese French - Francese + Francese German - Tedesco + Tedesco Indonesian - Indonesiano + Indonesiano Italian - Italiano + Italiano Polish - Polacco + Polacco Romanian - Rumeno + Rumeno Russian - Russo + Russo Spanish - Spagnolo + Spagnolo Turkish - Turco + Turco HDR Options @@ -2608,7 +2821,7 @@ C&hoose - &Scegli + &Scegli Which LDR image format to save to @@ -3018,7 +3231,7 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">None</span>: no input color profile is used during RAW decoding.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Embedded</span>: use embedded color profile from RAW file if exist.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom input color space profile.</p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> @@ -3030,15 +3243,15 @@ None - Nessuno + Nessuno Built in - Incorporato + Incorporato Custom - Personalizzato + Personalizzato <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -3053,7 +3266,7 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wide Gamut</span>: this color space is an expanded version of the Adobe RGB color space.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Pro-Photo</span>: this color space is an RGB color space, developed by Kodak, that offers an especially large gamut designed for use with photographic outputs in mind.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom output color space profile.</p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> @@ -3068,23 +3281,23 @@ RAW - RAW + RAW sRGB - sRGB + sRGB Adobe RGB - Adobe RGB + Adobe RGB Wide Gamut - Ampio Gamut + Ampio Gamut Pro Photo - Pro Photo + Pro Photo <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -3112,7 +3325,7 @@ Hungarian - Ungherese + Ungherese Please restart LuminanceHDR to use the new language (%1). @@ -3156,7 +3369,7 @@ Batch Tonemapping Default Output Quality - Qualità predefinita del salvataggio per il Batch Tonemapping + Qualità predefinita del salvataggio per il Batch Tonemapping General @@ -3204,20 +3417,68 @@ Camera Profile - Profilo Camera + Profilo Camera Camera profile - Profilo Camera + Profilo della fotocamera Color Space - Spazio colore + Spazio colore align_image_stack command line arguments Argomenti linea di comando align_image_stack + + Color Management + Gestione del colore + + + Monitor + Monitor + + + Monitor Profile + Profilo del monitor + + + Printer + Stampante + + + Printer profile + Profilo della stampante + + + Open ICC Profile + Apri profilo ICC + + + Color profile (*.icc) + Profilo di colore (*.icc) + + + &Browse... + &Sfoglia... + + + Browse... + Sfoglia... + + + Chinese + Cinese + + + Hindi + Hindi + + + Color profile (*.icc *.ICC *.icm *.ICM) + Profilo di colore (*.icc *.ICC *.icm *.ICM) + PreviewPanel @@ -3251,7 +3512,7 @@ Form - Form + Form Mantiuk '06 @@ -3261,6 +3522,10 @@ Mantiuk '08 + + Preview + Anteprima + ProjectionsDialog @@ -3392,39 +3657,91 @@ Cannot convert %1 to a float - Impossibile convertire %1 in un valore floating point + Impossibile convertire %1 in un valore floating point Cannot convert %1 to an integer - Impossibile convertire %1 in un valore intero + Impossibile convertire %1 in un valore intero Input file %1 - + File di input %1 Running in HDR-creation mode. - + Eseguendo in modalità creazione HDR. Running in Load-HDR mode. - + Eseguendo in modalità carica HDR. Temporary directory: %1 - + Directory temporanea: %1 Using %1 threads. - + Utilizzando %1 threads. Loading file %1 - + Caricando il file %1 Successfully loaded file %1. - + File %1 caricato con successo. + + + Warning + Attenzione + + + I cannot perform the color transform. + Non posso eseguire la trasformazioe di colore. + + + I cannot open camera profile. Please select a different one. + Non posso aprire il profilo della fotocamera. Selezionarne uno differente. + + + I cannot perform the color transform. Please select a different camera profile. + Non posso eseguire la trasformazione di colore. Selezionare un profilo della fotocamera differente. + + + Error Opening RAW File + Errore nell'apertura del file RAW + + + Error Unpacking RAW File + Errore nello scompattare il file RAW + + + Error Processing RAW File + Errore nel processare il file RAW + + + Memory Error in processing RAW File + Errore di memoria nel processare il file RAW + + + Error Creating PFS Frame + Errore nel creare il frame PFS + + + I cannot open monitor profile. Please select a different one. + Non posso aprire il profilo del monitor. Selezionarne uno differente. + + + I cannot open printer profile. Please select a different one. + Non posso aprire il profilo della stampante. Selezionarne uno differente. + + + Please select a printer profile . + Selezionare un profilo della stampante. + + + I cannot perform the color transform. Please select a different monitor profile. + Non posso eseguire la trasformazione di colore. Selezionare un profilo del monitor differente. @@ -3482,35 +3799,190 @@ SavedParameters Simple - Semplice + Semplice Equation 2 - Equazione 2 + Equazione 2 Local Contrast Threshold - Soglia Contrasto Locale + Soglia Contrasto Locale Pre-gamma - Pre-gamma + Pre-gamma + + + Comment + Commento + + + Bias + Bias + + + Spatial Kernel Sigma + Spatial Kernel Sigma + + + Range Kernel Sigma + Range Kernel Sigma + + + Base Contrast + Contrasto base + + + Alpha + Alpha + + + Beta + Beta + + + Color Saturation + Saturazione colore + + + Noise Reduction + Riduzione rumore + + + Old Fattal + Vecchio Fattal + + + Contrast Equalization + Equalizzazione contrasto + + + Contrast Factor + Fattore di contrasto + + + Saturation Factor + Fattore di saturazione + + + Detail Factor + Fattore dettaglio + + + Contrast Enhancement + Miglioramento contrasto + + + Luminance Level + Livello luminanza + + + Manual Luminance Level + Livello Luminanza Manuale + + + Cone and Rod based on Luminance + Coni e bastoncelli basati sulla luminanza + + + Local Tonemapping + Tonemapping Locale + + + Cone Level + Livello coni + + + Rod Level + Livello bastoncelli + + + Multiplier + Moltiplicatore + + + Use Scales + Usa Scale + + + Key Value + Parametro Key + + + Phi Value + Parametro Phi + + + Range + Intervallo + + + Lower Scale + Scala inferiore + + + Upper Scale + Scala superiore + + + Brightness + Luminosità + + + Chromatic Adaptation + Adattamento cromatico + + + Light Adaptation + Adattamento luce + + + TM Operator + Operatore TM + + + + SavedParametersDialog + + Saved Parameters + Parametri salvati Comment Commento + TM Operator + Operatore TM + + + Simple + Semplice + + + Equation 2 + Equazione 2 + + + Local Contrast Threshold + Soglia contrasto locale + + + Pre-gamma + Pre-gamma + + Bias - Bias + Bias Spatial Kernel Sigma - Spatial Kernel Sigma + Range Kernel Sigma - Range Kernel Sigma + Base Contrast @@ -3586,7 +4058,7 @@ Use Scales - Usa Scale + Usa scale Key Value @@ -3620,10 +4092,6 @@ Light Adaptation Adattamento luce - - TM Operator - Operatore TM - SavingParameters @@ -4042,7 +4510,7 @@ Version Pre 1.8.4 - Versione Pre 1.8.4 + Versione Pre 1.8.4 Auto Cone/Rod @@ -4077,21 +4545,40 @@ Set Custom Output Size Definisci dimensione finale personalizzata + + Version 2.3.0 (FFT) + Versione 2.3.0 (FFT) + + + Version 2.3.0 + + TonemappingWarningDialog Attention! - Attenzione! + Attenzione! Ask again - Chiedi ancora + Chiedi ancora This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. Do you want to continue? + Questo operatore di tomemapping dipende dalle dimensioni delle immagini in input. Applicando l'operatore all'immagine intera produrrà probabilmente un risultato differente. +Vuoi continuare? + + + Fattal Warning + Avvertimento per Fattal + + + This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. + +Do you want to continue? Questo operatore di tomemapping dipende dalle dimensioni delle immagini in input. Applicando l'operatore all'immagine intera produrrà probabilmente un risultato differente. Vuoi continuare? @@ -4132,7 +4619,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">From:</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -4144,7 +4631,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">To:</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -4152,7 +4639,7 @@ Log: - Log: + Log: Exif operations report @@ -4198,6 +4685,18 @@ All Supported formats Tutti i formati supportati + + From + Da + + + To + A + + + Log + Log + UMessageBox diff -Nru luminance-2.2.1/i18n/lang_pl.ts luminance-2.3.0/i18n/lang_pl.ts --- luminance-2.2.1/i18n/lang_pl.ts 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/i18n/lang_pl.ts 2012-07-01 09:10:50.000000000 +0000 @@ -63,7 +63,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:11pt; font-weight:400; font-style:normal;"> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#00007f;">Luminance HDR</span> — HDR imaging workflow application<br />(c) 2006-2009, Giuseppe Rota</p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010, 2011, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010-2012, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> @@ -86,7 +86,16 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:danielkaneider@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">danielkaneider@users.sourceforge.net</span></a></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; text-decoration: underline; color:#0000ff;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">pfs{tools|calibration|tmo} codebase</span><span style=" font-size:9pt;"><br /> Grzegorz Krawczyk<br /> </span><a href="mailto:krawczyk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">krawczyk@mpi-sb.mpg.de</span></a><span style=" font-size:9pt;"><br /> <br /> Rafal Mantiuk<br /> </span><a href="mailto:mantiuk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mantiuk@mpi-sb.mpg.de </span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-family:'Sans Serif'; font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Chinese translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Lei Zhao</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Slovakian translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Zuzana Cupkova</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Hindi translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Rohit Sharma</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> @@ -110,7 +119,7 @@ Choose one of the creation predefined profiles. -See documentation for more informations. +See documentation for more information. @@ -182,12 +191,8 @@ - Messages - - - Choose a directory - Wybierz katalog + Wybierz katalog Started processing... @@ -238,14 +243,6 @@ - Select &Input Folder - - - - Select &Output Folder - - - &Cancel &Anuluj @@ -261,79 +258,69 @@ Aborting... Przerywam... - - - BatchTMDialog - &Cancel - &Anuluj - - - Choose a directory - Wybierz katalog - - - Batch Tone Mapping + Warning - HDR Images to Convert - - - - Add all the HDRs in a directory to the list + Total number of pictures must be a multiple of number of bracketed images. - Add &Directory + Output - Add single HDR files to the list + Progress - &Add Files + Select... - Remove single HDR files to the list + Input folder: - &Remove Files + Output folder: - List of HDRs that will be tone mapped + Choose a source directory - Tone Mapping Settings Files + Choose a output directory - Add all the Tone Mapping Setting files in a directory to the list + The chosen output directory contains HDR files. Those files might be overwritten. + +Continue? + + + BatchTMDialog - Add D&irectory - + &Cancel + &Anuluj - Add single Tone Mapping Setting files to the list - + Choose a directory + Wybierz katalog - Add Fi&les + Batch Tone Mapping - Remove single Tone Mapping Setting files to the list + HDR Images to Convert - R&emove Files + List of HDRs that will be tone mapped @@ -349,10 +336,6 @@ - Select &Output Folder... - - - Conversion Log @@ -441,12 +424,96 @@ - Saving using file format: %1, (quality - if applicable): %2 + Aborting... + Przerywam... + + + Tone Mapping Settings - Aborting... - Przerywam... + % + + + + Output Image Quality + + + + Saving using file format: %1 + + + + Ouput Image Width: + + + + Output Folder: + + + + Selec&t... + + + + Add Directory (Alt+D) + + + + ... + + + + Alt+D + + + + Add Files (Alt+F) + + + + Alt+F + + + + Remove Files (Alt+R) + + + + Alt+R + + + + Add Directory (Alt+I) + + + + Alt+I + + + + Add Files (Alt+L) + + + + Alt+L + + + + Add from Database (Alt+B) + + + + Alt+B + + + + Remove Settings (Alt+M) + + + + Alt+M + @@ -523,7 +590,7 @@ - Error: Exif data missing in images and EV values not specifed on the commandline, bailing out. + Error: Exif data missing in images and EV values not specified on the commandline, bailing out. @@ -687,6 +754,22 @@ Tonemapping requested, saving to file %1. + + Failed loading images + + + + Failed aligning images. + + + + Error: Quality must be in the range [0-100]. + + + + -q --quality VALUE Quality of the saved tone mapped file (0-100). + + DnDOption @@ -1006,6 +1089,10 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clicking and holding the left mouse button you will be able to select a crop area.</p></body></html> + + Histogram + + GenericViewer @@ -1043,6 +1130,10 @@ ERROR: Failed Loading file: %1 + + ERROR loading %1 + + HdrViewer @@ -1489,6 +1580,10 @@ Weights: Wagi: + + align_image_stack failed to align images. + + HelpBrowser @@ -2255,43 +2350,11 @@ - Next - - - - Next Image - - - - Show Next Image - - - - Ctrl+PgDown - - - - Previous - - - - Previous Image - - - - Show Previous Image - - - - Ctrl+PgUp - - - Lock Viewers - Syncronize viewers mode (fit, fill or 1:1). + Synchronize viewers mode (fit, fill or 1:1). @@ -2406,11 +2469,12 @@ Error: %1 - - - ParametersDialog - Saved Parameters + Soft Proofing + + + + Gamut Check @@ -2473,58 +2537,6 @@ - Czech - - - - English - - - - Finnish - - - - French - - - - German - - - - Indonesian - - - - Italian - - - - Polish - - - - Romanian - - - - Russian - - - - Spanish - - - - Turkish - - - - Hungarian - - - Always show Preview Panel @@ -2557,10 +2569,6 @@ - C&hoose - - - Which LDR image format to save to @@ -2851,159 +2859,128 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Camera Profile</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the input color space used to decode RAW data.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">None</span>: no input color profile is used during RAW decoding.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Embedded</span>: use embedded color profile from RAW file if exist.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom input color space profile.</p></body></html> - - - - None - - - - Built in +</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Read </span><span style=" font-family:'Sans Serif'; font-style:italic;">Help &gt; Contents &gt; Setting up Luminance &gt; External tools</span><span style=" font-family:'Sans Serif';"> to find out more about align_image_stack command line arguments</span></p></body></html> - Custom + Language - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Workspace</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the output color space used to decode RAW data.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Raw (linear)</span>: in this mode, no output color space is used during RAW decoding.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">sRGB</span>: this is a RGB color space, created cooperatively by Hewlett-Packard and Microsoft. It is the best choice for images destined for the Web and portrait photography.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Adobe RGB</span>: this color space is an extended RGB color space, developed by Adobe. It is used for photography applications such as advertising and fine art.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wide Gamut</span>: this color space is an expanded version of the Adobe RGB color space.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Pro-Photo</span>: this color space is an RGB color space, developed by Kodak, that offers an especially large gamut designed for use with photographic outputs in mind.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom output color space profile.</p></body></html> + Default Previews Width - RAW + px - sRGB + HDR TIFF Default File Format - Adobe RGB + Temporary Working Folder - Wide Gamut + Batch Tonemapping Default Output Format - Pro Photo + Batch Tonemapping Number of Threads - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Read </span><span style=" font-family:'Sans Serif'; font-style:italic;">Help &gt; Contents &gt; Setting up Luminance &gt; External tools</span><span style=" font-family:'Sans Serif';"> to find out more about align_image_stack command line arguments</span></p></body></html> + General - Language + Method - Default Previews Width + Temperature (Kelvin) - px + Green - HDR TIFF Default File Format + Highlights - Temporary Working Folder + Level - Batch Tonemapping Default Output Format - + Brightness + Jasność - Batch Tonemapping Number of Threads + Saturation - Batch Tonemapping Default Output Quality + NR and CA Correction - General + Red Component - Method + Blue Component - Temperature (Kelvin) + Camera profile - Green + align_image_stack command line arguments - Highlights + Color Management - Level + Monitor - Brightness - Jasność - - - Saturation + Monitor Profile - NR and CA Correction + Printer - Red Component + Printer profile - Blue Component + Open ICC Profile - Camera Profile + Color profile (*.icc) - Camera profile + &Browse... - Color Space + Browse... - align_image_stack command line arguments + Color profile (*.icc *.ICC *.icm *.ICM) @@ -3018,10 +2995,6 @@ Reinhard '05 - Form - - - Mantiuk '06 @@ -3049,6 +3022,10 @@ Pattanaik + + Preview + + ProjectionsDialog @@ -3214,6 +3191,46 @@ Successfully loaded file %1. + + Warning + + + + Error Opening RAW File + + + + Error Unpacking RAW File + + + + Error Processing RAW File + + + + Memory Error in processing RAW File + + + + Error Creating PFS Frame + + + + I cannot open monitor profile. Please select a different one. + + + + I cannot open printer profile. Please select a different one. + + + + Please select a printer profile . + + + + I cannot perform the color transform. Please select a different monitor profile. + + ResizeDialog @@ -3270,91 +3287,138 @@ SavedParameters Simple - Prosty + Prosty Local Contrast Threshold - Próg lokalnego kontrastu + Próg lokalnego kontrastu Bias - Bias + Bias Spatial Kernel Sigma - Suma przestrzeni jądra + Suma przestrzeni jądra Range Kernel Sigma - Suma zakresu jądra + Suma zakresu jądra Base Contrast - Kontrast bazowy + Kontrast bazowy Alpha - Alfa + Alfa Beta - Beta + Beta Color Saturation - Saturacja + Saturacja Cone and Rod based on Luminance - Cone and Rod based on Luminance + Cone and Rod based on Luminance Cone Level - Cone Level + Cone Level Rod Level - Rod Level + Rod Level Multiplier - Mnożnik + Mnożnik Use Scales - Użyj skali + Użyj skali Key Value - Wartość kluczowa + Wartość kluczowa Range - Zakres + Zakres Lower Scale - Skala niższa + Skala niższa Upper Scale - Skala wyższa + Skala wyższa Brightness - Jasność + Jasność + + + + SavedParametersDialog + + Saved Parameters + + + + Comment + + + + TM Operator + + + + Simple + Prosty Equation 2 + Local Contrast Threshold + Próg lokalnego kontrastu + + Pre-gamma - Comment - + Bias + Bias + + + Spatial Kernel Sigma + Suma przestrzeni jądra + + + Range Kernel Sigma + Suma zakresu jądra + + + Base Contrast + Kontrast bazowy + + + Alpha + Alfa + + + Beta + Beta + + + Color Saturation + Saturacja Noise Reduction @@ -3393,23 +3457,59 @@ + Cone and Rod based on Luminance + Cone and Rod based on Luminance + + Local Tonemapping + Cone Level + Cone Level + + + Rod Level + Rod Level + + + Multiplier + Mnożnik + + + Use Scales + Użyj skali + + + Key Value + Wartość kluczowa + + Phi Value - Chromatic Adaptation - + Range + Zakres - Light Adaptation + Lower Scale + Skala niższa + + + Upper Scale + Skala wyższa + + + Brightness + Jasność + + + Chromatic Adaptation - TM Operator + Light Adaptation @@ -3815,10 +3915,6 @@ - Version Pre 1.8.4 - - - Auto Cone/Rod @@ -3850,19 +3946,19 @@ Set Custom Output Size - - - TonemappingWarningDialog - Attention! + Version 2.3.0 + + + TonemappingWarningDialog - Ask again + Fattal Warning - This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. + This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. Do you want to continue? @@ -3899,26 +3995,6 @@ &Anuluj - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">From:</span></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">To:</span></p></body></html> - - - - Log: - - - Exif operations report @@ -3962,6 +4038,18 @@ &Done + + From + + + + To + + + + Log + Logarytmiczna + UMessageBox diff -Nru luminance-2.2.1/i18n/lang_ro.ts luminance-2.3.0/i18n/lang_ro.ts --- luminance-2.2.1/i18n/lang_ro.ts 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/i18n/lang_ro.ts 2012-07-01 09:10:50.000000000 +0000 @@ -63,7 +63,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:11pt; font-weight:400; font-style:normal;"> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#00007f;">Luminance HDR</span> — HDR imaging workflow application<br />(c) 2006-2009, Giuseppe Rota</p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010, 2011, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010-2012, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> @@ -86,7 +86,16 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:danielkaneider@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">danielkaneider@users.sourceforge.net</span></a></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; text-decoration: underline; color:#0000ff;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">pfs{tools|calibration|tmo} codebase</span><span style=" font-size:9pt;"><br /> Grzegorz Krawczyk<br /> </span><a href="mailto:krawczyk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">krawczyk@mpi-sb.mpg.de</span></a><span style=" font-size:9pt;"><br /> <br /> Rafal Mantiuk<br /> </span><a href="mailto:mantiuk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mantiuk@mpi-sb.mpg.de </span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-family:'Sans Serif'; font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Chinese translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Lei Zhao</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Slovakian translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Zuzana Cupkova</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Hindi translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Rohit Sharma</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> @@ -110,7 +119,7 @@ Choose one of the creation predefined profiles. -See documentation for more informations. +See documentation for more information. Alege unul dinte profilurile predefinite. Vezi documentaţia pentru mai multe informaţii. @@ -196,7 +205,7 @@ Select &Input Folder - Selectează &Fişierul De Importat + Selectează &Fişierul De Importat Folder where created HDRs are saved @@ -204,11 +213,11 @@ Select &Output Folder - Selectează &Fişierul De Exportat + Selectează &Fişierul De Exportat Messages - Mesaje + Mesaje &Cancel @@ -224,7 +233,7 @@ Choose a directory - Alege un dosar + Alege un dosar Started processing... @@ -262,6 +271,48 @@ Aborting... Anulând... + + Warning + + + + Total number of pictures must be a multiple of number of bracketed images. + + + + Output + Destinație + + + Progress + + + + Select... + + + + Input folder: + + + + Output folder: + + + + Choose a source directory + + + + Choose a output directory + + + + The chosen output directory contains HDR files. Those files might be overwritten. + +Continue? + + BatchTMDialog @@ -275,27 +326,27 @@ Add all the HDRs in a directory to the list - Adaugă toate HDR-urile dintr-un dosar la listă + Adaugă toate HDR-urile dintr-un dosar la listă Add &Directory - Adaugă &dosar + Adaugă &dosar Add single HDR files to the list - Adaugă fișiere HDR la listă + Adaugă fișiere HDR la listă &Add Files - &Adaugă fișiere + &Adaugă fișiere Remove single HDR files to the list - Șterge fișiere HDR din listă + Șterge fișiere HDR din listă &Remove Files - Ște&rge fișiere + Ște&rge fișiere List of HDRs that will be tone mapped @@ -303,31 +354,31 @@ Tone Mapping Settings Files - Fișiere setări pentru maparea de tonuri + Fișiere setări pentru maparea de tonuri Add all the Tone Mapping Setting files in a directory to the list - Adaugă la listă toate fișierele de setări pentru maparea de tonuri dintr-un dosar + Adaugă la listă toate fișierele de setări pentru maparea de tonuri dintr-un dosar Add D&irectory - Adaugă d&osar + Adaugă d&osar Add single Tone Mapping Setting files to the list - Adaugă la listă fișiere de setări mapare de tonuri + Adaugă la listă fișiere de setări mapare de tonuri Add Fi&les - Adaugă Fi&șiere + Adaugă Fi&șiere Remove single Tone Mapping Setting files to the list - Șterge fișiere setări pentru maparea de tonuri + Șterge fișiere setări pentru maparea de tonuri R&emove Files - Șt&erge fișiere + Șt&erge fișiere List of Tone Mapping Setting files that will be used to tone map each HDR @@ -343,7 +394,7 @@ Select &Output Folder... - Selectează dosar &destinație... + Selectează dosar &destinație... Conversion Log @@ -403,7 +454,7 @@ Saving using file format: %1, (quality - if applicable): %2 - Se salvează folosind formatul: %1, (calitate -dacă e aplicabil): %2 + Se salvează folosind formatul: %1, (calitate -dacă e aplicabil): %2 Choose a directory @@ -449,6 +500,94 @@ Aborting... Anulând... + + Tone Mapping Settings + Setări mapare de tonuri + + + % + + + + Output Image Quality + + + + Saving using file format: %1 + + + + Ouput Image Width: + + + + Output Folder: + + + + Selec&t... + + + + Add Directory (Alt+D) + + + + ... + ... + + + Alt+D + + + + Add Files (Alt+F) + + + + Alt+F + + + + Remove Files (Alt+R) + + + + Alt+R + + + + Add Directory (Alt+I) + + + + Alt+I + + + + Add Files (Alt+L) + + + + Alt+L + + + + Add from Database (Alt+B) + + + + Alt+B + + + + Remove Settings (Alt+M) + + + + Alt+M + + BatchTMJob @@ -524,7 +663,7 @@ Eroare: Numărul de valori EV specificat este diferit de numărul de fișiere sursă. - Error: Exif data missing in images and EV values not specifed on the commandline, bailing out. + Error: Exif data missing in images and EV values not specified on the commandline, bailing out. Eroare: Informațiile Exif lipsesc din imagini și valorile EV nu sunt specificate în linia de comandă, renunțând. @@ -701,6 +840,22 @@ Tonemapping requested, saving to file %1. + + Failed loading images + + + + Failed aligning images. + + + + Error: Quality must be in the range [0-100]. + + + + -q --quality VALUE Quality of the saved tone mapped file (0-100). + + DnDOption @@ -1038,6 +1193,10 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Dacă aceiași imagine este selectată atât în lista cu editabile cât și în cea cu referințe, această suprafață va arăta imaginea însuși.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Dând clic și ținând apăsat butonul stânga maus vei putea selecta o arie de tăiere.</p></body></html> + + Histogram + + GenericViewer @@ -1075,6 +1234,10 @@ ERROR: Failed Loading file: %1 EROARE: Eșuat în a încărca fișierul: %1 + + ERROR loading %1 + + HdrViewer @@ -1529,6 +1692,10 @@ <center><font color="#008400"><h3><b>All the EV values have been set.<br>Now click on Next button.</b></h3></font></center> <center><font color="#008400"><h3><b>Toate valorile EV au fost setate.<br>Acum apasă butonul Înainte.</b></h3></font></center> + + align_image_stack failed to align images. + + HelpBrowser @@ -2282,42 +2449,34 @@ Next - Următor + Următor Next Image - Imaginea următoare + Imaginea următoare Show Next Image - Arată Imaginea Următoare - - - Ctrl+PgDown - + Arată Imaginea Următoare Previous - Precedent + Precedent Previous Image - Imaginea precedentă + Imaginea precedentă Show Previous Image - Arată Imaginea Precedentă - - - Ctrl+PgUp - + Arată Imaginea Precedentă Lock Viewers Blochează Vizualizatori - Syncronize viewers mode (fit, fill or 1:1). + Synchronize viewers mode (fit, fill or 1:1). Sincronizează vizualizatori - mod (fit, fill ori 1:1). @@ -2448,12 +2607,20 @@ Error: %1 Eroare: %1 + + Soft Proofing + + + + Gamut Check + + ParametersDialog Saved Parameters - Parametrii Salvaţi + Parametrii Salvaţi @@ -2488,55 +2655,55 @@ Czech - Cehă + Cehă English - Engleză + Engleză Finnish - Finlandeză + Finlandeză French - Franceză + Franceză German - Germană + Germană Indonesian - Indoneziană + Indoneziană Italian - Italiană + Italiană Polish - Poloneză + Poloneză Romanian - Română + Română Russian - Rusă + Rusă Spanish - Spaniolă + Spaniolă Turkish - Turcă + Turcă Hungarian - Maghiară + Maghiară Default Previews Width @@ -2588,7 +2755,7 @@ C&hoose - A&lege + A&lege Which LDR image format to save to @@ -2632,7 +2799,7 @@ Batch Tonemapping Default Output Quality - Serie De Mapare De Tonuri Default Calitate Export + Serie De Mapare De Tonuri Default Calitate Export General @@ -2955,74 +3122,35 @@ Camera Profile - Profil Cameră + Profil Cameră Camera profile Profil Cameră - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Camera Profile</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the input color space used to decode RAW data.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">None</span>: no input color profile is used during RAW decoding.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Embedded</span>: use embedded color profile from RAW file if exist.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom input color space profile.</p></body></html> - - - None - Nimic + Nimic Built in - Construit în + Construit în Custom - Customizat - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Workspace</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the output color space used to decode RAW data.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Raw (linear)</span>: in this mode, no output color space is used during RAW decoding.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">sRGB</span>: this is a RGB color space, created cooperatively by Hewlett-Packard and Microsoft. It is the best choice for images destined for the Web and portrait photography.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Adobe RGB</span>: this color space is an extended RGB color space, developed by Adobe. It is used for photography applications such as advertising and fine art.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wide Gamut</span>: this color space is an expanded version of the Adobe RGB color space.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Pro-Photo</span>: this color space is an RGB color space, developed by Kodak, that offers an especially large gamut designed for use with photographic outputs in mind.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom output color space profile.</p></body></html> - + Customizat RAW - RAW + RAW sRGB - sRGB - - - Adobe RGB - - - - Wide Gamut - - - - Pro Photo - + sRGB Color Space - Culoare Spaţiu + Culoare Spaţiu align_image_stack command line arguments @@ -3060,14 +3188,50 @@ Choose a directory Alege un dosar - - - PreviewPanel - Form + Color Management + + + + Monitor + + + + Monitor Profile + + + + Printer + + + + Printer profile + Open ICC Profile + + + + Color profile (*.icc) + + + + &Browse... + + + + Browse... + + + + Color profile (*.icc *.ICC *.icm *.ICM) + + + + + PreviewPanel + Mantiuk '06 Mantiuk '06 @@ -3103,6 +3267,10 @@ Pattanaik Pattanaik + + Preview + + ProjectionsDialog @@ -3268,6 +3436,46 @@ Successfully loaded file %1. + + Warning + + + + Error Opening RAW File + + + + Error Unpacking RAW File + + + + Error Processing RAW File + + + + Memory Error in processing RAW File + + + + Error Creating PFS Frame + + + + I cannot open monitor profile. Please select a different one. + + + + I cannot open printer profile. Please select a different one. + + + + Please select a printer profile . + + + + I cannot perform the color transform. Please select a different monitor profile. + + ResizeDialog @@ -3324,6 +3532,157 @@ SavedParameters Comment + Comentariu + + + TM Operator + Operator TM + + + Simple + Simplu + + + Equation 2 + Ecuaţie 2 + + + Local Contrast Threshold + Prag contrast local + + + Pre-gamma + Pre-gamma + + + Bias + Tendință + + + Spatial Kernel Sigma + Sigma nucleu spațial + + + Range Kernel Sigma + Sigma nucleu interval + + + Base Contrast + Contrast bază + + + Alpha + Alfa + + + Beta + Beta + + + Color Saturation + Saturație culoare + + + Noise Reduction + Reducere de zgomot + + + Old Fattal + Fattal Vechi + + + Contrast Equalization + Egalizare contrast + + + Contrast Factor + Factor contrast + + + Saturation Factor + Factor saturație + + + Detail Factor + Factor detalii + + + Contrast Enhancement + Îmbunătățire contrast + + + Luminance Level + Nive luminanță + + + Manual Luminance Level + Manual Luminance Nivel + + + Cone and Rod based on Luminance + Con și tijă bazate pe luminanță + + + Local Tonemapping + Mapare Locală De Tonuri + + + Cone Level + Nivel con + + + Rod Level + Nivel tijă + + + Multiplier + Multiplicator + + + Use Scales + Utilizează scale + + + Key Value + Valoare cheie + + + Phi Value + Valoarea Phi + + + Range + Interval + + + Lower Scale + Scală joasă + + + Upper Scale + Scală înaltă + + + Brightness + Strălucire + + + Chromatic Adaptation + Adaptare cromatică + + + Light Adaptation + Adaptare lumină + + + + SavedParametersDialog + + Saved Parameters + Parametrii Salvaţi + + + Comment Comentariu @@ -3654,7 +4013,7 @@ Version Pre 1.8.4 - Versiunea Pre 1.8.4 + Versiunea Pre 1.8.4 Bias @@ -3922,25 +4281,39 @@ Error: The tone mapping settings file format has changed. This (old) file cannot be used with this version of LuminanceHDR. Create a new one. + + Version 2.3.0 + + TonemappingWarningDialog Attention! - Atenţie! + Atenţie! Ask again - Întreabă din nou + Întreabă din nou This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. Do you want to continue? - Acest operator de mapare de tonuri depinde de dimensiunea imaginii sursă. Aplicarea acestui operator pe imaginea completă va rezulta cel mai probabil într-o imagine diferită. + Acest operator de mapare de tonuri depinde de dimensiunea imaginii sursă. Aplicarea acestui operator pe imaginea completă va rezulta cel mai probabil într-o imagine diferită. Vrei să continui? + + Fattal Warning + + + + This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. + +Do you want to continue? + + TransplantExifDialog @@ -3970,7 +4343,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">From:</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -3982,7 +4355,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">To:</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -3990,7 +4363,7 @@ Log: - Jurnal: + Jurnal: Exif operations report @@ -4044,6 +4417,18 @@ &Done &Gata + + From + + + + To + + + + Log + Log + UMessageBox diff -Nru luminance-2.2.1/i18n/lang_ru.ts luminance-2.3.0/i18n/lang_ru.ts --- luminance-2.2.1/i18n/lang_ru.ts 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/i18n/lang_ru.ts 2012-07-01 09:10:50.000000000 +0000 @@ -71,7 +71,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:11pt; font-weight:400; font-style:normal;"> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#00007f;">Luminance HDR</span> — HDR imaging workflow application<br />(c) 2006-2009, Giuseppe Rota</p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010, 2011, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010-2012, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> @@ -94,7 +94,16 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:danielkaneider@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">danielkaneider@users.sourceforge.net</span></a></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; text-decoration: underline; color:#0000ff;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">pfs{tools|calibration|tmo} codebase</span><span style=" font-size:9pt;"><br /> Grzegorz Krawczyk<br /> </span><a href="mailto:krawczyk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">krawczyk@mpi-sb.mpg.de</span></a><span style=" font-size:9pt;"><br /> <br /> Rafal Mantiuk<br /> </span><a href="mailto:mantiuk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mantiuk@mpi-sb.mpg.de </span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-family:'Sans Serif'; font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Chinese translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Lei Zhao</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Slovakian translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Zuzana Cupkova</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Hindi translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Rohit Sharma</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> @@ -118,7 +127,7 @@ Choose one of the creation predefined profiles. -See documentation for more informations. +See documentation for more information. @@ -190,12 +199,8 @@ - Messages - - - Choose a directory - Выберите каталог + Выберите каталог Started processing... @@ -246,14 +251,6 @@ - Select &Input Folder - - - - Select &Output Folder - - - &Cancel О&тменить @@ -269,6 +266,48 @@ Aborting... Прерывание... + + Warning + + + + Total number of pictures must be a multiple of number of bracketed images. + + + + Output + Сохранение полученных LDR-снимков + + + Progress + + + + Select... + + + + Input folder: + + + + Output folder: + + + + Choose a source directory + + + + Choose a output directory + + + + The chosen output directory contains HDR files. Those files might be overwritten. + +Continue? + + BatchTMDialog @@ -278,15 +317,15 @@ Add &Directory - Добавить &каталог + Добавить &каталог &Add Files - &Добавить файлы + &Добавить файлы &Remove Files - &Удалить снимки + &Удалить снимки List of HDRs that will be tone mapped @@ -294,15 +333,15 @@ Add D&irectory - Добавить к&аталог + Добавить к&аталог Add Fi&les - До&бавить файлы + До&бавить файлы R&emove Files - Уда&лить файлы + Уда&лить файлы Output @@ -310,7 +349,7 @@ Select &Output Folder... - Укажите каталог &вывода... + Укажите каталог &вывода... &Show only: @@ -378,31 +417,31 @@ Add all the HDRs in a directory to the list - Добавить в список все HDR-снимки каталога + Добавить в список все HDR-снимки каталога Add single HDR files to the list - Добавить в список отдельные HDR-снимки + Добавить в список отдельные HDR-снимки Remove single HDR files to the list - Удалить из списка отдельные HDR-снимки + Удалить из списка отдельные HDR-снимки Tone Mapping Settings Files - Файлы с параметрами отображения тонов + Файлы с параметрами отображения тонов Add all the Tone Mapping Setting files in a directory to the list - Добавить в список все файлы с параметрами отображения тонов + Добавить в список все файлы с параметрами отображения тонов Add single Tone Mapping Setting files to the list - Добавить в список отдельные файлы с параметрами отображения тонов + Добавить в список отдельные файлы с параметрами отображения тонов Remove single Tone Mapping Setting files to the list - Удалить из списка отдельные файлы с параметрами отображения тонов + Удалить из списка отдельные файлы с параметрами отображения тонов List of Tone Mapping Setting files that will be used to tone map each HDR @@ -449,12 +488,96 @@ - Saving using file format: %1, (quality - if applicable): %2 + Aborting... + Прерывание... + + + Tone Mapping Settings + Параметры отображения тонов + + + % - Aborting... - Прерывание... + Output Image Quality + + + + Saving using file format: %1 + + + + Ouput Image Width: + + + + Output Folder: + + + + Selec&t... + + + + Add Directory (Alt+D) + + + + ... + ... + + + Alt+D + + + + Add Files (Alt+F) + + + + Alt+F + + + + Remove Files (Alt+R) + + + + Alt+R + + + + Add Directory (Alt+I) + + + + Alt+I + + + + Add Files (Alt+L) + + + + Alt+L + + + + Add from Database (Alt+B) + + + + Alt+B + + + + Remove Settings (Alt+M) + + + + Alt+M + @@ -531,7 +654,7 @@ Ошибка: количество указанных значений EV отличается от количества входящих файлов. - Error: Exif data missing in images and EV values not specifed on the commandline, bailing out. + Error: Exif data missing in images and EV values not specified on the commandline, bailing out. Ошибка: в снимках нет данных Exif, и значения EV не указаны в командной строке. Работа программы прекращена. @@ -704,6 +827,22 @@ Tonemapping requested, saving to file %1. + + Failed loading images + + + + Failed aligning images. + + + + Error: Quality must be in the range [0-100]. + + + + -q --quality VALUE Quality of the saved tone mapped file (0-100). + + DnDOption @@ -1041,6 +1180,10 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Если один и тот же снимок выбран в качестве опорного и двигаемого, он будет отображен без изменений.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Чтобы нарисовать кадрирующую рамку, нажмите левую клавишу мыши и перетащите курсор.</p></body></html> + + Histogram + + GenericViewer @@ -1078,6 +1221,10 @@ ERROR: Failed Loading file: %1 ОШИБКА: Не удалось загрузить файл: %1 + + ERROR loading %1 + + HdrViewer @@ -1532,6 +1679,10 @@ Weights: Функция взвешивания: + + align_image_stack failed to align images. + + HelpBrowser @@ -2117,11 +2268,11 @@ Next Image - Следующий снимок + Следующий снимок Previous Image - Предыдущий снимок + Предыдущий снимок Adjust &Levels @@ -2348,35 +2499,11 @@ - Next - - - - Show Next Image - - - - Ctrl+PgDown - - - - Previous - - - - Show Previous Image - - - - Ctrl+PgUp - - - Lock Viewers - Syncronize viewers mode (fit, fill or 1:1). + Synchronize viewers mode (fit, fill or 1:1). @@ -2451,11 +2578,12 @@ Untitled %1 - - - ParametersDialog - Saved Parameters + Soft Proofing + + + + Gamut Check @@ -2499,43 +2627,43 @@ Czech - Чешский + Чешский English - Английский + Английский French - Французский + Французский German - Немецкий + Немецкий Indonesian - Индонезийский + Индонезийский Italian - Итальянский + Итальянский Polish - Польский + Польский Russian - Русский + Русский Spanish - Испанский + Испанский Turkish - Турецкий + Турецкий HDR Options @@ -2563,7 +2691,7 @@ C&hoose - &Выбрать + &Выбрать Which LDR image format to save to @@ -2595,7 +2723,7 @@ Hungarian - Венгерский + Венгерский Please restart... @@ -2615,14 +2743,6 @@ - Finnish - - - - Romanian - - - Always show Preview Panel @@ -2905,159 +3025,128 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Camera Profile</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the input color space used to decode RAW data.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">None</span>: no input color profile is used during RAW decoding.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Embedded</span>: use embedded color profile from RAW file if exist.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom input color space profile.</p></body></html> +</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Read </span><span style=" font-family:'Sans Serif'; font-style:italic;">Help &gt; Contents &gt; Setting up Luminance &gt; External tools</span><span style=" font-family:'Sans Serif';"> to find out more about align_image_stack command line arguments</span></p></body></html> - None + Language - Built in + Default Previews Width - Custom + px - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Workspace</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the output color space used to decode RAW data.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Raw (linear)</span>: in this mode, no output color space is used during RAW decoding.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">sRGB</span>: this is a RGB color space, created cooperatively by Hewlett-Packard and Microsoft. It is the best choice for images destined for the Web and portrait photography.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Adobe RGB</span>: this color space is an extended RGB color space, developed by Adobe. It is used for photography applications such as advertising and fine art.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wide Gamut</span>: this color space is an expanded version of the Adobe RGB color space.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Pro-Photo</span>: this color space is an RGB color space, developed by Kodak, that offers an especially large gamut designed for use with photographic outputs in mind.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom output color space profile.</p></body></html> + HDR TIFF Default File Format - RAW + Temporary Working Folder - sRGB + Batch Tonemapping Default Output Format - Adobe RGB + Batch Tonemapping Number of Threads - Wide Gamut + General - Pro Photo + Method - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Read </span><span style=" font-family:'Sans Serif'; font-style:italic;">Help &gt; Contents &gt; Setting up Luminance &gt; External tools</span><span style=" font-family:'Sans Serif';"> to find out more about align_image_stack command line arguments</span></p></body></html> + Temperature (Kelvin) - Language + Green - Default Previews Width + Highlights - px + Level - HDR TIFF Default File Format - + Brightness + Яркость - Temporary Working Folder + Saturation - Batch Tonemapping Default Output Format + NR and CA Correction - Batch Tonemapping Number of Threads + Red Component - Batch Tonemapping Default Output Quality + Blue Component - General + Camera profile - Method + align_image_stack command line arguments - Temperature (Kelvin) + Color Management - Green + Monitor - Highlights + Monitor Profile - Level + Printer - Brightness - Яркость - - - Saturation + Printer profile - NR and CA Correction + Open ICC Profile - Red Component - - - - Blue Component - - - - Camera Profile + Color profile (*.icc) - Camera profile + &Browse... - Color Space + Browse... - align_image_stack command line arguments + Color profile (*.icc *.ICC *.icm *.ICM) @@ -3100,7 +3189,7 @@ Pattanaik - Form + Preview @@ -3268,6 +3357,46 @@ Successfully loaded file %1. + + Warning + + + + Error Opening RAW File + + + + Error Unpacking RAW File + + + + Error Processing RAW File + + + + Memory Error in processing RAW File + + + + Error Creating PFS Frame + + + + I cannot open monitor profile. Please select a different one. + + + + I cannot open printer profile. Please select a different one. + + + + Please select a printer profile . + + + + I cannot perform the color transform. Please select a different monitor profile. + + ResizeDialog @@ -3324,148 +3453,268 @@ SavedParameters Simple - Простой вариант + Простой вариант Local Contrast Threshold - Порог локального контраста + Порог локального контраста Bias - Смещение + Смещение Spatial Kernel Sigma - Сигма пространственного ядра + Сигма пространственного ядра Range Kernel Sigma - Сигма диапазонного ядра + Сигма диапазонного ядра Base Contrast - Контраст основного слоя + Контраст основного слоя Alpha - Альфа + Альфа Beta - Бета + Бета Color Saturation - Насыщенность + Насыщенность Noise Reduction - Подавление шума + Подавление шума Contrast Equalization - Выравнивание контрастности + Выравнивание контрастности Contrast Factor - Коэффициент контраста + Коэффициент контраста Saturation Factor - Коэффициент насыщенности + Коэффициент насыщенности Detail Factor - Коэффициент детализации + Коэффициент детализации Contrast Enhancement - Контраст + Контраст Luminance Level - Уровень светимости + Уровень светимости Cone and Rod based on Luminance - Уровень чувствительности колбочек и + Уровень чувствительности колбочек и палочек на основе освещенности Cone Level - Уровень чувствительности колбочек + Уровень чувствительности колбочек Rod Level - Уровень чувствительности палочек + Уровень чувствительности палочек Multiplier - Множитель + Множитель Use Scales - Использовать шкалы + Использовать шкалы Key Value - Значение ключа + Значение ключа Range - Диапазон + Диапазон Lower Scale - Нижняя шкала + Нижняя шкала Upper Scale - Верхняя шкала + Верхняя шкала Brightness - Яркость + Яркость Chromatic Adaptation - Хроматическая адаптация + Хроматическая адаптация Light Adaptation - Адаптация к свету + Адаптация к свету + + + + SavedParametersDialog + + Saved Parameters + + + + Comment + + + + TM Operator + + + + Simple + Простой вариант Equation 2 + Local Contrast Threshold + Порог локального контраста + + Pre-gamma - Comment - + Bias + Смещение + + + Spatial Kernel Sigma + Сигма пространственного ядра + + + Range Kernel Sigma + Сигма диапазонного ядра + + + Base Contrast + Контраст основного слоя + + + Alpha + Альфа + + + Beta + Бета + + + Color Saturation + Насыщенность + + + Noise Reduction + Подавление шума Old Fattal + Contrast Equalization + Выравнивание контрастности + + + Contrast Factor + Коэффициент контраста + + + Saturation Factor + Коэффициент насыщенности + + + Detail Factor + Коэффициент детализации + + + Contrast Enhancement + Контраст + + + Luminance Level + Уровень светимости + + Manual Luminance Level + Cone and Rod based on Luminance + Уровень чувствительности колбочек и +палочек на основе освещенности + + Local Tonemapping + Cone Level + Уровень чувствительности колбочек + + + Rod Level + Уровень чувствительности палочек + + + Multiplier + Множитель + + + Use Scales + Использовать шкалы + + + Key Value + Значение ключа + + Phi Value - TM Operator - + Range + Диапазон + + + Lower Scale + Нижняя шкала + + + Upper Scale + Верхняя шкала + + + Brightness + Яркость + + + Chromatic Adaptation + Хроматическая адаптация + + + Light Adaptation + Адаптация к свету @@ -3882,10 +4131,6 @@ - Version Pre 1.8.4 - - - Auto Cone/Rod @@ -3917,6 +4162,10 @@ Set Custom Output Size + + Version 2.3.0 + + TonemappingWarningDialog @@ -3924,16 +4173,18 @@ This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. Do you want to continue? - Результаты работы этого оператора зависят от размера изображения. Применение этого оператора к полноразмерному изображению с большой вероятностью создаст изображение, выглядящее иначе. + Результаты работы этого оператора зависят от размера изображения. Применение этого оператора к полноразмерному изображению с большой вероятностью создаст изображение, выглядящее иначе. Вы хотите продолжить? - Attention! + Fattal Warning - Ask again + This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. + +Do you want to continue? @@ -3969,7 +4220,7 @@ Log: - Журнал: + Журнал: &Show only: @@ -3997,7 +4248,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">From:</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -4009,7 +4260,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">To:</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -4039,6 +4290,18 @@ All Supported formats Все поддерживаемые форматы + + From + + + + To + + + + Log + Логарифмическая + UMessageBox diff -Nru luminance-2.2.1/i18n/lang_sk.ts luminance-2.3.0/i18n/lang_sk.ts --- luminance-2.2.1/i18n/lang_sk.ts 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/i18n/lang_sk.ts 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,5042 @@ + + + + + AboutLuminance + + + About Luminance + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:13pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600; color:#00007f;">Luminance HDR</span></p></body></html> + + + + + &About + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:11pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#00007f;">Luminance HDR</span> — HDR imaging workflow application<br />(c) 2006-2009, Giuseppe Rota</p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010-2012, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> + + + + + A&uthors + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Please </span><a href="mailto:davideanastasia@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">let me know</span></a><span style=" font-size:9pt;">, if I forgot to add someone to this list.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; font-weight:600;">Main developer QtPfsGui</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Giuseppe Rota<br /> </span><a href="mailto:grota@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">grota@users.sourceforge.net</span></a><span style=" font-size:9pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Main Developers Luminance HDR</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Franco Comida</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:fcomida@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">fcomida@users.sourceforge.net</span></a></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Davide Anastasia</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:davideanastasia@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">davideanastasia@users.sourceforge.net</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; font-weight:600;">Improvements, bugfixing</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Daniel Kaneider</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:danielkaneider@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">danielkaneider@users.sourceforge.net</span></a></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; text-decoration: underline; color:#0000ff;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">pfs{tools|calibration|tmo} codebase</span><span style=" font-size:9pt;"><br /> Grzegorz Krawczyk<br /> </span><a href="mailto:krawczyk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">krawczyk@mpi-sb.mpg.de</span></a><span style=" font-size:9pt;"><br /> <br /> Rafal Mantiuk<br /> </span><a href="mailto:mantiuk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mantiuk@mpi-sb.mpg.de </span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Chinese translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Lei Zhao</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Slovakian translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Zuzana Cupkova</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Hindi translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Rohit Sharma</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> + + + + + &Thanks To + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Please </span><a href="mailto:grota@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">let me know</span></a><span style=" font-size:9pt;">, if I forgot to add someone to this list.<br /><br /></span><span style=" font-size:9pt; font-weight:600;">All the community on </span><a href="http://www.flickr.com/groups/qtpfsgui"><span style=" text-decoration: underline; color:#0057ae;">Flickr</span></a><span style=" font-size:9pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Hugin's </span><span style=" font-size:9pt; font-weight:600; font-style:italic;">align_image_stack</span><span style=" font-size:9pt; font-weight:600;"> and more</span><span style=" font-size:9pt;"><br /> Pablo D'Angelo<br /> <br /></span><span style=" font-size:9pt; font-weight:600;">Opensuse 10.2 and 10.3 packager</span><span style=" font-size:9pt;"><br /> Peter Linnell<br /> <br /></span><span style=" font-size:9pt; font-weight:600;">Fedora packager and bug reports</span><span style=" font-size:9pt;"><br /> Douglas E. Warner<br /><br /></span><span style=" font-size:9pt; font-weight:600;">openSUSE 10.2 packager</span><span style=" font-size:9pt;"><br /> Rauch Christian<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Gentoo Linux Ebuild</span><span style=" font-size:9pt;"><br /> Rene Zbinden<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Various suggestions</span><span style=" font-size:9pt;"><br /> Arne Hagenah<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Tiff LDR bugfixes and suggestion</span><span style=" font-size:9pt;"><br /> Ignacy Gawedzki<br /> </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">DCRaw</span><span style=" font-size:9pt;"><br /> Dave Coffin<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">And also</span><span style=" font-size:9pt;"><br /> Erik Ouchterlony<br /> Antoine Latter<br /> Frank Boehme<br /> Sloan Poe<br /> Elizabeth Oldham </span></p></body></html> + + + + + &License Agreement + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + &OK + + + + + BatchHDRDialog + + + Batch HDR Dialog + + + + + Number of bracketed images: + + + + + + Select the number of bracketed pictures used to create the HDRs + + + + + Output + + + + + Output format: + + + + + Choose an HDR output file format + + + + + hdr + + + + + exr + + + + + PFS + + + + + tiff + + + + + Predefined profile: + + + + + Choose one of the creation predefined profiles. +See documentation for more information. + + + + + Profile 1 + + + + + Profile 2 + + + + + Profile 3 + + + + + Profile 4 + + + + + Profile 5 + + + + + Profile 6 + + + + + Alignment + + + + + Auto align the bracketed pictures + + + + + Auto-align images + + + + + Use Hugin's align_image_stack engine + + + + + Hugin's align_image_stack + + + + + Use MTB (Median Threshold Bitmap) engine + + + + + MTB + + + + + Progress + + + + + Folder where created HDRs are saved + + + + + + Select... + + + + + Folder where bracketed pictures are located (in alphabetical order) + + + + + Input folder: + + + + + Output folder: + + + + + &Cancel + + + + + &Start + + + + + &Close + + + + + Choose a source directory + + + + + Choose a output directory + + + + + + Warning + + + + + Total number of pictures must be a multiple of number of bracketed images. + + + + + The chosen output directory contains HDR files. Those files might be overwritten. + +Continue? + + + + + Started processing... + + + + + Creating HDR... + + + + + Completed with errors + + + + + Completed without errors + + + + + Error: missing EXIF data + + + + + Aligning... + + + + + Written + + + + + Error: + + + + + Aborting... + + + + + BatchTMDialog + + + Batch Tone Mapping + + + + + HDR Images to Convert + + + + + List of HDRs that will be tone mapped + + + + + Add Directory (Alt+D) + + + + + + + + + + + ... + + + + + Alt+D + + + + + Add Files (Alt+F) + + + + + Alt+F + + + + + Remove Files (Alt+R) + + + + + Alt+R + + + + + Tone Mapping Settings + + + + + Add Directory (Alt+I) + + + + + Alt+I + + + + + Add Files (Alt+L) + + + + + Alt+L + + + + + Add from Database (Alt+B) + + + + + Alt+B + + + + + Remove Settings (Alt+M) + + + + + Alt+M + + + + + List of Tone Mapping Setting files that will be used to tone map each HDR + + + + + Specify output folder for the tone mapped files + + + + + Output + + + + + Ouput Image Width: + + + + + % + + + + + Output Image Quality + + + + + Output Folder: + + + + + Selec&t... + + + + + Conversion Log + + + + + Batch operations report + + + + + &Show only: + + + + + Filter messages based on severity + + + + + All messages + + + + + Errors only + + + + + Success messages + + + + + &Filter log messages: + + + + + Clear filter text + + + + + Overall completion progress + + + + + &Cancel + + + + + Start batch tone mapping + + + + + &Start + + + + + Using %1 thread(s) + + + + + Saving using file format: %1 + + + + + + + Choose a directory + + + + + All HDR images + + + + + Select input images + + + + + Load tone mapping settings text files... + + + + + LuminanceHDR tone mapping settings text file (*.txt) + + + + + Processing... + + + + + Start processing... + + + + + Close + + + + + &Done + + + + + All tasks completed. + + + + + Aborting... + + + + + BatchTMJob + + + [T%1] Start processing %2 + + + + + [T%1] Successfully load %2 + + + + + [T%1] Successfully saved LDR file: %2 + + + + + [T%1] ERROR: Cannot save to file: %2 + + + + + [T%1] ERROR: Loading of %2 failed + + + + + CommandLineInterfaceManager + + + Error: Alignment engine not recognized. + + + + + Error: Wrong HDR creation format. + + + + + Error: Unknown weight function specified. + + + + + Error: Unknown response curve specified. + + + + + Error: Unknown HDR creation model specified. + + + + + Error: Unknown HDR creation format specified. + + + + + Error: Unknown tone mapping operator specified. + + + + + Error: Wrong tone mapping option format. + + + + + Error: Unknown tone mapping option specified. + + + + + Error: Quality must be in the range [0-100]. + + + + + Error: Unknown option %1. + + + + + Error: Missing argument for %1. + + + + + Error: The number of EV values specified is different from the number of input files. + + + + + Load file %1 failed + + + + + Error: Exif data missing in images and EV values not specified on the commandline, bailing out. + + + + + EV values have been assigned. + + + + + Failed executing align_image_stack + + + + + Failed aligning images. + + + + + Creating (in memory) the HDR. + + + + + Saving to file %1. + + + + + + Image %1 saved successfully + + + + + Could not save %1 + + + + + NOT Saving HDR image to file. %1 + + + + + Tonemapping requested, saving to file %1. + + + + + ERROR: Cannot save to file: %1 + + + + + Failed loading images + + + + + Usage: %1 [OPTIONS]... [INPUTFILES]... + + + + + Commandline interface to %1. + + + + + -h --help Display this help. + + + + + -v --verbose Print more messages during execution. + + + + + -a --align AIS|MTB Align Engine to use during HDR creation (default: no alignment). + + + + + -e --ev EV1,EV2,... Specify numerical EV values (as many as INPUTFILES). + + + + + -c --config HDR creation config. Possible values: + + + + + weight=triangular|gaussian|plateau:response_curve=from_file|linear|gamma|log|robertson:model=robertson|debevec:curve_filename=your_file_here.m + + + + + (Default is weight=triangular:response_curve=linear:model=debevec) + + + + + -l --load HDR_FILE Load an HDR instead of creating a new one. + + + + + -s --save HDR_FILE Save to a HDR file format. (default: don't save) + + + + + -g --gamma VALUE Gamma value to use during tone mapping. (default: 1) + + + + + -r --resize VALUE Width you want to resize your HDR to (resized before gamma and tone mapping) + + + + + -t --tmo Tone mapping operator. Legal values are: + + + + + ashikhmin|drago|durand|fattal|pattanaik|reinhard02|reinhard05|mantiuk06|mantiuk08 + + + + + (Default is mantiuk06) + + + + + -p --tmoptions Tone mapping operator options. Legal values are: + + + + + alpha=VALUE:beta=VALUE:color=VALUE:noise=VALUE:new=true|false (for fattal) + + + + + contrast=VALUE:saturation=VALUE:detail=VALUE:equalization=true|false (for mantiuk06) + + + + + colorsaturation=VALUE:contrastenhancement=VALUE:luminancelevel=VALUE:setluminance=true|false (for mantiuk08) + + + + + localcontrast=VALUE:eq=2|4:simple=true|false (for ashikhmin) + + + + + sigma_s=VALUE:sigma_r=VALUE:base=VALUE (for durand) + + + + + bias=VALUE (for drago) + + + + + local=true|false:autolum=true|false:cone=VALUE:rod=VALUE:multiplier=VALUE (for pattanaik) + + + + + scales=true|false:key=VALUE:phi=VALUE:num=VALUE:low=VALUE:high=VALUE (for reinhard02) + + + + + brightness=VALUE:chroma=VALUE:lightness=VALUE (for reinhard05) + + + + + (default is contrast=0.3:equalization=false:saturation=1.8, see also -o) + + + + + -o --output LDR_FILE File name you want to save your tone mapped LDR to. + + + + + -q --quality VALUE Quality of the saved tone mapped file (0-100). + + + + + (No tonemapping is performed unless -o is specified). + + + + + You must either load an existing HDR file (via the -l option) or specify INPUTFILES to create a new HDR. + + + + + + DnDOption + + + Drag and Drop + + + + + <b>What would you like to do with the file(s)?</b> + + + + + &Open + + + + + Open an existing HDR image + + + + + &New + + + + + Create a new HDR image from one or more images + + + + + &Cancel + + + + + Cancel the drag and drop process and return to the main window + + + + + EditingTools + + + Pan the image to a region + + + + + Choose a directory and a prefix + + + + + EditingToolsDialog + + + Editing Tools + + + + + Visualization and Navigation + + + + + Fit to window + + + + + &Fit to Window + + + + + Original size + + + + + Origina&l Size + + + + + Zoom In + + + + + Zoom &In + + + + + Zoom Out + + + + + Zoom &Out + + + + + Preview &Mode: + + + + + Difference (E-P) + + + + + Overlay (E+P) + + + + + Editable Only (E) + + + + + Pivot Only (P) + + + + + Antighosting Mask + + + + + Mask Color + + + + + Images List + + + + + Ed&itable + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The currently selected image is the one that you can shift and paint an anti-ghosting mask on.</p></body></html> + + + + + The image currently selected in this list can be translated up,down,left and right using the controls below. +This image's histogram is diplayed in the widget above. + + + + + Select the previous image in both lists + + + + + Use this button to move the selection to the previous image in both lists. + + + + + Select the next image in both lists + + + + + Use this button to move the selection to the next image in both lists. + + + + + R&eference + + + + + The reference image is the one currently selected + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The image currently selected in this list serves as a reference position for the editable image</p></body></html> + + + + + Tools + + + + + Crop the stack of images after a selection with the left mouse button has been made + + + + + Clicking this button you will be able to crop all the images to the size that you have previously selected with the left mouse button (press and hold the left mouse button and move the pointer to select a crop area, then press this button). + + + + + &Crop All Images + + + + + Ctrl+X + + + + + &Anti Ghosting + + + + + &Save Images + + + + + Ctrl+S + + + + + A&dd Mask + + + + + Remove Mas&k + + + + + Size: + + + + + pixels + + + + + &Strength: + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This area shows the preview (using the preview mode on the left) between the editable and reference image.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If the same image is selected in both the editable and reference list, this area will show the image itself.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clicking and holding the left mouse button you will be able to select a crop area.</p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Shift values for the currently selected editable image</p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here the user can view and set the shift values for the currently selected editable image</p></body></html> + + + + + Shift values for editable image + + + + + Reset the shift values for the currently selected movable image + + + + + &Reset + + + + + Reset the shift values for all the images + + + + + Reset &All + + + + + &Horizontal: + + + + + &Vertical: + + + + + Insert an horizontal shift value for the currently selected movable image + + + + + + px + + + + + Insert a vertical shift value for the currently selected movable image + + + + + Move up of 1 pixel the currently selected movable image + + + + + Move down of 1 pixel the currently selected movable image + + + + + Move right of 1 pixel the currently selected movable image + + + + + Move left of 1 pixel the currently selected movable image + + + + + Histogram + + + + + Get information about the graphical elements + + + + + &What's this? + + + + + Shift+F1 + + + + + &Next > + + + + + &Cancel + + + + + GenericViewer + + + Pan the image to a region + + + + + HdrCreationManager + + + The image %1 is an 8 bit format (LDR) while the previous ones are not. + + + + + + The image %1 has an invalid size. + + + + + The image %1 is an 16 bit format while the previous ones are not. + + + + + HdrInputLoader + + + + + + ERROR loading %1 + + + + + ERROR: The file<br>%1<br> is not a 8 bit or 16 bit tiff. + + + + + ERROR: %1 + + + + + ERROR: Failed Loading file: %1 + + + + + HdrViewer + + + &Mapping: + + + + + Histogram: + + + + + Linear + + + + + Gamma 1.4 + + + + + Gamma 1.8 + + + + + Gamma 2.2 + + + + + Gamma 2.6 + + + + + Logarithmic + + + + + HdrWizard + + + HDR Creation Wizard + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">HDR Creation Wizard</span></p> +<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:16pt; font-weight:600;"></p> +<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:16pt; font-weight:600;"></p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This tool help you in fusing bracketed images taken with different exposures to make an <a href="http://en.wikipedia.org/wiki/High_Dynamic_Range"><span style=" text-decoration: underline; color:#0057ae;">HDR Image</span></a>. </p> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The bracketed images must be taken with the same camera in the same conditions and possibly using a tripod.</p> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This assistant will help you through all the steps: importing the images, aligning them, choosing a profile to create an HDR.</p> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Constraints:</p> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">All images must have same dimension</p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">All images must have same color depth</p></body></html> + + + + + [1/2] Load Input Images + + + + + Currently Loaded &Files + + + + + Add Images + + + + + + + ... + + + + + Remove Selected Image + + + + + Clear List + + + + + Preview + + + + + Selected Image &Exposure + + + + + EV: + + + + + Alignment + + + + + &Autoalign images + + + + + Hugin's align_image_stack + + + + + MTB + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Start loading a set of images with different exposure</span></p></body></html> + + + + + [2/2] Choose Settings for HDR Creation + + + + + Choose one of the predefined profiles: + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">The first predefined profile in the list usually leads to best results. Change it only if the resulting HDR image is not good enough.</span></p></body></html> + + + + + Profile 1 + + + + + Profile 2 + + + + + Profile 3 + + + + + Profile 4 + + + + + Profile 5 + + + + + Profile 6 + + + + + Weighting function: + + + + + + + Triangular + + + + + + Response curve: + + + + + + + + Linear + + + + + HDR creation model: + + + + + + + Debevec + + + + + Anti-ghosting (beta!) + + + + + + + Gamma + + + + + + Log + + + + + Calibration + + + + + Amount of iterations: + + + + + Keep it small + + + + + Use this only if the default profiles above do not yield good results + + + + + Use custom configuration + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Choose one of the predefined profiles or use a custom configuration</span></p></body></html> + + + + + [2/2] Choose Custom Configuration + + + + + Weights: + + + + + Choose confidence function over all the possible pixel values: + + + + + + Gaussian + + + + + + Plateau + + + + + Response Curve: + + + + + Predefined response curves: + + + + + Load response function from file + + + + + Load... + + + + + Use calibration to find response curve (robertson02 algorithm) + + + + + Save response function to file: + + + + + Save As... + + + + + HDR Creation Equation: + + + + + Choose model: + + + + + + Robertson + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Here you can customize the HDR creation process</span></p></body></html> + + + + + + &Next > + + + + + &Cancel + + + + + Image Filename + + + + + Exposure + + + + + All formats (*.jpeg *.jpg *.tiff *.tif *.crw *.cr2 *.nef *.dng *.mrw *.orf *.kdc *.dcr *.arw *.raf *.ptx *.pef *.x3f *.raw *.sr2 *.rw2 *.3fr *.mef *.mos *.erf *.nrw *.srw + + + + + *.JPEG *.JPG *.TIFF *.TIF *.CRW *.CR2 *.NEF *.DNG *.MRW *.ORF *.KDC *.DCR *.ARW *.RAF *.PTX *.PEF *.X3F *.RAW *.SR2 *.RW2 *.3FR *.MEF *.MOS *.ERF *.NRW *.SRW);; + + + + + JPEG (*.jpeg *.jpg *.JPEG *.JPG);; + + + + + TIFF Images (*.tiff *.tif *.TIFF *.TIF);; + + + + + RAW Images (*.crw *.cr2 *.nef *.dng *.mrw *.orf *.kdc *.dcr *.arw *.raf *.ptx *.pef *.x3f *.raw *.sr2 *.rw2 *.3fr *.mef *.mos *.erf *.nrw *.srw + + + + + *.CRW *.CR2 *.NEF *.DNG *.MRW *.ORF *.KDC *.DCR *.ARW *.RAF *.PTX *.PEF *.X3F *.RAW *.SR2 *.RW2 *.3FR *.MEF *.MOS *.ERF *.NRW *.SRW) + + + + + Select the input images + + + + + Loading... + + + + + + Start loading a set of images with different exposure + + + + + <center><font color="#008400"><h3><b>Images Loaded.</b></h3></font></center> + + + + + <font color="#FF0000"><h3><b>WARNING:</b></h3></font> Luminance HDR was not able to find the relevant <i>EXIF</i> tags +for the following images: + <ul> %1</ul> <hr>You can still proceed creating an Hdr. To do so you have to insert <b>manually</b> the EV (exposure values) or stop difference values. <hr>If you want Luminance HDR to do this <b>automatically</b>, you have to load images that have at least +the following exif data: <ul><li>Shutter Speed (seconds)</li> <li>Aperture (f-number)</li></ul> <hr><b>HINT:</b> Losing EXIF data usually happens when you preprocess your pictures.<br> You can perform a <b>one-to-one copy of the exif data</b> between two sets of images via the <i><b>"Tools->Copy Exif Data..."</b></i> menu item. + + + + + EXIF data not found + + + + + + <center><h3><b>To proceed you need to manually set the exposure values.<br><font color="#FF0000">%1</font> values still required.</b></h3></center> + + + + + Loading Error: + + + + + Unknown + + + + + + + + Error... + + + + + align_image_stack failed to align images. + + + + + Failed to start external application "<em>align_image_stack</em>".<br>Please read "Help -> Contents... -> Setting up -> External Tools" for more information. + + + + + The external application "<em>align_image_stack</em>" crashed... + + + + + An unknown error occurred while executing the "<em>align_image_stack</em>" application... + + + + + Now click on next button + + + + + + + &Finish + + + + + Aligning... + + + + + + Processing... + + + + + Load a camera response curve file + + + + + + Camera response curve (*.m);;All Files (*) + + + + + Save a camera response curve file + + + + + Weights: + + + + + - Response curve: + + + + + - Model: + + + + + Logarithmic + + + + + From Calibration + + + + + From File + + + + + <center><font color="#008400"><h3><b>All the EV values have been set.<br>Now click on Next button.</b></h3></font></center> + + + + + HelpBrowser + + + Luminance HDR Help + + + + + Luminance Help + + + + + + &Print... + + + + + &Exit + + + + + + &Find... + + + + + Find &Next... + + + + + Find &Previous... + + + + + &Add + + + + + + &Delete + + + + + + D&elete All + + + + + Help SideBar + + + + + LuminanceHDR Online Help + + + + + &File + + + + + &Edit + + + + + &View + + + + + + &Bookmarks + + + + + &Quit + + + + + Find &Next + + + + + Find &Previous + + + + + &Contents + + + + + &Search + + + + + &Add Bookmark + + + + + Find + + + + + Search Term: + + + + + New Bookmark + + + + + New Bookmark's Title: + + + + + <h2><p>Sorry, no manual is installed!</p><p>Please contact your package provider or LuminanceHDR team if you built the application yourself</p></h2> + HTML message for no documentation available to show + + + + + LuminanceHDR - Help Browser + + + + + This protocol is not handled by the help browser. +Do you want to open the link with the default application +associated with the protocol? + + + + + HelpSideBar + + + Contents + + + + + &Contents + + + + + Se&arch + + + + + Searching is case insensitive + + + + + &Search + + + + + + 1 + + + + + Book&marks + + + + + &Add + + + + + &Remove + + + + + R&emove All + + + + + IOWorker + + + ERROR: The following file is not readable: %1 + + + + + ERROR: File %1 has unsupported extension. + + + + + ERROR: Failed loading file: %1 + + + + + ImageQualityDialog + + + Unknown + + + + + ImgQualityDialog + + + Save as + + + + + Saved File Quality + + + + + Quality: + + + + + File size: + + + + + Unknown + + + + + Ca&lculate + + + + + &Save + + + + + &Cancel + + + + + LdrViewer + + + + LDR image [%1 x %2] + + + + + LevelsDialog + + + Levels and Gamma + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Adjust Color Levels</span></p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Input Levels</span></p></body></html> + + + + + Clip black + + + + + Gamma + + + + + Clip White + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Output Levels</span></p></body></html> + + + + + &Reset + + + + + &Cancel + + + + + &OK + + + + + MainWindow + + + + Luminance HDR + + + + + &Tools + + + + + &Help + + + + + &Windows + + + + + &View + + + + + HDR &Histogram + + + + + &Toolbars + + + + + &File + + + + + &Edit + + + + + Main Toolbar + + + + + &New HDR image... + + + + + New HDR image + + + + + + Create a new HDR image from a set of LDR or Raw images + + + + + Create a new HDR image from a set of JPEG, Raw, or 8/16 bpc TIFF files + + + + + Ctrl+N + + + + + &Open HDR image... + + + + + Open HDR image + + + + + + + Load an existing HDR image file (OpenEXR, Radiance RGBE, PFS stream, RAW or TIFF) + + + + + Ctrl+O + + + + + &Save as... + + + + + Save as... + + + + + + + Save image (HDR or LDR) + + + + + Ctrl+S + + + + + &Quit + + + + + + Quit Luminance HDR + + + + + Exit + + + + + Ctrl+Q + + + + + Rotate c&ounter-clockwise + + + + + Rotate counter-clockwise + + + + + + + Rotate counter-clockwise the HDR image + + + + + < + + + + + Rotate c&lockwise + + + + + Rotate clockwise + + + + + + + Rotate clockwise the HDR image + + + + + > + + + + + Low Dynamic Range + + + + + + L + + + + + Fit to Dynamic Range + + + + + Fit to dynamic range + + + + + \ + + + + + Shrink Dynamic Range + + + + + [ + + + + + Extend Dynamic Range + + + + + ] + + + + + Decrease Exposure + + + + + 0 + + + + + &Increase Exposure + + + + + 9 + + + + + &Contents... + + + + + About... + + + + + + + Open user manual for Luminance HDR + + + + + F1 + + + + + &Normal Size + + + + + Normal size + + + + + + + View HDR image at its normal size + + + + + O + + + + + Zoom &In + + + + + + + Zoom in + + + + + + + + + + + Zoom &Out + + + + + + + Zoom out + + + + + - + + + + + &Fit in Window + + + + + + Fit in Window + + + + + + Make the HDR image fit its window + + + + + W + + + + + &Preferences... + + + + + Luminance Options + + + + + + + Set various options of Luminance + + + + + Ctrl+P + + + + + &Resize... + + + + + Resize the HDR image + + + + + + + Change size of the HDR image + + + + + Ctrl+R + + + + + Copy &Exif Data... + + + + + Copy Exif Data + + + + + + + Copy Exif data between two sets of files + + + + + Ctrl+E + + + + + &Align Images... + + + + + + + WORK IN PROGRESS + + + + + &About Qt + + + + + Show information about Qt + + + + + + Show information about Qt library that is used by Luminance + + + + + &Tile + + + + + &Cascade + + + + + + Cascade + + + + + Toolbars + + + + + Text &under Icons + + + + + &Icons Only + + + + + &Text Only + + + + + Text &Alongside Icons + + + + + &Batch Tone Mapping... + + + + + Convert multiple HDR images to LDR + + + + + + Convert multiple HDR images to LDR using existing settings files + + + + + Ctrl+B + + + + + &What's This? + + + + + + Get verbose information about user interface elements + + + + + Shift+F1 + + + + + About &Luminance HDR + + + + + Show information about Luminance HDR + + + + + + Show information about Luminance HDR, its authors and contributors + + + + + Save HDR image &preview... + + + + + + + Save the current HDR Preview to an LDR file + + + + + &Projective Transformation... + + + + + + + Apply projective transformation to the current HDR image + + + + + &Crop to Selection + + + + + Crop to Selection + + + + + + Crop the image to selection rectangle + + + + + Click and drag inside image area to create a selection, then use this button to crop to a new HDR image + + + + + Remove &Selection + + + + + Remove selection rectangle + + + + + + Remove selection rectangle from image area + + + + + Make a &Donation + + + + + Ctrl+D + + + + + Lock Viewers + + + + + Synchronize viewers mode (fit, fill or 1:1). + + + + + Lock the images for sync view + + + + + Minimize + + + + + Maximize + + + + + Bring All to Front + + + + + Show Preview Panel + + + + + Show/Hide Preview Panel + + + + + Ctrl+V + + + + + Adjust &Levels + + + + + + Adjust Levels + + + + + + Tune the histogram for the current LDR + + + + + Ctrl+L + + + + + Save All + + + + + + Save All LDR files + + + + + Remove Tab + + + + + Ctrl+W + + + + + Fill Window + + + + + Fill window with the current viewer + + + + + Batch HDR... + + + + + Ctrl+H + + + + + Soft Proofing + + + + + Gamut Check + + + + + Ready. Now open an existing HDR image or create a new one! + + + + + All HDR formats + + + + + Load one or more HDR images... + + + + + Save files in + + + + + Failed to save + + + + + Done! + + + + + Aborting... + + + + + Cropped Image + + + + + Unsaved changes... + + + + + This HDR image has unsaved changes.<br>Do you want to save it? + + + + + Untitled + + + + + Untitled %1 + + + + + Error: %1 + + + + + PreferencesDialog + + + Preferences + + + + + External Tools + + + + + HDR Options + + + + + Interface + + + + + Tone Mapping + + + + + RAW Conversion + + + + + Color Management + + + + + Language + + + + + Default Previews Width + + + + + px + + + + + Always show Preview Panel + + + + + Always show Wizard first page + + + + + HDR TIFF Default File Format + + + + + Good quality and smaller file size + + + + + LogLuv TIFF (float, 16bit per color channel) + + + + + Better quality, larger file size, better compatibility with other applications + + + + + Float TIFF (float, 32bit per color channel) + + + + + Show negative numbers as: + + + + + Show nan and +/-Inf values as: + + + + + Temporary Working Folder + + + + + &Browse... + + + + + + Which LDR image format to save to + + + + + Batch Tonemapping Default Output Format + + + + + JPEG + + + + + PNG + + + + + PPM + + + + + PBM + + + + + BMP + + + + + TIFF + + + + + + Amount of threads to use on multicore/SMP machines + + + + + Batch Tonemapping Number of Threads + + + + + General + + + + + Quality: + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Quality (interpolation)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the demosaicing RAW images decoding interpolation method. A demosaicing algorithm is a digital image process used to interpolate a complete image from the partial raw data received from the color-filtered image sensor internal to many digital cameras in form of a matrix of colored pixels. Also known as CFA interpolation or color reconstruction, another common spelling is demosaicing. There are 4 methods to demosaicing RAW images:</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Bilinear</span>: use high-speed but low-quality bilinear interpolation (default - for slow computer). In this method, the red value of a non-red pixel is computed as the average of the adjacent red pixels, and similar for blue and green.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">VNG</span>: use Variable Number of Gradients interpolation. This method computes gradients near the pixel of interest and uses the lower gradients (representing smoother and more similar parts of the image) to make an estimate.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">PPG</span>: use Patterned Pixel Grouping interpolation. Pixel Grouping uses assumptions about natural scenery in making estimates. It has fewer color artifacts on natural images than the Variable Number of Gradients method.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">AHD</span>: use Adaptive Homogeneity-Directed interpolation. This method selects the direction of interpolation so as to maximize a homogeneity metric, thus typically minimizing color artifacts.</p></body></html> + + + + + Bilinear + + + + + VNG + + + + + PPG + + + + + AHD + + + + + + + + + + + + + + + + + ... + + + + + Median: + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Median Filter</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set here the passes used by median filter applied after interpolation to Red-Green and Blue-Green channels.</p></body></html> + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Do not stretch or rotate pixels</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">For Fuji Super CCD cameras, show the image tilted 45 degrees. For cameras with non-square pixels, do not stretch the image to its correct aspect ratio. In any case, this option guarantees that each output pixel corresponds to one RAW pixel.</p></body></html> + + + + + Do not stretch or rotate pixels + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Interpolate RGB as four colors</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The default is to assume that all green pixels are the same. If even-row green pixels are more sensitive to ultraviolet light than odd-row this difference causes a mesh pattern in the output; using this option solves this problem with minimal loss of detail.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">To resume, this option blurs the image a little, but it eliminates false 2x2 mesh patterns with VNG quality method or mazes with AHD quality method.</p></body></html> + + + + + Interpolate RGB using 4 colours + + + + + White Balance + + + + + Method + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">White Balance Method</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Configure the raw white balance :</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Default D65</span>: Use a standard daylight D65 white balance (dcraw defaults)</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Camera</span>: Use the white balance specified by the camera. If not available, reverts to default neutral white balance</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Automatic</span>: Calculates an automatic white balance averaging the entire image</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Manual</span>: Set a custom temperature and green level values</p></body></html> + + + + + Predefined D65 + + + + + + Camera + + + + + Auto + + + + + Manual + + + + + Temperature (Kelvin) + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Temperature</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set here the color temperature in Kelvin.</p></body></html> + + + + + Green + + + + + Set here the green component to set magenta color cast removal level + + + + + Highlights + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Highlights</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the highlight clipping method:</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Solid white</span>: clip all highlights to solid white</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Unclip</span>: leave highlights unclipped in various shades of pink</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Blend</span>: Blend clipped and unclipped values together for a gradual fade to white</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Rebuild</span>: reconstruct highlights using a level value</p></body></html> + + + + + Solid White + + + + + Do not transform + + + + + Blend + + + + + Reconstruct + + + + + Level + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Level</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Specify the reconstruct highlight level. Low values favor whites and high values favor colors.</p></body></html> + + + + + Correct false colors in highlights + + + + + Auto Brightness + + + + + Brightness + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Brighness</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Specify the brightness level of output image. The default value is 1.0</p></body></html> + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Black point</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Use a specific black point value to decode RAW pictures. If you set this option to off, the Black Point value will be automatically computed.</p></body></html> + + + + + Black + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Black point value</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Specify specific black point value of the output image.</p></body></html> + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">White point</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Use a specific white point value to decode RAW pictures. If you set this option to off, the White Point value will be automatically computed.</p></body></html> + + + + + Saturation + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">White point value</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Specify specific white point value of the output image.</p></body></html> + + + + + NR and CA Correction + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Enable Noise Reduction</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Use wavelets to erase noise while preserving real detail.</p></body></html> + + + + + Enable noise reduction + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Threshold</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set here the noise reduction threshold value to use.</p></body></html> + + + + + Threshold: + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Enable Chromatic Aberration correction</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Enlarge the raw red and blue layers by the given factors, typically 0.999 to 1.001, to correct chromatic aberration.</p></body></html> + + + + + Enable Chromatic Aberration correction + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Red multiplier</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set here the magnification factor of the red layer</p></body></html> + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Blue multiplier</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set here the magnification factor of the blue layer</p></body></html> + + + + + Red Component + + + + + Blue Component + + + + + Monitor + + + + + Monitor Profile + + + + + + + Browse... + + + + + Camera profile + + + + + Printer + + + + + Printer profile + + + + + align_image_stack command line arguments + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Read </span><span style=" font-family:'Sans Serif'; font-style:italic;">Help &gt; Contents &gt; Setting up Luminance &gt; External tools</span><span style=" font-family:'Sans Serif';"> to find out more about align_image_stack command line arguments</span></p></body></html> + + + + + &Cancel + + + + + &OK + + + + + Choose a directory + + + + + + + Open ICC Profile + + + + + Color profile (*.icc *.ICC *.icm *.ICM) + + + + + + Color profile (*.icc) + + + + + PreviewPanel + + + Preview + + + + + Mantiuk '06 + + + + + Mantiuk '08 + + + + + Fattal + + + + + Drago + + + + + Durand + + + + + Reinhard '02 + + + + + Reinhard '05 + + + + + Ashikhmin + + + + + Pattanaik + + + + + ProjectionsDialog + + + Projective Transformation + + + + + Projections + + + + + Source Projection: + + + + + + Polar + + + + + + Angular + + + + + + Cylindrical + + + + + + Mirror Ball + + + + + Destination Projection: + + + + + Angles: + + + + + + + + ° + + + + + Bilinear Interpolation + + + + + Oversample factor: + + + + + Rotation (degrees) + + + + + Yaw: + + + + + Pitch: + + + + + Roll: + + + + + &Cancel + + + + + &OK + + + + + QApplication + + + ERROR: cannot load Tone Mapping Setting file: + + + + + ERROR: File too old, cannot parse Tone Mapping Setting file: + + + + + ERROR: cannot parse Tone Mapping Setting file: + + + + + QObject + + + + Error Opening RAW File + + + + + Error Unpacking RAW File + + + + + Error Processing RAW File + + + + + Memory Error in processing RAW File + + + + + Error Creating PFS Frame + + + + + Cannot convert %1 to a float + + + + + Cannot convert %1 to an integer + + + + + Input file %1 + + + + + Running in HDR-creation mode. + + + + + Running in Load-HDR mode. + + + + + Temporary directory: %1 + + + + + Using %1 threads. + + + + + Loading file %1 + + + + + Successfully loaded file %1. + + + + + Aborting... + + + + + Cannot find Qt's JPEG Plugin...<br>Please unzip the DLL package with the option "use folder names" activated. + + + + + All LDR formats + + + + + Save the LDR image as... + + + + + All HDR formats + + + + + Save the HDR image as... + + + + + Save as... + + + + + Option -v -a... + + + + + LuminanceHDR requires align_image_stack to be executed with the "-v -a aligned_" options. Command line options have been corrected. + + + + + + + + Warning + + + + + I cannot open monitor profile. Please select a different one. + + + + + I cannot open printer profile. Please select a different one. + + + + + Please select a printer profile . + + + + + I cannot perform the color transform. Please select a different monitor profile. + + + + + ResizeDialog + + + Scale Image + + + + + Hdr Image Size + + + + + Width: + + + + + Switch between pixels or percentage + + + + + Pixels + + + + + Percent + + + + + Height: + + + + + Result size + + + + + Restore original size + + + + + &Reset + + + + + &Cancel + + + + + &Scale + + + + + SavedParametersDialog + + + Saved Parameters + + + + + + Comment + + + + + TM Operator + + + + + Simple + + + + + Equation 2 + + + + + Local Contrast Threshold + + + + + Bias + + + + + Spatial Kernel Sigma + + + + + Range Kernel Sigma + + + + + Base Contrast + + + + + Alpha + + + + + Beta + + + + + + Color Saturation + + + + + Noise Reduction + + + + + Old Fattal + + + + + Contrast Equalization + + + + + Contrast Factor + + + + + Saturation Factor + + + + + Detail Factor + + + + + Contrast Enhancement + + + + + Luminance Level + + + + + Manual Luminance Level + + + + + Cone and Rod based on Luminance + + + + + Local Tonemapping + + + + + Cone Level + + + + + Rod Level + + + + + Multiplier + + + + + Use Scales + + + + + Key Value + + + + + Phi Value + + + + + Range + + + + + Lower Scale + + + + + Upper Scale + + + + + Brightness + + + + + Chromatic Adaptation + + + + + Light Adaptation + + + + + Pre-gamma + + + + + SavingParameters + + + Saving Parameters + + + + + Enter a short comment for the saved parameters: + + + + + SplashLuminance + + + Luminance HDR - Make a Donation + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Droid Sans'; font-size:8pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-weight:600; color:#000000;">Luminance HDR</span><span style=" font-family:'Sans Serif'; color:#000000;"> is open-source software and its development required hundreds of hours of work.<br /><br />If you like it, if you use it in your work and you would like to see it gradually improved,<br />please support its authors by making a donation.<br /><br />Would you like to make a donation for Luminance HDR now?</span></p></body></html> + + + + + Yes, I'd love to! + + + + + Ask me again later + + + + + No, Stop bothering me! + + + + + TMOProgressIndicator + + + Abort computation + + + + + TonemappingPanel + + + Tone mapping operators and their options + + + + + Start tonemapping (CTRL+T) + + + + + Use current parameters above (pregamma and tone mapping operator) to compute an LDR image + + + + + &Tonemap + + + + + Ctrl+T + + + + + Update current LDR + + + + + Tonemap + + + + + Mantiuk '06 + + + + + Mantiuk '08 + + + + + Fattal + + + + + Drago + + + + + Durand + + + + + Reinhard '02 + + + + + Reinhard '05 + + + + + Ashikhmin + + + + + Pattanaik + + + + + Operator + + + + + Contrast Factor + + + + + Saturation Factor + + + + + Detail Factor + + + + + Contrast Equalization + + + + + Predefined Display + + + + + Lcd Office + + + + + Lcd + + + + + Lcd Bright + + + + + CRT + + + + + + Color Saturation + + + + + Contrast Enhancement + + + + + Enable +Luminace Level + + + + + Luminance Level + + + + + Alpha + + + + + Beta + + + + + Noise Reduction + + + + + Version 2.3.0 + + + + + Bias + + + + + Spatial Kernel Sigma + + + + + Range Kernel Sigma + + + + + Base Contrast + + + + + Key Value + + + + + Phi + + + + + Use Scales + + + + + Range + + + + + Lower Scale + + + + + Upper Scale + + + + + Brightness + + + + + Chromatic Adaptation + + + + + Light Adaptation + + + + + Local Contrast Threshold + + + + + Simple + + + + + Equation Number + + + + + Eqn 2 + + + + + Eqn 4 + + + + + Multiplier + + + + + Local Tone Mapping + + + + + Auto Cone/Rod + + + + + Cone Level + + + + + Rod Level + + + + + Restore operator's default values + + + + + Restore + + + + + Previous applied settings + + + + + Previous + + + + + Next applied settings + + + + + Next + + + + + Here you can load and save a tone mapping settings file.<br>You can also apply the contents of the currently loaded settings file. + + + + + Tone Mapping Settings + + + + + Save current parameters to a text file + + + + + Save current parameters (pregamma and TMO) to a text file. + + + + + &Save to File + + + + + Load an existing text file containing pregamma and TMO settings + + + + + Load an existing text file containing pregamma and TMO settings. + + + + + &Load from File + + + + + Save current parameters + + + + + + + ... + + + + + Load saved parameters + + + + + Load parameters by comment + + + + + Here you can apply a gamma correction to the HDR.<br>The gamma correction will applied before tone mapping. + + + + + Process + + + + + &Result Size + + + + + + Gamma applied before tonemapping + + + + + Pre-gamma + + + + + Restore pregamma's default value (1) + + + + + Size of the resulting LDR image + + + + + Here you can choose the size of the resulting LDR image. + + + + + Set Custom Output Size + + + + + Clicking this button you will be able to insert a <i>width</i> value for the size of the resulting LDR image.<br>After pressing Enter (or Return) a height value will be automatically computed and the new size added to the list. + + + + + TM Database Problem + + + + + The database used for saving TM parameters cannot be opened. +Error: %1 + + + + + Load a tonemapping settings text file... + + + + + + LuminanceHDR tonemapping settings text file (*.txt) + + + + + + + + Aborting... + + + + + File is not readable (check existence, permissions,...) + + + + + Save tonemapping settings text file to... + + + + + File is not writable (check permissions, path...) + + + + + File is not readable (check permissions, path...) + + + + + Error: The tone mapping settings file format has changed. This (old) file cannot be used with this version of LuminanceHDR. Create a new one. + + + + + Custom LDR size + + + + + Enter the width of the new size: + + + + + TonemappingWarningDialog + + + Fattal Warning + + + + + This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. + +Do you want to continue? + + + + + TransplantExifDialog + + + Copy Exif data + + + + + From + + + + + + Append files to the list + + + + + + Remove selected file(s) from the list + + + + + + Move up selected file(s) + + + + + + Move down selected file(s) + + + + + To + + + + + Log + + + + + Exif operations report + + + + + &Show only: + + + + + Filter messages based on severity + + + + + All messages + + + + + Errors only + + + + + &Filter log messages: + + + + + Clear filter text + + + + + Keep existing Exif tags in destination file + + + + + &Cancel + + + + + &Start + + + + + + All Supported formats + + + + + + Select the input images + + + + + &Done + + + + + UMessageBox + + + %1 License document not found, you can find it online: %2here%3 + %2 and %3 are html tags + + + + + Donation + + + + + Would you like to donate? + + + + + Yes, I'd love to! + + + + + Stop Bothering Me + + + + + Remind me later + + + + diff -Nru luminance-2.2.1/i18n/lang_tr.ts luminance-2.3.0/i18n/lang_tr.ts --- luminance-2.2.1/i18n/lang_tr.ts 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/i18n/lang_tr.ts 2012-07-01 09:10:50.000000000 +0000 @@ -1,15 +1,15 @@ - + AboutLuminance &OK - &Tamam + &TAMAM About Luminance - + Lumiance Hakkında <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -17,57 +17,94 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:13pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600; color:#00007f;">Luminance HDR</span></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:13pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600; color:#00007f;">Luminance HDR</span></p></body></html> &About - - - - A&uthors - + &Hakkında - - &Thanks To - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:11pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#00007f;">Luminance HDR</span> — HDR imaging workflow application<br />(c) 2006-2009, Giuseppe Rota</p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010, 2011, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:11pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#00007f;">Luminance HDR</span> — HDR görüntüleme iş akışı uygulaması<br />(c) 2006-2009, Giuseppe Rota</p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010, 2011, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> - &License Agreement - + A&uthors + Yaz&arlar - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Please </span><a href="mailto:grota@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">let me know</span></a><span style=" font-size:9pt;">, if I forgot to add someone to this list.<br /><br /></span><span style=" font-size:9pt; font-weight:600;">All the community on </span><a href="http://www.flickr.com/groups/qtpfsgui"><span style=" text-decoration: underline; color:#0057ae;">Flickr</span></a><span style=" font-size:9pt;"><br /></span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Hugin's </span><span style=" font-size:9pt; font-weight:600; font-style:italic;">align_image_stack</span><span style=" font-size:9pt; font-weight:600;"> and more</span><span style=" font-size:9pt;"><br /> Pablo D'Angelo<br /> <br /></span><span style=" font-size:9pt; font-weight:600;">Opensuse 10.2 and 10.3 packager</span><span style=" font-size:9pt;"><br /> Peter Linnell<br /> <br /></span><span style=" font-size:9pt; font-weight:600;">Fedora packager and bug reports</span><span style=" font-size:9pt;"><br /> Douglas E. Warner<br /><br /></span><span style=" font-size:9pt; font-weight:600;">openSUSE 10.2 packager</span><span style=" font-size:9pt;"><br /> Rauch Christian<br /></span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Gentoo Linux Ebuild</span><span style=" font-size:9pt;"><br /> Rene Zbinden<br /></span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Various suggestions</span><span style=" font-size:9pt;"><br /> Arne Hagenah<br /></span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Tiff LDR bugfixes and suggestion</span><span style=" font-size:9pt;"><br /> Ignacy Gawedzki<br /> </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">DCRaw</span><span style=" font-size:9pt;"><br /> Dave Coffin<br /></span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">And also</span><span style=" font-size:9pt;"><br /> Erik Ouchterlony<br /> Antoine Latter<br /> Frank Boehme<br /> Sloan Poe<br /> Elizabeth Oldham </span></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Please </span><a href="mailto:davideanastasia@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">let me know</span></a><span style=" font-size:9pt;">, if I forgot to add someone to this list.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; font-weight:600;">Main developer QtPfsGui</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Giuseppe Rota<br /> </span><a href="mailto:grota@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">grota@users.sourceforge.net</span></a><span style=" font-size:9pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Main Developers Luminance HDR</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Franco Comida</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:fcomida@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">fcomida@users.sourceforge.net</span></a></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Davide Anastasia</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:davideanastasia@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">davideanastasia@users.sourceforge.net</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; font-weight:600;">Improvements, bugfixing</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Daniel Kaneider</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:danielkaneider@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">danielkaneider@users.sourceforge.net</span></a></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; text-decoration: underline; color:#0000ff;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">pfs{tools|calibration|tmo} codebase</span><span style=" font-size:9pt;"><br /> Grzegorz Krawczyk<br /> </span><a href="mailto:krawczyk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">krawczyk@mpi-sb.mpg.de</span></a><span style=" font-size:9pt;"><br /> <br /> Rafal Mantiuk<br /> </span><a href="mailto:mantiuk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mantiuk@mpi-sb.mpg.de </span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Please </span><a href="mailto:davideanastasia@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">let me know</span></a><span style=" font-size:9pt;">, if I forgot to add someone to this list.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; font-weight:600;">Main developer QtPfsGui</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Giuseppe Rota<br /> </span><a href="mailto:grota@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">grota@users.sourceforge.net</span></a><span style=" font-size:9pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Main Developers Luminance HDR</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Franco Comida</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:fcomida@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">fcomida@users.sourceforge.net</span></a></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Davide Anastasia</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:davideanastasia@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">davideanastasia@users.sourceforge.net</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; font-weight:600;">Improvements, bugfixing</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Daniel Kaneider</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:danielkaneider@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">danielkaneider@users.sourceforge.net</span></a></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; text-decoration: underline; color:#0000ff;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">pfs{tools|calibration|tmo} codebase</span><span style=" font-size:9pt;"><br /> Grzegorz Krawczyk<br /> </span><a href="mailto:krawczyk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">krawczyk@mpi-sb.mpg.de</span></a><span style=" font-size:9pt;"><br /> <br /> Rafal Mantiuk<br /> </span><a href="mailto:mantiuk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mantiuk@mpi-sb.mpg.de </span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:11pt; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#00007f;">Luminance HDR</span> — HDR imaging workflow application<br />(c) 2006-2009, Giuseppe Rota</p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010, 2011, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Please </span><a href="mailto:davideanastasia@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">let me know</span></a><span style=" font-size:9pt;">, if I forgot to add someone to this list.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; font-weight:600;">Main developer QtPfsGui</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Giuseppe Rota<br /> </span><a href="mailto:grota@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">grota@users.sourceforge.net</span></a><span style=" font-size:9pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Main Developers Luminance HDR</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Franco Comida</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:fcomida@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">fcomida@users.sourceforge.net</span></a></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Davide Anastasia</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:davideanastasia@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">davideanastasia@users.sourceforge.net</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; font-weight:600;">Improvements, bugfixing</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Daniel Kaneider</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:danielkaneider@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">danielkaneider@users.sourceforge.net</span></a></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; text-decoration: underline; color:#0000ff;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">pfs{tools|calibration|tmo} codebase</span><span style=" font-size:9pt;"><br /> Grzegorz Krawczyk<br /> </span><a href="mailto:krawczyk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">krawczyk@mpi-sb.mpg.de</span></a><span style=" font-size:9pt;"><br /> <br /> Rafal Mantiuk<br /> </span><a href="mailto:mantiuk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mantiuk@mpi-sb.mpg.de </span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> @@ -86,32 +123,76 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:danielkaneider@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">danielkaneider@users.sourceforge.net</span></a></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; text-decoration: underline; color:#0000ff;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">pfs{tools|calibration|tmo} codebase</span><span style=" font-size:9pt;"><br /> Grzegorz Krawczyk<br /> </span><a href="mailto:krawczyk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">krawczyk@mpi-sb.mpg.de</span></a><span style=" font-size:9pt;"><br /> <br /> Rafal Mantiuk<br /> </span><a href="mailto:mantiuk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mantiuk@mpi-sb.mpg.de </span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-family:'Sans Serif'; font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> - +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> + + + &Thanks To + Teşekür ettiklerimiz + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Please </span><a href="mailto:grota@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">let me know</span></a><span style=" font-size:9pt;">, if I forgot to add someone to this list.<br /><br /></span><span style=" font-size:9pt; font-weight:600;">All the community on </span><a href="http://www.flickr.com/groups/qtpfsgui"><span style=" text-decoration: underline; color:#0057ae;">Flickr</span></a><span style=" font-size:9pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Hugin's </span><span style=" font-size:9pt; font-weight:600; font-style:italic;">align_image_stack</span><span style=" font-size:9pt; font-weight:600;"> and more</span><span style=" font-size:9pt;"><br /> Pablo D'Angelo<br /> <br /></span><span style=" font-size:9pt; font-weight:600;">Opensuse 10.2 and 10.3 packager</span><span style=" font-size:9pt;"><br /> Peter Linnell<br /> <br /></span><span style=" font-size:9pt; font-weight:600;">Fedora packager and bug reports</span><span style=" font-size:9pt;"><br /> Douglas E. Warner<br /><br /></span><span style=" font-size:9pt; font-weight:600;">openSUSE 10.2 packager</span><span style=" font-size:9pt;"><br /> Rauch Christian<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Gentoo Linux Ebuild</span><span style=" font-size:9pt;"><br /> Rene Zbinden<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Various suggestions</span><span style=" font-size:9pt;"><br /> Arne Hagenah<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Tiff LDR bugfixes and suggestion</span><span style=" font-size:9pt;"><br /> Ignacy Gawedzki<br /> </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">DCRaw</span><span style=" font-size:9pt;"><br /> Dave Coffin<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">And also</span><span style=" font-size:9pt;"><br /> Erik Ouchterlony<br /> Antoine Latter<br /> Frank Boehme<br /> Sloan Poe<br /> Elizabeth Oldham </span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Bu listeye birini eklemeyi unutursam lütfen </span><a href="mailto:grota@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">bana</span></a><span style=" font-size:9pt;"> bildirin.<br /><br /></span><span style=" font-size:9pt; font-weight:600;">All the community on </span><a href="http://www.flickr.com/groups/qtpfsgui"><span style=" text-decoration: underline; color:#0057ae;">Flickr</span></a><span style=" font-size:9pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Hugin's </span><span style=" font-size:9pt; font-weight:600; font-style:italic;">align_image_stack</span><span style=" font-size:9pt; font-weight:600;"> and more</span><span style=" font-size:9pt;"><br /> Pablo D'Angelo<br /> <br /></span><span style=" font-size:9pt; font-weight:600;">Opensuse 10.2 and 10.3 packager</span><span style=" font-size:9pt;"><br /> Peter Linnell<br /> <br /></span><span style=" font-size:9pt; font-weight:600;">Fedora packager and bug reports</span><span style=" font-size:9pt;"><br /> Douglas E. Warner<br /><br /></span><span style=" font-size:9pt; font-weight:600;">openSUSE 10.2 packager</span><span style=" font-size:9pt;"><br /> Rauch Christian<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Gentoo Linux Ebuild</span><span style=" font-size:9pt;"><br /> Rene Zbinden<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Various suggestions</span><span style=" font-size:9pt;"><br /> Arne Hagenah<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Tiff LDR bugfixes and suggestion</span><span style=" font-size:9pt;"><br /> Ignacy Gawedzki<br /> </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">DCRaw</span><span style=" font-size:9pt;"><br /> Dave Coffin<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">And also</span><span style=" font-size:9pt;"><br /> Erik Ouchterlony<br /> Antoine Latter<br /> Frank Boehme<br /> Sloan Poe<br /> Elizabeth Oldham </span></p></body></html> + + + &License Agreement + Lisans Antlaşması + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> BatchHDRDialog Batch HDR Dialog - + Toplu HDR Diyaloğu Number of bracketed images: - + İşaretli görüntü sayısı: Select the number of bracketed pictures used to create the HDRs - + HDR oluşturmak için kullanılan işaretli resim sayısını seçin Predefined profile: - + Öntanımlı profil: Choose one of the creation predefined profiles. See documentation for more informations. - + Oluşturmadan önceden tanımlanan profillerden birini seçin. +Detaylı bilgi için belgelere bakın. Profile 1 @@ -139,51 +220,51 @@ Alignment - + Hizalama Auto align the bracketed pictures - + İşaretli resimleri otomatikman hizala MTB - + MTB Output format: - + Çıktı Biçimi: Choose an HDR output file format - + HDR çıktı dosyası biçiminiı seçin hdr - + hdr exr - + exr PFS - + PFS tiff - + tiff Folder where bracketed pictures are located (in alphabetical order) - + İşaretli resimlerin bulunduğu klasör (alfabetik sıra ile) Folder where created HDRs are saved - + Oluşturulan HDR'nin kayıt klasörü Messages - + Mesajlar Choose a directory @@ -191,82 +272,82 @@ Started processing... - + İşlem başlatıldı... Completed with errors - + Hatlar ile tamamlandı Completed without errors - + Hatasız tamamlandı Error: missing EXIF data - + Hata: yanlış EXIF verisi Aligning... - + Hizalanıyor... Creating HDR... - + HDR Oluşturuluyor... Written - + Yazılı Error: - + Hata: Auto-align images - + Görütüleri Otom-hizala Use Hugin's align_image_stack engine - + Hugin'in yığın_görüntü_hizalama motorunu kullanın Hugin's align_image_stack - + Hugin'in yığın_görüntü_hizalama motoru Use MTB (Median Threshold Bitmap) engine - + MTB motorunu kullan (Median Threshold Bitmap) Select &Input Folder - + Girdi &Klasörünü Seç Select &Output Folder - + Çıktı &Klasörünü Seç &Cancel - + &İptal &Start - + &Başlat &Close &Kapat - - Aborting... - Durduruluyor... - BatchTMDialog Batch Tone Mapping - Ton Haritalama Yığını + Toplu Ton Eşleme + + + Input Hdr list + Hdr listesini içe aktar Add &Directory @@ -285,6 +366,10 @@ Ton haritası oluşturulacak HDRlerin listesi + Input Tone Mapping Setting list + Ton Haritası Ayarlar listesini içe aktar + + Add D&irectory &Dizin Ekle @@ -305,30 +390,58 @@ Çıktı Klasörünü S&eç... + Log: + Günlük: + + &Show only: &Sadece göster: All messages - Bütün mesajlar + Tüm mesajlar Errors only Sadece Hatalar + &Filter Log messages: + &Süzgeç günlük mesajları: + + Clear filter text - Süzgeç metnini temizle + Filtre metinini temizle &Cancel - İ&ptal + &İptal + + + &Start! + &Başla! Choose a directory Bir Dizin Seçin + All Hdr formats + Bütün Hdr biçimleri + + + Select the input images + Girdi Resimlerini Seç + + + Load the tonemapping settings text files... + Ton haritalama ayarları metin dosyalarını yükle... + + + Luminance tonemapping settings text file (*.txt) + Luminance ton haritalama ayarları metin dosyası (*.txt) + + Processing... İşleniyor... @@ -338,400 +451,376 @@ HDR Images to Convert - + Dönüştürülecek HDR görüntüleri Add all the HDRs in a directory to the list - + Tüm HDR'leri bir dizin listesine ekle Add single HDR files to the list - + Tek HDR'yi dosya listesine ekle Remove single HDR files to the list - + Tek HDR dosyasını listeden çıkart Tone Mapping Settings Files - + Ton Eşleme Ayarları dosyası Add all the Tone Mapping Setting files in a directory to the list - + Tüm Ton Eşleme Ayar dosyalarını bir dizinde listesine ekle Add single Tone Mapping Setting files to the list - + Tek Ton Eşleme Ayar dosyasını dosya listesine ekle Remove single Tone Mapping Setting files to the list - + Ton Eşleme Ayarları dosyasını listeden kaldır List of Tone Mapping Setting files that will be used to tone map each HDR - + Ton Eşleme Ayar dosyaları listesi, her HDR tonu haritalanırken kullanılacak Specify output folder for the tone mapped files - + Ton eşlenen dosyalar için çıkış klasörü belirtin Conversion Log - + Dönüştürme günlüğü Batch operations report - + Toplu operasyon raporu Filter messages based on severity - + İletileri şiddetine göre filtrele Success messages - + Mesajlar başarılı &Filter log messages: - + &Günlük mesajlarını filtrele: Overall completion progress - + Genel tamamlanma ilerlemesi Start batch tone mapping - + Toplu Ton Eşlemeyi başlat &Start - + &Başlat Using %1 thread(s) - + % 1 konu kullanılıyor All HDR images - + Tüm HDR biçimleri Select input images - + Giriş görüntülerini seç Load tone mapping settings text files... - + Ton eşleme ayarlarını metin dosyasına yükle... LuminanceHDR tone mapping settings text file (*.txt) - + LuminanceHDR ton eşleştirme ayarları metin dosyası (*. Txt) Start processing... - + İşlemi başlat... Close - + Kapat All tasks completed. - + Tüm görevlet tamamlandı Saving using file format: %1, (quality - if applicable): %2 - - - - Aborting... - Durduruluyor... + Dosya biçimini kullanarak kaydet: %1, (kalite - eger var ise): %2 BatchTMJob [T%1] Start processing %2 - + [T%1] İşlemi Başlat %2 [T%1] Successfully load %2 - + [T%1] Başarı ile yüklendi %2 [T%1] Successfully saved LDR file: %2 - + [T%1] LDR dosyası başarı ile kayıt edildi: %2 [T%1] ERROR: Cannot save to file: %2 - + [T%1] HATA: Dosyayı kayıt edemiyor: %2 [T%1] ERROR: Loading of %2 failed - + [T%1] HATA: %2 yükleme başarısız oldu CommandLineInterfaceManager Error: Alignment engine not recognized. - + Hata: Hizalama motoru tanınmıyor - Error: Wrong HDR creation format. - + Error: Wrong HDR creation format + Hata: Yanlış HDR oluşturma biçimi Error: Unknown weight function specified. - + Hata:Belirlenen ağırlık fonksiyonu bilinmiyor. Error: Unknown response curve specified. - + Hata: Belirlenen tepki eğrisi bilinmiyor. Error: Unknown HDR creation model specified. - + Hata: Bilinmeyen HDR oluşturma modeli belirlendi Error: Unknown HDR creation format specified. - + Hata: Bilinmeyen HDR oluşturma biçimi belirlendi Error: Unknown tone mapping operator specified. - + Hata: Bilinmeyen ton eşleme operatörüi belirlendi Error: Wrong tone mapping option format. - + Hata: Yanlış ton eşleme seçenek biçimi Error: Unknown tone mapping option specified. - + Hata: Error: Unknown option %1. - + Hata: %1 seçeneği bilinmiyor. Error: Missing argument for %1. - + Hata: %1 argümanı hatalı Error: The number of EV values specified is different from the number of input files. - + Hata: Belirlenen EV değerlerinin sayısı girdi dosya sayısından farklıdır. Error: Exif data missing in images and EV values not specifed on the commandline, bailing out. - + Hata: Görüntü Exif verileri eksik ve EV değerleri komut satırında belirlenmemiş. Failed executing align_image_stack - + yığın_görüntü_hizalama yürüyme başarısız ERROR: Cannot save to file: %1 - + HATA:Dosyayı kayıt edemez: %1 + + + Cannot convert %1 to a float + %1 dalgalanma için dönüştürülemiyor + + + Cannot convert %1 to an integer + %1 bir tamsayıya dönüştürülemiyor Usage: %1 [OPTIONS]... [INPUTFILES]... - + Kullanım: %1 [SEÇENEKLER]... [GİRİŞ DOSYALARI]... Commandline interface to %1. - + %1 komut satırı arayüzü -h --help Display this help. - + -h --yardım Bu yardımı görüntüler. -v --verbose Print more messages during execution. - + -v --verbose Yürütülmesi anında daha fazla mesaj yazdırın. + + + -u --gui Start in gui mode with input files. + -u --gui Girdi dosyaları ile gui modunda başlat. -a --align AIS|MTB Align Engine to use during HDR creation (default: no alignment). - + -a --hizala AIS|MTB HDR oluştururken Hizalama Motorunu kullan (varsayılan: hizalama yok). -e --ev EV1,EV2,... Specify numerical EV values (as many as INPUTFILES). - + -e --ev EV1,EV2,... Sayısal EV değerleri (birçok GİRDİ DOSYALARI gibi). -c --config HDR creation config. Possible values: - + -c --yapılandırma HDR oluşturma yapılandırması. Olası değerleri: weight=triangular|gaussian|plateau:response_curve=from_file|linear|gamma|log|robertson:model=robertson|debevec:curve_filename=your_file_here.m - + ağırlık=triangular|gaussian|plateau:response_curve=from_file|linear|gamma|log|robertson:model=robertson|debevec:curve_filename=your_file_here.m (Default is weight=triangular:response_curve=linear:model=debevec) - + (Varsayılan ağırlık=triangular:response_curve=linear:model=debevec) -l --load HDR_FILE Load an HDR instead of creating a new one. - + -l --HDR_DOSYASI yükle Yeni HDR oluşturmak için yeni bir tane yükleyin. -s --save HDR_FILE Save to a HDR file format. (default: don't save) - + -s --HDR_DOSYASINI kaydet HDR dosya biçiminde kayıt edin. (varsayılan: kayıt) -g --gamma VALUE Gamma value to use during tone mapping. (default: 1) - + -g --gamma VDEGERİ Gamma değeri ton eşleme anında kullanılacak. (Varsayılan: 1) -r --resize VALUE Width you want to resize your HDR to (resized before gamma and tone mapping) - + -r --yeniden boyutlandırma DEGERİ HDR'nizi boyutlandırmak istediğiniz Genişlik (gama ve ton eşleme önceden yeniden boyutlandırıldı) -t --tmo Tone mapping operator. Legal values are: - + -t --tmo Ton eşitleme operatörü. Yasal değerleri: ashikhmin|drago|durand|fattal|pattanaik|reinhard02|reinhard05|mantiuk06|mantiuk08 - + ashikhmin|drago|durand|fattal|pattanaik|reinhard02|reinhard05|mantiuk06|mantiuk08 (Default is mantiuk06) - + (Varsayılan mantiuk06'dır) -p --tmoptions Tone mapping operator options. Legal values are: - + -p --tm seçenekleri Ton eşitleme operatörü. Yasal değerleri: alpha=VALUE:beta=VALUE:color=VALUE:noise=VALUE:new=true|false (for fattal) - + alpha=VALUE:beta=VALUE:color=VALUE:noise=VALUE:new=true|false (for fattal) contrast=VALUE:saturation=VALUE:detail=VALUE:equalization=true|false (for mantiuk06) - + kontrast=DEGER:doygunluk=DEGER:detay=DEGER:geliştirme=doğrue|yanlış ( mantiuk06 için) colorsaturation=VALUE:contrastenhancement=VALUE:luminancelevel=VALUE:setluminance=true|false (for mantiuk08) - + renk doygunluk=DEGERİ:kontrast geliştirme=DEGERİ:ışık düzeyil=DEGERİ:ışık ayarı=doğru|yanlış (mantiuk08 için) localcontrast=VALUE:eq=2|4:simple=true|false (for ashikhmin) - + yerel kontrast=DEGERİ:eq=2|4:basit=doğru|yanlış (ashikhmin için) sigma_s=VALUE:sigma_r=VALUE:base=VALUE (for durand) - + sigma_s=DEGERİ:sigma_r=DEGERİ:base=DEGERİ (durand için) bias=VALUE (for drago) - + sapma=DEĞERİ (drago için) local=true|false:autolum=true|false:cone=VALUE:rod=VALUE:multiplier=VALUE (for pattanaik) - + yerel=doğru|yanlış:autolum=true|false:cone=DEGERİ:rod=DEGERİ:multiplier=DEGERİ (pattanaik için) scales=true|false:key=VALUE:phi=VALUE:num=VALUE:low=VALUE:high=VALUE (for reinhard02) - + scales=true|false:key=DEGERİ:phi=DEGERİ:num=DEGERİ:düşük=DEGERİ:yüksek=DEGERİ (reinhard02 için) brightness=VALUE:chroma=VALUE:lightness=VALUE (for reinhard05) - + parlaklık=DEGERİ:chroma=DEGERİ:aydınlık=DEGERİ (reinhard05 için) (default is contrast=0.3:equalization=false:saturation=1.8, see also -o) - + (varsayılan kontrast=0.3:equalization=false:saturation=1.8, see also -o) -o --output LDR_FILE File name you want to save your tone mapped LDR to. - + -o --LDR_DOSYASI çıkışı LDR ton eşlemeyi kaydetmek istediğiniz dosyanın adı. (No tonemapping is performed unless -o is specified). - + (-o belirtilir ise ton eşleme gerçekleştirilmez). You must either load an existing HDR file (via the -l option) or specify INPUTFILES to create a new HDR. - - - - Load file %1 failed - - - - EV values have been assigned. - - - - Creating (in memory) the HDR. - - - - Saving to file %1. - - - - Image %1 saved successfully - - - - Could not save %1 - - - - NOT Saving HDR image to file. %1 - - - - Tonemapping requested, saving to file %1. - + Ya mevcut bir HDR dosyası yükleyin (-l seçeneği ile) veya yeni bir HDR oluşturmak için GİRİŞDOSYASI belirtmeniz gerekir. DnDOption Drag and Drop - + Sürükle ve Bırak <b>What would you like to do with the file(s)?</b> - + <b>Dosya ile ne yapmak istiyorsunuz?</b> &Open - + &Aç Open an existing HDR image - + Mevcut HDR görüntüsünü aç &New - + &Yeni Create a new HDR image from one or more images - + Bir veya daha fazla görüntüden HDR görüntüsü oluşturun &Cancel - + &İptal Cancel the drag and drop process and return to the main window - + Ana pencereye dönmek için sürükle ve bırak işlemi iptal edin EditingTools Pan the image to a region - + Görüntüyü bir bölgede kaydır Choose a directory and a prefix - + Bir dizin ve bir önek seçin @@ -766,236 +855,249 @@ Editing Tools - + Düzenleme Araçları Visualization and Navigation - + Görselleştirme ve Navigasyon Fit to window - + Pencereye sığdır &Fit to Window - + &Pencereye sığdır Original size - + Özgün boyut Origina&l Size - + Özgün &Boyut Preview &Mode: - + Önizleme &Modu: Difference (E-P) - + Fark (E-P) Overlay (E+P) - + Overlay (E+P) Editable Only (E) - + Sadece Düzenlenebilir (E) Pivot Only (P) - + Sadece Eksen (P) Antighosting Mask - + Anti-gölgeleme Maskesi Mask Color - + Renk Maskesi Images List - + Görüntü Listesi Ed&itable - + Düz&enlenebilir <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The currently selected image is the one that you can shift and paint an anti-ghosting mask on.</p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Seçilen mevcut görüntüyü anti-gölgeleme maskesi üzerinden boyayabilir ve kaydırabilirsiniz.</p></body></html> The image currently selected in this list can be translated up,down,left and right using the controls below. This image's histogram is diplayed in the widget above. - + Görüntü mevcut listeded seçildi, aşağıdaki kontrolu kullanarak yukarı,aşağı,sola ve sağa çevirebilirsiniz. +Bu görüntünün widget'i yukarıda görüntülenir. Select the previous image in both lists - + Önceki görüntüyü her iki listeden seç Use this button to move the selection to the previous image in both lists. - + Önceki görüntü seçimini her iki listeden de taşımak için bu butonu kullanın. Select the next image in both lists - + Sonraki görüntüyü her iki listeden seç Use this button to move the selection to the next image in both lists. - + Sonraki görüntü seçimini her iki listeden de taşımak için bu butonu kullanın. R&eference - + Re&ferans The reference image is the one currently selected - + Referans görüntü şu anda seçili <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The image currently selected in this list serves as a reference position for the editable image</p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Şu anda bu listede seçilen görüntü için düzenlenebilir referans noktası</p></body></html> Tools - + Araçlar Crop the stack of images after a selection with the left mouse button has been made - + Sol fare tuşu ile bir seçim yapdıktan sonra görüntü yığınını kırpın Clicking this button you will be able to crop all the images to the size that you have previously selected with the left mouse button (press and hold the left mouse button and move the pointer to select a crop area, then press this button). - + Bu butona tıkladığınızda (butona basılı tutun ve sol fare düğmesi ile bir kırpma alanı seçmek için işaretçiyi haraket ettirin) daha önce farenin sol tuşu ile seçtiğiniz boyutaki tüm görüntüleri kırpmanız mümkün olacak. &Crop All Images - + &Tüm Görüntüleri Kırp Ctrl+X - + Ctrl+X &Anti Ghosting - + &Anti-Gölgeleme &Save Images - + &Görüntüleri Kaydet A&dd Mask - + Mas&ke Ekle Remove Mas&k - + Maskeyi Çık&art Size: - + Boyut: pixels - + piksel &Strength: - + &Güç: <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Shift values for the currently selected editable image</p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Seçilen düzenlenebilir görüntü için kaydırma değerleri</p></body></html> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here the user can view and set the shift values for the currently selected editable image</p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Buradan seçilen düzenlenebilir görüntü için kullanıcı kaydırma değerlerini ayarlayabilirsiniz</p></body></html> Shift values for editable image - + Düzenlenebilir görüntü kaydırma değerleri Reset the shift values for the currently selected movable image - + Seçilen hareketli görüntü için kayma değerlerini sıfırlayın Reset the shift values for all the images - + Tüm görüntüler için kayma değerlerini sıfırlayın Reset &All - + Tümünü Sıfırla &Horizontal: - + &Yatay: &Vertical: - + &Dikey: Insert an horizontal shift value for the currently selected movable image - + Seçilen hareketli görüntü için yatay kaydırma değerini girin px - + px Insert a vertical shift value for the currently selected movable image - + Seçilen hareketli görüntü için dikey bir kayma değeri girin Move up of 1 pixel the currently selected movable image - + Seçilen hareketli görüntüyü 1 piksel yukarıya taşı Move down of 1 pixel the currently selected movable image - + Seçilen hareketli görüntüyü 1 piksel aşağıya taşı Move right of 1 pixel the currently selected movable image - + Seçilen hareketli görüntüyü 1 piksel sağa taşı Move left of 1 pixel the currently selected movable image - + Seçilen hareketli görüntüyü 1 piksel sola taşı Get information about the graphical elements - + Grafik öğeler hakkında bilgi alın &What's this? - + &Bu nedir? Shift+F1 - + Shift+F1 &Cancel - + &İptal <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -1004,49 +1106,58 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This area shows the preview (using the preview mode on the left) between the editable and reference image.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If the same image is selected in both the editable and reference list, this area will show the image itself.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clicking and holding the left mouse button you will be able to select a crop area.</p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Bu alan (soldaki önizleme modu kullanarak) düzenlenebilir ve referans görüntü arasındaki önizlemeyi gösterir.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Eğer aynı görüntünün düzenlenebilir ve referans listesi seçilirse, görüntü bu alanda gösterilecektir.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Sol fare tuşuna basılı tutarak bir kırpma alanı seçebilirsiniz.</p></body></html> GenericViewer Pan the image to a region - + Görüntüyü bir bölgede kaydır HdrCreationManager The image %1 is an 8 bit format (LDR) while the previous ones are not. - + %1 görüntüsü öncekiler gibi değildir, görüntü 8 bit (LDR) formatında'dır The image %1 has an invalid size. - + %1 görüntüsü geçersiz bir boyuttadır. The image %1 is an 16 bit format while the previous ones are not. - + %1 görüntüsü öncekiler gibi değil, 16 bit biçimindedir. HdrInputLoader ERROR: The file<br>%1<br> is not a 8 bit or 16 bit tiff. - + HATA: Dosya<br>%1<br> tiff 8 bit veya 16 bit değildir. ERROR: %1 - + ERROR: %1 ERROR: Failed Loading file: %1 - + ERROR: %1 dosyasını yükleme başarısız HdrViewer + Viewing Settings Toolbar + Ayarlar Araç Çubuğunu Görüntüle + + Linear Doğrusal @@ -1075,15 +1186,43 @@ Histogram: + Unsaved changes... + Kaydedilmemiş değişiklikler... + + &Mapping: - + &Eşleme: HdrWizard + Hdr creation Wizard + Hdr Oluşturma Sihirbazı + + [1/2] Load Input Images - [1/3] Girdi Resimlerini Yükle {1/2]?} + [1/2] Girdi Resimlerini Yükle + + + Load Input Images + Girdi Resimlerini Yükle + + + [2/2] Choose Settings for Hdr Creation + [2/3] Hdr Oluşturumu İçin Ayarları Seçin {2/2]?} + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Please choose one of the predefined profiles listed on the right:</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">The first one in the list usually leads to best results, change it only if the resulting Hdr is not good enough.</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Lütfen sağdalistelenen ön tanımlı profillerden birini seçiniz:</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Listedeki ilk değer, genellikle dönen en iyi sonuçtur, Sadece Hdr sonuçlandırması yeteri kadar iyi değilse değiştirin.</span></p></body></html> + + + list of default profiles + Ön tanımlı profillerin listesi Profile 1 @@ -1126,10 +1265,18 @@ Doğrusal + Hdr creation model: + Hdr Oluşturma Modeli: + + Debevec Debevec + Anti-ghosting(beta!) + Karşı-gölgeleme(beta!) + + Gamma Gama @@ -1142,12 +1289,32 @@ Ölçeklendirme + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Number of iterations (keep it small):</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Yineleme sayısı (küçük tutunuz):</p></body></html> + + + Use custom configuration. +(use this only if the default profiles +above do not yield good results) + Genel yapılandırmayı kullan +(bunu sadece yukarıdaki ön tanımlı +profiller, iyi sonuçlar çıkarmazlarsa kullanın) + + [2/2] Choose Custom Configuration - [2/3] Genel Yapılandırmayı Seçin {2/2]?} + [2/2] Özell Yapılandırmayı Seçin Weights: - Derinlik: + Ağırlıklar: + + + <p align="left">Choose confidence function +over all the possible +pixel values</p> + <p align="left">Mümkün olan bütün piksel +değerlerinde, emniyet +işlevini seçiniz</p> Gaussian @@ -1170,6 +1337,14 @@ Yanıt eğrisini bulmak için ölçeklendirme kullan (robertson02 algoritması) + Hdr creation equation: + Hdr oluşturması eşitlemesi: + + + Choose Model: + Model Seçin: + + Robertson Robertson @@ -1191,7 +1366,7 @@ &Finish - &Bitir + &Bitti Processing... @@ -1199,11 +1374,15 @@ Load a camera response curve file - Bir fotoğraf makinesi yanıt eğrisi dosyası yükle + Bir kamera yanıt eğrisi dosyası yükleyin Camera response curve (*.m);;All Files (*) - Fotoğraf makinesi yanıt eğrisi (*.m);;Bütün Dosyalar (*) + Kamera yanıt eğrisi (*.m);;Tüm Dosyalar (*) + + + (*) Weights: + (*) Ağırlıkar: - Response curve: @@ -1227,7 +1406,7 @@ HDR Creation Wizard - + HDR Oluşturma Sihirbazı <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -1248,55 +1427,72 @@ <p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> <p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">All images must have same dimension</p> <p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">All images must have same color depth</p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">HDR Oluşturma Sihirbazı</span></p> +<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:16pt; font-weight:600;"></p> +<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:16pt; font-weight:600;"></p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Bu araç farklı pozlama ile çekilen görüntüleri sıralamada size yardımcı olacak <a href="http://en.wikipedia.org/wiki/High_Dynamic_Range"><span style=" text-decoration: underline; color:#0057ae;">HDR Görüntüsü</span></a>. </p> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Sıralanan görüntüler bir tripod kullanarak aynı koşullar ve olası aynı kamera ile çekilmiş olmalıdır.</p> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Bu asistan tüm adımlarda size yardımcı olacaktır: görüntüleri alırken, hizalarken, HDR oluşturmak için bir profil seçerken.</p> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Kısıtlamalar:</p> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Tüm görüntüler aynı ölçülerde olmalı</p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Tüm görüntüler aynı renk derinliğinde olmalı</p></body></html> Currently Loaded &Files - + Şu anda Yüklü &Dosyalar Add Images - + Görüntüleri Ekle ... - + ... Remove Selected Image - + Seçilen Görüntütü Çıkart Clear List - + Listeyi Temizle Preview - + Önizle Selected Image &Exposure - + Seçilen Görüntüyü Pozla EV: - + EV: Alignment - + Hizalama &Autoalign images - + &Görüntüleri otom.hizala Hugin's align_image_stack - + Hugin'in yığın_görüntü_hizalaması MTB - + MTB <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -1304,15 +1500,19 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Start loading a set of images with different exposure</span></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Farklı pozlanmış görüntülerden bir set yüklemeyi başlat</span></p></body></html> [2/2] Choose Settings for HDR Creation - + [2/2] HDR Oluşturma Ayarlarını Seçin Choose one of the predefined profiles: - + Önceden tanımlı profillerden birini seçin: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -1320,35 +1520,39 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">The first predefined profile in the list usually leads to best results. Change it only if the resulting HDR image is not good enough.</span></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Listedeki tanımlı ilk profil genellikle en iyi sonuçlara yol açar. Eğer çıkan HDR görüntüsü yeterince iyi değil ise, değiştirin.</span></p></body></html> Response curve: - + Tepki eğrisi: HDR creation model: - + HDR oluşturma modeli: Anti-ghosting (beta!) - + Anti-ghosting (beta!) Amount of iterations: - + Tekrarlama miktarı: Keep it small - + Küçük tut Use this only if the default profiles above do not yield good results - + Varsayılan profiller üzerinde iyi sonuçlar yoksa, sadece bunu kullanın Use custom configuration - + Özel yapılandırma kullan <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -1356,31 +1560,35 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Choose one of the predefined profiles or use a custom configuration</span></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Önceden tanımlanmış profillerden birini seçin veya özel bir yapılandırma kullanabilirsiniz</span></p></body></html> Choose confidence function over all the possible pixel values: - + Tüm olası piksel değerleri üzerinden güven fonksiyonunu seçin: Load response function from file - + Dosyadan tepki fonksiyonunu yükle Save response function to file: - + Tepki fonksiyonunu dosyaya kaydet: Save As... - + Farklı Kaydet... HDR Creation Equation: - + HDR Oluşturma Denklemi: Choose model: - + Modeli Seç: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -1388,106 +1596,334 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Here you can customize the HDR creation process</span></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Buradan HDR oluşturma işlemini özelleştirebilirsiniz</span></p></body></html> &Cancel - + &İptal Image Filename - + Görüntü Dosyası adı Exposure - + Pozlandırma All formats (*.jpeg *.jpg *.tiff *.tif *.crw *.cr2 *.nef *.dng *.mrw *.orf *.kdc *.dcr *.arw *.raf *.ptx *.pef *.x3f *.raw *.sr2 *.rw2 *.3fr *.mef *.mos *.erf *.nrw *.srw - + Tüm biçimler (*.jpeg *.jpg *.tiff *.tif *.crw *.cr2 *.nef *.dng *.mrw *.orf *.kdc *.dcr *.arw *.raf *.ptx *.pef *.x3f *.raw *.sr2 *.rw2 *.3fr *.mef *.mos *.erf *.nrw *.srw *.JPEG *.JPG *.TIFF *.TIF *.CRW *.CR2 *.NEF *.DNG *.MRW *.ORF *.KDC *.DCR *.ARW *.RAF *.PTX *.PEF *.X3F *.RAW *.SR2 *.RW2 *.3FR *.MEF *.MOS *.ERF *.NRW *.SRW);; - + *.JPEG *.JPG *.TIFF *.TIF *.CRW *.CR2 *.NEF *.DNG *.MRW *.ORF *.KDC *.DCR *.ARW *.RAF *.PTX *.PEF *.X3F *.RAW *.SR2 *.RW2 *.3FR *.MEF *.MOS *.ERF *.NRW *.SRW);; JPEG (*.jpeg *.jpg *.JPEG *.JPG);; - + JPEG (*.jpeg *.jpg *.JPEG *.JPG);; TIFF Images (*.tiff *.tif *.TIFF *.TIF);; - + TIFF Görüntüleri (*.tiff *.tif *.TIFF *.TIF);; RAW Images (*.crw *.cr2 *.nef *.dng *.mrw *.orf *.kdc *.dcr *.arw *.raf *.ptx *.pef *.x3f *.raw *.sr2 *.rw2 *.3fr *.mef *.mos *.erf *.nrw *.srw - + RAW Görüntüleri (*.crw *.cr2 *.nef *.dng *.mrw *.orf *.kdc *.dcr *.arw *.raf *.ptx *.pef *.x3f *.raw *.sr2 *.rw2 *.3fr *.mef *.mos *.erf *.nrw *.srw *.CRW *.CR2 *.NEF *.DNG *.MRW *.ORF *.KDC *.DCR *.ARW *.RAF *.PTX *.PEF *.X3F *.RAW *.SR2 *.RW2 *.3FR *.MEF *.MOS *.ERF *.NRW *.SRW) - + *.CRW *.CR2 *.NEF *.DNG *.MRW *.ORF *.KDC *.DCR *.ARW *.RAF *.PTX *.PEF *.X3F *.RAW *.SR2 *.RW2 *.3FR *.MEF *.MOS *.ERF *.NRW *.SRW) Loading... - + Yükleniyor... Start loading a set of images with different exposure - + Farklı pozlama ile çekilen görüntülerin bir setini yüklemeyi başlat <center><font color="#008400"><h3><b>Images Loaded.</b></h3></font></center> - + <center><font color="#008400"><h3><b>Görüntüler Yüklendi.</b></h3></font></center> <font color="#FF0000"><h3><b>WARNING:</b></h3></font> Luminance HDR was not able to find the relevant <i>EXIF</i> tags for the following images: <ul> %1</ul> <hr>You can still proceed creating an Hdr. To do so you have to insert <b>manually</b> the EV (exposure values) or stop difference values. <hr>If you want Luminance HDR to do this <b>automatically</b>, you have to load images that have at least the following exif data: <ul><li>Shutter Speed (seconds)</li> <li>Aperture (f-number)</li></ul> <hr><b>HINT:</b> Losing EXIF data usually happens when you preprocess your pictures.<br> You can perform a <b>one-to-one copy of the exif data</b> between two sets of images via the <i><b>"Tools->Copy Exif Data..."</b></i> menu item. - + <font color="#FF0000"><h3><b>WARNING:</b></h3></font> Aşağıdaki görüntüler için Luminance HDR <i>EXIF</i> etiketlerini +bulmak mümkün değil: + <ul> %1</ul> <hr>You can still proceed creating an Hdr. Bunu yapmak için EV (pozlama değerlerini) veya farklı değerleri <b>el ile</b> eklemek gerekir. <hr>Luminance HDR ile bunu <b>otomatikman</b> yapmak istiyorsanız , en azından şu exif verisine sahip görüntüleri +yüklemek zorundasınız: <ul><li>Deklanşör Hızı (saniye)</li> <li>Diyafram (f- +sayısı)</li></ul> <hr><b>İPUCU:</b>Görüntüler önişlenirken EXIF verileri genellikle kayıp olur.<br> +<i><b>"Araçlar-> Exif Verisini Kopyala ..."</b></i> sekmesinden görüntülerden iki takım <b>exif-verilerini-bire-bir-kopyala</b>ile kopyalayabilirsiniz.</b></i> menü ögesi. <center><h3><b>To proceed you need to manually set the exposure values.<br><font color="#FF0000">%1</font> values still required.</b></h3></center> - + <center><h3><b>Devam etmek için ile pozlama değerlerini kurmanız gerekiyor.<br><font color="#FF0000">%1</font> değerler hala gereklidir.</b></h3></center> Loading Error: - + Yükleme Hatası: Unknown - + Bilinmiyor Failed to start external application "<em>align_image_stack</em>".<br>Please read "Help -> Contents... -> Setting up -> External Tools" for more information. - + Harici uygulama başlatılamadı "<em>align_image_stack</em>".<br>Lütfen daha fazla bilgi için "Yardım-> İçindekiler ... -> Ayarlar -> Harici Araçlar"ı okuyun. The external application "<em>align_image_stack</em>" crashed... - + Harici uygulama "<em>align_image_stack</em>" çöktü... An unknown error occurred while executing the "<em>align_image_stack</em>" application... - + "<em>yığın_görüntü_hizalama</em>" uygulaması yürütülürken bir hata oluştu Now click on next button - + Şimdi ileri butonuna tıklayın Aligning... - + Hizalanıyor... Save a camera response curve file - + Kamera yanıt eğrisi dosyasını kayyıt edin <center><font color="#008400"><h3><b>All the EV values have been set.<br>Now click on Next button.</b></h3></font></center> - + <center><font color="#008400"><h3><b>Tüm EV değerleri ayarlandı.<br>Şimdi İleri butonuna tıklayın.</b></h3></font></center> + + + + HdrWizardForm + + Hdr creation Wizard + Hdr Oluşturma Sihirbazı + + + Click the button below to load the input images + Girdi resimlerini yüklemek için, aşağıdaki düğmeye tıklayınız - Weights: - Derinlik: + Load Input Images + Girdi Resimlerini Yükle + + + list of default profiles + Ön tanımlı profillerin listesi + + + Profile 1 + Profil 1 + + + Profile 2 + Profil 2 + + + Profile 3 + Profil 3 + + + Profile 4 + Profil 4 + + + Profile 5 + Profil 5 + + + Profile 6 + Profil 6 + + + Weighting function: + Derinlik işlevleri: + + + Triangular + Üçgensel + + + Response Curve: + Yanıt Eğrisi: + + + Gamma + Gama + + + Debevec + Debevec + + + Anti-ghosting(beta!) + Karşı-gölgeleme(beta!) + + + Linear + Doğrusal + + + Log + Günlük + + + Calibration + Ölçeklendirme + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Number of iterations (keep it small):</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Yineleme sayısı (küçük tutunuz):</p></body></html> + + + Use custom configuration. +(use this only if the default profiles +above do not yield good results) + Genel yapılandırmayı kullan +(bunu sadece yukarıdaki ön tanımlı +profiller, iyi sonuçlar çıkarmazlarsa kullanın) + + + Weights: + Derinlik: + + + Gaussian + Gaussian + + + Plateau + Plato + + + <p align="left">Choose confidence function +over all the possible +pixel values</p> + <p align="left">Mümkün olan bütün piksel +değerlerinde, emniyet +işlevini seçiniz</p> + + + Predefined response curves: + Ön tanımlı yanıt eğrileri: + + + Load... + Yükle... + + + Use calibration to find response curve (robertson02 algorithm) + Yanıt eğrisini bulmak için ölçeklendirme kullan (robertson02 algoritması) + + + Choose Model: + Model Seçin: + + + Robertson + Robertson + + + &Next > + &İleri > + + + &Cancel + İ&ptal + + + JPEG (*.jpeg *.jpg);; + JPEG (*.jpeg *.jpg);; + + + TIFF Images (*.tiff *.tif);; + TIFF Resimleri (*.tiff *.tif);; + + + Select the input images + Girdi Resimlerini Seç + + + EXIF data not found + EXIF verisi bulunamadı + + + &Finish + &Bitir + + + Load a camera response curve file + Bir fotoğraf makinesi yanıt eğrisi dosyası yükle + + + Camera response curve (*.m);;All Files (*) + Fotoğraf makinesi yanıt eğrisi (*.m);;Bütün Dosyalar (*) + + + (*) Weights: + (*) Derinlik: + + + - Response curve: + - Yanıt Eğrisi: + + + - Model: + - Model: + + + Logarithmic + Logaritmik + + + From Calibration + Ölçeklendirmeden + + + From File + Dosyadan + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Please choose one of the predefined profiles listed on the right:</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">The first one in the list usually leads to best results, change it only if the resulting Hdr is not good enough.</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Lütfen sağdalistelenen ön tanımlı profillerden birini seçiniz:</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Listedeki ilk değer, genellikle dönen en iyi sonuçtur, Sadece Hdr sonuçlandırması yeteri kadar iyi değilse değiştirin.</span></p></body></html> + + + Hdr creation model: + Hdr Oluşturma Modeli: + + + Hdr creation equation: + Hdr oluşturması eşitlemesi: + + + [1/2] Load Input Images + [1/3] Girdi Resimlerini Yükle {1/2]?} + + + [2/2] Choose Settings for Hdr Creation + [2/3] Hdr Oluşturumu İçin Ayarları Seçin {2/2]?} + + + [2/2] Choose Custom Configuration + [2/3] Genel Yapılandırmayı Seçin {2/2]?} + + + Error... + Hata... @@ -1510,106 +1946,120 @@ Luminance HDR Help - + Luminance HDR Yardım &Print... - + &Bas... &Find... - + &Bul... Find &Next... - + Sonrakini &Bul... Find &Previous... - + Öncekini &Bul... &Add - + &Ekle &Delete - + &Sil D&elete All - + &Tümünü Sil Help SideBar - + KenarÇubugu Yardım LuminanceHDR Online Help - + LuminanceHDR Online Yardım &Edit - + &Düzen &Bookmarks - + &Yer İmleri &Quit - + &Çık Find &Next - + Sonrakini &Bul Find &Previous - + Öncekini &Bul &Contents - + &İçindekiler &Search - + &Ara &Add Bookmark - + &Yer İmi Ekle Find - + Bul Search Term: - + Arama Terimi: New Bookmark - + Yeni Yer İmi New Bookmark's Title: - + Yeni Yer İminin Başlığı: <h2><p>Sorry, no manual is installed!</p><p>Please contact your package provider or LuminanceHDR team if you built the application yourself</p></h2> HTML message for no documentation available to show - + <h2><p>Üzgünüz, kılavuz yüklü değil!</p><p>Eğer uygulamayı kendiniz yaparsanız, lütfen paket sağlayıcı veya LuminanceHDR ekibine +başvurun </p></h2> LuminanceHDR - Help Browser - + LuminanceHDR -Tarayıcı Yardım This protocol is not handled by the help browser. Do you want to open the link with the default application associated with the protocol? - + Bu protokol tarayıcı tarafından işlenmiyor. +Protokol ile birleşik varsayılan uygulama bağlantısını +açmak istiyor musunuz? + + + + HelpDialog + + Luminance Help + Luminance Yardım + + + &Close + &Kapat @@ -1620,103 +2070,103 @@ Contents - + İçindekiler &Contents - + &İçindekiler Se&arch - + A&ra Searching is case insensitive - + harf duyarsız arama &Search - + &Ara Book&marks - + Yer &İmleri &Add - + &Ekle &Remove - + &Çıkart R&emove All - + Tümünü &Çıkart IOWorker ERROR: The following file is not readable: %1 - + HATA: Aşağıdaki dosya okunabilir değil: %1 ERROR: File %1 has unsupported extension. - + HATA: Desteklenmeyen %1 dosyası uzantısı ERROR: Failed loading file: %1 - + HATA: %1 dosyasını yükleme başarısız ImageQualityDialog Unknown - + Bilinmiyor ImgQualityDialog Save as - + Farklı kaydet Saved File Quality - + Kayıt edilen Dosya Kalitesi Quality: - + Kalite: File size: - + Dosya boyutu: Unknown - + Bilinmiyor Ca&lculate - + He&sapla &Save - + &Kaydet &Cancel - + &İptal LdrViewer LDR image [%1 x %2] - + LDR görüntüsü [%1 x %2] @@ -1747,7 +2197,7 @@ Clip black - Siyah Kırp + Siyahı Kırp Gamma @@ -1755,7 +2205,7 @@ Clip White - Beyaz Kırp + Beyazı Kırp <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -1777,16 +2227,24 @@ &OK - &Tamam + &TAMAM MainWindow + Luminance + Luminance + + &File &Dosya + &Image + Res&im + + &View &Görünüm @@ -1803,16 +2261,60 @@ &Yardım + Common operations + Yaygın işlemler + + + &New Hdr... + Ye&ni Hdr... + + + New Hdr... + Yeni Hdr... + + Ctrl+N Ctrl+N + &Open Hdr... + Hdr &Aç... + + + Open Hdr.... + Hdr Aç.... + + Ctrl+O Ctrl+O + &Save Hdr as... + H&dr yi Farklı Kaydet... + + + Save Hdr as... + Hdr yi Farklı Kaydet... + + Ctrl+S - Ctrl+S + Ctrl+S + + + &Tonemap the Hdr... + HDR &ton haritası... + + + Tonemap the Hdr + HDR ton haritası + + + Ctrl+T + Ctrl+T + + + &Exit + &Çık Exit @@ -1823,10 +2325,26 @@ Ctrl+Q + Rotate C&ounterClockWise + Saat Y&önü Tersinde Döndür + + + Rotate CounterClockWise + Saat Yönü Tersinde Döndür + + < < + Rotate C&lockWise + Saat &Yönünde Döndür + + + Rotate ClockWise + Saat Yönünde Döndür + + > > @@ -1883,10 +2401,18 @@ Şu anki LDR için histogramı ayarla + &Documentation... + Belgelen&dirme... + + About... Hakkında... + Show Luminance Help + Luminance Yardımını Göster + + Ctrl+H Ctrl+H @@ -1903,6 +2429,10 @@ Yaklaşt&ır + Zoom In + Yaklaştır + + + + @@ -1911,10 +2441,18 @@ &Uzaklaştır + Zoom Out + Uzaklaştır + + - - + &Fit to Window + &Pencereye Uydur + + W W @@ -1923,6 +2461,10 @@ Luminance Seçenekleri + Set the various options of Luminance. + Luminance'nin çeşitli seçeneklerini ayarla. + + Ctrl+P Ctrl+P @@ -1971,22 +2513,82 @@ Durduruluyor... + Save the HDR... + HDR yi Kaydet... + + + Error... + Hata... + + Unsaved changes... Kaydedilmemiş değişiklikler.... + Hdr &Histogram + Hdr &Histogram + + &Toolbars A&raç Çubukları + Create an Hdr from a set of JPEGs or RAWs, or 8 or 16 bit TIFF files. + Bir dizi JPEG, RAW veya 8 veya 16 bit TIFF dosyalarından, bir Hdr oluştur. + + + Load an existing Hdr image file (OpenEXR, Radiance RGBE, PFS stream, RAW or TIFF). + Varolan bir Hdr resim dosyası yükle (OpenEXR, Radiance RGBE, PFS stream, RAW or TIFF). + + + Saves the Hdr (OpenEXR, Radiance RGBE, PFS stream, or 32bit or LogLuv TIFF) + Hdr yi Kaydeder (OpenEXR, Radiance RGBE, PFS stream, or 32bit or LogLuv TIFF) + + + Tonemap the Hdr into a common LDR (i.e. JPEG or PNG) format + Yaygın LDR (Örneğin JPEG yada PNG) biçimleri içinden HDR ton haritası + + + Rotate Counterclockwise the Hdr + Hdr yi Saat Yönü Tersinde Döndür + + + Rotate ClockWise the Hdr + Hdr yi Saat Yönünde Döndür + + + View Hdr at Normal Size + Hdr yi Normal Boyutta Görüntüle + + + Shrink the Hdr to fit its containing window + Hdr yi, kendisini taşıyan pencereye uydurmak için küçült + + &Preferences... Te&rcihler... + &Resize the Hdr... + Hd&r yi yeniden boyutlandır... + + + Resize the Hdr + Hdr yi yeniden boyutlandır + + + Resize (shrink or expand) the Hdr + Hdr yi yeniden boyutlandır (daralt veya uzat) + + Toolbars Araç Çubukları + Text &Under Icons + Sim&ge Altında Metin + + &Icons Only Sadece S&imgeler @@ -2000,7 +2602,23 @@ &Batch Tone Mapping... - Ton Haritalama &Yığını... + Toplu &Ton Eşleme... + + + Ready.... Now open an Hdr or create one! + Hazır... Şimdi bir Hdr açın veya yeni bir tane oluşturun! + + + All Hdr formats + Bütün Hdr biçimleri + + + Load an Hdr file... + Bir Hdr dosyası yükle... + + + Copy Exif Data between two set of files + İki dosya arasında Exif verisini kopyala Ctrl+B @@ -2008,227 +2626,227 @@ Luminance HDR - + Luminance HDR HDR &Histogram - + HDR &Histogram &Edit - + &Düzenle Main Toolbar - + Ana AraçÇubugu &New HDR image... - + &Yeni HDR Görüntüsü... New HDR image - + Yeni HDR Görüntüsü Create a new HDR image from a set of LDR or Raw images - + LDR veya RAW görüntülerinden yeni bir HDR görüntüsü oluştur Create a new HDR image from a set of JPEG, Raw, or 8/16 bpc TIFF files - + JPEG, Raw, TIFF veya 8/16 bpc dosyalarından yeni bir HDR görüntüsü oluştur &Open HDR image... - + &HDR Görüntüsünü Aç... Open HDR image - + HDR Görüntüsünü Aç Load an existing HDR image file (OpenEXR, Radiance RGBE, PFS stream, RAW or TIFF) - + Mevcut HDR Görüntüsünü yükle (OpenEXR, Radiance RGBE, PFS stream, RAW or TIFF) &Save as... - + &Farklı Kaydet... Save as... - + Farklı Kaydet... Save image (HDR or LDR) - + Görüntüyü Kaydet (HDR veya LDR) &Quit - + &Çık Quit Luminance HDR - + Luminance HDR'den Çık Rotate c&ounter-clockwise - + Saatin &tersi yöne döndür Rotate counter-clockwise - + Saatin tersi yöne döndür Rotate counter-clockwise the HDR image - + Saatin tersi yöne döndür Rotate c&lockwise - + Saati &yönüne döndür Rotate clockwise - + Saat yönüne döndü Rotate clockwise the HDR image - + HDR görüntüsünü saati- yönüne döndü Fit to dynamic range - + Dinamik aralığı sığdır &Contents... - + &İçindekiler Open user manual for Luminance HDR - + Luminance HDR kuullanım kılavuzunu aç F1 - + F1 Normal size - + Normal Boyut View HDR image at its normal size - + HDR görüntüsünü normal boyutta göster Zoom in - + Yakınlaştır Zoom out - + Uzaklaştır &Fit in Window - + &Pencereye sığdır Fit in Window - + Pencereye sığdır Make the HDR image fit its window - + HDR görüntüsünü pencereye sığacak şekilde yap Set various options of Luminance - + Çeşitli Lumiance seçeneklerini ayarla &Resize... - + &Yeniden Boyutlandır... Resize the HDR image - + HDR görüntüsünü yeniden boyutlandır Change size of the HDR image - + HDR görüntüsünün boyutunu değiştir Copy Exif data between two sets of files - + Exif verilerini iki dosya grubu arasına kopyala Show information about Qt - + Qt hakkında bilgiyi göster Show information about Qt library that is used by Luminance - + Lumiance tarafından kullanılan Qt kitaplığı hakkında bilgi göster Text &under Icons - + Simge &altında metin Convert multiple HDR images to LDR - + Çoklu HDR görüntülerini LDR'ye dönüştür Convert multiple HDR images to LDR using existing settings files - + Çoklu HDR görüntülerini mevcut ayar dosyalarını kullanarak LDR'ye dönüştür &What's This? - + &Bu Nedir? Get verbose information about user interface elements - + Kullanıcı arabirimi öğeleri hakkında ayrıntılı bilgi alın Shift+F1 - + Shift+F1 About &Luminance HDR - + Luminance HDR &Hakkında Show information about Luminance HDR - + Luminance HDR hakkında bilgi göster Show information about Luminance HDR, its authors and contributors - + Luminance HDR Yazarları ve katkıda bulunanlar hakkında bilgi göster Save HDR image &preview... - + HDR görüntü önizlemeyi &kaydet... Save the current HDR Preview to an LDR file - + Geçerli HDR önizlemesini bir LDR dosyasına kaydet &Projective Transformation... - + &Projektif Dönüşüm... Apply projective transformation to the current HDR image - + Projektif Dönüşümü geçerli HDR'ye uygula &Crop to Selection - + &Seçimi Kırp Crop to Selection - + Seçimi Kırp Crop the image to selection rectangle - + Dikdörtgen ile seçilen görüntüyü kırp Click and drag inside image area to create a selection, then use this button to crop to a new HDR image @@ -2236,189 +2854,224 @@ Remove &Selection - + Seçimi Çıkart Remove selection rectangle - + Seçim dikdörtgenini kaldır Remove selection rectangle from image area - + Görüntü alanından seçim dikdörtgenini kaldır Make a &Donation - + Bağış &Yapın Ctrl+D - + Ctrl+D Next - + Sonraki Next Image - + Sonraki Görüntü Show Next Image - + Sonraki Görüntüyü Göster Ctrl+PgDown - + Ctrl+PgDown Previous - + Önceki Previous Image - + Önceki Görüntü Show Previous Image - + Önceki Görüntüyü Göster Ctrl+PgUp - + Ctrl+PgUp Lock Viewers - + Görüntüleyicileri Kilitle Syncronize viewers mode (fit, fill or 1:1). - + Görüntüleyici modunu senkronize et (1:1'e sığdır veya doldur) Lock the images for sync view - + Senkron görünüm için görüntüleri kilitle Minimize - + Küçült Maximize - + Büyüt Bring All to Front - + Tümünü Öne Getir Show Preview Panel - + Önizleme Panelini Göster Show/Hide Preview Panel - + Önizleme Panelini Göster/Gizle Ctrl+V - + Ctrl+V Adjust &Levels - + Düzeyleri &Ayarla Adjust Levels - + Düzeyleri Ayarla Ctrl+L - + Ctrl+L Save All - + Tümünü Kaydet Save All LDR files - + Tün LDR Dosyalarını Kaydet Remove Tab - + Sekmeyi Kaldır Ctrl+W - + Ctrl+W Fill Window - + Pencereyi Doldur Fill window with the current viewer - + Mevcut görüntüleyici ile pencereyi doldur Batch HDR... - + Toplu HDR... Ready. Now open an existing HDR image or create a new one! - + Hazır. Şimdi mevcut bir HDR görüntüsünü açın veya yeni bir tane oluşturun! All HDR formats - + Tüm HDR Biçimleri Load one or more HDR images... - + Bir veya daha fazla HDR görüntüsü yükle... Save files in - + Dosyaya kaydet Failed to save - + Kayıt başarısız Done! - + Bitti! Cropped Image - + Görüntü Kırpıldı This HDR image has unsaved changes.<br>Do you want to save it? - + Bu HDR görüntüsünde değişiklikler kayıt edilmedi. <br> Ounu kayıt etmek istiyor musunuz? Untitled - + İsimsiz Untitled %1 - + İsimsiz %1 + + + Error: %1 + Hata: %1 + + + + ParametersDialog + + Saved Parameters + Parametreler Kayıt edildi + + + + PreferenceDialog + + Choose a directory + Bir Dizin Seçin + + + + PreferencesDialog + + Tone Mapping + Ton Eşleme + + + Hdr Tiff + Hdr Tiff + + + Hdr Visualization + Hdr Görselliği + + + Cache + Ön Bellek + + + Choose the directory where Luminance will store the temporary data to. + Luminance'nin geçici verilerini tutacağı dizini seçin. - Error: %1 - + &Load... + Yük&le... - - - ParametersDialog - Saved Parameters - + Batch + Yığın - - - PreferencesDialog - Tone Mapping - Ton Haritalama + Save using this LDR image &format: + &LDR görüntü biçimini kullanarak kaydet: JPEG @@ -2441,8 +3094,65 @@ BMP + Number of &threads: +(useful on multi-core/SMP machines) + İş &Parçacıkları Numarası: +(Çoklu işlemcili makineler için kullanışlıdır) + + + Batch Tone Mapping + Ton Haritalama Yığını + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Raw Import Options</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Raz İçe Aktarma Seçenekleri</span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Tiff Options</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Tiff Seçenekleri</span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Choose the Tiff-Hdr format that Luminance will use to save an Hdr image.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">LogLuv Tiff</span> is the appropriate format for most cases because it stores the hdr data in a reasonable amount of space (i.e. file size).</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Use the <span style=" font-weight:600;">Float Tiff</span> format only if you want to load your tiff in another application that cannot open the LogLuv format.</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Luminance bir HDR resmi kaydedecek, Tiff-Hdr biçimini seçin.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">LogLuv Tiff</span>, birçok bakımdan en uygun biçimdir, çünkü hdr verisini en uygun miktardaki alanda saklar (mesela dosya boyutu).</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Float Tiff</span>biçimini, sadece LogLuv biçimiyle açamadığınız ve başka bir uygulamadan tiff yükleyeceğiniz zaman kullanın.</p></body></html> + + + LogLuv Tiff (float, 16bit) + LogLuv Tiff (float, 16bit) + + + Float Tiff (float, 32bit) + Float Tiff (float, 32bit) + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Hdr Visualization Options</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Hdr Canlandırma Seçenekleri</span></p></body></html> + + + Colors + Renkler + + + Show Negative Numbers as: + Negatif Numaralar Ne Olarak Gösterilsin: + + &OK - &Tamam + &TAMAM Choose a directory @@ -2450,39 +3160,39 @@ Preferences - + Tercihler Interface - + Arayüz HDR Options - + HDR Seçenekleri RAW Conversion - + RAW Dönüştürme External Tools - + İlave Araçlar Czech - + Çekce English - + İngilizce Finnish - + Fince French - + Fransızca German @@ -2506,63 +3216,63 @@ Russian - + Rusca Spanish - + İspanyolca Turkish - + Türkçe Hungarian - + Macarca Always show Preview Panel - + Daima Önizleme Panelini göster Always show Wizard first page - + Daima Sihirbazı ilk sayfada göster Good quality and smaller file size - + Küçük dosya boyu ve iyi kalite LogLuv TIFF (float, 16bit per color channel) - + LogLuv TIFF (float, her renk kanalı 16bit) Better quality, larger file size, better compatibility with other applications - + Daha kaliteli, büyük dosya boyutu, diğer uygulamalar ile daha uyumlu Float TIFF (float, 32bit per color channel) - + Float TIFF (float, her renk kanalı 32bit) Show negative numbers as: - + Negatif sayı olarak göster: Show nan and +/-Inf values as: - + nan ve +/-Inf değerini göster C&hoose - + S&eç Which LDR image format to save to - + Hangi LDR görüntü biçimi kayıt edilecek TIFF - + TIFF Amount of threads to use on multicore/SMP machines @@ -2576,11 +3286,17 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Interpolate RGB as four colors</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The default is to assume that all green pixels are the same. If even-row green pixels are more sensitive to ultraviolet light than odd-row this difference causes a mesh pattern in the output; using this option solves this problem with minimal loss of detail.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">To resume, this option blurs the image a little, but it eliminates false 2x2 mesh patterns with VNG quality method or mazes with AHD quality method.</p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">RGB'yi Dört renk olarak değiştirmek</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Varsayılan tüm yeşil pikselin aynı olduğu varsayılmaktadır. Hatta ham yeşil piksel ultraviyole ışığa daha duyarlı ise, bu değişiklik tek-sırabir örgü. desenine sebep olur; bu seçeneği kullanarak detay kayıbı sorununu çözer.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Bu seçenekte devam etmek görüntüyü biraz bulanıklaştırır, ama VNG veya AHD kalite yöntemi yanlış 2x2 örgü desenlerini ortadan kaldırır.</p></body></html> Interpolate RGB using 4 colours - + RGB 4 renk kullanım aradeğeri <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -2593,15 +3309,15 @@ Do not stretch or rotate pixels - + Pikseli uzatma veya döndürme Quality: - + Kalite: Median: - + Orta Kalite: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -2647,7 +3363,7 @@ White Balance - + Beyaz Dengesi <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -2664,19 +3380,19 @@ Predefined D65 - + Öntanımlı D65 Camera - + Kamera Auto - + Otomatik Manual - + El ile <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -2685,11 +3401,16 @@ </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Temperature</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set here the color temperature in Kelvin.</p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Sıcaklık</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Buradan Kelvin renk sıcaklığını ayarlayın.</p></body></html> Set here the green component to set magenta color cast removal level - + Eflatun renk tonlarını kaldırma düzeyini ayarlamak için buradan yeşil bileşeni ayarlayın <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -2702,23 +3423,32 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Unclip</span>: leave highlights unclipped in various shades of pink</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Blend</span>: Blend clipped and unclipped values together for a gradual fade to white</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Rebuild</span>: reconstruct highlights using a level value</p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Vurgulamalar</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Buradan vurgulama yöntemini seçin:</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Tam Beyaz</span>: Klipli tüm vurgulamalar düz beyaz</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Unclip</span>: Klipsiz vurgulamaları çeşitli pembe tonlarında bırakın</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Harmanla</span>: Kademeli beyaz bir geçiş için klipli ve klipsiz değerleri harmanla</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Yeniden Yap</span>: Bir düzey değeri kullanarak vurgulamaları yeniden yap</p></body></html> Solid White - + Düz Beyaz Do not transform - + Dönüştürme Blend - + Karıştır Reconstruct - + Yeniden yap <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -2727,15 +3457,20 @@ </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Level</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Specify the reconstruct highlight level. Low values favor whites and high values favor colors.</p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Düzey</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Vurgulamak düzeyini yeniden belirtin. Düşük değerler beyaz tercihi, yüksek değerler renk tercihi.</p></body></html> Correct false colors in highlights - + Vurgulamalarda yanlış rengi düzelt Auto Brightness - + Otom.Parlaklık <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -2744,7 +3479,12 @@ </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Brighness</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Specify the brightness level of output image. The default value is 1.0</p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Parlaklık</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Çıktı görüntüsünün parlaklık düzeyini belirtin. Varsayılan değer 1.0'dir</p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -2753,11 +3493,16 @@ </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Black point</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Use a specific black point value to decode RAW pictures. If you set this option to off, the Black Point value will be automatically computed.</p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Siyah Nokta</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> RAW resimlerini çözmek için belirli bir siyah nokta değeri kullanın. Eğer bu seçeneği ayarlarsanız, Siyah Nokta değeri otomatik olarak hesaplanacaktır.</p></body></html> Black - + Siyah <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -2766,7 +3511,12 @@ </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">White point</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Use a specific white point value to decode RAW pictures. If you set this option to off, the White Point value will be automatically computed.</p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Beyaz Nokta</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> RAW resimlerini çözmek için belirli bir beyaz nokta değeri kullanın. Eğer bu seçeneği ayarlarsanız, Beyaz Nokta değeri otomatik olarak hesaplanacaktır.</p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -2775,7 +3525,12 @@ </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Black point value</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Specify specific black point value of the output image.</p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Siyah Nokta Değeri</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Çıkış görüntüsü siyah nokta değerini belirtin.</p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -2784,7 +3539,12 @@ </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">White point value</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Specify specific white point value of the output image.</p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Beyaz Nokta Değeri</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Çıkış görüntüsü beyaz nokta değerini belirtin.</p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -2793,15 +3553,20 @@ </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Enable Noise Reduction</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Use wavelets to erase noise while preserving real detail.</p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Gürültü Azaltmayı Etkinleştirin</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Gerçek ayrıntıyı koruryarak gürültüyü silmek için dalgacıkları kullanın.</p></body></html> Enable noise reduction - + Gürültü düzeltmeyi etkinleştir Threshold: - + Eşik: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -2810,7 +3575,12 @@ </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Threshold</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set here the noise reduction threshold value to use.</p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Eşik</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Gürültü azaltma eşik değerini ayarlamak için burayı kullanın.</p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -2819,11 +3589,16 @@ </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Enable Chromatic Aberration correction</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Enlarge the raw red and blue layers by the given factors, typically 0.999 to 1.001, to correct chromatic aberration.</p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Kromatik Sapma Düzeltmeyi Etkinleştir</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Faktörler tarafından verilen ham kırmızı ve mavi katmanları büyütün, renk sapmalarını düzeltmek için genellikle 0.999 1.001 arası.</p></body></html> Enable Chromatic Aberration correction - + Kromatik Sapmaı düzeltmeyi etkinleştir <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -2832,7 +3607,12 @@ </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Red multiplier</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set here the magnification factor of the red layer</p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Kırmızı çoklayıcı</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Buradan kırmızı katman büyütme faktörünü ayarlayın</p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -2841,7 +3621,12 @@ </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Blue multiplier</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set here the magnification factor of the blue layer</p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Mavi çoklayıcır</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Burada mavi katman büyütme faktörünü ayarlayın</p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -2853,19 +3638,27 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">None</span>: no input color profile is used during RAW decoding.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Embedded</span>: use embedded color profile from RAW file if exist.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom input color space profile.</p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Kamera Profili</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">RAW veri kodun çözmek için kullanılan girdi renk alanını buradan seçin.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Hiçbiri</span>: RAW çözme sırasında hiçbir renk girdi profilini kullanmaz.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Gömülü</span>: RAW dosyası var ise gömülü renk profilini kullanın.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Özel</span>: Özel bir renk giriş alanı renk profili kullanın.</p></body></html> None - + Hiçbiri Built in - + Dahili Custom - + Özel <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -2880,27 +3673,38 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wide Gamut</span>: this color space is an expanded version of the Adobe RGB color space.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Pro-Photo</span>: this color space is an RGB color space, developed by Kodak, that offers an especially large gamut designed for use with photographic outputs in mind.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom output color space profile.</p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Çalışma alanı</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">RAW veri kodunu çözmek için kullanılan çıktı renk alanını buradan seçin.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Raw (linear)</span>: Bu modda, RAW kullanılırken hiçbir çıktı renk alanı olmaz .</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">sRGB</span>: Bu Hewlett-Packard ve Microsoft işbirliği ile oluşturulan bir RGB renk alanıdır. Bu Web ve portre fotoğrafçılığı görüntüleri için en iyi seçimdir.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Adobe RGB</span>: Bu renk alanı, uzun bir RGB renk alanıdır, Adobe tarafından geliştirilmiştir. Bu reklam ve güzel sanatlar gibi fotoğraf uygulamaları için kullanılır.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Geniş Dizi</span>: Bu renk aralığı Adobe RGB renk alanının genişletilmiş bir versiyonudur.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Pro-Foto</span>: Kodak tarafından geliştirilen, bu renk alanı, fotoğraf çıktıları ile kullanılmak üzere tasarlanmıştır, özellikle büyük bir gam sunar.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Özel</span>: Özel bir çıktı renk alanı profilini kullanın.</p></body></html> RAW - + RAW sRGB - + sRGB Adobe RGB - + Adobe RGB Wide Gamut - + Geniş Dizi Pro Photo - + Pro Foto <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -2908,67 +3712,79 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Read </span><span style=" font-family:'Sans Serif'; font-style:italic;">Help &gt; Contents &gt; Setting up Luminance &gt; External tools</span><span style=" font-family:'Sans Serif';"> to find out more about align_image_stack command line arguments</span></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">yığın_görüntü_hizalama komut satırı argümanları hakkında daha fazla bilgi edinmek için, </span><span style=" font-family:'Sans Serif'; font-style:italic;">Yardım &gt; İçindekiler &gt; Luminance Ayarları &gt; İlave Araçlar</span><span style=" font-family:'Sans Serif';"> bölümünü okuyun</span></p></body></html> &Cancel - + &İptal + + + Please restart... + Lütfen Yeniden başlatın... + + + Please restart LuminanceHDR to use the new language (%1). + Yeni dili kullanmak LuminanceHDR'yi yeniden başlatın:%1 Language - + Lisan Default Previews Width - + Standart Önizl. Genişligi px - + px HDR TIFF Default File Format - + HDR TIFF Vars.Dosya Biçimi Temporary Working Folder - + Geçici Çalışma Klasörü Batch Tonemapping Default Output Format - + Toplu Ton Eşleme Varsayılan Çıkış Biçimi Batch Tonemapping Number of Threads - + Toplu Ton Eşleme Konu Sayısı Batch Tonemapping Default Output Quality - + Toplu Ton Eşleme varsayılan Çıktı Kalitesi General - + Genel Method - + Yöntem Temperature (Kelvin) - + Sıcaklık (Kelvin) Green - + Yeşil Highlights - + Röfleler Level - + Düzey Brightness @@ -2976,35 +3792,35 @@ Saturation - + Doygunluk NR and CA Correction - + NR ve Düzeltme Red Component - + Kırmızı Bileşen Blue Component - + Mavi Bileşen Camera Profile - + Kamera Profili Camera profile - + Kamera Profili Color Space - + Renk Alanı align_image_stack command line arguments - + yığın_görüntü_hizalama komut satırı argümanları @@ -3058,78 +3874,78 @@ Projective Transformation - + Projektif Dönüşüm Projections - + Projeksiyonlar Source Projection: - + Kaynak Projeksiyon: Polar - + Kutup Angular - + Açısal Cylindrical - + Silindirik Mirror Ball - + Top Ayna Destination Projection: - + Hedef Projeksiyon: Angles: - + Açılar: ° - + ° Bilinear Interpolation - + Bilinear Interpolation Oversample factor: - + Oversample factor: Rotation (degrees) - + Dönüş (açılar) Yaw: - + Yaw: Pitch: - + Pitch: Roll: - + Roll: &Cancel - + &İptal QApplication ERROR: cannot load Tone Mapping Setting file: - + HATA: Ton Eşleme Ayarları dosyası yüklenemedi ERROR: File too old, cannot parse Tone Mapping Setting file: @@ -3144,82 +3960,54 @@ QObject Aborting... - Durduruluyor... + Sonlandırılıyor... Cannot find Qt's JPEG Plugin...<br>Please unzip the DLL package with the option "use folder names" activated. Qt JPEG Eklentisi bulunamadı..<br>Lütfen DLL paketini "klasör isimleri kullanarak" seçeneği aktif hale getirin ve çıkartın. + Save the LDR to... + LDR yi buraya kopyala... + + + Failed to save <b> + Kayıt başarısız <b> + + All LDR formats - + Tüm LDR biçimleri Save the LDR image as... - + LDR biçimini farklı kaydet... Save as... - + Farklı kaydet... All HDR formats - + Tüm HDR biçimleri Save the HDR image as... - + HDR biçimini farklı kaydet... Option -v -a... - + -v -a seçeneği... LuminanceHDR requires align_image_stack to be executed with the "-v -a aligned_" options. Command line options have been corrected. - - - - Cannot convert %1 to a float - - - - Cannot convert %1 to an integer - - - - Input file %1 - - - - Running in HDR-creation mode. - - - - Running in Load-HDR mode. - - - - Temporary directory: %1 - - - - Using %1 threads. - - - - Loading file %1 - - - - Successfully loaded file %1. - + LuminanceHDR görüntü_yığın_hizalama'yı yürütülecek olan "-v-a hizalama_" seçeneklerini gerektirir. Komut satırı seçenekleri düzeltildi. ResizeDialog Scale Image - Resimi Ölçekleyin + Görüntüyü Ölçekle Width: @@ -3239,7 +4027,7 @@ Restore original size - Özgün boyutuna geri yükle + Özgün boyuta geri yükle &Reset @@ -3247,34 +4035,34 @@ &Cancel - &İptal Et + &İptal &Scale - &Ölçekle + &Ölçek Hdr Image Size - Hdr Resim Boyutu + Hdr Görüntü Boyutu Switch between pixels or percentage - + Piksel veya yüzde arasında geçiş Result size - + Sonuç Boyutu SavedParameters Simple - Sade + Basit Local Contrast Threshold - Yerel Karşıtlık Eşiği + Yerel Kontrast Eşiği Bias @@ -3290,7 +4078,7 @@ Base Contrast - Temel Karşıtlık + Temel Kontrast Alpha @@ -3306,7 +4094,7 @@ Cone and Rod based on Luminance - Koni ve Çubuk, Parlaklığı baz almışlardır + Işıga dayalı Koni ve Çubuk Cone Level @@ -3318,7 +4106,7 @@ Multiplier - Çoğullayıcı + Çoklayıcı Use Scales @@ -3346,89 +4134,89 @@ Equation 2 - + Denklem 2 Pre-gamma - + Pre-gama Comment - + Yorum Noise Reduction - + Gürültü Azaltma Old Fattal - + Old Fattal Contrast Equalization - + Kontrast Eşitleme Contrast Factor - + Kontrast Faktörü Saturation Factor - + Doygunluk Faktörü Detail Factor - + Detay Faktörü Contrast Enhancement - + Kontrast Geliştirme Luminance Level - + Işık Düzeyi Manual Luminance Level - + Işık Düzeyi Kılavuzu Local Tonemapping - + Yerel Ton eşleme Phi Value - + Phi Degeri Chromatic Adaptation - + Chromatic Adaptation Light Adaptation - + Işık Adaptasyonu TM Operator - + TM Operatörü SavingParameters Saving Parameters - + Kayıt Parametrekleri - Enter a short comment for the saved parameters: - + Enter a short comment for the saved parameters + Kayıt edilen parametreler için kısa bir açıklama girin SplashLuminance Luminance HDR - Make a Donation - + Luminance HDR - Bağışta bulunun <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -3436,33 +4224,48 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Droid Sans'; font-size:8pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-weight:600; color:#000000;">Luminance HDR</span><span style=" font-family:'Sans Serif'; color:#000000;"> is open-source software and its development required hundreds of hours of work.<br /><br />If you like it, if you use it in your work and you would like to see it gradually improved,<br />please support its authors by making a donation.<br /><br />Would you like to make a donation for Luminance HDR now?</span></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Droid Sans'; font-size:8pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-weight:600; color:#000000;">Luminance HDR</span><span style=" font-family:'Sans Serif'; color:#000000;"> açık kaynak kodlu bir yazılım ve oluşturma çalışmaları yüzlerce saat aldı.<br /><br />Eğer yazılımı beğendi iseniz ve işinizde kullanıyorsanız, lütfen bir bağış yaparak yazarları destekleyin.<br /><br />Şimdi Luminance HDR için bir bağış yapmak ister misiniz?</span></p></body></html> Yes, I'd love to! - + Evet, istiyorum! Ask me again later - + Sonra tekrar hatırlat No, Stop bothering me! - + Hayır, beni rahatsız etmeyin! TMOProgressIndicator Abort computation - + Hesaplamayı sonlandır + + + + ThreadManager + + &Close + &Kapat TonemappingPanel Load a tonemapping settings text file... - Bir ton haritalama ayarları metin dosyası yükle... + Bir ton eşleme ayarları metin dosyası yükle... + + + Luminance tonemapping settings text file (*.txt) + Luminance ton haritalama ayarları metin dosyası (*.txt) Aborting... @@ -3474,7 +4277,7 @@ Save tonemapping settings text file to... - Ton haritalama ayarları metin dosyasını şuraya kopyala... + Ton Eşleme ayarları metin dosyasını şuraya kopyala... File is not writable (check permissions, path...) @@ -3485,6 +4288,25 @@ Dosya okunabilir değil (izinleri, yolu... kontrol edin) + Error, the tone mapping settings file format has changed. This (old) file cannot be used with this version of Luminance. Create a new one. + Hata, ton haritalama ayarları dosya biçimi değiştirildi. Bu (eski) dosya, Luminance'nin bu sürümü ile kullanılamaz. Yeni bir tane oluşturun. + + + Tonemapping Operators and options + Ton haritalama İşleticileri ve seçenekler + + + Gamma applied before tone mapping + Tone haritalamadan önce gama uygulandı + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Gradient Domain High Dynamic Range Compression</span><br />R. Fattal, D. Lischinski, and M. Werman</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Eğim Etki Alanı Yüksek Hareket Dizisi Sıkıştırması</span><br />R. Fattal, D. Lischinski, ve M. Werman</p></body></html> + + Alpha Alfa @@ -3493,6 +4315,17 @@ Renk Doygunluğu + Default Values for operator + İşletici için ön tanımlı değerler + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">A Tone Mapping Algorithm for High Contrast Images</span><br />Michael Ashikhmin</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Yüksek Karşıtlı Resimler için Bir Ton Haritalama Algoritması</span><br />Michael Ashikhmin</p></body></html> + + Simple Sade @@ -3510,7 +4343,14 @@ Local Contrast Threshold - Yerel Karşıtlık Eşiği + Yerel Kontrast Eşiği + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Fast Bilateral Filtering for the Display of HDR Images</span><br />F. Durand and J. Dorsey.</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">HDR resimlerinin görüntülenmesi için, hızlı çift yönlü filtreleme</span><br />F. Durand ve J. Dorsey.</p></body></html> Spatial Kernel Sigma @@ -3522,19 +4362,37 @@ Base Contrast - Temel Karşıtlık + Temel Kontrast + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Adaptive logarithmic mapping for displaying high contrast scenes</span><br />F. Drago, K. Myszkowski, T. Annen, and N. Chiba.</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Yüksek karşıtlık sahnelerinin görüntülemesi için uyarlamalı logaritmik haritalama</span><br />F. Drago, K. Myszkowski, T. Annen, ve N. Chiba.</p></body></html> Bias Sapma + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Time-Dependent Visual Adaptation for Realistic Image Display</span><br />S.N. Pattanaik, J. Tumblin, H. Yee, and D.P. Greenberg</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Gerçekçi resim gösterimleri için, zaman bağımlı görsel uyarlama</span><br />S.N. Pattanaik, J. Tumblin, H. Yee, ve D.P. Greenberg</p></body></html> + + Multiplier Çoğullayıcı Local Tone Mapping - Yerel Ton Haritalama + Yerel Ton Eşleme + + + Cone and Rod based on Luminance + Koni ve Çubuk, Parlaklığı baz almışlardır Cone Level @@ -3545,6 +4403,13 @@ Çubuk Seviyesi + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Photographic Tone Reproduction for Digital Images</span><br />E. Reinhard, M. Stark, P. Shirley, and J. Ferwerda</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Dijital Resimler İçin, Fotoğrafsal Ton Artırımı</span><br />E. Reinhard, M. Stark, P. Shirley, ve J. Ferwerda</p></body></html> + + Use Scales Ölçekleri Kullan @@ -3569,10 +4434,21 @@ Yüksek Ölçek + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Dynamic Range Reduction Inspired by Photoreceptor Physiology</span><br />E. Reinhard and K. Devlin</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Hareketli Alan Azalması, Işığa Karşı Hassas Olan Alıcı Sinirden Esinlenmiştir. </span><br />E. Reinhard ve K. Devlin</p></body></html> + + Brightness Parlaklık + Ctrl+A + Ctrl+A + + Load an existing text file containing pregamma and TMO settings Ön gama ve TMO ayarlarını içeren bir metin dosyası yükle @@ -3581,6 +4457,10 @@ Beta + &Load... + Yük&le... + + Reinhard '02 Reinhard '02 @@ -3594,7 +4474,7 @@ Tone mapping operators and their options - + Ton Eşleme operatörleri ve seçenekleri Mantiuk '06 @@ -3606,19 +4486,19 @@ Fattal - + Fattal Drago - + Drago Durand - + Durand Ashikhmin - + Ashikhmin Pattanaik @@ -3626,19 +4506,19 @@ Contrast Equalization - + Kontrast Geliştirme Contrast Factor - + Kontrast Faktörü Saturation Factor - + Doygunluk Faktörü Detail Factor - + Detay Faktörü Predefined Display @@ -3646,23 +4526,23 @@ Lcd Office - + Lcd Ofis Lcd - + Lcd Lcd Bright - + Lcd Parlak CRT - + CRT Contrast Enhancement - + Kontrast Geliştirme Luminance Level @@ -3674,19 +4554,19 @@ Chromatic Adaptation - + Kromatik Adaptasyon Light Adaptation - + Işık Adaptasyonu Restore operator's default values - + Operatörün varsayılanlarını geri yükle Restore - + Geri yükle Load parameters by comment @@ -3718,7 +4598,7 @@ Tone Mapping Settings - + Ton Eşleme Ayarları Save current parameters to a text file @@ -3738,7 +4618,7 @@ Process - + İşlem Size of the resulting LDR image @@ -3750,23 +4630,23 @@ Custom LDR size - + Özel LDR boyutu Clicking this button you will be able to insert a <i>width</i> value for the size of the resulting LDR image.<br>After pressing Enter (or Return) a height value will be automatically computed and the new size added to the list. - + Bu düğmeye tıkladığınızda çıkan görüntünün LDR boyutu için bir <i>genişlik</i> değeri eklemek mümkün olacak.<br>Enter (veya Return)'a bastıktan sonra yükseklik değeri otomatik olarak hesaplanır ve yeni boyut listeye eklenir. Gamma applied before tonemapping - + Tone eşlemeden önce gama uygulandı Restore pregamma's default value (1) - + Programcının varsayılanlarını geri yükle (1) Start tonemapping (CTRL+T) - + Ton Eşlemeyi Başlat (CTRL+T) Use current parameters above (pregamma and tone mapping operator) to compute an LDR image @@ -3774,98 +4654,250 @@ &Tonemap - + Ton Eşleme + + + undo + geri al + + + redo + yinele TM Database Problem - + TM Veritabanı Problemi The database used for saving TM parameters cannot be opened. Error: %1 - + Veritabanında kullanılan kayıtlı TM parametreleri açılamaz. +Hata: %1 + LuminanceHDR tonemapping settings text file (*.txt) - Error: The tone mapping settings file format has changed. This (old) file cannot be used with this version of LuminanceHDR. Create a new one. - + Error, the tone mapping settings file format has changed. This (old) file cannot be used with this version of LuminanceHDR. Create a new one. + Hata, ton eşleme ayarları dosya biçimi değiştirildi. Bu (eski) dosya, Luminance'nin bu sürümü ile kullanılamaz. Yeni bir tane oluşturun. Enter the width of the new size: - + Yeni genişlik boyutunu girin: Update current LDR - + Geçerli LDR'yi güncelle Tonemap - + Ton Eşleme Operator - + Operator Enable Luminace Level - + Işık +Düzeyini Etkinleştir Version Pre 1.8.4 - + Sürüm Pre 1.8.4 Auto Cone/Rod - + Otomatik Koni/Çubuk Previous - + Önceki Next - + Sonraki &Save to File - + Dosyaya Kaydet &Load from File - + &Dosyadan Yükle &Result Size - + Sonuç Boyutu Pre-gamma - + Pre-Gama Set Custom Output Size - + Özel Çıktı Boyutu Ayarla TonemappingWarningDialog Attention! - + Dikkat Ask again - + Tekrar sor This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. Do you want to continue? - + Ton eşleme uygulaması girdi görüntüsünün boyutuna bağlıdır. Bu işlemi tam buyotlu bir görüntüye uygulamak, muhtemelen farklı bir görüntü ile sonuçlanacaktır. + +Devam etmek istiyor musunuz? + + + + TonemappingWindow + + &File + &Dosya + + + &View + &Görünüm + + + Tone mapping Panel + Ton haritalama Paneli + + + Tune the histogram for the current LDR + Şu anki LDR için histogramı ayarla + + + Ctrl+S + Ctrl+S + + + C&lose All + Hepsini &Kapat + + + Close All + Hepsini Kapat + + + Close all the LDRs in the workspace + Çalışma alanındaki bütün LDR leri Kapat + + + Ctrl+C + Ctrl+C + + + As &Thumbnails + Minya&tür Olarak + + + As Thumbnails + Minyatür Olarak + + + Images as Thumbnails + Minyatür Şeklindeki Resimler + + + Layout all LDRs as thumbnails. + Bütün LDR leri minyatür olarak düzenle. + + + &Cascade + Ta&şır + + + &Fit to Window + Pencere&ye Uydur + + + Fit the current LDR to its containing window. + Şu anki LDR yi penceresine Uydur. + + + W + W + + + &Help + &Yardım + + + Ctrl+Q + Ctrl+Q + + + Ctrl+T + Ctrl+T + + + &Documentation... + Belgelen&dirme... + + + Ctrl+H + Ctrl+H + + + &Exit + &Çık + + + Exit + Çık + + + Toolbars + Araç Çubukları + + + &Windows + &Pencereler + + + &Close + &Kapat + + + &Normal Size + &Normal Boyut + + + O + O + + + Zoom &In + Yaklaşt&ır + + + + + + + + + Zoom &Out + &Uzaklaştır + + + - + - + + + Luminance + Luminance @@ -3891,6 +4923,22 @@ Dosyaları listeye ekle + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">From...</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Nereden...</span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">To...</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Nereye...</span></p></body></html> + + + Keep existing exif tags in destination file + Hedef dosyadaki exif verilerini sakla + + + Help + Yardım + + Select the input images Girdi Resimlerini Seç @@ -3908,17 +4956,25 @@ All messages - Bütün mesajlar + Tüm mesajlar Errors only Sadece Hatalar + &Filter Log messages: + &Süzgeç günlük mesajları: + + Clear filter text Süzgeç metnini temizle + &Start! + &Başla! + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -3936,31 +4992,31 @@ Exif operations report - + Exif işlemleri raporu Filter messages based on severity - + İletileri şiddetine görei filtrele &Filter log messages: - + Filtre günlük mesajları Keep existing Exif tags in destination file - + Mevcut hedef dosyadaki Exif etiketlerini koru &Cancel - + &İptal &Start - + &Başlat All Supported formats - + Desteklenen tüm biçimler @@ -3968,27 +5024,27 @@ %1 License document not found, you can find it online: %2here%3 %2 and %3 are html tags - + %1 Lisans belgesi bulunamadı: Online %2Buradan%3 bulabilirsiniz Donation - + Bağış Would you like to donate? - + Bağış yapmak istiyormusunuz? Yes, I'd love to! - + Evet, istiyorum! Stop Bothering Me - + Canını Sıkılıyorsa Beni Durdur Remind me later - + Daha sonra hatırlat diff -Nru luminance-2.2.1/i18n/lang_zh.ts luminance-2.3.0/i18n/lang_zh.ts --- luminance-2.2.1/i18n/lang_zh.ts 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/i18n/lang_zh.ts 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,5384 @@ + + + + + AboutLuminance + + + About Luminance + 关于:Luminance + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:13pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600; color:#00007f;">Luminance HDR</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:13pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600; color:#00007f;">Luminance HDR</span></p></body></html> + + + + &About + &关于 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:11pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#00007f;">Luminance HDR</span> — HDR imaging workflow application<br />(c) 2006-2009, Giuseppe Rota</p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010-2012, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:11pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#00007f;">Luminance HDR</span> — HDR imaging workflow application<br />(c) 2006-2009, Giuseppe Rota</p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(c) 2010-2012, Franco Comida, Davide Anastasia<br /><a href="http://qtpfsgui.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">http://qtpfsgui.sourceforge.net</span></a></p></body></html> + + + + A&uthors + &作者 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Please </span><a href="mailto:davideanastasia@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">let me know</span></a><span style=" font-size:9pt;">, if I forgot to add someone to this list.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; font-weight:600;">Main developer QtPfsGui</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Giuseppe Rota<br /> </span><a href="mailto:grota@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">grota@users.sourceforge.net</span></a><span style=" font-size:9pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Main Developers Luminance HDR</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Franco Comida</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:fcomida@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">fcomida@users.sourceforge.net</span></a></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Davide Anastasia</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:davideanastasia@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">davideanastasia@users.sourceforge.net</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; font-weight:600;">Improvements, bugfixing</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Daniel Kaneider</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:danielkaneider@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">danielkaneider@users.sourceforge.net</span></a></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; text-decoration: underline; color:#0000ff;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">pfs{tools|calibration|tmo} codebase</span><span style=" font-size:9pt;"><br /> Grzegorz Krawczyk<br /> </span><a href="mailto:krawczyk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">krawczyk@mpi-sb.mpg.de</span></a><span style=" font-size:9pt;"><br /> <br /> Rafal Mantiuk<br /> </span><a href="mailto:mantiuk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mantiuk@mpi-sb.mpg.de </span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Chinese translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Lei Zhao</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Slovakian translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Zuzana Cupkova</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Hindi translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Rohit Sharma</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Please </span><a href="mailto:davideanastasia@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">let me know</span></a><span style=" font-size:9pt;">, if I forgot to add someone to this list.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; font-weight:600;">Main developer QtPfsGui</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Giuseppe Rota<br /> </span><a href="mailto:grota@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">grota@users.sourceforge.net</span></a><span style=" font-size:9pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Main Developers Luminance HDR</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Franco Comida</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:fcomida@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">fcomida@users.sourceforge.net</span></a></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Davide Anastasia</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:davideanastasia@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">davideanastasia@users.sourceforge.net</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; font-weight:600;">Improvements, bugfixing</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Daniel Kaneider</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:danielkaneider@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">danielkaneider@users.sourceforge.net</span></a></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; text-decoration: underline; color:#0000ff;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">pfs{tools|calibration|tmo} codebase</span><span style=" font-size:9pt;"><br /> Grzegorz Krawczyk<br /> </span><a href="mailto:krawczyk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">krawczyk@mpi-sb.mpg.de</span></a><span style=" font-size:9pt;"><br /> <br /> Rafal Mantiuk<br /> </span><a href="mailto:mantiuk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mantiuk@mpi-sb.mpg.de </span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Chinese translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Lei Zhao</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Slovakian translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Zuzana Cupkova</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Hindi translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Rohit Sharma</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> + + + + &Thanks To + &感谢 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Please </span><a href="mailto:grota@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">let me know</span></a><span style=" font-size:9pt;">, if I forgot to add someone to this list.<br /><br /></span><span style=" font-size:9pt; font-weight:600;">All the community on </span><a href="http://www.flickr.com/groups/qtpfsgui"><span style=" text-decoration: underline; color:#0057ae;">Flickr</span></a><span style=" font-size:9pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Hugin's </span><span style=" font-size:9pt; font-weight:600; font-style:italic;">align_image_stack</span><span style=" font-size:9pt; font-weight:600;"> and more</span><span style=" font-size:9pt;"><br /> Pablo D'Angelo<br /> <br /></span><span style=" font-size:9pt; font-weight:600;">Opensuse 10.2 and 10.3 packager</span><span style=" font-size:9pt;"><br /> Peter Linnell<br /> <br /></span><span style=" font-size:9pt; font-weight:600;">Fedora packager and bug reports</span><span style=" font-size:9pt;"><br /> Douglas E. Warner<br /><br /></span><span style=" font-size:9pt; font-weight:600;">openSUSE 10.2 packager</span><span style=" font-size:9pt;"><br /> Rauch Christian<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Gentoo Linux Ebuild</span><span style=" font-size:9pt;"><br /> Rene Zbinden<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Various suggestions</span><span style=" font-size:9pt;"><br /> Arne Hagenah<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Tiff LDR bugfixes and suggestion</span><span style=" font-size:9pt;"><br /> Ignacy Gawedzki<br /> </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">DCRaw</span><span style=" font-size:9pt;"><br /> Dave Coffin<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">And also</span><span style=" font-size:9pt;"><br /> Erik Ouchterlony<br /> Antoine Latter<br /> Frank Boehme<br /> Sloan Poe<br /> Elizabeth Oldham </span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Please </span><a href="mailto:grota@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">let me know</span></a><span style=" font-size:9pt;">, if I forgot to add someone to this list.<br /><br /></span><span style=" font-size:9pt; font-weight:600;">All the community on </span><a href="http://www.flickr.com/groups/qtpfsgui"><span style=" text-decoration: underline; color:#0057ae;">Flickr</span></a><span style=" font-size:9pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Hugin's </span><span style=" font-size:9pt; font-weight:600; font-style:italic;">align_image_stack</span><span style=" font-size:9pt; font-weight:600;"> and more</span><span style=" font-size:9pt;"><br /> Pablo D'Angelo<br /> <br /></span><span style=" font-size:9pt; font-weight:600;">Opensuse 10.2 and 10.3 packager</span><span style=" font-size:9pt;"><br /> Peter Linnell<br /> <br /></span><span style=" font-size:9pt; font-weight:600;">Fedora packager and bug reports</span><span style=" font-size:9pt;"><br /> Douglas E. Warner<br /><br /></span><span style=" font-size:9pt; font-weight:600;">openSUSE 10.2 packager</span><span style=" font-size:9pt;"><br /> Rauch Christian<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Gentoo Linux Ebuild</span><span style=" font-size:9pt;"><br /> Rene Zbinden<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Various suggestions</span><span style=" font-size:9pt;"><br /> Arne Hagenah<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Tiff LDR bugfixes and suggestion</span><span style=" font-size:9pt;"><br /> Ignacy Gawedzki<br /> </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">DCRaw</span><span style=" font-size:9pt;"><br /> Dave Coffin<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">And also</span><span style=" font-size:9pt;"><br /> Erik Ouchterlony<br /> Antoine Latter<br /> Frank Boehme<br /> Sloan Poe<br /> Elizabeth Oldham </span></p></body></html> + + + + &License Agreement + &许可证和协议 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + &OK + &确定 + + + + BatchHDRDialog + + + Batch HDR Dialog + 批处理HDR对话框 + + + + Number of bracketed images: + 阶段曝光的图片数量: + + + + + Select the number of bracketed pictures used to create the HDRs + 选择用来生成HDR的分阶段曝光的图片数量 + + + + Output + 导出 + + + + Output format: + 导出格式: + + + + Choose an HDR output file format + 选择HDR导出文件格式 + + + + hdr + hdr + + + + exr + exr + + + + PFS + PFS + + + + tiff + tiff + + + + Predefined profile: + 预定义配置文件: + + + Choose one of the creation predefined profiles. +See documentation for more informations. + 选择其中一个预定义配置文件. + + + + Choose one of the creation predefined profiles. +See documentation for more information. + + + + + Profile 1 + 配置文件1 + + + + Profile 2 + 配置文件2 + + + + Profile 3 + 配置文件3 + + + + Profile 4 + 配置文件4 + + + + Profile 5 + 配置文件5 + + + + Profile 6 + 配置文件6 + + + + Alignment + 对齐 + + + + Auto align the bracketed pictures + 自动对齐分阶段曝光图片 + + + + Auto-align images + 自动对齐图片 + + + + Use Hugin's align_image_stack engine + 是用Hugin's align_image_stack引擎 + + + + Hugin's align_image_stack + Hugin's align_image_stack_engine + + + + Use MTB (Median Threshold Bitmap) engine + 阀值位图中位数引擎 + + + + MTB + 阀值位图中位数 + + + + Progress + 进度 + + + + Folder where created HDRs are saved + 存储HDRs文件夹 + + + + + Select... + 选择... + + + + Folder where bracketed pictures are located (in alphabetical order) + 阶段曝光图片存储文件夹(按字母书序) + + + + Input folder: + 输入文件夹: + + + + Output folder: + 输出文件夹: + + + + &Cancel + &取消 + + + + &Start + &开始 + + + + &Close + &关闭 + + + + Choose a source directory + 选择源目录 + + + + Choose a output directory + 选择输出目录 + + + + + Warning + 警告 + + + + Total number of pictures must be a multiple of number of bracketed images. + 图片总数必须是多个阶段曝光图片的数量. + + + + The chosen output directory contains HDR files. Those files might be overwritten. + +Continue? + 选择的输出目录包含HDR文件,这些文件可能会被覆盖。继续? + + + + Started processing... + 开始处理... + + + + Creating HDR... + 生成 HDR... + + + + Completed with errors + 完成但有错误 + + + + Completed without errors + 完成且没有错误 + + + + Error: missing EXIF data + 错误:缺失EXIF数据 + + + + Aligning... + 对齐中... + + + + Written + 写入完成 + + + + Error: + 错误: + + + + Aborting... + 终止中... + + + + BatchTMDialog + + + Batch Tone Mapping + 批处理色调映射 + + + + HDR Images to Convert + 要转化的HDR图片 + + + + List of HDRs that will be tone mapped + 色调映射HDRs列表 + + + + Add Directory (Alt+D) + 添加目录 (Alt+D) + + + + + + + + + + ... + ... + + + + Alt+D + Alt+D + + + + Add Files (Alt+F) + 添加文件 (Alt+F) + + + + Alt+F + Alt+F + + + + Remove Files (Alt+R) + 删除文件 (Alt+I) + + + + Alt+R + Alt+R + + + + Tone Mapping Settings + 色调映射设置 + + + + Add Directory (Alt+I) + 添加目录 (Alt+I) + + + + Alt+I + Alt+I + + + + Add Files (Alt+L) + 添加文件 (Alt+L) + + + + Alt+L + Alt+L + + + + Add from Database (Alt+B) + 从数据库添加 (Alt+B) + + + + Alt+B + Alt+B + + + + Remove Settings (Alt+M) + 删除文件设置 (Alt+M) + + + + Alt+M + Alt+M + + + + List of Tone Mapping Setting files that will be used to tone map each HDR + 用于色调映射每一个HDR的设置文件列表 + + + + Specify output folder for the tone mapped files + 指定色调映射文件输出文件夹 + + + + Output + 输出 + + + + Ouput Image Width: + 输出图片宽度: + + + + % + % + + + + Output Image Quality + 输出图片质量 + + + + Output Folder: + 输出文件夹: + + + + Selec&t... + 选&择... + + + + Conversion Log + 转换日志 + + + + Batch operations report + 批处理运行报告 + + + + &Show only: + &仅显示: + + + + Filter messages based on severity + 基于严重度过滤消息 + + + + All messages + 所有消息 + + + + Errors only + 仅错误 + + + + Success messages + 成功消息 + + + + &Filter log messages: + &过滤日志消息: + + + + Clear filter text + 清楚过滤文字 + + + + Overall completion progress + 整体完成进度 + + + + &Cancel + &取消 + + + + Start batch tone mapping + 开始色调映射批处理 + + + + &Start + &开始 + + + + Using %1 thread(s) + 使用%1 线程 + + + + Saving using file format: %1 + 使用指定文件格式存储: %1 + + + + + + Choose a directory + 选择一个目录 + + + + All HDR images + 所有HDR图片 + + + + Select input images + 选择输入图片 + + + + Load tone mapping settings text files... + 载入色调映射设置文本文件... + + + + LuminanceHDR tone mapping settings text file (*.txt) + LuminanceHDR 色调映射设置文本文件 (*.txt) + + + + Processing... + 处理中... + + + + Start processing... + 开始处理中... + + + + Close + 关闭 + + + + &Done + &完成 + + + + All tasks completed. + 所有任务已完成. + + + + Aborting... + 终止... + + + + BatchTMJob + + + [T%1] Start processing %2 + [T%1] 开始处理中 %2 + + + + [T%1] Successfully load %2 + [T%1] 成功载入 %2 + + + + [T%1] Successfully saved LDR file: %2 + [T%1] LDR文件成功保存: %2 + + + + [T%1] ERROR: Cannot save to file: %2 + [T%1] 出错: 无法保存到文件: %2 + + + + [T%1] ERROR: Loading of %2 failed + [T%1] 出错:载入 %2 失败 + + + + CommandLineInterfaceManager + + + Error: Alignment engine not recognized. + 出错: 无法识别对齐引擎. + + + + Error: Wrong HDR creation format. + 出错: HDR创建格式错误. + + + + Error: Unknown weight function specified. + 出错: 指定的加权函数未知. + + + + Error: Unknown response curve specified. + 出错: 指定的响应曲线未知. + + + + Error: Unknown HDR creation model specified. + 出错: 指定的HDR生成模型未知. + + + + Error: Unknown HDR creation format specified. + 出错:指定的HDR创建格式未知. + + + + Error: Unknown tone mapping operator specified. + 出错: 指定的色调映射操作符未知. + + + + Error: Wrong tone mapping option format. + 出错: 色调映射选项格式错误. + + + + Error: Unknown tone mapping option specified. + 出错: 指定的色调映射选项未知. + + + + Error: Quality must be in the range [0-100]. + 出错: 质量必须在[0-100]范围之内. + + + + Error: Unknown option %1. + 出错: 未知选项 %1. + + + + Error: Missing argument for %1. + 出错: 缺少 %1参数. + + + + Error: The number of EV values specified is different from the number of input files. + 出错: 指定的EV值数量于输入文件数量不同. + + + + Load file %1 failed + 载入文件 %1失败 + + + Error: Exif data missing in images and EV values not specifed on the commandline, bailing out. + 出错: 图片缺少Exif数据以及EV值未在命令行指定. + + + + Error: Exif data missing in images and EV values not specified on the commandline, bailing out. + + + + + EV values have been assigned. + EV值已被指定. + + + + Failed executing align_image_stack + 执行对齐图片堆栈失败 + + + + Failed aligning images. + 对齐图片失败. + + + + Creating (in memory) the HDR. + 正在(寄存器中)创建HDR. + + + + Saving to file %1. + 正在保存到文件%1. + + + + + Image %1 saved successfully + 图片 %1 成功保存 + + + + Could not save %1 + 无法保存%1 + + + + NOT Saving HDR image to file. %1 + 未能保存HDR图片到文件%1 + + + + Tonemapping requested, saving to file %1. + 已请求色调映射,正在保存到文件%1. + + + + ERROR: Cannot save to file: %1 + 出错:无法保存到文件: %1 + + + + Failed loading images + 载入图片失败 + + + + Usage: %1 [OPTIONS]... [INPUTFILES]... + 使用: %1 [选项]...[输入文件]... + + + + Commandline interface to %1. + 命令行接口到%1. + + + + -h --help Display this help. + -h --帮助 显示这个帮助. + + + + -v --verbose Print more messages during execution. + -v --冗长 执行过程中打印更多的消息. + + + + -a --align AIS|MTB Align Engine to use during HDR creation (default: no alignment). + -a --对齐AIS|MTB HDR生成过程中使用对齐引擎 (默认:不对其). + + + + -e --ev EV1,EV2,... Specify numerical EV values (as many as INPUTFILES). + -e --ev EV1,EV2,... 指定数值EV值(与输入文件数目相同). + + + + -c --config HDR creation config. Possible values: + -c --配置 HDR生成配置。 可能的值: + + + + weight=triangular|gaussian|plateau:response_curve=from_file|linear|gamma|log|robertson:model=robertson|debevec:curve_filename=your_file_here.m + 加权=三角化|高斯|plateau:响应曲线=来自文件|线性|log|robertson:model=robertson|debevec:curve_filename=your_file_here.m + + + + (Default is weight=triangular:response_curve=linear:model=debevec) + (Default is weight=triangular:response_curve=linear:model=debevec) + + + + -l --load HDR_FILE Load an HDR instead of creating a new one. + -l --载入HDR文件 载入HDR而不创建新的HDR. + + + + -s --save HDR_FILE Save to a HDR file format. (default: don't save) + -s --保存 + + + + -g --gamma VALUE Gamma value to use during tone mapping. (default: 1) + -g --gamma值 用于色调映射的gamma值(默认:1) + + + + -r --resize VALUE Width you want to resize your HDR to (resized before gamma and tone mapping) + -r --调整图像大小值 HDR要调整到的宽度(在设定gamma值和色调映射前调整大小) + + + + -t --tmo Tone mapping operator. Legal values are: + -t --tmo 色调映射运算符. 合法值是: + + + + ashikhmin|drago|durand|fattal|pattanaik|reinhard02|reinhard05|mantiuk06|mantiuk08 + ashikhmin|drago|durand|fattal|pattanaik|reinhard02|reinhard05|mantiuk06|mantiuk08 + + + + (Default is mantiuk06) + (默认值为mantiuk06) + + + + -p --tmoptions Tone mapping operator options. Legal values are: + -p --tmooptions 色调映射运算符选项. 合法值是: + + + + alpha=VALUE:beta=VALUE:color=VALUE:noise=VALUE:new=true|false (for fattal) + alpha=VALUE:beta=VALUE:color=VALUE:noise=VALUE:new=true|false (for fattal) + + + + contrast=VALUE:saturation=VALUE:detail=VALUE:equalization=true|false (for mantiuk06) + contrast=VALUE:saturation=VALUE:detail=VALUE:equalization=true|false (for mantiuk06) + + + + colorsaturation=VALUE:contrastenhancement=VALUE:luminancelevel=VALUE:setluminance=true|false (for mantiuk08) + colorsaturation=VALUE:contrastenhancement=VALUE:luminancelevel=VALUE:setluminance=true|false (for mantiuk08) + + + + localcontrast=VALUE:eq=2|4:simple=true|false (for ashikhmin) + colorsaturation=VALUE:contrastenhancement=VALUE:luminancelevel=VALUE:setluminance=true|false (for mantiuk08) + + + + sigma_s=VALUE:sigma_r=VALUE:base=VALUE (for durand) + sigma_s=VALUE:sigma_r=VALUE:base=VALUE (for durand) + + + + bias=VALUE (for drago) + bias=VALUE (for drago) + + + + local=true|false:autolum=true|false:cone=VALUE:rod=VALUE:multiplier=VALUE (for pattanaik) + local=true|false:autolum=true|false:cone=VALUE:rod=VALUE:multiplier=VALUE (for pattanaik) + + + + scales=true|false:key=VALUE:phi=VALUE:num=VALUE:low=VALUE:high=VALUE (for reinhard02) + scales=true|false:key=VALUE:phi=VALUE:num=VALUE:low=VALUE:high=VALUE (for reinhard02) + + + + brightness=VALUE:chroma=VALUE:lightness=VALUE (for reinhard05) + brightness=VALUE:chroma=VALUE:lightness=VALUE (for reinhard05) + + + + (default is contrast=0.3:equalization=false:saturation=1.8, see also -o) + 默认值:对比度=0.3:均衡=false:饱和度=1.8, 同时参见 -o) + + + + -o --output LDR_FILE File name you want to save your tone mapped LDR to. + -o --输出HDR文件 想要保存色调映射LDR到的文件名. + + + + -q --quality VALUE Quality of the saved tone mapped file (0-100). + -q --质量值 保存的色调映射文件的质量 (0-100). + + + + (No tonemapping is performed unless -o is specified). + (除非已经制定了-o,否则色调映射不会执行). + + + + You must either load an existing HDR file (via the -l option) or specify INPUTFILES to create a new HDR. + + 必须要么载入一个已经存在的HDR文件 (通过-l选项)要么指定输入文件来创建一个新的HDR文件. + + + + DnDOption + + + Drag and Drop + 拖放 + + + + <b>What would you like to do with the file(s)?</b> + <b>你要怎么处理文件?</b> + + + + &Open + &打开 + + + + Open an existing HDR image + 打开一个已经存在的HDR图片 + + + + &New + &新建 + + + + Create a new HDR image from one or more images + 从一个或者多个图像创建一个新的HDR图像 + + + + &Cancel + &取消 + + + + Cancel the drag and drop process and return to the main window + 取消拖放操作并返回主窗口 + + + + EditingTools + + + Pan the image to a region + 平移图片到一个区域 + + + + Choose a directory and a prefix + 选择一个目录和前缀 + + + + EditingToolsDialog + + + Editing Tools + 编辑工具 + + + + Visualization and Navigation + 可视化和导航 + + + + Fit to window + 适合窗口 + + + + &Fit to Window + &适合窗口 + + + + Original size + 原始大小 + + + + Origina&l Size + 原始&l大小 + + + + Zoom In + 放大 + + + + Zoom &In + 放 &大 + + + + Zoom Out + 缩小 + + + + Zoom &Out + 缩&小 + + + + Preview &Mode: + 预览&模式: + + + + Difference (E-P) + 差分(E-P) + + + + Overlay (E+P) + 覆盖 (E+P) + + + + Editable Only (E) + 仅可编辑(E) + + + + Pivot Only (P) + 仅中心点 (P) + + + + Antighosting Mask + 抗重影蔽光框 + + + + Mask Color + 蔽光框颜色 + + + + Images List + 图片列表 + + + + Ed&itable + 可&编辑 + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The currently selected image is the one that you can shift and paint an anti-ghosting mask on.</p></body></html> + + + + + The image currently selected in this list can be translated up,down,left and right using the controls below. +This image's histogram is diplayed in the widget above. + 当前选中列表中的图片可以通过下面的控制上下左右平移。 +图片的直方图显示子在上面的小工具窗口中. + + + + Select the previous image in both lists + 在两个列表中同时选择前面的图片 + + + + Use this button to move the selection to the previous image in both lists. + 使用这个按钮移动在两个列表中都选中的之前的图片。 + + + + Select the next image in both lists + 选择下一个都在两个列表中的图片 + + + + Use this button to move the selection to the next image in both lists. + 使用这个按钮移动下一个同时在两个列表选中的图片。 + + + + R&eference + 参&考图片 + + + + The reference image is the one currently selected + 参考图片为当前选中图片 + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The image currently selected in this list serves as a reference position for the editable image</p></body></html> + + + + + Tools + 工具 + + + + Crop the stack of images after a selection with the left mouse button has been made + 左键选中后剪裁堆栈的图片 + + + + Clicking this button you will be able to crop all the images to the size that you have previously selected with the left mouse button (press and hold the left mouse button and move the pointer to select a crop area, then press this button). + 点击这个按钮可以剪裁所有图片到之前使用左键选择的图片的大小(按住鼠标左键,并移动指针到一个剪裁区域,然后按这个按钮). + + + + &Crop All Images + &剪裁所有图像 + + + + Ctrl+X + Ctrl+X + + + + &Anti Ghosting + &消除叠影 + + + + &Save Images + &保存图像 + + + + Ctrl+S + Ctrl+S + + + + A&dd Mask + &添加蔽光框 + + + + Remove Mas&k + 去除&蔽光框 + + + + Size: + 大小: + + + + pixels + 像素 + + + + &Strength: + &强度: + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This area shows the preview (using the preview mode on the left) between the editable and reference image.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If the same image is selected in both the editable and reference list, this area will show the image itself.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clicking and holding the left mouse button you will be able to select a crop area.</p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Shift values for the currently selected editable image</p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here the user can view and set the shift values for the currently selected editable image</p></body></html> + + + + + Shift values for editable image + 可编辑图像偏移量 + + + + Reset the shift values for the currently selected movable image + 为当前选中可移动图像重新设定偏移量 + + + + &Reset + &重设 + + + + Reset the shift values for all the images + 为所有图像重设偏移量 + + + + Reset &All + 重设&所有 + + + + &Horizontal: + &水平: + + + + &Vertical: + &垂直: + + + + Insert an horizontal shift value for the currently selected movable image + 为当前选定可移动图像插入一个水平偏移量 + + + + + px + px + + + + Insert a vertical shift value for the currently selected movable image + 为当前选定可移动图像插入一个垂直偏移量 + + + + Move up of 1 pixel the currently selected movable image + 将当前选中可移动图像向上移动一个像素 + + + + Move down of 1 pixel the currently selected movable image + 将当前选中可移动图像向下移动一个像素 + + + + Move right of 1 pixel the currently selected movable image + 将当前选中可移动图像向右移动一个像素 + + + + Move left of 1 pixel the currently selected movable image + 将当前选中可移动图像向左移动一个像素 + + + + Histogram + 柱状图 + + + + Get information about the graphical elements + 获取图形元素信息 + + + + &What's this? + &这是什么? + + + + Shift+F1 + Shift+F1 + + + + &Next > + &下一个 > + + + + &Cancel + &取消 + + + + GenericViewer + + + Pan the image to a region + 平移图像到一个区域 + + + + HdrCreationManager + + + The image %1 is an 8 bit format (LDR) while the previous ones are not. + 图像%1是一个8比特格式(LDR),而前面的图像不是. + + + + + The image %1 has an invalid size. + 图像%1大小无效. + + + + The image %1 is an 16 bit format while the previous ones are not. + 图像%1是16比特格式,而前面的不是. + + + + HdrInputLoader + + + + + + ERROR loading %1 + 错误载入%1 + + + + ERROR: The file<br>%1<br> is not a 8 bit or 16 bit tiff. + 错误: 文件<br>%1<br>既不是8比特tiff也不是16比特tiff. + + + + ERROR: %1 + 错误: %1 + + + + ERROR: Failed Loading file: %1 + 错误:载入文件:%1失败 + + + + HdrViewer + + + &Mapping: + &映射: + + + + Histogram: + 直方图: + + + + Linear + x线性 + + + + Gamma 1.4 + Gamma 1.4 + + + + Gamma 1.8 + Gamma 1.8 + + + + Gamma 2.2 + Gamma 2.2 + + + + Gamma 2.6 + Gamma 2.6 + + + + Logarithmic + 对数 + + + + HdrWizard + + + HDR Creation Wizard + HDR生成程序 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">HDR Creation Wizard</span></p> +<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:16pt; font-weight:600;"></p> +<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:16pt; font-weight:600;"></p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This tool help you in fusing bracketed images taken with different exposures to make an <a href="http://en.wikipedia.org/wiki/High_Dynamic_Range"><span style=" text-decoration: underline; color:#0057ae;">HDR Image</span></a>. </p> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The bracketed images must be taken with the same camera in the same conditions and possibly using a tripod.</p> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This assistant will help you through all the steps: importing the images, aligning them, choosing a profile to create an HDR.</p> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Constraints:</p> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">All images must have same dimension</p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">All images must have same color depth</p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">HDR生成应用程序</span></p> +<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:16pt; font-weight:600;"></p> +<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:16pt; font-weight:600;"></p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">这个工具可以帮助你综合一组不同曝光度的图像来生成一个 <a href="http://en.wikipedia.org/wiki/High_Dynamic_Range"><span style=" text-decoration: underline; color:#0057ae;">HDR 图像</span></a>. </p> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">这组图像必须来自于同一个相机同样的条件下,并且最好使用三脚架.</p> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">这个应用会帮助你经过所有的步骤:导入图像,对齐图像,选择一个配置文件来生成一个HDR.</p> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">约束:</p> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">所有的图像必须是同样的大小</p> +<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">所有的图像必须有同样的颜色深度</p></body></html> + + + + [1/2] Load Input Images + [1/2]载入输入图像 + + + + Currently Loaded &Files + 当前已载入&文件 + + + + Add Images + 添加图像 + + + + + + ... + ... + + + + Remove Selected Image + 删除选定图像 + + + + Clear List + 清楚列表 + + + + Preview + 预览 + + + + Selected Image &Exposure + 已选择的图像&曝光 + + + + EV: + EV: + + + + Alignment + 对齐 + + + + &Autoalign images + &自动对齐图像 + + + + Hugin's align_image_stack + Hugin's 图像对齐堆栈 + + + + MTB + MTB + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Start loading a set of images with different exposure</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">开始载入一组不同曝光度的图片</span></p></body></html> + + + + [2/2] Choose Settings for HDR Creation + [2/2]选择HDR生成设置 + + + + Choose one of the predefined profiles: + 选择其中一个预定义配置: + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">The first predefined profile in the list usually leads to best results. Change it only if the resulting HDR image is not good enough.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">列表中第一个预定义配置通常会产生最好的效果。只有当生成的图像质量不好时再改变配置.</span></p></body></html> + + + + Profile 1 + 配置 1 + + + + Profile 2 + 配置 2 + + + + Profile 3 + 配置 3 + + + + Profile 4 + 配置 4 + + + + Profile 5 + 配置 5 + + + + Profile 6 + 配置 6 + + + + Weighting function: + 加权函数: + + + + + + Triangular + 三角加权 + + + + + Response curve: + 响应曲线: + + + + + + + Linear + 线性 + + + + HDR creation model: + HDR生成模型: + + + + + + Debevec + Debevec + + + + Anti-ghosting (beta!) + 抗鬼影 (测试!) + + + + + + Gamma + Gamma + + + + + Log + 对数 + + + + Calibration + 校准 + + + + Amount of iterations: + 迭代数量: + + + + Keep it small + 保持小量 + + + + Use this only if the default profiles above do not yield good results + 仅当以上默认设置给出效果不好时才使用此选项 + + + + Use custom configuration + 使用自定义配置 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Choose one of the predefined profiles or use a custom configuration</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">选择一个预定义配置文件或者自定义配置</span></p></body></html> + + + + [2/2] Choose Custom Configuration + [2/2]选择自定义配置文件 + + + + Weights: + 权重: + + + + Choose confidence function over all the possible pixel values: + 对所有可能的像素值选择置信函数: + + + + + Gaussian + 高斯 + + + + + Plateau + 平台 + + + + Response Curve: + 响应曲线: + + + + Predefined response curves: + 预定义响应曲线: + + + + Load response function from file + 从文件中加载响应函数 + + + + Load... + 加载... + + + + Use calibration to find response curve (robertson02 algorithm) + 使用校准寻找响应曲线 (robertson02算法) + + + + Save response function to file: + 保存响应函数到文件: + + + + Save As... + 另存为... + + + + HDR Creation Equation: + HDR生成方程: + + + + Choose model: + 选择模型: + + + + + Robertson + Robertson + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Here you can customize the HDR creation process</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">在这你可以自定义HDR生成过程</span></p></body></html> + + + + + &Next > + &下一步 > + + + + &Cancel + &取消 + + + + Image Filename + 图片文件名 + + + + Exposure + 曝光 + + + + All formats (*.jpeg *.jpg *.tiff *.tif *.crw *.cr2 *.nef *.dng *.mrw *.orf *.kdc *.dcr *.arw *.raf *.ptx *.pef *.x3f *.raw *.sr2 *.rw2 *.3fr *.mef *.mos *.erf *.nrw *.srw + 所有格式 (*.jpeg *.jpg *.tiff *.tif *.crw *.cr2 *.nef *.dng *.mrw *.orf *.kdc *.dcr *.arw *.raf *.ptx *.pef *.x3f *.raw *.sr2 *.rw2 *.3fr *.mef *.mos *.erf *.nrw *.srw + + + + *.JPEG *.JPG *.TIFF *.TIF *.CRW *.CR2 *.NEF *.DNG *.MRW *.ORF *.KDC *.DCR *.ARW *.RAF *.PTX *.PEF *.X3F *.RAW *.SR2 *.RW2 *.3FR *.MEF *.MOS *.ERF *.NRW *.SRW);; + *.JPEG *.JPG *.TIFF *.TIF *.CRW *.CR2 *.NEF *.DNG *.MRW *.ORF *.KDC *.DCR *.ARW *.RAF *.PTX *.PEF *.X3F *.RAW *.SR2 *.RW2 *.3FR *.MEF *.MOS *.ERF *.NRW *.SRW);; + + + + JPEG (*.jpeg *.jpg *.JPEG *.JPG);; + JPEG (*.jpeg *.jpg *.JPEG *.JPG);; + + + + TIFF Images (*.tiff *.tif *.TIFF *.TIF);; + TIFF 图像 (*.tiff *.tif *.TIFF *.TIF);; + + + + RAW Images (*.crw *.cr2 *.nef *.dng *.mrw *.orf *.kdc *.dcr *.arw *.raf *.ptx *.pef *.x3f *.raw *.sr2 *.rw2 *.3fr *.mef *.mos *.erf *.nrw *.srw + 未处理图像 (*.crw *.cr2 *.nef *.dng *.mrw *.orf *.kdc *.dcr *.arw *.raf *.ptx *.pef *.x3f *.raw *.sr2 *.rw2 *.3fr *.mef *.mos *.erf *.nrw *.srw + + + + *.CRW *.CR2 *.NEF *.DNG *.MRW *.ORF *.KDC *.DCR *.ARW *.RAF *.PTX *.PEF *.X3F *.RAW *.SR2 *.RW2 *.3FR *.MEF *.MOS *.ERF *.NRW *.SRW) + *.CRW *.CR2 *.NEF *.DNG *.MRW *.ORF *.KDC *.DCR *.ARW *.RAF *.PTX *.PEF *.X3F *.RAW *.SR2 *.RW2 *.3FR *.MEF *.MOS *.ERF *.NRW *.SRW) + + + + Select the input images + 选择输入图像 + + + + Loading... + 加载中... + + + + + Start loading a set of images with different exposure + 开始加载一系列不同曝光度图像 + + + + <center><font color="#008400"><h3><b>Images Loaded.</b></h3></font></center> + <center><font color="#008400"><h3><b>图像加载完毕.</b></h3></font></center> + + + + <font color="#FF0000"><h3><b>WARNING:</b></h3></font> Luminance HDR was not able to find the relevant <i>EXIF</i> tags +for the following images: + <ul> %1</ul> <hr>You can still proceed creating an Hdr. To do so you have to insert <b>manually</b> the EV (exposure values) or stop difference values. <hr>If you want Luminance HDR to do this <b>automatically</b>, you have to load images that have at least +the following exif data: <ul><li>Shutter Speed (seconds)</li> <li>Aperture (f-number)</li></ul> <hr><b>HINT:</b> Losing EXIF data usually happens when you preprocess your pictures.<br> You can perform a <b>one-to-one copy of the exif data</b> between two sets of images via the <i><b>"Tools->Copy Exif Data..."</b></i> menu item. + <font color="#FF0000"><h3><b>WARNING:</b></h3></font> Luminance HDR无法为下面的图像找到相关的 <i>EXIF</i> 标签 +: + <ul> %1</ul> <hr>你任然可以生成一个HDR文件。但是为了如此你必须插入 <b>以手动方式</b> EV (曝光度) 或者停止不同的值. <hr>如果你希望 Luminance HDR 来做这个 <b>已自动方式</b>, 你载入的图像必须至少有以下的exif数据: <ul><li>快门速度 (秒)</li> <li>光圈 (f-数值)</li></ul> <hr><b>提示:</b> 丢失 EXIF 数据 通常在预处理图片时出现.<br> 你可以在两组图片组间进行一次 <b>一对一 exif 数据复制</b> 通过 <i><b>"工具->复制 Exif 数据..."</b></i> 菜单项. + + + + EXIF data not found + 未找到EXIF数据 + + + + + <center><h3><b>To proceed you need to manually set the exposure values.<br><font color="#FF0000">%1</font> values still required.</b></h3></center> + <center><h3><b>要继续你需要手动设置曝光值.<br><font color="#FF0000">%1</font> 仍然需要数值.</b></h3></center> + + + + Loading Error: + 载入错误: + + + + Unknown + 未知 + + + + + + + Error... + 错误... + + + + align_image_stack failed to align images. + 对其图像堆栈对齐图像失败. + + + + Failed to start external application "<em>align_image_stack</em>".<br>Please read "Help -> Contents... -> Setting up -> External Tools" for more information. + 外部应用程序无法启动 "<em>对其图像堆栈</em>".<br>请阅读 "帮助 -> 目录... -> 设置 ->外部工具" 查询更多信息. + + + + The external application "<em>align_image_stack</em>" crashed... + 外部应用程序 "<em>对其图像堆栈</em>" 崩溃... + + + + An unknown error occurred while executing the "<em>align_image_stack</em>" application... + 在执行 "<em>对齐图像堆栈</em>" 应用程序时发生未知错误... + + + + Now click on next button + 现在点击下一步按钮 + + + + + + &Finish + &完成 + + + + Aligning... + 对齐中... + + + + + Processing... + 处理中... + + + + Load a camera response curve file + 载入一个相机响应曲线文件 + + + + + Camera response curve (*.m);;All Files (*) + 相机响应曲线 (*.m);;所有文件 (*) + + + + Save a camera response curve file + 保存相机响应曲线文件 + + + + Weights: + 权重: + + + + - Response curve: + -响应曲线: + + + + - Model: + -模型: + + + + Logarithmic + 对数 + + + + From Calibration + 来自于校准 + + + + From File + 来自于文件 + + + + <center><font color="#008400"><h3><b>All the EV values have been set.<br>Now click on Next button.</b></h3></font></center> + <center><font color="#008400"><h3><b>已设定所有EV值.<br>现在点击下一步按钮.</b></h3></font></center> + + + + HelpBrowser + + + Luminance HDR Help + Luminance HDR帮助文件 + + + + Luminance Help + Luminance帮助 + + + + + &Print... + &打印... + + + + &Exit + &退出 + + + + + &Find... + &查找... + + + + Find &Next... + 查找&下一个... + + + + Find &Previous... + 查找&上一个... + + + + &Add + &添加 + + + + + &Delete + &删除 + + + + + D&elete All + &删除所有 + + + + Help SideBar + 帮助侧边栏 + + + + LuminanceHDR Online Help + LuminanceHDR 在线帮助 + + + + &File + &文件 + + + + &Edit + &编辑 + + + + &View + &查看 + + + + + &Bookmarks + &书签 + + + + &Quit + &退出 + + + + Find &Next + 查找&下一个 + + + + Find &Previous + 查找&上一个 + + + + &Contents + &目录 + + + + &Search + &搜索 + + + + &Add Bookmark + &添加书签 + + + + Find + 查找 + + + + Search Term: + 搜索词句: + + + + New Bookmark + 新书签 + + + + New Bookmark's Title: + 新书签的标题: + + + + <h2><p>Sorry, no manual is installed!</p><p>Please contact your package provider or LuminanceHDR team if you built the application yourself</p></h2> + HTML message for no documentation available to show + <h2><p>对不起,未安装手册指南!</p><p>如果你建立了自己的应用程序请联系你的安装包提供商或者 LuminanceHDR团队</p></h2> + + + + LuminanceHDR - Help Browser + LuminanceHDR -帮助文件浏览 + + + + This protocol is not handled by the help browser. +Do you want to open the link with the default application +associated with the protocol? + 帮助浏览器不处理该协议. +你想要使用与协议相关的默认程序打开链接吗? + + + + HelpSideBar + + + Contents + 目录 + + + + &Contents + &目录 + + + + Se&arch + 搜&索 + + + + Searching is case insensitive + 区分大小写 + + + + &Search + &搜索 + + + + + 1 + 1 + + + + Book&marks + 书&签 + + + + &Add + &添加 + + + + &Remove + &删除 + + + + R&emove All + 清&除所有 + + + + IOWorker + + + ERROR: The following file is not readable: %1 + 错误: 以下文件不可读: %1 + + + + ERROR: File %1 has unsupported extension. + 错误: 文件 %1 还有不支持的扩展名. + + + + ERROR: Failed loading file: %1 + 错误: 载入文件失败: %1 + + + + ImageQualityDialog + + + Unknown + 未知 + + + + ImgQualityDialog + + + Save as + 另存为 + + + + Saved File Quality + 保存文件质量 + + + + Quality: + 质量: + + + + File size: + 文件大小: + + + + Unknown + 未知 + + + + Ca&lculate + 计&算 + + + + &Save + &保存 + + + + &Cancel + &取消 + + + + LdrViewer + + + + LDR image [%1 x %2] + LDR图像 【%1 *x %2] + + + + LevelsDialog + + + Levels and Gamma + 级别和Gamma + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Adjust Color Levels</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">调整颜色级别</span></p></body></html> + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Input Levels</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">输入水平</span></p></body></html> + + + + Clip black + 剪辑黑色 + + + + Gamma + Gamma + + + + Clip White + 剪辑白色 + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Output Levels</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">输出级别</span></p></body></html> + + + + &Reset + &重设 + + + + &Cancel + &取消 + + + + &OK + &确定 + + + + MainWindow + + + + Luminance HDR + Luminance HDR + + + + &Tools + &工具 + + + + &Help + &帮助 + + + + &Windows + &窗口 + + + + &View + &试图 + + + + HDR &Histogram + HDR &柱状图 + + + + &Toolbars + &工具栏 + + + + &File + &文件 + + + + &Edit + &编辑 + + + + Main Toolbar + 主工具栏 + + + + &New HDR image... + &新HDR图像... + + + + New HDR image + 新HDR图像 + + + + + Create a new HDR image from a set of LDR or Raw images + 从一组LDR或者原始图像中创建一个新的HDR图像 + + + + Create a new HDR image from a set of JPEG, Raw, or 8/16 bpc TIFF files + 从一组JPEG,原始,或者8/16 bpc TIFF 文件中创建一个新的HDR图像 + + + + Ctrl+N + Ctrl+N + + + + &Open HDR image... + &打开HDR 图像... + + + + Open HDR image + 打开HDR图像 + + + + + + Load an existing HDR image file (OpenEXR, Radiance RGBE, PFS stream, RAW or TIFF) + 载入一个已存在的HDR图像文件(OpenEXR, Radiance RGBE, PFS stream, RAW or TIFF) + + + + Ctrl+O + Ctrl+O + + + + &Save as... + &另存为... + + + + Save as... + 另存为... + + + + + + Save image (HDR or LDR) + 保存图像(HDR 或者LDR) + + + + Ctrl+S + Ctrl+S + + + + &Quit + &退出 + + + + + Quit Luminance HDR + 退出 Luminance HDR + + + + Exit + 退出 + + + + Ctrl+Q + Ctrl+Q + + + + Rotate c&ounter-clockwise + 逆时针&旋转 + + + + Rotate counter-clockwise + 逆时针旋转 + + + + + + Rotate counter-clockwise the HDR image + 逆时针旋转HDR图像 + + + + < + < + + + + Rotate c&lockwise + 顺时针&旋转 + + + + Rotate clockwise + 顺时针旋转 + + + + + + Rotate clockwise the HDR image + 顺时针旋转HDR图像 + + + + > + > + + + + Low Dynamic Range + 低动态范围 + + + + + L + L + + + + Fit to Dynamic Range + 适合动态范围 + + + + Fit to dynamic range + 适合动态范围 + + + + \ + \ + + + + Shrink Dynamic Range + 缩小动态范围 + + + + [ + [ + + + + Extend Dynamic Range + 拉伸动态范围 + + + + ] + ] + + + + Decrease Exposure + 减少曝光 + + + + 0 + 0 + + + + &Increase Exposure + &增加曝光 + + + + 9 + 9 + + + + &Contents... + &目录... + + + + About... + 关于... + + + + + + Open user manual for Luminance HDR + 打开 Luminance HDR用户手册 + + + + F1 + F1 + + + + &Normal Size + &正常大小 + + + + Normal size + 正常大小 + + + + + + View HDR image at its normal size + 查看正常大小HDR图像 + + + + O + O + + + + Zoom &In + 放&大 + + + + + + Zoom in + 放大 + + + + + + + + + + + Zoom &Out + 缩&小 + + + + + + Zoom out + 缩小 + + + + - + - + + + + &Fit in Window + &适合窗口 + + + + + Fit in Window + 适合窗口 + + + + + Make the HDR image fit its window + 使HDR图像适合窗口 + + + + W + W + + + + &Preferences... + &偏好... + + + + Luminance Options + Luminance选项 + + + + + + Set various options of Luminance + 设置不同Luminance选项 + + + + Ctrl+P + Ctrl+P + + + + &Resize... + &调整大小... + + + + Resize the HDR image + 调整HDR图像大小 + + + + + + Change size of the HDR image + 改变HDR图像大小 + + + + Ctrl+R + Ctrl+R + + + + Copy &Exif Data... + 复制&Exif数据... + + + + Copy Exif Data + 复制Exif数据 + + + + + + Copy Exif data between two sets of files + 在两组文件间复制Exif数据 + + + + Ctrl+E + Ctrl+E + + + + &Align Images... + &对齐图像... + + + + + + WORK IN PROGRESS + 工作进行中 + + + + &About Qt + &关于Qt + + + + Show information about Qt + 显示关于Qt的信息 + + + + + Show information about Qt library that is used by Luminance + 显示Luminance使用的Qt库信息 + + + + &Tile + &Tile + + + + &Cascade + &级联 + + + + + Cascade + 级联 + + + + Toolbars + 工具条 + + + + Text &under Icons + 图标下&文字 + + + + &Icons Only + &仅图标 + + + + &Text Only + &仅文字 + + + + Text &Alongside Icons + 图标旁&文字 + + + + &Batch Tone Mapping... + &批处理色调映射... + + + + Convert multiple HDR images to LDR + 转换多个HDR图像为LDR + + + + + Convert multiple HDR images to LDR using existing settings files + 使用已有设置文件转换多个HDR图像为LDR + + + + Ctrl+B + Ctrl+B + + + + &What's This? + &这是什么? + + + + + Get verbose information about user interface elements + 获取关于用户界面元素的详细信息 + + + + Shift+F1 + Shift+F1 + + + + About &Luminance HDR + 关于&Luminance HDR + + + + Show information about Luminance HDR + 显示关于Luminance HDR信息 + + + + + Show information about Luminance HDR, its authors and contributors + 显示关于Luminance HDR信息,作者和贡献者 + + + + Save HDR image &preview... + 保存HDR图像&并预览... + + + + + + Save the current HDR Preview to an LDR file + 保存当前HDR预览到一个LDR文件 + + + + &Projective Transformation... + &投影变换... + + + + + + Apply projective transformation to the current HDR image + 应用投影转换到当前HDR图像 + + + + &Crop to Selection + &裁剪到选择 + + + + Crop to Selection + 裁剪到选择 + + + + + Crop the image to selection rectangle + 裁剪图像到已选择矩形 + + + + Click and drag inside image area to create a selection, then use this button to crop to a new HDR image + 点击并拖拽内部图像区域来创建一个选择区域,然后使用这个按钮裁剪到一个新的HDR图像 + + + + Remove &Selection + 删除&选择 + + + + Remove selection rectangle + 删除选择矩形 + + + + + Remove selection rectangle from image area + 从图像区域删除选择矩形 + + + + Make a &Donation + 请捐&款 + + + + Ctrl+D + Ctrl+D + + + + Lock Viewers + 锁定查看器 + + + + Synchronize viewers mode (fit, fill or 1:1). + + + + Syncronize viewers mode (fit, fill or 1:1). + 同步查看器模式(适合,填充或者1:1). + + + + Lock the images for sync view + 为同步查看锁定图像 + + + + Minimize + 最小化 + + + + Maximize + 最大化 + + + + Bring All to Front + 前置全部 + + + + Show Preview Panel + 显示预览面板 + + + + Show/Hide Preview Panel + 显示/因此预览面板 + + + + Ctrl+V + Ctrl+V + + + + Adjust &Levels + 调整&色阶 + + + + + Adjust Levels + 调整色阶 + + + + + Tune the histogram for the current LDR + 调整当前LDR直方图 + + + + Ctrl+L + Ctrl+L + + + + Save All + 保存全部 + + + + + Save All LDR files + 保存全部HDR文件 + + + + Remove Tab + 删除标签 + + + + Ctrl+W + Ctrl+W + + + + Fill Window + 填充窗口 + + + + Fill window with the current viewer + 用当前查看器填充窗口 + + + + Batch HDR... + 批处理HDR... + + + + Ctrl+H + Ctrl+H + + + + Soft Proofing + 软打样 + + + + Gamut Check + 域检查 + + + + Ready. Now open an existing HDR image or create a new one! + 已准备好.现在打开一个现有的HDR图像或创建一个新的! + + + + All HDR formats + 所有HDR格式 + + + + Load one or more HDR images... + 载入一个或者多个HDR图像... + + + + Save files in + 保存文件在 + + + + Failed to save + 保存失败 + + + + Done! + 完成! + + + + Aborting... + 终止... + + + + Cropped Image + 剪裁的图像 + + + + Unsaved changes... + 未保存的改动... + + + + This HDR image has unsaved changes.<br>Do you want to save it? + 这个HDR图像还有未保存的改动.<br>你要保存它吗? + + + + Untitled + 无名 + + + + Untitled %1 + 无名 %1 + + + + Error: %1 + 错误:%1 + + + + PreferencesDialog + + + Preferences + 偏好 + + + + External Tools + 外部工具 + + + + HDR Options + HDR选项 + + + + Interface + 界面 + + + + Tone Mapping + 色调映射 + + + + RAW Conversion + RAW转换 + + + + Color Management + 颜色管理 + + + + Language + 语言 + + + Czech + 捷克语 + + + English + 英语 + + + Finnish + 芬兰语 + + + French + 法语 + + + German + 德语 + + + Indonesian + 印度尼西亚语 + + + Italian + 意大利语 + + + Polish + 波兰语 + + + Romanian + 罗马尼亚语 + + + Russian + 俄语 + + + Spanish + 西班牙语 + + + Turkish + 土耳其语 + + + Hungarian + 匈牙利语 + + + Chinese + 中文 + + + Hindi + 北印度语 + + + + Default Previews Width + 默认前一个宽度 + + + + px + px + + + + Always show Preview Panel + 总显示预览面板 + + + + Always show Wizard first page + 总在第一页显示奇才应用程序 + + + + HDR TIFF Default File Format + HDR TIFF默认文件格式 + + + + Good quality and smaller file size + 高质量和更小的文件大小 + + + + LogLuv TIFF (float, 16bit per color channel) + LogLuv TIFF(浮动, 每个颜色通道16比特) + + + + Better quality, larger file size, better compatibility with other applications + 更好的质量,更大的文件,与其他应用程序更好的兼容性 + + + + Float TIFF (float, 32bit per color channel) + 浮动TIFF(浮动,每个色彩通道32比特) + + + + Show negative numbers as: + 显示负数为: + + + + Show nan and +/-Inf values as: + 显示非数值和+/-无穷值为: + + + + Temporary Working Folder + 临时工作文件夹 + + + + &Browse... + &浏览... + + + + + Which LDR image format to save to + 保存为哪一个LDR图像格式 + + + + Batch Tonemapping Default Output Format + 批处理色调映射默认输出格式 + + + + JPEG + JPEG + + + + PNG + PNG + + + + PPM + PPM + + + + PBM + PBM + + + + BMP + BMP + + + + TIFF + TIFF + + + + + Amount of threads to use on multicore/SMP machines + 在多核/多线程机器上使用的线程数量 + + + + Batch Tonemapping Number of Threads + 批处理色调映射线程数量 + + + + General + 通用 + + + + Quality: + 质量: + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Quality (interpolation)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the demosaicing RAW images decoding interpolation method. A demosaicing algorithm is a digital image process used to interpolate a complete image from the partial raw data received from the color-filtered image sensor internal to many digital cameras in form of a matrix of colored pixels. Also known as CFA interpolation or color reconstruction, another common spelling is demosaicing. There are 4 methods to demosaicing RAW images:</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Bilinear</span>: use high-speed but low-quality bilinear interpolation (default - for slow computer). In this method, the red value of a non-red pixel is computed as the average of the adjacent red pixels, and similar for blue and green.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">VNG</span>: use Variable Number of Gradients interpolation. This method computes gradients near the pixel of interest and uses the lower gradients (representing smoother and more similar parts of the image) to make an estimate.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">PPG</span>: use Patterned Pixel Grouping interpolation. Pixel Grouping uses assumptions about natural scenery in making estimates. It has fewer color artifacts on natural images than the Variable Number of Gradients method.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">AHD</span>: use Adaptive Homogeneity-Directed interpolation. This method selects the direction of interpolation so as to maximize a homogeneity metric, thus typically minimizing color artifacts.</p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Quality (interpolation)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the demosaicing RAW images decoding interpolation method. A demosaicing algorithm is a digital image process used to interpolate a complete image from the partial raw data received from the color-filtered image sensor internal to many digital cameras in form of a matrix of colored pixels. Also known as CFA interpolation or color reconstruction, another common spelling is demosaicing. There are 4 methods to demosaicing RAW images:</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Bilinear</span>: use high-speed but low-quality bilinear interpolation (default - for slow computer). In this method, the red value of a non-red pixel is computed as the average of the adjacent red pixels, and similar for blue and green.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">VNG</span>: use Variable Number of Gradients interpolation. This method computes gradients near the pixel of interest and uses the lower gradients (representing smoother and more similar parts of the image) to make an estimate.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">PPG</span>: use Patterned Pixel Grouping interpolation. Pixel Grouping uses assumptions about natural scenery in making estimates. It has fewer color artifacts on natural images than the Variable Number of Gradients method.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">AHD</span>: use Adaptive Homogeneity-Directed interpolation. This method selects the direction of interpolation so as to maximize a homogeneity metric, thus typically minimizing color artifacts.</p></body></html> + + + + Bilinear + 双线性 + + + + VNG + VNG + + + + PPG + PPG + + + + AHD + AHD + + + + + + + + + + + + + + + + ... + ... + + + + Median: + 中位数: + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Median Filter</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set here the passes used by median filter applied after interpolation to Red-Green and Blue-Green channels.</p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Median Filter</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set here the passes used by median filter applied after interpolation to Red-Green and Blue-Green channels.</p></body></html> + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Do not stretch or rotate pixels</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">For Fuji Super CCD cameras, show the image tilted 45 degrees. For cameras with non-square pixels, do not stretch the image to its correct aspect ratio. In any case, this option guarantees that each output pixel corresponds to one RAW pixel.</p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Do not stretch or rotate pixels</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">For Fuji Super CCD cameras, show the image tilted 45 degrees. For cameras with non-square pixels, do not stretch the image to its correct aspect ratio. In any case, this option guarantees that each output pixel corresponds to one RAW pixel.</p></body></html> + + + + Do not stretch or rotate pixels + 不要拉伸或者旋转像素 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Interpolate RGB as four colors</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The default is to assume that all green pixels are the same. If even-row green pixels are more sensitive to ultraviolet light than odd-row this difference causes a mesh pattern in the output; using this option solves this problem with minimal loss of detail.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">To resume, this option blurs the image a little, but it eliminates false 2x2 mesh patterns with VNG quality method or mazes with AHD quality method.</p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Interpolate RGB as four colors</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The default is to assume that all green pixels are the same. If even-row green pixels are more sensitive to ultraviolet light than odd-row this difference causes a mesh pattern in the output; using this option solves this problem with minimal loss of detail.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">To resume, this option blurs the image a little, but it eliminates false 2x2 mesh patterns with VNG quality method or mazes with AHD quality method.</p></body></html> + + + + Interpolate RGB using 4 colours + 使用四种颜色差值RGB + + + + White Balance + 白平衡 + + + + Method + 方法 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">White Balance Method</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Configure the raw white balance :</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Default D65</span>: Use a standard daylight D65 white balance (dcraw defaults)</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Camera</span>: Use the white balance specified by the camera. If not available, reverts to default neutral white balance</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Automatic</span>: Calculates an automatic white balance averaging the entire image</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Manual</span>: Set a custom temperature and green level values</p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">White Balance Method</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Configure the raw white balance :</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Default D65</span>: Use a standard daylight D65 white balance (dcraw defaults)</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Camera</span>: Use the white balance specified by the camera. If not available, reverts to default neutral white balance</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Automatic</span>: Calculates an automatic white balance averaging the entire image</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Manual</span>: Set a custom temperature and green level values</p></body></html> + + + + Predefined D65 + 预定义的D65 + + + + + Camera + 摄像头 + + + + Auto + 自动 + + + + Manual + 手动 + + + + Temperature (Kelvin) + 温度(开尔文) + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Temperature</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set here the color temperature in Kelvin.</p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Temperature</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set here the color temperature in Kelvin.</p></body></html> + + + + Green + 绿色 + + + + Set here the green component to set magenta color cast removal level + 在这里设置绿色成分来设置洋红色色偏去除水平 + + + + Highlights + 突出强调 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Highlights</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the highlight clipping method:</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Solid white</span>: clip all highlights to solid white</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Unclip</span>: leave highlights unclipped in various shades of pink</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Blend</span>: Blend clipped and unclipped values together for a gradual fade to white</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Rebuild</span>: reconstruct highlights using a level value</p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Highlights</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the highlight clipping method:</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Solid white</span>: clip all highlights to solid white</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Unclip</span>: leave highlights unclipped in various shades of pink</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Blend</span>: Blend clipped and unclipped values together for a gradual fade to white</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Rebuild</span>: reconstruct highlights using a level value</p></body></html> + + + + Solid White + 纯白 + + + + Do not transform + 不要变换 + + + + Blend + 混合 + + + + Reconstruct + 重建 + + + + Level + 水平 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Level</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Specify the reconstruct highlight level. Low values favor whites and high values favor colors.</p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Level</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Specify the reconstruct highlight level. Low values favor whites and high values favor colors.</p></body></html> + + + + Correct false colors in highlights + 更正突出标注的错误颜色 + + + + Auto Brightness + 自动亮度 + + + + Brightness + 亮度 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Brighness</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Specify the brightness level of output image. The default value is 1.0</p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Brighness</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Specify the brightness level of output image. The default value is 1.0</p></body></html> + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Black point</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Use a specific black point value to decode RAW pictures. If you set this option to off, the Black Point value will be automatically computed.</p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Black point</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Use a specific black point value to decode RAW pictures. If you set this option to off, the Black Point value will be automatically computed.</p></body></html> + + + + Black + 黑色 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Black point value</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Specify specific black point value of the output image.</p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Black point value</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Specify specific black point value of the output image.</p></body></html> + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">White point</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Use a specific white point value to decode RAW pictures. If you set this option to off, the White Point value will be automatically computed.</p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">White point</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Use a specific white point value to decode RAW pictures. If you set this option to off, the White Point value will be automatically computed.</p></body></html> + + + + Saturation + 饱和度 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">White point value</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Specify specific white point value of the output image.</p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">White point value</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Specify specific white point value of the output image.</p></body></html> + + + + NR and CA Correction + NR和CA矫正 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Enable Noise Reduction</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Use wavelets to erase noise while preserving real detail.</p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Enable Noise Reduction</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Use wavelets to erase noise while preserving real detail.</p></body></html> + + + + Enable noise reduction + 启用降噪 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Threshold</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set here the noise reduction threshold value to use.</p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Threshold</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set here the noise reduction threshold value to use.</p></body></html> + + + + Threshold: + 阀值: + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Enable Chromatic Aberration correction</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Enlarge the raw red and blue layers by the given factors, typically 0.999 to 1.001, to correct chromatic aberration.</p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Enable Chromatic Aberration correction</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Enlarge the raw red and blue layers by the given factors, typically 0.999 to 1.001, to correct chromatic aberration.</p></body></html> + + + + Enable Chromatic Aberration correction + 启用色差矫正 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Red multiplier</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set here the magnification factor of the red layer</p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Red multiplier</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set here the magnification factor of the red layer</p></body></html> + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Blue multiplier</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set here the magnification factor of the blue layer</p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Blue multiplier</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set here the magnification factor of the blue layer</p></body></html> + + + + Red Component + 红色分量 + + + + Blue Component + 蓝色分量 + + + + Monitor + 监视器 + + + + Monitor Profile + 监视器配置文件 + + + + + + Browse... + 浏览... + + + + Camera profile + 摄像头配置文件 + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Camera Profile</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the input color space used to decode RAW data.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">None</span>: no input color profile is used during RAW decoding.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Embedded</span>: use embedded color profile from RAW file if exist.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom input color space profile.</p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Camera Profile</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the input color space used to decode RAW data.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">None</span>: no input color profile is used during RAW decoding.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Embedded</span>: use embedded color profile from RAW file if exist.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom input color space profile.</p></body></html> + + + None + + + + Built in + 内置 + + + Custom + 自定义 + + + + Printer + 打印机 + + + + Printer profile + 打印机配置文件 + + + + align_image_stack command line arguments + 图像对齐堆栈命令行参数 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Read </span><span style=" font-family:'Sans Serif'; font-style:italic;">Help &gt; Contents &gt; Setting up Luminance &gt; External tools</span><span style=" font-family:'Sans Serif';"> to find out more about align_image_stack command line arguments</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Read </span><span style=" font-family:'Sans Serif'; font-style:italic;">Help &gt; Contents &gt; Setting up Luminance &gt; External tools</span><span style=" font-family:'Sans Serif';"> to find out more about align_image_stack command line arguments</span></p></body></html> + + + + &Cancel + &取消 + + + + &OK + &确定 + + + + Choose a directory + 选择一个目录 + + + + + + Open ICC Profile + 打开ICC配置文件 + + + + Color profile (*.icc *.ICC *.icm *.ICM) + + + + + + Color profile (*.icc) + 颜色配置文件 (*.icc) + + + + PreviewPanel + + Form + Form + + + + Preview + 预览 + + + + Mantiuk '06 + Mantiuk '06 + + + + Mantiuk '08 + Mantiuk '08 + + + + Fattal + Fattal + + + + Drago + Drago + + + + Durand + Durand + + + + Reinhard '02 + Reinhard '02 + + + + Reinhard '05 + Reinhard '05 + + + + Ashikhmin + Ashikhmin + + + + Pattanaik + Pattanaik + + + + ProjectionsDialog + + + Projective Transformation + 投射变换 + + + + Projections + 投射 + + + + Source Projection: + 源投射: + + + + + Polar + Polar + + + + + Angular + 角的 + + + + + Cylindrical + 圆柱的 + + + + + Mirror Ball + 镜像球 + + + + Destination Projection: + 目标投射: + + + + Angles: + 角度: + + + + + + + ° + ° + + + + Bilinear Interpolation + 双线性插值 + + + + Oversample factor: + 过采样因子: + + + + Rotation (degrees) + 旋转角(度) + + + + Yaw: + 偏航角: + + + + Pitch: + 俯仰角: + + + + Roll: + 滚转角: + + + + &Cancel + &取消 + + + + &OK + &确定 + + + + QApplication + + + ERROR: cannot load Tone Mapping Setting file: + 错误: 无法载入色调映射设置文件: + + + + ERROR: File too old, cannot parse Tone Mapping Setting file: + 错误: 文件太老,无法解析色调映射设置文件: + + + + ERROR: cannot parse Tone Mapping Setting file: + 错误: 无法解析色调映射文件: + + + + QObject + + + + Error Opening RAW File + 打开RAW文件错误 + + + + Error Unpacking RAW File + RAW文件解包错误 + + + + Error Processing RAW File + 处理RAW文件错误 + + + + Memory Error in processing RAW File + 处理RAW文件内存错误 + + + + Error Creating PFS Frame + 创建PFS框架错误 + + + + Cannot convert %1 to a float + 无法转换 %1 为浮点数 + + + + Cannot convert %1 to an integer + 无法转换 %1 为整数 + + + + Input file %1 + 输入文件 %1 + + + + Running in HDR-creation mode. + HDR生成模式运行. + + + + Running in Load-HDR mode. + 载入HDR模式运行. + + + + Temporary directory: %1 + 临时目录: %1 + + + + Using %1 threads. + 正在使用%1线程. + + + + Loading file %1 + 载入文件%1 + + + + Successfully loaded file %1. + 成功载入文件%1. + + + + Aborting... + 终止... + + + + Cannot find Qt's JPEG Plugin...<br>Please unzip the DLL package with the option "use folder names" activated. + 无法找到Qt的JPEG插件...<br>请解压缩DLL包通过激活"使用文件夹名字"选项. + + + + All LDR formats + 所有LDR格式 + + + + Save the LDR image as... + LDR图像另存为... + + + + All HDR formats + 所有的HDR格式 + + + + Save the HDR image as... + HDR图像另存为... + + + + Save as... + 另存为... + + + + Option -v -a... + 选项 -v -a... + + + + LuminanceHDR requires align_image_stack to be executed with the "-v -a aligned_" options. Command line options have been corrected. + LuminanceHDR要求与"-v -a aligned_"选项一起执行图像对齐堆栈。命令行选项已更正. + + + + + + + Warning + 警告 + + + + I cannot open monitor profile. Please select a different one. + 我打不开监视器配置文件。请选择另一个。 + + + + I cannot open printer profile. Please select a different one. + 我打不开打印机配置文件。请选择另一个。 + + + + Please select a printer profile . + 请选择一个打印机配置文件。 + + + + I cannot perform the color transform. Please select a different monitor profile. + 我无法执行颜色转换。请选择一个不同的监视器配置文件. + + + + ResizeDialog + + + Scale Image + 缩放图像 + + + + Hdr Image Size + HDR图像大小 + + + + Width: + 宽度: + + + + Switch between pixels or percentage + 在像素和 百分比之间转换 + + + + Pixels + 像素 + + + + Percent + 百分比 + + + + Height: + 高度: + + + + Result size + 结果图像大小 + + + + Restore original size + 复原原始大小 + + + + &Reset + &重设 + + + + &Cancel + &取消 + + + + &Scale + &比例 + + + + SavedParametersDialog + + + Saved Parameters + 以保存的参数 + + + + + Comment + 评论 + + + + TM Operator + TM运算符 + + + + Simple + 简单 + + + + Equation 2 + 方程2 + + + + Local Contrast Threshold + 本地对比度阀值 + + + + Bias + 偏置 + + + + Spatial Kernel Sigma + 空间内核Sigma + + + + Range Kernel Sigma + 范围内核Sigma + + + + Base Contrast + 基本对比度 + + + + Alpha + Alpha + + + + Beta + Beta + + + + + Color Saturation + 颜色饱和度 + + + + Noise Reduction + 降噪 + + + + Old Fattal + 旧Fattal + + + + Contrast Equalization + 对比均衡 + + + + Contrast Factor + 对比度因子 + + + + Saturation Factor + 饱和度因子 + + + + Detail Factor + 详情因子 + + + + Contrast Enhancement + 对比度加强 + + + + Luminance Level + 亮度水平 + + + + Manual Luminance Level + 手动亮度水平 + + + + Cone and Rod based on Luminance + 基于亮度锥和视杆 + + + + Local Tonemapping + 本地色调映射 + + + + Cone Level + 圆锥水平 + + + + Rod Level + 杆水平 + + + + Multiplier + 乘数 + + + + Use Scales + 使用比例尺 + + + + Key Value + 关键值 + + + + Phi Value + Phi值 + + + + Range + 范围 + + + + Lower Scale + 较低的比例 + + + + Upper Scale + 较高的比例 + + + + Brightness + 亮度 + + + + Chromatic Adaptation + 色彩适应 + + + + Light Adaptation + 光线适应 + + + + Pre-gamma + Pre-gamma + + + + SavingParameters + + + Saving Parameters + 正在保存参数 + + + + Enter a short comment for the saved parameters: + 给已保存的参数输入一个简短的批注: + + + + SplashLuminance + + + Luminance HDR - Make a Donation + Luminance HDR - 请捐款 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Droid Sans'; font-size:8pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-weight:600; color:#000000;">Luminance HDR</span><span style=" font-family:'Sans Serif'; color:#000000;"> is open-source software and its development required hundreds of hours of work.<br /><br />If you like it, if you use it in your work and you would like to see it gradually improved,<br />please support its authors by making a donation.<br /><br />Would you like to make a donation for Luminance HDR now?</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Droid Sans'; font-size:8pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-weight:600; color:#000000;">Luminance HDR</span><span style=" font-family:'Sans Serif'; color:#000000;">是一个开源软件,它的开发过程包含了数百小时的工作.<br /><br />如果你喜欢他,如果你在工作工程中使用它,如果你想看到它逐渐地被改善,<br />请通过捐款支持它的作者们.<br /><br />你现在想给Luminance HDR捐款吗?</span></p></body></html> + + + + Yes, I'd love to! + 是的,我想! + + + + Ask me again later + 过后再询问我 + + + + No, Stop bothering me! + 不,请不要再问我这个问题! + + + + TMOProgressIndicator + + + Abort computation + 终止计算 + + + + TonemappingPanel + + + Tone mapping operators and their options + 色调映射运算符以及他们的选项 + + + + Start tonemapping (CTRL+T) + 开始色调映射(CTRL+T) + + + + Use current parameters above (pregamma and tone mapping operator) to compute an LDR image + 使用上面的当前参数 (pregamma和色调映射运算符)来运算LDR图像 + + + + &Tonemap + &色调映射 + + + + Ctrl+T + Ctrl+T + + + + Update current LDR + 更新当前LDR + + + + Tonemap + 色调映射 + + + + Mantiuk '06 + Mantiuk '06 + + + + Mantiuk '08 + Mantiuk '08 + + + + Fattal + Fattal + + + + Drago + Drago + + + + Durand + Durand + + + + Reinhard '02 + Reinhard '02 + + + + Reinhard '05 + Reinhard '05 + + + + Ashikhmin + Ashikhmin + + + + Pattanaik + Pattanaik + + + + Operator + 运算符 + + + + Contrast Factor + 对比度因子 + + + + Saturation Factor + 饱和度因子 + + + + Detail Factor + 详情因子 + + + + Contrast Equalization + 对比均衡 + + + + Predefined Display + 预定义显示 + + + + Lcd Office + 液晶显示办公室 + + + + Lcd + 液晶显示 + + + + Lcd Bright + 液晶显示亮度 + + + + CRT + 荧光屏显示 + + + + + Color Saturation + 色彩饱和度 + + + + Contrast Enhancement + 对比度加强 + + + + Enable +Luminace Level + 启用 +亮度水平 + + + + Luminance Level + 亮度水平 + + + + Alpha + Alpha + + + + Beta + Beta + + + + Noise Reduction + 降噪 + + + Version Pre 1.8.4 + 版本 Pre 1.8.4 + + + + Version 2.3.0 + + + + + Bias + 偏置 + + + + Spatial Kernel Sigma + 空间内核Sigma + + + + Range Kernel Sigma + 范围内核Sigma + + + + Base Contrast + 基本对比度 + + + + Key Value + 关键值 + + + + Phi + Phi + + + + Use Scales + 使用比例尺 + + + + Range + 范围 + + + + Lower Scale + 较低比例 + + + + Upper Scale + 较高比例 + + + + Brightness + 亮度 + + + + Chromatic Adaptation + 色彩适应 + + + + Light Adaptation + 光适应 + + + + Local Contrast Threshold + 本地对比度阀值 + + + + Simple + 简单 + + + + Equation Number + 方程号 + + + + Eqn 2 + Equ 2 + + + + Eqn 4 + Eqn 4 + + + + Multiplier + 乘数 + + + + Local Tone Mapping + 本地色调映射 + + + + Auto Cone/Rod + 自动锥/杆 + + + + Cone Level + 锥水平 + + + + Rod Level + 杆水平 + + + + Restore operator's default values + 恢复运算符默认值 + + + + Restore + 复原 + + + + Previous applied settings + 前一个应用设置 + + + + Previous + 前一个 + + + + Next applied settings + 下一个应用设置 + + + + Next + 下一个 + + + + Here you can load and save a tone mapping settings file.<br>You can also apply the contents of the currently loaded settings file. + 这里你可以载入和保存一个色调映射设置文件. <br>你还可以应用当前已载入的设置文件的内容. + + + + Tone Mapping Settings + 色调映射文件设置 + + + + Save current parameters to a text file + 保存当前参数到一个text文件 + + + + Save current parameters (pregamma and TMO) to a text file. + 保存当前参数(pregamma和TMO)到一个text文件. + + + + &Save to File + &保存到文件 + + + + Load an existing text file containing pregamma and TMO settings + 载入一个已存在的包含pregamma和TMO设置的text文件 + + + + Load an existing text file containing pregamma and TMO settings. + 载入一个已存在的包含pregamma和TMO设置的text文件. + + + + &Load from File + &从文件载入 + + + + Save current parameters + 保存当前参数 + + + + + + ... + ... + + + + Load saved parameters + 加载已保存的参数 + + + + Load parameters by comment + 通过批注载入参数 + + + + Here you can apply a gamma correction to the HDR.<br>The gamma correction will applied before tone mapping. + 这里你可以对HDR应用一次gamma更正.<br>gamma更正将在色调映射之前应用. + + + + Process + 处理 + + + + &Result Size + &结果大小 + + + + + Gamma applied before tonemapping + 色调映射之前应用Gamma + + + + Pre-gamma + Pre-gamma + + + + Restore pregamma's default value (1) + 恢复pregamma的默认值 (1) + + + + Size of the resulting LDR image + 结果LDR图像大小 + + + + Here you can choose the size of the resulting LDR image. + 这里你可以选择最后LDR图像的大小. + + + + Set Custom Output Size + 设置自定义输出文件大小 + + + + Clicking this button you will be able to insert a <i>width</i> value for the size of the resulting LDR image.<br>After pressing Enter (or Return) a height value will be automatically computed and the new size added to the list. + 点击这个按钮,你可以给最终结果LDR图像插入一个 <i> 宽度 </i>值.<br>点击Enter(或者Return)后会自动计算高度值,并且新的大小会被添加到清单中. + + + + TM Database Problem + TM数据库问题 + + + + The database used for saving TM parameters cannot be opened. +Error: %1 + 无法打开用以保存TM参数的数据库. +错误: %1 + + + + Load a tonemapping settings text file... + 载入一个色调映射设置text文件... + + + + + LuminanceHDR tonemapping settings text file (*.txt) + LuminanceHDR色调映射设置text文件 (*.txt) + + + + + + + Aborting... + 终止... + + + + File is not readable (check existence, permissions,...) + 文件不可读(检查是否存在,权限) + + + + Save tonemapping settings text file to... + 保存色调映射设置text文件到... + + + + File is not writable (check permissions, path...) + 文件不可写(检查权限,路径...) + + + + File is not readable (check permissions, path...) + 文件不可读(检查权限,路径...) + + + + Error: The tone mapping settings file format has changed. This (old) file cannot be used with this version of LuminanceHDR. Create a new one. + 错误:色调映射设置文件格式已改变. 这(旧)文件不能被用于这个版本的LuminanceHDR.创建一个新的. + + + + Custom LDR size + 自定义LDR大小 + + + + Enter the width of the new size: + 输入新大小的宽度: + + + + TonemappingWarningDialog + + Attention! + 注意! + + + Ask again + 再次询问 + + + This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. + +Do you want to continue? + 色调映射运算符取决于输入图像的大小. 在整个图像上应用这个运算符很可能生成一个不一样的图像。 + +你想继续吗? + + + + Fattal Warning + Fattal 警告 + + + + This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image. + +Do you want to continue? + 色调映射运算符取决于输入图像的大小. 在整个图像上应用这个运算符很可能生成一个不一样的图像。 + +你想继续吗? + + + + TransplantExifDialog + + + Copy Exif data + 复制Exif数据 + + + + From + 来自 + + + + + Append files to the list + 附加文件到列表 + + + + + Remove selected file(s) from the list + 从列表中删除选中文件 + + + + + Move up selected file(s) + 上移选中文件 + + + + + Move down selected file(s) + 下移选中文件 + + + + To + + + + + Log + 日志 + + + + Exif operations report + Exif操作报告 + + + + &Show only: + &只显示: + + + + Filter messages based on severity + 根据严重性过滤消息 + + + + All messages + 所有消息 + + + + Errors only + 仅错误 + + + + &Filter log messages: + &过滤日志消息: + + + + Clear filter text + 清楚过滤器文字 + + + + Keep existing Exif tags in destination file + 在目的文件中保留当前存在Exif标签 + + + + &Cancel + &取消 + + + + &Start + &开始 + + + + + All Supported formats + 所有支持的格式 + + + + + Select the input images + 选择输入图像 + + + + &Done + &完成 + + + + UMessageBox + + + %1 License document not found, you can find it online: %2here%3 + %2 and %3 are html tags + 2% 和%3 是html标签 + %1未找到证书文件,你可以在线找到: %2 这里 %3 + + + + Donation + 捐款 + + + + Would you like to donate? + 你想要捐款吗? + + + + Yes, I'd love to! + 是的,我想! + + + + Stop Bothering Me + 不要再提醒我 + + + + Remind me later + 过后再提醒我 + + + Binary files /tmp/OixCUJjOIG/luminance-2.2.1/i18n-qt/qt_cs.qm and /tmp/waD_RZYqTx/luminance-2.3.0/i18n-qt/qt_cs.qm differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/i18n-qt/qt_de.qm and /tmp/waD_RZYqTx/luminance-2.3.0/i18n-qt/qt_de.qm differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/i18n-qt/qt_es.qm and /tmp/waD_RZYqTx/luminance-2.3.0/i18n-qt/qt_es.qm differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/i18n-qt/qt_fi.qm and /tmp/waD_RZYqTx/luminance-2.3.0/i18n-qt/qt_fi.qm differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/i18n-qt/qt_fr.qm and /tmp/waD_RZYqTx/luminance-2.3.0/i18n-qt/qt_fr.qm differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/i18n-qt/qt_hu.qm and /tmp/waD_RZYqTx/luminance-2.3.0/i18n-qt/qt_hu.qm differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/i18n-qt/qt_it.qm and /tmp/waD_RZYqTx/luminance-2.3.0/i18n-qt/qt_it.qm differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/i18n-qt/qt_pl.qm and /tmp/waD_RZYqTx/luminance-2.3.0/i18n-qt/qt_pl.qm differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/i18n-qt/qt_ro.qm and /tmp/waD_RZYqTx/luminance-2.3.0/i18n-qt/qt_ro.qm differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/i18n-qt/qt_ru.qm and /tmp/waD_RZYqTx/luminance-2.3.0/i18n-qt/qt_ru.qm differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/i18n-qt/qt_tr.qm and /tmp/waD_RZYqTx/luminance-2.3.0/i18n-qt/qt_tr.qm differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/i18n-qt/qt_zh.qm and /tmp/waD_RZYqTx/luminance-2.3.0/i18n-qt/qt_zh.qm differ diff -Nru luminance-2.2.1/icons.qrc luminance-2.3.0/icons.qrc --- luminance-2.2.1/icons.qrc 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/icons.qrc 2012-07-01 09:10:50.000000000 +0000 @@ -58,6 +58,15 @@ images/list-add.png images/list-remove.png images/edit-clear-list.png + images/cms.png + images/camera-photo.png + images/video-television.png + images/printer.png + images/gamut_48x48.png + images/document-print-preview.png + images/vcs_add.png + images/vcs_commit.png + images/vcs_update.png icons/help/document-print.png @@ -79,4 +88,22 @@ images/camera_on_tripod.png images/stack.png + + images/CHIN0001.PNG + images/CZEC0001.PNG + images/FINL0001.PNG + images/FRAN0001.PNG + images/GERM0001.PNG + images/HUNG0001.PNG + images/INDA0001.PNG + images/INDN0001.PNG + images/ITAL0001.PNG + images/POLA0001.PNG + images/RMNA0001.PNG + images/RUSS0001.PNG + images/SPAN0001.PNG + images/TURK0001.PNG + images/UNKG0001.PNG + images/SVKA0001.PNG + Binary files /tmp/OixCUJjOIG/luminance-2.2.1/images/camera-photo.png and /tmp/waD_RZYqTx/luminance-2.3.0/images/camera-photo.png differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/images/CHIN0001.PNG and /tmp/waD_RZYqTx/luminance-2.3.0/images/CHIN0001.PNG differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/images/cms.png and /tmp/waD_RZYqTx/luminance-2.3.0/images/cms.png differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/images/CZEC0001.PNG and /tmp/waD_RZYqTx/luminance-2.3.0/images/CZEC0001.PNG differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/images/document-print-preview.png and /tmp/waD_RZYqTx/luminance-2.3.0/images/document-print-preview.png differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/images/FINL0001.PNG and /tmp/waD_RZYqTx/luminance-2.3.0/images/FINL0001.PNG differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/images/FRAN0001.PNG and /tmp/waD_RZYqTx/luminance-2.3.0/images/FRAN0001.PNG differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/images/gamut_48x48.png and /tmp/waD_RZYqTx/luminance-2.3.0/images/gamut_48x48.png differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/images/GERM0001.PNG and /tmp/waD_RZYqTx/luminance-2.3.0/images/GERM0001.PNG differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/images/HUNG0001.PNG and /tmp/waD_RZYqTx/luminance-2.3.0/images/HUNG0001.PNG differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/images/INDA0001.PNG and /tmp/waD_RZYqTx/luminance-2.3.0/images/INDA0001.PNG differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/images/INDN0001.PNG and /tmp/waD_RZYqTx/luminance-2.3.0/images/INDN0001.PNG differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/images/ITAL0001.PNG and /tmp/waD_RZYqTx/luminance-2.3.0/images/ITAL0001.PNG differ diff -Nru luminance-2.2.1/images/luminance_ico.rc luminance-2.3.0/images/luminance_ico.rc --- luminance-2.2.1/images/luminance_ico.rc 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/images/luminance_ico.rc 2012-07-01 09:10:50.000000000 +0000 @@ -1,12 +1,11 @@ -#define LUMINANCE_VER 2,2,1 -#define LUMINANCE_VER_STR "2.2.1\0" +#include "Common/config.h" -#define PRODUCTNAME_STR "Luminance HDR\0" +#define PRODUCTNAME_STR "Luminance HDR" IDI_ICON1 ICON DISCARDABLE "luminance.ico" //See for more information MSDN: http://msdn.microsoft.com/en-us/library/aa381049(VS.85).aspx 1 VERSIONINFO -FILEVERSION LUMINANCE_VER,0 -PRODUCTVERSION LUMINANCE_VER,0 +FILEVERSION LUMINANCEVERSION_RES,0 +PRODUCTVERSION LUMINANCEVERSION_RES,0 //these 2 do not seem to work with gnu's windres (v 2.17.50) //FILEOS VOS_NT_WINDOWS32 //FILETYPE VFT_APP @@ -16,15 +15,19 @@ BLOCK "040904E4" BEGIN VALUE "ProductName", PRODUCTNAME_STR - VALUE "FileVersion", LUMINANCE_VER_STR - VALUE "FileDescription", "Open Source HDR Imaging Workflow tool\0" - VALUE "CompanyName", "http://qtpfsgui.sourceforge.net\0" + VALUE "FileVersion", LUMINANCEVERSION + VALUE "FileDescription", "Open Source HDR Imaging Workflow tool" + VALUE "CompanyName", "http://qtpfsgui.sourceforge.net" VALUE "InternalName", PRODUCTNAME_STR - VALUE "ProductVersion", LUMINANCE_VER_STR - VALUE "LegalCopyright", "GPL v2.0\0" + VALUE "ProductVersion", LUMINANCEVERSION + VALUE "LegalCopyright", "GPL v2.0" VALUE "Comments", "For the full text version of the GPL please read http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt" - VALUE "OriginalFilename", "luminance-hdr.exe\0" + //VALUE "OriginalFilename", "luminance-hdr.exe" //VALUE "LegalTrademarks", VER_LEGALTRADEMARKS1_STR END END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0, 1200 + END END Binary files /tmp/OixCUJjOIG/luminance-2.2.1/images/POLA0001.PNG and /tmp/waD_RZYqTx/luminance-2.3.0/images/POLA0001.PNG differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/images/printer.png and /tmp/waD_RZYqTx/luminance-2.3.0/images/printer.png differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/images/RMNA0001.PNG and /tmp/waD_RZYqTx/luminance-2.3.0/images/RMNA0001.PNG differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/images/RUSS0001.PNG and /tmp/waD_RZYqTx/luminance-2.3.0/images/RUSS0001.PNG differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/images/SPAN0001.PNG and /tmp/waD_RZYqTx/luminance-2.3.0/images/SPAN0001.PNG differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/images/SVKA0001.PNG and /tmp/waD_RZYqTx/luminance-2.3.0/images/SVKA0001.PNG differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/images/TURK0001.PNG and /tmp/waD_RZYqTx/luminance-2.3.0/images/TURK0001.PNG differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/images/UNKG0001.PNG and /tmp/waD_RZYqTx/luminance-2.3.0/images/UNKG0001.PNG differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/images/vcs_add.png and /tmp/waD_RZYqTx/luminance-2.3.0/images/vcs_add.png differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/images/vcs_commit.png and /tmp/waD_RZYqTx/luminance-2.3.0/images/vcs_commit.png differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/images/vcs_update.png and /tmp/waD_RZYqTx/luminance-2.3.0/images/vcs_update.png differ Binary files /tmp/OixCUJjOIG/luminance-2.2.1/images/video-television.png and /tmp/waD_RZYqTx/luminance-2.3.0/images/video-television.png differ diff -Nru luminance-2.2.1/luminance-hdr.desktop luminance-2.3.0/luminance-hdr.desktop --- luminance-2.2.1/luminance-hdr.desktop 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/luminance-hdr.desktop 2012-07-01 09:10:50.000000000 +0000 @@ -17,7 +17,6 @@ Exec=luminance-hdr --gui %F Icon=luminance-hdr MimeType=image/x-dcraw;image/tiff;image/jpeg;image/png;image/x-exr;image/x-hdr;image/x-pfs; -Path= StartupNotify=true StartupWMClass=luminance-hdr Terminal=false diff -Nru luminance-2.2.1/src/arch/malloc.h luminance-2.3.0/src/arch/malloc.h --- luminance-2.2.1/src/arch/malloc.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/arch/malloc.h 2012-07-01 09:10:50.000000000 +0000 @@ -25,5 +25,11 @@ #if defined(_MSC_VER) #include #else +#if defined(__i386__) || defined(__x86_64__) #include +#else + #define _mm_malloc(a,b) malloc(a) + #define _mm_free(a) free(a) + #include +#endif #endif diff -Nru luminance-2.2.1/src/arch/minmax.h luminance-2.3.0/src/arch/minmax.h --- luminance-2.2.1/src/arch/minmax.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/arch/minmax.h 2012-07-01 09:10:50.000000000 +0000 @@ -22,20 +22,20 @@ * */ - #ifndef _ARCH_MINMAX_H -#define _ARCH_MINMAX_H +#ifndef ARCH_MINMAX_H +#define ARCH_MINMAX_H - #if defined(_MSC_VER) - #include - #else - #ifndef max - #define max(a,b) (((a) > (b)) ? (a) : (b)) - #endif - - #ifndef min - #define min(a,b) (((a) < (b)) ? (a) : (b)) - #endif - #endif +#if defined(_MSC_VER) +#include +#else +#ifndef max +#define max(a,b) (((a) > (b)) ? (a) : (b)) +#endif +#ifndef min +#define min(a,b) (((a) < (b)) ? (a) : (b)) #endif +#endif + +#endif // ARCH_MINMAX_H diff -Nru luminance-2.2.1/src/arch/msvc/math.h luminance-2.3.0/src/arch/msvc/math.h --- luminance-2.2.1/src/arch/msvc/math.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/arch/msvc/math.h 2012-07-01 09:10:50.000000000 +0000 @@ -22,16 +22,16 @@ * */ -#ifndef _MSVC_MATH_H -#define _MSVC_MATH_H +#ifndef MSVC_MATH_H +#define MSVC_MATH_H #define _USE_MATH_DEFINES #include // re-include here #include // for _finite #define exp2f(x) (powf(2.0f, x)) -#define log2(x) (log(x) / 0.693147180559945309417) -#define log2f(x) (logf(x) / 0.693147180559945309417) +#define log2(x) (log(x) / M_LN2) +#define log2f(x) (logf(x) / M_LN2) #define lround(d) ((long)(d>0 ? d+0.5 : ceil(d-0.5))) #define round(d) ((d>0) ? int(d+0.5) : int(d-0.5)) @@ -45,6 +45,9 @@ #define fmin min #define fminf min #pragma warning (disable:4996) -#define snprintf sprintf_s +#ifndef snprintf + #define snprintf sprintf_s #endif + +#endif // MSVC_MATH_H diff -Nru luminance-2.2.1/src/arch/string.h luminance-2.3.0/src/arch/string.h --- luminance-2.2.1/src/arch/string.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/arch/string.h 2012-07-01 09:10:50.000000000 +0000 @@ -22,11 +22,11 @@ * */ - #ifndef _ARCH_STRING_H -#define _ARCH_STRING_H +#ifndef ARCH_STRING_H +#define ARCH_STRING_H - #if defined(_MSC_VER) - #define strcasecmp _stricmp - #endif +#if defined(_MSC_VER) +#define strcasecmp _stricmp +#endif -#endif \ No newline at end of file +#endif // ARCH_STRING_H diff -Nru luminance-2.2.1/src/BatchHDR/BatchHDRDialog.cpp luminance-2.3.0/src/BatchHDR/BatchHDRDialog.cpp --- luminance-2.2.1/src/BatchHDR/BatchHDRDialog.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/BatchHDR/BatchHDRDialog.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -26,24 +26,30 @@ #include #include #include +#include +#include "arch/math.h" #include "BatchHDR/BatchHDRDialog.h" #include "ui_BatchHDRDialog.h" #include "Libpfs/pfs.h" +#include "Libpfs/domio.h" #include "Core/IOWorker.h" #include "HdrCreation/HdrCreationManager.h" +#include "OsIntegration/osintegration.h" BatchHDRDialog::BatchHDRDialog(QWidget *p): QDialog(p), m_Ui(new Ui::BatchHDRDialog), m_numProcessed(0), + m_processed(0), m_errors(false), + m_loading_error(false), m_abort(false), m_processing(false) { m_Ui->setupUi(this); - m_Ui->closePushButton->hide(); + m_Ui->closeButton->hide(); m_hdrCreationManager = new HdrCreationManager; m_IO_Worker = new IOWorker; @@ -51,20 +57,19 @@ connect(m_Ui->horizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(num_bracketed_changed(int))); connect(m_Ui->spinBox, SIGNAL(valueChanged(int)), this, SLOT(num_bracketed_changed(int))); - connect(m_Ui->inputPushButton, SIGNAL(clicked()), this, SLOT(add_input_directory())); - connect(m_Ui->outputPushButton, SIGNAL(clicked()), this, SLOT(add_output_directory())); - connect(m_Ui->startPushButton, SIGNAL(clicked()), this, SLOT(init_batch_hdr())); - connect(m_Ui->closePushButton, SIGNAL(clicked()), this, SLOT(accept())); - connect(m_Ui->cancelPushButton, SIGNAL(clicked()), this, SLOT(abort())); - connect(m_hdrCreationManager, SIGNAL(finishedLoadingInputFiles(QStringList)), this, SLOT(align(QStringList))); - connect(m_hdrCreationManager, SIGNAL(finishedAligning()), this, SLOT(create_hdr())); + connect(m_hdrCreationManager, SIGNAL(finishedAligning(int)), this, SLOT(create_hdr(int))); connect(m_hdrCreationManager, SIGNAL(errorWhileLoading(QString)), this, SLOT(error_while_loading(QString))); connect(m_hdrCreationManager, SIGNAL(aisDataReady(QByteArray)), this, SLOT(writeAisData(QByteArray))); + connect(m_hdrCreationManager, SIGNAL(processed()), this, SLOT(processed())); m_tempDir = m_luminance_options.getTempDir(); - m_batchHdrInputDir = m_luminance_options.getBatchHdrPathInput(); - m_batchHdrOutputDir = m_luminance_options.getBatchHdrPathOutput(); + m_batchHdrInputDir = m_luminance_options.getBatchHdrPathInput(""); + m_batchHdrOutputDir = m_luminance_options.getBatchHdrPathOutput(""); + + m_Ui->inputLineEdit->setText(m_batchHdrInputDir); + m_Ui->outputLineEdit->setText(m_batchHdrOutputDir); + check_start_button(); } BatchHDRDialog::~BatchHDRDialog() @@ -91,35 +96,19 @@ void BatchHDRDialog::num_bracketed_changed(int value) { qDebug() << "BatchHDRDialog::num_bracketed_changed " << value; - if (value == 1) - { - m_Ui->autoAlignCheckBox->setEnabled(false); - m_Ui->aisRadioButton->setEnabled(false); - m_Ui->MTBRadioButton->setEnabled(false); - } - else - { - m_Ui->autoAlignCheckBox->setEnabled(true); - m_Ui->aisRadioButton->setEnabled(true); - m_Ui->MTBRadioButton->setEnabled(true); - } + m_Ui->autoAlignCheckBox->setEnabled(value > 1); + m_Ui->aisRadioButton->setEnabled(value > 1); + m_Ui->MTBRadioButton->setEnabled(value > 1); } -void BatchHDRDialog::add_input_directory() +void BatchHDRDialog::on_selectInputFolder_clicked() { - QString inputDir = QFileDialog::getExistingDirectory(this, tr("Choose a directory"), m_batchHdrInputDir); + QString inputDir = QFileDialog::getExistingDirectory(this, tr("Choose a source directory"), m_batchHdrInputDir); if (!inputDir.isEmpty()) { m_Ui->inputLineEdit->setText(inputDir); if (!m_Ui->inputLineEdit->text().isEmpty()) { - QDir chosendir(m_Ui->inputLineEdit->text()); - chosendir.setFilter(QDir::Files); - m_bracketed = chosendir.entryList(); - //hack to prepend to this list the path as prefix. - m_bracketed.replaceInStrings(QRegExp("(.+)"), chosendir.path()+"/\\1"); - qDebug() << m_bracketed; - // if the new dir, the one just chosen by the user, is different from the one stored in the settings, // update the settings if (m_batchHdrInputDir != m_Ui->inputLineEdit->text()) @@ -136,9 +125,14 @@ } } +void BatchHDRDialog::on_selectOutputFolder_clicked() +{ + add_output_directory(); +} + void BatchHDRDialog::add_output_directory(QString dir) { - QString outputDir = !dir.isEmpty() ? dir : QFileDialog::getExistingDirectory(this, tr("Choose a directory"), m_batchHdrOutputDir); + QString outputDir = !dir.isEmpty() ? dir : QFileDialog::getExistingDirectory(this, tr("Choose a output directory"), m_batchHdrOutputDir); if (!outputDir.isEmpty()) { m_Ui->outputLineEdit->setText(outputDir); @@ -153,22 +147,71 @@ } } -void BatchHDRDialog::init_batch_hdr() +void BatchHDRDialog::on_startButton_clicked() { if (m_Ui->inputLineEdit->text().isEmpty() || m_Ui->outputLineEdit->text().isEmpty()) return; - m_Ui->startPushButton->setEnabled(false); - m_Ui->progressBar->setMaximum(m_bracketed.count() / m_Ui->spinBox->value()); - m_Ui->textEdit->append(tr("Started processing...")); - // mouse pointer to busy - QApplication::setOverrideCursor(QCursor(Qt::BusyCursor)); - this->batch_hdr(); + if (m_bracketed.count() % m_Ui->spinBox->value() != 0) { + qDebug() << "Total number of pictures must be a multiple of number of bracketed images"; + QMessageBox::warning(0,tr("Warning"), tr("Total number of pictures must be a multiple of number of bracketed images."), QMessageBox::Ok, QMessageBox::NoButton); + return; + } + + // check for empty output-folder + bool foundHDR = false; + QDir chosendir(m_batchHdrOutputDir); + chosendir.setFilter(QDir::Files); + QStringList files = chosendir.entryList(); + + bool doStart = true; + if (!files.empty()) { + foreach(QString file, files) { + if (file.startsWith("hdr_")) + foundHDR = true; + } + if (foundHDR) + doStart = QMessageBox::Yes == QMessageBox::warning(0,tr("Warning"), tr("The chosen output directory contains HDR files. Those files might be overwritten. \n\nContinue?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No); + } + + // process input images + QStringList filters; + filters << "*.jpg" << "*.jpeg" << "*.tiff" << "*.tif" << "*.crw" << "*.cr2" << "*.nef" << "*.dng" << "*.mrw" << "*.orf" << "*.kdc" << "*.dcr" << "*.arw" << "*.raf" << "*.ptx" << "*.pef" << "*.x3f" << "*.raw" << "*.rw2" << "*.sr2" << "*.3fr" << "*.mef" << "*.mos" << "*.erf" << "*.nrw" << "*.srw"; + filters << "*.JPG" << "*.JPEG" << "*.TIFF" << "*.TIF" << "*.CRW" << "*.CR2" << "*.NEF" << "*.DNG" << "*.MRW" << "*.ORF" << "*.KDC" << "*.DCR" << "*.ARW" << "*.RAF" << "*.PTX" << "*.PEF" << "*.X3F" << "*.RAW" << "*.RW2" << "*.SR2" << "*.3FR" << "*.MEF" << "*.MOS" << "*.ERF" << "*.NRW" << "*.SRW"; + + QDir chosenInputDir(m_batchHdrInputDir); + chosenInputDir.setFilter(QDir::Files); + chosenInputDir.setSorting(QDir::Name); + chosenInputDir.setNameFilters(filters); + m_bracketed = chosenInputDir.entryList(); + //hack to prepend to this list the path as prefix. + m_bracketed.replaceInStrings(QRegExp("(.+)"), chosenInputDir.path()+"/\\1"); + qDebug() << m_bracketed; + + if (doStart) { + m_Ui->horizontalSlider->setEnabled(false); + m_Ui->spinBox->setEnabled(false); + m_Ui->profileComboBox->setEnabled(false); + m_Ui->formatComboBox->setEnabled(false); + m_Ui->selectInputFolder->setEnabled(false); + m_Ui->inputLineEdit->setEnabled(false); + m_Ui->selectOutputFolder->setEnabled(false); + m_Ui->outputLineEdit->setEnabled(false); + m_Ui->groupBox->setEnabled(false); + m_Ui->startButton->setEnabled(false); + m_total = m_bracketed.count() / m_Ui->spinBox->value(); + m_Ui->progressBar->setMaximum(m_total); + m_Ui->textEdit->append(tr("Started processing...")); + // mouse pointer to busy + QApplication::setOverrideCursor(QCursor(Qt::BusyCursor)); + batch_hdr(); + } } void BatchHDRDialog::batch_hdr() { m_processing = true; + if (m_abort) { qDebug() << "Aborted"; QApplication::restoreOverrideCursor(); @@ -177,22 +220,24 @@ } if (!m_bracketed.isEmpty()) { + m_Ui->textEdit->append(tr("Creating HDR...")); m_numProcessed++; QStringList toProcess; for (int i = 0; i < m_Ui->spinBox->value(); ++i) { toProcess << m_bracketed.takeFirst(); } - qDebug() << toProcess; + qDebug() << "BatchHDRDialog::batch_hdr() Files to process: " << toProcess; m_hdrCreationManager->setFileList(toProcess); m_hdrCreationManager->loadInputFiles(); } else { - m_Ui->closePushButton->show(); - m_Ui->cancelPushButton->hide(); - m_Ui->startPushButton->hide(); + m_Ui->closeButton->show(); + m_Ui->cancelButton->hide(); + m_Ui->startButton->hide(); m_Ui->progressBar->hide(); + OsIntegration::getInstance().setProgress(-1); QApplication::restoreOverrideCursor(); if (m_errors) m_Ui->textEdit->append(tr("Completed with errors")); @@ -222,7 +267,7 @@ QFile::remove(thumb_name); } m_hdrCreationManager->reset(); - this->batch_hdr(); // try to continue + batch_hdr(); return; } if (m_Ui->autoAlignCheckBox->isChecked()) @@ -234,16 +279,23 @@ m_hdrCreationManager->align_with_mtb(); } else - this->create_hdr(); + create_hdr(0); } -void BatchHDRDialog::create_hdr() +void BatchHDRDialog::create_hdr(int) { - m_Ui->textEdit->append(tr("Creating HDR...")); + qDebug() << "BatchHDRDialog::create_hdr()"; QString suffix = m_Ui->formatComboBox->currentText(); m_hdrCreationManager->chosen_config = predef_confs[m_Ui->profileComboBox->currentIndex()]; pfs::Frame* resultHDR = m_hdrCreationManager->createHdr(false, 1); - m_IO_Worker->write_hdr_frame(resultHDR, m_Ui->outputLineEdit->text() + "/hdr_" + QString::number(m_numProcessed) + "." + suffix); + + int paddingLength = ceil(log10(m_total + 1.0f)); + QString outName = m_Ui->outputLineEdit->text() + "/hdr_" + QString("%1").arg(m_numProcessed, paddingLength, 10, QChar('0')) + "." + suffix; + m_IO_Worker->write_hdr_frame(resultHDR, outName); + + pfs::DOMIO pfsio; + pfsio.freeFrame(resultHDR); + QStringList fnames = m_hdrCreationManager->getFileList(); int n = fnames.size(); @@ -256,9 +308,11 @@ QFile::remove(thumb_name); } m_hdrCreationManager->reset(); - m_Ui->progressBar->setValue(m_Ui->progressBar->value() + 1); - m_Ui->textEdit->append(tr("Written ") + m_Ui->outputLineEdit->text() + "/hdr_" + QString::number(m_numProcessed) + "." + suffix ); - this->batch_hdr(); + int progressValue = m_Ui->progressBar->value() + 1; + m_Ui->progressBar->setValue(progressValue); + OsIntegration::getInstance().setProgress(progressValue, m_Ui->progressBar->maximum() - m_Ui->progressBar->minimum()); + m_Ui->textEdit->append(tr("Written ") + outName ); + batch_hdr(); } void BatchHDRDialog::error_while_loading(QString message) @@ -266,6 +320,8 @@ qDebug() << message; m_Ui->textEdit->append(tr("Error: ") + message); m_errors = true; + m_loading_error = true; + m_processed++; QStringList fnames = m_hdrCreationManager->getFileList(); int n = fnames.size(); @@ -277,8 +333,7 @@ thumb_name = QString(m_tempDir + "/" + qfi.completeBaseName() + ".thumb.ppm"); QFile::remove(thumb_name); } - m_hdrCreationManager->reset(); - this->batch_hdr(); // try to continue + try_to_continue(); } void BatchHDRDialog::writeAisData(QByteArray data) @@ -290,16 +345,35 @@ void BatchHDRDialog::check_start_button() { if (m_Ui->inputLineEdit->text() != "" && m_Ui->outputLineEdit->text() != "") - m_Ui->startPushButton->setEnabled(true); + m_Ui->startButton->setEnabled(true); } -void BatchHDRDialog::abort() +void BatchHDRDialog::on_cancelButton_clicked() { if (m_processing) { m_abort = true; - m_Ui->cancelPushButton->setText(tr("Aborting...")); - m_Ui->cancelPushButton->setEnabled(false); + m_Ui->cancelButton->setText(tr("Aborting...")); + m_Ui->cancelButton->setEnabled(false); } else this->reject(); } + +void BatchHDRDialog::processed() +{ + m_processed++; + qDebug() << "BatchHDRDialog::processed() : " << m_processed; + try_to_continue(); +} + +void BatchHDRDialog::try_to_continue() +{ + if (m_processed == m_Ui->spinBox->value()) { + m_processed = 0; + if (m_loading_error) { + m_loading_error = false; + m_hdrCreationManager->reset(); + batch_hdr(); // try to continue + } + } +} diff -Nru luminance-2.2.1/src/BatchHDR/BatchHDRDialog.h luminance-2.3.0/src/BatchHDR/BatchHDRDialog.h --- luminance-2.2.1/src/BatchHDR/BatchHDRDialog.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/BatchHDR/BatchHDRDialog.h 2012-07-01 09:10:50.000000000 +0000 @@ -49,30 +49,36 @@ protected slots: void num_bracketed_changed(int); - void add_input_directory(); + void on_selectInputFolder_clicked(); + void on_selectOutputFolder_clicked(); void add_output_directory(QString dir = QString()); - void init_batch_hdr(); + void on_startButton_clicked(); void batch_hdr(); void align(QStringList); - void create_hdr(); + void create_hdr(int); void error_while_loading(QString); void writeAisData(QByteArray); void check_start_button(); - void abort(); + void on_cancelButton_clicked(); + void processed(); + void try_to_continue(); protected: - LuminanceOptions m_luminance_options; + LuminanceOptions m_luminance_options; - //Application-wide settings, loaded via QSettings - QString m_batchHdrInputDir; - QString m_batchHdrOutputDir; - QString m_tempDir; + //Application-wide settings, loaded via QSettings + QString m_batchHdrInputDir; + QString m_batchHdrOutputDir; + QString m_tempDir; QStringList m_bracketed; IOWorker *m_IO_Worker; HdrCreationManager *m_hdrCreationManager; int m_numProcessed; + int m_processed; + int m_total; bool m_errors; + bool m_loading_error; bool m_abort; bool m_processing; }; diff -Nru luminance-2.2.1/src/BatchHDR/BatchHDRDialog.ui luminance-2.3.0/src/BatchHDR/BatchHDRDialog.ui --- luminance-2.2.1/src/BatchHDR/BatchHDRDialog.ui 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/BatchHDR/BatchHDRDialog.ui 2012-07-01 09:10:50.000000000 +0000 @@ -6,8 +6,8 @@ 0 0 - 568 - 556 + 571 + 583 @@ -15,183 +15,167 @@ - + - - - 0 - - - - - - - - - Number of bracketed images: - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Select the number of bracketed pictures used to create the HDRs - - - 1 - - - 20 - - - Qt::Horizontal - - - - - - - Select the number of bracketed pictures used to create the HDRs - - - 1 - - - 20 - - - - + + + + + + + Number of bracketed images: + + - - - - - - Predefined profile: - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 40 - 20 - - - - - - - - Choose one of the creation predefined profiles. -See documentation for more informations. - - - 0 - - - - Profile 1 - - - - - Profile 2 - - - - - Profile 3 - - - - - Profile 4 - - - - - Profile 5 - - - - - Profile 6 - - - - - + + + + Qt::Horizontal + + + + 40 + 20 + + + - - + + + + Select the number of bracketed pictures used to create the HDRs + + + 1 + + + 20 + + + Qt::Horizontal + + + QSlider::TicksBelow + + + 1 + + + + + + + Select the number of bracketed pictures used to create the HDRs + + + 1 + + + 20 + + + + + + + + + + + + 0 + 0 + + - Alignment + Output - - - - - - - false - - - Auto align the bracketed pictures - + + + + + QLayout::SetMinimumSize + + + - Auto-align images + Output format: - - - - false - + + - Use Hugin's align_image_stack engine + Choose an HDR output file format + + + hdr + + + + + exr + + + + + PFS + + + + + tiff + + + + + + - Hugin's align_image_stack - - - true + Predefined profile: - - - - false - + + - Use MTB (Median Threshold Bitmap) engine + Choose one of the creation predefined profiles. +See documentation for more information. - - MTB + + 0 + + + Profile 1 + + + + + Profile 2 + + + + + Profile 3 + + + + + Profile 4 + + + + + Profile 5 + + + + + Profile 6 + + @@ -199,169 +183,160 @@ - - - - - - Output format: - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 40 - 20 - - - - + + - - - Choose an HDR output file format - - - - hdr - - - - - exr - - - - - PFS - - - - - tiff - - + + + Alignment + + + + + + + + false + + + Auto align the bracketed pictures + + + Auto-align images + + + + + + + false + + + Use Hugin's align_image_stack engine + + + Hugin's align_image_stack + + + true + + + + + + + false + + + Use MTB (Median Threshold Bitmap) engine + + + MTB + + + + + + - - - - - - - - Folder where bracketed pictures are located (in alphabetical order) - - - Select &Input Folder - - - - :/new/prefix1/images/fileopen.png:/new/prefix1/images/fileopen.png - - - - - - - Folder where created HDRs are saved - - - Select &Output Folder - - - - :/new/prefix1/images/fileopen.png:/new/prefix1/images/fileopen.png - - - - - - - - - - - true - - - - - - - true - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Messages - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - + + + + + + Progress + + + + + + true + + + + + + + 0 + + + Qt::AlignCenter + + + + + + + + + + + + + + + true + + - - + + true - - - - 0 + + + + Folder where created HDRs are saved + + + Select... + + + + :/new/prefix1/images/fileopen.png:/new/prefix1/images/fileopen.png + + + + + + + Folder where bracketed pictures are located (in alphabetical order) + + + Select... + + + + :/new/prefix1/images/fileopen.png:/new/prefix1/images/fileopen.png + + + + + + + Input folder: + + + false + + + + + + + Output folder: - - - + + @@ -379,14 +354,14 @@ - + &Cancel - + false @@ -396,7 +371,7 @@ - + &Close @@ -408,8 +383,25 @@ + + horizontalSlider + spinBox + formatComboBox + profileComboBox + autoAlignCheckBox + aisRadioButton + MTBRadioButton + inputLineEdit + selectInputFolder + outputLineEdit + selectOutputFolder + textEdit + cancelButton + startButton + closeButton + - + @@ -444,5 +436,21 @@ + + closeButton + clicked() + BatchHDRDialog + accept() + + + 522 + 560 + + + 285 + 291 + + + diff -Nru luminance-2.2.1/src/BatchTM/BatchTMDialog.cpp luminance-2.3.0/src/BatchTM/BatchTMDialog.cpp --- luminance-2.2.1/src/BatchTM/BatchTMDialog.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/BatchTM/BatchTMDialog.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -36,14 +36,18 @@ #include #include +#include +#include #include "BatchTM/BatchTMDialog.h" #include "ui_BatchTMDialog.h" #include "Common/config.h" +#include "Common/SavedParametersDialog.h" #include "Exif/ExifOperations.h" #include "Core/TonemappingOptions.h" #include "BatchTM/BatchTMJob.h" +#include "OsIntegration/osintegration.h" BatchTMDialog::BatchTMDialog(QWidget *p): QDialog(p), m_Ui(new Ui::BatchTMDialog), @@ -69,10 +73,14 @@ connect(m_Ui->remove_TMOpts_Button, SIGNAL(clicked()), this, SLOT(remove_TMOpts()) ); connect(m_Ui->BatchGoButton, SIGNAL(clicked()), this, SLOT(batch_core())); //start_called() connect(m_Ui->cancelbutton, SIGNAL(clicked()), this, SLOT(abort())); + connect(m_Ui->from_Database_Button, SIGNAL(clicked()), this, SLOT(from_database())); connect(m_Ui->filterLineEdit, SIGNAL(textChanged(const QString&)), this, SLOT(filterChanged(const QString&))); connect(m_Ui->filterComboBox, SIGNAL(activated(int)), this, SLOT(filterComboBoxActivated(int))); + connect(m_Ui->spinBox_Quality, SIGNAL(valueChanged(int)), this, SLOT(updateQuality(int))); + connect(m_Ui->spinBox_Width, SIGNAL(valueChanged(int)), this, SLOT(updateWidth(int))); + full_Log_Model = new QStringListModel(); log_filter = new QSortFilterProxyModel(this); log_filter->setDynamicSortFilter(true); @@ -88,7 +96,7 @@ m_is_batch_running = false; add_log_message(tr("Using %1 thread(s)").arg(m_max_num_threads)); - add_log_message(tr("Saving using file format: %1, (quality - if applicable): %2").arg(m_luminance_options.getBatchTmLdrFormat()).arg(m_luminance_options.getBatchTmDefaultOutputQuality())); + add_log_message(tr("Saving using file format: %1").arg(m_luminance_options.getBatchTmLdrFormat())); } BatchTMDialog::~BatchTMDialog() @@ -110,6 +118,8 @@ QString dirname=QFileDialog::getExistingDirectory(this, tr("Choose a directory"), m_batchTmInputDir ); if ( !dirname.isEmpty() ) { + m_batchTmInputDir = dirname; + m_luminance_options.setBatchTmPathHdrInput(dirname); // update settings QStringList filters; filters << "*.exr" << "*.hdr" << "*.pic" << "*.tiff" << "*.tif" << "*.pfs" << "*.crw" << "*.cr2" << "*.nef" << "*.dng" << "*.mrw" << "*.orf" << "*.kdc" << "*.dcr" << "*.arw" << "*.raf" << "*.ptx" << "*.pef" << "*.x3f" << "*.raw" << "*.sr2" << "*.rw2" << "*.srw"; filters << "*.EXR" << "*.HDR" << "*.PIC" << "*.TIFF" << "*.TIF" << "*.PFS" << "*.CRW" << "*.CR2" << "*.NEF" << "*.DNG" << "*.MRW" << "*.ORF" << "*.KDC" << "*.DCR" << "*.ARW" << "*.RAF" << "*.PTX" << "*.PEF" << "*.X3F" << "*.RAW" << "*.SR2" << "*.RW2" << "*.SRW"; @@ -141,6 +151,8 @@ QString dirname = QFileDialog::getExistingDirectory(this, tr("Choose a directory"), m_batchTmTmoSettingsDir); if ( !dirname.isEmpty() ) { + m_batchTmTmoSettingsDir = dirname; + m_luminance_options.setBatchTmPathTmoSettings(dirname); // update settings QStringList filters; filters << "*.txt"; QDir chosendir(dirname); @@ -211,7 +223,6 @@ void BatchTMDialog::add_view_model_HDRs(QStringList list) { //printf("BatchTMDialog::add_view_model_HDRs()\n"); - for (int idx = 0; idx < list.size(); ++idx) { //fill graphical list @@ -230,8 +241,12 @@ QString curr_tmo_options_file = list.at(idx); TonemappingOptions *i_th_tm_opt = parse_tm_opt_file(curr_tmo_options_file); + if (i_th_tm_opt != NULL) { + i_th_tm_opt->quality = m_Ui->spinBox_Quality->value(); + i_th_tm_opt->xsize_percent = m_Ui->spinBox_Width->value(); + //add to data structure m_tm_options_list.append(i_th_tm_opt); @@ -489,6 +504,11 @@ m_Ui->add_dir_TMopts_Button->setDisabled(true); m_Ui->add_TMopts_Button->setDisabled(true); m_Ui->remove_TMOpts_Button->setDisabled(true); + m_Ui->from_Database_Button->setDisabled(true); + m_Ui->horizontalSlider_Width->setDisabled(true); + m_Ui->spinBox_Width->setDisabled(true); + m_Ui->horizontalSlider_Quality->setDisabled(true); + m_Ui->spinBox_Quality->setDisabled(true); // mouse pointer to busy QApplication::setOverrideCursor(QCursor(Qt::BusyCursor)); @@ -503,6 +523,7 @@ { if ( m_thread_slot.tryAcquire(m_max_num_threads) ) { + m_Ui->cancelbutton->setDisabled(false); m_Ui->cancelbutton->setText(tr("Close")); @@ -525,12 +546,14 @@ ce->ignore(); else ce->accept(); + OsIntegration::getInstance().setProgress(-1); } - void BatchTMDialog::increment_progress_bar(int inc) { - m_Ui->overallProgressBar->setValue(m_Ui->overallProgressBar->value()+inc); + int progressValue = m_Ui->overallProgressBar->value()+inc; + m_Ui->overallProgressBar->setValue(progressValue); + OsIntegration::getInstance().setProgress(progressValue, m_Ui->overallProgressBar->maximum() - m_Ui->overallProgressBar->minimum()); } void BatchTMDialog::abort() @@ -543,3 +566,166 @@ else this->reject(); } + +void BatchTMDialog::updateQuality(int newQuality) +{ + TonemappingOptions *opt; + foreach (opt, m_tm_options_list) { + opt->quality = newQuality; + } +} + +void BatchTMDialog::updateWidth(int newWidth_in_percent) +{ + TonemappingOptions *opt; + foreach (opt, m_tm_options_list) { + opt->xsize_percent = newWidth_in_percent; + } +} + +void BatchTMDialog::from_database() +{ + SavedParametersDialog dialog(this); + if (dialog.exec()) { + QSqlQueryModel *model = dialog.getModel(); + QModelIndexList mil = dialog.getSelectedRows(); + foreach(QModelIndex mi, mil) { + QString comment, tmOperator; + comment = model->record(mi.row()).value("comment").toString(); + tmOperator = model->record(mi.row()).value("operator").toString(); + + QSqlTableModel *temp_model = new QSqlTableModel; + temp_model->setTable(tmOperator); + temp_model->select(); + QSqlQuery query("SELECT * from " + tmOperator + " WHERE comment = '" + comment + "'"); + + TonemappingOptions *tm_opt = new TonemappingOptions; + if (tmOperator == "ashikhmin") { + m_Ui->listWidget_TMopts->addItem(tmOperator + ": " + comment); + tm_opt->quality = m_Ui->spinBox_Quality->value(); + tm_opt->xsize_percent = m_Ui->spinBox_Width->value(); + tm_opt->tmoperator = ashikhmin; + tm_opt->tonemapSelection = false; + while (query.next()) { + tm_opt->operator_options.ashikhminoptions.simple = query.value(0).toBool(); + tm_opt->operator_options.ashikhminoptions.eq2 = query.value(1).toBool(); + tm_opt->operator_options.ashikhminoptions.lct = query.value(2).toFloat(); + tm_opt->pregamma = query.value(3).toFloat(); + } + } + else if (tmOperator == "drago") { + m_Ui->listWidget_TMopts->addItem(tmOperator + ": " + comment); + tm_opt->quality = m_Ui->spinBox_Quality->value(); + tm_opt->xsize_percent = m_Ui->spinBox_Width->value(); + tm_opt->tmoperator = drago; + tm_opt->tonemapSelection = false; + while (query.next()) { + tm_opt->operator_options.dragooptions.bias = query.value(0).toFloat(); + tm_opt->pregamma = query.value(1).toFloat(); + } + } + else if (tmOperator == "durand") { + m_Ui->listWidget_TMopts->addItem(tmOperator + ": " + comment); + tm_opt->quality = m_Ui->spinBox_Quality->value(); + tm_opt->xsize_percent = m_Ui->spinBox_Width->value(); + tm_opt->tmoperator = durand; + tm_opt->tonemapSelection = false; + while (query.next()) { + tm_opt->operator_options.durandoptions.spatial = query.value(0).toFloat(); + tm_opt->operator_options.durandoptions.range = query.value(1).toFloat(); + tm_opt->operator_options.durandoptions.base = query.value(2).toFloat(); + tm_opt->pregamma = query.value(3).toFloat(); + } + } + else if (tmOperator == "fattal") { + m_Ui->listWidget_TMopts->addItem(tmOperator + ": " + comment); + tm_opt->quality = m_Ui->spinBox_Quality->value(); + tm_opt->xsize_percent = m_Ui->spinBox_Width->value(); + tm_opt->tmoperator = fattal; + tm_opt->tonemapSelection = false; + while (query.next()) { + tm_opt->operator_options.fattaloptions.alpha = query.value(0).toFloat(); + tm_opt->operator_options.fattaloptions.beta = query.value(1).toFloat(); + tm_opt->operator_options.fattaloptions.color = query.value(2).toFloat(); + tm_opt->operator_options.fattaloptions.noiseredux = query.value(3).toFloat(); + tm_opt->operator_options.fattaloptions.newfattal = query.value(4).toBool(); + tm_opt->pregamma = query.value(5).toFloat(); + } + } + else if (tmOperator == "mantiuk06") { + m_Ui->listWidget_TMopts->addItem(tmOperator + ": " + comment); + tm_opt->quality = m_Ui->spinBox_Quality->value(); + tm_opt->xsize_percent = m_Ui->spinBox_Width->value(); + tm_opt->tmoperator = mantiuk06; + tm_opt->tonemapSelection = false; + while (query.next()) { + tm_opt->operator_options.mantiuk06options.contrastfactor = query.value(1).toFloat(); + tm_opt->operator_options.mantiuk06options.saturationfactor = query.value(2).toFloat(); + tm_opt->operator_options.mantiuk06options.detailfactor = query.value(3).toFloat(); + tm_opt->operator_options.mantiuk06options.contrastequalization = query.value(0).toBool(); + tm_opt->pregamma = query.value(4).toFloat(); + } + } + else if (tmOperator == "mantiuk08") { + m_Ui->listWidget_TMopts->addItem(tmOperator + ": " + comment); + tm_opt->quality = m_Ui->spinBox_Quality->value(); + tm_opt->xsize_percent = m_Ui->spinBox_Width->value(); + tm_opt->tmoperator = mantiuk08; + tm_opt->tonemapSelection = false; + while (query.next()) { + tm_opt->operator_options.mantiuk08options.colorsaturation = query.value(0).toFloat(); + tm_opt->operator_options.mantiuk08options.contrastenhancement = query.value(1).toFloat(); + tm_opt->operator_options.mantiuk08options.luminancelevel = query.value(2).toFloat(); + tm_opt->operator_options.mantiuk08options.setluminance = query.value(3).toBool(); + tm_opt->pregamma = query.value(4).toFloat(); + } + } + else if (tmOperator == "pattanaik") { + m_Ui->listWidget_TMopts->addItem(tmOperator + ": " + comment); + tm_opt->quality = m_Ui->spinBox_Quality->value(); + tm_opt->xsize_percent = m_Ui->spinBox_Width->value(); + tm_opt->tmoperator = pattanaik; + tm_opt->tonemapSelection = false; + while (query.next()) { + tm_opt->operator_options.pattanaikoptions.autolum = query.value(4).toBool(); + tm_opt->operator_options.pattanaikoptions.local = query.value(3).toBool(); + tm_opt->operator_options.pattanaikoptions.cone = query.value(1).toFloat(); + tm_opt->operator_options.pattanaikoptions.rod = query.value(2).toFloat(); + tm_opt->operator_options.pattanaikoptions.multiplier = query.value(0).toFloat(); + tm_opt->pregamma = query.value(5).toFloat(); + } + } + else if (tmOperator == "reinhard02") { + m_Ui->listWidget_TMopts->addItem(tmOperator + ": " + comment); + tm_opt->quality = m_Ui->spinBox_Quality->value(); + tm_opt->xsize_percent = m_Ui->spinBox_Width->value(); + tm_opt->tmoperator = reinhard02; + tm_opt->tonemapSelection = false; + while (query.next()) { + tm_opt->operator_options.reinhard02options.scales = query.value(0).toBool(); + tm_opt->operator_options.reinhard02options.key = query.value(1).toFloat(); + tm_opt->operator_options.reinhard02options.phi = query.value(2).toFloat(); + tm_opt->operator_options.reinhard02options.range = query.value(3).toInt(); + tm_opt->operator_options.reinhard02options.lower = query.value(4).toInt(); + tm_opt->operator_options.reinhard02options.upper = query.value(5).toInt(); + tm_opt->pregamma = query.value(6).toFloat(); + } + } + else if (tmOperator == "reinhard05") { + m_Ui->listWidget_TMopts->addItem(tmOperator + ": " + comment); + tm_opt->quality = m_Ui->spinBox_Quality->value(); + tm_opt->xsize_percent = m_Ui->spinBox_Width->value(); + tm_opt->tmoperator = reinhard05; + tm_opt->tonemapSelection = false; + while (query.next()) { + tm_opt->operator_options.reinhard05options.brightness = query.value(0).toFloat(); + tm_opt->operator_options.reinhard05options.chromaticAdaptation = query.value(1).toFloat(); + tm_opt->operator_options.reinhard05options.lightAdaptation = query.value(2).toFloat(); + tm_opt->pregamma = query.value(3).toFloat(); + } + } + m_tm_options_list.append(tm_opt); + delete temp_model; + } + } +} diff -Nru luminance-2.2.1/src/BatchTM/BatchTMDialog.h luminance-2.3.0/src/BatchTM/BatchTMDialog.h --- luminance-2.2.1/src/BatchTM/BatchTMDialog.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/BatchTM/BatchTMDialog.h 2012-07-01 09:10:50.000000000 +0000 @@ -79,6 +79,11 @@ void stop_batch_tm_ui(); void increment_progress_bar(int); + void from_database(); + + void updateQuality(int); + void updateWidth(int); + protected: void closeEvent(QCloseEvent *); diff -Nru luminance-2.2.1/src/BatchTM/BatchTMDialog.ui luminance-2.3.0/src/BatchTM/BatchTMDialog.ui --- luminance-2.2.1/src/BatchTM/BatchTMDialog.ui 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/BatchTM/BatchTMDialog.ui 2012-07-01 09:10:50.000000000 +0000 @@ -7,7 +7,7 @@ 0 0 682 - 496 + 566 @@ -36,92 +36,87 @@ 2 + + + List of HDRs that will be tone mapped + + + QAbstractItemView::ContiguousSelection + + + QAbstractItemView::SelectRows + + + + - - - - 160 - 32 - - - - - 160 - 32 - - + - Add all the HDRs in a directory to the list + Add Directory (Alt+D) - Add &Directory + ... - + :/new/prefix1/images/fileopen.png:/new/prefix1/images/fileopen.png - - true - - - false + + + 24 + 24 + - - false + + Alt+D - - - - 160 - 32 - - - - - 160 - 32 - - + - Add single HDR files to the list + Add Files (Alt+F) - &Add Files + ... - + :/new/prefix1/images/add.png:/new/prefix1/images/add.png - - - - - + - 160 - 32 + 24 + 24 - - - 160 - 32 - + + Alt+F + + + + - Remove single HDR files to the list + Remove Files (Alt+R) - &Remove Files + ... - + :/new/prefix1/images/remove.png:/new/prefix1/images/remove.png + + + 24 + 24 + + + + Alt+R + @@ -139,26 +134,13 @@ - - - - List of HDRs that will be tone mapped - - - QAbstractItemView::ContiguousSelection - - - QAbstractItemView::SelectRows - - - - Tone Mapping Settings Files + Tone Mapping Settings Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop @@ -170,89 +152,94 @@ - - - - 160 - 32 - - - - - 160 - 32 - - + - Add all the Tone Mapping Setting files in a directory to the list + Add Directory (Alt+I) - Add D&irectory + ... - + :/new/prefix1/images/fileopen.png:/new/prefix1/images/fileopen.png - - false - - - - - - + - 160 - 32 + 24 + 24 - - - 160 - 32 - + + Alt+I + + + + - Add single Tone Mapping Setting files to the list + Add Files (Alt+L) - Add Fi&les + ... - + :/new/prefix1/images/add.png:/new/prefix1/images/add.png - - false + + + 24 + 24 + + + + Alt+L - - - - 160 - 32 - + + + Add from Database (Alt+B) + + + ... + + + + :/new/prefix1/images/vcs_add.png:/new/prefix1/images/vcs_add.png - + - 160 - 32 + 24 + 24 + + Alt+B + + + + + - Remove single Tone Mapping Setting files to the list + Remove Settings (Alt+M) - R&emove Files + ... - + :/new/prefix1/images/remove.png:/new/prefix1/images/remove.png - - false + + + 24 + 24 + + + + Alt+M @@ -297,23 +284,132 @@ Output - - - 2 - - - - - Select &Output Folder... - - - - - - - true - - + + + + + + + + + + + Ouput Image Width: + + + + + + + 1 + + + 100 + + + 100 + + + Qt::Horizontal + + + QSlider::TicksBelow + + + 10 + + + + + + + % + + + 1 + + + 100 + + + 100 + + + + + + + + + + + Output Image Quality + + + + + + + 100 + + + 100 + + + Qt::Horizontal + + + QSlider::TicksBelow + + + 10 + + + + + + + 100 + + + 100 + + + + + + + + + + + + + Output Folder: + + + + + + + true + + + + + + + Selec&t... + + + + :/new/prefix1/images/fileopen.png:/new/prefix1/images/fileopen.png + + + + + + @@ -426,7 +522,7 @@ Clear filter text - + :/new/prefix1/images/fileclose.png:/new/prefix1/images/fileclose.png @@ -441,8 +537,8 @@ Overall completion progress - - Qt::Horizontal + + Qt::AlignCenter @@ -492,16 +588,95 @@ + add_dir_HDRs_Button + add_HDRs_Button remove_HDRs_Button + add_dir_TMopts_Button + add_TMopts_Button + from_Database_Button + remove_TMOpts_Button + listWidget_HDRs + listWidget_TMopts + horizontalSlider_Width + spinBox_Width + horizontalSlider_Quality + spinBox_Quality + out_folder_widgets out_folder_Button filterComboBox + filterLineEdit + clearTextToolButton + Log_Widget cancelbutton BatchGoButton - listWidget_HDRs - out_folder_widgets - + - + + + horizontalSlider_Quality + valueChanged(int) + spinBox_Quality + setValue(int) + + + 490 + 266 + + + 546 + 266 + + + + + spinBox_Quality + valueChanged(int) + horizontalSlider_Quality + setValue(int) + + + 562 + 268 + + + 481 + 275 + + + + + horizontalSlider_Width + valueChanged(int) + spinBox_Width + setValue(int) + + + 145 + 264 + + + 188 + 263 + + + + + spinBox_Width + valueChanged(int) + horizontalSlider_Width + setValue(int) + + + 198 + 271 + + + 85 + 272 + + + + diff -Nru luminance-2.2.1/src/BatchTM/BatchTMJob.cpp luminance-2.3.0/src/BatchTM/BatchTMJob.cpp --- luminance-2.2.1/src/BatchTM/BatchTMJob.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/BatchTM/BatchTMJob.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -28,9 +28,9 @@ #include "Exif/ExifOperations.h" #include "Libpfs/frame.h" #include "Filter/pfscut.h" +#include "Filter/pfsgamma.h" #include "Core/IOWorker.h" #include "Common/LuminanceOptions.h" -#include "Core/IOWorker.h" #include "Fileformat/pfsout16bitspixmap.h" #include "Fileformat/pfsoutldrimage.h" #include "TonemappingEngine/TonemapOperator.h" @@ -49,7 +49,6 @@ m_output_folder(output_folder) { m_ldr_output_format = LuminanceOptions().getBatchTmLdrFormat(); - m_ldr_output_quality = LuminanceOptions().getBatchTmDefaultOutputQuality(); m_output_file_name_base = m_output_folder + "/" + QFileInfo(m_file_name).completeBaseName(); } @@ -81,15 +80,20 @@ opts->tonemapSelection = false; // just to be sure! opts->origxsize = reference_frame->getWidth(); - //opts->xsize = 400; // DEBUG - //opts->xsize = opts->origxsize; + + opts->xsize = (int) opts->origxsize * opts->xsize_percent / 100; QScopedPointer temporary_frame; - if ( reference_frame->getWidth() == opts->xsize ) + if ( opts->origxsize == opts->xsize ) temporary_frame.reset( pfs::pfscopy(reference_frame.data()) ); else temporary_frame.reset( pfs::resizeFrame(reference_frame.data(), opts->xsize) ); + if ( opts->pregamma != 1.0f ) + { + pfs::applyGammaOnFrame(temporary_frame.data(), opts->pregamma ); + } + QScopedPointer tm_operator( TonemapOperator::getTonemapOperator(opts->tmoperator) ); tm_operator->tonemapFrame(temporary_frame.data(), opts, prog_helper); @@ -97,7 +101,7 @@ TMOptionsOperations operations(opts); QString output_file_name = m_output_file_name_base+"_"+operations.getPostfix()+"."+m_ldr_output_format; - if ( io_worker.write_ldr_frame(temporary_frame.data(), output_file_name, m_ldr_output_quality, opts) ) + if ( io_worker.write_ldr_frame(temporary_frame.data(), output_file_name, opts->quality, opts) ) { emit add_log_message( tr("[T%1] Successfully saved LDR file: %2").arg(m_thread_id).arg(QFileInfo(output_file_name).completeBaseName()) ); } else { diff -Nru luminance-2.2.1/src/BatchTM/BatchTMJob.h luminance-2.3.0/src/BatchTM/BatchTMJob.h --- luminance-2.2.1/src/BatchTM/BatchTMJob.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/BatchTM/BatchTMJob.h 2012-07-01 09:10:50.000000000 +0000 @@ -25,8 +25,8 @@ * */ -#ifndef __BATCH_TM_JOB__ -#define __BATCH_TM_JOB__ +#ifndef BATCHTMJOB_H +#define BATCHTMJOB_H #include @@ -54,7 +54,6 @@ QString m_output_folder; QString m_output_file_name_base; QString m_ldr_output_format; - int m_ldr_output_quality; }; -#endif // __BATCH_TM_JOB__ +#endif // BATCHTMJOB_H diff -Nru luminance-2.2.1/src/CMakeLists.txt luminance-2.3.0/src/CMakeLists.txt --- luminance-2.2.1/src/CMakeLists.txt 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/CMakeLists.txt 2012-07-01 09:10:50.000000000 +0000 @@ -8,6 +8,7 @@ ADD_SUBDIRECTORY(PreviewPanel) ADD_SUBDIRECTORY(Common) +ADD_SUBDIRECTORY(OsIntegration) ADD_SUBDIRECTORY(BatchHDR) ADD_SUBDIRECTORY(BatchTM) ADD_SUBDIRECTORY(Core) diff -Nru luminance-2.2.1/src/Common/CMakeLists.txt luminance-2.3.0/src/Common/CMakeLists.txt --- luminance-2.2.1/src/Common/CMakeLists.txt 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Common/CMakeLists.txt 2012-07-01 09:10:50.000000000 +0000 @@ -1,26 +1,34 @@ CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/GitSHA1.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/GitSHA1.cpp @ONLY) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/global.hxx.in ${CMAKE_CURRENT_BINARY_DIR}/global.hxx @ONLY) -#SET(FILES_UI ) +SET(FILES_UI +${CMAKE_CURRENT_SOURCE_DIR}/SavedParametersDialog.ui) SET(FILES_H +${CMAKE_CURRENT_SOURCE_DIR}/SavedParametersDialog.h ${CMAKE_CURRENT_SOURCE_DIR}/ProgressHelper.h ${CMAKE_CURRENT_SOURCE_DIR}/LuminanceOptions.h) SET(FILES_HXX ${CMAKE_CURRENT_SOURCE_DIR}/archs.h ${CMAKE_CURRENT_SOURCE_DIR}/config.h -${CMAKE_CURRENT_SOURCE_DIR}/msec_timer.h) +${CMAKE_CURRENT_SOURCE_DIR}/msec_timer.h +${CMAKE_CURRENT_SOURCE_DIR}/ResourceHandler.h +${CMAKE_CURRENT_SOURCE_DIR}/ResourceHandlerCommon.h +${CMAKE_CURRENT_SOURCE_DIR}/ResourceHandlerLcms.h +${CMAKE_CURRENT_SOURCE_DIR}/FloatRgbToQRgb.h) SET(FILES_CPP +${CMAKE_CURRENT_SOURCE_DIR}/SavedParametersDialog.cpp ${CMAKE_CURRENT_SOURCE_DIR}/global.cpp ${CMAKE_CURRENT_SOURCE_DIR}/LuminanceOptions.cpp ${CMAKE_CURRENT_SOURCE_DIR}/msec_timer.cpp -${CMAKE_CURRENT_SOURCE_DIR}/ProgressHelper.cpp) +${CMAKE_CURRENT_SOURCE_DIR}/ProgressHelper.cpp +${CMAKE_CURRENT_SOURCE_DIR}/FloatRgbToQRgb.cpp) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) QT4_WRAP_CPP(FILES_MOC ${FILES_H}) -#QT4_WRAP_UI(FILES_UI_H ${FILES_UI}) +QT4_WRAP_UI(FILES_UI_H ${FILES_UI}) -ADD_LIBRARY(common ${FILES_H} ${FILES_CPP} ${FILES_MOC} ${FILES_HXX} +ADD_LIBRARY(common ${FILES_H} ${FILES_CPP} ${FILES_MOC} ${FILES_HXX} ${FILES_UI_H} ${CMAKE_CURRENT_BINARY_DIR}/global.hxx ${CMAKE_CURRENT_BINARY_DIR}/GitSHA1.cpp) diff -Nru luminance-2.2.1/src/Common/config.h luminance-2.3.0/src/Common/config.h --- luminance-2.2.1/src/Common/config.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Common/config.h 2012-07-01 09:10:50.000000000 +0000 @@ -30,7 +30,10 @@ #define LUMINANCEORGANIZATION "Luminance" #define LUMINANCEAPPLICATION "Luminance" -#define LUMINANCEVERSION "2.2.1" +#define LUMINANCEVERSION "2.3.0" +#ifdef WIN32 +#define LUMINANCEVERSION_RES 2,3,0 // numeric fileversion for .rc file (format: '0,0,0') +#endif #define TMOSETTINGSVERSION "0.6" #define KEY_TOOLBAR_MODE "MainWindowToolbarVisualizationMode" @@ -92,6 +95,11 @@ #define KEY_USE_NOISE "Raw_Conversion_Options/use_noise" #define KEY_USE_CHROMA "Raw_Conversion_Options/use_chroma" +#define KEY_COLOR_CAMERA_PROFILE "Color_Management_Options/camera_profile" +#define KEY_COLOR_CAMERA_PROFILE_FILENAME "Color_Management_Options/camera_profile_filename" +#define KEY_COLOR_MONITOR_PROFILE_FILENAME "Color_Management_Options/monitor_profile_filename" +#define KEY_COLOR_PRINTER_PROFILE_FILENAME "Color_Management_Options/printer_profile_filename" + //--------------------PATHS & co. ---------------- #define KEY_RECENT_PATH_LOAD_SAVE_HDR "Recent_path_loadsave_hdr" #define KEY_RECENT_FILES "Recent_files_list" @@ -110,6 +118,5 @@ #define KEY_BATCH_TM_PATH_OUTPUT "batch_tm/path_ldr_output" #define KEY_BATCH_TM_LDR_FORMAT "batch_tm/Batch_LDR_Format" #define KEY_BATCH_TM_NUM_THREADS "batch_tm/Num_Batch_Threads" -#define KEY_BATCH_TM_DEFAULT_OUTPUT_QUALITY "batch_tm/default_output_quality" #endif diff -Nru luminance-2.2.1/src/Common/FloatRgbToQRgb.cpp luminance-2.3.0/src/Common/FloatRgbToQRgb.cpp --- luminance-2.2.1/src/Common/FloatRgbToQRgb.cpp 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/src/Common/FloatRgbToQRgb.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,367 @@ +/* + * This file is a part of Luminance HDR package. + * ---------------------------------------------------------------------- + * Copyright (C) 2012 Davide Anastasia + * + * This program 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * ---------------------------------------------------------------------- + */ + +//! \file FloatRgbToQRgb.cpp +//! \brief This file creates common routines for mapping float RGB values into +//! 8-bits or 16-bits integer RGB (QRgb or quint16) +//! \author Davide Anastasia +//! \since Luminance HDR 2.3.0-beta1 + +#include "FloatRgbToQRgb.h" +#include "arch/math.h" +#include "Libpfs/vex.h" +#include + +namespace +{ +#ifdef LUMINANCE_USE_SSE +const v4sf GAMMA_1_4 = _mm_set1_ps(1.0f/1.4f); +const v4sf GAMMA_1_8 = _mm_set1_ps(1.0f/1.8f); +const v4sf GAMMA_2_2 = _mm_set1_ps(1.0f/2.2f); +const v4sf GAMMA_2_6 = _mm_set1_ps(1.0f/2.6f); + +const v4sf ZERO = _mm_set1_ps(0.f); +const v4sf ZERO_DOT_FIVE = _mm_set1_ps(0.5f); +const v4sf TWOFIVEFIVE = _mm_set1_ps(255.f); +const v4sf TWOPOWER16 = _mm_set1_ps(65535.f); + +inline +v4sf scaleAndRound(v4sf value, v4sf MIN_, v4sf MAX_) +{ + value *= MAX_; + value = _mm_min_ps(value, MAX_); + value = _mm_max_ps(value, MIN_); + value += ZERO_DOT_FIVE; + + return value; +} +#else +template +inline +O_ scaleAndRound(float value, float MIN_, float MAX_) +{ + value *= MAX_; + value = std::min(value, MAX_); + value = std::max(value, MIN_); + value += 0.5f; + + return static_cast(value); +} + +// useful data structure to implement a triple of float as RGB pixel +struct RgbF3 +{ + RgbF3(float r, float g, float b) + : red(r) + , green(g) + , blue(b) + {} + + float red; + float green; + float blue; +}; + +const float GAMMA_1_4 = 1.0f/1.4f; +const float GAMMA_1_8 = 1.0f/1.8f; +const float GAMMA_2_2 = 1.0f/2.2f; +const float GAMMA_2_6 = 1.0f/2.6f; +#endif +} + +struct FloatRgbToQRgbImpl +{ + FloatRgbToQRgbImpl(float min_value, + float max_value, + LumMappingMethod mapping_method) +#ifdef LUMINANCE_USE_SSE + : m_MinValue(_mm_set1_ps(min_value)) + , m_MaxValue(_mm_set1_ps(max_value)) + , m_Range(_mm_set1_ps(max_value - min_value)) + , m_LogRange( _mm_set1_ps(log2f(max_value/min_value)) ) +#else + : m_MinValue(min_value) + , m_MaxValue(max_value) + , m_Range(max_value - min_value) + , m_LogRange( log2f(max_value/min_value) ) +#endif + { + setMappingMethod( mapping_method ); + } + + ~FloatRgbToQRgbImpl() + {} + + void setMinMax(float min, float max) + { +#ifdef LUMINANCE_USE_SSE + m_MinValue = _mm_set1_ps(min); + m_MaxValue = _mm_set1_ps(max); + m_Range = _mm_set1_ps(max - min); + m_LogRange = _mm_set1_ps(log2f(max/min)); +#else + m_MinValue = min; + m_MaxValue = max; + m_Range = max - min; + m_LogRange = log2f(max/min); +#endif + } + + void setMappingMethod(LumMappingMethod method) + { + m_MappingMethod = method; + + switch ( m_MappingMethod ) + { + case MAP_LINEAR: + m_MappingFunc = &FloatRgbToQRgbImpl::mappingLinear; + break; + case MAP_GAMMA1_4: + m_MappingFunc = &FloatRgbToQRgbImpl::mappingGamma14; + break; + case MAP_GAMMA1_8: + m_MappingFunc = &FloatRgbToQRgbImpl::mappingGamma18; + break; + case MAP_GAMMA2_6: + m_MappingFunc = &FloatRgbToQRgbImpl::mappingGamma26; + break; + case MAP_LOGARITHMIC: + m_MappingFunc = &FloatRgbToQRgbImpl::mappingLog; + break; + default: + case MAP_GAMMA2_2: + m_MappingFunc = &FloatRgbToQRgbImpl::mappingGamma22; + break; + } + } + + LumMappingMethod m_MappingMethod; + +#ifdef LUMINANCE_USE_SSE + inline + v4sf buildRgb(float r, float g, float b) { + return (_mm_set_ps(0, b, g, r) - m_MinValue) + / m_Range; + } + + v4sf mappingLinear(float r, float g, float b) { + return buildRgb(r,g,b); + } + + v4sf mappingGamma14(float r, float g, float b) { + return _mm_pow_ps(buildRgb(r,g,b), GAMMA_1_4); + } + + v4sf mappingGamma18(float r, float g, float b) { + return _mm_pow_ps(buildRgb(r,g,b), GAMMA_1_8); + } + + v4sf mappingGamma22(float r, float g, float b) { + return _mm_pow_ps(buildRgb(r,g,b), GAMMA_2_2); + } + + v4sf mappingGamma26(float r, float g, float b) { + return _mm_pow_ps(buildRgb(r,g,b), GAMMA_2_6); + } + + v4sf mappingLog(float r, float g, float b) { + return _mm_log2_ps(_mm_set_ps(0, b, g, r)/m_MinValue) + / m_LogRange; + } + + inline + v4sf operator()(float r, float g, float b) + { + return (this->*m_MappingFunc)(r, g, b); + } + + // pointer to function + typedef v4sf (FloatRgbToQRgbImpl::*MappingFunc)(float, float, float); + + MappingFunc m_MappingFunc; + + v4sf m_MinValue; + v4sf m_MaxValue; + v4sf m_Range; + v4sf m_LogRange; +#else + // pointer to function + typedef RgbF3 (FloatRgbToQRgbImpl::*MappingFunc)(float, float, float); + + inline + RgbF3 buildRgb(float r, float g, float b) { + + return RgbF3((r - m_MinValue)/m_Range, + (g - m_MinValue)/m_Range, + (b - m_MinValue)/m_Range); + } + + RgbF3 mappingLinear(float r, float g, float b) + { + return buildRgb(r,g,b); + } + + RgbF3 mappingGamma14(float r, float g, float b) + { + RgbF3 pixel = buildRgb(r,g,b); + + pixel.red = powf(pixel.red, GAMMA_1_4); + pixel.green = powf(pixel.green, GAMMA_1_4); + pixel.blue = powf(pixel.blue, GAMMA_1_4); + + return pixel; + } + + RgbF3 mappingGamma18(float r, float g, float b) + { + RgbF3 pixel = buildRgb(r,g,b); + + pixel.red = powf(pixel.red, GAMMA_1_8); + pixel.green = powf(pixel.green, GAMMA_1_8); + pixel.blue = powf(pixel.blue, GAMMA_1_8); + + return pixel; + } + + RgbF3 mappingGamma22(float r, float g, float b) + { + RgbF3 pixel = buildRgb(r,g,b); + + pixel.red = powf(pixel.red, GAMMA_2_2); + pixel.green = powf(pixel.green, GAMMA_2_2); + pixel.blue = powf(pixel.blue, GAMMA_2_2); + + return pixel; + } + + RgbF3 mappingGamma26(float r, float g, float b) + { + RgbF3 pixel = buildRgb(r,g,b); + + // I have problems with Clang++ in using the powf function + pixel.red = powf(pixel.red, GAMMA_2_6); + pixel.green = powf(pixel.green, GAMMA_2_6); + pixel.blue = powf(pixel.blue, GAMMA_2_6); + + return pixel; + } + + RgbF3 mappingLog(float r, float g, float b) + { + return RgbF3(log2f(r/m_MinValue)/m_LogRange, + log2f(g/m_MinValue)/m_LogRange, + log2f(b/m_MinValue)/m_LogRange); + } + + inline + RgbF3 operator()(float r, float g, float b) + { + return (this->*m_MappingFunc)(r, g, b); + } + + MappingFunc m_MappingFunc; + + float m_MinValue; + float m_MaxValue; + float m_Range; + float m_LogRange; +#endif + +}; + +FloatRgbToQRgb::FloatRgbToQRgb(float min_value, + float max_value, + LumMappingMethod mapping_method) + : m_Pimpl( new FloatRgbToQRgbImpl(min_value, + max_value, + mapping_method)) +{} + +FloatRgbToQRgb::~FloatRgbToQRgb() +{} + +void FloatRgbToQRgb::toQRgb(float r, float g, float b, QRgb& qrgb) +{ +#ifdef LUMINANCE_USE_SSE + v4sf rgb = (*m_Pimpl)(r,g,b); + + rgb = scaleAndRound(rgb, ZERO, TWOFIVEFIVE); + + const float* buf = reinterpret_cast(&rgb); + + qrgb = qRgb( static_cast(buf[0]), + static_cast(buf[1]), + static_cast(buf[2]) ); +#else + RgbF3 rgb = (*m_Pimpl)(r,g,b); + + qrgb = qRgb( scaleAndRound(rgb.red, 0.f, 255.f), + scaleAndRound(rgb.green, 0.f, 255.f), + scaleAndRound(rgb.blue, 0.f, 255.f) ); +#endif +} + +void FloatRgbToQRgb::toQUint16(float r, float g, float b, + quint16& red, quint16& green, quint16& blue) +{ +#ifdef LUMINANCE_USE_SSE + v4sf rgb = (*m_Pimpl)(r,g,b); + + rgb = scaleAndRound(rgb, ZERO, TWOPOWER16); + + const float* buf = reinterpret_cast(&rgb); + + red = static_cast(buf[0]); + green = static_cast(buf[1]); + blue = static_cast(buf[2]); +#else + RgbF3 rgb = (*m_Pimpl)(r,g,b); + + red = scaleAndRound(rgb.red, 0.f, 65535.f); + green = scaleAndRound(rgb.green, 0.f, 65535.f); + blue = scaleAndRound(rgb.blue, 0.f, 65535.f); +#endif +} + +void FloatRgbToQRgb::setMinMax(float min, float max) +{ + m_Pimpl->setMinMax(min, max); +} + +void FloatRgbToQRgb::setMappingMethod(LumMappingMethod method) +{ + m_Pimpl->setMappingMethod( method ); +} + +LumMappingMethod FloatRgbToQRgb::getMappingMethod() const +{ + return m_Pimpl->m_MappingMethod; +} + +//float FloatRgbToQRgb::getMinLuminance() const +//{ +// return m_Pimpl->m_MinValue; +//} + +//float FloatRgbToQRgb::getMaxLuminance() const +//{ +// return m_Pimpl->m_MaxValue; +//} diff -Nru luminance-2.2.1/src/Common/FloatRgbToQRgb.h luminance-2.3.0/src/Common/FloatRgbToQRgb.h --- luminance-2.2.1/src/Common/FloatRgbToQRgb.h 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/src/Common/FloatRgbToQRgb.h 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,79 @@ +/* + * This file is a part of Luminance HDR package. + * ---------------------------------------------------------------------- + * Copyright (C) 2012 Davide Anastasia + * + * This program 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * ---------------------------------------------------------------------- + */ + +#ifndef PFSFRAME_TO_QIMAGE_MAPPING_H +#define PFSFRAME_TO_QIMAGE_MAPPING_H + +//! \file FloatRgbToQRgb.h +//! \brief This file creates common routines for mapping float RGB values into +//! 255 levels QImage +//! \author Davide Anastasia +//! \since Luminance HDR 2.3.0-beta1 + +#include +#include +#include + +// Are you changing the order? +// Feel free, but it's a fast track for troubles! +enum LumMappingMethod +{ + MAP_LINEAR = 0, + MAP_GAMMA1_4 = 1, + MAP_GAMMA1_8 = 2, + MAP_GAMMA2_2 = 3, + MAP_GAMMA2_6 = 4, + MAP_LOGARITHMIC = 5 +}; + +//! \brief Private implementation for the class \c FloatRgbToQRgb +struct FloatRgbToQRgbImpl; + +class FloatRgbToQRgb +{ +public: + // ctor + FloatRgbToQRgb(float min_value = 0.0f, + float max_value = 1.0f, + LumMappingMethod mapping_method = MAP_LINEAR); + + ~FloatRgbToQRgb(); + + // non-const functions + void setMinMax(float min, float max); + void setMappingMethod(LumMappingMethod method); + + // const functions + //float getMinLuminance() const; + //float getMaxLuminance() const; + LumMappingMethod getMappingMethod() const; + + void toQRgb(float r, float g, float b, QRgb& qrgb); + + void toQUint16(float r, float g, float b, + quint16& red, quint16& green, quint16& blue); + +private: + // private implementation, useful to get a more performant implementation + QScopedPointer m_Pimpl; +}; + +#endif // PFSFRAME_TO_QIMAGE_MAPPING_H diff -Nru luminance-2.2.1/src/Common/global.cpp luminance-2.3.0/src/Common/global.cpp --- luminance-2.2.1/src/Common/global.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Common/global.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -27,6 +27,7 @@ #include #include #include +#include #include #include "Common/config.h" @@ -35,69 +36,6 @@ #include "Common/global.h" #include "global.hxx" -QTranslator* lastGuiTranslator; -QTranslator* lastQtTranslator; - -/** - * \return "" when fail, out file name when successful - */ -/* -QString saveLDRImage(QWidget *parent, const QString initialFileName, const QImage *image, bool batchMode) -{ - LuminanceOptions luminance_options; - - QString outfname = QDir(luminance_options.getDefaultPathLdrOut()).filePath(initialFileName); - if (!batchMode) - { - QString filetypes = QObject::tr("All LDR formats") + " (*.jpg *.jpeg *.png *.ppm *.pbm *.bmp *.JPG *.JPEG *.PNG *.PPM *.PBM *.BMP);;"; - filetypes += "JPEG (*.jpg *.jpeg *.JPG *.JPEG);;" ; - filetypes += "PNG (*.png *.PNG);;" ; - filetypes += "PPM PBM (*.ppm *.pbm *.PPM *.PBM);;"; - filetypes += "BMP (*.bmp *.BMP)"; - - outfname = QFileDialog::getSaveFileName(parent, - QObject::tr("Save the LDR image as..."), - QDir(luminance_options.getDefaultPathLdrOut()).filePath(initialFileName), - filetypes); - } - - if( !outfname.isEmpty() ) - { - QFileInfo qfi(outfname); - luminance_options.setDefaultPathLdrOut(qfi.path()); //save settings - QString format = qfi.suffix(); - - if ( qfi.suffix().isEmpty() ) - { - // default as png - format = "png"; - outfname += ".png"; - } - int quality = 100; - if ((format == "png" || format == "jpg") && !batchMode) - { - ImageQualityDialog savedFileQuality(image, format, parent); - QString winTitle(QObject::tr("Save as...")); - winTitle += format.toUpper(); - savedFileQuality.setWindowTitle( winTitle ); - if ( savedFileQuality.exec() == QDialog::Rejected ) - { - return ""; - } - quality = savedFileQuality.getQuality(); - } - //std::cout << quality << std::endl; - if( !(image->save(outfname, format.toLocal8Bit(), quality)) ) - { - //std::cout << "Failed to save" << std::endl; - QMessageBox::warning(0,"",QObject::tr("Failed to save ") + outfname + "", QMessageBox::Ok, QMessageBox::NoButton); - return ""; - } - } // if(!outfname.isEmpty()) - return outfname; -} -*/ - bool matchesLdrFilename(QString file) { QRegExp exp(".*\\.(jpeg|jpg|tiff|tif|crw|cr2|nef|dng|mrw|orf|kdc|dcr|arw|raf|ptx|pef|x3f|raw|sr2|rw2)$", Qt::CaseInsensitive); @@ -129,36 +67,47 @@ return files; } -void installTranslators(QString lang, bool installQtTranslations) +namespace +{ +typedef QScopedPointer ScopedQTranslator; + +ScopedQTranslator lastGuiTranslator; +ScopedQTranslator lastQtTranslator; +} + +void installTranslators(const QString& lang, bool installQtTranslations) { if (lastGuiTranslator) { - QCoreApplication::removeTranslator(lastGuiTranslator); - lastGuiTranslator = 0; + QCoreApplication::removeTranslator(lastGuiTranslator.data()); + lastGuiTranslator.reset(); } if (installQtTranslations && lastQtTranslator) { - QCoreApplication::removeTranslator(lastQtTranslator); - lastQtTranslator = 0; + QCoreApplication::removeTranslator(lastQtTranslator.data()); + lastQtTranslator.reset(); } if (lang != "en") { - QTranslator* guiTranslator = new QTranslator(); + ScopedQTranslator guiTranslator( new QTranslator() ); + guiTranslator->load(QString("lang_") + lang, I18NDIR); - QCoreApplication::installTranslator(guiTranslator); - lastGuiTranslator = guiTranslator; + QCoreApplication::installTranslator(guiTranslator.data()); + lastGuiTranslator.swap( guiTranslator ); if (installQtTranslations) { - QTranslator* qtTranslator = new QTranslator(); + ScopedQTranslator qtTranslator( new QTranslator() ); + qtTranslator->load(QString("qt_") + lang, I18NDIR); - QCoreApplication::installTranslator(qtTranslator); - lastQtTranslator = qtTranslator; + QCoreApplication::installTranslator(qtTranslator.data()); + lastQtTranslator.swap( qtTranslator ); } } } -void installTranslators(bool installQtTranslations) { +void installTranslators(bool installQtTranslations) +{ LuminanceOptions luminance_options; installTranslators(luminance_options.getGuiLang(), installQtTranslations); } diff -Nru luminance-2.2.1/src/Common/global.h luminance-2.3.0/src/Common/global.h --- luminance-2.2.1/src/Common/global.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Common/global.h 2012-07-01 09:10:50.000000000 +0000 @@ -30,12 +30,12 @@ #include #include -//QString saveLDRImage(QWidget *p, const QString initialFileName, const QImage *image, bool batchMode = false); bool matchesLdrFilename(QString file); bool matchesHdrFilename(QString file); bool matchesValidHDRorLDRfilename(QString file); QStringList convertUrlListToFilenameList(QList urls); + void installTranslators(bool installQtTranslations); -void installTranslators(QString lang, bool installQtTranslations); +void installTranslators(const QString& lang, bool installQtTranslations); #endif diff -Nru luminance-2.2.1/src/Common/LuminanceOptions.cpp luminance-2.3.0/src/Common/LuminanceOptions.cpp --- luminance-2.2.1/src/Common/LuminanceOptions.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Common/LuminanceOptions.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -28,12 +28,10 @@ * */ -//#include -//#include #include #include #include -#include +#include #include "Common/LuminanceOptions.h" #include "Common/config.h" @@ -396,9 +394,9 @@ setValue(KEY_USE_CHROMA, b); } -QString LuminanceOptions::getBatchHdrPathInput() +QString LuminanceOptions::getBatchHdrPathInput(QString defaultPath) { - return value(KEY_BATCH_HDR_PATH_INPUT, QDir::currentPath()).toString(); + return value(KEY_BATCH_HDR_PATH_INPUT, defaultPath).toString(); } void LuminanceOptions::setBatchHdrPathInput(QString qstr) @@ -406,9 +404,9 @@ setValue(KEY_BATCH_HDR_PATH_INPUT, qstr); } -QString LuminanceOptions::getBatchHdrPathOutput() +QString LuminanceOptions::getBatchHdrPathOutput(QString defaultPath) { - return value(KEY_BATCH_HDR_PATH_OUTPUT, QDir::currentPath()).toString(); + return value(KEY_BATCH_HDR_PATH_OUTPUT, defaultPath).toString(); } void LuminanceOptions::setBatchHdrPathOutput(QString qstr) @@ -466,43 +464,78 @@ setValue(KEY_BATCH_TM_NUM_THREADS, v); } -int LuminanceOptions::getBatchTmDefaultOutputQuality() +QString LuminanceOptions::getBatchTmLdrFormat() { - return value(KEY_BATCH_TM_DEFAULT_OUTPUT_QUALITY, 100).toInt(); + return value(KEY_BATCH_TM_LDR_FORMAT, "JPEG").toString(); } -void LuminanceOptions::setBatchTmDefaultOutputQuality(int v) +void LuminanceOptions::setBatchTmLdrFormat(QString s) { - setValue(KEY_BATCH_TM_DEFAULT_OUTPUT_QUALITY, v); + setValue(KEY_BATCH_TM_LDR_FORMAT, s); } -QString LuminanceOptions::getBatchTmLdrFormat() +namespace { - return value(KEY_BATCH_TM_LDR_FORMAT, "JPEG").toString(); -} - -void LuminanceOptions::setBatchTmLdrFormat(QString s) +#ifdef QT_DEBUG +struct PrintTempDir { - setValue(KEY_BATCH_TM_LDR_FORMAT, s); + PrintTempDir(QString& str): + str_(str) + {} + + ~PrintTempDir() + { + qDebug() << "Temporary directory: " << str_; + } + +private: + QString& str_; +}; +#endif // QT_DEBUG + } + QString LuminanceOptions::getTempDir() { - QString temp_dir_name = value(KEY_TEMP_RESULT_PATH, QDir::temp().absolutePath()).toString(); - QDir dir(temp_dir_name); - QFileInfo test_temp_dir_name(dir.absoluteFilePath("file")); - if ( dir.exists() && - test_temp_dir_name.isWritable() ) + QString os_temp_dir_name = QDir::temp().absolutePath(); + QString temp_dir_name = value(KEY_TEMP_RESULT_PATH, + QDir::temp().absolutePath()).toString(); +#ifdef QT_DEBUG + PrintTempDir print_temp_dir(temp_dir_name); +#endif + if ( temp_dir_name == os_temp_dir_name ) + { + // temporary directory is equal to the OS's + return temp_dir_name; + } + + QDir temp_dir(temp_dir_name); + if ( !temp_dir.exists() ) { - // directory choosen by the user (or the default one) is usable + // directory doesn't exist! + qDebug() << "Candidate temporary directory does not exist"; + // reset to OS temporary directory; + temp_dir_name = os_temp_dir_name; + remove(KEY_TEMP_RESULT_PATH); return temp_dir_name; } - else + + // directory exists... + // let's check whether I can create a file or not! + QFile file(temp_dir.filePath("test_write.txt")); + if ( !file.open(QIODevice::ReadWrite) ) { - // return default temporary directory - return QDir::temp().absolutePath(); + // directory is not writtable + qDebug() << "Candidate temporary directory is not writtable"; + // reset to OS temporary directory; + temp_dir_name = os_temp_dir_name; + remove(KEY_TEMP_RESULT_PATH); + // return temp_dir_name; } + + return temp_dir_name; } void LuminanceOptions::setTempDir(QString path) @@ -640,3 +673,33 @@ { setValue(KEY_TMOWINDOW_PREVIEWS_WIDTH, v); } + +QString LuminanceOptions::getCameraProfileFileName() +{ + return value(KEY_COLOR_CAMERA_PROFILE_FILENAME, "").toString(); +} + +void LuminanceOptions::setCameraProfileFileName(QString fname) +{ + setValue(KEY_COLOR_CAMERA_PROFILE_FILENAME, fname); +} + +QString LuminanceOptions::getMonitorProfileFileName() +{ + return value(KEY_COLOR_MONITOR_PROFILE_FILENAME).toString(); +} + +void LuminanceOptions::setMonitorProfileFileName(QString fname) +{ + setValue(KEY_COLOR_MONITOR_PROFILE_FILENAME, fname); +} + +QString LuminanceOptions::getPrinterProfileFileName() +{ + return value(KEY_COLOR_PRINTER_PROFILE_FILENAME).toString(); +} + +void LuminanceOptions::setPrinterProfileFileName(QString fname) +{ + setValue(KEY_COLOR_PRINTER_PROFILE_FILENAME, fname); +} diff -Nru luminance-2.2.1/src/Common/LuminanceOptions.h luminance-2.3.0/src/Common/LuminanceOptions.h --- luminance-2.2.1/src/Common/LuminanceOptions.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Common/LuminanceOptions.h 2012-07-01 09:10:50.000000000 +0000 @@ -34,6 +34,7 @@ #include #include #include +#include class LuminanceOptions: public QSettings { @@ -120,8 +121,8 @@ void setGuiLang(QString); // Batch HDR - QString getBatchHdrPathInput(); - QString getBatchHdrPathOutput(); + QString getBatchHdrPathInput(QString defaultPath = QDir::currentPath()); + QString getBatchHdrPathOutput(QString defaultPath = QDir::currentPath()); void setBatchHdrPathInput(QString); void setBatchHdrPathOutput(QString); @@ -131,14 +132,12 @@ QString getBatchTmPathLdrOutput(); int getBatchTmNumThreads(); QString getBatchTmLdrFormat(); - int getBatchTmDefaultOutputQuality(); void setBatchTmPathHdrInput(QString); void setBatchTmPathTmoSettings(QString); void setBatchTmPathLdrOutput(QString); void setBatchTmNumThreads(int); void setBatchTmLdrFormat(QString); - void setBatchTmDefaultOutputQuality(int); int getNumThreads() { return getBatchTmNumThreads(); } void setNumThreads(int i) { setBatchTmNumThreads(i); } @@ -189,6 +188,16 @@ int getPreviewWidth(); void setPreviewWidth(int); + + // Color Management + QString getCameraProfileFileName(); + void setCameraProfileFileName(QString); + + QString getMonitorProfileFileName(); + void setMonitorProfileFileName(QString); + + QString getPrinterProfileFileName(); + void setPrinterProfileFileName(QString); }; #endif diff -Nru luminance-2.2.1/src/Common/msec_timer.h luminance-2.3.0/src/Common/msec_timer.h --- luminance-2.2.1/src/Common/msec_timer.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Common/msec_timer.h 2012-07-01 09:10:50.000000000 +0000 @@ -23,8 +23,8 @@ * */ -#ifndef __TIMING_C_H__ -#define __TIMING_C_H__ +#ifndef MSEC_TIMER_H +#define MSEC_TIMER_H #if defined(_WIN32) || defined(__CYGWIN__) #define WIN_TIMER @@ -85,4 +85,4 @@ double convert_to_gigaflops(double, double); -#endif // __TIMING_C_H__ +#endif // MSEC_TIMER_H diff -Nru luminance-2.2.1/src/Common/ResourceHandlerCommon.h luminance-2.3.0/src/Common/ResourceHandlerCommon.h --- luminance-2.2.1/src/Common/ResourceHandlerCommon.h 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/src/Common/ResourceHandlerCommon.h 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,44 @@ +/* + * This file is a part of LuminanceHDR package. + * ---------------------------------------------------------------------- + * Copyright (C) 2012 Davide Anastasia + * + * This program 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * ---------------------------------------------------------------------- + */ + +#ifndef RESOURCEHANDLERCOMMON_H +#define RESOURCEHANDLERCOMMON_H + +//! \file ResourceHandlerCommon.h +//! \brief This file contains simple resource handlers +//! \author Davide Anastasia +//! \date 2012 05 05 +//! \since 2.3.0-beta1 + +#include +#include + +struct ResourceHandlerTraitsStdIoFile +{ + static inline + void cleanup(FILE* p) + { + if ( p ) fclose(p); + } +}; +typedef QScopedPointer ResouceHandlerFile; + +#endif diff -Nru luminance-2.2.1/src/Common/ResourceHandler.h luminance-2.3.0/src/Common/ResourceHandler.h --- luminance-2.2.1/src/Common/ResourceHandler.h 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/src/Common/ResourceHandler.h 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,99 @@ +/* + * This file is a part of LuminanceHDR package. + * ---------------------------------------------------------------------- + * Copyright (C) 2012 Davide Anastasia + * + * This program 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * ---------------------------------------------------------------------- + */ + +#ifndef RESOURCEHANDLER_H +#define RESOURCEHANDLER_H + +template +struct ResourceHandlerTraits +{ + static + void cleanup(T* p) + { + delete p; + } +}; + +//! \brief This class resemble QScopedPointer or boost::scoped_ptr +//! however, it doesn't provide and operator*(), which allow to store +//! a pointer to void +template > +class ResourceHandler // : boost::noncopyable +{ +public: + ResourceHandler(T* p = 0): + p_(p) + {} + + inline + void reset(T* p = 0) + { + if (p == p_) return; + if (p_ != 0) + { + Traits::cleanup(p_); + } + p_ = p; + } + + inline + ~ResourceHandler() + { + T *oldD = this->p_; + Traits::cleanup(oldD); + this->p_ = 0; + } + + inline + T* data() + { + return p_; + } + + inline + T* take() + { + T* old_p = p_; + p_ = 0; + return old_p; + } + + inline + operator bool() + { + return p_; + } + + inline + bool operator!() + { + return !p_; + } + + +private: + ResourceHandler(const ResourceHandler&); + ResourceHandler& operator=(const ResourceHandler&); + + T* p_; +}; + +#endif // RESOURCEHANDLER_H diff -Nru luminance-2.2.1/src/Common/ResourceHandlerLcms.h luminance-2.3.0/src/Common/ResourceHandlerLcms.h --- luminance-2.2.1/src/Common/ResourceHandlerLcms.h 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/src/Common/ResourceHandlerLcms.h 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,72 @@ +/* + * This file is a part of LuminanceHDR package. + * ---------------------------------------------------------------------- + * Copyright (C) 2012 Davide Anastasia + * + * This program 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * ---------------------------------------------------------------------- + */ + +#ifndef RESOURCEHANDLERLCMS_H +#define RESOURCEHANDLERLCMS_H + +//! \file ResourceHandlerLcms.h +//! \brief This file contains simple resource handlers for LCMS2 library +//! \author Davide Anastasia +//! \date 2012 05 05 +//! \since 2.3.0-beta1 + +#include "ResourceHandler.h" +#include +#include +#ifdef QT_DEBUG +#include +#endif + +struct CleanUpCmsProfile +{ + static inline + void cleanup(cmsHPROFILE profile) + { + if ( profile ) + { +#ifdef QT_DEBUG + qDebug() << "CleanUpCmsProfile::cleanup()"; +#endif + cmsCloseProfile(profile); + } + } +}; +typedef ResourceHandler ScopedCmsProfile; +// typedef ResourceHandler ScopedCmsProfile; + +struct CleanUpCmsTransform +{ + static inline + void cleanup(cmsHTRANSFORM transform) + { + if ( transform ) + { +#ifdef QT_DEBUG + qDebug() << "CleanUpCmsTransform::cleanup()"; +#endif + cmsDeleteTransform(transform); + } + } +}; +typedef ResourceHandler ScopedCmsTransform; +//typedef QScopedPointer ScopedCmsTransformV2; + +#endif diff -Nru luminance-2.2.1/src/Common/SavedParametersDialog.cpp luminance-2.3.0/src/Common/SavedParametersDialog.cpp --- luminance-2.2.1/src/Common/SavedParametersDialog.cpp 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/src/Common/SavedParametersDialog.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,174 @@ +/** + * This file is a part of Luminance HDR package. + * ---------------------------------------------------------------------- + * Copyright (C) 2011 Franco Comida + * + * This program 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * ---------------------------------------------------------------------- + * + * @author Franco Comida + * + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "SavedParametersDialog.h" +#include "ui_SavedParametersDialog.h" + +SavedParametersDialog::SavedParametersDialog(QWidget *parent): + QDialog(parent), + model(new QSqlQueryModel()), + m_Ui(new Ui::SavedParametersDialog) +{ + m_Ui->setupUi(this); + + QString sqlQuery; + sqlQuery += "SELECT comment, 'ashikhmin' AS operator FROM ashikhmin UNION "; + sqlQuery += "SELECT comment, 'drago' AS operator FROM drago UNION "; + sqlQuery += "SELECT comment, 'durand' AS operator FROM durand UNION "; + sqlQuery += "SELECT comment, 'fattal' AS operator FROM fattal UNION "; + sqlQuery += "SELECT comment, 'mantiuk06' AS operator FROM mantiuk06 UNION "; + sqlQuery += "SELECT comment, 'mantiuk08' AS operator FROM mantiuk08 UNION "; + sqlQuery += "SELECT comment, 'pattanaik' AS operator FROM pattanaik UNION "; + sqlQuery += "SELECT comment, 'reinhard02' AS operator FROM reinhard02 UNION "; + sqlQuery += "SELECT comment, 'reinhard05' AS operator FROM reinhard05"; + model->setQuery(sqlQuery); + + model->setHeaderData(0, Qt::Horizontal, tr("Comment")); + model->setHeaderData(1, Qt::Horizontal, tr("TM Operator")); + + m_Ui->tableView->setModel(model); + m_Ui->tableView->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents); + m_Ui->tableView->show(); +} + + +SavedParametersDialog::SavedParametersDialog(TMOperator op, QWidget *parent): + QDialog(parent), + model(new QSqlTableModel()), + m_Ui(new Ui::SavedParametersDialog) +{ + m_Ui->setupUi(this); + //QSqlDatabase db = QSqlDatabase::database(); + + QSqlTableModel* tableModel = (QSqlTableModel*)model; + int col = 0; + switch (op) + { + case ashikhmin: + tableModel->setTable("ashikhmin"); + tableModel->select(); + model->setHeaderData(col++, Qt::Horizontal, tr("Simple")); + model->setHeaderData(col++, Qt::Horizontal, tr("Equation 2")); + model->setHeaderData(col++, Qt::Horizontal, tr("Local Contrast Threshold")); + break; + case drago: + tableModel->setTable("drago"); + tableModel->select(); + model->setHeaderData(col++, Qt::Horizontal, tr("Bias")); + break; + case durand: + tableModel->setTable("durand"); + tableModel->select(); + model->setHeaderData(col++, Qt::Horizontal, tr("Spatial Kernel Sigma")); + model->setHeaderData(col++, Qt::Horizontal, tr("Range Kernel Sigma")); + model->setHeaderData(col++, Qt::Horizontal, tr("Base Contrast")); + break; + case fattal: + tableModel->setTable("fattal"); + tableModel->select(); + model->setHeaderData(col++, Qt::Horizontal, tr("Alpha")); + model->setHeaderData(col++, Qt::Horizontal, tr("Beta")); + model->setHeaderData(col++, Qt::Horizontal, tr("Color Saturation")); + model->setHeaderData(col++, Qt::Horizontal, tr("Noise Reduction")); + model->setHeaderData(col++, Qt::Horizontal, tr("Old Fattal")); + break; + case mantiuk06: + tableModel->setTable("mantiuk06"); + tableModel->select(); + model->setHeaderData(col++, Qt::Horizontal, tr("Contrast Equalization")); + model->setHeaderData(col++, Qt::Horizontal, tr("Contrast Factor")); + model->setHeaderData(col++, Qt::Horizontal, tr("Saturation Factor")); + model->setHeaderData(col++, Qt::Horizontal, tr("Detail Factor")); + break; + case mantiuk08: + tableModel->setTable("mantiuk08"); + tableModel->select(); + model->setHeaderData(col++, Qt::Horizontal, tr("Color Saturation")); + model->setHeaderData(col++, Qt::Horizontal, tr("Contrast Enhancement")); + model->setHeaderData(col++, Qt::Horizontal, tr("Luminance Level")); + model->setHeaderData(col++, Qt::Horizontal, tr("Manual Luminance Level")); + break; + case pattanaik: + tableModel->setTable("pattanaik"); + tableModel->select(); + model->setHeaderData(col++, Qt::Horizontal, tr("Cone and Rod based on Luminance")); + model->setHeaderData(col++, Qt::Horizontal, tr("Local Tonemapping")); + model->setHeaderData(col++, Qt::Horizontal, tr("Cone Level")); + model->setHeaderData(col++, Qt::Horizontal, tr("Rod Level")); + model->setHeaderData(col++, Qt::Horizontal, tr("Multiplier")); + break; + case reinhard02: + tableModel->setTable("reinhard02"); + tableModel->select(); + model->setHeaderData(col++, Qt::Horizontal, tr("Use Scales")); + model->setHeaderData(col++, Qt::Horizontal, tr("Key Value")); + model->setHeaderData(col++, Qt::Horizontal, tr("Phi Value")); + model->setHeaderData(col++, Qt::Horizontal, tr("Range")); + model->setHeaderData(col++, Qt::Horizontal, tr("Lower Scale")); + model->setHeaderData(col++, Qt::Horizontal, tr("Upper Scale")); + break; + case reinhard05: + tableModel->setTable("reinhard05"); + tableModel->select(); + model->setHeaderData(col++, Qt::Horizontal, tr("Brightness")); + model->setHeaderData(col++, Qt::Horizontal, tr("Chromatic Adaptation")); + model->setHeaderData(col++, Qt::Horizontal, tr("Light Adaptation")); + break; + } + model->setHeaderData(col++, Qt::Horizontal, tr("Pre-gamma")); + model->setHeaderData(col++, Qt::Horizontal, tr("Comment")); + + m_Ui->tableView->setModel(model); + m_Ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); + m_Ui->tableView->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents); + m_Ui->tableView->show(); +} + +SavedParametersDialog::~SavedParametersDialog() +{ + delete model; +} + +QModelIndex SavedParametersDialog::getCurrentIndex() +{ + return m_Ui->tableView->currentIndex(); +} + +QSqlQueryModel* SavedParametersDialog::getModel() +{ + return model; +} + +QModelIndexList SavedParametersDialog::getSelectedRows() +{ + return m_Ui->tableView->selectionModel()->selectedRows(); +} diff -Nru luminance-2.2.1/src/Common/SavedParametersDialog.h luminance-2.3.0/src/Common/SavedParametersDialog.h --- luminance-2.2.1/src/Common/SavedParametersDialog.h 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/src/Common/SavedParametersDialog.h 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,60 @@ +/** + * This file is a part of Luminance HDR package. + * ---------------------------------------------------------------------- + * Copyright (C) 2011 Franco Comida + * + * This program 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * ---------------------------------------------------------------------- + * + * @author Franco Comida + * + */ + +#ifndef SAVEDPARAMETERSDIALOG_H +#define SAVEDPARAMETERSDIALOG_H + +#include +#include + +#include "Core/TonemappingOptions.h" + +namespace Ui +{ + class SavedParametersDialog; +} + +class SavedParametersDialog : public QDialog +{ + Q_OBJECT + +public: + //! \brief Default constructor + explicit SavedParametersDialog(QWidget *parent = 0); + + //! \brief Specialized ctor + SavedParametersDialog(TMOperator op, QWidget *parent = 0); + + ~SavedParametersDialog(); + + QModelIndex getCurrentIndex(); + QModelIndexList getSelectedRows(); + QSqlQueryModel* getModel(); + +protected: + QSqlQueryModel* model; + QScopedPointer m_Ui; + +}; +#endif diff -Nru luminance-2.2.1/src/Common/SavedParametersDialog.ui luminance-2.3.0/src/Common/SavedParametersDialog.ui --- luminance-2.2.1/src/Common/SavedParametersDialog.ui 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/src/Common/SavedParametersDialog.ui 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,103 @@ + + + SavedParametersDialog + + + Qt::ApplicationModal + + + + 0 + 0 + 835 + 300 + + + + Saved Parameters + + + + + + + + QAbstractItemView::NoEditTriggers + + + QAbstractItemView::SelectRows + + + true + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + + + + + + + buttonBox + accepted() + SavedParametersDialog + accept() + + + 689 + 278 + + + 586 + 1 + + + + + buttonBox + rejected() + SavedParametersDialog + reject() + + + 762 + 283 + + + 721 + -2 + + + + + tableView + doubleClicked(QModelIndex) + SavedParametersDialog + accept() + + + 417 + 134 + + + 417 + 149 + + + + + diff -Nru luminance-2.2.1/src/Core/IOWorker.cpp luminance-2.3.0/src/Core/IOWorker.cpp --- luminance-2.2.1/src/Core/IOWorker.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Core/IOWorker.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -30,10 +30,9 @@ #include #include #include -#ifdef QT_DEBUG #include -#endif #include +#include #include "Core/IOWorker.h" #include "Fileformat/pfs_file_format.h" @@ -56,7 +55,7 @@ #endif } -bool IOWorker::write_hdr_frame(GenericViewer* hdr_viewer, QString filename) +bool IOWorker::write_hdr_frame(GenericViewer* hdr_viewer, const QString& filename) { pfs::Frame* hdr_frame = hdr_viewer->getFrame(); @@ -71,7 +70,7 @@ return status; } -bool IOWorker::write_hdr_frame(pfs::Frame *hdr_frame, QString filename) +bool IOWorker::write_hdr_frame(pfs::Frame *hdr_frame, const QString& filename) { bool status = true; emit IO_init(); @@ -123,11 +122,18 @@ return status; } -bool IOWorker::write_ldr_frame(GenericViewer* ldr_viewer, QString filename, int quality, TonemappingOptions* tmopts) +bool IOWorker::write_ldr_frame(GenericViewer* ldr_viewer, + const QString& filename, int quality, + TonemappingOptions* tmopts) { pfs::Frame* ldr_frame = ldr_viewer->getFrame(); - bool status = write_ldr_frame(ldr_frame, filename, quality, tmopts, ldr_viewer->getMinLuminanceValue(), ldr_viewer->getMaxLuminanceValue()); + bool status = write_ldr_frame(ldr_frame, + filename, quality, + tmopts, + ldr_viewer->getMinLuminanceValue(), + ldr_viewer->getMaxLuminanceValue(), + ldr_viewer->getLuminanceMappingMethod()); if ( status ) { @@ -141,7 +147,13 @@ } -bool IOWorker::write_ldr_frame(pfs::Frame* ldr_input, QString filename, int quality, TonemappingOptions* tmopts, float min_luminance, float max_luminance) +bool IOWorker::write_ldr_frame(pfs::Frame* ldr_input, + const QString& filename, + int quality, + TonemappingOptions* tmopts, + float min_luminance, + float max_luminance, + LumMappingMethod mapping_method) { bool status = true; emit IO_init(); @@ -159,7 +171,12 @@ if (qfi.suffix().toUpper().startsWith("TIF")) { // QScopedArrayPointer will call delete [] when this object goes out of scope - QScopedArrayPointer pixmap(fromLDRPFSto16bitsPixmap(ldr_input, min_luminance, max_luminance)); + QScopedArrayPointer pixmap( + fromLDRPFSto16bitsPixmap(ldr_input, + min_luminance, + max_luminance, + mapping_method) + ); int width = ldr_input->getWidth(); int height = ldr_input->getHeight(); try @@ -174,12 +191,52 @@ emit write_ldr_success(ldr_input, filename); } - catch(...) + catch (...) { status = false; emit write_ldr_failed(); } } + else if (qfi.suffix().toUpper().startsWith("JP")) + { + QScopedPointer image(fromLDRPFStoQImage(ldr_input, + min_luminance, + max_luminance, + mapping_method)); + JpegWriter writer(image.data(), filename, quality); + if (writer.writeQImageToJpeg()) + { + if (tmopts != NULL) + ExifOperations::writeExifData(encodedName.constData(), operations->getExifComment().toStdString()); + + emit write_ldr_success(ldr_input, filename); + } + else + { + status = false; + emit write_ldr_failed(); + } + } + else if (qfi.suffix().toUpper().startsWith("PNG")) + { + QScopedPointer image(fromLDRPFStoQImage(ldr_input, + min_luminance, + max_luminance, + mapping_method)); + PngWriter writer(image.data(), filename, quality); + if (writer.writeQImageToPng()) + { + if (tmopts != NULL) + ExifOperations::writeExifData(encodedName.constData(), operations->getExifComment().toStdString()); + + emit write_ldr_success(ldr_input, filename); + } + else + { + status = false; + emit write_ldr_failed(); + } + } else { // QScopedPointer will call delete when this object goes out of scope @@ -202,7 +259,7 @@ return status; } -pfs::Frame* IOWorker::read_hdr_frame(QString filename) +pfs::Frame* IOWorker::read_hdr_frame(const QString& filename) { emit IO_init(); @@ -260,7 +317,15 @@ else if ( rawextensions.indexOf(extension) != -1 ) { // raw file detected - hdrpfsframe = readRawIntoPfsFrame(encodedFileName, TempPath, &luminanceOptions, false, progress_cb, this); + try { + hdrpfsframe = readRawIntoPfsFrame(encodedFileName, TempPath, &luminanceOptions, false, progress_cb, this); + } + catch (QString err) + { + qDebug("TH: catched exception"); + emit read_hdr_failed((err + " : %1").arg(filename)); + return NULL; + } } else { @@ -276,6 +341,12 @@ return NULL; } } + catch (const std::runtime_error& err) + { + qDebug() << err.what(); + emit read_hdr_failed(err.what()); + return NULL; + } catch (...) { qDebug("TH: catched exception"); diff -Nru luminance-2.2.1/src/Core/IOWorker.h luminance-2.3.0/src/Core/IOWorker.h --- luminance-2.2.1/src/Core/IOWorker.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Core/IOWorker.h 2012-07-01 09:10:50.000000000 +0000 @@ -27,8 +27,8 @@ * */ -#ifndef __IO_WORKER_H__ -#define __IO_WORKER_H__ +#ifndef IOWORKER_H +#define IOWORKER_H #ifdef __APPLE__ #include @@ -38,7 +38,8 @@ #include #include -#include + +#include "Common/FloatRgbToQRgb.h" // Forward declaration namespace pfs { @@ -66,25 +67,32 @@ ~IOWorker(); public Q_SLOTS: - pfs::Frame* read_hdr_frame(QString filename); + pfs::Frame* read_hdr_frame(const QString& filename); - bool write_hdr_frame(pfs::Frame *frame, QString filename); - bool write_hdr_frame(GenericViewer* frame, QString filename); + bool write_hdr_frame(pfs::Frame *frame, const QString& filename); + bool write_hdr_frame(GenericViewer* frame, const QString& filename); - bool write_ldr_frame(pfs::Frame* frame, QString filename, int quality, TonemappingOptions* tmopts = NULL, float min_luminance = 0.0f, float max_luminance = 1.0f); - bool write_ldr_frame(GenericViewer* frame, QString filename, int quality, TonemappingOptions* tmopts = NULL); + bool write_ldr_frame(pfs::Frame* frame, + const QString& filename, int quality, + TonemappingOptions* tmopts = NULL, + float min_luminance = 0.0f, + float max_luminance = 1.0f, + LumMappingMethod mapping_method = MAP_LINEAR); + bool write_ldr_frame(GenericViewer* frame, + const QString& filename, int quality, + TonemappingOptions* tmopts = NULL); signals: - void read_hdr_failed(QString error_message); - void read_hdr_success(pfs::Frame*, QString fname); + void read_hdr_failed(const QString& error_message); + void read_hdr_success(pfs::Frame*, const QString& fname); void write_hdr_failed(); - void write_hdr_success(pfs::Frame*, QString); - void write_hdr_success(GenericViewer*, QString); + void write_hdr_success(pfs::Frame*, const QString&); + void write_hdr_success(GenericViewer*, const QString&); void write_ldr_failed(); - void write_ldr_success(pfs::Frame*, QString); - void write_ldr_success(GenericViewer*, QString); + void write_ldr_success(pfs::Frame*, const QString&); + void write_ldr_success(GenericViewer*, const QString&); void setMaximum(int); void setValue(int); @@ -93,4 +101,4 @@ void IO_finish(); }; -#endif +#endif // IOWORKER_H diff -Nru luminance-2.2.1/src/Core/TMWorker.h luminance-2.3.0/src/Core/TMWorker.h --- luminance-2.2.1/src/Core/TMWorker.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Core/TMWorker.h 2012-07-01 09:10:50.000000000 +0000 @@ -23,8 +23,8 @@ * */ -#ifndef __TM_WORKER_H__ -#define __TM_WORKER_H__ +#ifndef TMWORKER_H +#define TMWORKER_H #include #include @@ -76,4 +76,4 @@ ProgressHelper* m_Callback; }; -#endif +#endif // TMWORKER_H diff -Nru luminance-2.2.1/src/Core/TonemappingOptions.cpp luminance-2.3.0/src/Core/TonemappingOptions.cpp --- luminance-2.2.1/src/Core/TonemappingOptions.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Core/TonemappingOptions.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -58,6 +58,7 @@ operator_options.fattaloptions.color = FATTAL02_COLOR; operator_options.fattaloptions.noiseredux = FATTAL02_NOISE_REDUX; operator_options.fattaloptions.newfattal = FATTAL02_NEWFATTAL; + operator_options.fattaloptions.fftsolver = true; // Drago operator_options.dragooptions.bias = DRAGO03_BIAS; @@ -292,10 +293,12 @@ float beta=opts->operator_options.fattaloptions.beta; float saturation2=opts->operator_options.fattaloptions.color; float noiseredux=opts->operator_options.fattaloptions.noiseredux; + bool fftsolver=opts->operator_options.fattaloptions.fftsolver; postfix+=QString("alpha_%1_").arg(alpha); postfix+=QString("beta_%1_").arg(beta); postfix+=QString("saturation_%1_").arg(saturation2); - postfix+=QString("noiseredux_%1").arg(noiseredux); + postfix+=QString("noiseredux_%1_").arg(noiseredux); + postfix+=QString("fftsolver_%1").arg(fftsolver); } break; case ashikhmin: { @@ -414,11 +417,13 @@ float beta=opts->operator_options.fattaloptions.beta; float saturation2=opts->operator_options.fattaloptions.color; float noiseredux=opts->operator_options.fattaloptions.noiseredux; + bool fftsolver=opts->operator_options.fattaloptions.fftsolver; caption+="Fattal: ~ "; caption+=QString("Alpha=%1 ~ ").arg(alpha); caption+=QString("Beta=%1 ~ ").arg(beta); caption+=QString("Saturation=%1 ~ ").arg(saturation2); - caption+=QString("NoiseRedux=%1").arg(noiseredux); + caption+=QString("NoiseRedux=%1 ~ ").arg(noiseredux); + caption+=QString("FFTSolver=%1").arg(fftsolver); } break; case ashikhmin: { diff -Nru luminance-2.2.1/src/Core/TonemappingOptions.h luminance-2.3.0/src/Core/TonemappingOptions.h --- luminance-2.2.1/src/Core/TonemappingOptions.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Core/TonemappingOptions.h 2012-07-01 09:10:50.000000000 +0000 @@ -29,8 +29,8 @@ * */ -#ifndef __TonemappingOptions_H__ -#define __TonemappingOptions_H__ +#ifndef TONEMAPPINGOPTIONS_H +#define TONEMAPPINGOPTIONS_H #include @@ -44,6 +44,7 @@ public: int origxsize; // this parameter should be coming from the UI + int xsize_percent; // this parameter should be coming from the UI int xsize; // this parameter should be coming from the frame int quality; float pregamma; @@ -68,7 +69,8 @@ float beta; float color; float noiseredux; - bool newfattal; + bool newfattal; + bool fftsolver; } fattaloptions; struct { bool autolum; @@ -142,4 +144,4 @@ const TonemappingOptions* opts; }; -#endif +#endif // TONEMAPPINGOPTIONS_H diff -Nru luminance-2.2.1/src/Exif/ExifOperations.cpp luminance-2.3.0/src/Exif/ExifOperations.cpp --- luminance-2.2.1/src/Exif/ExifOperations.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Exif/ExifOperations.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -31,7 +31,7 @@ namespace ExifOperations { - void writeExifData(const std::string& filename, const std::string& comment) + void writeExifData(const std::string& filename, const std::string& comment, float expotime) { Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(filename); image->readMetadata(); @@ -39,6 +39,14 @@ exifData["Exif.Image.Software"]="Created with opensource tool Luminance HDR, http://qtpfsgui.sourceforge.net"; exifData["Exif.Image.ImageDescription"]=comment; exifData["Exif.Photo.UserComment"]=(QString("charset=\"Ascii\" ") + QString::fromStdString(comment)).toStdString(); + if (expotime != 100.0f) { + const Exiv2::ValueType v(expotime*12.07488f/100); + const Exiv2::ValueType r(v.toRational()); + exifData["Exif.Photo.ExposureTime"] = r; + const Exiv2::ValueType f(1.0); + const Exiv2::ValueType fr(f.toRational()); + exifData["Exif.Photo.FNumber"] = fr; + } image->setExifData(exifData); image->writeMetadata(); } @@ -246,4 +254,4 @@ return 0; } } -} \ No newline at end of file +} diff -Nru luminance-2.2.1/src/Exif/ExifOperations.h luminance-2.3.0/src/Exif/ExifOperations.h --- luminance-2.2.1/src/Exif/ExifOperations.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Exif/ExifOperations.h 2012-07-01 09:10:50.000000000 +0000 @@ -28,7 +28,7 @@ namespace ExifOperations { - void writeExifData(const std::string& filename, const std::string& comment); + void writeExifData(const std::string& filename, const std::string& comment, float expotime = 100.0f); void copyExifData(const std::string& from, const std::string& to, bool dont_overwrite); float obtain_avg_lum(const std::string& filename); int obtain_rotation(const std::string& filename); diff -Nru luminance-2.2.1/src/Fileformat/CMakeLists.txt luminance-2.3.0/src/Fileformat/CMakeLists.txt --- luminance-2.2.1/src/Fileformat/CMakeLists.txt 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Fileformat/CMakeLists.txt 2012-07-01 09:10:50.000000000 +0000 @@ -1,13 +1,20 @@ #SET(FILES_UI ) SET(FILES_H -${CMAKE_CURRENT_SOURCE_DIR}/pfstiff.h) +${CMAKE_CURRENT_SOURCE_DIR}/pfstiff.h +${CMAKE_CURRENT_SOURCE_DIR}/jpegreader.h +${CMAKE_CURRENT_SOURCE_DIR}/jpegwriter.h +${CMAKE_CURRENT_SOURCE_DIR}/pngwriter.h +) + SET(FILES_HXX ${CMAKE_CURRENT_SOURCE_DIR}/pfs_file_format.h ${CMAKE_CURRENT_SOURCE_DIR}/pfsinraw.h ${CMAKE_CURRENT_SOURCE_DIR}/pfsout16bitspixmap.h ${CMAKE_CURRENT_SOURCE_DIR}/pfsoutldrimage.h +${CMAKE_CURRENT_SOURCE_DIR}/pfsouthdrimage.h ${CMAKE_CURRENT_SOURCE_DIR}/rgbeio.h ) + SET(FILES_CPP ${CMAKE_CURRENT_SOURCE_DIR}/rgbeio.cpp ${CMAKE_CURRENT_SOURCE_DIR}/pfstiff.cpp @@ -15,9 +22,14 @@ ${CMAKE_CURRENT_SOURCE_DIR}/pfsinrgbe.cpp ${CMAKE_CURRENT_SOURCE_DIR}/pfsout16bitspixmap.cpp ${CMAKE_CURRENT_SOURCE_DIR}/pfsoutldrimage.cpp +${CMAKE_CURRENT_SOURCE_DIR}/pfsouthdrimage.cpp ${CMAKE_CURRENT_SOURCE_DIR}/pfsinraw.cpp ${CMAKE_CURRENT_SOURCE_DIR}/pfsinexr.cpp -${CMAKE_CURRENT_SOURCE_DIR}/pfsoutexr.cpp) +${CMAKE_CURRENT_SOURCE_DIR}/pfsoutexr.cpp +${CMAKE_CURRENT_SOURCE_DIR}/jpegreader.cpp +${CMAKE_CURRENT_SOURCE_DIR}/jpegwriter.cpp +${CMAKE_CURRENT_SOURCE_DIR}/pngwriter.cpp +) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) diff -Nru luminance-2.2.1/src/Fileformat/jpegreader.cpp luminance-2.3.0/src/Fileformat/jpegreader.cpp --- luminance-2.2.1/src/Fileformat/jpegreader.cpp 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/src/Fileformat/jpegreader.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,456 @@ +/** + * This file is a part of Luminance HDR package. + * ---------------------------------------------------------------------- + * Copyright (C) 2012 Franco Comida, Davide Anastasia + * + * This program 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * ---------------------------------------------------------------------- + * + * @author Franco Comida + * Original implementation + * @author Davide Anastasia + * Code refactory + * + */ + +#include +#include +#include +#include +#include +#include + +#include "jpegreader.h" + +#include "Common/LuminanceOptions.h" +#include "Common/ResourceHandlerCommon.h" +#include "Common/ResourceHandlerLcms.h" + +namespace +{ + +/////////////////////////////////////////////////////////////////////////////// +// +// Code taken from iccjpeg.c from lcms distribution +// +// + +#define ICC_MARKER (JPEG_APP0 + 2) /* JPEG marker code for ICC */ +#define ICC_OVERHEAD_LEN 14 /* size of non-profile data in APP2 */ +#define MAX_BYTES_IN_MARKER 65533 /* maximum data len of a JPEG marker */ +#define MAX_DATA_BYTES_IN_MARKER (MAX_BYTES_IN_MARKER - ICC_OVERHEAD_LEN) + + +/* + * Prepare for reading an ICC profile + */ + +void setup_read_icc_profile (j_decompress_ptr cinfo) +{ + /* Tell the library to keep any APP2 data it may find */ + jpeg_save_markers(cinfo, ICC_MARKER, 0xFFFF); +} + +/* + * Handy subroutine to test whether a saved marker is an ICC profile marker. + */ + +static boolean +marker_is_icc (jpeg_saved_marker_ptr marker) +{ + return + marker->marker == ICC_MARKER && + marker->data_length >= ICC_OVERHEAD_LEN && + /* verify the identifying string */ + GETJOCTET(marker->data[0]) == 0x49 && + GETJOCTET(marker->data[1]) == 0x43 && + GETJOCTET(marker->data[2]) == 0x43 && + GETJOCTET(marker->data[3]) == 0x5F && + GETJOCTET(marker->data[4]) == 0x50 && + GETJOCTET(marker->data[5]) == 0x52 && + GETJOCTET(marker->data[6]) == 0x4F && + GETJOCTET(marker->data[7]) == 0x46 && + GETJOCTET(marker->data[8]) == 0x49 && + GETJOCTET(marker->data[9]) == 0x4C && + GETJOCTET(marker->data[10]) == 0x45 && + GETJOCTET(marker->data[11]) == 0x0; +} + +boolean read_icc_profile (j_decompress_ptr cinfo, + JOCTET **icc_data_ptr, + unsigned int *icc_data_len) +{ + jpeg_saved_marker_ptr marker; + int num_markers = 0; + int seq_no; + JOCTET *icc_data; + unsigned int total_length; +#define MAX_SEQ_NO 255 /* sufficient since marker numbers are bytes */ + char marker_present[MAX_SEQ_NO+1]; /* 1 if marker found */ + unsigned int data_length[MAX_SEQ_NO+1]; /* size of profile data in marker */ + unsigned int data_offset[MAX_SEQ_NO+1]; /* offset for data in marker */ + + *icc_data_ptr = NULL; /* avoid confusion if false return */ + *icc_data_len = 0; + + /* This first pass over the saved markers discovers whether there are + * any ICC markers and verifies the consistency of the marker numbering. + */ + + for (seq_no = 1; seq_no <= MAX_SEQ_NO; seq_no++) + marker_present[seq_no] = 0; + + for (marker = cinfo->marker_list; marker != NULL; marker = marker->next) { + if (marker_is_icc(marker)) { + if (num_markers == 0) + num_markers = GETJOCTET(marker->data[13]); + else if (num_markers != GETJOCTET(marker->data[13])) { + qDebug() << "inconsistent num_markers fields"; + return false; /* inconsistent num_markers fields */ + } + seq_no = GETJOCTET(marker->data[12]); + if (seq_no <= 0 || seq_no > num_markers) { + qDebug() << "bogus sequence number"; + return false; /* bogus sequence number */ + } + if (marker_present[seq_no]) { + qDebug() << "duplicate sequence numbers"; + return false; /* duplicate sequence numbers */ + } + marker_present[seq_no] = 1; + data_length[seq_no] = marker->data_length - ICC_OVERHEAD_LEN; + } + } + + if (num_markers == 0) { + qDebug() << "num_markers = 0"; + return false; + } + + /* Check for missing markers, count total space needed, + * compute offset of each marker's part of the data. + */ + + total_length = 0; + for (seq_no = 1; seq_no <= num_markers; seq_no++) { + if (marker_present[seq_no] == 0) { + qDebug() << "missing sequence number"; + return false; /* missing sequence number */ + } + data_offset[seq_no] = total_length; + total_length += data_length[seq_no]; + } + + if (total_length <= 0) { + qDebug() << "found only empty markers?"; + return false; /* found only empty markers? */ + } + + /* Allocate space for assembled data */ + icc_data = (JOCTET *) malloc(total_length * sizeof(JOCTET)); + if (icc_data == NULL) + return false; /* oops, out of memory */ + + /* and fill it in */ + for (marker = cinfo->marker_list; marker != NULL; marker = marker->next) { + if (marker_is_icc(marker)) { + JOCTET FAR *src_ptr; + JOCTET *dst_ptr; + unsigned int length; + seq_no = GETJOCTET(marker->data[12]); + dst_ptr = icc_data + data_offset[seq_no]; + src_ptr = marker->data + ICC_OVERHEAD_LEN; + length = data_length[seq_no]; + while (length--) { + *dst_ptr++ = *src_ptr++; + } + } + } + + *icc_data_ptr = icc_data; + *icc_data_len = total_length; + + return true; +} +// +// +// End of code from iccjpeg.c +// +/////////////////////////////////////////////////////////////////////////////// + +static struct my_error_mgr +{ + struct jpeg_error_mgr pub; // "public" fields +// LPVOID Cargo; // "private" fields +} ErrorHandler; + +void my_error_handler (j_common_ptr cinfo) +{ + char buffer[JMSG_LENGTH_MAX]; + (*cinfo->err->format_message) (cinfo, buffer); + throw std::runtime_error( std::string(buffer) ); +} + +void my_output_message (j_common_ptr cinfo) +{ + char buffer[JMSG_LENGTH_MAX]; + (*cinfo->err->format_message) (cinfo, buffer); + throw std::runtime_error( std::string(buffer) ); +} + +void addAlphaValues(JSAMPROW ScanLineIn, unsigned char *ScanLineOut, int size) +{ + int h = 0; + for (int i = 0; i < size; i += 3) { + *(ScanLineOut + h) = *(ScanLineIn + i + 2); + *(ScanLineOut + h + 1) = *(ScanLineIn + i + 1); + *(ScanLineOut + h + 2) = *(ScanLineIn + i); + *(ScanLineOut + h + 3) = 255; + h += 4; + } +} + +void transform_to_rgb(JSAMPROW ScanLineIn, unsigned char *ScanLineOut, int size) +{ + for (int i = 0; i < size; i += 4) { + unsigned char C = *(ScanLineIn + i + 0); + unsigned char M = *(ScanLineIn + i + 1); + unsigned char Y = *(ScanLineIn + i + 2); + unsigned char K = *(ScanLineIn + i + 3); + *(ScanLineOut + i + 2) = C*K/255; + *(ScanLineOut + i + 1) = M*K/255; + *(ScanLineOut + i + 0) = Y*K/255; + *(ScanLineOut + i + 3) = 255; + } +} +} + +JpegReader::JpegReader(const QString& filename) : + fname(filename) +{} + +JpegReader::~JpegReader() +{} + +QImage* JpegReader::readJpegIntoQImage() +{ + bool doTransform = false; + + cinfo.err = jpeg_std_error(&ErrorHandler.pub); + ErrorHandler.pub.error_exit = my_error_handler; + ErrorHandler.pub.output_message = my_output_message; + + QByteArray ba( QFile::encodeName(fname) ); + qDebug() << "readJpegIntoQImage: filename: " << ba.data(); + + ResouceHandlerFile infile( fopen(ba.constData(), "rb") ); + if (infile.data() == NULL) + { + fprintf(stderr, "can't open %s\n", ba.data()); + return NULL; + } + + jpeg_create_decompress(&cinfo); + qDebug() << "Created decompressor"; + jpeg_stdio_src(&cinfo, infile.data()); + qDebug() << "Assigned input source"; + setup_read_icc_profile(&cinfo); + + try { + jpeg_read_header(&cinfo, true); + } + catch (const std::runtime_error& err) + { + qDebug() << err.what(); + jpeg_destroy_decompress(&cinfo); + + throw; + } + + qDebug() << "Readed JPEG headers"; + qDebug() << "cinfo.jpeg_color_space" << cinfo.jpeg_color_space; + + if (cinfo.jpeg_color_space == JCS_GRAYSCALE) + { + qDebug() << "Unsuported color space: grayscale"; + jpeg_destroy_decompress(&cinfo); + + throw std::runtime_error("Unsuported color space: grayscale"); + } + + if (cinfo.jpeg_color_space == JCS_YCCK) { + qDebug() << "Converting to CMYK"; + cinfo.out_color_space = JCS_CMYK; + } + + qDebug() << "cinfo.num_components" << cinfo.num_components; + + try { + jpeg_start_decompress(&cinfo); + } + catch (const std::runtime_error& err) + { + qDebug() << err.what(); + jpeg_destroy_decompress(&cinfo); + throw; + } + + ScopedCmsProfile hsRGB; + ScopedCmsProfile hIn; + ScopedCmsTransform xform; + + unsigned int cmsProfileLength; + JOCTET * cmsProfileBuffer; + + if ( read_icc_profile(&cinfo, &cmsProfileBuffer, &cmsProfileLength) == true ) + { +#ifdef QT_DEBUG + qDebug() << "Found embedded profile"; +#endif + hsRGB.reset( cmsCreate_sRGBProfile() ); + hIn.reset( cmsOpenProfileFromMem(cmsProfileBuffer, cmsProfileLength) ); + free(cmsProfileBuffer); + } +// else +// { +//#ifdef QT_DEBUG +// qDebug() << "Assign default profile (sRGB)"; +//#endif +// hsRGB.reset( cmsCreate_sRGBProfile() ); +// hIn.reset( cmsCreate_sRGBProfile() ); +// } + + if ( hIn && hsRGB ) + { + +#ifdef QT_DEBUG + if (cmsGetColorSpace(hIn.data()) == cmsSigRgbData) + qDebug() << "Image format = sRGB"; + else if (cmsGetColorSpace(hIn.data()) == cmsSigCmykData) + qDebug() << "Image format = CMYK"; + else if (cmsGetColorSpace(hIn.data()) == cmsSigYCbCrData) + qDebug() << "Image format = YCbCr"; + else if (cmsGetColorSpace(hIn.data()) == cmsSigLuvKData) + qDebug() << "Image format = LuvK"; +#endif + + switch (cinfo.jpeg_color_space) + { + case JCS_RGB: + case JCS_YCbCr: + { + qDebug() << "Transform colorspace = sRGB"; + xform.reset( cmsCreateTransform(hIn.data(), TYPE_RGB_8, + hsRGB.data(), TYPE_BGRA_8, + INTENT_PERCEPTUAL, 0) ); + + } break; + case JCS_CMYK: + case JCS_YCCK: + { + qDebug() << "Transform colorspace = CMYK"; + xform.reset( cmsCreateTransform(hIn.data(), TYPE_YUVK_8, + hsRGB.data(), TYPE_BGRA_8, + INTENT_PERCEPTUAL, 0) ); + } break; + default: + // This case should never happen, but at least the compiler + // stops complaining! + break; + } + + if ( xform ) { +#ifdef QT_DEBUG + qDebug() << "Created transform"; +#endif + doTransform = true; + } else + { + doTransform = false; + } + } + else + { + doTransform = false; + } + + try + { + QScopedPointer out_qimage( new QImage(cinfo.output_width, cinfo.output_height, QImage::Format_RGB32) ); + std::vector ScanLineIn(cinfo.output_width * cinfo.num_components); + JSAMPROW ScanLineOutArray[1] = { ScanLineIn.data() }; + + if ( doTransform ) + { + // CMS branch + for (int i = 0; cinfo.output_scanline < cinfo.output_height; ++i) + { + jpeg_read_scanlines(&cinfo, ScanLineOutArray, 1); + + cmsDoTransform(xform.data(), + ScanLineIn.data(), // from temporary buffer + out_qimage->scanLine(i), // write directly inside the final QImage + cinfo.output_width); + } + } + else + { + switch (cinfo.jpeg_color_space) + { + case JCS_RGB: + case JCS_YCbCr: + { + for (int i = 0; cinfo.output_scanline < cinfo.output_height; ++i) + { + jpeg_read_scanlines(&cinfo, ScanLineOutArray, 1); + + addAlphaValues(ScanLineIn.data(), + out_qimage->scanLine( i ), + cinfo.output_width * cinfo.num_components); + } + } break; + case JCS_CMYK: + case JCS_YCCK: + { + for (int i = 0; cinfo.output_scanline < cinfo.output_height; ++i) + { + jpeg_read_scanlines(&cinfo, ScanLineOutArray, 1); + + transform_to_rgb(ScanLineIn.data(), + out_qimage->scanLine( i ), + cinfo.output_width * cinfo.num_components); + } + } break; + default: + // This case should never happen, but at least the compiler + // stops complaining! + break; + } + } + + jpeg_finish_decompress(&cinfo); + jpeg_destroy_decompress(&cinfo); + + return out_qimage.take(); + } + catch (const std::runtime_error& err) + { + qDebug() << err.what(); + jpeg_destroy_decompress(&cinfo); + + throw; + } +} + diff -Nru luminance-2.2.1/src/Fileformat/jpegreader.h luminance-2.3.0/src/Fileformat/jpegreader.h --- luminance-2.2.1/src/Fileformat/jpegreader.h 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/src/Fileformat/jpegreader.h 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,48 @@ +/** + * This file is a part of Luminance HDR package. + * ---------------------------------------------------------------------- + * Copyright (C) 2012 Franco Comida + * + * This program 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * ---------------------------------------------------------------------- + * + * @author Franco Comida + * + */ + +#ifndef JPEGREADER_H +#define JPEGREADER_H + +#include +#include +#include + +#include + +class JpegReader : public QObject +{ + Q_OBJECT + + QString fname; + struct jpeg_decompress_struct cinfo; + +public: + JpegReader(const QString& filename); + ~JpegReader(); + + QImage *readJpegIntoQImage(); +}; + +#endif diff -Nru luminance-2.2.1/src/Fileformat/jpegwriter.cpp luminance-2.3.0/src/Fileformat/jpegwriter.cpp --- luminance-2.2.1/src/Fileformat/jpegwriter.cpp 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/src/Fileformat/jpegwriter.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,311 @@ +/** + * This file is a part of Luminance HDR package. + * ---------------------------------------------------------------------- + * Copyright (C) 2012 Franco Comida, Davide Anastasia + * + * This program 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * ---------------------------------------------------------------------- + * + * @author Franco Comida + * Original work + * @author Davide Anastasia + * clean up memory management + * + */ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#if defined(WIN32) || defined(__APPLE__) || defined(__FreeBSD__) +#include +#endif + +#include "jpegwriter.h" +#include "Common/ResourceHandlerCommon.h" +#include "Common/ResourceHandlerLcms.h" + +/////////////////////////////////////////////////////////////////////////////// +// +// This code is taken from iccjpeg.c from lcms distribution +/* + * Since an ICC profile can be larger than the maximum size of a JPEG marker + * (64K), we need provisions to split it into multiple markers. The format + * defined by the ICC specifies one or more APP2 markers containing the + * following data: + * Identifying string ASCII "ICC_PROFILE\0" (12 bytes) + * Marker sequence number 1 for first APP2, 2 for next, etc (1 byte) + * Number of markers Total number of APP2's used (1 byte) + * Profile data (remainder of APP2 data) + * Decoders should use the marker sequence numbers to reassemble the profile, + * rather than assuming that the APP2 markers appear in the correct sequence. + */ + +#define ICC_MARKER (JPEG_APP0 + 2) /* JPEG marker code for ICC */ +#define ICC_OVERHEAD_LEN 14 /* size of non-profile data in APP2 */ +#define MAX_BYTES_IN_MARKER 65533 /* maximum data len of a JPEG marker */ +#define MAX_DATA_BYTES_IN_MARKER (MAX_BYTES_IN_MARKER - ICC_OVERHEAD_LEN) + +/* + * This routine writes the given ICC profile data into a JPEG file. + * It *must* be called AFTER calling jpeg_start_compress() and BEFORE + * the first call to jpeg_write_scanlines(). + * (This ordering ensures that the APP2 marker(s) will appear after the + * SOI and JFIF or Adobe markers, but before all else.) + */ + +void +write_icc_profile (j_compress_ptr cinfo, + const JOCTET *icc_data_ptr, + unsigned int icc_data_len) +{ + unsigned int num_markers; /* total number of markers we'll write */ + int cur_marker = 1; /* per spec, counting starts at 1 */ + unsigned int length; /* number of bytes to write in this marker */ + + /* Calculate the number of markers we'll need, rounding up of course */ + num_markers = icc_data_len / MAX_DATA_BYTES_IN_MARKER; + if (num_markers * MAX_DATA_BYTES_IN_MARKER != icc_data_len) + num_markers++; + + while (icc_data_len > 0) { + /* length of profile to put in this marker */ + length = icc_data_len; + if (length > MAX_DATA_BYTES_IN_MARKER) + length = MAX_DATA_BYTES_IN_MARKER; + icc_data_len -= length; + + /* Write the JPEG marker header (APP2 code and marker length) */ + jpeg_write_m_header(cinfo, ICC_MARKER, + (unsigned int) (length + ICC_OVERHEAD_LEN)); + + /* Write the marker identifying string "ICC_PROFILE" (null-terminated). + * We code it in this less-than-transparent way so that the code works + * even if the local character set is not ASCII. + */ + jpeg_write_m_byte(cinfo, 0x49); + jpeg_write_m_byte(cinfo, 0x43); + jpeg_write_m_byte(cinfo, 0x43); + jpeg_write_m_byte(cinfo, 0x5F); + jpeg_write_m_byte(cinfo, 0x50); + jpeg_write_m_byte(cinfo, 0x52); + jpeg_write_m_byte(cinfo, 0x4F); + jpeg_write_m_byte(cinfo, 0x46); + jpeg_write_m_byte(cinfo, 0x49); + jpeg_write_m_byte(cinfo, 0x4C); + jpeg_write_m_byte(cinfo, 0x45); + jpeg_write_m_byte(cinfo, 0x0); + + /* Add the sequencing info */ + jpeg_write_m_byte(cinfo, cur_marker); + jpeg_write_m_byte(cinfo, (int) num_markers); + + /* Add the profile data */ + while (length--) { + jpeg_write_m_byte(cinfo, *icc_data_ptr); + icc_data_ptr++; + } + cur_marker++; + } +} + +// +// End of code from iccjpeg.c +// +/////////////////////////////////////////////////////////////////////////////// + +static struct my_error_mgr +{ + struct jpeg_error_mgr pub; // "public" fields +// LPVOID Cargo; // "private" fields +} ErrorHandler; + +void my_writer_error_handler (j_common_ptr cinfo) +{ + char buffer[JMSG_LENGTH_MAX]; + (*cinfo->err->format_message) (cinfo, buffer); + throw std::runtime_error( std::string(buffer) ); +} + +void my_writer_output_message (j_common_ptr cinfo) +{ + char buffer[JMSG_LENGTH_MAX]; + (*cinfo->err->format_message) (cinfo, buffer); + throw std::runtime_error( std::string(buffer) ); +} + +void removeAlphaValues(const unsigned char *in, JSAMPROW out, int size) +{ + int h = 0; + for (int i = 0; i < size; i += 3) { + *(out + i) = *(in + h + 2); + *(out + i + 1) = *(in + h + 1); + *(out + i + 2) = *(in + h); + h += 4; + } +} + +JpegWriter::JpegWriter(const QImage *out_qimage, QString fname, int quality): + m_out_qimage(out_qimage), + m_fname(fname), + m_quality(quality) +{} + +JpegWriter::JpegWriter(const QImage *out_qimage, int quality): + m_out_qimage(out_qimage), +// m_fname(""), empty anyway! + m_quality(quality) +{} + +bool JpegWriter::writeQImageToJpeg() +{ + cmsUInt32Number cmsProfileSize = 0; + ScopedCmsProfile hsRGB( cmsCreate_sRGBProfile() ); + + cmsSaveProfileToMem(hsRGB.data(), NULL, &cmsProfileSize); // get the size + + std::vector cmsOutputProfile(cmsProfileSize); + + cmsSaveProfileToMem(hsRGB.data(), cmsOutputProfile.data(), &cmsProfileSize); // + + qDebug() << "sRGB profile size: " << cmsProfileSize; + + struct jpeg_compress_struct cinfo; + cinfo.err = jpeg_std_error(&ErrorHandler.pub); + ErrorHandler.pub.error_exit = my_writer_error_handler; + ErrorHandler.pub.output_message = my_writer_output_message; + + jpeg_create_compress(&cinfo); + + cinfo.image_width = m_out_qimage->width(); // image width and height, in pixels + cinfo.image_height = m_out_qimage->height(); + cinfo.input_components = cinfo.num_components = 3; // # of color components per pixel + cinfo.in_color_space = JCS_RGB; // colorspace of input image + cinfo.jpeg_color_space = JCS_RGB; + + jpeg_set_defaults(&cinfo); + jpeg_set_colorspace(&cinfo, JCS_RGB); + + //avoid subsampling on high quality factor + jpeg_set_quality(&cinfo, m_quality, 1); + if (m_quality >= 70) + { + for(int i = 0; i < cinfo.num_components; i++) + { + cinfo.comp_info[i].h_samp_factor = 1; + cinfo.comp_info[i].v_samp_factor = 1; + } + } + + ResouceHandlerFile outfile; + +#if defined(WIN32) || defined(__APPLE__) || defined(__FreeBSD__) + QTemporaryFile output_temp_file; +#else + std::vector outbuf; +#endif + if ( !m_fname.isEmpty() ) // we are writing to file + { + QByteArray ba( QFile::encodeName(m_fname) ); + qDebug() << "writeQImageToJpeg: filename: " << ba.data(); + + outfile.reset( fopen(ba.data(), "wb") ); + + if (outfile.data() == NULL) + { + qDebug() << "can't open " << m_fname; + return false; + } + } + else // we are writing to memory buffer + { +#if defined(WIN32) || defined(__APPLE__) || defined(__FreeBSD__) + if ( !output_temp_file.open() ) return false; // could not open the temporary file! + + QByteArray output_temp_filename = QFile::encodeName( output_temp_file.fileName() ); + output_temp_file.close(); + outfile.reset(fopen(output_temp_filename.constData(), "w+")); + + if ( outfile.data() == NULL ) return false; +#else + std::vector t(cinfo.image_width * cinfo.image_height * cinfo.num_components); + outbuf.swap( t ); + // reset all element of the vector to zero! + std::fill(outbuf.begin(), outbuf.end(), 0); + + outfile.reset( fmemopen(outbuf.data(), outbuf.size(), "w+") ); +#endif + } + + try + { + jpeg_stdio_dest(&cinfo, outfile.data()); + jpeg_start_compress(&cinfo, true); + + write_icc_profile(&cinfo, cmsOutputProfile.data(), cmsProfileSize); + + // If an exception is raised, this buffer gets automatically destructed! + std::vector ScanLineOut(cinfo.image_width * cinfo.num_components); + JSAMPROW ScanLineOutArray[1] = { ScanLineOut.data() }; + + for (int i = 0; cinfo.next_scanline < cinfo.image_height; i++) + { + removeAlphaValues(m_out_qimage->scanLine( i ), + ScanLineOut.data(), + cinfo.image_width * cinfo.num_components); + jpeg_write_scanlines(&cinfo, ScanLineOutArray, 1); + } + } + catch (const std::runtime_error& err) + { + qDebug() << err.what(); + jpeg_destroy_compress(&cinfo); + + return false; + } + + jpeg_finish_compress(&cinfo); + jpeg_destroy_compress(&cinfo); + + if ( m_fname.isEmpty() ) + { +#if defined(WIN32) || defined(__APPLE__) || defined(__FreeBSD__) + fflush(outfile.data()); + fseek(outfile.data(), 0, SEEK_END); + m_filesize = ftell(outfile.data()); +#else + int size = outbuf.size() - 1; + for (; size > 0; --size) + { + if (outbuf[size] != 0) + break; + } + m_filesize = size; +#endif + } + return true; +} + +int JpegWriter::getFileSize() +{ + return m_filesize; +} diff -Nru luminance-2.2.1/src/Fileformat/jpegwriter.h luminance-2.3.0/src/Fileformat/jpegwriter.h --- luminance-2.2.1/src/Fileformat/jpegwriter.h 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/src/Fileformat/jpegwriter.h 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,58 @@ +/** + * This file is a part of Luminance HDR package. + * ---------------------------------------------------------------------- + * Copyright (C) 2012 Franco Comida, Davide Anastasia + * + * This program 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * ---------------------------------------------------------------------- + * + * @author Franco Comida + * Original work + * @author Davide Anastasia + * clean up memory management + * + */ + +#ifndef JPEGWRITER_H +#define JPEGWRITER_H + +#include +#include +#include + +class JpegWriter : public QObject +{ + Q_OBJECT + +public: + JpegWriter(const QImage *, QString, int); + JpegWriter(const QImage *, int); + ~JpegWriter() {} + + //! \brief write \c QImage into Jpeg file + bool writeQImageToJpeg(); + + //! \brief return size in bytes of the file written + int getFileSize(); + +private: + const QImage *m_out_qimage; + QString m_fname; + int m_filesize; + int m_quality; + +}; + +#endif diff -Nru luminance-2.2.1/src/Fileformat/pfs_file_format.h luminance-2.3.0/src/Fileformat/pfs_file_format.h --- luminance-2.2.1/src/Fileformat/pfs_file_format.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Fileformat/pfs_file_format.h 2012-07-01 09:10:50.000000000 +0000 @@ -24,13 +24,16 @@ * */ -#ifndef __PFS_FILE_FORMAT_H__ -#define __PFS_FILE_FORMAT_H__ +#ifndef PFS_FILE_FORMAT_H +#define PFS_FILE_FORMAT_H #include "Fileformat/rgbeio.h" #include "Fileformat/pfstiff.h" #include "Fileformat/pfsoutldrimage.h" #include "Fileformat/pfsinraw.h" +#include "Fileformat/jpegwriter.h" +#include "Fileformat/jpegreader.h" +#include "Fileformat/pngwriter.h" // Forward declaration namespace pfs { @@ -43,4 +46,4 @@ pfs::Frame* readRGBEfile(const char * filename); void writeRGBEfile(pfs::Frame* inputpfshdr, const char* outfilename); -#endif +#endif // PFS_FILE_FORMAT_H diff -Nru luminance-2.2.1/src/Fileformat/pfsinraw.cpp luminance-2.3.0/src/Fileformat/pfsinraw.cpp --- luminance-2.2.1/src/Fileformat/pfsinraw.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Fileformat/pfsinraw.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -24,10 +24,11 @@ #include #include -#include #include #include +#include +#include #include "Libpfs/domio.h" #include "Fileformat/pfsinraw.h" @@ -73,11 +74,15 @@ Y = 1; Z = (1-xD-yD)/yD; max = 0; - for (c=0; c<3; c++) { - RGB[c] = X*XYZ_to_RGB[0][c] + Y*XYZ_to_RGB[1][c] + Z*XYZ_to_RGB[2][c]; - if (RGB[c]>max) max = RGB[c]; + for (c=0; c<3; c++) + { + RGB[c] = X*XYZ_to_RGB[0][c] + Y*XYZ_to_RGB[1][c] + Z*XYZ_to_RGB[2][c]; + if (RGB[c]>max) max = RGB[c]; + } + for (c=0; c<3; c++) + { + RGB[c] = RGB[c]/max; } - for (c=0; c<3; c++) RGB[c] = RGB[c]/max; } /*********** END UFRAW CODE *****************************************************/ @@ -122,25 +127,25 @@ RGB[1] = RGB[1] / options->getRawGreen(); - if( (ret = RawProcessor.open_file(filename)) != LIBRAW_SUCCESS) { - std::cout << "Error Opening RAW File" << std::endl; + if ((ret = RawProcessor.open_file(filename)) != LIBRAW_SUCCESS) + { + qDebug() << "Error Opening RAW File"; RawProcessor.recycle(); - return NULL; - } + throw QObject::tr("Error Opening RAW File"); + } - bool identify; - if( (ret = RawProcessor.adjust_sizes_info_only()) != LIBRAW_SUCCESS) + bool identify = true; + if ((ret = RawProcessor.adjust_sizes_info_only()) != LIBRAW_SUCCESS) + { identify = false; - else - identify = true; + } - int numcolors = P1.colors; - std::vector daylightMult(numcolors); + std::vector daylightMult(numcolors); for(int c = 0 ; c < numcolors ; c++) daylightMult[c] = C.pre_mul[c]; - + if (identify) { //TODO RGB[0] = daylightMult[0] / RGB[0]; RGB[1] = daylightMult[1] / RGB[1]; @@ -161,64 +166,91 @@ } if (options->getRawHighlightsMode() < 3) + { OUT.highlight = options->getRawHighlightsMode(); + } else + { OUT.highlight = options->getRawHighlightsMode() + options->getRawLevel(); - + } OUT.no_auto_bright = !options->isRawAutoBrightness(); OUT.bright = options->getRawBrightness(); if ( options->isRawUseBlack() ) - OUT.user_black = options->getRawUserBlack(); - + { + OUT.user_black = options->getRawUserBlack(); + } if ( options->isRawUseSaturation() ) - OUT.user_sat = options->getRawUserSaturation(); + { + OUT.user_sat = options->getRawUserSaturation(); + } if ( options->isRawUseNoiseReduction() ) - OUT.threshold = options->getRawNoiseReductionThreshold(); - + { + OUT.threshold = options->getRawNoiseReductionThreshold(); + } if ( options->isRawUseChroma() ) { - OUT.aber[0] = options->getRawAber0(); - OUT.aber[2] = options->getRawAber2(); + OUT.aber[0] = options->getRawAber0(); + OUT.aber[2] = options->getRawAber2(); } - if ( (ret = RawProcessor.open_file(filename)) != LIBRAW_SUCCESS) + QString fname; + QByteArray ba; + + fname = options->getCameraProfileFileName(); + + if (fname.isEmpty()) + { + qDebug() << "Camera profile: embedded"; + OUT.camera_profile = (char*)"embed"; + } + else { - std::cout << "Error Opening RAW File" << std::endl; + ba = QFile::encodeName( fname ); + OUT.camera_profile = ba.data(); + qDebug() << "Camera profile: " << fname; + } + + OUT.output_color = 1; // sRGB + + if ((ret = RawProcessor.open_file(filename)) != LIBRAW_SUCCESS) + { + qDebug() << "Error Opening RAW File"; RawProcessor.recycle(); - return NULL; + throw QObject::tr("Error Opening RAW File"); } - if ( (ret = RawProcessor.unpack()) != LIBRAW_SUCCESS) + if ((ret = RawProcessor.unpack()) != LIBRAW_SUCCESS) { - std::cout << "Error Unpacking RAW File" << std::endl; + qDebug() << "Error Unpacking RAW File"; RawProcessor.recycle(); - return NULL; + throw QObject::tr("Error Unpacking RAW File"); } - if ( (ret = RawProcessor.dcraw_process()) != LIBRAW_SUCCESS) + if ((ret = RawProcessor.dcraw_process()) != LIBRAW_SUCCESS) { - std::cout << "Error Processing RAW File" << std::endl; + qDebug() << "Error Processing RAW File"; RawProcessor.recycle(); - return NULL; + throw QObject::tr("Error Processing RAW File"); } - std::cout << "Width: " << S.width << " Height: " << S.height << std::endl; - std::cout << "iWidth: " << S.iwidth << " iHeight: " << S.iheight << std::endl; - std::cout << "Make: " << P1.make << std::endl; - std::cout << "Model: " << P1.model << std::endl; - std::cout << "ISO: " << P2.iso_speed << std::endl; - std::cout << "Shutter: " << P2.shutter << std::endl; - std::cout << "Aperture: " << P2.aperture << std::endl; - std::cout << "Focal Length: " << P2.focal_len << std::endl; + qDebug() << "Width: " << S.width << " Height: " << S.height; + qDebug() << "iWidth: " << S.iwidth << " iHeight: " << S.iheight; + qDebug() << "Make: " << P1.make; + qDebug() << "Model: " << P1.model; + qDebug() << "ISO: " << P2.iso_speed; + qDebug() << "Shutter: " << P2.shutter; + qDebug() << "Aperture: " << P2.aperture; + qDebug() << "Focal Length: " << P2.focal_len; libraw_processed_image_t *image = RawProcessor.dcraw_make_mem_image(&ret); - if( image == NULL) { - std::cout << "Memory Error RAW File" << std::endl; + if (image == NULL) + { + qDebug() << "Memory Error in processing RAW File"; RawProcessor.recycle(); - return NULL; + throw QObject::tr("Memory Error in processing RAW File"); } int W = image->width; @@ -227,34 +259,44 @@ pfs::DOMIO pfsio; pfs::Frame *frame = pfsio.createFrame( W, H ); - if (frame == NULL) { + if (frame == NULL) + { RawProcessor.recycle(); - return NULL; + throw QObject::tr("Error Creating PFS Frame"); } pfs::Channel *Xc, *Yc, *Zc; frame->createXYZChannels( Xc, Yc, Zc ); - pfs::Array2D* X = Xc->getChannelData(); - pfs::Array2D* Y = Yc->getChannelData(); - pfs::Array2D* Z = Zc->getChannelData(); - - int d = 0; + float* r = Xc->getChannelData()->getRawData(); + float* g = Yc->getChannelData()->getRawData(); + float* b = Zc->getChannelData()->getRawData(); - for(int j = 0; j < H; j++) + const unsigned char* raw_data = image->data; + for (int idx = 0; idx < H*W; ++idx) { - for (int i = 0; i < W; i++) - { - (*X)(i,j) = image->data[d] + 256.0*image->data[d+1]; - (*Y)(i,j) = image->data[d+2] + 256.0*image->data[d+3]; - (*Z)(i,j) = image->data[d+4] + 256.0*image->data[d+5]; - d += 6; - } + *r++ = raw_data[0] + (raw_data[1] << 8); raw_data += 2; + *g++ = raw_data[0] + (raw_data[1] << 8); raw_data += 2; + *b++ = raw_data[0] + (raw_data[1] << 8); raw_data += 2; } - std::cout << "Data size: " << image->data_size << " " << W*H*3*2 << std::endl; - std::cout << "W: " << image->width << " H: " << image->height << std::endl; +// pfs::Array2D* X = Xc->getChannelData(); +// pfs::Array2D* Y = Yc->getChannelData(); +// pfs::Array2D* Z = Zc->getChannelData(); +// int d = 0; +// for (int j = 0; j < H; j++) +// { +// for (int i = 0; i < W; i++) +// { +// (*X)(i,j) = image->data[d] + 256.0*image->data[d+1]; +// (*Y)(i,j) = image->data[d+2] + 256.0*image->data[d+3]; +// (*Z)(i,j) = image->data[d+4] + 256.0*image->data[d+5]; +// d += 6; +// } +// } + qDebug() << "Data size: " << image->data_size << " " << W*H*3*2; + qDebug() << "W: " << W << " H: " << H; if (writeOnDisk) // for align_image_stack and thumbnails { @@ -271,10 +313,10 @@ QString thumbname = tmpdir + "/" + qfi.baseName() + "." + suffix; RawProcessor.dcraw_thumb_writer(QFile::encodeName(thumbname)); } - std::cout << "Filename: " << filename << std::endl; - std::cout << "Outname: " << qPrintable(outname) << std::endl; + qDebug() << "Filename: " << filename; + qDebug() << "Outname: " << qPrintable(outname); } - + LibRaw::dcraw_clear_mem(image); RawProcessor.recycle(); diff -Nru luminance-2.2.1/src/Fileformat/pfsout16bitspixmap.cpp luminance-2.3.0/src/Fileformat/pfsout16bitspixmap.cpp --- luminance-2.2.1/src/Fileformat/pfsout16bitspixmap.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Fileformat/pfsout16bitspixmap.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -32,31 +32,10 @@ #include "Fileformat/pfsout16bitspixmap.h" #include "Common/msec_timer.h" -namespace -{ - -inline quint16 clamp_to_16bits(const float& value) -{ - if (value <= 0.0f) return 0; - if (value >= 65535.f) return 65535; - return (quint16)(value*65535.f + 0.5f); -} - -//! \note I pass value by value, so I can use it as a temporary variable inside the function -//! I will let the compiler do the optimization that it likes -inline quint16 clamp_and_offset_to_16bits(float value, const float& min, const float& max) -{ - if (value <= min) value = min; - else if (value >= max) value = max; - - value = (value - min)/(max - min); - - return (quint16)(value*65535.f + 0.5f); -} - -} - -quint16* fromLDRPFSto16bitsPixmap(pfs::Frame* inpfsframe, float min_luminance, float max_luminance) +quint16* fromLDRPFSto16bitsPixmap(pfs::Frame* inpfsframe, + float min_luminance, + float max_luminance, + LumMappingMethod mapping_method) { #ifdef TIMER_PROFILING msec_timer stop_watch; @@ -79,13 +58,14 @@ const float* p_R = Xc->getChannelData()->getRawData(); const float* p_G = Yc->getChannelData()->getRawData(); const float* p_B = Zc->getChannelData()->getRawData(); + + FloatRgbToQRgb converter(min_luminance, max_luminance, mapping_method); #pragma omp parallel for for (int idx = 0; idx < height*width; ++idx) { - temp_pixmap[3*idx] = clamp_and_offset_to_16bits(p_R[idx], min_luminance, max_luminance); - temp_pixmap[3*idx + 1] = clamp_and_offset_to_16bits(p_G[idx], min_luminance, max_luminance); - temp_pixmap[3*idx + 2] = clamp_and_offset_to_16bits(p_B[idx], min_luminance, max_luminance); + converter.toQUint16(p_R[idx], p_G[idx], p_B[idx], + temp_pixmap[3*idx], temp_pixmap[3*idx + 1], temp_pixmap[3*idx + 2]); } #ifdef TIMER_PROFILING diff -Nru luminance-2.2.1/src/Fileformat/pfsout16bitspixmap.h luminance-2.3.0/src/Fileformat/pfsout16bitspixmap.h --- luminance-2.2.1/src/Fileformat/pfsout16bitspixmap.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Fileformat/pfsout16bitspixmap.h 2012-07-01 09:10:50.000000000 +0000 @@ -27,11 +27,15 @@ #define FROMLDRPFSTO16BITSPIXMAP #include +#include namespace pfs { class Frame; } -quint16* fromLDRPFSto16bitsPixmap(pfs::Frame* inpfsframe, float min_luminance = 0.0f, float max_luminance = 1.0f); +quint16* fromLDRPFSto16bitsPixmap(pfs::Frame* inpfsframe, + float min_luminance = 0.0f, + float max_luminance = 1.0f, + LumMappingMethod mapping_method = MAP_LINEAR); #endif diff -Nru luminance-2.2.1/src/Fileformat/pfsouthdrimage.cpp luminance-2.3.0/src/Fileformat/pfsouthdrimage.cpp --- luminance-2.2.1/src/Fileformat/pfsouthdrimage.cpp 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/src/Fileformat/pfsouthdrimage.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,131 @@ +/** + * @brief Writing QImage from PFS stream + * + * This file is a part of Luminance HDR package. + * ---------------------------------------------------------------------- + * Copyright (C) 2006 Giuseppe Rota + * Copyright (C) 2010, 2011 Davide Anastasia + * + * This program 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * ---------------------------------------------------------------------- + * + * @author Giuseppe Rota + * @author Davide Anastasia + * New implementation: + * 1) avoids the presence of a temporary buffer + * 2) returns QImage* instead than a QImage + * 3) has OpenMP (multi thread) capability) + * + */ + +#include +#include +#include +#include +#include +#include + +#include "Libpfs/frame.h" +#include "Common/msec_timer.h" + +namespace +{ + +//! \note I pass value by value, so I can use it as a temporary variable inside the function +//! I will let the compiler do the optimization that it likes +inline int clamp_and_offset_to_8bits(float value, const float& min, const float& max) +{ + if (value <= min) value = min; + else if (value >= max) value = max; + + value = (value - min)/(max - min); + + value = pow(value, 1.0f/2.2f); + + return (quint16) (value*255.f + 0.5f); +} + +} + +QImage* fromHDRPFStoQImage(pfs::Frame* in_frame) +{ +#ifdef TIMER_PROFILING + msec_timer stop_watch; + stop_watch.start(); +#endif + + assert( in_frame != NULL ); + + float min_luminance, max_luminance; + pfs::Channel *Xc, *Yc, *Zc; + in_frame->getXYZChannels( Xc, Yc, Zc ); + assert( Xc != NULL && Yc != NULL && Zc != NULL ); + + const int width = in_frame->getWidth(); + const int height = in_frame->getHeight(); + // const int elems = width*height; + + QImage* temp_qimage = new QImage(width, height, QImage::Format_RGB32); + + const float* p_R = Xc->getChannelData()->getRawData(); + const float* p_G = Yc->getChannelData()->getRawData(); + const float* p_B = Zc->getChannelData()->getRawData(); + + QRgb *pixels = reinterpret_cast(temp_qimage->bits()); + + max_luminance = p_R[0]; + for (int idx = 1; idx < height*width; ++idx) + if (p_R[idx] > max_luminance) + max_luminance = p_R[idx]; + + for (int idx = 0; idx < height*width; ++idx) + if (p_G[idx] > max_luminance) + max_luminance = p_G[idx]; + + for (int idx = 0; idx < height*width; ++idx) + if (p_B[idx] > max_luminance) + max_luminance = p_B[idx]; + + min_luminance = p_R[0]; + for (int idx = 1; idx < height*width; ++idx) + if (p_R[idx] < min_luminance) + min_luminance = p_R[idx]; + + for (int idx = 0; idx < height*width; ++idx) + if (p_G[idx] < min_luminance) + min_luminance = p_G[idx]; + + for (int idx = 0; idx < height*width; ++idx) + if (p_B[idx] < min_luminance) + min_luminance = p_B[idx]; + + qDebug() << "max luminance: " << max_luminance; + qDebug() << "min luminance: " << min_luminance; + +#pragma omp parallel for shared(pixels) + for (int idx = 0; idx < height*width; ++idx) + { + pixels[idx] = qRgb(clamp_and_offset_to_8bits(p_R[idx], min_luminance, max_luminance), + clamp_and_offset_to_8bits(p_G[idx], min_luminance, max_luminance), + clamp_and_offset_to_8bits(p_B[idx], min_luminance, max_luminance)); + } + +#ifdef TIMER_PROFILING + stop_watch.stop_and_update(); + std::cout << "fromHDRPFStoQImage() = " << stop_watch.get_time() << " msec" << std::endl; +#endif + + return temp_qimage; +} diff -Nru luminance-2.2.1/src/Fileformat/pfsouthdrimage.h luminance-2.3.0/src/Fileformat/pfsouthdrimage.h --- luminance-2.2.1/src/Fileformat/pfsouthdrimage.h 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/src/Fileformat/pfsouthdrimage.h 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,45 @@ +/* + * This file is a part of LuminanceHDR package. + * ---------------------------------------------------------------------- + * Copyright (C) 2006,2007 Giuseppe Rota + * + * This program 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * ---------------------------------------------------------------------- + * + * Original Work + * @author Giuseppe Rota + * Improvements, bugfixing + * @author Franco Comida + * + * @author Davide Anastasia + * + */ + +#ifndef FROMHDRPFSTOQIMAGE +#define FROMHDRPFSTOQIMAGE + +#include + +// forward declaration +namespace pfs { + class Frame; +} + +//! \brief Build from a pfs::Frame a QImage of the same size +//! \param[in] in_frame is a pointer to pfs::Frame* +//! \return Pointer to QImage containing an 8 bit/channel representation of the input frame +QImage* fromHDRPFStoQImage(pfs::Frame* in_frame); + +#endif diff -Nru luminance-2.2.1/src/Fileformat/pfsoutldrimage.cpp luminance-2.3.0/src/Fileformat/pfsoutldrimage.cpp --- luminance-2.2.1/src/Fileformat/pfsoutldrimage.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Fileformat/pfsoutldrimage.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -35,38 +35,18 @@ #include #include +#include "pfsoutldrimage.h" #include "Libpfs/frame.h" #include "Common/msec_timer.h" -namespace -{ - -inline int clamp_to_8bits(const float& value) -{ - if (value <= 0.f) return 0; - if (value >= 1.f) return 255; - return (int)(value*255.f + 0.5f); -} - -//! \note I pass value by value, so I can use it as a temporary variable inside the function -//! I will let the compiler do the optimization that it likes -inline int clamp_and_offset_to_8bits(float value, const float& min, const float& max) -{ - if (value <= min) value = min; - else if (value >= max) value = max; - - value = (value - min)/(max - min); - - return (quint16)(value*255.f + 0.5f); -} - -} - -QImage* fromLDRPFStoQImage(pfs::Frame* in_frame, float min_luminance, float max_luminance) +QImage* fromLDRPFStoQImage(pfs::Frame* in_frame, + float min_luminance, + float max_luminance, + LumMappingMethod mapping_method) { #ifdef TIMER_PROFILING - msec_timer __timer; - __timer.start(); + msec_timer stop_watch; + stop_watch.start(); #endif assert( in_frame != NULL ); @@ -78,7 +58,7 @@ const int width = in_frame->getWidth(); const int height = in_frame->getHeight(); - QImage* temp_qimage = new QImage(width, height, QImage::Format_ARGB32); + QImage* temp_qimage = new QImage(width, height, QImage::Format_RGB32); const float* p_R = Xc->getChannelData()->getRawData(); const float* p_G = Yc->getChannelData()->getRawData(); @@ -86,18 +66,17 @@ QRgb *pixels = reinterpret_cast(temp_qimage->bits()); + FloatRgbToQRgb converter(min_luminance, max_luminance, mapping_method); + #pragma omp parallel for shared(pixels) for (int idx = 0; idx < height*width; ++idx) { - pixels[idx] = qRgb(clamp_and_offset_to_8bits(p_R[idx], min_luminance, max_luminance), - clamp_and_offset_to_8bits(p_G[idx], min_luminance, max_luminance), - clamp_and_offset_to_8bits(p_B[idx], min_luminance, max_luminance)); + converter.toQRgb(p_R[idx], p_G[idx], p_B[idx], pixels[idx]); } - #ifdef TIMER_PROFILING - __timer.stop_and_update(); - std::cout << "fromLDRPFStoQImage() = " << __timer.get_time() << " msec" << std::endl; + stop_watch.stop_and_update(); + std::cout << "fromLDRPFStoQImage() = " << stop_watch.get_time() << " msec" << std::endl; #endif return temp_qimage; diff -Nru luminance-2.2.1/src/Fileformat/pfsoutldrimage.h luminance-2.3.0/src/Fileformat/pfsoutldrimage.h --- luminance-2.2.1/src/Fileformat/pfsoutldrimage.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Fileformat/pfsoutldrimage.h 2012-07-01 09:10:50.000000000 +0000 @@ -31,6 +31,7 @@ #define FROMLDRPFSTOQIMAGE #include +#include "Common/FloatRgbToQRgb.h" // forward declaration namespace pfs { @@ -40,6 +41,9 @@ //! \brief Build from a pfs::Frame a QImage of the same size //! \param[in] in_frame is a pointer to pfs::Frame* //! \return Pointer to QImage containing an 8 bit/channel representation of the input frame -QImage* fromLDRPFStoQImage(pfs::Frame* in_frame, float min_luminance = 0.0f, float max_luminance = 1.0f); +QImage* fromLDRPFStoQImage(pfs::Frame* in_frame, + float min_luminance = 0.0f, + float max_luminance = 1.0f, + LumMappingMethod mapping_method = MAP_LINEAR); #endif diff -Nru luminance-2.2.1/src/Fileformat/pfstiff.cpp luminance-2.3.0/src/Fileformat/pfstiff.cpp --- luminance-2.2.1/src/Fileformat/pfstiff.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Fileformat/pfstiff.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -5,6 +5,7 @@ * ---------------------------------------------------------------------- * Copyright (C) 2003,2004 Rafal Mantiuk and Grzegorz Krawczyk * Copyright (C) 2006 Giuseppe Rota + * Copyright (C) 2012 Davide Anastasia * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,289 +23,672 @@ * ---------------------------------------------------------------------- * * @author Grzegorz Krawczyk, - * slightly modified by Giuseppe Rota for luminance + * slightly modified by Giuseppe Rota for Luminance HDR + * added color management support by Franco Comida */ -#include +#include "pfstiff.h" + #include #include #include +#include #include -#include -#include +#include -#include "pfstiff.h" +#include +#include +#include +#include +#include +#include "Common/ResourceHandlerLcms.h" #include "Libpfs/frame.h" #include "Libpfs/domio.h" -TiffReader::TiffReader( const char* filename, const char *tempfilespath, bool wod) +#include "Common/LuminanceOptions.h" + +namespace { - // read header containing width and height from file - fileName = QString(filename); - tempFilesPath = QString(tempfilespath); - writeOnDisk = wod; - - tif = TIFFOpen(filename, "r"); - if( !tif ) - throw pfs::Exception("TIFF: could not open file for reading."); +/////////////////////////////////////////////////////////////////////////////////// +// \brief This code is taken from tiff.data()icc.c from libcms distribution and sligthly modified +// \ref http://svn.ghostscript.com/ghostscript/trunk/gs/lcms2/utils/tificc/tificc.c +cmsHPROFILE +GetTIFFProfile(TIFF* in) +{ + cmsHPROFILE hProfile; + void* iccProfilePtr; + cmsUInt32Number iccProfileSize; + + if (TIFFGetField(in, TIFFTAG_ICCPROFILE, &iccProfileSize, &iccProfilePtr)) + { + qDebug () << "iccProfileSize: " << iccProfileSize; + hProfile = cmsOpenProfileFromMem(iccProfilePtr, iccProfileSize); + + if (hProfile) return hProfile; + } + + // Try to see if "colorimetric" tiff.data() + cmsCIExyYTRIPLE primaries; + cmsCIExyY whitePoint; + cmsToneCurve* curve[3]; + + cmsFloat32Number* chr; + if (TIFFGetField(in, TIFFTAG_PRIMARYCHROMATICITIES, &chr)) + { + primaries.Red.x = chr[0]; + primaries.Red.y = chr[1]; + primaries.Green.x = chr[2]; + primaries.Green.y = chr[3]; + primaries.Blue.x = chr[4]; + primaries.Blue.y = chr[5]; + + primaries.Red.Y = primaries.Green.Y = primaries.Blue.Y = 1.0; + + cmsFloat32Number* wp; + if (TIFFGetField (in, TIFFTAG_WHITEPOINT, &wp)) + { + whitePoint.x = wp[0]; + whitePoint.y = wp[1]; + whitePoint.Y = 1.0; + + // Transferfunction is a bit harder.... + cmsUInt16Number *gmr; + cmsUInt16Number *gmg; + cmsUInt16Number *gmb; + + TIFFGetFieldDefaulted(in, TIFFTAG_TRANSFERFUNCTION, &gmr, &gmg, &gmb); + + curve[0] = cmsBuildTabulatedToneCurve16(NULL, 256, gmr); + curve[1] = cmsBuildTabulatedToneCurve16(NULL, 256, gmg); + curve[2] = cmsBuildTabulatedToneCurve16(NULL, 256, gmb); + + hProfile = cmsCreateRGBProfile (&whitePoint, &primaries, curve); + + cmsFreeToneCurve(curve[0]); + cmsFreeToneCurve(curve[1]); + cmsFreeToneCurve(curve[2]); + + return hProfile; + } + } + + return 0; +} +// End of code form tiff.data()icc.c +/////////////////////////////////////////////////////////////////////////////// + +void +transform_to_rgb(unsigned char *ScanLineIn, unsigned char *ScanLineOut, uint32 size, int nSamples) +{ + for (uint32 i = 0; i < size; i += nSamples) + { + unsigned char C = *(ScanLineIn + i + 0); + unsigned char M = *(ScanLineIn + i + 1); + unsigned char Y = *(ScanLineIn + i + 2); + unsigned char K = *(ScanLineIn + i + 3); + *(ScanLineOut + i + 0) = ((255 - C) * (255 - K)) / 255; + *(ScanLineOut + i + 1) = ((255 - M) * (255 - K)) / 255; + *(ScanLineOut + i + 2) = ((255 - Y) * (255 - K)) / 255; + *(ScanLineOut + i + 3) = 255; + } +} + +void +transform_to_rgb_16(uint16 *ScanLineIn, uint16 *ScanLineOut, uint32 size, int nSamples) +{ + for (uint32 i = 0; i < size/2; i += nSamples) + { + uint16 C = *(ScanLineIn + i + 0); + uint16 M = *(ScanLineIn + i + 1); + uint16 Y = *(ScanLineIn + i + 2); + uint16 K = *(ScanLineIn + i + 3); + *(ScanLineOut + i + 0) = ((65535 - C) * (65535 - K)) / 65535; + *(ScanLineOut + i + 1) = ((65535 - M) * (65535 - K)) / 65535; + *(ScanLineOut + i + 2) = ((65535 - Y) * (65535 - K)) / 65535; + *(ScanLineOut + i + 3) = 65535; + } +} + +// The way QRgb is stored is a bit weird, hence the strange way to store the +// final value +void +cmyk_to_bgra_qimage(const unsigned char *inVector, unsigned char *outVector, + uint32 size, int nSamples) +{ + for (uint32 i = 0; i < size; i += nSamples) + { + unsigned char C = *(inVector + 0); + unsigned char M = *(inVector + 1); + unsigned char Y = *(inVector + 2); + unsigned char K = *(inVector + 3); + *(outVector + 2) = ((255 - C) * (255 - K)) / 255; // RED + *(outVector + 1) = ((255 - M) * (255 - K)) / 255; // GREEN + *(outVector + 0) = ((255 - Y) * (255 - K)) / 255; // BLUE + *(outVector + 3) = 255; + + inVector += 4; + outVector += 4; + } +} + +const float DIV_255 = 1.f/255.f; +const float DIV_256 = 1.f/256.f; +} + +TiffReader::TiffReader(const char *filename, const char *tempfilespath, bool wod): + tif( TIFFOpen(filename, "r") ), + writeOnDisk(wod), + fileName(filename), + tempFilesPath(tempfilespath) +{ + if (!tif) + throw std::runtime_error ("TIFF: could not open file for reading."); + // read header containing width and height from file //--- image size - TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &width); - TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &height); + TIFFGetField (tif, TIFFTAG_IMAGEWIDTH, &width); + TIFFGetField (tif, TIFFTAG_IMAGELENGTH, &height); - if ( width*height<=0 ) + if (width * height <= 0) { - TIFFClose(tif); - throw pfs::Exception("TIFF: illegal image size"); + throw std::runtime_error ("TIFF: illegal image size."); } //--- image parameters - if (!TIFFGetField(tif, TIFFTAG_COMPRESSION, &comp)) // compression type + uint16 planar; + TIFFGetField(tif, TIFFTAG_PLANARCONFIG, &planar); + qDebug() << "Planar configuration: " << planar; + if (planar != PLANARCONFIG_CONTIG) + { + throw std::runtime_error ("TIFF: unsupported planar configuration"); + } + + if (!TIFFGetField(tif, TIFFTAG_COMPRESSION, &comp)) // compression type comp = COMPRESSION_NONE; // type of photometric data - if(!TIFFGetFieldDefaulted(tif, TIFFTAG_PHOTOMETRIC, &phot)) - throw pfs::Exception("TIFF: unspecified photometric type"); + if (!TIFFGetFieldDefaulted (tif, TIFFTAG_PHOTOMETRIC, &phot)) + { + throw std::runtime_error ("TIFF: unspecified photometric type"); + } - uint16 * extra_sample_types=0; - uint16 extra_samples_per_pixel=0; - switch(phot) + qDebug () << "Photometric type : " << phot; + + uint16 *extra_sample_types = 0; + uint16 extra_samples_per_pixel = 0; + switch (phot) { case PHOTOMETRIC_LOGLUV: - qDebug("Photometric data: LogLuv"); + { + qDebug ("Photometric data: LogLuv"); if (comp != COMPRESSION_SGILOG && comp != COMPRESSION_SGILOG24) { - TIFFClose(tif); - throw pfs::Exception("TIFF: only support SGILOG compressed LogLuv data"); + throw std::runtime_error ("TIFF: only support SGILOG compressed LogLuv data"); } TIFFGetField(tif, TIFFTAG_SAMPLESPERPIXEL, &nSamples); TIFFSetField(tif, TIFFTAG_SGILOGDATAFMT, SGILOGDATAFMT_FLOAT); TypeOfData = FLOATLOGLUV; + } break; case PHOTOMETRIC_RGB: - // qDebug("Photometric data: RGB"); + { + qDebug("Photometric data: RGB"); // read extra samples (# of alpha channels) - if (TIFFGetField( tif, TIFFTAG_EXTRASAMPLES, - &extra_samples_per_pixel, &extra_sample_types )!=1) + if (TIFFGetField(tif, TIFFTAG_EXTRASAMPLES, &extra_samples_per_pixel, &extra_sample_types) != 1) { - extra_samples_per_pixel=0; + extra_samples_per_pixel = 0; } TIFFGetField(tif, TIFFTAG_SAMPLESPERPIXEL, &nSamples); bps = nSamples - extra_samples_per_pixel; - has_alpha=(extra_samples_per_pixel==1); - // qDebug("nSamples=%d extra_samples_per_pixel=%d",nSamples,extra_samples_per_pixel); - // qDebug("has alpha? %s", has_alpha ? "true" : "false"); - if (bps!=3) + has_alpha = (extra_samples_per_pixel == 1); + // qDebug("nSamples=%d extra_samples_per_pixel=%d",nSamples,extra_samples_per_pixel); + // qDebug("has alpha? %s", has_alpha ? "true" : "false"); + if (bps != 3) { - qDebug("TIFF: unsupported samples per pixel for RGB"); - TIFFClose(tif); - throw pfs::Exception("TIFF: unsupported samples per pixel for RGB"); + qDebug ("TIFF: unsupported samples per pixel for RGB"); + throw std::runtime_error ("TIFF: unsupported samples per pixel for RGB"); } - if (!TIFFGetField(tif, TIFFTAG_BITSPERSAMPLE, &bps) || (bps!=8 && bps!=16 && bps!=32)) + if (!TIFFGetField(tif, TIFFTAG_BITSPERSAMPLE, &bps) || (bps != 8 && bps != 16 && bps != 32)) { - qDebug("TIFF: unsupported bits per sample for RGB"); - TIFFClose(tif); - throw pfs::Exception("TIFF: unsupported bits per sample for RGB"); + qDebug ("TIFF: unsupported bits per sample for RGB"); + throw std::runtime_error ("TIFF: unsupported bits per sample for RGB"); } - if( bps==8 ) + switch (bps) { + case 8: TypeOfData = BYTE; - qDebug("8bit per channel"); - } - else if( bps==16 ) - { + qDebug ("8bit per channel"); + break; + case 16: TypeOfData = WORD; - qDebug("16bit per channel"); + qDebug ("16bit per channel"); + break; + default: + TypeOfData = FLOAT; + qDebug ("32bit float per channel"); + break; } - else + ColorSpace = RGB; + } + break; + case PHOTOMETRIC_SEPARATED: + { + qDebug("Photometric data: CMYK"); + TIFFGetField(tif, TIFFTAG_SAMPLESPERPIXEL, &nSamples); + qDebug() << "nSamples: " << nSamples; + TIFFGetField(tif, TIFFTAG_BITSPERSAMPLE, &bps); + + switch (bps) { + case 8: + TypeOfData = BYTE; + qDebug ("8bit per channel"); + break; + case 16: + TypeOfData = WORD; + qDebug ("16bit per channel"); + break; + default: TypeOfData = FLOAT; - qDebug("32bit float per channel"); + qDebug ("32bit float per channel"); + break; } + ColorSpace = CMYK; + } break; default: //qFatal("Unsupported photometric type: %d",phot); - TIFFClose(tif); - throw pfs::Exception("TIFF: unsupported photometric type"); + throw std::runtime_error ("TIFF: unsupported photometric type"); } if (!TIFFGetField(tif, TIFFTAG_STONITS, &stonits)) stonits = 1.; } -pfs::Frame* TiffReader::readIntoPfsFrame() +pfs::Frame* +TiffReader::readIntoPfsFrame() { - //--- scanline buffer with pointers to different data types - union { - float* fp; - uint16* wp; - uint8* bp; - void* vp; - } buf; - - uchar *data = NULL; // ? - - //pfs::DOMIO pfsio; - //pfs::Frame *frame = pfsio.createFrame( width, height ); - pfs::Frame *frame = new pfs::Frame(width, height); - - pfs::Channel *Xc, *Yc, *Zc; - frame->createXYZChannels( Xc, Yc, Zc ); - - float * X = Xc->getRawData(); - float * Y = Yc->getRawData(); - float * Z = Zc->getRawData(); + qDebug() << "TiffReader::readIntoPfsFrame()"; - //--- image length - uint32 imagelength; - TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &imagelength); + bool doTransform = false; + // LuminanceOptions luminance_opts; + // int camera_profile_opt = luminance_opts.getCameraProfile (); - emit maximumValue( imagelength ); //for QProgressDialog + // will get automatigically cleaned on return of this function! + ScopedCmsTransform xform; - if (writeOnDisk) +// if (camera_profile_opt == 1) // embedded +// { + ScopedCmsProfile hIn( GetTIFFProfile(tif) ); + + if (hIn) { - data = new uchar[width*height*4]; //this will contain the image data linearly remapped to 8bit per channel, data must be 32-bit aligned, in Format: 0xffRRGGBB - if (data == NULL) - throw pfs::Exception("TIFF: Memory error"); + qDebug () << "Found ICC profile"; + + ScopedCmsProfile hsRGB( cmsCreate_sRGBProfile() ); + + cmsUInt32Number cmsInputFormat = TYPE_CMYK_8; + cmsUInt32Number cmsOutputFormat = TYPE_RGBA_8; + cmsUInt32Number cmsIntent = INTENT_PERCEPTUAL; + + if (ColorSpace == RGB && TypeOfData == WORD) + { + cmsInputFormat = TYPE_RGB_16; + cmsOutputFormat = TYPE_RGB_16; + } + else if (ColorSpace == RGB && TypeOfData == BYTE) + { + cmsInputFormat = TYPE_RGB_8; + cmsOutputFormat = TYPE_RGB_8; + } + else if (ColorSpace == CMYK && TypeOfData == WORD) + { + cmsInputFormat = TYPE_CMYK_16; + cmsOutputFormat = TYPE_RGBA_16; + } + else + { + cmsInputFormat = TYPE_CMYK_8; + cmsOutputFormat = TYPE_RGBA_8; + } + + xform.reset( cmsCreateTransform (hIn.data(), cmsInputFormat, hsRGB.data(), cmsOutputFormat, cmsIntent, 0) ); + if (xform) + { + doTransform = true; + qDebug () << "Created transform"; + } + } +#ifdef QT_DEBUG + else + { + qDebug () << "No embedded profile found"; } +#endif +// } +// else if (camera_profile_opt == 2) // from file +// { +// QString profile_fname = luminance_opts.getCameraProfileFileName (); +// qDebug () << "Camera profile: " << profile_fname; + +// if (!profile_fname.isEmpty ()) +// { +// QByteArray ba( QFile::encodeName( profile_fname ) ); + +// ScopedCmsProfile hsRGB( cmsCreate_sRGBProfile() ); +// ScopedCmsProfile hIn( cmsOpenProfileFromFile (ba.data (), "r") ); + +// if ( hsRGB && hIn ) +// { +// if (ColorSpace == RGB && TypeOfData == WORD) +// xform.reset( cmsCreateTransform (hIn.data(), TYPE_RGB_16, hsRGB.data(), TYPE_RGB_16, INTENT_PERCEPTUAL, 0) ); +// else if (ColorSpace == RGB && TypeOfData == BYTE) +// xform.reset( cmsCreateTransform (hIn.data(), TYPE_RGB_8, hsRGB.data(), TYPE_RGB_8, INTENT_PERCEPTUAL, 0) ); +// else if (ColorSpace == CMYK && TypeOfData == WORD) +// xform.reset( cmsCreateTransform (hIn.data(), TYPE_CMYK_16, hsRGB.data(), TYPE_RGBA_16, INTENT_PERCEPTUAL, 0) ); +// else +// xform.reset( cmsCreateTransform (hIn.data(), TYPE_CMYK_8, hsRGB.data(), TYPE_RGBA_8, INTENT_PERCEPTUAL, 0) ); +// } +// doTransform = true; + +// qDebug () << "Created transform"; +// } +// } + + pfs::Frame* frame = new pfs::Frame (width, height); + + pfs::Channel* Xc; + pfs::Channel* Yc; + pfs::Channel* Zc; + frame->createXYZChannels (Xc, Yc, Zc); + + float* X = Xc->getRawData(); + float* Y = Yc->getRawData(); + float* Z = Zc->getRawData(); + + //--- image length + uint32 imagelength; + TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &imagelength); + + emit maximumValue(imagelength); //for QProgressDialog //--- image scanline size uint32 scanlinesize = TIFFScanlineSize(tif); - buf.vp = _TIFFmalloc(scanlinesize); + std::vector buf( scanlinesize ); + std::vector buf2; + if ( xform ) + { + buf2.resize( scanlinesize ); + } + qDebug () << "scanlinesize: " << scanlinesize; //--- read scan lines - const int image_width = width; //X->getCols(); - for(uint32 row = 0; row < imagelength; row++) + const int image_width = width; + + for (uint32 row = 0; row < height; row++) { - switch(TypeOfData) + switch (TypeOfData) { case FLOAT: case FLOATLOGLUV: - TIFFReadScanline(tif, buf.fp, row); - for( int i = 0; i < image_width; i++ ) + { + float* buf_fp = reinterpret_cast(buf.data()); + + TIFFReadScanline (tif, buf_fp, row); + for (int i = 0; i < image_width; i++) { - X[row*image_width + i] = buf.fp[i*nSamples]; - Y[row*image_width + i] = buf.fp[i*nSamples+1]; - Z[row*image_width + i] = buf.fp[i*nSamples+2]; + X[row * image_width + i] = buf_fp[i * nSamples]; + Y[row * image_width + i] = buf_fp[i * nSamples + 1]; + Z[row * image_width + i] = buf_fp[i * nSamples + 2]; } + } break; - case WORD: - TIFFReadScanline(tif, buf.wp, row); - for( int i=0; i < image_width; i++ ) + case WORD: + { + uint16* buf_wp = reinterpret_cast(buf.data()); + + TIFFReadScanline(tif, buf_wp, row); + if (doTransform) { - X[row*image_width + i] = buf.wp[i*nSamples]; - Y[row*image_width + i] = buf.wp[i*nSamples+1]; - Z[row*image_width + i] = buf.wp[i*nSamples+2]; - if (writeOnDisk) - { - *(data + 0 + (row*width+i)*4) = buf.wp[i*nSamples+2]/256.0 ; - *(data + 1 + (row*width+i)*4) = buf.wp[i*nSamples+1]/256.0 ; - *(data + 2 + (row*width+i)*4) = buf.wp[i*nSamples]/256.0 ; - *(data + 3 + (row*width+i)*4) = 0xff; - } + uint16* buf_wp_2 = reinterpret_cast(buf2.data()); + + cmsDoTransform(xform.data(), buf_wp, buf_wp_2, image_width); + + ::std::swap(buf_wp, buf_wp_2); + } + else if (ColorSpace == CMYK) + { + transform_to_rgb_16(buf_wp, buf_wp, scanlinesize, nSamples); + } + for (int i = 0; i < image_width; i++) + { + X[row * image_width + i] = buf_wp[i * nSamples]; + Y[row * image_width + i] = buf_wp[i * nSamples + 1]; + Z[row * image_width + i] = buf_wp[i * nSamples + 2]; } + } break; - case BYTE: - TIFFReadScanline(tif, buf.bp, row); - for( int i=0; i(buf.data()); + + TIFFReadScanline(tif, buf_bp, row); + if (doTransform) + { + uint8* buf_bp_2 = reinterpret_cast(buf2.data()); + + cmsDoTransform(xform.data(), buf_bp, buf_bp_2, image_width); + + ::std::swap(buf_bp, buf_bp_2); + } + else if (ColorSpace == CMYK) + { + transform_to_rgb(buf_bp, buf_bp, scanlinesize, nSamples); + } + for (int i = 0; i < image_width; i++) { - X[row*image_width + i] = pow( buf.bp[i*nSamples]/255.0, 2.2 ); - Y[row*image_width + i] = pow( buf.bp[i*nSamples+1]/255.0, 2.2 ); - Z[row*image_width + i] = pow( buf.bp[i*nSamples+2]/255.0, 2.2 ); + X[row * image_width + i] = powf(buf_bp[i * nSamples] * DIV_255, 2.2f); // why? + Y[row * image_width + i] = powf(buf_bp[i * nSamples + 1] * DIV_255, 2.2f); // why? + Z[row * image_width + i] = powf(buf_bp[i * nSamples + 2] * DIV_255, 2.2f); // why? } + } break; } - emit nextstep( row ); //for QProgressDialog + emit nextstep (row); //for QProgressDialog } if (writeOnDisk) { - QImage remapped(const_cast(data),image_width,imagelength,QImage::Format_ARGB32); + assert (TypeOfData != FLOAT); + assert (TypeOfData != FLOATLOGLUV); + + float scaleFactor = DIV_256; + if ( TypeOfData == BYTE) scaleFactor = 1.0f; + + pfs::Channel *Xc, *Yc, *Zc; + frame->createXYZChannels (Xc, Yc, Zc); + + float* X = Xc->getRawData(); + float* Y = Yc->getRawData(); + float* Z = Zc->getRawData(); + + QImage remapped( image_width, imagelength, QImage::Format_RGB32); + + for (uint32 row = 0; row < height; ++row) + { + QRgb* line = reinterpret_cast(remapped.scanLine(row)); + for (uint32 col = 0; col < width; ++col) + { + line[col] = qRgb(static_cast(*X * scaleFactor), + static_cast(*Y * scaleFactor), + static_cast(*Z * scaleFactor)); + + X++; Y++; Z++; + } + } + QFileInfo fi (fileName); + QString fname = fi.completeBaseName () + ".thumb.jpg"; + + remapped.scaledToHeight(imagelength / 10).save(tempFilesPath + "/" + fname); + } - QFileInfo fi(fileName); - QString fname = fi.baseName() + ".thumb.jpg"; -//#ifndef QT_NO_DEBUG -// std::cout << qPrintable(fileName) << std::endl; -// std::cout << qPrintable(fname) << std::endl; -// std::cout << qPrintable(tempFilesPath) << std::endl; -//#endif - remapped.scaledToHeight(imagelength/10).save(tempFilesPath + "/" + fname); - } - //--- free buffers and close files - _TIFFfree(buf.vp); - TIFFClose(tif); //if (TypeOfData==FLOATLOGLUV) // pfs::transformColorSpace( pfs::CS_XYZ, X,Y,Z, pfs::CS_RGB, X,Y,Z ); + TIFFClose(tif); + return frame; } -//given for granted that users of this function call it only after checking that TypeOfData==BYTE -QImage* TiffReader::readIntoQImage() +// given for granted that users of this function call it only after checking that TypeOfData==BYTE +QImage* +TiffReader::readIntoQImage() { - uchar *data=new uchar[width*height*4]; //this will contain the image data: data must be 32-bit aligned, in Format: 0xffRRGGBB - // qDebug("pfstiff, w=%d h=%d",width,height); - assert(TypeOfData==BYTE); +#ifdef QT_DEBUG + qDebug() << "TiffReader::readIntoQImage()"; +#endif + assert(TypeOfData == BYTE); + + bool doTransform = false; + + ScopedCmsProfile hIn( GetTIFFProfile(tif) ); + ScopedCmsProfile hsRGB( cmsCreate_sRGBProfile() ); + + ScopedCmsTransform xform; + + if ( hIn && hsRGB ) + { + qDebug () << "Found ICC profile"; + + cmsUInt32Number cmsInputFormat = TYPE_CMYK_8; + const cmsUInt32Number cmsOutputFormat = TYPE_BGRA_8; // RGBA_8; + const cmsUInt32Number cmsIntent = INTENT_PERCEPTUAL; + + if (has_alpha && ColorSpace == RGB && TypeOfData == BYTE) + { + cmsInputFormat = TYPE_RGBA_8; + } + else if (!has_alpha && ColorSpace == RGB && TypeOfData == BYTE) + { + cmsInputFormat = TYPE_RGB_8; + } + else if (ColorSpace == CMYK && TypeOfData == BYTE) + { + cmsInputFormat = TYPE_CMYK_8; + } else + { + TIFFClose(tif); + throw std::runtime_error("TiffReader: Unsupported colorspace combination"); + } + + xform.reset( cmsCreateTransform (hIn.data(), cmsInputFormat, + hsRGB.data(), cmsOutputFormat, + cmsIntent, 0) ); + if ( xform ) + { + doTransform = true; + } + else + { + doTransform = false; + } + } + else + { + doTransform = false; +#ifdef QT_DEBUG + qDebug () << "No embedded profile found"; +#endif + } + + QScopedPointer toReturn( new QImage(width, height, QImage::Format_RGB32) ); //--- image length uint32 imagelength; - TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &imagelength); + TIFFGetField (tif, TIFFTAG_IMAGELENGTH, &imagelength); //--- image scanline size uint32 scanlinesize = TIFFScanlineSize(tif); - uint8* bp = (uint8 *)_TIFFmalloc(scanlinesize); + + qDebug() << "Scanlinesize:" << scanlinesize; + + std::vector buffer(scanlinesize); + std::vector bufferConverted; + if ( doTransform ) + { + bufferConverted.resize((width << 2)); + } + + qDebug() << "Do Transform: " << doTransform; //--- read scan lines - for (uint y = 0; y < height; y++) + if ( doTransform ) + { + // color-converted branch! + for (uint y = 0; y < height; ++y) + { + TIFFReadScanline(tif, buffer.data(), y); + + cmsDoTransform(xform.data(), + buffer.data(), + toReturn->scanLine(y), width); + } + } + else { - TIFFReadScanline(tif, bp, y); - for ( uint x=0; xscanLine(y), + scanlinesize, + nSamples); } - else + } break; + case RGB: + { + for (uint y = 0; y < height; ++y) { - *(data + 3 + (y*width+x)*4) = bp[x*nSamples+2]; - *(data + 2 + (y*width+x)*4) = bp[x*nSamples+1]; - *(data + 1 + (y*width+x)*4) = bp[x*nSamples]; - if (has_alpha) - *(data + 0 + (y*width+x)*4) = bp[x*nSamples+3]; - else - *(data + 0 + (y*width+x)*4) = 0xff; + QRgb* qImageData = reinterpret_cast(toReturn->scanLine(y)); + TIFFReadScanline(tif, buffer.data(), y); + + // it's not really efficient, but I hope it doesn't get used + // too many times in a real world scenario! + for (uint x = 0; x < width; x++) + { + qImageData[x] = qRgba(buffer[(x * nSamples)], + buffer[(x * nSamples) + 1], + buffer[(x * nSamples) + 2], + has_alpha ? buffer[(x * nSamples) + 3] : 0xFF); + } } + } break; } } - //--- free buffers and close files - _TIFFfree(bp); - TIFFClose(tif); + TIFFClose(tif); - QImage *toreturn = new QImage(const_cast(data),width,height,QImage::Format_ARGB32); - return toreturn; + return toReturn.take(); } -TiffWriter::TiffWriter( const char* filename, pfs::Frame *f ) : tif((TIFF *)NULL) -{ - f->getXYZChannels(Xc, Yc, Zc); - width = Xc->getWidth(); - height = Yc->getHeight(); - - //X = Xc->getChannelData(); - //Y = Yc->getChannelData(); - //Z = Zc->getChannelData(); - - // qDebug("width=%d, heigh=%d",width,height); - tif = TIFFOpen(filename, "w"); - if( !tif ) - throw pfs::Exception("TIFF: could not open file for writing."); +TiffWriter::TiffWriter (const char *filename, pfs::Frame* f): + tif(TIFFOpen (filename, "w")), + ldrimage(0), + pixmap(0), + pfsFrame(f), + width(f->getWidth()), + height(f->getHeight()) +{ + if (!tif) + { + throw std::runtime_error ("TIFF: could not open file for writing."); + } TIFFSetField (tif, TIFFTAG_IMAGEWIDTH, width); TIFFSetField (tif, TIFFTAG_IMAGELENGTH, height); @@ -313,15 +697,18 @@ TIFFSetField (tif, TIFFTAG_ROWSPERSTRIP, 1); } -TiffWriter::TiffWriter( const char* filename, const quint16 *pix, int w, int h) : tif((TIFF *)NULL) +TiffWriter::TiffWriter (const char *filename, const quint16 * pix, int w, int h): + tif(TIFFOpen (filename, "w")), + ldrimage(0), + pixmap(pix), + pfsFrame(0), + width(w), + height(h) { - pixmap = pix; - width = w; - height = h; - - tif = TIFFOpen(filename, "w"); - if( !tif ) - throw pfs::Exception("TIFF: could not open file for writing."); + if (!tif) + { + throw std::runtime_error ("TIFF: could not open file for writing."); + } TIFFSetField (tif, TIFFTAG_IMAGEWIDTH, width); TIFFSetField (tif, TIFFTAG_IMAGELENGTH, height); @@ -330,194 +717,326 @@ TIFFSetField (tif, TIFFTAG_ROWSPERSTRIP, 1); } -TiffWriter::TiffWriter( const char* filename, QImage *f ) : tif((TIFF *)NULL) +TiffWriter::TiffWriter (const char *filename, QImage * f): + tif(TIFFOpen (filename, "w")), + ldrimage(f), + pixmap(0), + pfsFrame(0), + width(f->width()), + height(f->height()) { - ldrimage=f; - width =f->width(); - height =f->height(); - tif = TIFFOpen(filename, "w"); + if (!tif) + { + throw std::runtime_error ("TIFF: could not open file for writing."); + } - if( !tif ) - throw pfs::Exception("TIFF: could not open file for writing."); + uint16 extras[1]; + extras[0] = EXTRASAMPLE_ASSOCALPHA; - TIFFSetField (tif, TIFFTAG_IMAGEWIDTH, f->width()); - TIFFSetField (tif, TIFFTAG_IMAGELENGTH, f->height()); + TIFFSetField (tif, TIFFTAG_IMAGEWIDTH, width); + TIFFSetField (tif, TIFFTAG_IMAGELENGTH, height); TIFFSetField (tif, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG); - TIFFSetField (tif, TIFFTAG_EXTRASAMPLES, EXTRASAMPLE_ASSOCALPHA); TIFFSetField (tif, TIFFTAG_SAMPLESPERPIXEL, 4); + TIFFSetField (tif, TIFFTAG_EXTRASAMPLES, 1, &extras); TIFFSetField (tif, TIFFTAG_ROWSPERSTRIP, 1); } //write 32 bit float Tiff from pfs::Frame -int TiffWriter::writeFloatTiff() -{ - TIFFSetField (tif, TIFFTAG_COMPRESSION, COMPRESSION_DEFLATE); // TODO what about others? +int +TiffWriter::writeFloatTiff() +{ + assert(pfsFrame != 0); + + TIFFSetField (tif, TIFFTAG_COMPRESSION, COMPRESSION_DEFLATE); // TODO what about others? TIFFSetField (tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB); TIFFSetField (tif, TIFFTAG_BITSPERSAMPLE, 32); - const float* X = Xc->getRawData(); - const float* Y = Yc->getRawData(); - const float* Z = Zc->getRawData(); + pfs::Channel* Xc; + pfs::Channel* Yc; + pfs::Channel* Zc; + + pfsFrame->getXYZChannels(Xc, Yc, Zc); + + const float *X = Xc->getRawData (); + const float *Y = Yc->getRawData (); + const float *Z = Zc->getRawData (); tsize_t strip_size = TIFFStripSize (tif); tstrip_t strips_num = TIFFNumberOfStrips (tif); - float* strip_buf = (float*)_TIFFmalloc(strip_size); //enough space for a strip (row) + float *strip_buf = (float *) _TIFFmalloc (strip_size); //enough space for a strip (row) if (!strip_buf) - throw pfs::Exception("TIFF: error allocating buffer."); + { + TIFFClose(tif); + throw std::runtime_error ("TIFF: error allocating buffer."); + } - emit maximumValue( strips_num ); // for QProgressDialog + emit maximumValue (strips_num); // for QProgressDialog for (unsigned int s = 0; s < strips_num; s++) { for (unsigned int col = 0; col < width; col++) { - strip_buf[3*col + 0] = X[s*width + col]; //(*X)(col,s); - strip_buf[3*col + 1] = Y[s*width + col]; //(*Y)(col,s); - strip_buf[3*col + 2] = Z[s*width + col]; //(*Z)(col,s); + strip_buf[3 * col + 0] = X[s * width + col]; //(*X)(col,s); + strip_buf[3 * col + 1] = Y[s * width + col]; //(*Y)(col,s); + strip_buf[3 * col + 2] = Z[s * width + col]; //(*Z)(col,s); } - if (TIFFWriteEncodedStrip (tif, s, strip_buf, strip_size) == 0) + if (TIFFWriteEncodedStrip(tif, s, strip_buf, strip_size) == 0) { - qDebug("error writing strip"); + qDebug ("error writing strip"); + TIFFClose(tif); + return -1; } else { - emit nextstep( s ); // for QProgressDialog + emit nextstep (s); // for QProgressDialog } } - _TIFFfree(strip_buf); - TIFFClose(tif); + _TIFFfree (strip_buf); + TIFFClose(tif); + return 0; } //write LogLUv Tiff from pfs::Frame -int TiffWriter::writeLogLuvTiff() -{ - TIFFSetField(tif, TIFFTAG_COMPRESSION, COMPRESSION_SGILOG); - TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_LOGLUV); - TIFFSetField(tif, TIFFTAG_SGILOGDATAFMT, SGILOGDATAFMT_FLOAT); - TIFFSetField(tif, TIFFTAG_STONITS, 1.); /* not known */ - - const float* X = Xc->getRawData(); - const float* Y = Yc->getRawData(); - const float* Z = Zc->getRawData(); +int +TiffWriter::writeLogLuvTiff () +{ + assert(pfsFrame != 0); + + TIFFSetField (tif, TIFFTAG_COMPRESSION, COMPRESSION_SGILOG); + TIFFSetField (tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_LOGLUV); + TIFFSetField (tif, TIFFTAG_SGILOGDATAFMT, SGILOGDATAFMT_FLOAT); + TIFFSetField (tif, TIFFTAG_STONITS, 1.); /* not known */ + + pfs::Channel* Xc; + pfs::Channel* Yc; + pfs::Channel* Zc; + + pfsFrame->getXYZChannels(Xc, Yc, Zc); + + const float *X = Xc->getRawData (); + const float *Y = Yc->getRawData (); + const float *Z = Zc->getRawData (); tsize_t strip_size = TIFFStripSize (tif); tstrip_t strips_num = TIFFNumberOfStrips (tif); - float* strip_buf=(float*)_TIFFmalloc(strip_size); //enough space for a strip + float *strip_buf = (float *) _TIFFmalloc (strip_size); // enough space for a strip if (!strip_buf) - throw pfs::Exception("TIFF: error allocating buffer."); + { + TIFFClose(tif); + throw std::runtime_error ("TIFF: error allocating buffer."); + } - emit maximumValue( strips_num ); // for QProgressDialog + emit maximumValue (strips_num); // for QProgressDialog - for (unsigned int s=0; s embedBuffer(profileSize); + + cmsSaveProfileToMem(hsRGB.data(), + reinterpret_cast(embedBuffer.data()), + &profileSize); + + TIFFSetField(tif, TIFFTAG_ICCPROFILE, profileSize, + reinterpret_cast(embedBuffer.data()) ); + + TIFFSetField(tif, TIFFTAG_COMPRESSION, COMPRESSION_DEFLATE); // TODO what about others? + TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB); + TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 8); + + tsize_t strip_size = TIFFStripSize(tif); + tstrip_t strips_num = TIFFNumberOfStrips(tif); + + char *strip_buf = (char *)_TIFFmalloc (strip_size); //enough space for a strip + if (!strip_buf) + { + TIFFClose(tif); + throw std::runtime_error ("TIFF: error allocating buffer"); + } + + QRgb *ldrpixels = reinterpret_cast(ldrimage->bits ()); + + emit maximumValue (strips_num); // for QProgressDialog + for (unsigned int s = 0; s < strips_num; s++) + { + for (unsigned int col = 0; col < width; col++) + { + strip_buf[4 * col + 0] = qRed (ldrpixels[width * s + col]); + strip_buf[4 * col + 1] = qGreen (ldrpixels[width * s + col]); + strip_buf[4 * col + 2] = qBlue (ldrpixels[width * s + col]); + strip_buf[4 * col + 3] = qAlpha (ldrpixels[width * s + col]); + } + if (TIFFWriteEncodedStrip(tif, s, strip_buf, strip_size) == 0) + { + qDebug ("error writing strip"); + TIFFClose(tif); + return -1; + } + else + { + emit nextstep (s); // for QProgressDialog + } + } + _TIFFfree (strip_buf); + TIFFClose(tif); + + return 0; +} + +int +TiffWriter::write16bitTiff () +{ + assert(pixmap != NULL); + + if (pixmap == NULL) + { + TIFFClose(tif); + throw std::runtime_error ("TIFF: 16 bits pixmap was not set correctly"); + } + + ScopedCmsProfile hsRGB( cmsCreate_sRGBProfile() ); + cmsUInt32Number profileSize = 0; + cmsSaveProfileToMem (hsRGB.data(), NULL, &profileSize); // get the size + + std::vector embedBuffer(profileSize); + + cmsSaveProfileToMem(hsRGB.data(), + reinterpret_cast(embedBuffer.data()), + &profileSize); + + TIFFSetField(tif, TIFFTAG_ICCPROFILE, profileSize, + reinterpret_cast(embedBuffer.data()) ); + + TIFFSetField(tif, TIFFTAG_COMPRESSION, COMPRESSION_DEFLATE); // TODO what about others? + TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB); + TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 16); tsize_t strip_size = TIFFStripSize (tif); tstrip_t strips_num = TIFFNumberOfStrips (tif); - char* strip_buf=(char*)_TIFFmalloc(strip_size); //enough space for a strip + quint16 *strip_buf = (quint16 *) _TIFFmalloc (strip_size); //enough space for a strip if (!strip_buf) - throw pfs::Exception("TIFF: error allocating buffer"); + { + TIFFClose(tif); + throw std::runtime_error ("TIFF: error allocating buffer"); + } - QRgb *ldrpixels = reinterpret_cast(ldrimage->bits()); + emit maximumValue (strips_num); // for QProgressDialog - emit maximumValue( strips_num ); // for QProgressDialog - for (unsigned int s=0; sbits() ) + width*s + col )); - strip_buf[4*col+0] = qRed(ldrpixels[width*s + col]); - //qGreen(*( (QRgb*)( ldrimage->bits() ) + width*s + col )); - strip_buf[4*col+1] = qGreen(ldrpixels[width*s + col]); - //qBlue (*( (QRgb*)( ldrimage->bits() ) + width*s + col )); - strip_buf[4*col+2] = qBlue(ldrpixels[width*s + col]); - //qAlpha(*( (QRgb*)( ldrimage->bits() ) + width*s + col )); - strip_buf[4*col+3] = qAlpha(ldrpixels[width*s + col]); + strip_buf[3 * col] = pixmap[3 * (width * s + col)]; + strip_buf[3 * col + 1] = pixmap[3 * (width * s + col) + 1]; + strip_buf[3 * col + 2] = pixmap[3 * (width * s + col) + 2]; } - if (TIFFWriteEncodedStrip (tif, s, strip_buf, strip_size) == 0) + if (TIFFWriteEncodedStrip(tif, s, strip_buf, strip_size) == 0) { - qDebug("error writing strip"); + qDebug ("error writing strip"); + TIFFClose(tif); + return -1; } else { - emit nextstep( s ); // for QProgressDialog + emit nextstep (s); // for QProgressDialog } } - _TIFFfree(strip_buf); - TIFFClose(tif); + _TIFFfree (strip_buf); + TIFFClose(tif); + return 0; } -int TiffWriter::write16bitTiff() +int +TiffWriter::writePFSFrame16bitTiff() { - if (pixmap == NULL) - throw pfs::Exception("TIFF: 16 bits pixmap was not set correctly"); + assert (pfsFrame != 0); - TIFFSetField (tif, TIFFTAG_COMPRESSION, COMPRESSION_DEFLATE); // TODO what about others? + TIFFSetField (tif, TIFFTAG_COMPRESSION, COMPRESSION_DEFLATE); // TODO what about others? TIFFSetField (tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB); TIFFSetField (tif, TIFFTAG_BITSPERSAMPLE, 16); + pfs::Channel* Xc; + pfs::Channel* Yc; + pfs::Channel* Zc; + + pfsFrame->getXYZChannels(Xc, Yc, Zc); + + const float *X = Xc->getRawData (); + const float *Y = Yc->getRawData (); + const float *Z = Zc->getRawData (); + tsize_t strip_size = TIFFStripSize (tif); tstrip_t strips_num = TIFFNumberOfStrips (tif); - - quint16* strip_buf = (quint16*)_TIFFmalloc(strip_size); //enough space for a strip + quint16 *strip_buf = (quint16 *) _TIFFmalloc (strip_size); //enough space for a strip (row) if (!strip_buf) - throw pfs::Exception("TIFF: error allocating buffer"); + { + TIFFClose(tif); + throw std::runtime_error ("TIFF: error allocating buffer."); + } - emit maximumValue( strips_num ); // for QProgressDialog + emit maximumValue (strips_num); // for QProgressDialog for (unsigned int s = 0; s < strips_num; s++) { for (unsigned int col = 0; col < width; col++) { - strip_buf[3*col] = pixmap[3*(width*s + col)]; - strip_buf[3*col + 1] = pixmap[3*(width*s + col) + 1]; - strip_buf[3*col + 2] = pixmap[3*(width*s + col) + 2]; + strip_buf[3 * col + 0] = (qint16) X[s * width + col]; //(*X)(col,s); + strip_buf[3 * col + 1] = (qint16) Y[s * width + col]; //(*Y)(col,s); + strip_buf[3 * col + 2] = (qint16) Z[s * width + col]; //(*Z)(col,s); } - if (TIFFWriteEncodedStrip (tif, s, strip_buf, strip_size) == 0) + if (TIFFWriteEncodedStrip(tif, s, strip_buf, strip_size) == 0) { - qDebug("error writing strip"); + qDebug ("error writing strip"); + TIFFClose(tif); + return -1; } else { - emit nextstep( s ); // for QProgressDialog + emit nextstep (s); // for QProgressDialog } } - _TIFFfree(strip_buf); - TIFFClose(tif); + _TIFFfree (strip_buf); + TIFFClose(tif); + return 0; } + diff -Nru luminance-2.2.1/src/Fileformat/pfstiff.h luminance-2.3.0/src/Fileformat/pfstiff.h --- luminance-2.2.1/src/Fileformat/pfstiff.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Fileformat/pfstiff.h 2012-07-01 09:10:50.000000000 +0000 @@ -30,72 +30,95 @@ #include #include - #include #include "Libpfs/array2d.h" #include "Libpfs/frame.h" -class TiffReader : public QObject { - Q_OBJECT - - TIFF* tif; - uint32 width, height; - - uint16 comp; /// compression type - uint16 phot; /// type of photometric data - enum {FLOATLOGLUV, FLOAT, WORD, BYTE} TypeOfData; //FLOAT is the wasting space one, FLOATLOGLUV is Greg Ward's format - uint16 bps; /// bits per sample - uint16 nSamples; /// number of channels in tiff file (only 1-3 are used) - bool has_alpha; - double stonits; /// scale factor to get nit values - - bool writeOnDisk; - QString fileName; - QString tempFilesPath; - +class TiffReader : public QObject +{ + Q_OBJECT + + TIFF *tif; + + uint32 width; + uint32 height; + + uint16 comp; /// compression type + uint16 phot; /// type of photometric data + enum //FLOAT is the wasting space one, FLOATLOGLUV is Greg Ward's format + { + FLOATLOGLUV, + FLOAT, + WORD, + BYTE + } TypeOfData; + enum + { + RGB, + CMYK + } ColorSpace; + uint16 bps; /// bits per sample + uint16 nSamples; /// number of channels in tiff file (only 1-3 are used) + bool has_alpha; + double stonits; /// scale factor to get nit values + + bool writeOnDisk; + QString fileName; + QString tempFilesPath; + public: - TiffReader( const char* filename, const char *tempfilespath, bool writeOnDisk ); - ~TiffReader() {} - - int getWidth() const { return width; } - int getHeight() const { return height; } - - bool is8bitTiff() { return TypeOfData==BYTE; } - bool is16bitTiff() { return TypeOfData==WORD; } - bool is32bitTiff() { return TypeOfData==FLOAT; } - bool isLogLuvTiff() { return (TypeOfData==FLOATLOGLUV); } - - pfs::Frame* readIntoPfsFrame(); //from 8,16,32,logluv TIFF to pfs::Frame - QImage* readIntoQImage(); - + TiffReader( const char* filename, const char *tempfilespath, bool writeOnDisk ); + // ~TiffReader() {} + + int getWidth() const { return width; } + int getHeight() const { return height; } + + bool is8bitTiff() { return TypeOfData==BYTE; } + bool is16bitTiff() { return TypeOfData==WORD; } + bool is32bitTiff() { return TypeOfData==FLOAT; } + bool isLogLuvTiff() { return (TypeOfData==FLOATLOGLUV); } + + pfs::Frame* readIntoPfsFrame(); //from 8,16,32,logluv TIFF to pfs::Frame + QImage* readIntoQImage(); + signals: //For ProgressDialog - void maximumValue(int); - void nextstep(int); + void maximumValue(int); + void nextstep(int); }; -class TiffWriter : public QObject { - Q_OBJECT - +class TiffWriter : public QObject +{ + Q_OBJECT + private: - TIFF* tif; - pfs::Channel *Xc, *Yc, *Zc; - - QImage *ldrimage; - const quint16 *pixmap; - uint32 width,height; + TIFF *tif; + + QImage *ldrimage; + const quint16 *pixmap; + pfs::Frame* pfsFrame; + uint32 width; + uint32 height; + public: - TiffWriter( const char* filename, pfs::Frame *f ); - TiffWriter( const char* filename, QImage *ldrimage ); - TiffWriter( const char* filename, const quint16 *pixmap, int w, int h); - - int write8bitTiff(); //write 8bit Tiff from QImage - int write16bitTiff(); //write 16bit Tiff from 16 bits pixmap - int writeFloatTiff(); //write 32bit float Tiff from pfs::Frame - int writeLogLuvTiff(); //write LogLuv Tiff from pfs::Frame + TiffWriter( const char* filename, pfs::Frame *f ); + TiffWriter( const char* filename, QImage *ldrimage ); + TiffWriter( const char* filename, const quint16 *pixmap, int w, int h); + + //! \brief write 8bit Tiff from QImage + int write8bitTiff(); + //! \brief write 16bit Tiff from 16 bits pixmap + int write16bitTiff(); + //! \brief write 32bit float Tiff from pfs::Frame + int writeFloatTiff(); + //! \brief write LogLuv Tiff from pfs::Frame + int writeLogLuvTiff(); + //! \brief write 16bit Tiff from pfs::Frame + int writePFSFrame16bitTiff(); + signals: //For ProgressDialog - void maximumValue(int); - void nextstep(int); + void maximumValue(int); + void nextstep(int); }; #endif diff -Nru luminance-2.2.1/src/Fileformat/pngwriter.cpp luminance-2.3.0/src/Fileformat/pngwriter.cpp --- luminance-2.2.1/src/Fileformat/pngwriter.cpp 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/src/Fileformat/pngwriter.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,205 @@ +/** + * This file is a part of Luminance HDR package. + * ---------------------------------------------------------------------- + * Copyright (C) 2012 Franco Comida + * + * This program 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * ---------------------------------------------------------------------- + * + * @author Franco Comida + * + */ + +#include +#include +#include +#include +#include +#include + +#if defined(WIN32) || defined(__APPLE__) || defined(__FreeBSD__) +#include +#endif + +#include "pngwriter.h" + +PngWriter::PngWriter(const QImage *out_qimage, QString filename, int quality) : + m_out_qimage(out_qimage), + m_fname(filename), + m_quality(quality) +{} + +PngWriter::PngWriter(const QImage *out_qimage, int quality): + m_out_qimage(out_qimage), + m_quality(quality) +{} + +bool PngWriter::writeQImageToPng() +{ + png_uint_32 width = m_out_qimage->width(); + png_uint_32 height = m_out_qimage->height(); + + cmsUInt32Number profile_size = 0; + + cmsHPROFILE hsRGB = cmsCreate_sRGBProfile(); + cmsSaveProfileToMem(hsRGB, NULL, &profile_size); // get the size + +#if PNG_LIBPNG_VER_MINOR < 5 + std::vector profile_buffer(profile_size); +#else + std::vector profile_buffer(profile_size); +#endif + + cmsSaveProfileToMem(hsRGB, profile_buffer.data(), &profile_size); // + + qDebug() << "sRGB profile size: " << profile_size; + + FILE *outfile; + +#if defined(WIN32) || defined(__APPLE__) || defined(__FreeBSD__) + QTemporaryFile output_temp_file; +#else + std::vector outbuf; +#endif + if ( !m_fname.isEmpty() ) // we are writing to file + { + QByteArray ba( QFile::encodeName(m_fname) ); + qDebug() << "writeQImageToPng: filename: " << ba.data(); + + outfile = fopen(ba.data(), "wb"); + + if (outfile == NULL) + { + qDebug() << "can't open " << m_fname; + return false; + } + } + else // we are writing to memory buffer + { +#if defined(WIN32) || defined(__APPLE__) || defined(__FreeBSD__) + if ( !output_temp_file.open() ) return false; // could not open the temporary file! + + QByteArray output_temp_filename = QFile::encodeName( output_temp_file.fileName() ); + output_temp_file.close(); + outfile = fopen(output_temp_filename.constData(), "w+"); + if ( outfile == NULL ) return false; +#else + std::vector t(width * height * 4 + (width * height * 4) * 0.1); + outbuf.swap( t ); + // reset all element of the vector to zero! + std::fill(outbuf.begin(), outbuf.end(), 0); + + qDebug() << "outbuf size: " << outbuf.size(); + + outfile = fmemopen(outbuf.data(), outbuf.size(), "w+"); + if (outfile == NULL) { + qDebug() << "Failed opening file on memory"; + return false; + } +#endif + } + + png_structp png_ptr = png_create_write_struct + (PNG_LIBPNG_VER_STRING, NULL, + NULL, NULL); + if (!png_ptr) + { + qDebug() << "PNG: Failed to create write struct"; + fclose(outfile); + return false; + } + + png_infop info_ptr = png_create_info_struct(png_ptr); + if (!info_ptr) + { + qDebug() << "PNG: Failed to create info struct"; + png_destroy_write_struct(&png_ptr, + (png_infopp)NULL); + fclose(outfile); + return false; + } + + if (setjmp(png_jmpbuf(png_ptr))) + { + qDebug() << "PNG: Error writing file"; + png_destroy_write_struct(&png_ptr, &info_ptr); + fclose(outfile); + return false; + } + + png_init_io(png_ptr, outfile); + + png_set_IHDR(png_ptr, info_ptr, width, height, + 8, PNG_COLOR_TYPE_RGB_ALPHA, PNG_INTERLACE_NONE, + PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); + + int compression_level = 9 - m_quality/11.11111; + + png_set_compression_level(png_ptr, compression_level); + + png_set_bgr(png_ptr); + + char profileName[5] = "sRGB"; + png_set_iCCP(png_ptr, info_ptr, profileName, 0, + profile_buffer.data(), (png_uint_32)profile_size); + + png_write_info(png_ptr, info_ptr); + + std::vector row_pointers(height); + + for (png_uint_32 row = 0; row < height; row++) + row_pointers[row] = NULL; + + for (png_uint_32 row = 0; row < height; row++) + row_pointers[row] = (png_bytep) png_malloc(png_ptr, png_get_rowbytes(png_ptr, + info_ptr)); + + for (png_uint_32 row = 0; row < height; row++) { + memcpy(row_pointers[row], m_out_qimage->scanLine( row ), png_get_rowbytes(png_ptr, info_ptr)); + png_write_row(png_ptr, row_pointers[row]); + } + + png_write_end(png_ptr, info_ptr); + + for (png_uint_32 row = 0; row < height; row++) + png_free(png_ptr, row_pointers[row]); + + png_destroy_write_struct(&png_ptr, &info_ptr); + + if ( m_fname.isEmpty() ) + { +#if defined(WIN32) || defined(__APPLE__) || defined(__FreeBSD__) + fflush(outfile); + fseek(outfile, 0, SEEK_END); + m_filesize = ftell(outfile); +#else + png_uint_32 size = outbuf.size() - 1; + for (; size > 0; --size) + { + if (outbuf[size] != 0) + break; + } + m_filesize = size; + qDebug() << "File size: " << m_filesize; +#endif + } + fclose(outfile); + return true; +} + +int PngWriter::getFileSize() +{ + return m_filesize; +} diff -Nru luminance-2.2.1/src/Fileformat/pngwriter.h luminance-2.3.0/src/Fileformat/pngwriter.h --- luminance-2.2.1/src/Fileformat/pngwriter.h 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/src/Fileformat/pngwriter.h 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,51 @@ +/** + * This file is a part of Luminance HDR package. + * ---------------------------------------------------------------------- + * Copyright (C) 2012 Franco Comida + * + * This program 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * ---------------------------------------------------------------------- + * + * @author Franco Comida + * + */ + +#ifndef PNGWRITER_H +#define PNGWRITER_H + +#include +#include +#include + +#include + +class PngWriter : public QObject +{ + Q_OBJECT + + const QImage *m_out_qimage; + QString m_fname; + int m_quality; + png_uint_32 m_filesize; + +public: + PngWriter(const QImage *, QString, int); + PngWriter(const QImage *, int); + ~PngWriter() {} + bool writeQImageToPng(); + int getFileSize(); +}; + +#endif diff -Nru luminance-2.2.1/src/Filter/pfsgammaandlevels.cpp luminance-2.3.0/src/Filter/pfsgammaandlevels.cpp --- luminance-2.2.1/src/Filter/pfsgammaandlevels.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Filter/pfsgammaandlevels.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -45,55 +45,57 @@ return v; } -//! \note I assume that *in* contains only value between [0,1] -void gamma_levels_array(const pfs::Array2D* in, pfs::Array2D* out, - float black_in, float white_in, - float black_out, float white_out, float gamma) -{ - // same formula used inside GammaAndLevels::refreshLUT() - //float value = powf( ( ((float)(i)/255.0f) - bin ) / (win-bin), expgamma); - //LUT[i] = clamp(blackout+value*(whiteout-blackout),0,255); - - const float* in_vector = in->getRawData(); - float* out_vector = out->getRawData(); - - const int ELEMS = in->getCols()*in->getRows(); - - if (gamma != 1.0f) - { -#pragma omp parallel for - for (int idx = 0; idx < ELEMS; ++idx) - { - float tmp = (in_vector[idx] - black_in)/(white_in - black_in); - tmp = powf(tmp, gamma); - - tmp = black_out + tmp*(white_out-black_out); - - out_vector[idx] = clamp(tmp, 0.0f, 1.0f); - } - } - else - { -#pragma omp parallel for - for (int idx = 0; idx < ELEMS; ++idx) - { - float tmp = (in_vector[idx] - black_in)/(white_in - black_in); - //tmp = powf(tmp, gamma); - - tmp = black_out + tmp*(white_out-black_out); - - out_vector[idx] = clamp(tmp, 0.0f, 1.0f); - } - } -} +////! \note I assume that *in* contains only value between [0,1] +//void gamma_levels_array(const pfs::Array2D* in, pfs::Array2D* out, +// float black_in, float white_in, +// float black_out, float white_out, float gamma) +//{ +// // same formula used inside GammaAndLevels::refreshLUT() +// //float value = powf( ( ((float)(i)/255.0f) - bin ) / (win-bin), expgamma); +// //LUT[i] = clamp(blackout+value*(whiteout-blackout),0,255); + +// const float* in_vector = in->getRawData(); +// float* out_vector = out->getRawData(); + +// const int ELEMS = in->getCols()*in->getRows(); + +// if (gamma != 1.0f) +// { +//#pragma omp parallel for +// for (int idx = 0; idx < ELEMS; ++idx) +// { +// float tmp = (in_vector[idx] - black_in)/(white_in - black_in); +// tmp = powf(tmp, gamma); + +// tmp = black_out + tmp*(white_out-black_out); + +// out_vector[idx] = clamp(tmp, 0.0f, 1.0f); +// } +// } +// else +// { +//#pragma omp parallel for +// for (int idx = 0; idx < ELEMS; ++idx) +// { +// float tmp = (in_vector[idx] - black_in)/(white_in - black_in); +// //tmp = powf(tmp, gamma); + +// tmp = black_out + tmp*(white_out-black_out); + +// out_vector[idx] = clamp(tmp, 0.0f, 1.0f); +// } +// } +//} } namespace pfs { -pfs::Frame* gamma_levels(pfs::Frame* inFrame, float black_in, float white_in, - float black_out, float white_out, float gamma) +pfs::Frame* gamma_levels(pfs::Frame* inFrame, + float black_in, float white_in, + float black_out, float white_out, + float gamma) { #ifdef TIMER_PROFILING msec_timer f_timer; @@ -104,25 +106,51 @@ << "White in =" << white_in << "white out =" << white_out << "Gamma =" << gamma; - pfs::DOMIO pfsio; - const int outWidth = inFrame->getWidth(); const int outHeight = inFrame->getHeight(); - pfs::Frame *outFrame = pfsio.createFrame(outWidth, outHeight); + pfs::Frame* outFrame = new pfs::Frame(outWidth, outHeight); + + pfs::Channel *Xc, *Yc, *Zc; + inFrame->getXYZChannels( Xc, Yc, Zc ); + assert( Xc != NULL && Yc != NULL && Zc != NULL ); + + const float* R_i = Xc->getRawData(); + const float* G_i = Yc->getRawData(); + const float* B_i = Zc->getRawData(); - pfs::ChannelIterator *it = inFrame->getChannels(); + outFrame->createXYZChannels( Xc, Yc, Zc ); + assert( Xc != NULL && Yc != NULL && Zc != NULL ); - while (it->hasNext()) + float* R_o = Xc->getRawData(); + float* G_o = Yc->getRawData(); + float* B_o = Zc->getRawData(); + + // float exp_gamma = 1.f/gamma; + for (int idx = 0; idx < outWidth*outHeight; ++idx) { - pfs::Channel *inCh = it->getNext(); - pfs::Channel *outCh = outFrame->createChannel(inCh->getName()); + float red = R_i[idx]; + float green = G_i[idx]; + float blue = B_i[idx]; + + float L = 0.2126f * red + + 0.7152f * green + + 0.0722f * blue; // number between [0..1] + + float c = powf(L, gamma - 1.0f); + + red = (red - black_in) / (white_in - black_in); + red *= c; + + green = (green - black_in) / (white_in - black_in); + green *= c; - pfs::Array2D* inArray2D = inCh->getChannelData(); - pfs::Array2D* outArray2D = outCh->getChannelData(); + blue = (blue - black_in) / (white_in - black_in); + blue *= c; - gamma_levels_array(inArray2D, outArray2D, black_in, white_in, - black_out, white_out, gamma); + R_o[idx] = clamp(black_out + red * (white_out - black_out), 0.f, 1.f); + G_o[idx] = clamp(black_out + green * (white_out - black_out), 0.f, 1.f); + B_o[idx] = clamp(black_out + blue * (white_out - black_out), 0.f, 1.f); } pfs::copyTags(inFrame, outFrame); diff -Nru luminance-2.2.1/src/Filter/pfsgammaandlevels.h luminance-2.3.0/src/Filter/pfsgammaandlevels.h --- luminance-2.2.1/src/Filter/pfsgammaandlevels.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Filter/pfsgammaandlevels.h 2012-07-01 09:10:50.000000000 +0000 @@ -29,7 +29,9 @@ class Frame; -pfs::Frame* gamma_levels(pfs::Frame* in, float black_in, float white_in, - float black_out, float white_out, float gamma); +pfs::Frame* gamma_levels(pfs::Frame* in, + float black_in, float white_in, + float black_out, float white_out, + float gamma); } diff -Nru luminance-2.2.1/src/Filter/pfsgamma.h luminance-2.3.0/src/Filter/pfsgamma.h --- luminance-2.2.1/src/Filter/pfsgamma.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Filter/pfsgamma.h 2012-07-01 09:10:50.000000000 +0000 @@ -25,16 +25,22 @@ * $Id: pfsgamma.h,v 1.3 2008/07/29 16:14:29 rafm Exp $ */ -#ifndef __PFSGAMMA_H__ -#define __PFSGAMMA_H__ +#ifndef PFSGAMMA_H +#define PFSGAMMA_H #include "Libpfs/array2d.h" #include "Libpfs/frame.h" namespace pfs { - void applyGamma(pfs::Array2D *array, const float exponent, const float multiplier); - pfs::Frame* applyGammaOnFrame(pfs::Frame* frame, const float gamma); + // Note: passing basic types by "const" copy is completely useless, + // and shows a wrong design either [Davide: 2012.04.28] + void applyGamma(pfs::Array2D *array, + const float exponent, + const float multiplier); + + pfs::Frame* applyGammaOnFrame(pfs::Frame* frame, + const float gamma); } -#endif +#endif // PFSGAMMA_H diff -Nru luminance-2.2.1/src/Filter/pfsrotate.h luminance-2.3.0/src/Filter/pfsrotate.h --- luminance-2.2.1/src/Filter/pfsrotate.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Filter/pfsrotate.h 2012-07-01 09:10:50.000000000 +0000 @@ -26,8 +26,8 @@ * $Id: pfsrotate.h,v 1.1 2005/06/15 13:36:54 rafm Exp $ */ -#ifndef __PFSROTATE_H__ -#define __PFSROTATE_H__ +#ifndef PFSROTATE_H +#define PFSROTATE_H #include "Libpfs/array2d.h" #include "Libpfs/frame.h" @@ -38,4 +38,4 @@ pfs::Frame* rotateFrame(pfs::Frame* frame, bool clock_wise); } -#endif +#endif // PFSROTATE_H diff -Nru luminance-2.2.1/src/Filter/pfssize.cpp luminance-2.3.0/src/Filter/pfssize.cpp --- luminance-2.2.1/src/Filter/pfssize.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Filter/pfssize.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -34,8 +34,8 @@ #include "Libpfs/frame.h" #include "Libpfs/domio.h" - #define ROUNDING_ERROR 0.000001 + namespace pfs { class ResampleFilter diff -Nru luminance-2.2.1/src/Filter/pfssize.h luminance-2.3.0/src/Filter/pfssize.h --- luminance-2.2.1/src/Filter/pfssize.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Filter/pfssize.h 2012-07-01 09:10:50.000000000 +0000 @@ -25,18 +25,19 @@ * $Id: pfssize.h,v 1.4 2009/01/29 00:44:30 rafm Exp $ */ -#ifndef __PFSSIZE_H__ -#define __PFSSIZE_H__ - -#include "Libpfs/frame.h" +#ifndef PFSSIZE_H +#define PFSSIZE_H namespace pfs { - pfs::Frame* resizeFrame(pfs::Frame* frame, int xSize); - - void downsampleArray(const pfs::Array2D *from, pfs::Array2D *to); + // forward declaration + class Frame; + class Array2D; + + Frame* resizeFrame(Frame* frame, + int xSize); + void downsampleArray(const Array2D *from, + Array2D *to); } - - -#endif +#endif // PFSSIZE_H diff -Nru luminance-2.2.1/src/HdrCreation/createhdr.cpp luminance-2.3.0/src/HdrCreation/createhdr.cpp --- luminance-2.2.1/src/HdrCreation/createhdr.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/HdrCreation/createhdr.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -192,12 +192,10 @@ { FILE* respfile = fopen(QFile::encodeName(chosen_config->LoadCurveFromFilename).constData(),"r"); // read camera response from file - bool loadR_ok = responseLoad(respfile, Ir.data(), M); - bool loadG_ok = responseLoad(respfile, Ig.data(), M); - bool loadB_ok = responseLoad(respfile, Ib.data(), M); + bool load_ok = responseLoad(respfile, Ir.data(), Ig.data(), Ib.data(), M); fclose(respfile); - if ( !loadR_ok || !loadG_ok || !loadB_ok ) + if ( !load_ok) { responseGamma(Ir.data(), M); responseGamma(Ig.data(), M); @@ -237,6 +235,13 @@ break; } + //save response curves if required (variable not empty) + if (chosen_config->SaveCurveToFilename != "") { + FILE * respfile=fopen(QFile::encodeName(chosen_config->SaveCurveToFilename).constData(), "w"); + responseSave(respfile, Ir.data(), Ig.data(), Ib.data(), M); + fclose(respfile); + } + //3) apply model to generate hdr. switch ( opt_model ) { diff -Nru luminance-2.2.1/src/HdrCreation/HdrCreationManager.cpp luminance-2.3.0/src/HdrCreation/HdrCreationManager.cpp --- luminance-2.2.1/src/HdrCreation/HdrCreationManager.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/HdrCreation/HdrCreationManager.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -3,19 +3,19 @@ * ---------------------------------------------------------------------- * Copyright (C) 2006,2007 Giuseppe Rota * - * This program 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 2 of the License, or - * (at your option) any later version. + * This program 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 2 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. + * 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * ---------------------------------------------------------------------- * * @author Giuseppe Rota @@ -28,26 +28,115 @@ #include #include +#include +#include "Libpfs/domio.h" #include "Fileformat/pfstiff.h" +#include "Fileformat/pfsouthdrimage.h" +#include "Filter/pfscut.h" #include "Exif/ExifOperations.h" #include "Threads/HdrInputLoader.h" #include "mtb_alignment.h" #include "HdrCreationManager.h" #include "arch/math.h" +#include "Common/msec_timer.h" -HdrCreationManager::HdrCreationManager(): m_shift(0) { - ais = NULL; - chosen_config = predef_confs[0]; - inputType = UNKNOWN_INPUT_TYPE; -} +namespace +{ +pfs::Array2D *shiftPfsArray2D(pfs::Array2D *in, int dx, int dy) +{ +#ifdef TIMER_PROFILING + msec_timer stop_watch; + stop_watch.start(); +#endif -void HdrCreationManager::setConfig(config_triple &c) { - chosen_config = c; + int width = in->getCols(); + int height = in->getRows(); + + pfs::Array2D *temp = new pfs::Array2D(width, height); + pfs::Array2D *out = new pfs::Array2D(width, height); + +#pragma omp parallel for shared(temp) + for (int j = 0; j < height; j++) + for (int i = 0; i < width; i++) + (*temp)(i, j) = 0; + + // x-shift +#pragma omp parallel for shared(in) + for (int j = 0; j < height; j++) { + for (int i = 0; i < width; i++) { + if ((i+dx) < 0) + continue; + if ((i+dx) >= width) + break; + if ((*in)(i+dx, j) > 65535) + (*temp)(i, j) = 65535; + else if ((*in)(i+dx, j) < 0) + (*temp)(i, j) = 0; + else + (*temp)(i, j) = (*in)(i+dx, j); + } + } + // y-shift +#pragma omp parallel for shared(out) + for (int i = 0; i < width; i++) { + for (int j = 0; j < height; j++) { + if ((j+dy) < 0) + continue; + if ((j+dy) >= height) + break; + if ((*temp)(i, j+dy) > 65535) + (*out)(i, j) = 65535; + else if ((*temp)(i, j+dy) < 0) + (*out)(i, j) = 0; + else + (*out)(i, j) = (*temp)(i, j+dy); + } + } +#ifdef TIMER_PROFILING + stop_watch.stop_and_update(); + std::cout << "shiftPfsArray2D = " << stop_watch.get_time() << " msec" << std::endl; +#endif + + return out; +} +} + +HdrCreationManager::HdrCreationManager(bool fromCommandLine) : + inputType( UNKNOWN_INPUT_TYPE ), + chosen_config( predef_confs[0] ), + ais( NULL ), + m_shift(0), + fromCommandLine( fromCommandLine ) +{} + +//bool loadingError; + +//// number of running threads at any given time +//int runningThreads; +//// cumulative number of successfully loaded files +//int processedFiles; + +//LuminanceOptions m_luminance_options; + +//// align_image_stack +//QProcess *ais; + +//int m_shift; + +//int m_mdrWidth; +//int m_mdrHeight; + +//bool fromCommandLine; + +void HdrCreationManager::setConfig(const config_triple &c) +{ + chosen_config = c; } -void HdrCreationManager::setFileList(QStringList &l) { - processedFiles = m_shift; +void HdrCreationManager::setFileList(const QStringList& l) +{ + processedFiles = m_shift; runningThreads = 0; loadingError = false; @@ -56,38 +145,45 @@ expotimes.resize(fileList.count()); filesToRemove.resize(fileList.count()); - //add default values - for (int i = 0; i < l.count(); i++) { - //time equivalents of EV values + // add default values + for (int i = 0; i < l.count(); i++) + { + // time equivalents of EV values expotimes[m_shift + i] = -1; - //i-th==true means we started a thread to load the i-th file + // i-th==true means we started a thread to load the i-th file startedProcessing.append(false); - //tiffLdrList contains false by default - tiffLdrList.append(false); - //ldr payloads + + // ldr payloads ldrImagesList.append(NULL); - //mdr payloads + // mdr payloads listmdrR.push_back(NULL); listmdrG.push_back(NULL); listmdrB.push_back(NULL); } } -void HdrCreationManager::loadInputFiles() { +void HdrCreationManager::loadInputFiles() +{ //find first not started processing. int firstNotStarted = -1; - for (int i = 0; i < fileList.size(); i++) { - if (!startedProcessing.at(i)) { + for (int i = 0; i < fileList.size(); i++) + { + if ( !startedProcessing.at(i) ) + { firstNotStarted = i; //qDebug("HCM: loadInputFiles: found not startedProcessing: %d",i); break; } } - //we can end up in this function "conditionalLoadInput" many times, called in a queued way by newResult(...). - if (firstNotStarted == -1) { - if (processedFiles == fileList.size()) { //then it's really over - if (filesLackingExif.size() == 0) { + // we can end up in this function "conditionalLoadInput" many times, + // called in a queued way by newResult(...). + if (firstNotStarted == -1) + { + if (processedFiles == fileList.size()) //then it's really over + { + if (filesLackingExif.size() == 0) + { //give an offset to the EV values if they are outside of the -10..10 range. checkEVvalues(); } @@ -97,8 +193,11 @@ //return when list is over but some threads are still running. return; } //if all files already started processing - else { //if we still have to start processing some file - while (runningThreads < m_luminance_options.getNumThreads() && firstNotStarted < startedProcessing.size()) { + else + { //if we still have to start processing some file + while ( runningThreads < m_luminance_options.getNumThreads() && + firstNotStarted < startedProcessing.size() ) + { //qDebug("HCM: Creating loadinput thread on %s",qPrintable(fileList[firstNotStarted])); startedProcessing[firstNotStarted] = true; HdrInputLoader *thread = new HdrInputLoader(fileList[firstNotStarted],firstNotStarted); @@ -117,85 +216,100 @@ } } -void HdrCreationManager::loadFailed(QString message, int /*index*/) { +void HdrCreationManager::loadFailed(const QString& message, int /*index*/) +{ //check for correct image size: update list that will be sent once all is over. //qDebug("HCM: failed loading file: %s.", qPrintable(message)); loadingError = true; emit errorWhileLoading(message); } -void HdrCreationManager::mdrReady(pfs::Frame *newFrame, int index, float expotime, QString newfname) { +void HdrCreationManager::mdrReady(pfs::Frame* newFrame, int index, float expotime, const QString& newfname) +{ if (loadingError) { //qDebug("HCM: loadingError, bailing out."); + emit processed(); return; } //newFrame is in CS_RGB but channel names remained X Y Z pfs::Channel *R, *G, *B; - newFrame->getXYZChannels( R, G, B); + newFrame->getXYZChannels(R, G, B); - if (inputType == LDR_INPUT_TYPE) { + if (inputType == LDR_INPUT_TYPE) + { //qDebug("HCM: wrong format, bailing out."); - loadingError=true; + loadingError = true; emit errorWhileLoading(tr("The image %1 is an 8 bit format (LDR) while the previous ones are not.").arg(newfname)); return; } inputType = MDR_INPUT_TYPE; - if (!mdrsHaveSameSize(R->getWidth(),R->getHeight())) { + if (!mdrsHaveSameSize(R->getWidth(),R->getHeight())) + { //qDebug("HCM: wrong size, bailing out."); loadingError = true; emit errorWhileLoading(tr("The image %1 has an invalid size.").arg(newfname)); return; } - + if (!fromCommandLine) + { + mdrImagesList.append(fromHDRPFStoQImage(newFrame)); + } + m_mdrWidth = R->getWidth(); + m_mdrHeight = R->getHeight(); // fill with image data listmdrR[index] = R->getChannelData(); listmdrG[index] = G->getChannelData(); listmdrB[index] = B->getChannelData(); //perform some housekeeping - //pfs::DOMIO pfsio; + //pfs::DOMIO pfsio; //pfsio.freeFrame(newFrame); newResult(index,expotime,newfname); //continue with the loading process loadInputFiles(); } -void HdrCreationManager::ldrReady(QImage *newImage, int index, float expotime, QString newfname, bool ldrtiff) { +void HdrCreationManager::ldrReady(QImage* newImage, int index, float expotime, const QString& newfname, bool /*ldrtiff*/) +{ //qDebug("HCM: ldrReady"); - if (loadingError) { + if (loadingError) + { //qDebug("HCM: loadingError, bailing out."); + emit processed(); return; } - if (inputType==MDR_INPUT_TYPE) { + if (inputType==MDR_INPUT_TYPE) + { //qDebug("HCM: wrong format, bailing out."); loadingError = true; - emit errorWhileLoading(tr("The image %1 is an 16 bit format while the previous ones are not.").arg(newfname)); + emit errorWhileLoading(tr("The image %1 is an 16 bit format while the previous ones are not.").arg(newfname)); return; } inputType=LDR_INPUT_TYPE; - if (!ldrsHaveSameSize(newImage->width(),newImage->height())) { + if (!ldrsHaveSameSize(newImage->width(),newImage->height())) + { //qDebug("HCM: wrong size, bailing out."); loadingError = true; - emit errorWhileLoading(tr("The image %1 has an invalid size.").arg(newfname)); + emit errorWhileLoading(tr("The image %1 has an invalid size.").arg(newfname)); return; } // fill with image data ldrImagesList[index] = newImage; - //check if ldr tiff - if (ldrtiff) - tiffLdrList[index] = true; + //perform some housekeeping newResult(index,expotime,newfname); //continue with the loading process loadInputFiles(); } -void HdrCreationManager::newResult(int index, float expotime, QString newfname) { +void HdrCreationManager::newResult(int index, float expotime, const QString& newfname) +{ runningThreads--; processedFiles++; //update filesToRemove - if ( fileList.at(index) != newfname ) { + if ( fileList.at(index) != newfname ) + { qDebug() << "Files to remove " << index << " " << newfname; filesToRemove[index] = newfname; } @@ -205,52 +319,69 @@ QFileInfo qfi(fileList[index]); //check for invalid exif: update list that will be sent once all is over. - if (expotimes[index] == -1) { + if (expotimes[index] == -1) + { filesLackingExif << "
  • "+qfi.fileName()+"
  • "; //qDebug("HCM: new invalid exif. elements: %d", filesLackingExif.size()); } emit fileLoaded(index,fileList[index],expotimes[index]); + emit processed(); } -bool HdrCreationManager::ldrsHaveSameSize(int currentWidth, int currentHeight) { - for (int i = 0; i < ldrImagesList.size(); i++) { +bool HdrCreationManager::ldrsHaveSameSize(int currentWidth, int currentHeight) +{ + for (int i = 0; i < ldrImagesList.size(); i++) + { const QImage* imagepointer = ldrImagesList.at(i); - if (imagepointer != NULL) { - if (imagepointer->width() != currentWidth || imagepointer->height() != currentHeight) { - return false; - } - } + if (imagepointer != NULL) + { + if ( (imagepointer->width() != currentWidth) || + (imagepointer->height() != currentHeight) ) + { + return false; + } + } } return true; } -bool HdrCreationManager::mdrsHaveSameSize(int currentWidth, int currentHeight) { - for (unsigned int i = 0; i < listmdrR.size(); i++) { +bool HdrCreationManager::mdrsHaveSameSize(int currentWidth, int currentHeight) +{ + for (unsigned int i = 0; i < listmdrR.size(); i++) + { const pfs::Array2D* Rpointer = listmdrR.at(i); const pfs::Array2D* Gpointer = listmdrG.at(i); const pfs::Array2D* Bpointer = listmdrB.at(i); - if (Rpointer != NULL && Gpointer != NULL && Bpointer != NULL) { - if (Rpointer->getCols() != currentWidth || Rpointer->getRows() != currentHeight - || Gpointer->getCols() != currentWidth || Gpointer->getRows() != currentHeight - || Bpointer->getCols() != currentWidth || Bpointer->getRows() != currentHeight ) { - return false; - } - } + if (Rpointer != NULL && Gpointer != NULL && Bpointer != NULL) + { + if ( (Rpointer->getCols() != currentWidth) || + (Rpointer->getRows() != currentHeight) || + (Gpointer->getCols() != currentWidth) || + (Gpointer->getRows() != currentHeight) || + (Bpointer->getCols() != currentWidth) || + (Bpointer->getRows() != currentHeight) ) + { + return false; + } + } } return true; } -void HdrCreationManager::align_with_mtb() { - mtb_alignment(ldrImagesList,tiffLdrList); - emit finishedAligning(); +void HdrCreationManager::align_with_mtb() +{ + mtb_alignment(ldrImagesList); + emit finishedAligning(0); } -void HdrCreationManager::align_with_ais() { +void HdrCreationManager::align_with_ais() +{ ais = new QProcess(this); if (ais == NULL) //TODO: exit gracefully exit(1); - ais->setWorkingDirectory(m_luminance_options.getTempDir()); + if (!fromCommandLine) + ais->setWorkingDirectory(m_luminance_options.getTempDir()); QStringList env = QProcess::systemEnvironment(); #ifdef WIN32 QString separator(";"); @@ -261,9 +392,10 @@ ais->setEnvironment(env); connect(ais, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(ais_finished(int,QProcess::ExitStatus))); connect(ais, SIGNAL(error(QProcess::ProcessError)), this, SIGNAL(ais_failed(QProcess::ProcessError))); + connect(ais, SIGNAL(error(QProcess::ProcessError)), this, SLOT(ais_failed_slot(QProcess::ProcessError))); connect(ais, SIGNAL(readyRead()), this, SLOT(readData())); - QStringList ais_parameters = m_luminance_options.getAlignImageStackOptions(); + QStringList ais_parameters = m_luminance_options.getAlignImageStackOptions(); if (filesToRemove[0] == "") { ais_parameters << fileList; } @@ -277,36 +409,48 @@ #else ais->start("align_image_stack", ais_parameters ); #endif + qDebug() << "ais started"; } -void HdrCreationManager::ais_finished(int exitcode, QProcess::ExitStatus exitstatus) { - if (exitstatus != QProcess::NormalExit) { +void HdrCreationManager::ais_finished(int exitcode, QProcess::ExitStatus exitstatus) +{ + if (exitstatus != QProcess::NormalExit) + { + qDebug() << "ais failed"; //emit ais_failed(QProcess::Crashed); return; } - if (exitcode == 0) { + if (exitcode == 0) + { //TODO: try-catch //qDebug("HCM: align_image_stack successfully terminated"); clearlists(false); - for (int i = 0; i < fileList.size(); i++) { + for (int i = 0; i < fileList.size(); i++) + { //align_image_stack can only output tiff files - QString filename = QString(m_luminance_options.getTempDir() + "/aligned_" + QString("%1").arg(i,4,10,QChar('0'))+".tif"); - QByteArray fname = QFile::encodeName(filename); + QString filename; + if (!fromCommandLine) + filename = QString(m_luminance_options.getTempDir() + "/aligned_" + QString("%1").arg(i,4,10,QChar('0'))+".tif"); + else + filename = QString("aligned_" + QString("%1").arg(i,4,10,QChar('0'))+".tif"); + QByteArray fname = QFile::encodeName(filename); //qDebug("HCM: Loading back file name=%s", fname); TiffReader reader(fname, "", false); //if 8bit ldr tiff - if (reader.is8bitTiff()) { + if (reader.is8bitTiff()) + { QImage* resultImage = reader.readIntoQImage(); - QImage* oldImage = resultImage; + // QImage* oldImage = resultImage; HdrInputLoader::conditionallyRotateImage(QFileInfo(fileList[0]), &resultImage); ldrImagesList.append( resultImage ); - tiffLdrList.append(oldImage == resultImage); + // tiffLdrList.append(oldImage == resultImage); } //if 16bit (tiff) treat as hdr - else if (reader.is16bitTiff()) { + else if (reader.is16bitTiff()) + { //TODO: get a 16bit TIFF image and test it - pfs::Frame *newFrame=reader.readIntoPfsFrame(); + pfs::Frame *newFrame = reader.readIntoPfsFrame(); pfs::Channel *R, *G, *B; R = newFrame->getChannel("X"); G = newFrame->getChannel("Y"); @@ -314,30 +458,42 @@ listmdrR.push_back(R->getChannelData()); listmdrG.push_back(G->getChannelData()); listmdrB.push_back(B->getChannelData()); - //pfs::DOMIO pfsio; + //pfs::DOMIO pfsio; //pfsio.freeFrame(newFrame); } qDebug() << "void HdrCreationManager::ais_finished: remove " << fname; QFile::remove(fname); } - QFile::remove(m_luminance_options.getTempDir() + "/hugin_debug_optim_results.txt"); - emit finishedAligning(); + QFile::remove(m_luminance_options.getTempDir() + "/hugin_debug_optim_results.txt"); + emit finishedAligning(exitcode); + } + else + { + qDebug() << "align_image_stack exited with exit code " << exitcode; + emit finishedAligning(exitcode); } } +void HdrCreationManager::ais_failed_slot(QProcess::ProcessError error) +{ + qDebug() << "align_image_stack failed"; +} + void HdrCreationManager::removeTempFiles() { - foreach (QString tempfname, filesToRemove) - { - qDebug() << "void HdrCreationManager::removeTempFiles(): " << qPrintable(tempfname); - if (!tempfname.isEmpty()) - { - QFile::remove(tempfname); - } - } + foreach (QString tempfname, filesToRemove) + { + qDebug() << "void HdrCreationManager::removeTempFiles(): " << qPrintable(tempfname); + if (!tempfname.isEmpty()) + { + QFile::remove(tempfname); + } + } + filesToRemove.clear(); } -void HdrCreationManager::checkEVvalues() { +void HdrCreationManager::checkEVvalues() +{ //qDebug("HCM::checkEVvalues"); float max=-20, min=+20; for (int i = 0; i < fileList.size(); i++) { @@ -364,7 +520,8 @@ //qDebug("HCM::END checkEVvalues"); } -void HdrCreationManager::setEV(float new_ev, int image_idx) { +void HdrCreationManager::setEV(float new_ev, int image_idx) +{ //qDebug("HCM::setEV image_idx=%d",image_idx); if (expotimes[image_idx] == -1) { //remove always the first one @@ -377,52 +534,70 @@ emit expotimeValueChanged(exp2f(new_ev), image_idx); } -pfs::Frame* HdrCreationManager::createHdr(bool ag, int iterations) { +pfs::Frame* HdrCreationManager::createHdr(bool ag, int iterations) +{ //CREATE THE HDR if (inputType == LDR_INPUT_TYPE) - return createHDR(expotimes.data(), &chosen_config, ag, iterations, true, &ldrImagesList ); + return createHDR(expotimes.data(), &chosen_config, ag, iterations, true, &ldrImagesList ); else - return createHDR(expotimes.data(), &chosen_config, ag, iterations, false, &listmdrR, &listmdrG, &listmdrB ); + return createHDR(expotimes.data(), &chosen_config, ag, iterations, false, &listmdrR, &listmdrG, &listmdrB ); } -HdrCreationManager::~HdrCreationManager() { +HdrCreationManager::~HdrCreationManager() +{ if (ais != NULL && ais->state() != QProcess::NotRunning) { ais->kill(); } clearlists(true); } -void HdrCreationManager::clearlists(bool deleteExpotimeAsWell) { +void HdrCreationManager::clearlists(bool deleteExpotimeAsWell) +{ startedProcessing.clear(); filesLackingExif.clear(); - if (deleteExpotimeAsWell) { + if (deleteExpotimeAsWell) + { fileList.clear(); expotimes.clear(); } - if (ldrImagesList.size() != 0) { + if (ldrImagesList.size() != 0) + { //qDebug("HCM: clearlists: cleaning LDR exposures list"); - for(int i = 0 ; i < ldrImagesList.size(); i++) { - if (tiffLdrList[i]) { - //qDebug("HCM: clearlists: freeing ldr tiffs' payload."); - delete [] ldrImagesList[i]->bits(); - } + for (int i = 0 ; i < ldrImagesList.size(); i++) + { +// if (tiffLdrList[i]) +// { +// //qDebug("HCM: clearlists: freeing ldr tiffs' payload."); +// //delete [] ldrImagesList[i]->bits(); +// } } qDeleteAll(ldrImagesList); ldrImagesList.clear(); - tiffLdrList.clear(); +// tiffLdrList.clear(); } - if (listmdrR.size()!=0 && listmdrG.size()!=0 && listmdrB.size()!=0) { + if (listmdrR.size()!=0 && listmdrG.size()!=0 && listmdrB.size()!=0) + { //qDebug("HCM: cleaning HDR exposures list"); Array2DList::iterator itR=listmdrR.begin(), itG=listmdrG.begin(), itB=listmdrB.begin(); - for (; itR!=listmdrR.end(); itR++,itG++,itB++ ){ - delete *itR; delete *itG; delete *itB; + for (; itR!=listmdrR.end(); itR++,itG++,itB++ ) + { + delete *itR; + delete *itG; + delete *itB; } - listmdrR.clear(); listmdrG.clear(); listmdrB.clear(); + listmdrR.clear(); + listmdrG.clear(); + listmdrB.clear(); + qDeleteAll(mdrImagesList); + mdrImagesList.clear(); + qDeleteAll(mdrImagesToRemove); + mdrImagesToRemove.clear(); } } -void HdrCreationManager::makeSureLDRsHaveAlpha() { +void HdrCreationManager::makeSureLDRsHaveAlpha() +{ if (ldrImagesList.at(0)->format()==QImage::Format_RGB32) { int origlistsize = ldrImagesList.size(); for (int image_idx = 0; image_idx < origlistsize; image_idx++) { @@ -430,17 +605,18 @@ if (newimage == NULL) exit(1); // TODO: exit gracefully; ldrImagesList.append(newimage); - if (tiffLdrList[0]) { - delete [] ldrImagesList[0]->bits(); - } +// if (tiffLdrList[0]) { +// //delete [] ldrImagesList[0]->bits(); +// } delete ldrImagesList.takeAt(0); - tiffLdrList.removeAt(0); - tiffLdrList.append(false); +// tiffLdrList.removeAt(0); +// tiffLdrList.append(false); } } } -void HdrCreationManager::applyShiftsToImageStack(QList< QPair > HV_offsets) { +void HdrCreationManager::applyShiftsToImageStack(const QList< QPair >& HV_offsets) +{ int originalsize = ldrImagesList.count(); //shift the images for (int i = 0; i < originalsize; i++) { @@ -449,18 +625,38 @@ continue; //qDebug("shifting image %d of (%d,%d)",i, HV_offsets[i].first, HV_offsets[i].second); QImage *shifted = shiftQImage(ldrImagesList[i], HV_offsets[i].first, HV_offsets[i].second); - if (tiffLdrList[i]) { - delete [] ldrImagesList[i]->bits(); - } +// if (tiffLdrList[i]) { +// //delete [] ldrImagesList[i]->bits(); +// } delete ldrImagesList.takeAt(i); ldrImagesList.insert(i, shifted); - tiffLdrList.removeAt(i); - tiffLdrList.insert(i,false); +// tiffLdrList.removeAt(i); +// tiffLdrList.insert(i,false); } } +void HdrCreationManager::applyShiftsToMdrImageStack(const QList< QPair >& HV_offsets) +{ + qDebug() << "HdrCreationManager::applyShiftsToMdrImageStack"; + int originalsize = mdrImagesList.count(); + for (int i = 0; i < originalsize; i++) { + if (HV_offsets[i].first == HV_offsets[i].second && HV_offsets[i].first == 0) + continue; + pfs::Array2D *shiftedR = shiftPfsArray2D(listmdrR[i], HV_offsets[i].first, HV_offsets[i].second); + pfs::Array2D *shiftedG = shiftPfsArray2D(listmdrG[i], HV_offsets[i].first, HV_offsets[i].second); + pfs::Array2D *shiftedB = shiftPfsArray2D(listmdrB[i], HV_offsets[i].first, HV_offsets[i].second); + delete listmdrR[i]; + delete listmdrG[i]; + delete listmdrB[i]; + listmdrR[i] = shiftedR; + listmdrG[i] = shiftedG; + listmdrB[i] = shiftedB; + } +} -void HdrCreationManager::cropLDR (QRect ca) { + +void HdrCreationManager::cropLDR(const QRect& ca) +{ //qDebug("cropping left,top=(%d,%d) %dx%d",ca.left(),ca.top(),ca.width(),ca.height()); //crop all the images int origlistsize = ldrImagesList.size(); @@ -469,16 +665,48 @@ if (newimage == NULL) exit(1); // TODO: exit gracefully ldrImagesList.append(newimage); - if (tiffLdrList[0]) - delete [] ldrImagesList[0]->bits(); +// if (tiffLdrList[0]) +// { +// //delete [] ldrImagesList[0]->bits(); +// } delete ldrImagesList.takeAt(0); - tiffLdrList.removeAt(0); - tiffLdrList.append(false); +// tiffLdrList.removeAt(0); +// tiffLdrList.append(false); + } +} +void HdrCreationManager::cropMDR(const QRect& ca) +{ + //qDebug("cropping left,top=(%d,%d) %dx%d",ca.left(),ca.top(),ca.width(),ca.height()); + //crop all the images + pfs::DOMIO pfsio; + int origlistsize = listmdrR.size(); + for (int idx = 0; idx < origlistsize; idx++) { + pfs::Frame *frame = pfsio.createFrame( m_mdrWidth, m_mdrHeight ); + pfs::Channel *Xc, *Yc, *Zc; + frame->createXYZChannels( Xc, Yc, Zc ); + Xc->setChannelData(listmdrR[idx]); + Yc->setChannelData(listmdrG[idx]); + Zc->setChannelData(listmdrB[idx]); + int x_ul, y_ul, x_br, y_br; + ca.getCoords(&x_ul, &y_ul, &x_br, &y_br); + pfs::Frame *cropped_frame = pfs::pfscut(frame, x_ul, y_ul, x_br, y_br); + pfsio.freeFrame(frame); + pfs::Channel *R, *G, *B; + cropped_frame->getXYZChannels( R, G, B); + listmdrR[idx] = R->getChannelData(); + listmdrG[idx] = G->getChannelData(); + listmdrB[idx] = B->getChannelData(); + QImage *newimage = new QImage(mdrImagesList.at(0)->copy(ca)); + if (newimage == NULL) + exit(1); // TODO: exit gracefully + mdrImagesList.append(newimage); + mdrImagesToRemove.append(mdrImagesList.takeAt(0)); } } -void HdrCreationManager::reset() { +void HdrCreationManager::reset() +{ ais = NULL; m_shift = 0; chosen_config = predef_confs[0]; @@ -488,19 +716,20 @@ removeTempFiles(); } -void HdrCreationManager::remove(int index) { +void HdrCreationManager::remove(int index) +{ switch (inputType) { - case LDR_INPUT_TYPE: - { - if (tiffLdrList[index]) { - delete [] ldrImagesList[index]->bits(); - } - ldrImagesList.removeAt(index); - tiffLdrList.removeAt(index); - } + case LDR_INPUT_TYPE: + { +// if (tiffLdrList[index]) { +// // delete [] ldrImagesList[index]->bits(); +// } + ldrImagesList.removeAt(index); +// tiffLdrList.removeAt(index); + } break; - case MDR_INPUT_TYPE: - { + case MDR_INPUT_TYPE: + { Array2DList::iterator itR = listmdrR.begin() + index; delete *itR; listmdrR.erase(itR); @@ -513,15 +742,18 @@ delete *itB; listmdrB.erase(itB); + delete mdrImagesList[index]; + mdrImagesList.removeAt(index); + QString fname = filesToRemove.at(index); qDebug() << "void HdrCreationManager::remove(int index): filename " << fname; QFile::remove(fname); - } + } + break; + // ...in this case, do nothing! + case UNKNOWN_INPUT_TYPE: + default:{} break; - // ...in this case, do nothing! - case UNKNOWN_INPUT_TYPE: - default:{} - break; } fileList.removeAt(index); filesToRemove.remove(index); @@ -534,3 +766,28 @@ QByteArray data = ais->readAll(); emit aisDataReady(data); } + +void HdrCreationManager::saveMDRs(const QString& filename) +{ + qDebug() << "HdrCreationManager::saveMDRs"; + pfs::DOMIO pfsio; + int origlistsize = listmdrR.size(); + for (int idx = 0; idx < origlistsize; idx++) + { + QString fname = filename + QString("_%1").arg(idx) + ".tiff"; + pfs::Frame *frame = pfsio.createFrame( m_mdrWidth, m_mdrHeight ); + pfs::Channel *Xc, *Yc, *Zc; + frame->createXYZChannels( Xc, Yc, Zc ); + Xc->setChannelData(listmdrR[idx]); + Yc->setChannelData(listmdrG[idx]); + Zc->setChannelData(listmdrB[idx]); + TiffWriter writer(QFile::encodeName(fname).constData(), frame); + writer.writePFSFrame16bitTiff(); + + QFileInfo qfi(filename); + QString absoluteFileName = qfi.absoluteFilePath(); + QByteArray encodedName = QFile::encodeName(absoluteFileName + QString("_%1").arg(idx) + ".tiff"); + ExifOperations::writeExifData(encodedName.constData(), "Edited Images", expotimes[idx]); + } + emit mdrSaved(); +} diff -Nru luminance-2.2.1/src/HdrCreation/HdrCreationManager.h luminance-2.3.0/src/HdrCreation/HdrCreationManager.h --- luminance-2.2.1/src/HdrCreation/HdrCreationManager.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/HdrCreation/HdrCreationManager.h 2012-07-01 09:10:50.000000000 +0000 @@ -34,6 +34,7 @@ #include "arch/math.h" #include "HdrCreation/createhdr.h" +// Some other file expect this to be available const config_triple predef_confs[6]= { {TRIANGULAR, LINEAR,DEBEVEC,"",""}, {TRIANGULAR, GAMMA, DEBEVEC,"",""}, @@ -46,16 +47,20 @@ class HdrCreationManager : public QObject { Q_OBJECT public: - HdrCreationManager(); + HdrCreationManager(bool = false); ~HdrCreationManager(); - void setConfig(config_triple &); + void setConfig(const config_triple& cfg); //LDR is a 8 bit format (jpeg, 8bit tiff, raw->8bit tiff) //MDR is a 16 bit format (16bit tiff, raw->16bit tiff) - enum {LDR_INPUT_TYPE,MDR_INPUT_TYPE,UNKNOWN_INPUT_TYPE} inputType; + enum { + LDR_INPUT_TYPE = 0, + MDR_INPUT_TYPE = 1, + UNKNOWN_INPUT_TYPE = 2 + } inputType; //initialize internal structures before actually loading the files - void setFileList(QStringList &); + void setFileList(const QStringList&); //load files listed in fileList in a threaded way void loadInputFiles(); //clear lists used internally @@ -67,6 +72,8 @@ void align_with_mtb(); QList getLDRList() const {return ldrImagesList;} + QList getMDRList() const {return mdrImagesList;} + QVector getExpotimes() const {return expotimes;} QStringList getFileList() const {return fileList;} bool inputImageType() const {return inputType;} const QStringList getFilesLackingExif() const {return filesLackingExif;} @@ -86,73 +93,96 @@ //the EV values cannot cover more than 20EV values void checkEVvalues(); void makeSureLDRsHaveAlpha(); - void applyShiftsToImageStack(QList< QPair > HV_offsets); - void cropLDR (QRect ca); + void applyShiftsToImageStack(const QList< QPair >& HV_offsets); + void applyShiftsToMdrImageStack(const QList< QPair >& HV_offsets); + void cropLDR(const QRect& ca); + void cropMDR(const QRect& ca); void reset(); void remove(int index); - void setShift(int shift) { m_shift = shift; } + void setShift(int shift) + { + m_shift = shift; + } + void saveMDRs(const QString&); public slots: //remove temp 8or16 bit tiff files created by libRaw upon raw input. void removeTempFiles(); signals: - void finishedLoadingInputFiles(QStringList filesLackingExif); - void errorWhileLoading(QString message); //also for !valid size + void finishedLoadingInputFiles(const QStringList& filesLackingExif); + void errorWhileLoading(const QString& message); //also for !valid size - void fileLoaded(int index, QString fname, float expotime); + void fileLoaded(int index, const QString& fname, float expotime); - void finishedAligning(); + void finishedAligning(int); void expotimeValueChanged(float,int); void ais_failed(QProcess::ProcessError); - void aisDataReady(QByteArray data); + void aisDataReady(const QByteArray& data); void maximumValue(int); void nextstep(int); + void processed(); + void mdrSaved(); + private: - //List of input files (absolute pathnames) + // List of input files (absolute pathnames) QStringList fileList; - //data structures that hold the input images' payload - QList ldrImagesList; //ldr input - QList tiffLdrList; //tiff ldr input - Array2DList listmdrR,listmdrG,listmdrB; //mdr input - //if startedProcessing[i]==true, we started a thread for the i-th file + // data structures that hold the input images' payload + // ldr input + QList ldrImagesList; + // QImages rappresenting a PFS frame for editing tools + QList mdrImagesList; + //QImages need to be deleted + QList mdrImagesToRemove; + // QList tiffLdrList; //tiff ldr input + Array2DList listmdrR; + Array2DList listmdrG; + Array2DList listmdrB; //mdr input + // if startedProcessing[i]==true, we started a thread for the i-th file QList startedProcessing; - //time equivalent array (from exif data) - //float *expotimes; + // time equivalent array (from exif data) + // float *expotimes; QVector expotimes; - //Filled on every successful load and left untouched afterwards. - //Value emitted after all the loading has been completed + // Filled on every successful load and left untouched afterwards. + // Value emitted after all the loading has been completed QStringList filesLackingExif; - //Filled when we have raw files as input. - //QStringList filesToRemove; + // Filled when we have raw files as input. + // QStringList filesToRemove; QVector filesToRemove; - //set to true as soon as we find out that we cannot load a file or when we find out that a file has a different width/height than the other previously loaded ones. - //This variable prevents "incoming" threads to do anything. + // set to true as soon as we find out that we cannot load a file or when we find out that a file has a different width/height than the other previously loaded ones. + // This variable prevents "incoming" threads to do anything. bool loadingError; - //number of running threads at any given time + // number of running threads at any given time int runningThreads; - //cumulative number of successfully loaded files + // cumulative number of successfully loaded files int processedFiles; - //once a new LDR or MDR pops up, the slots call this function to perform some housekeeping - void newResult(int index, float expotime, QString); LuminanceOptions m_luminance_options; - //align_image_stack + // align_image_stack QProcess *ais; int m_shift; - bool ldrsHaveSameSize(int,int); - bool mdrsHaveSameSize(int,int); + int m_mdrWidth; + int m_mdrHeight; + + bool fromCommandLine; + + // once a new LDR or MDR pops up, the slots call this function to perform some housekeeping + void newResult(int index, float expotime, const QString&); + + bool ldrsHaveSameSize(int, int); + bool mdrsHaveSameSize(int, int); private slots: void ais_finished(int,QProcess::ExitStatus); - void ldrReady( QImage *, int, float, QString, bool); - void mdrReady(pfs::Frame *, int, float, QString); - void loadFailed(QString fname, int index); + void ais_failed_slot(QProcess::ProcessError); + void ldrReady(QImage*, int, float, const QString&, bool); + void mdrReady(pfs::Frame*, int, float, const QString&); + void loadFailed(const QString& fname, int index); void readData(); }; #endif diff -Nru luminance-2.2.1/src/HdrCreation/mtb_alignment.cpp luminance-2.3.0/src/HdrCreation/mtb_alignment.cpp --- luminance-2.2.1/src/HdrCreation/mtb_alignment.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/HdrCreation/mtb_alignment.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -1,25 +1,25 @@ /** * This file is a part of Luminance HDR package. * ---------------------------------------------------------------------- - * Copyright (C) 2007 by Nicholas Phillips + * Copyright (C) 2007 by Nicholas Phillips * - * This program 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 2 of the License, or - * (at your option) any later version. + * This program 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 2 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. + * 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * ---------------------------------------------------------------------- * * @author Nicholas Phillips - * Giuseppe Rota (small modifications for Qt4) + * Giuseppe Rota (small modifications for Qt4) * */ @@ -39,13 +39,13 @@ assert(out!=NULL); out->fill(qRgba(0,0,0,0)); //transparent black for(int i = 0; i < in->height(); i++) - { + { if( (i+dy) < 0 ) continue; if( (i+dy) >= in->height()) break; QRgb *inp = (QRgb*)in->scanLine(i); QRgb *outp = (QRgb*)out->scanLine(i+dy); for(int j = 0; j < in->width(); j++) - { + { if( (j+dx) >= in->width()) break; if( (j+dx) >= 0 ) outp[j+dx] = *inp; inp++; @@ -54,7 +54,8 @@ return out; } -void mtb_alignment(QList &ImagePtrList, QList &ldr_tiff_input) +void mtb_alignment(QList& ImagePtrList) +// QList& /*ldr_tiff_input*/) { assert(ImagePtrList.size()>=2); int width=ImagePtrList.at(0)->width(); @@ -70,42 +71,43 @@ //find the shitfs for (int i=0; i=0; j--) - { + { cumulativeX+=shiftsX[j]; cumulativeY+=shiftsY[j]; -// qDebug("::mtb_alignment: partial cumulativeX=%d, cumulativeY=%d",cumulativeX,cumulativeY); +// qDebug("::mtb_alignment: partial cumulativeX=%d, cumulativeY=%d",cumulativeX,cumulativeY); } //qDebug("::mtb_alignment: Cumulative shift for image %d = (%d,%d)",i,cumulativeX,cumulativeY); QImage *shifted=shiftQImage(ImagePtrList[1], cumulativeX, cumulativeY); - if (ldr_tiff_input[1]) { - delete [] ImagePtrList[1]->bits(); - } +// if (ldr_tiff_input[1]) { +// delete [] ImagePtrList[1]->bits(); +// } delete ImagePtrList[1]; ImagePtrList.removeAt(1); ImagePtrList.append(shifted); - ldr_tiff_input.removeAt(1); - ldr_tiff_input.append(false); +// ldr_tiff_input.removeAt(1); +// ldr_tiff_input.append(false); } - delete [] shiftsX; delete [] shiftsY; + delete [] shiftsX; + delete [] shiftsY; } void mtbalign(const QImage *image1, const QImage *image2, - const double quantile, const int noise, const int shift_bits, - int &shift_x, int &shift_y) + const double quantile, const int noise, const int shift_bits, + int &shift_x, int &shift_y) { QImage *img1lum=new QImage(image1->size(),QImage::Format_Indexed8); QImage *img2lum=new QImage(image2->size(),QImage::Format_Indexed8); @@ -117,7 +119,7 @@ getLum(image2, img2lum, cdf2); for(median2 = 0; median2 < 256; median2++) if( cdf2[median2] >= quantile ) break; -// qDebug("::mtb_alignment: align::medians, image 1: %d, image 2: %d",median1,median2); +// qDebug("::mtb_alignment: align::medians, image 1: %d, image 2: %d",median1,median2); getExpShift(img1lum, median1, img2lum, median2, noise, shift_bits, shift_x, shift_y); delete img1lum; delete img2lum; //qDebug("::mtb_alignment: align::done, final shift is (%d,%d)",shift_x, shift_y); @@ -139,21 +141,21 @@ } QImage *img1threshold = setbitmap(img1->size()); - QImage *img1mask = setbitmap(img1->size()); + QImage *img1mask = setbitmap(img1->size()); QImage *img2threshold = setbitmap(img1->size()); - QImage *img2mask = setbitmap(img1->size()); + QImage *img2mask = setbitmap(img1->size()); setThreshold(img1, median1, noise, img1threshold, img1mask); setThreshold(img2, median2, noise, img2threshold, img2mask); - QImage *img2th_shifted = setbitmap(img2->size()); + QImage *img2th_shifted = setbitmap(img2->size()); QImage *img2mask_shifted = setbitmap(img2->size()); - QImage *diff = setbitmap(img2->size()); + QImage *diff = setbitmap(img2->size()); int minerr = img1->width()*img2->height(); for(int i = -1; i <= 1; i++) - { + { for(int j = -1; j <= 1; j++) - { + { int dx = curr_x + i; int dy = curr_y + j; shiftimage(img2threshold, dx, dy, img2th_shifted); @@ -170,7 +172,7 @@ delete img1threshold; delete img1mask; delete img2threshold; delete img2mask; delete img2th_shifted; delete img2mask_shifted; delete diff; -// qDebug("::mtb_alignment: getExpShift::Level %d shift (%d,%d)", shift_bits,shift_x, shift_y); +// qDebug("::mtb_alignment: getExpShift::Level %d shift (%d,%d)", shift_bits,shift_x, shift_y); return; } @@ -195,12 +197,12 @@ QImage *threshold_out, QImage *mask_out) { for(int i = 0; i < in->height(); i++) - { + { const uchar *inp = in->scanLine(i); uchar *outp = threshold_out->scanLine(i); uchar *maskp = mask_out->scanLine(i); for(int j = 0; j < in->width(); j++) - { + { *outp++ = *inp < threshold ? 0 : 1; *maskp++ = (*inp > (threshold-noise)) && (*inp < (threshold+noise)) ? 0 : 1; inp++; @@ -219,7 +221,7 @@ const uchar *m2 = mask2->scanLine(i); uchar *dp = diff->scanLine(i); for(int j = 0; j < img1->width(); j++) - { + { //*dp++ = xor_t[*p1++][*p2++]*(*m1++)*(*m2++); *dp++ = (*p1++ xor *p2++) and *m1++ and *m2++; } @@ -231,7 +233,7 @@ { long ttl = 0; for(int i = 0; i < img->height(); i++) - { + { const uchar *p = img->scanLine(i); for(int j = 0; j < img->width(); j++) ttl += (long)(*p++); @@ -250,17 +252,17 @@ QVector graycolortable; for(uint i = 0; i < 256; i++) - { + { graycolortable.append(qRgb(i,i,i)); - } + } out->setColorTable(graycolortable); for(int i = 0; i < in->height(); i++) - { + { QRgb *inl = (QRgb *)in->scanLine(i); uchar *outl = out->scanLine(i); for(int j = 0; j < in->width(); j++) - { + { uint v = qGray(*inl); hist[v] = hist[v] + 1; inl++; diff -Nru luminance-2.2.1/src/HdrCreation/mtb_alignment.h luminance-2.3.0/src/HdrCreation/mtb_alignment.h --- luminance-2.2.1/src/HdrCreation/mtb_alignment.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/HdrCreation/mtb_alignment.h 2012-07-01 09:10:50.000000000 +0000 @@ -29,7 +29,8 @@ #include using std::vector; -void mtb_alignment(QList &ImagePtrList, QList &ldr_tiff_input); +void mtb_alignment(QList& ImagePtrList); + // , QList& ldr_tiff_input); QImage* shiftQImage(const QImage *in, int dx, int dy); diff -Nru luminance-2.2.1/src/HdrCreation/responses.cpp luminance-2.3.0/src/HdrCreation/responses.cpp --- luminance-2.2.1/src/HdrCreation/responses.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/HdrCreation/responses.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -136,23 +136,22 @@ } -void responseSave( FILE* file, const float* I, int M, const char* name) +void responseSave( FILE* file, const float* Ir, const float* Ig, const float* Ib, int M) { // response curve matrix header - fprintf(file, "# Camera response curve, channel %s\n", name); - fprintf(file, "# data layout: log10(response) | camera output | response\n"); - fprintf(file, "# name: %s\n", name); + fprintf(file, "# Camera response curve, channels Ir, Ig, Ib \n"); + fprintf(file, "# data layout: camera output | log10(response Ir) | response Ir | log10(response Ig) | response Ig | log10(response Ib) | response Ib \n"); fprintf(file, "# type: matrix\n"); fprintf(file, "# rows: %d\n", M); - fprintf(file, "# columns: 3\n"); + fprintf(file, "# columns: 7\n"); // save response - for( int m=0 ; mM ) std::cerr << "response: camera value out of range," << " m=" << m << std::endl; - else - I[m] = val; + else { + Ir[m] = valR; + Ig[m] = valG; + Ib[m] = valB; + } } return true; diff -Nru luminance-2.2.1/src/HdrCreation/responses.h luminance-2.3.0/src/HdrCreation/responses.h --- luminance-2.2.1/src/HdrCreation/responses.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/HdrCreation/responses.h 2012-07-01 09:10:50.000000000 +0000 @@ -28,8 +28,8 @@ * $Id: responses.cpp,v 1.6 2006/09/13 14:27:06 gkrawczyk Exp $ */ -#ifndef _std_responses_h_ -#define _std_responses_h_ +#ifndef RESPONSES_H +#define RESPONSES_H #include @@ -115,7 +115,7 @@ * @param M number of camera output levels * @param name matrix name for use in Octave or Matlab */ -void responseSave( FILE* file, const float* I, int M, const char* name); +void responseSave( FILE* file, const float* Ir, const float* Ig, const float* Ib, int M); /** @@ -137,7 +137,7 @@ * @param M number of camera output levels * @return false means file has different output levels or is wrong for some other reason */ -bool responseLoad( FILE* file, float* I, int M); +bool responseLoad( FILE* file, float* Ir, float* Ig, float* Ib, int M); /** @@ -150,4 +150,4 @@ */ bool weightsLoad( FILE* file, float* w, int M); -#endif +#endif // RESPONSES_H diff -Nru luminance-2.2.1/src/HdrCreation/robertson02.h luminance-2.3.0/src/HdrCreation/robertson02.h --- luminance-2.2.1/src/HdrCreation/robertson02.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/HdrCreation/robertson02.h 2012-07-01 09:10:50.000000000 +0000 @@ -27,8 +27,8 @@ * $Id: robertson02.h,v 1.3 2006/09/13 11:52:56 gkrawczyk Exp $ */ -#ifndef _robertson02_h_ -#define _robertson02_h_ +#ifndef ROBERTSON02_H +#define ROBERTSON02_H #include #include @@ -60,4 +60,4 @@ int robertson02_getResponse( pfs::Array2D* xj, const float * arrayofexptime, float* I, const float* w, const int M, const int chan, const bool ldrinput, ... ); -#endif /* #ifndef _robertson02_h_ */ +#endif // ROBERTSON02_H diff -Nru luminance-2.2.1/src/HdrWizard/EditingTools.cpp luminance-2.3.0/src/HdrWizard/EditingTools.cpp --- luminance-2.2.1/src/HdrWizard/EditingTools.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/HdrWizard/EditingTools.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -3,19 +3,19 @@ * ---------------------------------------------------------------------- * Copyright (C) 2006,2007 Giuseppe Rota * - * This program 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 2 of the License, or - * (at your option) any later version. + * This program 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 2 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. + * 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * ---------------------------------------------------------------------- * * Original Work @@ -36,21 +36,33 @@ #include "Viewers/PanIconWidget.h" #include "Fileformat/pfstiff.h" #include "HdrWizard/EditingTools.h" +#include "Exif/ExifOperations.h" +#include "HdrCreation/mtb_alignment.h" - -EditingTools::EditingTools(HdrCreationManager *hcm, QWidget *parent) : QDialog(parent), additional_shift_value(0) +EditingTools::EditingTools(HdrCreationManager *hcm, QWidget *parent) : + QDialog(parent), + additional_shift_value(0), + m_MdrSaved(false) { setupUi(this); - original_ldrlist=hcm->getLDRList(); + if (hcm->inputImageType() == HdrCreationManager::LDR_INPUT_TYPE) { + original_ldrlist=hcm->getLDRList(); + expotimes = hcm->getExpotimes(); + } + else { + original_ldrlist=hcm->getMDRList(); + antighostToolButton->setEnabled(false); + } + filelist=hcm->getFileList(); this->hcm=hcm; toolOptionsFrame->setVisible(false); maskColorButton->setVisible(false); - QColor maskcolor=QColor(luminanceOptions.value(KEY_MANUAL_AG_MASK_COLOR,0x00FF0000).toUInt()); - Qt::ToolButtonStyle style = (Qt::ToolButtonStyle) luminanceOptions.value(KEY_TOOLBAR_MODE,Qt::ToolButtonTextUnderIcon).toInt(); - maskColorButton->setStyleSheet(QString("background: rgb("+QString(maskcolor.red())+","+QString(maskcolor.green())+","+QString(maskcolor.blue())+")")); + QColor maskcolor=QColor(luminanceOptions.value(KEY_MANUAL_AG_MASK_COLOR,0x00FF0000).toUInt()); + Qt::ToolButtonStyle style = (Qt::ToolButtonStyle) luminanceOptions.value(KEY_TOOLBAR_MODE,Qt::ToolButtonTextUnderIcon).toInt(); + maskColorButton->setStyleSheet(QString("background: rgb("+QString(maskcolor.red())+","+QString(maskcolor.green())+","+QString(maskcolor.blue())+")")); assert(original_ldrlist.size()==filelist.size()); QVBoxLayout *qvl=new QVBoxLayout; qvl->setMargin(0); @@ -63,7 +75,7 @@ previewWidget->update(); cornerButton=new QToolButton(this); - cornerButton->setToolTip(tr("Pan the image to a region")); + cornerButton->setToolTip(tr("Pan the image to a region")); cornerButton->setIcon(QIcon(":/new/prefix1/images/move.png")); scrollArea->setCornerWidget(cornerButton); @@ -97,9 +109,10 @@ } histogram=new HistogramLDR(this); - histogram->setData( original_ldrlist.at(1) ); + histogram->setData( original_ldrlist.at(1) ); histogram->adjustSize(); - ((QHBoxLayout*)(visualizationGroupBox->layout()))->insertWidget(0,histogram); + //((QHBoxLayout*)(visualizationGroupBox->layout()))->insertWidget(0,histogram); + ((QGridLayout*)(groupBoxHistogram->layout()))->addWidget(histogram); previewWidget->setFocus(); selectionTool = new SelectionTool(previewWidget); @@ -146,6 +159,8 @@ connect(selectionTool,SIGNAL(selectionReady(bool)),cropButton,SLOT(setEnabled(bool))); connect(selectionTool, SIGNAL(moved(QPoint)), this, SLOT(updateScrollBars(QPoint))); connect(removeMaskRadioButton,SIGNAL(toggled(bool)),previewWidget,SLOT(setBrushMode(bool))); + + connect(hcm, SIGNAL(mdrSaved()), this, SLOT(restoreSaveImagesButtonState())); } void EditingTools::slotCornerButtonPressed() { @@ -171,16 +186,16 @@ } void EditingTools::slotPanIconSelectionMoved(QRect gotopos) { - scrollArea->horizontalScrollBar()->setValue((int)(gotopos.x()*previewWidget->getScaleFactor())); - scrollArea->verticalScrollBar()->setValue((int)(gotopos.y()*previewWidget->getScaleFactor())); + scrollArea->horizontalScrollBar()->setValue((int)(gotopos.x()*previewWidget->getScaleFactor())); + scrollArea->verticalScrollBar()->setValue((int)(gotopos.y()*previewWidget->getScaleFactor())); } void EditingTools::slotPanIconHidden() { panIconWidget->close(); - cornerButton->blockSignals(true); - cornerButton->animateClick(); - cornerButton->blockSignals(false); + cornerButton->blockSignals(true); + cornerButton->animateClick(); + cornerButton->blockSignals(false); } EditingTools::~EditingTools() { @@ -220,18 +235,27 @@ //zoom the image to 1:1, so that the crop area is in a one-to-one relationship with the pixel coordinates. origSize(); - hcm->applyShiftsToImageStack(HV_offsets); + if (hcm->inputImageType() == HdrCreationManager::LDR_INPUT_TYPE) + hcm->applyShiftsToImageStack(HV_offsets); + else + hcm->applyShiftsToMdrImageStack(HV_offsets); resetAll(); QRect ca=selectionTool->getSelectionRect(); - if(ca.width()<=0|| ca.height()<=0) + if(ca.width()<=0 || ca.height()<=0) return; - hcm->cropLDR(ca); + if (hcm->inputImageType() == HdrCreationManager::LDR_INPUT_TYPE) { + hcm->cropLDR(ca); + original_ldrlist=hcm->getLDRList(); + } + else { + hcm->cropMDR(ca); + original_ldrlist=hcm->getMDRList(); + } + selectionTool->removeSelection(); - original_ldrlist=hcm->getLDRList(); - previewWidget->setMovable(original_ldrlist[movableListWidget->currentRow()]); previewWidget->setPivot(original_ldrlist[referenceListWidget->currentRow()]); //restore fit @@ -243,7 +267,14 @@ } void EditingTools::nextClicked() { - hcm->applyShiftsToImageStack(HV_offsets); + Next_Finishbutton->setEnabled(false); + QApplication::setOverrideCursor( QCursor(Qt::WaitCursor) ); + if (hcm->inputImageType() == HdrCreationManager::LDR_INPUT_TYPE) + hcm->applyShiftsToImageStack(HV_offsets); + else + if (!m_MdrSaved) + hcm->applyShiftsToMdrImageStack(HV_offsets); + QApplication::restoreOverrideCursor(); emit accept(); } @@ -258,7 +289,7 @@ vertShiftSB->setValue(HV_offsets[newidx].second); vertShiftSB->blockSignals(false); previewWidget->update(); - histogram->setData(original_ldrlist[newidx]); + histogram->setData(original_ldrlist[newidx]); histogram->update(); } @@ -378,8 +409,8 @@ } void EditingTools::antighostToolButtonToggled(bool toggled) { -// if (toggled) -// blendModeCB->setCurrentIndex(4); +// if (toggled) +// blendModeCB->setCurrentIndex(4); prevBothButton->setDisabled(toggled); nextBothButton->setDisabled(toggled); label_reference_list->setDisabled(toggled); @@ -393,7 +424,7 @@ if (returned.isValid()) { previewWidget->setBrushColor(returned); maskColorButton->setStyleSheet(QString("background: rgb(%1,%2,%3)").arg(returned.red()).arg(returned.green()).arg(returned.blue())); - luminanceOptions.setValue(KEY_MANUAL_AG_MASK_COLOR,returned.rgb()); + luminanceOptions.setValue(KEY_MANUAL_AG_MASK_COLOR,returned.rgb()); } } @@ -402,30 +433,51 @@ } void EditingTools::saveImagesButtonClicked() { + saveImagesButton->setEnabled(false); + Next_Finishbutton->setEnabled(false); QString fnameprefix=QFileDialog::getSaveFileName( this, tr("Choose a directory and a prefix"), - luminanceOptions.value(KEY_RECENT_PATH_LOAD_LDRs_FOR_HDR,QDir::currentPath()).toString()); + luminanceOptions.value(KEY_RECENT_PATH_LOAD_LDRs_FOR_HDR,QDir::currentPath()).toString()); if (fnameprefix.isEmpty()) return; QFileInfo qfi(fnameprefix); QFileInfo test(qfi.path()); - luminanceOptions.setValue(KEY_RECENT_PATH_LOAD_LDRs_FOR_HDR, qfi.path()); + luminanceOptions.setValue(KEY_RECENT_PATH_LOAD_LDRs_FOR_HDR, qfi.path()); if (test.isWritable() && test.exists() && test.isDir()) { - int counter=0; - foreach(QImage *p, original_ldrlist) { - TiffWriter tiffwriter( QFile::encodeName((qfi.path() + "/" + qfi.fileName() + QString("_%1.tiff").arg(counter))), p); - tiffwriter.write8bitTiff(); - counter++; + QApplication::setOverrideCursor( QCursor(Qt::WaitCursor) ); + if (hcm->inputImageType() == HdrCreationManager::LDR_INPUT_TYPE) { + int counter=0; + foreach(QImage *p, original_ldrlist) { + TiffWriter tiffwriter( QFile::encodeName((qfi.path() + "/" + qfi.fileName() + QString("_%1.tiff").arg(counter))), p); + tiffwriter.write8bitTiff(); + ExifOperations::writeExifData(QFile::encodeName((qfi.path() + "/" + qfi.fileName() + QString("_%1.tiff").arg(counter))).constData(), "Edited Images", expotimes[counter]); + counter++; + } + saveImagesButton->setEnabled(true); + Next_Finishbutton->setEnabled(true); + QApplication::restoreOverrideCursor(); + } + else { + m_MdrSaved = true; + + hcm->applyShiftsToMdrImageStack(HV_offsets); + hcm->saveMDRs(QFile::encodeName((qfi.path() + "/" + qfi.fileName()))); } } } void EditingTools::updateScrollBars(QPoint diff) { - scrollArea->verticalScrollBar()->setValue(scrollArea->verticalScrollBar()->value() + diff.y()); - scrollArea->horizontalScrollBar()->setValue(scrollArea->horizontalScrollBar()->value() + diff.x()); + scrollArea->verticalScrollBar()->setValue(scrollArea->verticalScrollBar()->value() + diff.y()); + scrollArea->horizontalScrollBar()->setValue(scrollArea->horizontalScrollBar()->value() + diff.x()); } +void EditingTools::restoreSaveImagesButtonState() +{ + saveImagesButton->setEnabled(true); + Next_Finishbutton->setEnabled(true); + QApplication::restoreOverrideCursor(); +} diff -Nru luminance-2.2.1/src/HdrWizard/EditingTools.h luminance-2.3.0/src/HdrWizard/EditingTools.h --- luminance-2.2.1/src/HdrWizard/EditingTools.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/HdrWizard/EditingTools.h 2012-07-01 09:10:50.000000000 +0000 @@ -29,18 +29,15 @@ #define EDITINGTOOLS_H #include "ui_EditingTools.h" +#include "PreviewWidget.h" #include "Common/global.h" #include "Viewers/SelectionTool.h" #include "HdrCreation/HdrCreationManager.h" -#include "PreviewWidget.h" #include "Common/LuminanceOptions.h" class HistogramLDR; class PanIconWidget; -//defined in mtb_alignment.cpp -QImage* shiftQImage(const QImage *in, int dx, int dy); - class EditingTools : public QDialog, private Ui::EditingToolsDialog { Q_OBJECT @@ -64,8 +61,9 @@ PanIconWidget *panIconWidget; QToolButton *cornerButton; SelectionTool *selectionTool; - - LuminanceOptions luminanceOptions; + bool m_MdrSaved; + LuminanceOptions luminanceOptions; + QVector expotimes; private slots: void slotPanIconSelectionMoved(QRect); void slotPanIconHidden(); @@ -99,6 +97,7 @@ void blendModeCBIndexChanged(int); void setupConnections(); void updateScrollBars(QPoint diff); + void restoreSaveImagesButtonState(); }; diff -Nru luminance-2.2.1/src/HdrWizard/EditingTools.ui luminance-2.3.0/src/HdrWizard/EditingTools.ui --- luminance-2.2.1/src/HdrWizard/EditingTools.ui 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/HdrWizard/EditingTools.ui 2012-07-01 09:10:50.000000000 +0000 @@ -9,7 +9,7 @@ 0 0 - 1048 + 1122 644 @@ -23,988 +23,1056 @@ Editing Tools - + :/new/prefix1/images/luminance.png:/new/prefix1/images/luminance.png true - - - 6 - - - 3 - + - - - 0 - - - - - - 0 - 0 - - - - - 400 - 16777215 - - - - Visualization and Navigation - - - - 3 - - - 6 - - - - - 6 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Fit to window - - - &Fit to Window - - - - :/new/prefix1/images/viewmagfit.png:/new/prefix1/images/viewmagfit.png - - - - 22 - 22 - - - - true - - - - - - - Original size - - - Origina&l Size - - - - :/new/prefix1/images/viewmag1.png:/new/prefix1/images/viewmag1.png - - - - 22 - 22 - - - - - - - - Zoom In - - - Zoom &In - - - - :/new/prefix1/images/viewmag_inc.png:/new/prefix1/images/viewmag_inc.png - - - - 22 - 22 - - - - - - - - Zoom Out - - - Zoom &Out - - - - :/new/prefix1/images/viewmag_dec.png:/new/prefix1/images/viewmag_dec.png - - - - 22 - 22 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 6 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Preview &Mode: - - - blendModeCB - - - - - - - - Difference (E-P) + + + + + + + + + + + + 0 + 0 + - - - - Overlay (E+P) + + + 400 + 16777215 + - - - - Editable Only (E) + + Visualization and Navigation - - - - Pivot Only (P) + + + 3 + + + 6 + + + + + 6 + + + 0 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Fit to window + + + &Fit to Window + + + + :/new/prefix1/images/viewmagfit.png:/new/prefix1/images/viewmagfit.png + + + + 22 + 22 + + + + true + + + + + + + Original size + + + Origina&l Size + + + + :/new/prefix1/images/viewmag1.png:/new/prefix1/images/viewmag1.png + + + + 22 + 22 + + + + + + + + Zoom In + + + Zoom &In + + + + :/new/prefix1/images/viewmag_inc.png:/new/prefix1/images/viewmag_inc.png + + + + 22 + 22 + + + + + + + + Zoom Out + + + Zoom &Out + + + + :/new/prefix1/images/viewmag_dec.png:/new/prefix1/images/viewmag_dec.png + + + + 22 + 22 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + 6 + + + 0 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Preview &Mode: + + + blendModeCB + + + + + + + + Difference (E-P) + + + + + Overlay (E+P) + + + + + Editable Only (E) + + + + + Pivot Only (P) + + + + + Antighosting Mask + + + + + + + + true + + + Mask Color + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + 0 + 0 + - - - - Antighosting Mask + + + 400 + 16777215 + - - - - - - - true - - - Mask Color - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - 0 - 0 - - - - - 400 - 16777215 - - - - Images List - - - - 1 - - - 3 - - - - - 6 - - - 0 - - - - - Ed&itable - - - Qt::AlignCenter - - - movableListWidget - - - - - - - - 0 - 0 - - - - - 130 - 16777215 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> + + Images List + + + + 1 + + + 3 + + + + + 6 + + + 0 + + + + + Ed&itable + + + Qt::AlignCenter + + + movableListWidget + + + + + + + + 0 + 0 + + + + + 130 + 16777215 + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The currently selected image is the one that you can shift and paint an anti-ghosting mask on.</p></body></html> - - - The image currently selected in this list can be translated up,down,left and right using the controls below. + + + The image currently selected in this list can be translated up,down,left and right using the controls below. This image's histogram is diplayed in the widget above. - - - - - - - - - 6 - - - 0 - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - 44 - 0 - - - - Select the previous image in both lists - - - Use this button to move the selection to the previous image in both lists. - - - - :/new/prefix1/images/uparrow.png:/new/prefix1/images/uparrow.png - - - - - - - - 44 - 0 - - - - Select the next image in both lists - - - Use this button to move the selection to the next image in both lists. - - - - :/new/prefix1/images/downarrow.png:/new/prefix1/images/downarrow.png - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - 6 - - - 0 - - - - - R&eference - - - Qt::AlignCenter - - - referenceListWidget - - - - - - - - 0 - 0 - - - - - 130 - 16777215 - - - - The reference image is the one currently selected - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> + + + + + + + + + 6 + + + 0 + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + 44 + 0 + + + + Select the previous image in both lists + + + Use this button to move the selection to the previous image in both lists. + + + + :/new/prefix1/images/uparrow.png:/new/prefix1/images/uparrow.png + + + + + + + + 44 + 0 + + + + Select the next image in both lists + + + Use this button to move the selection to the next image in both lists. + + + + :/new/prefix1/images/downarrow.png:/new/prefix1/images/downarrow.png + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + 6 + + + 0 + + + + + R&eference + + + Qt::AlignCenter + + + referenceListWidget + + + + + + + + 0 + 0 + + + + + 130 + 16777215 + + + + The reference image is the one currently selected + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The image currently selected in this list serves as a reference position for the editable image</p></body></html> + + + + + + + + + + + + + + + 400 + 16777215 + + + + Tools + + + + 3 - - - - - - - - - - - - 400 - 16777215 - - - - Tools - - - - 3 - - - 6 - - - - - 6 - - - 0 - - - - - Qt::Horizontal - - - - 103 - 31 - - - - - - - - false - - - Crop the stack of images after a selection with the left mouse button has been made - - - Clicking this button you will be able to crop all the images to the size that you have previously selected with the left mouse button (press and hold the left mouse button and move the pointer to select a crop area, then press this button). - - - &Crop All Images - - - - :/new/prefix1/images/crop.png:/new/prefix1/images/crop.png - - - - 22 - 22 - - - - Ctrl+X - - - - - - - Qt::Horizontal - - - - 31 - 31 - - - - - - - - &Anti Ghosting - - - - :/new/prefix1/images/ghost_32x32.png:/new/prefix1/images/ghost_32x32.png - - - - 22 - 22 - - - - true - - - - - - - Qt::Horizontal - - - - 41 - 31 - - - - - - - - &Save Images - - - - :/new/prefix1/images/filesave.png:/new/prefix1/images/filesave.png - - - - 22 - 22 - - - - Ctrl+S - - - - - - - Qt::Horizontal - - - - 71 - 31 - + + 6 - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 3 + + + + 6 + + + 0 + + + + + Qt::Horizontal + + + + 103 + 31 + + + + + + + + false + + + Crop the stack of images after a selection with the left mouse button has been made + + + Clicking this button you will be able to crop all the images to the size that you have previously selected with the left mouse button (press and hold the left mouse button and move the pointer to select a crop area, then press this button). + + + &Crop All Images + + + + :/new/prefix1/images/crop.png:/new/prefix1/images/crop.png + + + + 22 + 22 + + + + Ctrl+X + + + + + + + Qt::Horizontal + + + + 31 + 31 + + + + + + + + &Anti Ghosting + + + + :/new/prefix1/images/ghost_32x32.png:/new/prefix1/images/ghost_32x32.png + + + + 22 + 22 + + + + true + + + + + + + Qt::Horizontal + + + + 41 + 31 + + + + + + + + &Save Images + + + + :/new/prefix1/images/filesave.png:/new/prefix1/images/filesave.png + + + + 22 + 22 + + + + Ctrl+S + + + + + + + Qt::Horizontal + + + + 71 + 31 + + + + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 3 + + + 6 + + + + + 6 + + + 0 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + A&dd Mask + + + true + + + + + + + Remove Mas&k + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + 0 + + + 6 + + + + + 1 + + + 64 + + + 32 + + + Qt::Horizontal + + + + + + + 1 + + + 255 + + + 255 + + + + + + + Size: + + + + + + + 1 + + + 255 + + + 255 + + + Qt::Horizontal + + + + + + + pixels + + + 1 + + + 64 + + + 32 + + + + + + + &Strength: + + + agBrushStrengthQSlider + + + + + + + + + + + + + + + + + Qt::Vertical + + + + + + + + + -1 + + + QLayout::SetDefaultConstraint + + + + + + 0 + 0 + + + + + 555 + 300 + + + + Qt::StrongFocus + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This area shows the preview (using the preview mode on the left) between the editable and reference image.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If the same image is selected in both the editable and reference list, this area will show the image itself.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clicking and holding the left mouse button you will be able to select a crop area.</p></body></html> + + + QFrame::NoFrame + + + QFrame::Sunken + + + + + + + + + + 0 + 0 + - - 6 + + + 450 + 150 + - - - - 6 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - A&dd Mask - - - true - - - - - - - Remove Mas&k - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 0 - - - 6 - - - - - 1 - - - 32 - - - 32 - - - Qt::Horizontal - - - - - - - 1 - - - 255 - - - 255 - - - - - - - Size: - - - - - - - 1 - - - 255 - - - 255 - - - Qt::Horizontal - - - - - - - pixels - - - 1 - - - 32 - - - 32 - - - - - - - &Strength: - - - agBrushStrengthQSlider - - - - - - - - - - - - - - - - 0 - 0 - - - - - 400 - 16777215 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Shift values for the currently selected editable image</p></body></html> - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here the user can view and set the shift values for the currently selected editable image</p></body></html> - - - Shift values for editable image - - - - 9 - - - 5 - - - - - 6 - - - 0 - - - - - Reset the shift values for the currently selected movable image - - - &Reset - - - - - - - Reset the shift values for all the images - - - Reset &All - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - 0 - - - 6 - - - - - &Horizontal: - - - horizShiftSB - - - - - - - Qt::LeftToRight - - - &Vertical: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - vertShiftSB - - - - - - - Insert an horizontal shift value for the currently selected movable image - - - px - - - -9000 - - - 9000 - - - - - - - Insert a vertical shift value for the currently selected movable image - - - px - - - -9000 - - - 9000 - - - - - - - - - 0 - - - 6 - - - - - Move up of 1 pixel the currently selected movable image - - - true - - - Qt::UpArrow - - - - - - - Move down of 1 pixel the currently selected movable image - - - true - - - Qt::DownArrow - - - - - - - Move right of 1 pixel the currently selected movable image - - - true - - - Qt::RightArrow - - - - - - - Move left of 1 pixel the currently selected movable image - - - true + + + Shift values for editable image + + + + 9 - - Qt::LeftArrow + + 5 - - - - - - + + + + 6 + + + 0 + + + + + Reset the shift values for the currently selected movable image + + + &Reset + + + + + + + Reset the shift values for all the images + + + Reset &All + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 0 + + + 6 + + + + + &Horizontal: + + + horizShiftSB + + + + + + + Qt::LeftToRight + + + &Vertical: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + vertShiftSB + + + + + + + Insert an horizontal shift value for the currently selected movable image + + + px + + + -9000 + + + 9000 + + + + + + + Insert a vertical shift value for the currently selected movable image + + + px + + + -9000 + + + 9000 + + + + + + + + + 0 + + + 6 + + + + + Move up of 1 pixel the currently selected movable image + + + true + + + Qt::UpArrow + + + + + + + Move down of 1 pixel the currently selected movable image + + + true + + + Qt::DownArrow + + + + + + + Move right of 1 pixel the currently selected movable image + + + true + + + Qt::RightArrow + + + + + + + Move left of 1 pixel the currently selected movable image + + + true + + + Qt::LeftArrow + + + + + + + + + + + + + 16777215 + 150 + + + + Histogram + + + + + + + + + + + - - - - Qt::Vertical - - - - + 6 @@ -1021,7 +1089,7 @@ &What's this? - + :/new/prefix1/images/whatsthis.png:/new/prefix1/images/whatsthis.png @@ -1067,43 +1135,9 @@ - - - - - 0 - 0 - - - - - 555 - 300 - - - - Qt::StrongFocus - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This area shows the preview (using the preview mode on the left) between the editable and reference image.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If the same image is selected in both the editable and reference list, this area will show the image itself.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clicking and holding the left mouse button you will be able to select a crop area.</p></body></html> - - - QFrame::NoFrame - - - QFrame::Sunken - - - - previewImageFrame upToolButton rightToolButton downToolButton @@ -1127,7 +1161,7 @@ cancelbutton - + diff -Nru luminance-2.2.1/src/HdrWizard/HdrWizard.cpp luminance-2.3.0/src/HdrWizard/HdrWizard.cpp --- luminance-2.2.1/src/HdrWizard/HdrWizard.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/HdrWizard/HdrWizard.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -3,19 +3,19 @@ * ---------------------------------------------------------------------- * Copyright (C) 2006,2007 Giuseppe Rota * - * This program 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 2 of the License, or - * (at your option) any later version. + * This program 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 2 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. + * 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * ---------------------------------------------------------------------- * * Original Work @@ -45,13 +45,13 @@ #include "HdrCreation/HdrCreationManager.h" HdrWizard::HdrWizard(QWidget *p, QStringList files): - QDialog(p), - hdrCreationManager(new HdrCreationManager), - loadcurvefilename(""), - savecurvefilename(""), - m_Ui(new Ui::HdrWizard) + QDialog(p), + hdrCreationManager(new HdrCreationManager), + loadcurvefilename(""), + savecurvefilename(""), + m_Ui(new Ui::HdrWizard) { - m_Ui->setupUi(this); + m_Ui->setupUi(this); setAcceptDrops(true); weights_in_gui[0] = TRIANGULAR; @@ -64,29 +64,29 @@ models_in_gui[0] = DEBEVEC; models_in_gui[1] = ROBERTSON; - m_Ui->tableWidget->setHorizontalHeaderLabels(QStringList()<< tr("Image Filename") << tr("Exposure")); - m_Ui->tableWidget->resizeColumnsToContents(); + m_Ui->tableWidget->setHorizontalHeaderLabels(QStringList()<< tr("Image Filename") << tr("Exposure")); + m_Ui->tableWidget->resizeColumnsToContents(); - EVgang = new Gang(m_Ui->EVSlider, m_Ui->ImageEVdsb, NULL, NULL, NULL,NULL, -10,10,0); + EVgang = new Gang(m_Ui->EVSlider, m_Ui->ImageEVdsb, NULL, NULL, NULL,NULL, -10,10,0); - if ( !luminance_options.isShowFirstPageWizard() ) - { - m_Ui->NextFinishButton->setEnabled(false); - m_Ui->pagestack->setCurrentIndex(1); - } - - m_Ui->progressBar->hide(); - m_Ui->textEdit->hide(); - - setupConnections(); - - if (files.size()) - { - m_Ui->pagestack->setCurrentIndex(1); - - QMetaObject::invokeMethod(this, "loadInputFiles", Qt::QueuedConnection, - Q_ARG(QStringList, files), Q_ARG(int, files.size())); - } + if ( !luminance_options.isShowFirstPageWizard() ) + { + m_Ui->NextFinishButton->setEnabled(false); + m_Ui->pagestack->setCurrentIndex(1); + } + + m_Ui->progressBar->hide(); + m_Ui->textEdit->hide(); + + setupConnections(); + + if (files.size()) + { + m_Ui->pagestack->setCurrentIndex(1); + + QMetaObject::invokeMethod(this, "loadInputFiles", Qt::QueuedConnection, + Q_ARG(QStringList, files), Q_ARG(int, files.size())); + } } HdrWizard::~HdrWizard() @@ -95,64 +95,64 @@ qDebug() << "HdrWizard::~HdrWizard()"; #endif - QStringList fnames = hdrCreationManager->getFileList(); - int n = fnames.size(); + QStringList fnames = hdrCreationManager->getFileList(); + int n = fnames.size(); - for (int i = 0; i < n; i++) - { - QString fname = hdrCreationManager->getFileList().at(i); - QFileInfo qfi(fname); - QString thumb_name = QString(luminance_options.getTempDir() + "/"+ qfi.completeBaseName() + ".thumb.jpg"); - QFile::remove(thumb_name); - thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.ppm"); - QFile::remove(thumb_name); - } + for (int i = 0; i < n; i++) + { + QString fname = hdrCreationManager->getFileList().at(i); + QFileInfo qfi(fname); + QString thumb_name = QString(luminance_options.getTempDir() + "/"+ qfi.completeBaseName() + ".thumb.jpg"); + QFile::remove(thumb_name); + thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.ppm"); + QFile::remove(thumb_name); + } - delete EVgang; - delete hdrCreationManager; + delete EVgang; + delete hdrCreationManager; } void HdrWizard::setupConnections() { connect(EVgang, SIGNAL(finished()), this, SLOT(editingEVfinished())); - connect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int))); + connect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int))); - connect(m_Ui->NextFinishButton,SIGNAL(clicked()),this,SLOT(NextFinishButtonClicked())); - connect(m_Ui->cancelButton,SIGNAL(clicked()),this,SLOT(reject())); - connect(m_Ui->pagestack,SIGNAL(currentChanged(int)),this,SLOT(currentPageChangedInto(int))); + connect(m_Ui->NextFinishButton,SIGNAL(clicked()),this,SLOT(NextFinishButtonClicked())); + connect(m_Ui->cancelButton,SIGNAL(clicked()),this,SLOT(reject())); + connect(m_Ui->pagestack,SIGNAL(currentChanged(int)),this,SLOT(currentPageChangedInto(int))); - connect(m_Ui->predefConfigsComboBox,SIGNAL(activated(int)),this, + connect(m_Ui->predefConfigsComboBox,SIGNAL(activated(int)),this, SLOT(predefConfigsComboBoxActivated(int))); - connect(m_Ui->antighostRespCurveCombobox,SIGNAL(activated(int)),this, + connect(m_Ui->antighostRespCurveCombobox,SIGNAL(activated(int)),this, SLOT(antighostRespCurveComboboxActivated(int))); - connect(m_Ui->customConfigCheckBox,SIGNAL(toggled(bool)),this, + connect(m_Ui->customConfigCheckBox,SIGNAL(toggled(bool)),this, SLOT(customConfigCheckBoxToggled(bool))); - connect(m_Ui->triGaussPlateauComboBox,SIGNAL(activated(int)),this, + connect(m_Ui->triGaussPlateauComboBox,SIGNAL(activated(int)),this, SLOT(triGaussPlateauComboBoxActivated(int))); - connect(m_Ui->predefRespCurveRadioButton,SIGNAL(toggled(bool)),this, + connect(m_Ui->predefRespCurveRadioButton,SIGNAL(toggled(bool)),this, SLOT(predefRespCurveRadioButtonToggled(bool))); - connect(m_Ui->gammaLinLogComboBox,SIGNAL(activated(int)),this, + connect(m_Ui->gammaLinLogComboBox,SIGNAL(activated(int)),this, SLOT(gammaLinLogComboBoxActivated(int))); - connect(m_Ui->loadRespCurveFromFileCheckbox,SIGNAL(toggled(bool)),this, + connect(m_Ui->loadRespCurveFromFileCheckbox,SIGNAL(toggled(bool)),this, SLOT(loadRespCurveFromFileCheckboxToggled(bool))); - connect(m_Ui->loadRespCurveFileButton,SIGNAL(clicked()),this, + connect(m_Ui->loadRespCurveFileButton,SIGNAL(clicked()),this, SLOT(loadRespCurveFileButtonClicked())); - connect(m_Ui->saveRespCurveToFileCheckbox,SIGNAL(toggled(bool)),this, + connect(m_Ui->saveRespCurveToFileCheckbox,SIGNAL(toggled(bool)),this, SLOT(saveRespCurveToFileCheckboxToggled(bool))); - connect(m_Ui->saveRespCurveFileButton,SIGNAL(clicked()),this, + connect(m_Ui->saveRespCurveFileButton,SIGNAL(clicked()),this, SLOT(saveRespCurveFileButtonClicked())); - connect(m_Ui->modelComboBox,SIGNAL(activated(int)),this, + connect(m_Ui->modelComboBox,SIGNAL(activated(int)),this, SLOT(modelComboBoxActivated(int))); - connect(m_Ui->RespCurveFileLoadedLineEdit,SIGNAL(textChanged(const QString&)),this, + connect(m_Ui->RespCurveFileLoadedLineEdit,SIGNAL(textChanged(const QString&)),this, SLOT(loadRespCurveFilename(const QString&))); - connect(m_Ui->loadImagesButton,SIGNAL(clicked()),this,SLOT(loadImagesButtonClicked())); - connect(m_Ui->removeImageButton,SIGNAL(clicked()),this,SLOT(removeImageButtonClicked())); - connect(m_Ui->clearListButton,SIGNAL(clicked()),this,SLOT(clearListButtonClicked())); + connect(m_Ui->loadImagesButton,SIGNAL(clicked()),this,SLOT(loadImagesButtonClicked())); + connect(m_Ui->removeImageButton,SIGNAL(clicked()),this,SLOT(removeImageButtonClicked())); + connect(m_Ui->clearListButton,SIGNAL(clicked()),this,SLOT(clearListButtonClicked())); connect(hdrCreationManager, SIGNAL(fileLoaded(int,QString,float)), this, SLOT(fileLoaded(int,QString,float))); connect(hdrCreationManager,SIGNAL(finishedLoadingInputFiles(QStringList)),this, SLOT(finishedLoadingInputFiles(QStringList))); connect(hdrCreationManager,SIGNAL(errorWhileLoading(QString)),this, SLOT(errorWhileLoading(QString))); connect(hdrCreationManager,SIGNAL(expotimeValueChanged(float,int)),this, SLOT(updateGraphicalEVvalue(float,int))); - connect(hdrCreationManager, SIGNAL(finishedAligning()), this, SLOT(finishedAligning())); + connect(hdrCreationManager, SIGNAL(finishedAligning(int)), this, SLOT(finishedAligning(int))); connect(hdrCreationManager, SIGNAL(ais_failed(QProcess::ProcessError)), this, SLOT(ais_failed(QProcess::ProcessError))); connect(hdrCreationManager, SIGNAL(aisDataReady(QByteArray)), this, SLOT(writeAisData(QByteArray))); @@ -161,40 +161,40 @@ } void HdrWizard::loadImagesButtonClicked() { - QString filetypes; - // when changing these filetypes, also change in DnDOption - for Drag and Drop - filetypes += tr("All formats (*.jpeg *.jpg *.tiff *.tif *.crw *.cr2 *.nef *.dng *.mrw *.orf *.kdc *.dcr *.arw *.raf *.ptx *.pef *.x3f *.raw *.sr2 *.rw2 *.3fr *.mef *.mos *.erf *.nrw *.srw"); - filetypes += tr("*.JPEG *.JPG *.TIFF *.TIF *.CRW *.CR2 *.NEF *.DNG *.MRW *.ORF *.KDC *.DCR *.ARW *.RAF *.PTX *.PEF *.X3F *.RAW *.SR2 *.RW2 *.3FR *.MEF *.MOS *.ERF *.NRW *.SRW);;"); - filetypes += tr("JPEG (*.jpeg *.jpg *.JPEG *.JPG);;"); - filetypes += tr("TIFF Images (*.tiff *.tif *.TIFF *.TIF);;"); - filetypes += tr("RAW Images (*.crw *.cr2 *.nef *.dng *.mrw *.orf *.kdc *.dcr *.arw *.raf *.ptx *.pef *.x3f *.raw *.sr2 *.rw2 *.3fr *.mef *.mos *.erf *.nrw *.srw"); - filetypes += tr("*.CRW *.CR2 *.NEF *.DNG *.MRW *.ORF *.KDC *.DCR *.ARW *.RAF *.PTX *.PEF *.X3F *.RAW *.SR2 *.RW2 *.3FR *.MEF *.MOS *.ERF *.NRW *.SRW)"); + QString filetypes; + // when changing these filetypes, also change in DnDOption - for Drag and Drop + filetypes += tr("All formats (*.jpeg *.jpg *.tiff *.tif *.crw *.cr2 *.nef *.dng *.mrw *.orf *.kdc *.dcr *.arw *.raf *.ptx *.pef *.x3f *.raw *.sr2 *.rw2 *.3fr *.mef *.mos *.erf *.nrw *.srw"); + filetypes += tr("*.JPEG *.JPG *.TIFF *.TIF *.CRW *.CR2 *.NEF *.DNG *.MRW *.ORF *.KDC *.DCR *.ARW *.RAF *.PTX *.PEF *.X3F *.RAW *.SR2 *.RW2 *.3FR *.MEF *.MOS *.ERF *.NRW *.SRW);;"); + filetypes += tr("JPEG (*.jpeg *.jpg *.JPEG *.JPG);;"); + filetypes += tr("TIFF Images (*.tiff *.tif *.TIFF *.TIF);;"); + filetypes += tr("RAW Images (*.crw *.cr2 *.nef *.dng *.mrw *.orf *.kdc *.dcr *.arw *.raf *.ptx *.pef *.x3f *.raw *.sr2 *.rw2 *.3fr *.mef *.mos *.erf *.nrw *.srw"); + filetypes += tr("*.CRW *.CR2 *.NEF *.DNG *.MRW *.ORF *.KDC *.DCR *.ARW *.RAF *.PTX *.PEF *.X3F *.RAW *.SR2 *.RW2 *.3FR *.MEF *.MOS *.ERF *.NRW *.SRW)"); - QString RecentDirInputLDRs = luminance_options.getDefaultPathLdrIn(); + QString RecentDirInputLDRs = luminance_options.getDefaultPathLdrIn(); - QStringList files = QFileDialog::getOpenFileNames(this, tr("Select the input images"), RecentDirInputLDRs, filetypes ); + QStringList files = QFileDialog::getOpenFileNames(this, tr("Select the input images"), RecentDirInputLDRs, filetypes ); - if (!files.isEmpty() ) { + if (!files.isEmpty() ) { QFileInfo qfi(files.at(0)); - // if the new dir, the one just chosen by the user, is different from the one stored in the settings, update the luminance_options. + // if the new dir, the one just chosen by the user, is different from the one stored in the settings, update the luminance_options. if (RecentDirInputLDRs != qfi.path()) { // update internal field variable RecentDirInputLDRs = qfi.path(); - luminance_options.setDefaultPathLdrIn(RecentDirInputLDRs); + luminance_options.setDefaultPathLdrIn(RecentDirInputLDRs); } //loadImagesButton->setEnabled(false); - m_Ui->confirmloadlabel->setText("

    "+tr("Loading...")+"

    "); + m_Ui->confirmloadlabel->setText("

    "+tr("Loading...")+"

    "); loadInputFiles(files, files.count()); QApplication::setOverrideCursor(QCursor(Qt::BusyCursor)); - } //if (!files.isEmpty()) + } //if (!files.isEmpty()) } void HdrWizard::removeImageButtonClicked() { - disconnect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int))); - int index = m_Ui->tableWidget->currentRow(); + disconnect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int))); + int index = m_Ui->tableWidget->currentRow(); - if (m_Ui->tableWidget->rowCount() == 1) + if (m_Ui->tableWidget->rowCount() == 1) { clearListButtonClicked(); } @@ -202,24 +202,24 @@ { QString fname = hdrCreationManager->getFileList().at(index); QFileInfo qfi(fname); - QString thumb_name = QString(luminance_options.getTempDir() + "/"+ qfi.completeBaseName() + ".thumb.jpg"); + QString thumb_name = QString(luminance_options.getTempDir() + "/"+ qfi.completeBaseName() + ".thumb.jpg"); QFile::remove(thumb_name); - thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.ppm"); + thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.ppm"); QFile::remove(thumb_name); hdrCreationManager->remove(index); - m_Ui->tableWidget->removeRow(index); - inputHdrFileSelected(m_Ui->tableWidget->currentRow()); + m_Ui->tableWidget->removeRow(index); + inputHdrFileSelected(m_Ui->tableWidget->currentRow()); } - connect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int))); + connect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int))); } void HdrWizard::clearListButtonClicked() { - disconnect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int))); - m_Ui->previewLabel->clear(); - for (int i = m_Ui->tableWidget->rowCount()-1; i >= 0; --i) - m_Ui->tableWidget->removeRow(i); + disconnect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int))); + m_Ui->previewLabel->clear(); + for (int i = m_Ui->tableWidget->rowCount()-1; i >= 0; --i) + m_Ui->tableWidget->removeRow(i); QStringList fnames = hdrCreationManager->getFileList(); int n = fnames.size(); @@ -227,27 +227,27 @@ for (int i = 0; i < n; i++) { QString fname = hdrCreationManager->getFileList().at(i); QFileInfo qfi(fname); - QString thumb_name = QString(luminance_options.getTempDir() + "/"+ qfi.completeBaseName() + ".thumb.jpg"); + QString thumb_name = QString(luminance_options.getTempDir() + "/"+ qfi.completeBaseName() + ".thumb.jpg"); QFile::remove(thumb_name); - thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.ppm"); + thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.ppm"); QFile::remove(thumb_name); } hdrCreationManager->reset(); - m_Ui->removeImageButton->setEnabled(false); - m_Ui->clearListButton->setEnabled(false); - m_Ui->EVgroupBox->setEnabled(false); - m_Ui->alignGroupBox->setEnabled(false); + m_Ui->removeImageButton->setEnabled(false); + m_Ui->clearListButton->setEnabled(false); + m_Ui->EVgroupBox->setEnabled(false); + m_Ui->alignGroupBox->setEnabled(false); //EVSlider->setValue(0); - m_Ui->NextFinishButton->setEnabled(false); - m_Ui->progressBar->setValue(0); - m_Ui->progressBar->hide(); - m_Ui->confirmloadlabel->setText("

    "+tr("Start loading a set of images with different exposure")+"

    "); - connect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int))); + m_Ui->NextFinishButton->setEnabled(false); + m_Ui->progressBar->setValue(0); + m_Ui->progressBar->hide(); + m_Ui->confirmloadlabel->setText("

    "+tr("Start loading a set of images with different exposure")+"

    "); + connect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int))); } void HdrWizard::dragEnterEvent(QDragEnterEvent *event) { - if (m_Ui->loadImagesButton->isEnabled()) + if (m_Ui->loadImagesButton->isEnabled()) event->acceptProposedAction(); } @@ -262,14 +262,14 @@ } void HdrWizard::loadInputFiles(QStringList files, int count) { - int shift = m_Ui->tableWidget->rowCount(); - m_Ui->tableWidget->setEnabled(false); - m_Ui->tableWidget->setRowCount(shift + count); - m_Ui->progressBar->setMaximum(count); - m_Ui->progressBar->setValue(0); + int shift = m_Ui->tableWidget->rowCount(); + m_Ui->tableWidget->setEnabled(false); + m_Ui->tableWidget->setRowCount(shift + count); + m_Ui->progressBar->setMaximum(count); + m_Ui->progressBar->setValue(0); //connect(hdrCreationManager, SIGNAL(maximumValue(int)), progressBar, SLOT(setMaximum(int))); //connect(hdrCreationManager, SIGNAL(nextstep(int)), progressBar, SLOT(setValue(int))); - m_Ui->progressBar->show(); + m_Ui->progressBar->show(); hdrCreationManager->setShift(shift); hdrCreationManager->setFileList(files); @@ -281,14 +281,14 @@ updateGraphicalEVvalue(expotime,index); //fill graphical list QFileInfo qfi(fname); - m_Ui->tableWidget->setItem(index,0,new QTableWidgetItem(qfi.fileName())); - m_Ui->progressBar->setValue(m_Ui->progressBar->value()+1); // increment progressbar + m_Ui->tableWidget->setItem(index,0,new QTableWidgetItem(qfi.fileName())); + m_Ui->progressBar->setValue(m_Ui->progressBar->value()+1); // increment progressbar } void HdrWizard::finishedLoadingInputFiles(QStringList filesLackingExif) { if (filesLackingExif.size() == 0) { - m_Ui->NextFinishButton->setEnabled(true); - m_Ui->confirmloadlabel->setText(tr("

    Images Loaded.

    ")); + m_Ui->NextFinishButton->setEnabled(true); + m_Ui->confirmloadlabel->setText(tr("

    Images Loaded.

    ")); } else { QString warning_message = (QString(tr("

    WARNING:

    \ Luminance HDR was not able to find the relevant EXIF tags\nfor the following images:\n
      \ @@ -300,50 +300,50 @@
      HINT: Losing EXIF data usually happens when you preprocess your pictures.
      \ You can perform a one-to-one copy of the exif data between two sets of images via the \"Tools->Copy Exif Data...\" menu item."))).arg(filesLackingExif.join("")); QMessageBox::warning(this,tr("EXIF data not found"),warning_message); - m_Ui->confirmloadlabel->setText(QString(tr("

      To proceed you need to manually set the exposure values.
      %1 values still required.

      ")).arg(filesLackingExif.size())); + m_Ui->confirmloadlabel->setText(QString(tr("

      To proceed you need to manually set the exposure values.
      %1 values still required.

      ")).arg(filesLackingExif.size())); } //do not load any more images //loadImagesButton->setEnabled(false); //graphical fix - m_Ui->tableWidget->resizeColumnsToContents(); + m_Ui->tableWidget->resizeColumnsToContents(); //enable user EV input - m_Ui->EVgroupBox->setEnabled(true); - m_Ui->tableWidget->selectRow(0); - m_Ui->tableWidget->setEnabled(true); + m_Ui->EVgroupBox->setEnabled(true); + m_Ui->tableWidget->selectRow(0); + m_Ui->tableWidget->setEnabled(true); //FIXME mtb doesn't work with 16bit data yet (and probably ever) - if ((m_Ui->tableWidget->rowCount() >= 2) && (hdrCreationManager->inputImageType() == HdrCreationManager::LDR_INPUT_TYPE)) { - m_Ui->alignCheckBox->setEnabled(true); - m_Ui->alignGroupBox->setEnabled(true); - } - else if ((m_Ui->tableWidget->rowCount() >= 2) && (hdrCreationManager->inputImageType() == HdrCreationManager::MDR_INPUT_TYPE)) { - m_Ui->alignCheckBox->setEnabled(true); - m_Ui->alignGroupBox->setEnabled(true); - m_Ui->mtb_radioButton->setEnabled(false); - } - m_Ui->removeImageButton->setEnabled(true); - m_Ui->clearListButton->setEnabled(true); - m_Ui->progressBar->hide(); + if ((m_Ui->tableWidget->rowCount() >= 2) && (hdrCreationManager->inputImageType() == HdrCreationManager::LDR_INPUT_TYPE)) { + m_Ui->alignCheckBox->setEnabled(true); + m_Ui->alignGroupBox->setEnabled(true); + } + else if ((m_Ui->tableWidget->rowCount() >= 2) && (hdrCreationManager->inputImageType() == HdrCreationManager::MDR_INPUT_TYPE)) { + m_Ui->alignCheckBox->setEnabled(true); + m_Ui->alignGroupBox->setEnabled(true); + m_Ui->mtb_radioButton->setEnabled(false); + } + m_Ui->removeImageButton->setEnabled(true); + m_Ui->clearListButton->setEnabled(true); + m_Ui->progressBar->hide(); QApplication::restoreOverrideCursor(); } void HdrWizard::errorWhileLoading(QString error) { - disconnect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int))); - m_Ui->tableWidget->clear(); - m_Ui->tableWidget->setRowCount(0); - m_Ui->tableWidget->setEnabled(true); - m_Ui->progressBar->setValue(0); - m_Ui->progressBar->hide(); - m_Ui->previewLabel->clear(); - m_Ui->removeImageButton->setEnabled(false); - m_Ui->clearListButton->setEnabled(false); - m_Ui->NextFinishButton->setEnabled(false); - m_Ui->EVgroupBox->setEnabled(false); + disconnect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int))); + m_Ui->tableWidget->clear(); + m_Ui->tableWidget->setRowCount(0); + m_Ui->tableWidget->setEnabled(true); + m_Ui->progressBar->setValue(0); + m_Ui->progressBar->hide(); + m_Ui->previewLabel->clear(); + m_Ui->removeImageButton->setEnabled(false); + m_Ui->clearListButton->setEnabled(false); + m_Ui->NextFinishButton->setEnabled(false); + m_Ui->EVgroupBox->setEnabled(false); QMessageBox::critical(this,tr("Loading Error: "), error); hdrCreationManager->clearlists(true); QApplication::restoreOverrideCursor(); - m_Ui->confirmloadlabel->setText("

      "+tr("Start loading a set of images with different exposure")+"

      "); - connect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int))); + m_Ui->confirmloadlabel->setText("

      "+tr("Start loading a set of images with different exposure")+"

      "); + connect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int))); } void HdrWizard::updateGraphicalEVvalue(float expotime, int index_in_table) { @@ -355,22 +355,24 @@ ts << right << forcesign << fixed << log2f(expotime) << " EV"; QTableWidgetItem *tableitem = new QTableWidgetItem(EVdisplay); tableitem->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter); - m_Ui->tableWidget->setItem(index_in_table,1,tableitem); + m_Ui->tableWidget->setItem(index_in_table,1,tableitem); } else { //if image doesn't contain (the required) exif tags QTableWidgetItem *tableitem = new QTableWidgetItem(QString(tr("Unknown"))); tableitem->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter); tableitem->setBackground(QBrush(Qt::yellow)); tableitem->setForeground(QBrush(Qt::red)); - m_Ui->tableWidget->setItem(index_in_table,1,tableitem); + m_Ui->tableWidget->setItem(index_in_table,1,tableitem); } } -void HdrWizard::finishedAligning() { +void HdrWizard::finishedAligning(int exitcode) { QApplication::restoreOverrideCursor(); - m_Ui->NextFinishButton->setEnabled(true); - m_Ui->pagestack->setCurrentIndex(2); - m_Ui->progressBar->hide(); + if (exitcode != 0) + QMessageBox::warning(this,tr("Error..."),tr("align_image_stack failed to align images.")); + m_Ui->NextFinishButton->setEnabled(true); + m_Ui->pagestack->setCurrentIndex(2); + m_Ui->progressBar->hide(); } void HdrWizard::ais_failed(QProcess::ProcessError e) { @@ -388,150 +390,150 @@ QMessageBox::warning(this,tr("Error..."),tr("An unknown error occurred while executing the \"align_image_stack\" application...")); break; } - m_Ui->progressBar->hide(); - m_Ui->textEdit->hide(); + m_Ui->progressBar->hide(); + m_Ui->textEdit->hide(); QApplication::restoreOverrideCursor(); - m_Ui->alignGroupBox->setEnabled(true); - m_Ui->alignCheckBox->setChecked(false); - m_Ui->NextFinishButton->setEnabled(true); - m_Ui->confirmloadlabel->setText("

      "+tr("Now click on next button")+"

      "); + m_Ui->alignGroupBox->setEnabled(true); + m_Ui->alignCheckBox->setChecked(false); + m_Ui->NextFinishButton->setEnabled(true); + m_Ui->confirmloadlabel->setText("

      "+tr("Now click on next button")+"

      "); } void HdrWizard::customConfigCheckBoxToggled(bool want_custom) { if (!want_custom) { - if (!m_Ui->antighostingCheckBox->isChecked()) { - m_Ui->label_RespCurve_Antighost->setDisabled(true); - m_Ui->antighostRespCurveCombobox->setDisabled(true); - m_Ui->label_Iterations->setDisabled(true); - m_Ui->spinBoxIterations->setDisabled(true); + if (!m_Ui->antighostingCheckBox->isChecked()) { + m_Ui->label_RespCurve_Antighost->setDisabled(true); + m_Ui->antighostRespCurveCombobox->setDisabled(true); + m_Ui->label_Iterations->setDisabled(true); + m_Ui->spinBoxIterations->setDisabled(true); //temporary disable anti-ghosting until it's fixed - m_Ui->antighostingCheckBox->setDisabled(true); + m_Ui->antighostingCheckBox->setDisabled(true); } else { - m_Ui->label_predef_configs->setDisabled(true); - m_Ui->predefConfigsComboBox->setDisabled(true); - m_Ui->label_weights->setDisabled(true); - m_Ui->lineEdit_showWeight->setDisabled(true); - m_Ui->label_resp->setDisabled(true); - m_Ui->lineEdit_show_resp->setDisabled(true); - m_Ui->label_model->setDisabled(true); - m_Ui->lineEdit_showmodel->setDisabled(true); + m_Ui->label_predef_configs->setDisabled(true); + m_Ui->predefConfigsComboBox->setDisabled(true); + m_Ui->label_weights->setDisabled(true); + m_Ui->lineEdit_showWeight->setDisabled(true); + m_Ui->label_resp->setDisabled(true); + m_Ui->lineEdit_show_resp->setDisabled(true); + m_Ui->label_model->setDisabled(true); + m_Ui->lineEdit_showmodel->setDisabled(true); } - predefConfigsComboBoxActivated(m_Ui->predefConfigsComboBox->currentIndex()); - m_Ui->NextFinishButton->setText(tr("&Finish")); + predefConfigsComboBoxActivated(m_Ui->predefConfigsComboBox->currentIndex()); + m_Ui->NextFinishButton->setText(tr("&Finish")); } else { - m_Ui->NextFinishButton->setText(tr("&Next >")); + m_Ui->NextFinishButton->setText(tr("&Next >")); } } void HdrWizard::predefRespCurveRadioButtonToggled(bool want_predef_resp_curve) { if (want_predef_resp_curve) { //ENABLE load_curve_button and lineedit when "load from file" is checked. - if (!m_Ui->loadRespCurveFromFileCheckbox->isChecked()) { - m_Ui->loadRespCurveFileButton->setEnabled(false); - m_Ui->RespCurveFileLoadedLineEdit->setEnabled(false); + if (!m_Ui->loadRespCurveFromFileCheckbox->isChecked()) { + m_Ui->loadRespCurveFileButton->setEnabled(false); + m_Ui->RespCurveFileLoadedLineEdit->setEnabled(false); } - loadRespCurveFromFileCheckboxToggled(m_Ui->loadRespCurveFromFileCheckbox->isChecked()); + loadRespCurveFromFileCheckboxToggled(m_Ui->loadRespCurveFromFileCheckbox->isChecked()); } else { //want to recover response curve via robertson02 //update hdrCreationManager->chosen_config hdrCreationManager->chosen_config.response_curve = FROM_ROBERTSON; //always enable - m_Ui->NextFinishButton->setEnabled(true); - saveRespCurveToFileCheckboxToggled(m_Ui->saveRespCurveToFileCheckbox->isChecked()); + m_Ui->NextFinishButton->setEnabled(true); + saveRespCurveToFileCheckboxToggled(m_Ui->saveRespCurveToFileCheckbox->isChecked()); } } void HdrWizard::loadRespCurveFromFileCheckboxToggled( bool checkedfile ) { - //if checkbox is checked AND we have a valid filename - if (checkedfile && loadcurvefilename != "") { + //if checkbox is checked AND we have a valid filename + if (checkedfile && loadcurvefilename != "") { //update chosen config hdrCreationManager->chosen_config.response_curve = FROM_FILE; hdrCreationManager->chosen_config.LoadCurveFromFilename = strdup(QFile::encodeName(loadcurvefilename).constData()); //and ENABLE nextbutton - m_Ui->NextFinishButton->setEnabled(true); - } - //if checkbox is checked AND no valid filename - else if (checkedfile && loadcurvefilename == "") { + m_Ui->NextFinishButton->setEnabled(true); + } + //if checkbox is checked AND no valid filename + else if (checkedfile && loadcurvefilename == "") { // DISABLE nextbutton until situation is fixed - m_Ui->NextFinishButton->setEnabled(false); -// qDebug("Load checkbox is checked AND no valid filename"); - } - //checkbox not checked - else { + m_Ui->NextFinishButton->setEnabled(false); +// qDebug("Load checkbox is checked AND no valid filename"); + } + //checkbox not checked + else { // update chosen config - hdrCreationManager->chosen_config.response_curve = responses_in_gui[m_Ui->gammaLinLogComboBox->currentIndex()]; + hdrCreationManager->chosen_config.response_curve = responses_in_gui[m_Ui->gammaLinLogComboBox->currentIndex()]; hdrCreationManager->chosen_config.LoadCurveFromFilename = ""; //and ENABLE nextbutton - m_Ui->NextFinishButton->setEnabled(true); - } + m_Ui->NextFinishButton->setEnabled(true); + } } void HdrWizard::saveRespCurveToFileCheckboxToggled( bool checkedfile ) { //if checkbox is checked AND we have a valid filename if (checkedfile && savecurvefilename != "") { hdrCreationManager->chosen_config.SaveCurveToFilename = strdup(QFile::encodeName(savecurvefilename).constData()); - m_Ui->NextFinishButton->setEnabled(true); + m_Ui->NextFinishButton->setEnabled(true); } //if checkbox is checked AND no valid filename else if (checkedfile && savecurvefilename == "") { // DISABLE nextbutton until situation is fixed - m_Ui->NextFinishButton->setEnabled(false); + m_Ui->NextFinishButton->setEnabled(false); } //checkbox not checked else { hdrCreationManager->chosen_config.SaveCurveToFilename = ""; //and ENABLE nextbutton - m_Ui->NextFinishButton->setEnabled(true); + m_Ui->NextFinishButton->setEnabled(true); } } void HdrWizard::NextFinishButtonClicked() { - int currentpage = m_Ui->pagestack->currentIndex(); + int currentpage = m_Ui->pagestack->currentIndex(); switch (currentpage) { case 0: - m_Ui->pagestack->setCurrentIndex(1); - m_Ui->NextFinishButton->setDisabled(true); + m_Ui->pagestack->setCurrentIndex(1); + m_Ui->NextFinishButton->setDisabled(true); break; case 1: //now align, if requested - if (m_Ui->alignCheckBox->isChecked()) { + if (m_Ui->alignCheckBox->isChecked()) { QApplication::setOverrideCursor(QCursor(Qt::BusyCursor)); - m_Ui->confirmloadlabel->setText("

      "+tr("Aligning...")+"

      "); - m_Ui->loadImagesButton->setDisabled(true); - m_Ui->removeImageButton->setDisabled(true); - m_Ui->clearListButton->setDisabled(true); - m_Ui->previewLabel->setDisabled(true); - m_Ui->NextFinishButton->setDisabled(true); - m_Ui->alignGroupBox->setDisabled(true); - m_Ui->EVgroupBox->setDisabled(true); - m_Ui->tableWidget->setDisabled(true); + m_Ui->confirmloadlabel->setText("

      "+tr("Aligning...")+"

      "); + m_Ui->loadImagesButton->setDisabled(true); + m_Ui->removeImageButton->setDisabled(true); + m_Ui->clearListButton->setDisabled(true); + m_Ui->previewLabel->setDisabled(true); + m_Ui->NextFinishButton->setDisabled(true); + m_Ui->alignGroupBox->setDisabled(true); + m_Ui->EVgroupBox->setDisabled(true); + m_Ui->tableWidget->setDisabled(true); repaint(); - m_Ui->progressBar->setMaximum(0); - m_Ui->progressBar->setMinimum(0); - m_Ui->progressBar->show(); - if (m_Ui->ais_radioButton->isChecked()) { - m_Ui->textEdit->show(); + m_Ui->progressBar->setMaximum(0); + m_Ui->progressBar->setMinimum(0); + m_Ui->progressBar->show(); + if (m_Ui->ais_radioButton->isChecked()) { + m_Ui->textEdit->show(); hdrCreationManager->align_with_ais(); } else hdrCreationManager->align_with_mtb(); return; } - m_Ui->pagestack->setCurrentIndex(2); + m_Ui->pagestack->setCurrentIndex(2); break; case 2: - if(!m_Ui->customConfigCheckBox->isChecked()) { + if(!m_Ui->customConfigCheckBox->isChecked()) { currentpage = 3; } else { - m_Ui->pagestack->setCurrentIndex(3); + m_Ui->pagestack->setCurrentIndex(3); break; } case 3: - m_Ui->settings_label->setText("

      "+tr("Processing...")+"

      "); - m_Ui->customize_label->setText("

      "+tr("Processing...")+"

      "); + m_Ui->settings_label->setText("

      "+tr("Processing...")+"

      "); + m_Ui->customize_label->setText("

      "+tr("Processing...")+"

      "); repaint(); QApplication::setOverrideCursor(QCursor(Qt::BusyCursor)); - PfsFrameHDR = hdrCreationManager->createHdr(m_Ui->antighostingCheckBox->isChecked(),m_Ui->spinBoxIterations->value()); + PfsFrameHDR = hdrCreationManager->createHdr(m_Ui->antighostingCheckBox->isChecked(),m_Ui->spinBoxIterations->value()); QApplication::restoreOverrideCursor(); accept(); return; @@ -540,15 +542,18 @@ void HdrWizard::currentPageChangedInto(int newindex) { //predefined configs page + // m_Ui->textEdit->hide(); if (newindex == 2) { hdrCreationManager->removeTempFiles(); - m_Ui->NextFinishButton->setText(tr("&Finish")); + m_Ui->NextFinishButton->setText(tr("&Finish")); //when at least 2 LDR inputs perform Manual Alignment int numldrs = hdrCreationManager->getLDRList().size(); - if (hdrCreationManager->inputImageType() == HdrCreationManager::LDR_INPUT_TYPE && numldrs >= 2) { + //if (hdrCreationManager->inputImageType() == HdrCreationManager::LDR_INPUT_TYPE && numldrs >= 2) { + if (numldrs >= 2) { this->setDisabled(true); //fix for some platforms/Qt versions: makes sure LDR images have alpha channel - hdrCreationManager->makeSureLDRsHaveAlpha(); + if (hdrCreationManager->inputImageType() == HdrCreationManager::LDR_INPUT_TYPE) + hdrCreationManager->makeSureLDRsHaveAlpha(); EditingTools *editingtools = new EditingTools(hdrCreationManager); if (editingtools->exec() == QDialog::Accepted) { this->setDisabled(false); @@ -560,7 +565,7 @@ } else if (newindex == 3) { //custom config predefConfigsComboBoxActivated(1); - m_Ui->NextFinishButton->setText(tr("&Finish")); + m_Ui->NextFinishButton->setText(tr("&Finish")); return; } } @@ -576,8 +581,8 @@ QDir::currentPath(), tr("Camera response curve (*.m);;All Files (*)") ); if (!loadcurvefilename.isEmpty()) { - m_Ui->RespCurveFileLoadedLineEdit->setText(loadcurvefilename); - loadRespCurveFromFileCheckboxToggled(m_Ui->loadRespCurveFromFileCheckbox->isChecked()); + m_Ui->RespCurveFileLoadedLineEdit->setText(loadcurvefilename); + loadRespCurveFromFileCheckboxToggled(m_Ui->loadRespCurveFromFileCheckbox->isChecked()); } } @@ -588,16 +593,16 @@ QDir::currentPath(), tr("Camera response curve (*.m);;All Files (*)") ); if (!savecurvefilename.isEmpty()) { - m_Ui->CurveFileNameSaveLineEdit->setText(savecurvefilename); - saveRespCurveToFileCheckboxToggled(m_Ui->saveRespCurveToFileCheckbox->isChecked()); + m_Ui->CurveFileNameSaveLineEdit->setText(savecurvefilename); + saveRespCurveToFileCheckboxToggled(m_Ui->saveRespCurveToFileCheckbox->isChecked()); } } void HdrWizard::predefConfigsComboBoxActivated( int index_from_gui ) { hdrCreationManager->chosen_config = predef_confs[index_from_gui]; - m_Ui->lineEdit_showWeight->setText(getQStringFromConfig(1)); - m_Ui->lineEdit_show_resp->setText(getQStringFromConfig(2)); - m_Ui->lineEdit_showmodel->setText(getQStringFromConfig(3)); + m_Ui->lineEdit_showWeight->setText(getQStringFromConfig(1)); + m_Ui->lineEdit_show_resp->setText(getQStringFromConfig(2)); + m_Ui->lineEdit_showmodel->setText(getQStringFromConfig(3)); } void HdrWizard::triGaussPlateauComboBoxActivated(int from_gui) { @@ -621,110 +626,110 @@ QString HdrWizard::getCaptionTEXT() { - return tr("Weights: ")+getQStringFromConfig(1) + tr(" - Response curve: ") + getQStringFromConfig(2) + tr(" - Model: ") + getQStringFromConfig(3); + return tr("Weights: ")+getQStringFromConfig(1) + tr(" - Response curve: ") + getQStringFromConfig(2) + tr(" - Model: ") + getQStringFromConfig(3); } QString HdrWizard::getQStringFromConfig( int type ) { - if (type == 1) { //return String for weights + if (type == 1) { //return String for weights switch (hdrCreationManager->chosen_config.weights) { case TRIANGULAR: - return tr("Triangular"); + return tr("Triangular"); case PLATEAU: - return tr("Plateau"); + return tr("Plateau"); case GAUSSIAN: - return tr("Gaussian"); + return tr("Gaussian"); } - } else if (type == 2) { //return String for response curve + } else if (type == 2) { //return String for response curve switch (hdrCreationManager->chosen_config.response_curve) { case LINEAR: - return tr("Linear"); + return tr("Linear"); case GAMMA: - return tr("Gamma"); + return tr("Gamma"); case LOG10: - return tr("Logarithmic"); + return tr("Logarithmic"); case FROM_ROBERTSON: - return tr("From Calibration"); + return tr("From Calibration"); case FROM_FILE: - return tr("From File"); + return tr("From File"); } - } else if (type == 3) { //return String for model + } else if (type == 3) { //return String for model switch (hdrCreationManager->chosen_config.model) { case DEBEVEC: - return tr("Debevec"); + return tr("Debevec"); case ROBERTSON: - return tr("Robertson"); + return tr("Robertson"); } - } else return ""; + } else return ""; return ""; } //triggered by user interaction void HdrWizard::editingEVfinished() { //transform from EV value to expotime value - hdrCreationManager->setEV(m_Ui->ImageEVdsb->value(), m_Ui->tableWidget->currentRow()); + hdrCreationManager->setEV(m_Ui->ImageEVdsb->value(), m_Ui->tableWidget->currentRow()); if (hdrCreationManager->getFilesLackingExif().size() == 0) { - m_Ui->NextFinishButton->setEnabled(true); + m_Ui->NextFinishButton->setEnabled(true); //give an offset to the EV values if they are outside of the -10..10 range. hdrCreationManager->checkEVvalues(); - m_Ui->confirmloadlabel->setText(tr("

      All the EV values have been set.
      Now click on Next button.

      ")); + m_Ui->confirmloadlabel->setText(tr("

      All the EV values have been set.
      Now click on Next button.

      ")); } else { - m_Ui->confirmloadlabel->setText( QString(tr("

      To proceed you need to manually set the exposure values.
      %1 values still required.

      ")).arg(hdrCreationManager->getFilesLackingExif().size()) ); + m_Ui->confirmloadlabel->setText( QString(tr("

      To proceed you need to manually set the exposure values.
      %1 values still required.

      ")).arg(hdrCreationManager->getFilesLackingExif().size()) ); } } void HdrWizard::inputHdrFileSelected(int i) { if (hdrCreationManager->isValidEV(i)) - m_Ui->ImageEVdsb->setValue(hdrCreationManager->getEV(i)); + m_Ui->ImageEVdsb->setValue(hdrCreationManager->getEV(i)); if (hdrCreationManager->inputImageType() == HdrCreationManager::LDR_INPUT_TYPE) { QImage *image = hdrCreationManager->getLDRList().at(i); - m_Ui->previewLabel->setPixmap(QPixmap::fromImage(image->scaled(m_Ui->previewLabel->size(), Qt::KeepAspectRatio))); + m_Ui->previewLabel->setPixmap(QPixmap::fromImage(image->scaled(m_Ui->previewLabel->size(), Qt::KeepAspectRatio))); } else { // load preview from thumbnail previously created on disk QString fname = hdrCreationManager->getFileList().at(i); QFileInfo qfi(fname); - QString thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.jpg"); + QString thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.jpg"); - if (QFile::exists(thumb_name)) - { + if (QFile::exists(thumb_name)) + { QImage thumb_image(thumb_name); - m_Ui->previewLabel->setPixmap(QPixmap::fromImage(thumb_image.scaled(m_Ui->previewLabel->size(), Qt::KeepAspectRatio))); + m_Ui->previewLabel->setPixmap(QPixmap::fromImage(thumb_image.scaled(m_Ui->previewLabel->size(), Qt::KeepAspectRatio))); } - else - { - QString thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.ppm"); + else + { + QString thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.ppm"); if ( QFile::exists(thumb_name)) { QImage thumb_image(thumb_name); - m_Ui->previewLabel->setPixmap(QPixmap::fromImage(thumb_image.scaled(m_Ui->previewLabel->size(), Qt::KeepAspectRatio))); + m_Ui->previewLabel->setPixmap(QPixmap::fromImage(thumb_image.scaled(m_Ui->previewLabel->size(), Qt::KeepAspectRatio))); } } } - m_Ui->ImageEVdsb->setFocus(); + m_Ui->ImageEVdsb->setFocus(); } void HdrWizard::resizeEvent ( QResizeEvent * ) { //qDebug() << "void HdrWizard::resizeEvent ( QResizeEvent * )"; //make sure we ask for a thumbnail only when we need it - if ((m_Ui->pagestack->currentIndex() == 0) && (m_Ui->tableWidget->currentRow() != -1) && (hdrCreationManager->inputImageType() == HdrCreationManager::LDR_INPUT_TYPE)) { - QImage *image = hdrCreationManager->getLDRList().at(m_Ui->tableWidget->currentRow()); - m_Ui->previewLabel->setPixmap(QPixmap::fromImage(image->scaled(m_Ui->previewLabel->size(), Qt::KeepAspectRatio))); - } - else if ((m_Ui->pagestack->currentIndex() == 0) && (m_Ui->tableWidget->currentRow() != -1) && (hdrCreationManager->inputImageType() != HdrCreationManager::LDR_INPUT_TYPE)) - { // load preview from thumbnail previously created on disk - QString fname = hdrCreationManager->getFileList().at(m_Ui->tableWidget->currentRow()); + if ((m_Ui->pagestack->currentIndex() == 0) && (m_Ui->tableWidget->currentRow() != -1) && (hdrCreationManager->inputImageType() == HdrCreationManager::LDR_INPUT_TYPE)) { + QImage *image = hdrCreationManager->getLDRList().at(m_Ui->tableWidget->currentRow()); + m_Ui->previewLabel->setPixmap(QPixmap::fromImage(image->scaled(m_Ui->previewLabel->size(), Qt::KeepAspectRatio))); + } + else if ((m_Ui->pagestack->currentIndex() == 0) && (m_Ui->tableWidget->currentRow() != -1) && (hdrCreationManager->inputImageType() != HdrCreationManager::LDR_INPUT_TYPE)) + { // load preview from thumbnail previously created on disk + QString fname = hdrCreationManager->getFileList().at(m_Ui->tableWidget->currentRow()); QFileInfo qfi(fname); - QString thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.jpg"); + QString thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.jpg"); if ( QFile::exists(thumb_name)) { QImage thumb_image(thumb_name); - m_Ui->previewLabel->setPixmap(QPixmap::fromImage(thumb_image.scaled(m_Ui->previewLabel->size(), Qt::KeepAspectRatio))); + m_Ui->previewLabel->setPixmap(QPixmap::fromImage(thumb_image.scaled(m_Ui->previewLabel->size(), Qt::KeepAspectRatio))); } - else - { - QString thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.ppm"); + else + { + QString thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.ppm"); if ( QFile::exists(thumb_name)) { QImage thumb_image(thumb_name); - m_Ui->previewLabel->setPixmap(QPixmap::fromImage(thumb_image.scaled(m_Ui->previewLabel->size(), Qt::KeepAspectRatio))); + m_Ui->previewLabel->setPixmap(QPixmap::fromImage(thumb_image.scaled(m_Ui->previewLabel->size(), Qt::KeepAspectRatio))); } } } @@ -738,7 +743,7 @@ void HdrWizard::keyPressEvent(QKeyEvent *event) { if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) { - m_Ui->tableWidget->selectRow((m_Ui->tableWidget->currentRow() == m_Ui->tableWidget->rowCount()-1) ? 0 : m_Ui->tableWidget->currentRow()+1); + m_Ui->tableWidget->selectRow((m_Ui->tableWidget->currentRow() == m_Ui->tableWidget->rowCount()-1) ? 0 : m_Ui->tableWidget->currentRow()+1); } else if (event->key() == Qt::Key_Escape) { emit reject(); } @@ -747,6 +752,6 @@ void HdrWizard::writeAisData(QByteArray data) { qDebug() << data; - m_Ui->textEdit->append(data); + m_Ui->textEdit->append(data); } diff -Nru luminance-2.2.1/src/HdrWizard/HdrWizard.h luminance-2.3.0/src/HdrWizard/HdrWizard.h --- luminance-2.2.1/src/HdrWizard/HdrWizard.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/HdrWizard/HdrWizard.h 2012-07-01 09:10:50.000000000 +0000 @@ -87,7 +87,7 @@ void errorWhileLoading(QString errormessage); void updateGraphicalEVvalue(float expotime, int index_in_table); - void finishedAligning(); + void finishedAligning(int); void loadImagesButtonClicked(); void removeImageButtonClicked(); diff -Nru luminance-2.2.1/src/HdrWizard/HdrWizard.ui luminance-2.3.0/src/HdrWizard/HdrWizard.ui --- luminance-2.2.1/src/HdrWizard/HdrWizard.ui 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/HdrWizard/HdrWizard.ui 2012-07-01 09:10:50.000000000 +0000 @@ -43,7 +43,7 @@ - :/splash/images/camera.png + :/splash/images/camera.png @@ -68,7 +68,7 @@ - :/splash/images/stack.png + :/splash/images/stack.png @@ -299,7 +299,7 @@ ... - + :/new/prefix1/images/list-add.png:/new/prefix1/images/list-add.png @@ -322,7 +322,7 @@ ... - + :/new/prefix1/images/list-remove.png:/new/prefix1/images/list-remove.png @@ -345,7 +345,7 @@ ... - + :/new/prefix1/images/edit-clear-list.png:/new/prefix1/images/edit-clear-list.png @@ -1517,17 +1517,17 @@ - EVSlider - ImageEVdsb + NextFinishButton + cancelButton loadImagesButton removeImageButton clearListButton + tableWidget + EVSlider + ImageEVdsb alignCheckBox ais_radioButton mtb_radioButton - tableWidget - NextFinishButton - cancelButton predefConfigsComboBox lineEdit_showWeight lineEdit_show_resp @@ -1539,18 +1539,18 @@ triGaussPlateauComboBox predefRespCurveRadioButton gammaLinLogComboBox - modelComboBox - RespCurveFileLoadedLineEdit loadRespCurveFromFileCheckbox + RespCurveFileLoadedLineEdit loadRespCurveFileButton recoverRespCurveRadio saveRespCurveFileButton - saveRespCurveToFileCheckbox CurveFileNameSaveLineEdit + modelComboBox + saveRespCurveToFileCheckbox textEdit - + diff -Nru luminance-2.2.1/src/HdrWizard/PreviewWidget.cpp luminance-2.3.0/src/HdrWizard/PreviewWidget.cpp --- luminance-2.2.1/src/HdrWizard/PreviewWidget.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/HdrWizard/PreviewWidget.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -353,10 +353,10 @@ this->update(); } -void PreviewWidget::setPivot(QImage *p, int _px, int _py) { +void PreviewWidget::setPivot(QImage *p, int p_px, int p_py) { pivotImage=p; - px=_px; - py=_py; + px=p_px; + py=p_py; prev_computed=QRegion(); } @@ -364,10 +364,10 @@ pivotImage = p; } -void PreviewWidget::setMovable(QImage *m, int _mx, int _my) { +void PreviewWidget::setMovable(QImage *m, int p_mx, int p_my) { movableImage=m; - mx=_mx; - my=_my; + mx=p_mx; + my=p_my; prev_computed=QRegion(); } diff -Nru luminance-2.2.1/src/HdrWizard/PreviewWidget.h luminance-2.3.0/src/HdrWizard/PreviewWidget.h --- luminance-2.2.1/src/HdrWizard/PreviewWidget.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/HdrWizard/PreviewWidget.h 2012-07-01 09:10:50.000000000 +0000 @@ -49,9 +49,9 @@ renderPreviewImage(blendmode); return previewImage; } - void setPivot(QImage *p, int _px, int _py); + void setPivot(QImage *p, int p_px, int p_py); void setPivot(QImage *p); - void setMovable(QImage *m, int _mx, int _my); + void setMovable(QImage *m, int p_mx, int p_my); void setMovable(QImage *m); void updateVertShiftMovable(int v); void updateHorizShiftMovable(int h); diff -Nru luminance-2.2.1/src/HelpBrowser/CMakeLists.txt luminance-2.3.0/src/HelpBrowser/CMakeLists.txt --- luminance-2.2.1/src/HelpBrowser/CMakeLists.txt 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/HelpBrowser/CMakeLists.txt 2012-07-01 09:10:50.000000000 +0000 @@ -1,3 +1,5 @@ +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/help-path.hxx.in ${CMAKE_CURRENT_BINARY_DIR}/help-path.hxx @ONLY) + SET(FILES_UI ${CMAKE_CURRENT_SOURCE_DIR}/HelpBrowser.ui ${CMAKE_CURRENT_SOURCE_DIR}/HelpSideBar.ui) diff -Nru luminance-2.2.1/src/HelpBrowser/HelpBrowser.ui luminance-2.3.0/src/HelpBrowser/HelpBrowser.ui --- luminance-2.2.1/src/HelpBrowser/HelpBrowser.ui 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/HelpBrowser/HelpBrowser.ui 2012-07-01 09:10:50.000000000 +0000 @@ -13,7 +13,7 @@ Luminance HDR Help - + :/new/prefix1/images/luminance.png:/new/prefix1/images/luminance.png @@ -94,7 +94,7 @@ - + diff -Nru luminance-2.2.1/src/HelpBrowser/help-path.hxx.in luminance-2.3.0/src/HelpBrowser/help-path.hxx.in --- luminance-2.2.1/src/HelpBrowser/help-path.hxx.in 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/src/HelpBrowser/help-path.hxx.in 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,24 @@ +/** + * This file is a part of Luminance HDR package. + * ---------------------------------------------------------------------- + * Copyright (C) Franco Comida + * + * This program 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * ---------------------------------------------------------------------- + * + */ + +#define HELPDIR (@HELPDIR@) + diff -Nru luminance-2.2.1/src/HelpBrowser/HelpSideBar.ui luminance-2.3.0/src/HelpBrowser/HelpSideBar.ui --- luminance-2.2.1/src/HelpBrowser/HelpSideBar.ui 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/HelpBrowser/HelpSideBar.ui 2012-07-01 09:10:50.000000000 +0000 @@ -89,7 +89,7 @@ &Add - + :/new/prefix1/images/add.png:/new/prefix1/images/add.png @@ -100,7 +100,7 @@ &Remove - + :/new/prefix1/images/remove.png:/new/prefix1/images/remove.png @@ -122,7 +122,7 @@ - + diff -Nru luminance-2.2.1/src/HelpBrowser/LuminancePaths.cpp luminance-2.3.0/src/HelpBrowser/LuminancePaths.cpp --- luminance-2.2.1/src/HelpBrowser/LuminancePaths.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/HelpBrowser/LuminancePaths.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -12,6 +12,7 @@ // #include "LuminancePaths.h" +#include "help-path.hxx" #include @@ -38,7 +39,8 @@ hf = LocalizedDirPath("/usr/local/share/doc/luminance-hdr/"); #else // hf = LocalizedDirPath( PREFIX + dirsep + "share" + dirsep + "fontmatrix" + dirsep + "help" + dirsep ); - hf = LocalizedDirPath("/usr" + dirsep + "share" + dirsep + "luminance-hdr" + dirsep + "help" + dirsep); + //hf = LocalizedDirPath("usr" + dirsep + "share" + dirsep + "luminance-hdr" + dirsep + "help" + dirsep); + hf = LocalizedDirPath(HELPDIR + dirsep); #endif getThis()->LuminancePathsDB["HelpDir"] = hf; diff -Nru luminance-2.2.1/src/Libpfs/array2d.cpp luminance-2.3.0/src/Libpfs/array2d.cpp --- luminance-2.2.1/src/Libpfs/array2d.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Libpfs/array2d.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -52,7 +52,7 @@ m_cols = cols; m_rows = rows; // Aligned memory allocation allows faster vectorized access - m_data = (float*)_mm_malloc(m_cols*m_rows*sizeof(float), 16); + m_data = (float*)_mm_malloc(m_cols*m_rows*sizeof(float), 32); m_is_data_owned = true; } diff -Nru luminance-2.2.1/src/Libpfs/array2d.h luminance-2.3.0/src/Libpfs/array2d.h --- luminance-2.2.1/src/Libpfs/array2d.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Libpfs/array2d.h 2012-07-01 09:10:50.000000000 +0000 @@ -33,8 +33,8 @@ * */ -#ifndef __ARRAY2D_H__ -#define __ARRAY2D_H__ +#ifndef ARRAY2D_H +#define ARRAY2D_H namespace pfs { @@ -204,4 +204,4 @@ void divideArray(Array2D *z, const Array2D *x, const Array2D *y); } -#endif // __ARRAY2D_H__ +#endif // ARRAY2D_H diff -Nru luminance-2.2.1/src/Libpfs/channel.cpp luminance-2.3.0/src/Libpfs/channel.cpp --- luminance-2.2.1/src/Libpfs/channel.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Libpfs/channel.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -129,6 +129,13 @@ { return channel_impl; } + + void Channel::setChannelData(Array2D *array) + { + if (channel_impl) + delete channel_impl; + channel_impl = array; + } } diff -Nru luminance-2.2.1/src/Libpfs/channel.h luminance-2.3.0/src/Libpfs/channel.h --- luminance-2.2.1/src/Libpfs/channel.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Libpfs/channel.h 2012-07-01 09:10:50.000000000 +0000 @@ -25,8 +25,8 @@ * @author Davide Anastasia */ -#ifndef __CHANNEL_H__ -#define __CHANNEL_H__ +#ifndef CHANNEL_H +#define CHANNEL_H #include #include @@ -109,6 +109,7 @@ virtual std::string getName() const; Array2D* getChannelData(); + void setChannelData(Array2D *); }; //------------------------------------------------------------------------------ @@ -167,5 +168,5 @@ } -#endif //__CHANNEL_H__ +#endif // CHANNEL_H diff -Nru luminance-2.2.1/src/Libpfs/colorspace.h luminance-2.3.0/src/Libpfs/colorspace.h --- luminance-2.2.1/src/Libpfs/colorspace.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Libpfs/colorspace.h 2012-07-01 09:10:50.000000000 +0000 @@ -28,8 +28,8 @@ * $Id: colorspace.h,v 1.6 2007/07/18 08:49:25 rafm Exp $ */ -#ifndef __COLORSPACE_H__ -#define __COLORSPACE_H__ +#ifndef COLORSPACE_H +#define COLORSPACE_H #include "array2d.h" @@ -86,4 +86,4 @@ } -#endif // __COLORSPACE_H__ +#endif // COLORSPACE_H diff -Nru luminance-2.2.1/src/Libpfs/domio.h luminance-2.3.0/src/Libpfs/domio.h --- luminance-2.2.1/src/Libpfs/domio.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Libpfs/domio.h 2012-07-01 09:10:50.000000000 +0000 @@ -25,8 +25,8 @@ * @author Davide Anastasia */ -#ifndef __DOMIO_H__ -#define __DOMIO_H__ +#ifndef DOMIO_H +#define DOMIO_H #include "frame.h" @@ -92,7 +92,7 @@ } -#endif // __DOMIO_H__ +#endif // DOMIO_H diff -Nru luminance-2.2.1/src/Libpfs/frame.h luminance-2.3.0/src/Libpfs/frame.h --- luminance-2.2.1/src/Libpfs/frame.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Libpfs/frame.h 2012-07-01 09:10:50.000000000 +0000 @@ -26,8 +26,8 @@ * Frame definition split from pfs.cpp */ -#ifndef __PFS_FRAME_H__ -#define __PFS_FRAME_H__ +#ifndef PFS_FRAME_H +#define PFS_FRAME_H #include @@ -175,4 +175,4 @@ }; } -#endif // __FRAME_H__ +#endif // PFS_FRAME_H diff -Nru luminance-2.2.1/src/Libpfs/tag.h luminance-2.3.0/src/Libpfs/tag.h --- luminance-2.2.1/src/Libpfs/tag.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Libpfs/tag.h 2012-07-01 09:10:50.000000000 +0000 @@ -25,8 +25,8 @@ * @author Davide Anastasia */ -#ifndef __PFS_TAG_H__ -#define __PFS_TAG_H__ +#ifndef PFS_TAG_H +#define PFS_TAG_H #include #include @@ -177,6 +177,6 @@ } -#endif // __PFS_TAG_H__ +#endif // PFS_TAG_H diff -Nru luminance-2.2.1/src/Libpfs/vex.cpp luminance-2.3.0/src/Libpfs/vex.cpp --- luminance-2.2.1/src/Libpfs/vex.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Libpfs/vex.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -37,7 +37,7 @@ void VEX_vsub(const float* A, const float* B, float* C, const int N) { -#ifdef __USE_SSE__ +#ifdef LUMINANCE_USE_SSE __m128 a, b, c; const int LOOP1 = (N >> 4); @@ -93,11 +93,11 @@ #endif } -void VEX_vsubs(const float* A, const float val, const float* B, float* C, const int N) +void VEX_vsubs(const float* A, const float premultiplier, const float* B, float* C, const int N) { -#ifdef __USE_SSE__ +#ifdef LUMINANCE_USE_SSE __m128 a, b, c; - const __m128 __val = _mm_set1_ps(val); + const __m128 val = _mm_set1_ps(premultiplier); const int LOOP1 = (N >> 4); const int ELEMS_LOOP1 = (LOOP1 << 4); @@ -112,25 +112,25 @@ a = _mm_load_ps(&A[l]); b = _mm_load_ps(&B[l]); - b = _mm_mul_ps(b, __val); + b = _mm_mul_ps(b, val); c = _mm_sub_ps(a, b); _mm_store_ps(&C[l], c); a = _mm_load_ps(&A[l+4]); b = _mm_load_ps(&B[l+4]); - b = _mm_mul_ps(b, __val); + b = _mm_mul_ps(b, val); c = _mm_sub_ps(a, b); _mm_store_ps(&C[l+4], c); a = _mm_load_ps(&A[l+8]); b = _mm_load_ps(&B[l+8]); - b = _mm_mul_ps(b, __val); + b = _mm_mul_ps(b, val); c = _mm_sub_ps(a, b); _mm_store_ps(&C[l+8], c); a = _mm_load_ps(&A[l+12]); b = _mm_load_ps(&B[l+12]); - b = _mm_mul_ps(b, __val); + b = _mm_mul_ps(b, val); c = _mm_sub_ps(a, b); _mm_store_ps(&C[l+12], c); } @@ -143,7 +143,7 @@ { a = _mm_load_ss(&pA[l]); b = _mm_load_ss(&pB[l]); - b = _mm_mul_ss(b, __val); + b = _mm_mul_ss(b, val); c = _mm_sub_ss(a, b); _mm_store_ss(&pC[l], c); } @@ -152,14 +152,14 @@ #pragma omp parallel for for (int idx = 0; idx < N; ++idx ) { - C[idx] = A[idx] - val * B[idx]; + C[idx] = A[idx] - premultiplier * B[idx]; } #endif } void VEX_vadd(const float* A, const float* B, float* C, const int N) { -#ifdef __USE_SSE__ +#ifdef LUMINANCE_USE_SSE __m128 a, b, c; const int LOOP1 = (N >> 4); @@ -215,10 +215,10 @@ #endif } -void VEX_vadds(const float* A, const float val, const float* B, float* C, const int N) +void VEX_vadds(const float* A, const float premultiplier, const float* B, float* C, const int N) { -#ifdef __USE_SSE__ - const __m128 __val = _mm_set1_ps(val); +#ifdef LUMINANCE_USE_SSE + const __m128 val = _mm_set1_ps(premultiplier); __m128 a, b, c; const int LOOP1 = (N >> 4); @@ -234,25 +234,25 @@ a = _mm_load_ps(&A[l]); b = _mm_load_ps(&B[l]); - b = _mm_mul_ps(b, __val); + b = _mm_mul_ps(b, val); c = _mm_add_ps(a, b); _mm_store_ps(&C[l], c); a = _mm_load_ps(&A[l+4]); b = _mm_load_ps(&B[l+4]); - b = _mm_mul_ps(b, __val); + b = _mm_mul_ps(b, val); c = _mm_add_ps(a, b); _mm_store_ps(&C[l+4], c); a = _mm_load_ps(&A[l+8]); b = _mm_load_ps(&B[l+8]); - b = _mm_mul_ps(b, __val); + b = _mm_mul_ps(b, val); c = _mm_add_ps(a, b); _mm_store_ps(&C[l+8], c); a = _mm_load_ps(&A[l+12]); b = _mm_load_ps(&B[l+12]); - b = _mm_mul_ps(b, __val); + b = _mm_mul_ps(b, val); c = _mm_add_ps(a, b); _mm_store_ps(&C[l+12], c); } @@ -265,7 +265,7 @@ { a = _mm_load_ss(&pA[l]); b = _mm_load_ss(&pB[l]); - b = _mm_mul_ss(b, __val); + b = _mm_mul_ss(b, val); c = _mm_add_ss(a, b); _mm_store_ss(&pC[l], c); } @@ -274,15 +274,15 @@ #pragma omp parallel for for (int idx = 0; idx < N; ++idx ) { - C[idx] = A[idx] + val * B[idx]; + C[idx] = A[idx] + premultiplier * B[idx]; } #endif } -void VEX_vsmul(const float* I, const float val, float* O, const int N) +void VEX_vsmul(const float* I, const float premultiplier, float* O, const int N) { -#ifdef __USE_SSE__ - const __m128 __val = _mm_set1_ps(val); +#ifdef LUMINANCE_USE_SSE + const __m128 val = _mm_set1_ps(premultiplier); __m128 t; const int LOOP1 = (N >> 4); @@ -296,19 +296,19 @@ PREFETCH_T0(&O[l], FETCH_DISTANCE); t = _mm_load_ps(&I[l]); - t = _mm_mul_ps(t, __val); + t = _mm_mul_ps(t, val); _mm_store_ps(&O[l], t); t = _mm_load_ps(&I[l+4]); - t = _mm_mul_ps(t, __val); + t = _mm_mul_ps(t, val); _mm_store_ps(&O[l+4], t); t = _mm_load_ps(&I[l+8]); - t = _mm_mul_ps(t, __val); + t = _mm_mul_ps(t, val); _mm_store_ps(&O[l+8], t); t = _mm_load_ps(&I[l+12]); - t = _mm_mul_ps(t, __val); + t = _mm_mul_ps(t, val); _mm_store_ps(&O[l+12], t); } @@ -318,7 +318,7 @@ for (int l = 0; l < LOOP2; l++) { t = _mm_load_ss(&pI[l]); - t = _mm_mul_ss(t, __val); + t = _mm_mul_ss(t, val); _mm_store_ss(&pO[l], t); } #else @@ -326,14 +326,14 @@ #pragma omp parallel for for(int idx = 0; idx < N; ++idx) { - O[idx] = val * I[idx]; + O[idx] = premultiplier * I[idx]; } #endif } void VEX_vmul(const float* A, const float* B, float* C, const int N) { -#ifdef __USE_SSE__ +#ifdef LUMINANCE_USE_SSE __m128 a, b; const int LOOP1 = (N >> 4); @@ -391,7 +391,7 @@ void VEX_vdiv(const float* A, const float* B, float* C, const int N) { -#ifdef __USE_SSE__ +#ifdef LUMINANCE_USE_SSE __m128 a, b; const int LOOP1 = (N >> 4); @@ -449,7 +449,7 @@ void VEX_vcopy(const float* I, float* O, const int N) { -#ifdef __USE_SSE__ +#ifdef LUMINANCE_USE_SSE const int LOOP1 = (N >> 4); const int ELEMS_LOOP1 = (LOOP1 << 4); const int LOOP2 = (N - ELEMS_LOOP1); @@ -484,67 +484,67 @@ #endif } -void VEX_vset(float* IO, const float val, const int N) +void VEX_vset(float* IO, const float premultiplier, const int N) { -#ifdef __USE_SSE__ +#ifdef LUMINANCE_USE_SSE const int LOOP1 = (N >> 4); const int ELEMS_LOOP1 = (LOOP1 << 4); const int LOOP2 = (N - ELEMS_LOOP1); - const __m128 __val = _mm_set1_ps(val); + const __m128 val = _mm_set1_ps(premultiplier); #pragma omp parallel for schedule(static, 5120) for (int l = 0; l < ELEMS_LOOP1; l+=16) { PREFETCH_T0(&IO[l], FETCH_DISTANCE); - _mm_store_ps(&IO[l], __val); - _mm_store_ps(&IO[l+4], __val); - _mm_store_ps(&IO[l+8], __val); - _mm_store_ps(&IO[l+12], __val); + _mm_store_ps(&IO[l], val); + _mm_store_ps(&IO[l+4], val); + _mm_store_ps(&IO[l+8], val); + _mm_store_ps(&IO[l+12], val); } float* pIO = &IO[ELEMS_LOOP1]; for (int l = 0; l < LOOP2; l++) { - _mm_store_ss(&pIO[l], __val); + _mm_store_ss(&pIO[l], val); } #else // plain code #pragma omp parallel for for(int idx = 0; idx < N; ++idx) { - IO[idx] = val; + IO[idx] = premultiplier; } #endif } void VEX_vreset(float* IO, const int N) { -#ifdef __USE_SSE__ +#ifdef LUMINANCE_USE_SSE const int LOOP1 = (N >> 4); const int ELEMS_LOOP1 = (LOOP1 << 4); const int LOOP2 = (N - ELEMS_LOOP1); - const __m128 _zero = _mm_setzero_ps(); + const __m128 zero = _mm_setzero_ps(); #pragma omp parallel for schedule(static, 5120) for (int l = 0; l < ELEMS_LOOP1; l+=16) { PREFETCH_T0(&IO[l], FETCH_DISTANCE); - _mm_store_ps(&IO[l], _zero); - _mm_store_ps(&IO[l+4], _zero); - _mm_store_ps(&IO[l+8], _zero); - _mm_store_ps(&IO[l+12], _zero); + _mm_store_ps(&IO[l], zero); + _mm_store_ps(&IO[l+4], zero); + _mm_store_ps(&IO[l+8], zero); + _mm_store_ps(&IO[l+12], zero); } float* pIO = &IO[ELEMS_LOOP1]; for (int l = 0; l < LOOP2; l++) { - _mm_store_ss(&pIO[l], _zero); + _mm_store_ss(&pIO[l], zero); } #else // plain code @@ -567,7 +567,7 @@ val = t_val; } -#ifdef __USE_SSE__ +#ifdef LUMINANCE_USE_SSE /* Implementation lifted from http://jrfonseca.blogspot.com/2008/09/fast-sse2-pow-tables-or-polynomials.html */ @@ -651,7 +651,7 @@ v4sf _mm_pow_ps(v4sf x, v4sf y) { - return _mm_exp2_ps(_mm_log2_ps(x) * y); + return _mm_exp2_ps(_mm_log2_ps(x) * y); } -#endif // __USE_SSE__ +#endif // LUMINANCE_USE_SSE diff -Nru luminance-2.2.1/src/Libpfs/vex.h luminance-2.3.0/src/Libpfs/vex.h --- luminance-2.2.1/src/Libpfs/vex.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Libpfs/vex.h 2012-07-01 09:10:50.000000000 +0000 @@ -22,15 +22,15 @@ * */ -#ifndef __VEX_H__ -#define __VEX_H__ +#ifndef VEX_H +#define VEX_H #ifdef __SSE__ //#if __ppc__ || __ppc7400__ || __ppc64__ || __ppc970__ //#include #if __i386__ || __x86_64__ -#define __USE_SSE__ +#define LUMINANCE_USE_SSE #include #include #include @@ -46,12 +46,12 @@ // C[i] = A[i] - B[i] void VEX_vsub(const float* A, const float* B, float* C, const int N); // C[i] = A[i] - val * B[i] -void VEX_vsubs(const float* A, const float val, const float* B, float* C, const int N); +void VEX_vsubs(const float* A, const float premultiplier, const float* B, float* C, const int N); // C[i] = A[i] + B[i] void VEX_vadd(const float* A, const float* B, float* C, const int N); // C[i] = A[i] + val * B[i] -void VEX_vadds(const float* A, const float val, const float* B, float* C, const int N); +void VEX_vadds(const float* A, const float premultiplier, const float* B, float* C, const int N); // C[i] = A[i] * B[i] void VEX_vmul(const float* A, const float* B, float* C, const int N); @@ -64,8 +64,8 @@ // O[i] = i[i] void VEX_vcopy(const float* I, float* O, const int N); -// IO[i] = val -void VEX_vset(float* IO, const float val, const int N); +// IO[i] = value +void VEX_vset(float* IO, const float value, const int N); // IO[i] = 0.0f void VEX_vreset(float* IO, const int N); @@ -74,7 +74,7 @@ //void mm_3x3(float i1, float i2, float i3, float &o1, float &o2, float &o3, const float mat[3][3]); -#ifdef __USE_SSE__ +#ifdef LUMINANCE_USE_SSE typedef __v4sf v4sf; v4sf _mm_log2_ps(v4sf); v4sf _mm_exp2_ps(v4sf); diff -Nru luminance-2.2.1/src/MainCli/CMakeLists.txt luminance-2.3.0/src/MainCli/CMakeLists.txt --- luminance-2.2.1/src/MainCli/CMakeLists.txt 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/MainCli/CMakeLists.txt 2012-07-01 09:10:50.000000000 +0000 @@ -1,13 +1,15 @@ SET(FILES_H ${CMAKE_CURRENT_SOURCE_DIR}/commandline.h) +SET(FILES_HPP +${CMAKE_CURRENT_SOURCE_DIR}/ezETAProgressBar.hpp) SET(FILES_CPP ${CMAKE_CURRENT_SOURCE_DIR}/commandline.cpp ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp) QT4_WRAP_CPP(FILES_MOC ${FILES_H}) -ADD_LIBRARY(main_cli ${FILES_H} ${FILES_CPP} ${FILES_MOC}) +ADD_LIBRARY(main_cli ${FILES_H} ${FILES_HPP} ${FILES_CPP} ${FILES_MOC}) SET(FILES_TO_TRANSLATE ${FILES_TO_TRANSLATE} ${FILES_CPP} ${FILES_H} PARENT_SCOPE) SET(LUMINANCE_MODULES_CLI ${LUMINANCE_MODULES_CLI} main_cli PARENT_SCOPE) diff -Nru luminance-2.2.1/src/MainCli/commandline.cpp luminance-2.3.0/src/MainCli/commandline.cpp --- luminance-2.2.1/src/MainCli/commandline.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/MainCli/commandline.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -51,8 +51,11 @@ void printErrorAndExit(const QString& error_str) { #if defined(_MSC_VER) - _setmode(_fileno(stderr), _O_U16TEXT); + // if the filemode isn't restored afterwards, a normal std::cout segfaults + int oldMode = _setmode(_fileno(stderr), _O_U16TEXT); std::wcerr << qPrintable(error_str) << std::endl; + if (oldMode >= 0) + _setmode(_fileno(stderr), oldMode); #else std::cerr << qPrintable(error_str) << std::endl; #endif @@ -64,8 +67,11 @@ if ( verbose ) { #if defined(_MSC_VER) - _setmode(_fileno(stdout), _O_U16TEXT); + // if the filemode isn't restored afterwards, a normal std::cout segfaults + int oldMode = _setmode(_fileno(stdout), _O_U16TEXT); std::wcout << qPrintable(str) << std::endl; + if (oldMode >= 0) + _setmode(_fileno(stdout), oldMode); #else std::cout << qPrintable(str) << std::endl; #endif @@ -140,6 +146,7 @@ { "tmo", required_argument, NULL, 't' }, { "tmoptions", required_argument, NULL, 'p' }, { "output", required_argument, NULL, 'o' }, + { "quality", required_argument, NULL, 'q' }, { NULL, 0, NULL, 0 } }; @@ -149,7 +156,8 @@ operationMode(UNKNOWN_MODE), alignMode(NO_ALIGN), tmopts(TMOptionsOperations::getDefaultTMOptions()), - verbose(false) + verbose(false), + quality(100) { hdrcreationconfig.weights = TRIANGULAR; hdrcreationconfig.response_curve = LINEAR; @@ -169,7 +177,7 @@ // cliOptions += cmdLineOptions[i].val; // } - while( (c = getopt_long_only (argc, argv, ":hva:e:c:l:s:g:r:t:p:o:u", cmdLineOptions, &optionIndex)) != -1 ) + while( (c = getopt_long_only (argc, argv, ":hva:e:c:l:s:g:r:t:p:o:u:q:", cmdLineOptions, &optionIndex)) != -1 ) { switch ( c ) { @@ -398,6 +406,11 @@ case 'o': saveLdrFilename=QString(optarg); break; + case 'q': + quality = QString(optarg).toInt(); + if (quality < 0 || quality > 100) + printErrorAndExit(tr("Error: Quality must be in the range [0-100].")); + break; case '?': printErrorAndExit(tr("Error: Unknown option %1.").arg(optopt)); case ':': @@ -451,10 +464,15 @@ printIfVerbose(QObject::tr("Using %1 threads.").arg(luminance_options.getNumThreads()), verbose); } - hdrCreationManager.reset( new HdrCreationManager() ); + hdrCreationManager.reset( new HdrCreationManager(true) ); connect(hdrCreationManager.data(), SIGNAL(finishedLoadingInputFiles(QStringList)), this, SLOT(finishedLoadingInputFiles(QStringList))); - connect(hdrCreationManager.data(), SIGNAL(finishedAligning()), this, SLOT(createHDR())); + connect(hdrCreationManager.data(), SIGNAL(finishedAligning(int)), this, SLOT(createHDR(int))); connect(hdrCreationManager.data(), SIGNAL(ais_failed(QProcess::ProcessError)), this, SLOT(ais_failed(QProcess::ProcessError))); + connect(hdrCreationManager.data(), SIGNAL(errorWhileLoading(QString)),this, SLOT(errorWhileLoading(QString))); + //connect(hdrCreationManager.data(), SIGNAL(maximumValue(int)),this, SLOT(setProgressBar(int))); + //connect(hdrCreationManager.data(), SIGNAL(nextstep(int)),this, SLOT(updateProgressBar(int))); + connect(hdrCreationManager.data(), SIGNAL(aisDataReady(QByteArray)),this, SLOT(readData(QByteArray))); + hdrCreationManager->setConfig(hdrcreationconfig); hdrCreationManager->setFileList(inputFiles); hdrCreationManager->loadInputFiles(); @@ -481,7 +499,7 @@ { if (filesLackingExif.size()!=0 && ev.isEmpty()) { - printErrorAndExit(tr("Error: Exif data missing in images and EV values not specifed on the commandline, bailing out.")); + printErrorAndExit(tr("Error: Exif data missing in images and EV values not specified on the commandline, bailing out.")); } if (!ev.isEmpty()) { @@ -501,7 +519,7 @@ } else if (alignMode == NO_ALIGN) { - createHDR(); + createHDR(0); } } @@ -510,8 +528,10 @@ printErrorAndExit( tr("Failed executing align_image_stack")); } -void CommandLineInterfaceManager::createHDR() +void CommandLineInterfaceManager::createHDR(int errorcode) { + if (errorcode != 0) + printIfVerbose( tr("Failed aligning images.") , verbose); hdrCreationManager->removeTempFiles(); printIfVerbose( tr("Creating (in memory) the HDR.") , verbose); @@ -560,13 +580,15 @@ // Build TMWorker TMWorker tm_worker; + connect(&tm_worker, SIGNAL(tonemapSetMaximum(int)), this, SLOT(setProgressBar(int))); + connect(&tm_worker, SIGNAL(tonemapSetValue(int)), this, SLOT(updateProgressBar(int))); // Build a new TM frame // The scoped pointer will free the memory automatically later on QScopedPointer tm_frame( tm_worker.computeTonemap(HDR.data(), tmopts.data()) ); // Create an ad-hoc IOWorker to save the file - if ( IOWorker().write_ldr_frame(tm_frame.data(), saveLdrFilename, 100, tmopts.data()) ) + if ( IOWorker().write_ldr_frame(tm_frame.data(), saveLdrFilename, quality, tmopts.data()) ) { // File save successful printIfVerbose( tr("Image %1 saved successfully").arg(saveLdrFilename) , verbose); @@ -586,7 +608,9 @@ } } - +void CommandLineInterfaceManager::errorWhileLoading(QString errormessage) { + printErrorAndExit( tr("Failed loading images")); +} void CommandLineInterfaceManager::printHelp(char * progname) { @@ -619,7 +643,48 @@ "\t\t" + tr("brightness=VALUE:chroma=VALUE:lightness=VALUE (for reinhard05)") + "\n" + "\t\t" + tr("(default is contrast=0.3:equalization=false:saturation=1.8, see also -o)") + "\n" + "\t" + tr("-o --output LDR_FILE File name you want to save your tone mapped LDR to.") + "\n" + + "\t" + tr("-q --quality VALUE Quality of the saved tone mapped file (0-100).") + "\n" + "\t" + tr(" (No tonemapping is performed unless -o is specified).") + "\n\n" + tr("You must either load an existing HDR file (via the -l option) or specify INPUTFILES to create a new HDR.\n"); printErrorAndExit(help); } + +void CommandLineInterfaceManager::setProgressBar(int max) +{ + maximum = max; + progressBar.reset(); + progressBar.n = max; + std::cout << std::endl; + started = true; +} + +void CommandLineInterfaceManager::updateProgressBar(int value) +{ + if (verbose) { + if (value < 0) return; + if (value < oldValue) { + //progressBar.reset(); + //progressBar.n = maximum; + //progressBar.start(); + progressBar.cur = value; + progressBar.setPct( ((float)value)/maximum ); + } + if (started) { + started = false; + progressBar.start(); + } + for (int i = 0; i < value - oldValue; i++) + ++progressBar; + oldValue = value; + //if (value == progressBar.n) { + // std::cout << std::endl; + //} + } +} + +void CommandLineInterfaceManager::readData(QByteArray data) +{ + if (verbose) + std::cout << data.constData() << std::endl; +} + diff -Nru luminance-2.2.1/src/MainCli/commandline.h luminance-2.3.0/src/MainCli/commandline.h --- luminance-2.2.1/src/MainCli/commandline.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/MainCli/commandline.h 2012-07-01 09:10:50.000000000 +0000 @@ -36,6 +36,7 @@ #include "Core/TonemappingOptions.h" #include "HdrCreation/HdrCreationManager.h" #include "Libpfs/frame.h" +#include "ezETAProgressBar.hpp" namespace pfs { class Frame; @@ -76,15 +77,24 @@ config_triple hdrcreationconfig; QString loadHdrFilename; QStringList inputFiles; + ez::ezETAProgressBar progressBar; + int oldValue; + int maximum; + bool started; + int quality; void startTonemap(); private slots: void finishedLoadingInputFiles(QStringList); void ais_failed(QProcess::ProcessError); - void createHDR(); + void errorWhileLoading(QString); + void createHDR(int); void parseArgs(); void execCommandLineParamsSlot(); + void setProgressBar(int); + void updateProgressBar(int); + void readData(QByteArray); signals: void finishedParsing(); diff -Nru luminance-2.2.1/src/MainCli/ezETAProgressBar.hpp luminance-2.3.0/src/MainCli/ezETAProgressBar.hpp --- luminance-2.2.1/src/MainCli/ezETAProgressBar.hpp 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/src/MainCli/ezETAProgressBar.hpp 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,175 @@ +/* +This file is part of ezProgressBar. + +ezProgressBar is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +ezProgressBar 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 Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with ezProgressBar. If not, see . + +Copyright (C) 2011 Remik Ziemlinski +*/ +/* +CHANGELOG + +v0.0.0 20110502 rsz Created. +V1.0.0 20110522 rsz Extended to show eta with growing bar. +v2.0.0 20110525 rsz Added time elapsed. +v2.0.1 20111006 rsz Added default constructor value. +*/ + +#ifndef EZ_ETAPROGRESSBAR_H +#define EZ_ETAPROGRESSBAR_H + +#include +#include +#include +#include +#include + +#ifdef WIN32 +#define _WINSOCKAPI_ // stops windows.h including winsock.h +#include +#else +#include +#include +#endif + +namespace ez { +// One-line refreshing progress bar inspired by wget that shows ETA (time remaining). +// 90% [################################################## ] ETA 12d 23h 56s +class ezETAProgressBar { +public: + ezETAProgressBar(unsigned int p_n=0) : n(p_n), pct(0), cur(0), width(80) {} + void reset() { pct = 0; cur = 0; } + void start() { + #ifdef WIN32 + assert(QueryPerformanceFrequency(&g_llFrequency) != 0); + #endif + startTime = osQueryPerfomance(); + setPct(0); + } + + void operator++() { + if (cur >= n) return; + ++cur; + + setPct( ((float)cur)/n ); + }; + + // http://stackoverflow.com/questions/3283804/c-get-milliseconds-since-some-date + long long osQueryPerfomance() { + #ifdef WIN32 + LARGE_INTEGER llPerf = {0}; + QueryPerformanceCounter(&llPerf); + return llPerf.QuadPart * 1000ll / ( g_llFrequency.QuadPart / 1000ll); + #else + struct timeval stTimeVal; + gettimeofday(&stTimeVal, NULL); + return stTimeVal.tv_sec * 1000000ll + stTimeVal.tv_usec; + #endif + } + + std::string secondsToString(long long t) { + int days = t/86400; + long long sec = t-days*86400; + int hours = sec/3600; + sec -= hours*3600; + int mins = sec/60; + sec -= mins*60; + char tmp[8]; + std::string out; + + if (days) { + sprintf(tmp, "%dd ", days); + out += tmp; + } + + if (hours >= 1) { + sprintf(tmp, "%dh ", hours); + out += tmp; + } + + if (mins >= 1) { + sprintf(tmp, "%dm ", mins); + out += tmp; + } + + if (sec >= 1) { + sprintf(tmp, "%ds", (int)sec); + out += tmp; + } + + if (out.empty()) + out = "0s"; + + return out; + } + + // Set 0.0-1.0, where 1.0 equals 100%. + void setPct(float Pct) { + endTime = osQueryPerfomance(); + char pctstr[5]; + sprintf(pctstr, "%3d%%", (int)(100*Pct)); + // Compute how many tics we can display. + int nticsMax = (width-27); + int ntics = (int)(nticsMax*Pct); + std::string out(pctstr); + out.append(" ["); + out.append(ntics,'#'); + out.append(nticsMax-ntics,' '); + out.append("] "); + out.append((Pct<1.0) ? "ETA " : "in "); + // Seconds. + long long dt = (long long)((endTime-startTime)/1000000.0); + std::string tstr; + if (Pct >= 1.0) { + // Print overall time and newline. + tstr = secondsToString(dt); + out.append(tstr); + if (out.size() < width) + out.append(width-out.size(),' '); + + out.append("\n"); + std::cout << out; + return; + } else { + float eta=999999.; + if (Pct > 0.0) + eta = dt*(1.0-Pct)/Pct; + + if (eta > 604800.0) + out.append("> 1 week"); + else { + tstr = secondsToString((long long)eta); + out.append(tstr); + } + } + + // Pad end with spaces to overwrite previous string that may have been longer. + if (out.size() < width) + out.append(width-out.size(),' '); + + out.append("\r"); + std::cout << out; + std::cout.flush(); + } + + unsigned int n; + unsigned short pct; // Stored as 0-1000, so 2.5% is encoded as 25. + unsigned int cur; + unsigned char width; // How many chars the entire line can be. + long long startTime, endTime; + #ifdef WIN32 + LARGE_INTEGER g_llFrequency; + #endif +}; +} +#endif // EZ_ETAPROGRESSBAR_H diff -Nru luminance-2.2.1/src/MainGui/main.cpp luminance-2.3.0/src/MainGui/main.cpp --- luminance-2.2.1/src/MainGui/main.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/MainGui/main.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -55,12 +55,41 @@ } } + +#ifdef WIN32 +inline void customMessageHandler(QtMsgType type, const char *msg) +{ + QString txt; + switch (type) { + case QtDebugMsg: + txt = QString("Debug: %1").arg(msg); + break; + case QtWarningMsg: + txt = QString("Warning: %1").arg(msg); + break; + case QtCriticalMsg: + txt = QString("Critical: %1").arg(msg); + break; + case QtFatalMsg: + txt = QString("Fatal: %1").arg(msg); + abort(); + } + + QFile outFile("debuglog.txt"); + outFile.open(QIODevice::WriteOnly | QIODevice::Append); + QTextStream ts(&outFile); + ts << txt << endl; +} +#endif + int main( int argc, char ** argv ) { Q_INIT_RESOURCE(icons); QApplication application( argc, argv ); #ifdef WIN32 + //qInstallMsgHandler(customMessageHandler); + bool found_DLL = false; foreach (QString path, application.libraryPaths()) { diff -Nru luminance-2.2.1/src/MainWindow/DnDOption.cpp luminance-2.3.0/src/MainWindow/DnDOption.cpp --- luminance-2.2.1/src/MainWindow/DnDOption.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/MainWindow/DnDOption.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -26,18 +26,12 @@ #include "MainWindow/DnDOption.h" #include "ui_DnDOption.h" -DnDOptionDialog::DnDOptionDialog(QWidget *p, QStringList files): +DnDOptionDialog::DnDOptionDialog(QWidget *p, QStringList files, bool areAllHDRs, bool areAllLDRs): QDialog(p), ui(new Ui::DnDOption) { ui->setupUi(this); - result = -1; - bool areAllHDRs = true; - bool areAllLDRs = true; - foreach (QString file, files) { - areAllHDRs = areAllHDRs && matchesHdrFilename(file); - areAllLDRs = areAllLDRs && matchesLdrFilename(file); - } + result = ACTION_INVALID; ui->btnCreateNewHDR->setEnabled(areAllLDRs); ui->btnOpenHDR->setEnabled(areAllHDRs); if (!(areAllHDRs || areAllLDRs)) @@ -54,11 +48,27 @@ } void DnDOptionDialog::on_btnCreateNewHDR_clicked() { - result = 1; + result = ACTION_NEW_HDR; QDialog::accept(); } void DnDOptionDialog::on_btnOpenHDR_clicked() { - result = 2; + result = ACTION_OPEN_HDR; QDialog::accept(); } + +int DnDOptionDialog::showDndDialog(QWidget *parent, QStringList files) { + bool areAllHDRs = true; + bool areAllLDRs = true; + foreach (QString file, files) { + areAllHDRs = areAllHDRs && matchesHdrFilename(file); + areAllLDRs = areAllLDRs && matchesLdrFilename(file); + } + if (areAllHDRs && files.size() == 1) + return ACTION_OPEN_HDR; // just open the files without dialog + else { + DnDOptionDialog dndOption(parent, files, areAllHDRs, areAllLDRs); + dndOption.exec(); + return dndOption.result; + } +} diff -Nru luminance-2.2.1/src/MainWindow/DnDOption.h luminance-2.3.0/src/MainWindow/DnDOption.h --- luminance-2.2.1/src/MainWindow/DnDOption.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/MainWindow/DnDOption.h 2012-07-01 09:10:50.000000000 +0000 @@ -34,18 +34,24 @@ class DnDOptionDialog : public QDialog { Q_OBJECT + public: - DnDOptionDialog(QWidget *parent, QStringList files); + static const int ACTION_INVALID = 0; + static const int ACTION_NEW_HDR = 1; + static const int ACTION_OPEN_HDR = 2; + + static int showDndDialog(QWidget *parent, QStringList files); // 1=newHDR, 2=openHDR + + DnDOptionDialog(QWidget *parent, QStringList files, bool allHdrs, bool allLdrs); ~DnDOptionDialog(); protected slots: void on_btnCancel_clicked(); void on_btnCreateNewHDR_clicked(); void on_btnOpenHDR_clicked(); -public: - int result; // 1=newHDR, 2=openHDR private: QScopedPointer ui; + int result; // 1=newHDR, 2=openHDR }; #endif diff -Nru luminance-2.2.1/src/MainWindow/DnDOption.ui luminance-2.3.0/src/MainWindow/DnDOption.ui --- luminance-2.2.1/src/MainWindow/DnDOption.ui 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/MainWindow/DnDOption.ui 2012-07-01 09:10:50.000000000 +0000 @@ -17,7 +17,7 @@ Drag and Drop - + :/new/prefix1/images/draganddrop.png:/new/prefix1/images/draganddrop.png @@ -51,7 +51,7 @@ &Open - + :/new/prefix1/images/fileopen.png:/new/prefix1/images/fileopen.png @@ -71,7 +71,7 @@ &New - + :/new/prefix1/images/newfile.png:/new/prefix1/images/newfile.png @@ -91,7 +91,7 @@ &Cancel - + :/new/prefix1/images/cancel.png:/new/prefix1/images/cancel.png @@ -108,7 +108,7 @@ - + diff -Nru luminance-2.2.1/src/MainWindow/MainWindow.cpp luminance-2.3.0/src/MainWindow/MainWindow.cpp --- luminance-2.2.1/src/MainWindow/MainWindow.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/MainWindow/MainWindow.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -55,6 +55,7 @@ #include "Common/archs.h" #include "Common/config.h" #include "Common/global.h" +#include "OsIntegration/osintegration.h" #include "TonemappingPanel/TonemappingWarnDialog.h" #include "BatchHDR/BatchHDRDialog.h" #include "BatchTM/BatchTMDialog.h" @@ -153,7 +154,6 @@ MainWindow::MainWindow(pfs::Frame* curr_frame, QString new_file, bool needSaving, QWidget *parent): QMainWindow(parent), m_Ui(new Ui::MainWindow) - { init(); @@ -186,6 +186,8 @@ void MainWindow::init() { + OsIntegration::getInstance().init(this); + sm_NumMainWindows++; helpBrowser = NULL; @@ -280,6 +282,7 @@ connect(m_tabwidget, SIGNAL(tabCloseRequested(int)), this, SLOT(removeTab(int))); connect(m_tabwidget, SIGNAL(currentChanged(int)), this, SLOT(updateActions(int))); + connect(m_tabwidget, SIGNAL(currentChanged(int)), this, SLOT(updateSoftProofing(int))); connect(tmPanel, SIGNAL(startTonemapping(TonemappingOptions*)), this, SLOT(tonemapImage(TonemappingOptions*))); connect(this, SIGNAL(updatedHDR(pfs::Frame*)), tmPanel, SLOT(updatedHDR(pfs::Frame*))); connect(this, SIGNAL(destroyed()), previewPanel, SLOT(deleteLater())); @@ -310,7 +313,6 @@ toolBarOptsGroup->addAction(m_Ui->actionText_Only); m_Ui->menuToolbars->addAction(m_Ui->toolBar->toggleViewAction()); - connect(m_Ui->actionLock, SIGNAL(toggled(bool)), this, SLOT(lockViewers(bool))); connect(m_Ui->actionText_Under_Icons,SIGNAL(triggered()),this,SLOT(Text_Under_Icons())); connect(m_Ui->actionIcons_Only,SIGNAL(triggered()),this,SLOT(Icons_Only())); connect(m_Ui->actionText_Alongside_Icons,SIGNAL(triggered()),this,SLOT(Text_Alongside_Icons())); @@ -321,61 +323,23 @@ { // About(s) connect(m_Ui->actionAbout_Qt,SIGNAL(triggered()),qApp,SLOT(aboutQt())); - connect(m_Ui->actionAbout_Luminance,SIGNAL(triggered()),this,SLOT(aboutLuminance())); - connect(m_Ui->actionDonate, SIGNAL(activated()), this, SLOT(showDonationsPage())); - connect(m_Ui->OptionsAction,SIGNAL(triggered()),this,SLOT(preferences_called())); - connect(m_Ui->documentationAction,SIGNAL(triggered()),this,SLOT(openDocumentation())); connect(m_Ui->actionWhat_s_This,SIGNAL(triggered()),this,SLOT(enterWhatsThis())); // I/O - connect(m_Ui->fileNewAction, SIGNAL(triggered()), this, SLOT(fileNewViaWizard())); - connect(m_Ui->fileOpenAction, SIGNAL(triggered()), this, SLOT(fileOpen())); - connect(m_Ui->fileSaveAsAction, SIGNAL(triggered()), this, SLOT(fileSaveAs())); - connect(m_Ui->fileSaveAllAction, SIGNAL(triggered()), this, SLOT(fileSaveAll())); connect(m_Ui->fileExitAction, SIGNAL(triggered()), this, SLOT(close())); - connect(m_Ui->actionSave_Hdr_Preview, SIGNAL(triggered()), this, SLOT(saveHdrPreview())); - - // HDR Editing - connect(m_Ui->actionResizeHDR, SIGNAL(triggered()), this, SLOT(resize_requested())); - connect(m_Ui->action_Projective_Transformation, SIGNAL(triggered()), this, SLOT(projectiveTransf_requested())); - - // HDR Exposure Control - connect(m_Ui->Low_dynamic_range,SIGNAL(triggered()),this,SLOT(hdr_ldr_exp())); - connect(m_Ui->Fit_to_dynamic_range,SIGNAL(triggered()),this,SLOT(hdr_fit_exp())); - connect(m_Ui->Shrink_dynamic_range,SIGNAL(triggered()),this,SLOT(hdr_shrink_exp())); - connect(m_Ui->Extend_dynamic_range,SIGNAL(triggered()),this,SLOT(hdr_extend_exp())); - connect(m_Ui->Decrease_exposure,SIGNAL(triggered()),this,SLOT(hdr_decrease_exp())); - connect(m_Ui->Increase_exposure,SIGNAL(triggered()),this,SLOT(hdr_increase_exp())); // Crop & Rotation connect(m_Ui->cropToSelectionAction, SIGNAL(triggered()), this, SLOT(cropToSelection())); m_Ui->cropToSelectionAction->setEnabled(false); connect(m_Ui->removeSelectionAction, SIGNAL(triggered()), this, SLOT(disableCrop())); - connect(m_Ui->rotateccw, SIGNAL(triggered()), this, SLOT(rotateccw_requested())); - connect(m_Ui->rotatecw, SIGNAL(triggered()), this, SLOT(rotatecw_requested())); - - // Zoom - connect(m_Ui->zoomInAct,SIGNAL(triggered()),this,SLOT(viewerZoomIn())); - connect(m_Ui->zoomOutAct,SIGNAL(triggered()),this,SLOT(viewerZoomOut())); - connect(m_Ui->fitToWindowAct,SIGNAL(triggered()),this,SLOT(viewerFitToWin())); - connect(m_Ui->actionFill_to_Window,SIGNAL(triggered()),this,SLOT(viewerFillToWin())); - connect(m_Ui->normalSizeAct,SIGNAL(triggered()),this,SLOT(viewerOriginalSize())); - - // Tools - connect(m_Ui->Transplant_Exif_Data_action,SIGNAL(triggered()),this,SLOT(transplant_called())); - connect(m_Ui->actionBatch_HDR, SIGNAL(triggered()), this, SLOT(batch_hdr_requested())); - connect(m_Ui->actionBatch_Tone_Mapping, SIGNAL(triggered()), this, SLOT(batch_requested())); connect(m_Ui->menuWindows, SIGNAL(aboutToShow()), this, SLOT(updateWindowMenu())); - connect(m_Ui->actionMinimize, SIGNAL(triggered()), this, SLOT(minimizeMW())); - connect(m_Ui->actionMaximize, SIGNAL(triggered()), this, SLOT(maximizeMW())); - connect(m_Ui->actionBring_All_to_Front, SIGNAL(triggered()), this, SLOT(bringAllMWToFront())); + connect(m_Ui->actionMinimize, SIGNAL(triggered()), this, SLOT(showMinimized())); + connect(m_Ui->actionMaximize, SIGNAL(triggered()), this, SLOT(showMaximized())); connect(m_Ui->actionShowPreviewPanel, SIGNAL(toggled(bool)), this, SLOT(showPreviewPanel(bool))); connect(m_Ui->actionShowPreviewPanel, SIGNAL(toggled(bool)), &luminance_options, SLOT(setPreviewPanelActive(bool))); - connect(m_Ui->actionFix_Histogram,SIGNAL(toggled(bool)),this,SLOT(levelsRequested(bool))); - connect(m_Ui->actionRemove_Tab,SIGNAL(triggered()),this,SLOT(removeCurrentTab())); //recent files initRecentFileActions(); @@ -389,9 +353,6 @@ void MainWindow::createConnections() { - connect(m_Ui->actionShowNext, SIGNAL(triggered()), this, SLOT(activateNextViewer())); - connect(m_Ui->actionShowPrevious, SIGNAL(triggered()), this, SLOT(activatePreviousViewer())); - windowMapper = new QSignalMapper(this); connect(windowMapper, SIGNAL(mapped(QWidget*)), this, SLOT(setActiveMainWindow(QWidget*))); } @@ -423,12 +384,17 @@ } -void MainWindow::showDonationsPage() +void MainWindow::on_actionDonate_triggered() { QDesktopServices::openUrl(QUrl("https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=77BSTWEH7447C")); //davideanastasia } -void MainWindow::fileNewViaWizard(QStringList files) +void MainWindow::on_fileNewAction_triggered() +{ + createNewHdr(QStringList()); // redirect on createNewHdr-method to avoid moc warning +} + +void MainWindow::createNewHdr(QStringList files) { QScopedPointer wizard( new HdrWizard (this, files) ); if (wizard->exec() == QDialog::Accepted) @@ -437,7 +403,7 @@ } } -void MainWindow::fileOpen() +void MainWindow::on_fileOpenAction_triggered() { QString filetypes = tr("All HDR formats "); filetypes += "(*.exr *.hdr *.pic *.tiff *.tif *.pfs *.crw *.cr2 *.nef *.dng *.mrw *.orf *.kdc *.dcr *.arw *.raf *.ptx *.pef *.x3f *.raw *.rw2 *.sr2 *.3fr *.mef *.mos *.erf *.nrw *.srw"; @@ -471,7 +437,7 @@ } } -void MainWindow::fileSaveAll() +void MainWindow::on_fileSaveAllAction_triggered() { if (m_tabwidget->count() <= 0) return; @@ -503,7 +469,7 @@ } } -void MainWindow::fileSaveAs() +void MainWindow::on_fileSaveAsAction_triggered() { if (m_tabwidget->count() <= 0) return; @@ -610,150 +576,77 @@ //QMessageBox::warning(0,"",QObject::tr("Failed to save ") + outfname + "", QMessageBox::Ok, QMessageBox::NoButton); } -void MainWindow::saveHdrPreview() +void MainWindow::on_actionSave_Hdr_Preview_triggered() { if (m_tabwidget->count() <= 0) return; GenericViewer* g_v = (GenericViewer*)m_tabwidget->currentWidget(); - try { - HdrViewer* hdr_v = dynamic_cast(g_v); + if (!g_v->isHDR()) return; + try + { QString ldr_name = QFileInfo(getCurrentHDRName()).baseName(); - QString outfname = getLdrFileNameFromSaveDialog(ldr_name + "_" + hdr_v->getFileNamePostFix() + ".jpg", this); + QString outfname = getLdrFileNameFromSaveDialog(ldr_name + "_" + g_v->getFileNamePostFix() + ".jpg", this); if ( outfname.isEmpty() ) return; QMetaObject::invokeMethod(m_IOWorker, "write_ldr_frame", Qt::QueuedConnection, - Q_ARG(GenericViewer*, hdr_v), + Q_ARG(GenericViewer*, g_v), Q_ARG(QString, outfname), Q_ARG(int, 100)); - } catch (...) + } + catch (...) { return; } } -void MainWindow::updateActionsNoImage() -{ - updateMagnificationButtons(NULL); - - m_Ui->fileSaveAsAction->setEnabled(false); - m_Ui->actionSave_Hdr_Preview->setEnabled(false); - - // Histogram - m_Ui->menuHDR_Histogram->setEnabled(false); - m_Ui->Low_dynamic_range->setEnabled(false); - m_Ui->Fit_to_dynamic_range->setEnabled(false); - m_Ui->Shrink_dynamic_range->setEnabled(false); - m_Ui->Extend_dynamic_range->setEnabled(false); - m_Ui->Decrease_exposure->setEnabled(false); - m_Ui->Increase_exposure->setEnabled(false); - - m_Ui->actionResizeHDR->setEnabled(false); - m_Ui->action_Projective_Transformation->setEnabled(false); - m_Ui->cropToSelectionAction->setEnabled(false); - m_Ui->rotateccw->setEnabled(false); - m_Ui->rotatecw->setEnabled(false); - m_Ui->actionFix_Histogram->setEnabled(false); -} - -void MainWindow::updateActionsLdrImage() -{ - // Read/Save - m_Ui->fileSaveAsAction->setEnabled(true); - m_Ui->actionSave_Hdr_Preview->setEnabled(true); - if (curr_num_ldr_open >= 2) - m_Ui->fileSaveAllAction->setEnabled(true); - - // Histogram - m_Ui->menuHDR_Histogram->setEnabled(false); - m_Ui->Low_dynamic_range->setEnabled(false); - m_Ui->Fit_to_dynamic_range->setEnabled(false); - m_Ui->Shrink_dynamic_range->setEnabled(false); - m_Ui->Extend_dynamic_range->setEnabled(false); - m_Ui->Decrease_exposure->setEnabled(false); - m_Ui->Increase_exposure->setEnabled(false); - - m_Ui->actionResizeHDR->setEnabled(false); - m_Ui->action_Projective_Transformation->setEnabled(false); - m_Ui->cropToSelectionAction->setEnabled(false); - m_Ui->removeSelectionAction->setEnabled(false); - m_Ui->rotateccw->setEnabled(false); - m_Ui->rotatecw->setEnabled(false); - m_Ui->actionFix_Histogram->setEnabled(true); -} - -void MainWindow::updateActionsHdrImage() +void MainWindow::updateActions( int w ) { - //qDebug() << "MainWindow::updateActionsHdrImage()"; - - m_Ui->fileSaveAsAction->setEnabled(true); - m_Ui->actionSave_Hdr_Preview->setEnabled(true); - //actionShowHDRs->setEnabled(false); + qDebug() << "MainWindow::updateActions(" << w << ")"; + bool hasImage = w >= 0; + GenericViewer* g_v = hasImage ? (GenericViewer*)m_tabwidget->widget(w) : 0; + bool isHdr = g_v ? g_v->isHDR() : false; + bool isLdr = g_v ? !g_v->isHDR() : false; + LuminanceOptions luminance_opts; + bool hasPrinterProfile = !luminance_opts.getPrinterProfileFileName().isEmpty(); + + updateMagnificationButtons(g_v); // g_v ? g_v : 0 + + m_Ui->fileSaveAsAction->setEnabled(hasImage); + m_Ui->actionSave_Hdr_Preview->setEnabled(hasImage && isHdr); + m_Ui->fileSaveAllAction->setEnabled(hasImage && curr_num_ldr_open >= 2); // Histogram - m_Ui->menuHDR_Histogram->setEnabled(true); - m_Ui->Low_dynamic_range->setEnabled(true); - m_Ui->Fit_to_dynamic_range->setEnabled(true); - m_Ui->Shrink_dynamic_range->setEnabled(true); - m_Ui->Extend_dynamic_range->setEnabled(true); - m_Ui->Decrease_exposure->setEnabled(true); - m_Ui->Increase_exposure->setEnabled(true); - - m_Ui->actionResizeHDR->setEnabled(true); - m_Ui->action_Projective_Transformation->setEnabled(true); - - if (tm_status.curr_tm_frame) - { - if (!tm_status.curr_tm_frame->hasSelection()) - { - m_Ui->cropToSelectionAction->setEnabled(false); - m_Ui->removeSelectionAction->setEnabled(false); - } - else - { - m_Ui->cropToSelectionAction->setEnabled(true); - m_Ui->removeSelectionAction->setEnabled(true); - } - } - m_Ui->rotateccw->setEnabled(true); - m_Ui->rotatecw->setEnabled(true); - m_Ui->actionFix_Histogram->setEnabled(false); + m_Ui->menuHDR_Histogram->setEnabled(isHdr); + m_Ui->Low_dynamic_range->setEnabled(isHdr); + m_Ui->Fit_to_dynamic_range->setEnabled(isHdr); + m_Ui->Shrink_dynamic_range->setEnabled(isHdr); + m_Ui->Extend_dynamic_range->setEnabled(isHdr); + m_Ui->Decrease_exposure->setEnabled(isHdr); + m_Ui->Increase_exposure->setEnabled(isHdr); + + m_Ui->actionResizeHDR->setEnabled(isHdr); + m_Ui->action_Projective_Transformation->setEnabled(isHdr); + m_Ui->rotateccw->setEnabled(isHdr); + m_Ui->rotatecw->setEnabled(isHdr); + + m_Ui->actionFix_Histogram->setEnabled(isLdr); + m_Ui->actionSoft_Proofing->setEnabled(isLdr && hasPrinterProfile); + m_Ui->actionGamut_Check->setEnabled(isLdr && hasPrinterProfile); + + bool hasCropping = isHdr && tm_status.curr_tm_frame && tm_status.curr_tm_frame->hasSelection(); + m_Ui->cropToSelectionAction->setEnabled(hasCropping); + m_Ui->removeSelectionAction->setEnabled(hasCropping); } -void MainWindow::updateActions( int w ) -{ - //qDebug() << "MainWindow::updateActions(" << w << ")"; - updatePreviousNextActions(); - if ( w < 0 ) - { - // something wrong happened? - updateActionsNoImage(); - } - else - { - GenericViewer* g_v = (GenericViewer*)m_tabwidget->widget(w); - updateMagnificationButtons(g_v); - if ( g_v->isHDR() ) - { - // current selected frame is an HDR - updateActionsHdrImage(); - } - else - { - // current selected frame is not an HDR - updateActionsLdrImage(); - } - } -} - -void MainWindow::rotateccw_requested() +void MainWindow::on_rotateccw_triggered() { dispatchrotate(false); } -void MainWindow::rotatecw_requested() +void MainWindow::on_rotatecw_triggered() { dispatchrotate(true); } @@ -788,7 +681,7 @@ m_Ui->rotatecw->setEnabled(true); } -void MainWindow::resize_requested() +void MainWindow::on_actionResizeHDR_triggered() { if (m_tabwidget->count() <= 0) return; @@ -816,7 +709,7 @@ delete resizedialog; } -void MainWindow::projectiveTransf_requested() +void MainWindow::on_action_Projective_Transformation_triggered() { if (m_tabwidget->count() <= 0) return; @@ -844,7 +737,7 @@ delete projTranfsDialog; } -void MainWindow::hdr_decrease_exp() +void MainWindow::on_Decrease_exposure_triggered() { if (m_tabwidget->count() <= 0) return; @@ -854,7 +747,7 @@ curr_hdr_v->lumRange()->decreaseExposure(); } -void MainWindow::hdr_extend_exp() +void MainWindow::on_Extend_dynamic_range_triggered() { if (m_tabwidget->count() <= 0) return; @@ -864,7 +757,7 @@ curr_hdr_v->lumRange()->extendRange(); } -void MainWindow::hdr_fit_exp() +void MainWindow::on_Fit_to_dynamic_range_triggered() { if (m_tabwidget->count() <= 0) return; @@ -874,7 +767,7 @@ curr_hdr_v->lumRange()->fitToDynamicRange(); } -void MainWindow::hdr_increase_exp() +void MainWindow::on_Increase_exposure_triggered() { if (m_tabwidget->count() <= 0) return; @@ -884,7 +777,7 @@ curr_hdr_v->lumRange()->increaseExposure(); } -void MainWindow::hdr_shrink_exp() +void MainWindow::on_Shrink_dynamic_range_triggered() { if (m_tabwidget->count() <= 0) return; @@ -894,7 +787,7 @@ curr_hdr_v->lumRange()->shrinkRange(); } -void MainWindow::hdr_ldr_exp() +void MainWindow::on_Low_dynamic_range_triggered() { if (m_tabwidget->count() <= 0) return; @@ -905,7 +798,7 @@ } // Zoom = Viewers (START) -void MainWindow::viewerZoomIn() +void MainWindow::on_zoomInAct_triggered() { if (m_tabwidget->count() <= 0) return; @@ -915,7 +808,7 @@ //updateMagnificationButtons(g_v); } -void MainWindow::viewerZoomOut() +void MainWindow::on_zoomOutAct_triggered() { if (m_tabwidget->count() <= 0) return; @@ -925,7 +818,7 @@ //updateMagnificationButtons(g_v); } -void MainWindow::viewerFitToWin(bool checked) +void MainWindow::on_fitToWindowAct_triggered() { if (m_tabwidget->count() <= 0) return; @@ -935,7 +828,7 @@ //updateMagnificationButtons(g_v); } -void MainWindow::viewerFillToWin() +void MainWindow::on_actionFill_to_Window_triggered() { if (m_tabwidget->count() <= 0) return; @@ -945,7 +838,7 @@ //updateMagnificationButtons(g_v); } -void MainWindow::viewerOriginalSize() +void MainWindow::on_normalSizeAct_triggered() { if (m_tabwidget->count() <= 0) return; @@ -957,7 +850,7 @@ // Zoom = Viewers (END) -void MainWindow::openDocumentation() +void MainWindow::on_documentationAction_triggered() { helpBrowser = new HelpBrowser(this,"Luminance HDR Help"); helpBrowser->setAttribute(Qt::WA_DeleteOnClose); @@ -991,6 +884,7 @@ // progress bar m_ProgressBar = new QProgressBar(this); m_ProgressBar->hide(); + statusBar()->addWidget(m_ProgressBar); // Init Object/Thread m_IOThread = new QThread; @@ -1032,14 +926,15 @@ QApplication::setOverrideCursor( QCursor(Qt::WaitCursor) ); - statusBar()->addWidget(m_ProgressBar); + // statusBar()->addWidget(m_ProgressBar); m_ProgressBar->setMaximum(0); m_ProgressBar->show(); } void MainWindow::ioEnd() { - statusBar()->removeWidget(m_ProgressBar); + //statusBar()->removeWidget(m_ProgressBar); + m_ProgressBar->hide(); m_ProgressBar->reset(); QApplication::restoreOverrideCursor(); @@ -1049,8 +944,13 @@ void MainWindow::load_failed(QString error_message) { + QApplication::restoreOverrideCursor(); + // TODO: use unified style? QMessageBox::critical(this, tr("Aborting..."), error_message, QMessageBox::Ok, QMessageBox::NoButton); + + m_ProgressBar->hide(); + m_ProgressBar->reset(); } void MainWindow::load_success(pfs::Frame* new_hdr_frame, QString new_fname, bool needSaving) @@ -1067,7 +967,7 @@ qDebug() << "Filename: " << new_fname; #endif - HdrViewer* newhdr = new HdrViewer(new_hdr_frame, this, false, luminance_options.getViewerNegColor(), luminance_options.getViewerNanInfColor()); + HdrViewer* newhdr = new HdrViewer(new_hdr_frame, this, needSaving, luminance_options.getViewerNegColor(), luminance_options.getViewerNanInfColor()); newhdr->setAttribute(Qt::WA_DeleteOnClose); @@ -1110,7 +1010,7 @@ } } -void MainWindow::preferences_called() +void MainWindow::on_OptionsAction_triggered() { unsigned int negcol = luminance_options.getViewerNegColor(); unsigned int naninfcol = luminance_options.getViewerNanInfColor(); @@ -1134,7 +1034,7 @@ } } -void MainWindow::transplant_called() +void MainWindow::on_Transplant_Exif_Data_action_triggered() { TransplantExifDialog *transplant=new TransplantExifDialog(this); transplant->setAttribute(Qt::WA_DeleteOnClose); @@ -1159,14 +1059,11 @@ { if (files.size() > 0) { - DnDOptionDialog dndOption(this, files); - dndOption.exec(); - - switch (dndOption.result) { - case 1: // create new using LDRS - fileNewViaWizard(files); + switch (DnDOptionDialog::showDndDialog(this, files)) { + case DnDOptionDialog::ACTION_NEW_HDR: + createNewHdr(files); break; - case 2: // open HDRs + case DnDOptionDialog::ACTION_OPEN_HDR: foreach (QString filename, files) { //qDebug() << filename; @@ -1219,7 +1116,7 @@ void MainWindow::splashShowDonationsPage() { - showDonationsPage(); + on_actionDonate_triggered(); splash->close(); } @@ -1229,9 +1126,9 @@ splash->close(); } -void MainWindow::aboutLuminance() +void MainWindow::on_actionAbout_Luminance_triggered() { - UMessageBox::about(); + UMessageBox::about(); } /* @@ -1279,17 +1176,7 @@ return; } -void MainWindow::minimizeMW() -{ - this->showMinimized(); -} - -void MainWindow::maximizeMW() -{ - this->showMaximized(); -} - -void MainWindow::bringAllMWToFront() +void MainWindow::on_actionBring_All_to_Front_triggered() { foreach (QWidget *widget, QApplication::topLevelWidgets()) { @@ -1301,14 +1188,14 @@ } } -void MainWindow::batch_hdr_requested() +void MainWindow::on_actionBatch_HDR_triggered() { BatchHDRDialog *batch_hdr_dialog = new BatchHDRDialog(this); batch_hdr_dialog->exec(); delete batch_hdr_dialog; } -void MainWindow::batch_requested() +void MainWindow::on_actionBatch_Tone_Mapping_triggered() { BatchTMDialog *batchdialog = new BatchTMDialog(this); batchdialog->exec(); @@ -1435,6 +1322,9 @@ tmPanel->setEnabled(false); m_TMProgressBar = new TMOProgressIndicator; + m_TMProgressBar->hide(); + statusBar()->addWidget(m_TMProgressBar); + connect(this, SIGNAL(destroyed()), m_TMProgressBar, SLOT(deleteLater())); m_TMWorker = new TMWorker; @@ -1468,14 +1358,15 @@ void MainWindow::tonemapBegin() { - statusBar()->addWidget(m_TMProgressBar); + // statusBar()->addWidget(m_TMProgressBar); m_TMProgressBar->setMaximum(0); m_TMProgressBar->show(); } void MainWindow::tonemapEnd() { - statusBar()->removeWidget(m_TMProgressBar); + // statusBar()->removeWidget(m_TMProgressBar); + m_TMProgressBar->hide(); m_TMProgressBar->reset(); } @@ -1485,16 +1376,27 @@ qDebug() << "Start Tone Mapping"; #endif - if ( opts->tmoperator == fattal && luminance_options.isShowFattalWarning() ) - { - // Warning when using size dependent TMOs with smaller sizes - if ( opts->xsize != opts->origxsize ) + // Warning when using size dependent TMOs with smaller sizes + if ( (opts->tmoperator == fattal) && + (opts->operator_options.fattaloptions.fftsolver == false) && + (opts->xsize != opts->origxsize) && + (luminance_options.isShowFattalWarning()) ) + { + TonemappingWarningDialog tonemappingWarningDialog(this); + + switch ( tonemappingWarningDialog.exec() ) + { + case QMessageBox::Yes : + {} break; + case QMessageBox::YesAll : + { + luminance_options.setShowFattalWarning(false); + } break; + case QMessageBox::No : + default: { - TonemappingWarningDialog tonemapping_warning_dialog(this); - - tonemapping_warning_dialog.exec(); - - if ( !tonemapping_warning_dialog.wasAccepted() ) return; + return; + } } } @@ -1555,6 +1457,15 @@ m_tabwidget->setCurrentWidget(n); previewPanel->setEnabled(true); + + if (m_Ui->actionSoft_Proofing->isChecked()) { + LdrViewer *viewer = static_cast(n); + viewer->doSoftProofing(false); + } + else if (m_Ui->actionGamut_Check->isChecked()) { + LdrViewer *viewer = static_cast(n); + viewer->doSoftProofing(true); + } } void MainWindow::tonemapFailed(QString error_msg) @@ -1568,7 +1479,7 @@ /* * Lock Handling */ -void MainWindow::lockViewers(bool /*toggled*/) +void MainWindow::on_actionLock_toggled(bool /*toggled*/) { if (m_Ui->actionLock->isChecked() && m_tabwidget->count()) { @@ -1625,72 +1536,23 @@ void MainWindow::updateMagnificationButtons(GenericViewer* c_v) { - if ( c_v == NULL ) - { - m_Ui->normalSizeAct->setEnabled(false); - m_Ui->normalSizeAct->setChecked(false); - m_Ui->fitToWindowAct->setEnabled( false ); - m_Ui->fitToWindowAct->setChecked(false); - m_Ui->actionFill_to_Window->setEnabled(false); - m_Ui->actionFill_to_Window->setChecked(false); - - m_Ui->zoomInAct->setEnabled( false ); - m_Ui->zoomOutAct->setEnabled( false ); - } - else - { - if ( c_v->isNormalSize() ) - { - m_Ui->zoomInAct->setEnabled(false); - m_Ui->zoomOutAct->setEnabled(true); - - m_Ui->normalSizeAct->setEnabled(false); - m_Ui->normalSizeAct->setChecked(true); - m_Ui->fitToWindowAct->setEnabled(true); - m_Ui->fitToWindowAct->setChecked(false); - m_Ui->actionFill_to_Window->setEnabled(true); - m_Ui->actionFill_to_Window->setChecked(false); - - return; - } - - if ( c_v->isFilledToWindow() ) - { - m_Ui->zoomInAct->setEnabled(true); - m_Ui->zoomOutAct->setEnabled(true); - - m_Ui->normalSizeAct->setEnabled(true); - m_Ui->normalSizeAct->setChecked(false); - m_Ui->fitToWindowAct->setEnabled(true); - m_Ui->fitToWindowAct->setChecked(false); - m_Ui->actionFill_to_Window->setEnabled(false); - m_Ui->actionFill_to_Window->setChecked(true); - - return; - } - - if ( c_v->isFittedToWindow() ) - { - m_Ui->zoomInAct->setEnabled(true); - m_Ui->zoomOutAct->setEnabled(false); - - m_Ui->normalSizeAct->setEnabled(true); - m_Ui->normalSizeAct->setChecked(false); - m_Ui->fitToWindowAct->setEnabled(false); - m_Ui->fitToWindowAct->setChecked(true); - m_Ui->actionFill_to_Window->setEnabled(true); - m_Ui->actionFill_to_Window->setChecked(false); - - return; - } - } + bool hasImage = c_v != NULL; + bool isNormalSize = c_v && c_v->isNormalSize(); + bool isFilledToWindow = c_v && c_v->isFilledToWindow(); + bool isFittedToWindow = c_v && c_v->isFittedToWindow(); + + m_Ui->zoomInAct->setEnabled(hasImage && (isFilledToWindow || isFittedToWindow)); + m_Ui->zoomOutAct->setEnabled(hasImage && !isFittedToWindow); + + m_Ui->normalSizeAct->setChecked(hasImage && isNormalSize); + m_Ui->normalSizeAct->setEnabled(hasImage && !isNormalSize); + m_Ui->fitToWindowAct->setChecked(hasImage && isFittedToWindow); + m_Ui->fitToWindowAct->setEnabled(hasImage && !isFittedToWindow); + m_Ui->actionFill_to_Window->setChecked(hasImage && isFilledToWindow); + m_Ui->actionFill_to_Window->setEnabled(hasImage && !isFilledToWindow); } -/* - * Next/Previous Buttons - */ - -void MainWindow::removeCurrentTab() +void MainWindow::on_actionRemove_Tab_triggered() { removeTab(m_tabwidget->currentIndex()); } @@ -1705,25 +1567,15 @@ w->blockSignals(true); if (w->isHDR()) { + bool doClose = false; + qDebug() << "Remove HDR from MainWindow"; if ( w->needsSaving() ) { if ( maybeSave() ) { // if discard OR saved - m_tabwidget->removeTab(t); - w->deleteLater(); // delete yourself whenever you want - - setWindowModified(false); - - tm_status.is_hdr_ready = false; - tm_status.curr_tm_frame = NULL; - tm_status.curr_tm_options = NULL; - - tmPanel->setEnabled(false); - m_Ui->actionShowPreviewPanel->setEnabled(false); - - previewPanel->hide(); + doClose = true; } // if FALSE, it means that the user said "Cancel" // or the saving operation went wrong @@ -1733,21 +1585,22 @@ } } else - { - // if discard OR saved - m_tabwidget->removeTab(t); - w->deleteLater(); // delete yourself whenever you want + doClose = true; + + if (doClose) { + m_tabwidget->removeTab(t); + w->deleteLater(); // delete yourself whenever you want - setWindowModified(false); + showPreviewPanel(false); + setWindowModified(false); - tm_status.is_hdr_ready = false; - tm_status.curr_tm_frame = NULL; - tm_status.curr_tm_options = NULL; + tm_status.is_hdr_ready = false; + tm_status.curr_tm_frame = NULL; + tm_status.curr_tm_options = NULL; - tmPanel->setEnabled(false); - m_Ui->actionShowPreviewPanel->setEnabled(false); + tmPanel->setEnabled(false); - previewPanel->hide(); + previewPanel->hide(); } } else @@ -1759,59 +1612,6 @@ if (curr_num_ldr_open == 1) m_Ui->fileSaveAllAction->setEnabled(false); } - updatePreviousNextActions(); -} - -void MainWindow::activateNextViewer() -{ - int curr_num_viewers = m_tabwidget->count(); - int curr_viewer = m_tabwidget->currentIndex(); - - if ( curr_viewer < curr_num_viewers-1 ) - { - m_tabwidget->setCurrentIndex(curr_viewer+1); - } -} - -void MainWindow::activatePreviousViewer() -{ - int curr_viewer = m_tabwidget->currentIndex(); - - if ( curr_viewer > 0 ) - { - m_tabwidget->setCurrentIndex(curr_viewer-1); - } -} - -void MainWindow::updatePreviousNextActions() -{ - int curr_num_viewers = m_tabwidget->count(); - if (curr_num_viewers <= 1) - { - m_Ui->actionShowNext->setEnabled(false); - m_Ui->actionShowPrevious->setEnabled(false); - m_Ui->actionLock->setEnabled(false); - } - else - { - m_Ui->actionLock->setEnabled(true); - int curr_viewer = m_tabwidget->currentIndex(); - if ( curr_viewer == 0 ) - { - m_Ui->actionShowNext->setEnabled(true); - m_Ui->actionShowPrevious->setEnabled(false); - } - else if (curr_viewer == (curr_num_viewers-1)) - { - m_Ui->actionShowNext->setEnabled(false); - m_Ui->actionShowPrevious->setEnabled(true); - } - else - { - m_Ui->actionShowNext->setEnabled(true); - m_Ui->actionShowPrevious->setEnabled(true); - } - } } QString MainWindow::getCurrentHDRName() @@ -1911,7 +1711,7 @@ } } -void MainWindow::levelsRequested(bool checked) +void MainWindow::on_actionFix_Histogram_toggled(bool checked) { if (checked) { @@ -1959,3 +1759,66 @@ { openFiles(inputFiles); } + +void MainWindow::on_actionSoft_Proofing_toggled(bool doProof) +{ + GenericViewer* current = (GenericViewer*) m_tabwidget->currentWidget(); + if ( current==NULL ) return; + if ( current->isHDR() ) return; + LdrViewer *viewer = (LdrViewer *) current; + if (doProof) { + qDebug() << "MainWindow:: do soft proofing"; + if (m_Ui->actionGamut_Check->isChecked()) + m_Ui->actionGamut_Check->setChecked(false); + viewer->doSoftProofing(false); + } + else { + qDebug() << "MainWindow:: undo soft proofing"; + viewer->undoSoftProofing(); + } +} + +void MainWindow::on_actionGamut_Check_toggled(bool doGamut) +{ + GenericViewer* current = (GenericViewer*) m_tabwidget->currentWidget(); + if ( current==NULL ) return; + if ( current->isHDR() ) return; + LdrViewer *viewer = (LdrViewer *) current; + if (doGamut) { + qDebug() << "MainWindow:: do gamut check"; + if (m_Ui->actionSoft_Proofing->isChecked()) + m_Ui->actionSoft_Proofing->setChecked(false); + viewer->doSoftProofing(true); + } + else { + qDebug() << "MainWindow:: undo gamut check"; + viewer->undoSoftProofing(); + } +} + +#ifdef Q_WS_WIN +bool MainWindow::winEvent(MSG * message, long * result) +{ + return OsIntegration::getInstance().winEvent(message, result); +} +#endif + +void MainWindow::updateSoftProofing(int i) +{ + QWidget *wgt = m_tabwidget->widget(i); + GenericViewer *g_v = (GenericViewer *)wgt; + + if (g_v == NULL) + return; + + if ( !g_v->isHDR() ) + { + LdrViewer *l_v = static_cast(g_v); + if (!m_Ui->actionSoft_Proofing->isChecked() && !m_Ui->actionGamut_Check->isChecked()) + l_v->undoSoftProofing(); + else if (m_Ui->actionSoft_Proofing->isChecked()) + l_v->doSoftProofing(false); + else if (m_Ui->actionGamut_Check->isChecked()) + l_v->doSoftProofing(true); + } +} diff -Nru luminance-2.2.1/src/MainWindow/MainWindow.h luminance-2.3.0/src/MainWindow/MainWindow.h --- luminance-2.2.1/src/MainWindow/MainWindow.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/MainWindow/MainWindow.h 2012-07-01 09:10:50.000000000 +0000 @@ -94,43 +94,45 @@ void setInputFiles(const QStringList& files); protected Q_SLOTS: - void fileNewViaWizard(QStringList files = QStringList()); - void fileOpen(); //for File->Open, it then calls loadFile() - void fileSaveAs(); - void fileSaveAll(); - void saveHdrPreview(); - - void rotateccw_requested(); - void rotatecw_requested(); - - void resize_requested(); - void projectiveTransf_requested(); - - void batch_hdr_requested(); - void batch_requested(); - - void hdr_increase_exp(); - void hdr_decrease_exp(); - void hdr_extend_exp(); - void hdr_shrink_exp(); - void hdr_fit_exp(); - void hdr_ldr_exp(); + void on_fileNewAction_triggered(); + void createNewHdr(QStringList files); + + void on_fileOpenAction_triggered(); //for File->Open, it then calls loadFile() + void on_fileSaveAsAction_triggered(); + void on_fileSaveAllAction_triggered(); + void on_actionSave_Hdr_Preview_triggered(); + + void on_rotateccw_triggered(); + void on_rotatecw_triggered(); + + void on_actionResizeHDR_triggered(); + void on_action_Projective_Transformation_triggered(); + + void on_actionBatch_HDR_triggered(); + void on_actionBatch_Tone_Mapping_triggered(); + + void on_Increase_exposure_triggered(); + void on_Decrease_exposure_triggered(); + void on_Extend_dynamic_range_triggered(); + void on_Shrink_dynamic_range_triggered(); + void on_Fit_to_dynamic_range_triggered(); + void on_Low_dynamic_range_triggered(); // Viewers - void viewerZoomIn(); - void viewerZoomOut(); - void viewerFitToWin(bool checked = true); - void viewerFillToWin(); - void viewerOriginalSize(); + void on_zoomInAct_triggered(); + void on_zoomOutAct_triggered(); + void on_fitToWindowAct_triggered(); + void on_actionFill_to_Window_triggered(); + void on_normalSizeAct_triggered(); void updateMagnificationButtons(GenericViewer*); - void openDocumentation(); + void on_documentationAction_triggered(); void enterWhatsThis(); - void preferences_called(); - void transplant_called(); + void on_OptionsAction_triggered(); + void on_Transplant_Exif_Data_action_triggered(); - void levelsRequested(bool checked); + void on_actionFix_Histogram_toggled(bool checked); void openInputFiles(); @@ -142,14 +144,12 @@ // Window Menu Display and Functionalities void updateWindowMenu(); - void minimizeMW(); - void maximizeMW(); - void bringAllMWToFront(); + void on_actionBring_All_to_Front_triggered(); void openRecentFile(); void setCurrentFile(const QString &fileName); - void aboutLuminance(); + void on_actionAbout_Luminance_triggered(); void showSplash(); void updateActions(int w); @@ -160,7 +160,7 @@ void disableCrop(); void helpBrowserClosed(); - void showDonationsPage(); + void on_actionDonate_triggered(); void splashShowDonationsPage(); void splashClose(); @@ -173,16 +173,18 @@ void tonemapFailed(QString); // lock functionalities - void lockViewers(bool); + void on_actionLock_toggled(bool); void syncViewers(GenericViewer*); void showPreviewPanel(bool b); // QTabWidget void removeTab(int); - void removeCurrentTab(); - void activateNextViewer(); - void activatePreviousViewer(); + void on_actionRemove_Tab_triggered(); + + void on_actionSoft_Proofing_toggled(bool); + void on_actionGamut_Check_toggled(bool); + void updateSoftProofing(int); Q_SIGNALS: // update HDR @@ -237,9 +239,6 @@ void setupTM(); void createConnections(); - void updateActionsNoImage(); - void updateActionsLdrImage(); - void updateActionsHdrImage(); void updatePreviousNextActions(); QString getCurrentHDRName(); @@ -251,6 +250,10 @@ void openFiles(const QStringList& files); + #ifdef Q_WS_WIN + bool winEvent(MSG * message, long * result); + #endif + private: static int sm_NumMainWindows; @@ -270,5 +273,4 @@ TonemappingPanel *tmPanel; }; - #endif diff -Nru luminance-2.2.1/src/MainWindow/MainWindow.ui luminance-2.3.0/src/MainWindow/MainWindow.ui --- luminance-2.2.1/src/MainWindow/MainWindow.ui 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/MainWindow/MainWindow.ui 2012-07-01 09:10:50.000000000 +0000 @@ -30,7 +30,7 @@ 0 0 1238 - 22 + 24 @@ -163,14 +163,15 @@ - - + + + - + :/new/prefix1/images/newfile.png:/new/prefix1/images/newfile.png @@ -194,7 +195,7 @@ - + :/new/prefix1/images/fileopen.png:/new/prefix1/images/fileopen.png @@ -221,7 +222,7 @@ false - + :/new/prefix1/images/filesave.png:/new/prefix1/images/filesave.png @@ -245,7 +246,7 @@ - + :/new/prefix1/images/exit.png:/new/prefix1/images/exit.png @@ -269,7 +270,7 @@ false - + :/new/prefix1/images/rotate_left.png:/new/prefix1/images/rotate_left.png @@ -296,7 +297,7 @@ false - + :/new/prefix1/images/rotate_right.png:/new/prefix1/images/rotate_right.png @@ -389,7 +390,7 @@ - + :/new/prefix1/images/help.png:/new/prefix1/images/help.png @@ -419,7 +420,7 @@ false - + :/new/prefix1/images/viewmag1.png:/new/prefix1/images/viewmag1.png @@ -446,7 +447,7 @@ false - + :/new/prefix1/images/viewmag_inc.png:/new/prefix1/images/viewmag_inc.png @@ -470,7 +471,7 @@ false - + :/new/prefix1/images/viewmag_dec.png:/new/prefix1/images/viewmag_dec.png @@ -500,7 +501,7 @@ false - + :/new/prefix1/images/viewmagfit.png:/new/prefix1/images/viewmagfit.png @@ -524,7 +525,7 @@ - + :/new/prefix1/images/options.png:/new/prefix1/images/options.png @@ -551,7 +552,7 @@ false - + :/new/prefix1/images/scale.png:/new/prefix1/images/scale.png @@ -575,7 +576,7 @@ - + :/new/prefix1/images/copyexif.png:/new/prefix1/images/copyexif.png @@ -700,7 +701,7 @@ - + :/new/prefix1/images/whatsthis.png:/new/prefix1/images/whatsthis.png @@ -769,7 +770,7 @@ - + :/new/prefix1/images/crop.png:/new/prefix1/images/crop.png @@ -813,48 +814,6 @@ Ctrl+D - - - false - - - - :/new/prefix1/images/forward.png:/new/prefix1/images/forward.png - - - Next - - - Next Image - - - Show Next Image - - - Ctrl+PgDown - - - - - false - - - - :/new/prefix1/images/back.png:/new/prefix1/images/back.png - - - Previous - - - Previous Image - - - Show Previous Image - - - Ctrl+PgUp - - true @@ -863,7 +822,7 @@ false - + :/new/prefix1/images/lock-off.png :/new/prefix1/images/lock-on.png:/new/prefix1/images/lock-off.png @@ -871,7 +830,7 @@ Lock Viewers - Syncronize viewers mode (fit, fill or 1:1). + Synchronize viewers mode (fit, fill or 1:1). Lock the images for sync view @@ -923,7 +882,7 @@ false - + :/new/prefix1/images/histogram.png:/new/prefix1/images/histogram.png @@ -950,7 +909,7 @@ false - + :/new/prefix1/images/filesaveall.png:/new/prefix1/images/filesaveall.png @@ -979,7 +938,7 @@ false - + :/new/prefix1/images/viewmagfit.png:/new/prefix1/images/viewmagfit.png @@ -997,9 +956,39 @@ Ctrl+H + + + true + + + false + + + + :/new/prefix1/images/document-print-preview.png:/new/prefix1/images/document-print-preview.png + + + Soft Proofing + + + + + true + + + false + + + + :/new/prefix1/images/gamut_48x48.png:/new/prefix1/images/gamut_48x48.png + + + Gamut Check + + - + diff -Nru luminance-2.2.1/src/MainWindow/Splash.ui luminance-2.3.0/src/MainWindow/Splash.ui --- luminance-2.2.1/src/MainWindow/Splash.ui 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/MainWindow/Splash.ui 2012-07-01 09:10:50.000000000 +0000 @@ -80,7 +80,7 @@ noButton - + diff -Nru luminance-2.2.1/src/OsIntegration/CMakeLists.txt luminance-2.3.0/src/OsIntegration/CMakeLists.txt --- luminance-2.2.1/src/OsIntegration/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/src/OsIntegration/CMakeLists.txt 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,33 @@ +#SET(FILES_UI ) + +SET(FILES_H + ${CMAKE_CURRENT_SOURCE_DIR}/osintegration.h +) + +#SET(FILES_HXX + +SET(FILES_CPP + ${CMAKE_CURRENT_SOURCE_DIR}/osintegration.cpp +) + +IF(MSVC) + SET(FILES_H + ${FILES_H} + ${CMAKE_CURRENT_SOURCE_DIR}/ecwin7.h + ) + SET(FILES_CPP + ${FILES_CPP} + ${CMAKE_CURRENT_SOURCE_DIR}/ecwin7.cpp + ) +ENDIF() + +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) + +#QT4_WRAP_CPP(FILES_MOC ${FILES_H}) +# QT4_WRAP_UI(FILES_UI_H ${FILES_UI}) + +ADD_LIBRARY(osintegration ${FILES_H} ${FILES_CPP} ${FILES_MOC} ${FILES_HXX}) # ${FILES_UI_H} + +SET(FILES_TO_TRANSLATE ${FILES_TO_TRANSLATE} ${FILES_CPP} ${FILES_H} ${FILES_HXX} PARENT_SCOPE) # ${FILES_UI} +SET(LUMINANCE_MODULES_GUI ${LUMINANCE_MODULES_GUI} osintegration PARENT_SCOPE) +SET(LUMINANCE_MODULES_CLI ${LUMINANCE_MODULES_CLI} osintegration PARENT_SCOPE) diff -Nru luminance-2.2.1/src/OsIntegration/ecwin7.cpp luminance-2.3.0/src/OsIntegration/ecwin7.cpp --- luminance-2.2.1/src/OsIntegration/ecwin7.cpp 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/src/OsIntegration/ecwin7.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,110 @@ +/* EcWin7 - Support library for integrating Windows 7 taskbar features + * into any Qt application + * Copyright (C) 2010 Emanuele Colombo + * + * This program 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#include "ecwin7.h" + +// Windows only GUID definitions +#if defined(Q_WS_WIN) +DEFINE_GUID(CLSID_TaskbarList,0x56fdf344,0xfd6d,0x11d0,0x95,0x8a,0x0,0x60,0x97,0xc9,0xa0,0x90); +DEFINE_GUID(IID_ITaskbarList3,0xea1afb91,0x9e28,0x4b86,0x90,0xE9,0x9e,0x9f,0x8a,0x5e,0xef,0xaf); +#endif + +// Constructor: variabiles initialization +EcWin7::EcWin7() +{ +#ifdef Q_WS_WIN + mTaskbar = NULL; + mOverlayIcon = NULL; + mTaskbarMessageId = RegisterWindowMessage(L"TaskbarButtonCreated"); +#endif +} + +// Init taskbar communication +void EcWin7::init(WId wid) +{ + mWindowId = wid; +} + +// Windows event handler callback function +// (handles taskbar communication initial message) +#ifdef Q_WS_WIN +bool EcWin7::winEvent(MSG * message, long * result) +{ + if (message->message == mTaskbarMessageId) + { + HRESULT hr = CoCreateInstance(CLSID_TaskbarList, + 0, + CLSCTX_INPROC_SERVER, + IID_ITaskbarList3, + + reinterpret_cast (&(mTaskbar))); + *result = hr; + return true; + } + return false; +} +#endif + +// Set progress bar current value +void EcWin7::setProgressValue(int value, int max) +{ +#ifdef Q_WS_WIN + if (!mTaskbar) return; + mTaskbar->SetProgressValue(mWindowId, value, max); +#endif +} + +// Set progress bar current state (active, error, pause, ecc...) +void EcWin7::setProgressState(ToolBarProgressState state) +{ +#ifdef Q_WS_WIN + if (!mTaskbar) return; + mTaskbar->SetProgressState(mWindowId, (TBPFLAG)state); +#endif +} + +// Set new overlay icon and corresponding description (for accessibility) +// (call with iconName == "" and description == "" to remove any previous overlay icon) +void EcWin7::setOverlayIcon(QString iconName, QString description) +{ +#ifdef Q_WS_WIN + if (!mTaskbar) return; + HICON oldIcon = NULL; + if (mOverlayIcon != NULL) oldIcon = mOverlayIcon; + if (iconName == "") + { + mTaskbar->SetOverlayIcon(mWindowId, NULL, NULL); + mOverlayIcon = NULL; + } + else + { + mOverlayIcon = (HICON) LoadImage(GetModuleHandle(NULL), + iconName.toStdWString().c_str(), + IMAGE_ICON, + 0, + 0, + NULL); + mTaskbar->SetOverlayIcon(mWindowId, mOverlayIcon, description.toStdWString().c_str()); + } + if ((oldIcon != NULL) && (oldIcon != mOverlayIcon)) + { + DestroyIcon(oldIcon); + } +#endif +} diff -Nru luminance-2.2.1/src/OsIntegration/ecwin7.h luminance-2.3.0/src/OsIntegration/ecwin7.h --- luminance-2.2.1/src/OsIntegration/ecwin7.h 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/src/OsIntegration/ecwin7.h 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,146 @@ +/* EcWin7 - Support library for integrating Windows 7 taskbar features + * into any Qt application + * Copyright (C) 2010 Emanuele Colombo + * + * This program 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef ECWIN7_H +#define ECWIN7_H + +#include +#include + +// Windows only data definitions +#ifdef Q_WS_WIN + +#define _WINSOCKAPI_ // stops windows.h including winsock.h +#include +#include + +#define CMIC_MASK_ASYNCOK SEE_MASK_ASYNCOK + +// Structs types and enums definitions for Windows 7 taskbar + +typedef enum THUMBBUTTONMASK +{ + THB_BITMAP = 0x1, + THB_ICON = 0x2, + THB_TOOLTIP = 0x4, + THB_FLAGS = 0x8 +} THUMBBUTTONMASK; + +typedef enum THUMBBUTTONFLAGS +{ + THBF_ENABLED = 0, + THBF_DISABLED = 0x1, + THBF_DISMISSONCLICK = 0x2, + THBF_NOBACKGROUND = 0x4, + THBF_HIDDEN = 0x8, + THBF_NONINTERACTIVE = 0x10 +} THUMBBUTTONFLAGS; + +typedef struct THUMBBUTTON +{ + THUMBBUTTONMASK dwMask; + UINT iId; + UINT iBitmap; + HICON hIcon; + WCHAR szTip[260]; + THUMBBUTTONFLAGS dwFlags; +} THUMBBUTTON; +typedef struct THUMBBUTTON *LPTHUMBBUTTON; + +typedef enum TBPFLAG +{ + TBPF_NOPROGRESS = 0, + TBPF_INDETERMINATE = 0x1, + TBPF_NORMAL = 0x2, + TBPF_ERROR = 0x4, + TBPF_PAUSED = 0x8 +} TBPFLAG; + +typedef IUnknown *HIMAGELIST; + +// Taskbar interface +DECLARE_INTERFACE_(ITaskbarList3,IUnknown) +{ + // IUnknown + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + // ITaskbarList + STDMETHOD(HrInit) (THIS) PURE; + STDMETHOD(AddTab) (THIS_ HWND hwnd) PURE; + STDMETHOD(DeleteTab) (THIS_ HWND hwnd) PURE; + STDMETHOD(ActivateTab) (THIS_ HWND hwnd) PURE; + STDMETHOD(SetActiveAlt) (THIS_ HWND hwnd) PURE; + STDMETHOD (MarkFullscreenWindow) (THIS_ HWND hwnd, int fFullscreen) PURE; + // ITaskbarList3 + STDMETHOD (SetProgressValue) (THIS_ HWND hwnd, ULONGLONG ullCompleted, ULONGLONG ullTotal) PURE; + STDMETHOD (SetProgressState) (THIS_ HWND hwnd, TBPFLAG tbpFlags) PURE; + STDMETHOD (RegisterTab) (THIS_ HWND hwndTab,HWND hwndMDI) PURE; + STDMETHOD (UnregisterTab) (THIS_ HWND hwndTab) PURE; + STDMETHOD (SetTabOrder) (THIS_ HWND hwndTab, HWND hwndInsertBefore) PURE; + STDMETHOD (SetTabActive) (THIS_ HWND hwndTab, HWND hwndMDI, DWORD dwReserved) PURE; + STDMETHOD (ThumbBarAddButtons) (THIS_ HWND hwnd, UINT cButtons, LPTHUMBBUTTON pButton) PURE; + STDMETHOD (ThumbBarUpdateButtons) (THIS_ HWND hwnd, UINT cButtons, LPTHUMBBUTTON pButton) PURE; + STDMETHOD (ThumbBarSetImageList) (THIS_ HWND hwnd, HIMAGELIST himl) PURE; + STDMETHOD (SetOverlayIcon) (THIS_ HWND hwnd, HICON hIcon, LPCWSTR pszDescription) PURE; + STDMETHOD (SetThumbnailTooltip) (THIS_ HWND hwnd, LPCWSTR pszTip) PURE; + STDMETHOD (SetThumbnailClip) (THIS_ HWND hwnd, RECT *prcClip) PURE; +}; +typedef ITaskbarList3 *LPITaskbarList3; + +// Windows only data d#endifefinitions - END +#endif + +// ******************************************************************** +// EcWin7 class - Windows 7 taskbar handling for Qt and MinGW + +class EcWin7 +{ +public: + + // Initialization methods + EcWin7(); + void init(WId wid); +#ifdef Q_WS_WIN + bool winEvent(MSG * message, long * result); +#endif + // Overlay icon handling + void setOverlayIcon(QString iconName, QString description); + + // Progress indicator handling + enum ToolBarProgressState { + NoProgress = 0, + Indeterminate = 1, + Normal = 2, + Error = 4, + Paused = 8 + }; + void setProgressValue(int value, int max); + void setProgressState(ToolBarProgressState state); + +private: + WId mWindowId; +#ifdef Q_WS_WIN + UINT mTaskbarMessageId; + ITaskbarList3 *mTaskbar; + HICON mOverlayIcon; +#endif +}; + +#endif // ECWIN7_H diff -Nru luminance-2.2.1/src/OsIntegration/osintegration.cpp luminance-2.3.0/src/OsIntegration/osintegration.cpp --- luminance-2.2.1/src/OsIntegration/osintegration.cpp 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/src/OsIntegration/osintegration.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,62 @@ +/** + * This file is a part of LuminanceHDR package. + * ---------------------------------------------------------------------- + * Copyright (C) 2006,2007 Giuseppe Rota + * + * This program 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * ---------------------------------------------------------------------- + * + * @author Daniel Kaneider + */ + +#include "osintegration.h" + +OsIntegration* OsIntegration::instance = 0; + +OsIntegration::OsIntegration() { + #ifdef Q_WS_WIN + winProgressbar = new EcWin7(); + #endif +} + +OsIntegration& OsIntegration::getInstance() { + if (!instance) + instance = new OsIntegration(); + return *instance; +} + +void OsIntegration::init(QWidget* mainWindow) { + #ifdef Q_WS_WIN + winProgressbar->init(mainWindow->winId()); + #endif +} + +void OsIntegration::setProgress(int value, int max) { + #ifdef Q_WS_WIN + if (value < 0) + winProgressbar->setProgressState(EcWin7::NoProgress); + else { + winProgressbar->setProgressState(EcWin7::Normal); + winProgressbar->setProgressValue(value, max); + } + #endif +} + +#ifdef Q_WS_WIN + bool OsIntegration::winEvent(MSG * message, long * result) + { + return winProgressbar->winEvent(message, result); + } +#endif diff -Nru luminance-2.2.1/src/OsIntegration/osintegration.h luminance-2.3.0/src/OsIntegration/osintegration.h --- luminance-2.2.1/src/OsIntegration/osintegration.h 1970-01-01 00:00:00.000000000 +0000 +++ luminance-2.3.0/src/OsIntegration/osintegration.h 2012-07-01 09:10:50.000000000 +0000 @@ -0,0 +1,57 @@ +/** + * This file is a part of LuminanceHDR package. + * ---------------------------------------------------------------------- + * Copyright (C) 2006,2007 Giuseppe Rota + * + * This program 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 2 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * ---------------------------------------------------------------------- + * + * @author Daniel Kaneider + */ + +#ifndef OSINTEGRATION_H +#define OSINTEGRATION_H + +#include + +#ifdef Q_WS_WIN + #include "ecwin7.h" +#endif + +class OsIntegration +{ + +public: + static OsIntegration& getInstance(); + + void init(QWidget* mainWindow); + void setProgress(int value, int max = 100); +#ifdef Q_WS_WIN + bool winEvent(MSG * message, long * result); +#endif + +private: + OsIntegration(); + OsIntegration(const OsIntegration&); + OsIntegration& operator=(const OsIntegration&); + ~OsIntegration(); + + static OsIntegration* instance; +#ifdef Q_WS_WIN + EcWin7* winProgressbar; +#endif + +}; +#endif // OSINTEGRATION_H diff -Nru luminance-2.2.1/src/Preferences/PreferencesDialog.cpp luminance-2.3.0/src/Preferences/PreferencesDialog.cpp --- luminance-2.2.1/src/Preferences/PreferencesDialog.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Preferences/PreferencesDialog.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -55,6 +55,14 @@ #define KEY_BLUE_TOOLBUTTON "preference_dialog/blue_toolButton" #define KEY_GREEN_TOOLBUTTON "preference_dialog/green_toolButton" +#ifdef WIN32 + #define ICC_PATH "C:\\WINDOWS\\system32\\spool\\drivers\\color" +#elif defined __APPLE__ + #define ICC_PATH "/Library/ColorSync/Profiles/" +#else + #define ICC_PATH "/usr/share/color/icc" +#endif + namespace { inline double pos2value(int pos, int minpos, int maxpos, double minv, double maxv) @@ -69,7 +77,7 @@ return (int) ((maxpos - minpos)*y) + minpos; } -inline void change_color_of(QPushButton& button, const QColor& newcolor) +void change_color_of(QPushButton& button, const QColor& newcolor) { if (newcolor.isValid()) { @@ -125,30 +133,17 @@ int mappingBatchTmQStringToInt(const QString& string) { if (string == "JPEG") - { return 0; - } - else if (string=="PNG") - { + else if (string == "PNG") return 1; - } - else if (string=="PPM") - { + else if (string == "PPM") return 2; - } - else if (string=="PBM") - { + else if (string == "PBM") return 3; - } - else if (string=="BMP") - { + else if (string == "BMP") return 4; - } - else if (string=="TIFF") - { + else if (string == "TIFF") return 5; - } - return 0; // I assume JPEG... at least it doesn't crash! :| } @@ -162,87 +157,58 @@ m_Ui->setupUi(this); fromIso639ToGuiIndex["cs"]=0; - fromIso639ToGuiIndex["en"]=1; - fromIso639ToGuiIndex["fi"]=2; - fromIso639ToGuiIndex["fr"]=3; - fromIso639ToGuiIndex["de"]=4; - fromIso639ToGuiIndex["id"]=5; - fromIso639ToGuiIndex["it"]=6; - fromIso639ToGuiIndex["pl"]=7; - fromIso639ToGuiIndex["ro"]=8; - fromIso639ToGuiIndex["ru"]=9; - fromIso639ToGuiIndex["es"]=10; - fromIso639ToGuiIndex["tr"]=11; - fromIso639ToGuiIndex["hu"]=12; + fromIso639ToGuiIndex["zh"]=1; + fromIso639ToGuiIndex["en"]=2; + fromIso639ToGuiIndex["fi"]=3; + fromIso639ToGuiIndex["fr"]=4; + fromIso639ToGuiIndex["de"]=5; + fromIso639ToGuiIndex["hu"]=6; + fromIso639ToGuiIndex["id"]=7; + fromIso639ToGuiIndex["it"]=8; + fromIso639ToGuiIndex["pl"]=9; + fromIso639ToGuiIndex["ro"]=10; + fromIso639ToGuiIndex["ru"]=11; + fromIso639ToGuiIndex["es"]=12; + fromIso639ToGuiIndex["tr"]=13; + //fromIso639ToGuiIndex["hi"]=14; + //fromIso639ToGuiIndex["sk"]=15; fromGuiIndexToIso639[0]="cs"; - fromGuiIndexToIso639[1]="en"; - fromGuiIndexToIso639[2]="fi"; - fromGuiIndexToIso639[3]="fr"; - fromGuiIndexToIso639[4]="de"; - fromGuiIndexToIso639[5]="id"; - fromGuiIndexToIso639[6]="it"; - fromGuiIndexToIso639[7]="pl"; - fromGuiIndexToIso639[8]="ro"; - fromGuiIndexToIso639[9]="ru"; - fromGuiIndexToIso639[10]="es"; - fromGuiIndexToIso639[11]="tr"; - fromGuiIndexToIso639[12]="hu"; + fromGuiIndexToIso639[1]="zh"; + fromGuiIndexToIso639[2]="en"; + fromGuiIndexToIso639[3]="fi"; + fromGuiIndexToIso639[4]="fr"; + fromGuiIndexToIso639[5]="de"; + fromGuiIndexToIso639[6]="hu"; + fromGuiIndexToIso639[7]="id"; + fromGuiIndexToIso639[8]="it"; + fromGuiIndexToIso639[9]="pl"; + fromGuiIndexToIso639[10]="ro"; + fromGuiIndexToIso639[11]="ru"; + fromGuiIndexToIso639[12]="es"; + fromGuiIndexToIso639[13]="tr"; + //fromGuiIndexToIso639[14]="hi"; + //fromGuiIndexToIso639[15]="sk"; negcolor = LuminanceOptions().getViewerNegColor(); infnancolor = LuminanceOptions().getViewerNanInfColor(); from_options_to_gui(); //update the gui in order to show the options - connect(m_Ui->negativeColorButton,SIGNAL(clicked()),this,SLOT(negative_clicked())); - connect(m_Ui->ifnanColorButton,SIGNAL(clicked()),this,SLOT(infnan_clicked())); - connect(m_Ui->okButton,SIGNAL(clicked()),this,SLOT(ok_clicked())); - connect(m_Ui->cancelButton,SIGNAL(clicked()),this,SLOT(cancel_clicked())); - connect(m_Ui->chooseCachePathButton,SIGNAL(clicked()),this,SLOT(updateLineEditString())); - - connect(m_Ui->batchLdrFormatComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(batchTmFormatSelector(int))); - - connect(m_Ui->user_qual_comboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(user_qual_comboBox_currentIndexChanged(int))); - connect(m_Ui->med_passes_spinBox,SIGNAL(valueChanged(int)),this,SLOT(med_passes_spinBox_valueChanged(int))); - connect(m_Ui->wb_method_comboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(wb_method_comboBox_currentIndexChanged(int))); - connect(m_Ui->TK_spinBox,SIGNAL(valueChanged(int)),this,SLOT(TK_spinBox_valueChanged(int))); - connect(m_Ui->highlights_comboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(highlights_comboBox_currentIndexChanged(int))); - connect(m_Ui->level_spinBox,SIGNAL(valueChanged(int)),this,SLOT(level_spinBox_valueChanged(int))); - connect(m_Ui->user_black_spinBox,SIGNAL(valueChanged(int)),this,SLOT(user_black_spinBox_valueChanged(int))); - connect(m_Ui->user_sat_spinBox,SIGNAL(valueChanged(int)),this,SLOT(user_sat_spinBox_valueChanged(int))); - connect(m_Ui->threshold_spinBox,SIGNAL(valueChanged(int)),this,SLOT(threshold_spinBox_valueChanged(int))); - connect(m_Ui->use_black_CB,SIGNAL(stateChanged(int)),this,SLOT(use_black_CB_stateChanged(int))); - connect(m_Ui->use_sat_CB,SIGNAL(stateChanged(int)),this,SLOT(use_sat_CB_stateChanged(int))); - connect(m_Ui->use_noise_CB,SIGNAL(stateChanged(int)),this,SLOT(use_noise_CB_stateChanged(int))); - connect(m_Ui->use_chroma_CB,SIGNAL(stateChanged(int)),this,SLOT(use_chroma_CB_stateChanged(int))); - connect(m_Ui->brightness_horizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(brightness_horizontalSlider_valueChanged(int))); - connect(m_Ui->brightness_doubleSpinBox,SIGNAL(valueChanged(double)),this,SLOT(brightness_doubleSpinBox_valueChanged(double))); - connect(m_Ui->red_horizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(red_horizontalSlider_valueChanged(int))); - connect(m_Ui->red_doubleSpinBox,SIGNAL(valueChanged(double)),this,SLOT(red_doubleSpinBox_valueChanged(double))); - connect(m_Ui->blue_horizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(blue_horizontalSlider_valueChanged(int))); - connect(m_Ui->blue_doubleSpinBox,SIGNAL(valueChanged(double)),this,SLOT(blue_doubleSpinBox_valueChanged(double))); - connect(m_Ui->green_horizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(green_horizontalSlider_valueChanged(int))); - connect(m_Ui->green_doubleSpinBox,SIGNAL(valueChanged(double)),this,SLOT(green_doubleSpinBox_valueChanged(double))); - - connect(m_Ui->user_qual_toolButton,SIGNAL(clicked()),this,SLOT(user_qual_toolButton_clicked())); - connect(m_Ui->med_passes_toolButton,SIGNAL(clicked()),this,SLOT(med_passes_toolButton_clicked())); - connect(m_Ui->wb_method_toolButton,SIGNAL(clicked()),this,SLOT(wb_method_toolButton_clicked())); - connect(m_Ui->TK_toolButton,SIGNAL(clicked()),this,SLOT(TK_toolButton_clicked())); - connect(m_Ui->highlights_toolButton,SIGNAL(clicked()),this,SLOT(highlights_toolButton_clicked())); - connect(m_Ui->level_toolButton,SIGNAL(clicked()),this,SLOT(level_toolButton_clicked())); - connect(m_Ui->brightness_toolButton,SIGNAL(clicked()),this,SLOT(brightness_toolButton_clicked())); - connect(m_Ui->user_black_toolButton,SIGNAL(clicked()),this,SLOT(user_black_toolButton_clicked())); - connect(m_Ui->user_sat_toolButton,SIGNAL(clicked()),this,SLOT(user_sat_toolButton_clicked())); - connect(m_Ui->threshold_toolButton,SIGNAL(clicked()),this,SLOT(threshold_toolButton_clicked())); - connect(m_Ui->red_toolButton,SIGNAL(clicked()),this,SLOT(red_toolButton_clicked())); - connect(m_Ui->blue_toolButton,SIGNAL(clicked()),this,SLOT(blue_toolButton_clicked())); - connect(m_Ui->green_toolButton,SIGNAL(clicked()),this,SLOT(green_toolButton_clicked())); - - connect(m_Ui->toolButtonInterface,SIGNAL(clicked()),this,SLOT(toolButtonInterface_clicked())); - connect(m_Ui->toolButtonHDR,SIGNAL(clicked()),this,SLOT(toolButtonHDR_clicked())); - connect(m_Ui->toolButtonTM,SIGNAL(clicked()),this,SLOT(toolButtonTM_clicked())); - connect(m_Ui->toolButtonRAW,SIGNAL(clicked()),this,SLOT(toolButtonRAW_clicked())); - connect(m_Ui->toolButtonExtTool,SIGNAL(clicked()),this,SLOT(toolButtonExtTool_clicked())); + toolButtonMapper = new QSignalMapper(this); + connect(toolButtonMapper, SIGNAL(mapped(int)), this, SLOT(toolButton_clicked(int))); + + QObject* tabEntries[] = {m_Ui->toolButtonInterface, m_Ui->toolButtonHDR, m_Ui->toolButtonTM, + m_Ui->toolButtonRAW, m_Ui->toolButtonCMS, m_Ui->toolButtonExtTool + }; + for (int i = 0; i < 6; i++) { + toolButtonMapper->setMapping(tabEntries[i], i); + connect(tabEntries[i], SIGNAL(clicked()), toolButtonMapper, SLOT(map())); + } +} + +PreferencesDialog::~PreferencesDialog() { + delete toolButtonMapper; } void PreferencesDialog::changeEvent(QEvent *event) @@ -252,19 +218,19 @@ QWidget::changeEvent(event); } -void PreferencesDialog::negative_clicked() +void PreferencesDialog::on_negativeColorButton_clicked() { negcolor = QColorDialog::getColor(negcolor, this); change_color_of(*m_Ui->negativeColorButton, negcolor); } -void PreferencesDialog::infnan_clicked() +void PreferencesDialog::on_ifnanColorButton_clicked() { infnancolor = QColorDialog::getColor(infnancolor, this); change_color_of(*m_Ui->ifnanColorButton, infnancolor); } -void PreferencesDialog::ok_clicked() +void PreferencesDialog::on_okButton_clicked() { LuminanceOptions luminance_options; @@ -286,7 +252,6 @@ // --- Batch TM luminance_options.setBatchTmLdrFormat( m_Ui->batchLdrFormatComboBox->currentText() ); luminance_options.setBatchTmNumThreads( m_Ui->numThreadspinBox->value() ); - luminance_options.setBatchTmDefaultOutputQuality( m_Ui->batchTmOutputQualitySlider->value() ); // --- Other Parameters luminance_options.setAlignImageStackOptions( sanitizeAISparams( m_Ui->aisParamsLineEdit->text() ) ); @@ -314,6 +279,11 @@ luminance_options.setRawAber0( m_Ui->red_doubleSpinBox->value() ); luminance_options.setRawAber2( m_Ui->blue_doubleSpinBox->value() ); + // --- Color Management + luminance_options.setCameraProfileFileName( m_Ui->camera_lineEdit->text() ); + luminance_options.setMonitorProfileFileName( m_Ui->monitor_lineEdit->text() ); + luminance_options.setPrinterProfileFileName( m_Ui->printer_lineEdit->text() ); + // ---- temporary... this rubbish must go away! luminance_options.setValue(KEY_USER_QUAL_TOOLBUTTON, m_Ui->user_qual_toolButton->isEnabled()); luminance_options.setValue(KEY_MED_PASSES_TOOLBUTTON, m_Ui->med_passes_toolButton->isEnabled()); @@ -332,207 +302,108 @@ accept(); } -void PreferencesDialog::cancel_clicked() +void PreferencesDialog::on_cancelButton_clicked() { reject(); } -void PreferencesDialog::batchTmFormatSelector(int index) +void PreferencesDialog::on_user_qual_comboBox_currentIndexChanged(int value) { - switch (index) - { - case 0: // JPEG - m_Ui->batchTmOutputQualitySlider->setEnabled(true); - m_Ui->batchTmOutputQualitySpinBox->setEnabled(true); - break; - case 1: // PNG - m_Ui->batchTmOutputQualitySlider->setEnabled(true); - m_Ui->batchTmOutputQualitySpinBox->setEnabled(true); - break; - case 2: // PPM - m_Ui->batchTmOutputQualitySlider->setEnabled(false); - m_Ui->batchTmOutputQualitySpinBox->setEnabled(false); - break; - case 3: // PBM - m_Ui->batchTmOutputQualitySlider->setEnabled(false); - m_Ui->batchTmOutputQualitySpinBox->setEnabled(false); - break; - case 4: // BMP - m_Ui->batchTmOutputQualitySlider->setEnabled(false); - m_Ui->batchTmOutputQualitySpinBox->setEnabled(false); - break; - case 5: - m_Ui->batchTmOutputQualitySlider->setEnabled(false); - m_Ui->batchTmOutputQualitySpinBox->setEnabled(false); - break; - default: - break; - } + m_Ui->user_qual_toolButton->setEnabled(value != 0); } -void PreferencesDialog::user_qual_comboBox_currentIndexChanged(int i) +void PreferencesDialog::on_med_passes_spinBox_valueChanged(int value) { - if (i == 0) - m_Ui->user_qual_toolButton->setEnabled(false); - else - m_Ui->user_qual_toolButton->setEnabled(true); + m_Ui->med_passes_toolButton->setEnabled(value != 0); } -void PreferencesDialog::med_passes_spinBox_valueChanged(int value) +void PreferencesDialog::on_wb_method_comboBox_currentIndexChanged(int i) { - if (value == 0) - m_Ui->med_passes_toolButton->setEnabled(false); - else - m_Ui->med_passes_toolButton->setEnabled(true); -} + bool isManualWb = i == 3; + m_Ui->TK_label->setEnabled(isManualWb); + m_Ui->TK_horizontalSlider->setEnabled(isManualWb); + m_Ui->TK_spinBox->setEnabled(isManualWb); + m_Ui->green_label->setEnabled(isManualWb); + m_Ui->green_horizontalSlider->setEnabled(isManualWb); + m_Ui->green_doubleSpinBox->setEnabled(isManualWb); -void PreferencesDialog::wb_method_comboBox_currentIndexChanged(int i) -{ - if (i == 3) // Manual method - { - m_Ui->TK_label->setEnabled(true); - m_Ui->TK_horizontalSlider->setEnabled(true); - m_Ui->TK_spinBox->setEnabled(true); - m_Ui->green_label->setEnabled(true); - m_Ui->green_horizontalSlider->setEnabled(true); - m_Ui->green_doubleSpinBox->setEnabled(true); - } - else { - m_Ui->TK_label->setEnabled(false); - m_Ui->TK_horizontalSlider->setEnabled(false); - m_Ui->TK_spinBox->setEnabled(false); - m_Ui->green_label->setEnabled(false); - m_Ui->green_horizontalSlider->setEnabled(false); - m_Ui->green_doubleSpinBox->setEnabled(false); - } - if (i == 1) - m_Ui->wb_method_toolButton->setEnabled(false); - else - m_Ui->wb_method_toolButton->setEnabled(true); + m_Ui->wb_method_toolButton->setEnabled(i != 1); } -void PreferencesDialog::TK_spinBox_valueChanged(int value) +void PreferencesDialog::on_TK_spinBox_valueChanged(int value) { - if (value == 6500) - m_Ui->TK_toolButton->setEnabled(false); - else - m_Ui->TK_toolButton->setEnabled(true); + m_Ui->TK_toolButton->setEnabled(value != false); } -void PreferencesDialog::highlights_comboBox_currentIndexChanged(int i) +void PreferencesDialog::on_highlights_comboBox_currentIndexChanged(int i) { - if (i == 0) - m_Ui->highlights_toolButton->setEnabled(false); - else - m_Ui->highlights_toolButton->setEnabled(true); + m_Ui->highlights_toolButton->setEnabled(i != 0); } -void PreferencesDialog::level_spinBox_valueChanged(int value) +void PreferencesDialog::on_level_spinBox_valueChanged(int value) { - if (value == 0) - m_Ui->level_toolButton->setEnabled(false); - else - m_Ui->level_toolButton->setEnabled(true); + m_Ui->level_toolButton->setEnabled(value != 0); } -void PreferencesDialog::user_black_spinBox_valueChanged(int value) +void PreferencesDialog::on_user_black_spinBox_valueChanged(int value) { - if (value == 0) - m_Ui->user_black_toolButton->setEnabled(false); - else - m_Ui->user_black_toolButton->setEnabled(true); + m_Ui->user_black_toolButton->setEnabled(value != 0); } -void PreferencesDialog::user_sat_spinBox_valueChanged(int value) +void PreferencesDialog::on_user_sat_spinBox_valueChanged(int value) { - if (value == 20000) - m_Ui->user_sat_toolButton->setEnabled(false); - else - m_Ui->user_sat_toolButton->setEnabled(true); + m_Ui->user_sat_toolButton->setEnabled(value != 20000); } -void PreferencesDialog::threshold_spinBox_valueChanged(int value) +void PreferencesDialog::on_threshold_spinBox_valueChanged(int value) { - if (value == 100) - m_Ui->threshold_toolButton->setEnabled(false); - else - m_Ui->threshold_toolButton->setEnabled(true); + m_Ui->threshold_toolButton->setEnabled(value != 100); } -void PreferencesDialog::use_black_CB_stateChanged(int) +void PreferencesDialog::on_use_black_CB_stateChanged(int) { - if (m_Ui->use_black_CB->isChecked()) - { - m_Ui->user_black_horizontalSlider->setEnabled(true); - m_Ui->user_black_spinBox->setEnabled(true); - } - else { - m_Ui->user_black_horizontalSlider->setEnabled(false); - m_Ui->user_black_spinBox->setEnabled(false); - } + bool checked = m_Ui->use_black_CB->isChecked(); + m_Ui->user_black_horizontalSlider->setEnabled(checked); + m_Ui->user_black_spinBox->setEnabled(checked); } -void PreferencesDialog::use_sat_CB_stateChanged(int) { - if (m_Ui->use_sat_CB->isChecked()) { - m_Ui->user_sat_horizontalSlider->setEnabled(true); - m_Ui->user_sat_spinBox->setEnabled(true); - } - else { - m_Ui->user_sat_horizontalSlider->setEnabled(false); - m_Ui->user_sat_spinBox->setEnabled(false); - } +void PreferencesDialog::on_use_sat_CB_stateChanged(int) { + bool checked = m_Ui->use_sat_CB->isChecked(); + m_Ui->user_sat_horizontalSlider->setEnabled(checked); + m_Ui->user_sat_spinBox->setEnabled(checked); } -void PreferencesDialog::use_noise_CB_stateChanged(int) +void PreferencesDialog::on_use_noise_CB_stateChanged(int) { - if (m_Ui->use_noise_CB->isChecked()) { - m_Ui->threshold_label->setEnabled(true); - m_Ui->threshold_horizontalSlider->setEnabled(true); - m_Ui->threshold_spinBox->setEnabled(true); - } - else { - m_Ui->threshold_label->setEnabled(false); - m_Ui->threshold_horizontalSlider->setEnabled(false); - m_Ui->threshold_spinBox->setEnabled(false); - } + bool checked = m_Ui->use_noise_CB->isChecked(); + m_Ui->threshold_label->setEnabled(checked); + m_Ui->threshold_horizontalSlider->setEnabled(checked); + m_Ui->threshold_spinBox->setEnabled(checked); } -void PreferencesDialog::use_chroma_CB_stateChanged(int) +void PreferencesDialog::on_use_chroma_CB_stateChanged(int) { - if (m_Ui->use_chroma_CB->isChecked()) - { - m_Ui->red_label->setEnabled(true); - m_Ui->red_horizontalSlider->setEnabled(true); - m_Ui->red_doubleSpinBox->setEnabled(true); - m_Ui->blue_label->setEnabled(true); - m_Ui->blue_horizontalSlider->setEnabled(true); - m_Ui->blue_doubleSpinBox->setEnabled(true); - } - else { - m_Ui->red_label->setEnabled(false); - m_Ui->red_horizontalSlider->setEnabled(false); - m_Ui->red_doubleSpinBox->setEnabled(false); - m_Ui->blue_label->setEnabled(false); - m_Ui->blue_horizontalSlider->setEnabled(false); - m_Ui->blue_doubleSpinBox->setEnabled(false); - } + bool checked = m_Ui->use_chroma_CB->isChecked(); + m_Ui->red_label->setEnabled(checked); + m_Ui->red_horizontalSlider->setEnabled(checked); + m_Ui->red_doubleSpinBox->setEnabled(checked); + m_Ui->blue_label->setEnabled(checked); + m_Ui->blue_horizontalSlider->setEnabled(checked); + m_Ui->blue_doubleSpinBox->setEnabled(checked); } -void PreferencesDialog::brightness_horizontalSlider_valueChanged(int value) +void PreferencesDialog::on_brightness_horizontalSlider_valueChanged(int value) { m_Ui->brightness_doubleSpinBox->setValue(((double) value)/m_Ui->brightness_doubleSpinBox->maximum()); } -void PreferencesDialog::brightness_doubleSpinBox_valueChanged(double value) +void PreferencesDialog::on_brightness_doubleSpinBox_valueChanged(double value) { m_Ui->brightness_horizontalSlider->setValue((int) (value*m_Ui->brightness_doubleSpinBox->maximum())); - if (fabs(value - 1.0) < 1e-4) - m_Ui->brightness_toolButton->setEnabled(false); - else - m_Ui->brightness_toolButton->setEnabled(true); + m_Ui->brightness_toolButton->setEnabled(fabs(value - 1.0) >= 1e-4); } -void PreferencesDialog::red_horizontalSlider_valueChanged(int pos) +void PreferencesDialog::on_red_horizontalSlider_valueChanged(int pos) { int minpos = m_Ui->red_horizontalSlider->minimum(); int maxpos = m_Ui->red_horizontalSlider->maximum(); @@ -542,7 +413,7 @@ m_Ui->red_doubleSpinBox->setValue( pos2value(pos, minpos, maxpos, minv, maxv) ); } -void PreferencesDialog::red_doubleSpinBox_valueChanged(double value) +void PreferencesDialog::on_red_doubleSpinBox_valueChanged(double value) { int minpos = m_Ui->red_horizontalSlider->minimum(); int maxpos = m_Ui->red_horizontalSlider->maximum(); @@ -550,13 +421,10 @@ double maxv = m_Ui->red_doubleSpinBox->maximum(); m_Ui->red_horizontalSlider->setValue( value2pos(value, minpos, maxpos, minv, maxv) ); - if (fabs(value - 1.0) < 1e-4) - m_Ui->red_toolButton->setEnabled(false); - else - m_Ui->red_toolButton->setEnabled(true); + m_Ui->red_toolButton->setEnabled(fabs(value - 1.0) >= 1e-4); } -void PreferencesDialog::blue_horizontalSlider_valueChanged(int pos) +void PreferencesDialog::on_blue_horizontalSlider_valueChanged(int pos) { int minpos = m_Ui->blue_horizontalSlider->minimum(); int maxpos = m_Ui->blue_horizontalSlider->maximum(); @@ -566,7 +434,7 @@ m_Ui->blue_doubleSpinBox->setValue( pos2value(pos, minpos, maxpos, minv, maxv) ); } -void PreferencesDialog::blue_doubleSpinBox_valueChanged(double value) +void PreferencesDialog::on_blue_doubleSpinBox_valueChanged(double value) { int minpos = m_Ui->blue_horizontalSlider->minimum(); int maxpos = m_Ui->blue_horizontalSlider->maximum(); @@ -574,13 +442,10 @@ double maxv = m_Ui->blue_doubleSpinBox->maximum(); m_Ui->blue_horizontalSlider->setValue( value2pos(value, minpos, maxpos, minv, maxv) ); - if (fabs(value - 1.0) < 1e-4) - m_Ui->blue_toolButton->setEnabled(false); - else - m_Ui->blue_toolButton->setEnabled(true); + m_Ui->blue_toolButton->setEnabled(fabs(value - 1.0) >= 1e-4); } -void PreferencesDialog::green_horizontalSlider_valueChanged( int pos) +void PreferencesDialog::on_green_horizontalSlider_valueChanged( int pos) { int minpos = m_Ui->green_horizontalSlider->minimum(); int maxpos = m_Ui->green_horizontalSlider->maximum(); @@ -590,7 +455,7 @@ m_Ui->green_doubleSpinBox->setValue( pos2value(pos, minpos, maxpos, minv, maxv) ); } -void PreferencesDialog::green_doubleSpinBox_valueChanged( double value) +void PreferencesDialog::on_green_doubleSpinBox_valueChanged( double value) { int minpos = m_Ui->green_horizontalSlider->minimum(); int maxpos = m_Ui->green_horizontalSlider->maximum(); @@ -598,73 +463,69 @@ double maxv = m_Ui->green_doubleSpinBox->maximum(); m_Ui->blue_horizontalSlider->setValue( value2pos(value, minpos, maxpos, minv, maxv) ); - if (fabs(value - 1.0) < 1e-4) - m_Ui->green_toolButton->setEnabled(false); - else - m_Ui->green_toolButton->setEnabled(true); + m_Ui->green_toolButton->setEnabled(fabs(value - 1.0) >= 1e-4); } -void PreferencesDialog::user_qual_toolButton_clicked() +void PreferencesDialog::on_user_qual_toolButton_clicked() { - m_Ui->user_qual_comboBox->setCurrentIndex(0); - m_Ui->user_qual_toolButton->setEnabled(false); + m_Ui->user_qual_comboBox->setCurrentIndex(0); } -void PreferencesDialog::med_passes_toolButton_clicked() +void PreferencesDialog::on_med_passes_toolButton_clicked() { m_Ui->med_passes_horizontalSlider->setValue(0); m_Ui->med_passes_spinBox->setValue(0); m_Ui->med_passes_toolButton->setEnabled(false); } -void PreferencesDialog::wb_method_toolButton_clicked() +void PreferencesDialog::on_wb_method_toolButton_clicked() { m_Ui->wb_method_comboBox->setCurrentIndex(1); m_Ui->wb_method_toolButton->setEnabled(false); } -void PreferencesDialog::TK_toolButton_clicked() +void PreferencesDialog::on_TK_toolButton_clicked() { m_Ui->TK_horizontalSlider->setValue(6500); m_Ui->TK_spinBox->setValue(6500); m_Ui->TK_toolButton->setEnabled(false); } -void PreferencesDialog::highlights_toolButton_clicked() +void PreferencesDialog::on_highlights_toolButton_clicked() { m_Ui->highlights_comboBox->setCurrentIndex(0); m_Ui->highlights_toolButton->setEnabled(false); } -void PreferencesDialog::level_toolButton_clicked() +void PreferencesDialog::on_level_toolButton_clicked() { m_Ui->level_horizontalSlider->setValue(0); m_Ui->level_spinBox->setValue(0); m_Ui->level_toolButton->setEnabled(false); } -void PreferencesDialog::brightness_toolButton_clicked() +void PreferencesDialog::on_brightness_toolButton_clicked() { m_Ui->brightness_horizontalSlider->setValue(10); m_Ui->brightness_doubleSpinBox->setValue(1.0); m_Ui->brightness_toolButton->setEnabled(false); } -void PreferencesDialog::user_black_toolButton_clicked() +void PreferencesDialog::on_user_black_toolButton_clicked() { m_Ui->user_black_horizontalSlider->setValue(0); m_Ui->user_black_spinBox->setValue(0); m_Ui->user_black_toolButton->setEnabled(false); } -void PreferencesDialog::user_sat_toolButton_clicked() +void PreferencesDialog::on_user_sat_toolButton_clicked() { m_Ui->user_sat_horizontalSlider->setValue(20000); m_Ui->user_sat_spinBox->setValue(20000); m_Ui->user_sat_toolButton->setEnabled(false); } -void PreferencesDialog::threshold_toolButton_clicked() +void PreferencesDialog::on_threshold_toolButton_clicked() { m_Ui->use_noise_CB->setChecked(true); m_Ui->threshold_horizontalSlider->setValue(100); @@ -672,7 +533,7 @@ m_Ui->threshold_toolButton->setEnabled(false); } -void PreferencesDialog::red_toolButton_clicked() +void PreferencesDialog::on_red_toolButton_clicked() { int minpos = m_Ui->red_horizontalSlider->minimum(); int maxpos = m_Ui->red_horizontalSlider->maximum(); @@ -684,7 +545,7 @@ m_Ui->red_toolButton->setEnabled(false); } -void PreferencesDialog::blue_toolButton_clicked() +void PreferencesDialog::on_blue_toolButton_clicked() { int minpos = m_Ui->blue_horizontalSlider->minimum(); int maxpos = m_Ui->blue_horizontalSlider->maximum(); @@ -696,7 +557,7 @@ m_Ui->blue_toolButton->setEnabled(false); } -void PreferencesDialog::green_toolButton_clicked() +void PreferencesDialog::on_green_toolButton_clicked() { int minpos = m_Ui->green_horizontalSlider->minimum(); int maxpos = m_Ui->green_horizontalSlider->maximum(); @@ -708,29 +569,9 @@ m_Ui->green_toolButton->setEnabled(false); } -void PreferencesDialog::toolButtonInterface_clicked() +void PreferencesDialog::toolButton_clicked(int index) { - m_Ui->stackedPagesWidget->setCurrentIndex(0); -} - -void PreferencesDialog::toolButtonHDR_clicked() -{ - m_Ui->stackedPagesWidget->setCurrentIndex(1); -} - -void PreferencesDialog::toolButtonTM_clicked() -{ - m_Ui->stackedPagesWidget->setCurrentIndex(2); -} - -void PreferencesDialog::toolButtonRAW_clicked() -{ - m_Ui->stackedPagesWidget->setCurrentIndex(3); -} - -void PreferencesDialog::toolButtonExtTool_clicked() -{ - m_Ui->stackedPagesWidget->setCurrentIndex(4); + m_Ui->stackedPagesWidget->setCurrentIndex(index); } void PreferencesDialog::from_options_to_gui() @@ -751,10 +592,6 @@ // Batch TM output format int current_batch_tm_output_type = mappingBatchTmQStringToInt( luminance_options.getBatchTmLdrFormat() ); m_Ui->batchLdrFormatComboBox->setCurrentIndex( current_batch_tm_output_type ); - batchTmFormatSelector( current_batch_tm_output_type ); - - m_Ui->batchTmOutputQualitySlider->setValue( luminance_options.getBatchTmDefaultOutputQuality() ); - m_Ui->batchTmOutputQualitySpinBox->setValue( luminance_options.getBatchTmDefaultOutputQuality() ); m_Ui->numThreadspinBox->setValue( luminance_options.getBatchTmNumThreads() ); @@ -777,24 +614,7 @@ m_Ui->med_passes_horizontalSlider->setValue(luminance_options.getRawMedPasses()); m_Ui->med_passes_spinBox->setValue(luminance_options.getRawMedPasses()); m_Ui->wb_method_comboBox->setCurrentIndex(luminance_options.getRawWhiteBalanceMethod()); - if (luminance_options.getRawWhiteBalanceMethod() < 3) - { - //TODO - m_Ui->TK_label->setEnabled(false); - m_Ui->TK_horizontalSlider->setEnabled(false); - m_Ui->TK_spinBox->setEnabled(false); - m_Ui->green_label->setEnabled(false); - m_Ui->green_horizontalSlider->setEnabled(false); - m_Ui->green_doubleSpinBox->setEnabled(false); - } - else { - m_Ui->TK_label->setEnabled(true); - m_Ui->TK_horizontalSlider->setEnabled(true); - m_Ui->TK_spinBox->setEnabled(true); - m_Ui->green_label->setEnabled(true); - m_Ui->green_horizontalSlider->setEnabled(true); - m_Ui->green_doubleSpinBox->setEnabled(true); - } + m_Ui->TK_horizontalSlider->setValue(luminance_options.getRawTemperatureKelvin()); m_Ui->TK_spinBox->setValue(luminance_options.getRawTemperatureKelvin()); m_Ui->highlights_comboBox->setCurrentIndex(luminance_options.getRawHighlightsMode()); @@ -805,51 +625,19 @@ m_Ui->brightness_horizontalSlider->setValue((int) 10.0*luminance_options.getRawBrightness()); m_Ui->brightness_doubleSpinBox->setValue(luminance_options.getRawBrightness()); m_Ui->use_black_CB->setChecked(luminance_options.isRawUseBlack()); - if ( luminance_options.isRawUseBlack() ) { - m_Ui->user_black_horizontalSlider->setEnabled(true); - m_Ui->user_black_spinBox->setEnabled(true); - } - else { - m_Ui->user_black_horizontalSlider->setEnabled(false); - m_Ui->user_black_spinBox->setEnabled(false); - } + m_Ui->user_black_horizontalSlider->setValue(luminance_options.getRawUserBlack()); m_Ui->user_black_spinBox->setValue(luminance_options.getRawUserBlack()); m_Ui->use_sat_CB->setChecked(luminance_options.isRawUseSaturation()); - if (luminance_options.isRawUseSaturation()) { - m_Ui->user_sat_horizontalSlider->setEnabled(true); - m_Ui->user_sat_spinBox->setEnabled(true); - } - else { - m_Ui->user_sat_horizontalSlider->setEnabled(false); - m_Ui->user_sat_spinBox->setEnabled(false); - } + m_Ui->user_sat_horizontalSlider->setValue(luminance_options.getRawUserSaturation()); m_Ui->user_sat_spinBox->setValue(luminance_options.getRawUserSaturation()); m_Ui->use_noise_CB->setChecked(luminance_options.isRawUseNoiseReduction()); - if ( luminance_options.isRawUseNoiseReduction() ) { - m_Ui->threshold_horizontalSlider->setEnabled(true); - m_Ui->threshold_spinBox->setEnabled(true); - } - else { - m_Ui->threshold_horizontalSlider->setEnabled(false); - m_Ui->threshold_spinBox->setEnabled(false); - } + m_Ui->threshold_horizontalSlider->setValue( luminance_options.getRawNoiseReductionThreshold() ); m_Ui->threshold_spinBox->setValue( luminance_options.getRawNoiseReductionThreshold() ); m_Ui->use_chroma_CB->setChecked( luminance_options.isRawUseChroma() ); - if ( luminance_options.isRawUseChroma() ) { - m_Ui->red_horizontalSlider->setEnabled(true); - m_Ui->red_doubleSpinBox->setEnabled(true); - m_Ui->blue_horizontalSlider->setEnabled(true); - m_Ui->blue_doubleSpinBox->setEnabled(true); - } - else { - m_Ui->red_horizontalSlider->setEnabled(false); - m_Ui->red_doubleSpinBox->setEnabled(false); - m_Ui->blue_horizontalSlider->setEnabled(false); - m_Ui->blue_doubleSpinBox->setEnabled(false); - } + double r_minv = m_Ui->red_doubleSpinBox->minimum(); double r_maxv = m_Ui->red_doubleSpinBox->maximum(); double r_minpos = m_Ui->red_horizontalSlider->minimum(); @@ -883,16 +671,19 @@ m_Ui->red_toolButton->setEnabled( luminance_options.value(KEY_RED_TOOLBUTTON).toBool()); m_Ui->blue_toolButton->setEnabled( luminance_options.value(KEY_BLUE_TOOLBUTTON).toBool()); m_Ui->green_toolButton->setEnabled( luminance_options.value(KEY_GREEN_TOOLBUTTON).toBool()); + + m_Ui->camera_lineEdit->setText( luminance_options.getCameraProfileFileName() ); + m_Ui->monitor_lineEdit->setText( luminance_options.getMonitorProfileFileName() ); + m_Ui->printer_lineEdit->setText( luminance_options.getPrinterProfileFileName() ); } -PreferencesDialog::~PreferencesDialog() {} - -void PreferencesDialog::updateLineEditString() +void PreferencesDialog::on_chooseCachePathButton_clicked() { QString dir = QFileDialog::getExistingDirectory(this, - tr("Choose a directory"), - QDir::currentPath(), - QFileDialog::ShowDirsOnly|QFileDialog::DontResolveSymlinks); + tr("Choose a directory"), + QDir::currentPath(), + QFileDialog::ShowDirsOnly|QFileDialog::DontResolveSymlinks + ); if (!dir.isEmpty()) { m_Ui->lineEditTempPath->setText(dir); @@ -904,3 +695,35 @@ QWhatsThis::enterWhatsThisMode(); } +void PreferencesDialog::on_camera_toolButton_clicked() +{ + QString fileName = QFileDialog::getOpenFileName(this, tr("Open ICC Profile"), + ICC_PATH, + tr("Color profile (*.icc *.ICC *.icm *.ICM)") + ); + if (!fileName.isEmpty()) { + m_Ui->camera_lineEdit->setText(fileName); + } +} + +void PreferencesDialog::on_monitor_toolButton_clicked() +{ + QString fileName = QFileDialog::getOpenFileName(this, tr("Open ICC Profile"), + ICC_PATH, + tr("Color profile (*.icc)") + ); + if (!fileName.isEmpty()) { + m_Ui->monitor_lineEdit->setText(fileName); + } +} + +void PreferencesDialog::on_printer_toolButton_clicked() +{ + QString fileName = QFileDialog::getOpenFileName(this, tr("Open ICC Profile"), + ICC_PATH, + tr("Color profile (*.icc)") + ); + if (!fileName.isEmpty()) { + m_Ui->printer_lineEdit->setText(fileName); + } +} diff -Nru luminance-2.2.1/src/Preferences/PreferencesDialog.h luminance-2.3.0/src/Preferences/PreferencesDialog.h --- luminance-2.2.1/src/Preferences/PreferencesDialog.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Preferences/PreferencesDialog.h 2012-07-01 09:10:50.000000000 +0000 @@ -26,6 +26,7 @@ #include #include +#include namespace Ui { @@ -47,60 +48,59 @@ QColor infnancolor, negcolor; QMap fromIso639ToGuiIndex; QMap fromGuiIndexToIso639; + QSignalMapper* toolButtonMapper; protected: virtual void changeEvent(QEvent* event); private Q_SLOTS: - void negative_clicked(); - void infnan_clicked(); - void ok_clicked(); - void cancel_clicked(); - void updateLineEditString(); + void on_negativeColorButton_clicked(); + void on_ifnanColorButton_clicked(); + void on_okButton_clicked(); + void on_cancelButton_clicked(); + void on_chooseCachePathButton_clicked(); void enterWhatsThis(); - void user_qual_comboBox_currentIndexChanged(int); - void med_passes_spinBox_valueChanged(int); - void wb_method_comboBox_currentIndexChanged(int); - void TK_spinBox_valueChanged(int); - void highlights_comboBox_currentIndexChanged(int); - void level_spinBox_valueChanged(int); - void user_black_spinBox_valueChanged(int); - void user_sat_spinBox_valueChanged(int); - void threshold_spinBox_valueChanged(int); - void use_black_CB_stateChanged(int); - void use_sat_CB_stateChanged(int); - void use_noise_CB_stateChanged(int); - void use_chroma_CB_stateChanged(int); - void brightness_horizontalSlider_valueChanged(int); - void brightness_doubleSpinBox_valueChanged(double); - void red_horizontalSlider_valueChanged(int); - void red_doubleSpinBox_valueChanged(double); - void blue_horizontalSlider_valueChanged(int); - void blue_doubleSpinBox_valueChanged(double); - void green_horizontalSlider_valueChanged(int); - void green_doubleSpinBox_valueChanged(double); - - void user_qual_toolButton_clicked(); - void med_passes_toolButton_clicked(); - void wb_method_toolButton_clicked(); - void TK_toolButton_clicked(); - void highlights_toolButton_clicked(); - void level_toolButton_clicked(); - void brightness_toolButton_clicked(); - void user_black_toolButton_clicked(); - void user_sat_toolButton_clicked(); - void threshold_toolButton_clicked(); - void red_toolButton_clicked(); - void blue_toolButton_clicked(); - void green_toolButton_clicked(); - - void toolButtonInterface_clicked(); - void toolButtonHDR_clicked(); - void toolButtonTM_clicked(); - void toolButtonRAW_clicked(); - void toolButtonExtTool_clicked(); + void on_user_qual_comboBox_currentIndexChanged(int); + void on_med_passes_spinBox_valueChanged(int); + void on_wb_method_comboBox_currentIndexChanged(int); + void on_TK_spinBox_valueChanged(int); + void on_highlights_comboBox_currentIndexChanged(int); + void on_level_spinBox_valueChanged(int); + void on_user_black_spinBox_valueChanged(int); + void on_user_sat_spinBox_valueChanged(int); + void on_threshold_spinBox_valueChanged(int); + void on_use_black_CB_stateChanged(int); + void on_use_sat_CB_stateChanged(int); + void on_use_noise_CB_stateChanged(int); + void on_use_chroma_CB_stateChanged(int); + void on_brightness_horizontalSlider_valueChanged(int); + void on_brightness_doubleSpinBox_valueChanged(double); + void on_red_horizontalSlider_valueChanged(int); + void on_red_doubleSpinBox_valueChanged(double); + void on_blue_horizontalSlider_valueChanged(int); + void on_blue_doubleSpinBox_valueChanged(double); + void on_green_horizontalSlider_valueChanged(int); + void on_green_doubleSpinBox_valueChanged(double); + + void on_user_qual_toolButton_clicked(); + void on_med_passes_toolButton_clicked(); + void on_wb_method_toolButton_clicked(); + void on_TK_toolButton_clicked(); + void on_highlights_toolButton_clicked(); + void on_level_toolButton_clicked(); + void on_brightness_toolButton_clicked(); + void on_user_black_toolButton_clicked(); + void on_user_sat_toolButton_clicked(); + void on_threshold_toolButton_clicked(); + void on_red_toolButton_clicked(); + void on_blue_toolButton_clicked(); + void on_green_toolButton_clicked(); + + void on_camera_toolButton_clicked(); + void on_monitor_toolButton_clicked(); + void on_printer_toolButton_clicked(); - void batchTmFormatSelector(int); + void toolButton_clicked(int); }; #endif diff -Nru luminance-2.2.1/src/Preferences/PreferencesDialog.ui luminance-2.3.0/src/Preferences/PreferencesDialog.ui --- luminance-2.2.1/src/Preferences/PreferencesDialog.ui 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Preferences/PreferencesDialog.ui 2012-07-01 09:10:50.000000000 +0000 @@ -6,7 +6,7 @@ 0 0 - 599 + 786 617 @@ -30,13 +30,13 @@ - + External Tools - + :/new/prefix1/images/gear.png:/new/prefix1/images/gear.png @@ -65,7 +65,7 @@ HDR Options - + :/new/prefix1/images/HDR_icon.png:/new/prefix1/images/HDR_icon.png @@ -94,7 +94,7 @@ Interface - + :/new/prefix1/images/preferences-desktop-theme.png:/new/prefix1/images/preferences-desktop-theme.png @@ -126,7 +126,7 @@ Tone Mapping - + :/new/prefix1/images/tonemap.png:/new/prefix1/images/tonemap.png @@ -149,7 +149,7 @@ - + Qt::Horizontal @@ -168,7 +168,7 @@ RAW Conversion - + :/new/prefix1/images/rawconverter.png:/new/prefix1/images/rawconverter.png @@ -207,6 +207,35 @@ + + + + Color Management + + + + :/new/prefix1/images/cms.png:/new/prefix1/images/cms.png + + + + 48 + 48 + + + + true + + + true + + + Qt::ToolButtonTextUnderIcon + + + true + + + @@ -250,67 +279,142 @@ - Czech + český + + + + :/flags/images/CZEC0001.PNG + - English + 中文 + + + + :/flags/images/CHIN0001.PNG + - Finnish + English + + + + :/flags/images/UNKG0001.PNG + - French + Suomi + + + + :/flags/images/FINL0001.PNG + - German + Français + + + + :/flags/images/FRAN0001.PNG + - Indonesian + Deutsch + + + + :/flags/images/GERM0001.PNG + - Italian + Magyar + + + + :/flags/images/HUNG0001.PNG + - Polish + Indonesia + + + + :/flags/images/INDN0001.PNG + - Romanian + Italiano + + + + :/flags/images/ITAL0001.PNG + - Russian + Polski + + + + :/flags/images/POLA0001.PNG + - Spanish + Română + + + + :/flags/images/RMNA0001.PNG + - Turkish + Русский + + + + :/flags/images/RUSS0001.PNG + - Hungarian + Español + + + + :/flags/images/SPAN0001.PNG + + + + + + Türk + + + + :/flags/images/TURK0001.PNG + @@ -324,6 +428,18 @@ + + + 0 + 0 + + + + + 250 + 16777215 + + px @@ -369,6 +485,9 @@ + + QFormLayout::AllNonFixedFieldsGrow + @@ -415,6 +534,12 @@ + + + 0 + 0 + + @@ -445,6 +570,9 @@ + + QFormLayout::AllNonFixedFieldsGrow + @@ -460,7 +588,7 @@ - + 0 0 @@ -484,11 +612,34 @@ + + + 0 + 0 + + - C&hoose + &Browse... + + + + :/new/prefix1/images/fileopen.png:/new/prefix1/images/fileopen.png + + + + Qt::Horizontal + + + + 40 + 20 + + + + @@ -562,7 +713,7 @@ - + Amount of threads to use on multicore/SMP machines @@ -578,10 +729,10 @@ - + - + 0 0 @@ -597,76 +748,6 @@ - - - - Batch Tonemapping Default Output Quality - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - - - - - - - - 250 - 0 - - - - - 250 - 16777215 - - - - 1 - - - 100 - - - 100 - - - Qt::Horizontal - - - QSlider::TicksBelow - - - 50 - - - - - - - - 70 - 0 - - - - - 70 - 16777215 - - - - 100 - - - - - @@ -754,7 +835,7 @@ ... - + :/new/prefix1/images/edit-undo.png:/new/prefix1/images/edit-undo.png @@ -843,7 +924,7 @@ ... - + :/new/prefix1/images/edit-undo.png:/new/prefix1/images/edit-undo.png @@ -974,7 +1055,7 @@ ... - + :/new/prefix1/images/edit-undo.png:/new/prefix1/images/edit-undo.png @@ -1093,7 +1174,7 @@ ... - + :/new/prefix1/images/edit-undo.png:/new/prefix1/images/edit-undo.png @@ -1192,7 +1273,7 @@ ... - + :/new/prefix1/images/edit-undo.png:/new/prefix1/images/edit-undo.png @@ -1265,7 +1346,7 @@ ... - + :/new/prefix1/images/edit-undo.png:/new/prefix1/images/edit-undo.png @@ -1348,7 +1429,7 @@ ... - + :/new/prefix1/images/edit-undo.png:/new/prefix1/images/edit-undo.png @@ -1460,7 +1541,7 @@ ... - + :/new/prefix1/images/edit-undo.png:/new/prefix1/images/edit-undo.png @@ -1557,7 +1638,7 @@ ... - + :/new/prefix1/images/edit-undo.png:/new/prefix1/images/edit-undo.png @@ -1654,7 +1735,7 @@ ... - + :/new/prefix1/images/edit-undo.png:/new/prefix1/images/edit-undo.png @@ -1796,7 +1877,7 @@ ... - + :/new/prefix1/images/edit-undo.png:/new/prefix1/images/edit-undo.png @@ -1848,7 +1929,7 @@ - 1 + 0 2000000 @@ -1924,7 +2005,7 @@ ... - + :/new/prefix1/images/edit-undo.png:/new/prefix1/images/edit-undo.png @@ -1951,7 +2032,7 @@ - 1 + 0 2000000 @@ -2027,7 +2108,7 @@ ... - + :/new/prefix1/images/edit-undo.png:/new/prefix1/images/edit-undo.png @@ -2058,262 +2139,245 @@ - - - Camera Profile - - - - - - - - false - - - Camera profile - - - - - - - - - false - - - - 250 - 0 - - - - - 250 - 16777215 - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Camera Profile</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the input color space used to decode RAW data.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">None</span>: no input color profile is used during RAW decoding.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Embedded</span>: use embedded color profile from RAW file if exist.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom input color space profile.</p></body></html> - - - - None - - - - - Built in - - - - - Custom - - - - - - - - false - - - ... - - - - :/new/prefix1/images/edit-undo.png:/new/prefix1/images/edit-undo.png - - - - - - - - - - - false - - - - 250 - 0 - - - - - 250 - 16777215 - - - - - - - - false - - - ... - - - - :/new/prefix1/images/filesave.png:/new/prefix1/images/filesave.png - - - - - - - - - - - false - - - - 250 - 0 - - - - - 250 - 16777215 - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Workspace</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Select here the output color space used to decode RAW data.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Raw (linear)</span>: in this mode, no output color space is used during RAW decoding.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">sRGB</span>: this is a RGB color space, created cooperatively by Hewlett-Packard and Microsoft. It is the best choice for images destined for the Web and portrait photography.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Adobe RGB</span>: this color space is an extended RGB color space, developed by Adobe. It is used for photography applications such as advertising and fine art.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Wide Gamut</span>: this color space is an expanded version of the Adobe RGB color space.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Pro-Photo</span>: this color space is an RGB color space, developed by Kodak, that offers an especially large gamut designed for use with photographic outputs in mind.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Custom</span>: use a custom output color space profile.</p></body></html> - - - 1 - - - - RAW - - - - - sRGB - - - - - Adobe RGB - - - - - Wide Gamut - - - - - Pro Photo - - - - - Custom - - - - - - - - false - - - ... - - - - :/new/prefix1/images/edit-undo.png:/new/prefix1/images/edit-undo.png - - - - - - - - - false - - - Color Space - - - - - - - - - false - - - - 250 - 0 - - - - - 250 - 16777215 - - - - - - - - false - - - ... - - - - :/new/prefix1/images/filesave.png:/new/prefix1/images/filesave.png - - - - - - - - - + + + + + + + + Monitor + + + + + + + + + + + :/new/prefix1/images/video-television.png + + + + + + + Monitor Profile + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + Browse... + + + + :/new/prefix1/images/fileopen.png:/new/prefix1/images/fileopen.png + + + Qt::ToolButtonTextBesideIcon + + + + + + + + + + + + Camera + + + + + + + + + + + :/new/prefix1/images/camera-photo.png + + + + + + + true + + + Camera profile + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + true + + + + 250 + 0 + + + + + 16777215 + 16777215 + + + + + + + + true + + + Browse... + + + + :/new/prefix1/images/fileopen.png:/new/prefix1/images/fileopen.png + + + Qt::ToolButtonTextBesideIcon + + + + + + + + + + + + Printer + + + + + + + + + + + :/new/prefix1/images/printer.png + + + + + + + Printer profile + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + Browse... + + + + :/new/prefix1/images/fileopen.png:/new/prefix1/images/fileopen.png + + + Qt::ToolButtonTextBesideIcon + + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + @@ -2336,18 +2400,18 @@ + + + 0 + 0 + + 250 0 - - - 250 - 16777215 - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -2405,7 +2469,6 @@ cancelButton okButton lineEditTempPath - chooseCachePathButton user_qual_comboBox user_qual_toolButton med_passes_horizontalSlider @@ -2438,52 +2501,204 @@ blue_horizontalSlider blue_doubleSpinBox blue_toolButton - camera_comboBox - toolButton_16 - camera_lineEdit - camera_toolButton - colorspace_comboBox - toolButton_17 - colorspace_lineEdit - colorspace_toolButton TK_horizontalSlider wb_method_toolButton wb_method_comboBox TK_spinBox - + - batchTmOutputQualitySlider + med_passes_horizontalSlider + valueChanged(int) + med_passes_spinBox + setValue(int) + + + 276 + 217 + + + 525 + 217 + + + + + med_passes_spinBox + valueChanged(int) + med_passes_horizontalSlider + setValue(int) + + + 525 + 217 + + + 276 + 217 + + + + + TK_horizontalSlider + valueChanged(int) + TK_spinBox + setValue(int) + + + 323 + 165 + + + 557 + 165 + + + + + TK_spinBox + valueChanged(int) + TK_horizontalSlider + setValue(int) + + + 557 + 165 + + + 323 + 165 + + + + + level_horizontalSlider + valueChanged(int) + level_spinBox + setValue(int) + + + 323 + 259 + + + 557 + 259 + + + + + level_spinBox + valueChanged(int) + level_horizontalSlider + setValue(int) + + + 557 + 259 + + + 323 + 259 + + + + + user_black_horizontalSlider + valueChanged(int) + user_black_spinBox + setValue(int) + + + 255 + 369 + + + 558 + 369 + + + + + user_black_spinBox + valueChanged(int) + user_black_horizontalSlider + setValue(int) + + + 558 + 369 + + + 255 + 369 + + + + + user_sat_horizontalSlider + valueChanged(int) + user_sat_spinBox + setValue(int) + + + 392 + 401 + + + 694 + 401 + + + + + user_sat_spinBox + valueChanged(int) + user_sat_horizontalSlider + setValue(int) + + + 694 + 401 + + + 392 + 401 + + + + + threshold_horizontalSlider valueChanged(int) - batchTmOutputQualitySpinBox + threshold_spinBox setValue(int) - 357 - 201 + 306 + 158 - 529 - 202 + 545 + 158 - batchTmOutputQualitySpinBox + threshold_spinBox valueChanged(int) - batchTmOutputQualitySlider + threshold_horizontalSlider setValue(int) - 529 - 202 + 545 + 158 - 357 - 201 + 306 + 158 diff -Nru luminance-2.2.1/src/PreviewPanel/PreviewPanel.ui luminance-2.3.0/src/PreviewPanel/PreviewPanel.ui --- luminance-2.2.1/src/PreviewPanel/PreviewPanel.ui 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/PreviewPanel/PreviewPanel.ui 2012-07-01 09:10:50.000000000 +0000 @@ -17,7 +17,7 @@ - Form + Preview @@ -63,8 +63,8 @@ 0 0 - 125 - 934 + 124 + 950 diff -Nru luminance-2.2.1/src/Resize/ResizeDialog.ui luminance-2.3.0/src/Resize/ResizeDialog.ui --- luminance-2.2.1/src/Resize/ResizeDialog.ui 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Resize/ResizeDialog.ui 2012-07-01 09:10:50.000000000 +0000 @@ -13,7 +13,7 @@ Scale Image - :/new/prefix1/images/luminance.png + :/new/prefix1/images/luminance.png true @@ -196,7 +196,7 @@ &Reset - :/new/prefix1/images/undo.png + :/new/prefix1/images/undo.png Qt::ToolButtonTextBesideIcon @@ -248,7 +248,7 @@ - + diff -Nru luminance-2.2.1/src/Threads/HdrInputLoader.cpp luminance-2.3.0/src/Threads/HdrInputLoader.cpp --- luminance-2.2.1/src/Threads/HdrInputLoader.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Threads/HdrInputLoader.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -22,6 +22,7 @@ */ #include +#include #include #include @@ -47,12 +48,12 @@ if (rotation_angle != 0) { - QMatrix rm; - rm.rotate(rotation_angle); - - QImage *notTransformedImage = *oldImage; - *oldImage = (new QImage((*oldImage)->transformed(rm))); - delete[] notTransformedImage->bits(); + QMatrix rm; + rm.rotate(rotation_angle); + + QImage *notTransformedImage = *oldImage; + *oldImage = (new QImage((*oldImage)->transformed(rm))); + delete[] notTransformedImage->bits(); } } @@ -69,9 +70,10 @@ //now go and fill the list of image data (real payload) // check for extension: if JPEG: if (extension.startsWith("JP")) { - QImage *newimage=new QImage(qfi.filePath()); - if (newimage->isNull()) - throw "Failed Loading Image"; + JpegReader reader(qfi.filePath()); + QImage *newimage = reader.readJpegIntoQImage(); + if (newimage == NULL) + emit loadFailed(tr("ERROR loading %1").arg(qfi.fileName()),image_idx); conditionallyRotateImage(qfi, &newimage); @@ -81,14 +83,14 @@ } //if tiff else if(extension.startsWith("TIF")) { - TiffReader reader(QFile::encodeName(qfi.filePath()), QFile::encodeName(luminance_options.getTempDir()), true); + TiffReader reader(QFile::encodeName(qfi.filePath()), QFile::encodeName(luminance_options.getTempDir()), true); connect(&reader, SIGNAL(maximumValue(int)), this, SIGNAL(maximumValue(int))); connect(&reader, SIGNAL(nextstep(int)), this, SIGNAL(nextstep(int))); //if 8bit ldr tiff if (reader.is8bitTiff()) { - QImage *newimage=reader.readIntoQImage(); + QImage *newimage = reader.readIntoQImage(); if (newimage->isNull()) - throw "Failed Loading Image"; + emit loadFailed(tr("ERROR loading %1").arg(qfi.fileName()),image_idx); conditionallyRotateImage(qfi, &newimage); @@ -100,7 +102,7 @@ else if (reader.is16bitTiff()) { pfs::Frame *frame = reader.readIntoPfsFrame(); if (frame == NULL) - throw "Failed Loading Image"; + emit loadFailed(tr("ERROR loading %1").arg(qfi.fileName()),image_idx); emit mdrReady(frame, image_idx, expotime, fname); //QApplication::restoreOverrideCursor(); return; @@ -113,11 +115,11 @@ } //not a jpeg of tiff file, so it's raw input (hdr) } else { - pfs::Frame* frame = readRawIntoPfsFrame(QFile::encodeName(fname), QFile::encodeName(luminance_options.getTempDir()), &luminance_options, true, prog_callback, this); + pfs::Frame* frame = readRawIntoPfsFrame(QFile::encodeName(fname), QFile::encodeName(luminance_options.getTempDir()), &luminance_options, true, prog_callback, this); if (frame == NULL) - throw "Failed Loading Image"; + emit loadFailed(tr("ERROR loading %1").arg(qfi.fileName()),image_idx); - QString outfname = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".tiff"); + QString outfname = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".tiff"); emit mdrReady(frame, image_idx, expotime, outfname); } } @@ -126,6 +128,15 @@ //QApplication::restoreOverrideCursor(); return; } + catch (QString err) { + emit loadFailed((err + " : %1").arg(fname), image_idx); + return; + } + catch (const std::runtime_error& err) + { + emit loadFailed((QString(err.what()) + " : %1").arg(fname), image_idx); + return; + } catch (...) { qDebug("LIT: catched exception"); emit loadFailed(QString(tr("ERROR: Failed Loading file: %1")).arg(fname),image_idx); diff -Nru luminance-2.2.1/src/TonemappingEngine/TonemapOperatorFattal02.cpp luminance-2.3.0/src/TonemappingEngine/TonemapOperatorFattal02.cpp --- luminance-2.2.1/src/TonemappingEngine/TonemapOperatorFattal02.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingEngine/TonemapOperatorFattal02.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -28,14 +28,14 @@ * */ +#include + #include "TonemappingEngine/TonemapOperatorFattal02.h" #include "TonemappingOperators/pfstmo.h" #include "Core/TonemappingOptions.h" #include "Libpfs/channel.h" #include "Libpfs/colorspace.h" -QMutex TonemapOperatorFattal02::m_Mutex; - TonemapOperatorFattal02::TonemapOperatorFattal02(): TonemapOperator() {} @@ -50,15 +50,29 @@ pfs::transformColorSpace(pfs::CS_RGB, X->getChannelData(), Y->getChannelData(), Z->getChannelData(), pfs::CS_XYZ, X->getChannelData(), Y->getChannelData(), Z->getChannelData()); - m_Mutex.lock(); + float ratio = opts->origxsize / opts->xsize; + int detail_level = 0; + if ( ratio < 2 ) + detail_level = 3; + else if ( ratio < 4 ) + detail_level = 2; + else if ( ratio < 8 ) + detail_level = 1; + else + detail_level = 0; + +// std::cout << "RATIO = " << ratio << ", "; +// std::cout << "DETAIL_LEVEL = " << detail_level << std::endl; + pfstmo_fattal02(workingframe, opts->operator_options.fattaloptions.alpha, opts->operator_options.fattaloptions.beta, opts->operator_options.fattaloptions.color, opts->operator_options.fattaloptions.noiseredux, opts->operator_options.fattaloptions.newfattal, + opts->operator_options.fattaloptions.fftsolver, + detail_level, &ph); - m_Mutex.unlock(); pfs::transformColorSpace(pfs::CS_XYZ, X->getChannelData(), Y->getChannelData(), Z->getChannelData(), pfs::CS_RGB, X->getChannelData(), Y->getChannelData(), Z->getChannelData()); diff -Nru luminance-2.2.1/src/TonemappingEngine/TonemapOperatorFattal02.h luminance-2.3.0/src/TonemappingEngine/TonemapOperatorFattal02.h --- luminance-2.2.1/src/TonemappingEngine/TonemapOperatorFattal02.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingEngine/TonemapOperatorFattal02.h 2012-07-01 09:10:50.000000000 +0000 @@ -31,8 +31,6 @@ #ifndef TONEMAP_OPERATOR_FATTAL02_H #define TONEMAP_OPERATOR_FATTAL02_H -#include - #include "TonemappingEngine/TonemapOperator.h" class TonemapOperatorFattal02: public TonemapOperator @@ -43,8 +41,6 @@ TMOperator getType(); void tonemapFrame(pfs::Frame*, TonemappingOptions*, ProgressHelper& ph); -private: - static QMutex m_Mutex; }; #endif diff -Nru luminance-2.2.1/src/TonemappingEngine/TonemapOperatorReinhard02.cpp luminance-2.3.0/src/TonemappingEngine/TonemapOperatorReinhard02.cpp --- luminance-2.2.1/src/TonemappingEngine/TonemapOperatorReinhard02.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingEngine/TonemapOperatorReinhard02.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -34,6 +34,8 @@ #include "Libpfs/channel.h" #include "Libpfs/colorspace.h" +QMutex TonemapOperatorReinhard02::m_Mutex; + TonemapOperatorReinhard02::TonemapOperatorReinhard02(): TonemapOperator() {} @@ -48,6 +50,7 @@ pfs::transformColorSpace(pfs::CS_RGB, X->getChannelData(), Y->getChannelData(), Z->getChannelData(), pfs::CS_XYZ, X->getChannelData(), Y->getChannelData(), Z->getChannelData()); + m_Mutex.lock(); pfstmo_reinhard02(workingframe, opts->operator_options.reinhard02options.key, opts->operator_options.reinhard02options.phi, @@ -56,6 +59,7 @@ opts->operator_options.reinhard02options.upper, opts->operator_options.reinhard02options.scales, &ph); + m_Mutex.unlock(); pfs::transformColorSpace(pfs::CS_XYZ, X->getChannelData(), Y->getChannelData(), Z->getChannelData(), pfs::CS_SRGB, X->getChannelData(), Y->getChannelData(), Z->getChannelData()); diff -Nru luminance-2.2.1/src/TonemappingEngine/TonemapOperatorReinhard02.h luminance-2.3.0/src/TonemappingEngine/TonemapOperatorReinhard02.h --- luminance-2.2.1/src/TonemappingEngine/TonemapOperatorReinhard02.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingEngine/TonemapOperatorReinhard02.h 2012-07-01 09:10:50.000000000 +0000 @@ -31,6 +31,8 @@ #ifndef TONEMAP_OPERATOR_REINHARD02_H #define TONEMAP_OPERATOR_REINHARD02_H +#include + #include "TonemappingEngine/TonemapOperator.h" class TonemapOperatorReinhard02: public TonemapOperator @@ -40,6 +42,9 @@ TMOperator getType(); void tonemapFrame(pfs::Frame*, TonemappingOptions*, ProgressHelper& ph); + +private: + static QMutex m_Mutex; }; #endif diff -Nru luminance-2.2.1/src/TonemappingOperators/ashikhmin02/pfstmo_ashikhmin02.cpp luminance-2.3.0/src/TonemappingOperators/ashikhmin02/pfstmo_ashikhmin02.cpp --- luminance-2.2.1/src/TonemappingOperators/ashikhmin02/pfstmo_ashikhmin02.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/ashikhmin02/pfstmo_ashikhmin02.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -36,6 +36,7 @@ #include "Libpfs/colorspace.h" #include "Libpfs/frame.h" +#include "Common/ProgressHelper.h" #include "tmo_ashikhmin02.h" void calculateLuminance( pfs::Array2D* Y, float& avLum, float& maxLum, float& minLum); diff -Nru luminance-2.2.1/src/TonemappingOperators/ashikhmin02/tmo_ashikhmin02.cpp luminance-2.3.0/src/TonemappingOperators/ashikhmin02/tmo_ashikhmin02.cpp --- luminance-2.2.1/src/TonemappingOperators/ashikhmin02/tmo_ashikhmin02.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/ashikhmin02/tmo_ashikhmin02.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -30,7 +30,9 @@ #include #include +#include "Common/ProgressHelper.h" #include "Libpfs/array2d.h" +#include "Libpfs/frame.h" #include "tmo_ashikhmin02.h" #include "pyramid.h" diff -Nru luminance-2.2.1/src/TonemappingOperators/ashikhmin02/tmo_ashikhmin02.h luminance-2.3.0/src/TonemappingOperators/ashikhmin02/tmo_ashikhmin02.h --- luminance-2.2.1/src/TonemappingOperators/ashikhmin02/tmo_ashikhmin02.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/ashikhmin02/tmo_ashikhmin02.h 2012-07-01 09:10:50.000000000 +0000 @@ -26,12 +26,16 @@ * $Id: tmo_ashikhmin02.h,v 1.4 2004/11/16 13:40:46 yoshida Exp $ */ -#ifndef _tmo_ashikhmin02_h_ -#define _tmo_ashikhmin02_h_ +#ifndef TMO_ASHIKHMIN02_H +#define TMO_ASHIKHMIN02_H -#include "Libpfs/array2d.h" -#include "Libpfs/frame.h" -#include "Common/ProgressHelper.h" +// Forward declaration +namespace pfs { + class Array2D; + class Frame; +} + +class ProgressHelper; /** * @brief Michael Ashikhmin tone mapping operator @@ -47,4 +51,5 @@ int tmo_ashikhmin02(pfs::Array2D* Y, pfs::Array2D* L, float maxLum, float minLum, float avLum, bool simple_flag, float lc_value, int eq, ProgressHelper *ph); void pfstmo_ashikhmin02(pfs::Frame* inhdrframe, bool simple, float lc_value, int eq, ProgressHelper *ph); -#endif + +#endif // TMO_ASHIKHMIN02_H diff -Nru luminance-2.2.1/src/TonemappingOperators/drago03/pfstmo_drago03.cpp luminance-2.3.0/src/TonemappingOperators/drago03/pfstmo_drago03.cpp --- luminance-2.2.1/src/TonemappingOperators/drago03/pfstmo_drago03.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/drago03/pfstmo_drago03.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -34,6 +34,7 @@ #include #include "Libpfs/frame.h" +#include "Common/ProgressHelper.h" #include "tmo_drago03.h" void pfstmo_drago03(pfs::Frame *frame, float biasValue, ProgressHelper *ph) diff -Nru luminance-2.2.1/src/TonemappingOperators/drago03/tmo_drago03.cpp luminance-2.3.0/src/TonemappingOperators/drago03/tmo_drago03.cpp --- luminance-2.2.1/src/TonemappingOperators/drago03/tmo_drago03.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/drago03/tmo_drago03.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -29,17 +29,16 @@ * $Id: tmo_drago03.cpp,v 1.4 2008/11/04 23:43:08 rafm Exp $ */ -#include - -#include "TonemappingOperators/pfstmo.h" #include "tmo_drago03.h" +#include #include +#include "TonemappingOperators/pfstmo.h" +#include "Common/ProgressHelper.h" /// Type of algorithm #define FAST 0 - inline float biasFunc(float b, float x) { return pow(x, b); // pow(x, log(bias)/log(0.5) diff -Nru luminance-2.2.1/src/TonemappingOperators/drago03/tmo_drago03.h luminance-2.3.0/src/TonemappingOperators/drago03/tmo_drago03.h --- luminance-2.2.1/src/TonemappingOperators/drago03/tmo_drago03.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/drago03/tmo_drago03.h 2012-07-01 09:10:50.000000000 +0000 @@ -25,8 +25,11 @@ * $Id: tmo_drago03.h,v 1.3 2008/09/04 12:46:48 julians37 Exp $ */ -#ifndef _tmo_drago03_h_ -#define _tmo_drago03_h_ +#ifndef TMO_DRAGO03_H +#define TMO_DRAGO03_H + +// forward declaration +class ProgressHelper; /** * @brief Frederic Drago Logmapping Algorithm @@ -43,8 +46,6 @@ * @param bias bias parameter of tone mapping algorithm (eg 0.85) */ -#include "Common/ProgressHelper.h" - void tmo_drago03(unsigned int width, unsigned int height, const float* Y, float* L, float maxLum, float avLum, float bias, ProgressHelper *ph); diff -Nru luminance-2.2.1/src/TonemappingOperators/durand02/bilateral.cpp luminance-2.3.0/src/TonemappingOperators/durand02/bilateral.cpp --- luminance-2.2.1/src/TonemappingOperators/durand02/bilateral.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/durand02/bilateral.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -31,6 +31,8 @@ #include "arch/math.h" #include "TonemappingOperators/pfstmo.h" +#include "Common/ProgressHelper.h" +#include "Libpfs/array2d.h" #ifdef BRANCH_PREDICTION #define likely(x) __builtin_expect((x),1) diff -Nru luminance-2.2.1/src/TonemappingOperators/durand02/bilateral.h luminance-2.3.0/src/TonemappingOperators/durand02/bilateral.h --- luminance-2.2.1/src/TonemappingOperators/durand02/bilateral.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/durand02/bilateral.h 2012-07-01 09:10:50.000000000 +0000 @@ -29,11 +29,15 @@ */ -#ifndef _bilateral_h_ -#define _bilateral_h_ +#ifndef BILATERAL_H +#define BILATERAL_H -#include "Common/progressHelper.h" -#include "Libpfs/array2d.h" +// forward declaration +class ProgressHelper; + +namespace pfs { + class Array2D; +} /** * @brief Bilateral filtering diff -Nru luminance-2.2.1/src/TonemappingOperators/durand02/fastbilateral.cpp luminance-2.3.0/src/TonemappingOperators/durand02/fastbilateral.cpp --- luminance-2.2.1/src/TonemappingOperators/durand02/fastbilateral.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/durand02/fastbilateral.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -28,10 +28,11 @@ */ #include - #include #include +#include "Libpfs/array2d.h" +#include "Common/ProgressHelper.h" #include "TonemappingOperators/pfstmo.h" #include "fastbilateral.h" diff -Nru luminance-2.2.1/src/TonemappingOperators/durand02/fastbilateral.h luminance-2.3.0/src/TonemappingOperators/durand02/fastbilateral.h --- luminance-2.2.1/src/TonemappingOperators/durand02/fastbilateral.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/durand02/fastbilateral.h 2012-07-01 09:10:50.000000000 +0000 @@ -28,11 +28,15 @@ */ -#ifndef _fastbilateral_h_ -#define _fastbilateral_h_ +#ifndef FASTBILATERAL_H +#define FASTBILATERAL_H + +class ProgressHelper; + +namespace pfs { + class Array2D; +} -#include "Libpfs/array2d.h" -#include "Common/ProgressHelper.h" /** * @brief Fast bilateral filtering diff -Nru luminance-2.2.1/src/TonemappingOperators/durand02/tmo_durand02.cpp luminance-2.3.0/src/TonemappingOperators/durand02/tmo_durand02.cpp --- luminance-2.2.1/src/TonemappingOperators/durand02/tmo_durand02.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/durand02/tmo_durand02.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -38,6 +38,7 @@ #include #include "TonemappingOperators/pfstmo.h" +#include "Common/ProgressHelper.h" //#undef HAVE_FFTW3F diff -Nru luminance-2.2.1/src/TonemappingOperators/durand02/tmo_durand02.h luminance-2.3.0/src/TonemappingOperators/durand02/tmo_durand02.h --- luminance-2.2.1/src/TonemappingOperators/durand02/tmo_durand02.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/durand02/tmo_durand02.h 2012-07-01 09:10:50.000000000 +0000 @@ -32,13 +32,12 @@ * $Id: tmo_durand02.h,v 1.4 2009/02/23 19:09:41 rafm Exp $ */ -#ifndef _tmo_durand02_h_ -#define _tmo_durand02_h_ +#ifndef TMO_DURAND02_H +#define TMO_DURAND02_H -#include "TonemappingOperators/pfstmo.h" -#include "Common/ProgressHelper.h" +class ProgressHelper; -/* +/** * @brief Fast bilateral filtering * * @param width image width @@ -59,4 +58,4 @@ ProgressHelper *ph = 0); -#endif /* _tmo_durand02_h_ */ +#endif // TMO_DURAND02_H diff -Nru luminance-2.2.1/src/TonemappingOperators/fattal02/pde.cpp luminance-2.3.0/src/TonemappingOperators/fattal02/pde.cpp --- luminance-2.2.1/src/TonemappingOperators/fattal02/pde.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/fattal02/pde.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -32,28 +32,35 @@ * $Id: pde.cpp,v 1.3 2008/09/04 12:46:49 julians37 Exp $ */ -#include +#include "pde.h" +#include #include #include #include #include "Libpfs/vex.h" #include "Libpfs/array2d.h" - -#include "pde.h" +#include "TonemappingOperators/pfstmo.h" +#include "Common/ProgressHelper.h" using namespace std; ////////////////////////////////////////////////////////////////////// +// tune the multi-level solver #define MODYF 0 /* 1 or 0 (1 is better) */ #define MINS 16 /* minimum size 4 6 or 100 */ - //#define MODYF_SQRT -1.0f /* -1 or 0 */ -#define SMOOTH_IT 1 /* minimum 1 */ -#define BCG_STEPS 20 -#define V_CYCLE 2 /* number of v-cycles */ +#define SMOOTH_IT 1 // orig: 1 +#define BCG_STEPS 20 // orig: 20 +#define BCG_TOL 1e-3 // orig: 1e-3 +#define V_CYCLE 2 // orig: 2 +// post improvement of the solution using additional cg-iterations +#define BCG_POST_IMPROVE false +#define BCG_POST_STEPS 1000 // very slow if > 100, only use on small image +#define BCG_POST_TOL 1e-7 + // precision #define EPS 1.0e-12 @@ -61,7 +68,7 @@ #define OMP_THRESHOLD 1000000 static void linbcg(unsigned long n, const float b[], float x[], float tol, - int itmax, int *iter, float *err); + int itmax, int *iter, float *err, int rows, int cols); inline float max( float a, float b ) { @@ -237,22 +244,22 @@ // } } -static int rows, cols; +//static int rows, cols; // smooth u using f at level static void smooth( pfs::Array2D *U, const pfs::Array2D *F ) { // DEBUG_STR << "smooth" << endl; - rows = U->getRows(); - cols = U->getCols(); + int rows = U->getRows(); + int cols = U->getCols(); const int n = rows*cols; int iter; float err; - linbcg( n, F->getRawData(), U->getRawData(), 0.001, BCG_STEPS, &iter, &err); + linbcg( n, F->getRawData(), U->getRawData(), BCG_TOL, BCG_STEPS, &iter, &err, rows, cols); // fprintf( stderr, "." ); @@ -327,7 +334,7 @@ } -void solve_pde_multigrid( pfs::Array2D *F, pfs::Array2D *U ) +void solve_pde_multigrid( pfs::Array2D *F, pfs::Array2D *U, ProgressHelper *ph) { int xmax = F->getCols(); int ymax = F->getRows(); @@ -382,6 +389,7 @@ // 3. nested iterations for( k=levels-1; k>=0 ; k-- ) { + ph->newValue(20+70*(levels - k)/(levels+1)); // 4. interpolate sollution from last coarse-grid to finer-grid // interpolate from level k+1 to level k (finer-grid) prolongate( IU[k+1], IU[k] ); @@ -460,7 +468,22 @@ // } pfs::copyArray( IU[0], U ); + + // further improvement of the solution + if(BCG_POST_IMPROVE) { + int iter; + float err; + //DEBUG_STR << "FMG: cg post improving ..., maxiter=" << BCG_POST_STEPS; + //DEBUG_STR << ", tol=" << BCG_POST_TOL << std::endl; + linbcg( xmax*ymax, F->getRawData(), U->getRawData(), + BCG_POST_TOL, BCG_POST_STEPS, &iter, &err,ymax,xmax); + //DEBUG_STR << "FMG: cg post improvement: iter=" << iter << ", err=" << err; + //DEBUG_STR << std::endl; + } + + ph->newValue(90); + delete VF[0]; delete IU[0]; @@ -479,7 +502,7 @@ //#define EPS 1.0e-14 -static void asolve(const float b[], float x[]) +static void asolve(const float b[], float x[], int rows, int cols) { for( int j = 0; j < rows*cols; j++) x[j] = -4 * b[j]; @@ -487,7 +510,7 @@ #define idx(R,C) ((R)*cols+(C)) -static void atimes(const float x[], float res[]) +static void atimes(const float x[], float res[], int rows, int cols) { #pragma omp parallel for shared(x, res) if (rows*cols>OMP_THRESHOLD) schedule(static) for( int r = 1; r < rows-1; r++ ) @@ -534,7 +557,7 @@ * Biconjugate Gradient Method * from Numerical Recipes in C */ -static void linbcg(unsigned long n, const float b[], float x[], float tol, int itmax, int *iter, float *err) +static void linbcg(unsigned long n, const float b[], float x[], float tol, int itmax, int *iter, float *err, int rows, int cols) { float ak,akden,bk,bkden=1.0,bknum,bnrm=1.0,zm1nrm,znrm; float *p,*pp,*r,*rr,*z,*zz; @@ -547,7 +570,7 @@ zz=new float[n+1]; *iter=0; - atimes(x,r); + atimes(x,r, rows, cols); for (unsigned long j=0;jOMP_THRESHOLD) schedule(static) for (long j=0;jOMP_THRESHOLD) schedule(static) for (long j=0;j U(i-1) - 2 U(i) + U(i+1) becomes +// i=0: U(0) - 2 U(0) + U(1) = -U(0) + U(1) +// - our system: assume U(-1)=U(1) --> this becomes +// i=0: U(1) - 2(0) + U(1) = -2 U(0) + 2 U(1) +// +// The multi grid solver solve_pde_multigrid() solves the 2d Poisson pde +// with the right Neumann boundary conditions, U(-1)=U(0), see function +// atimes(). This means the assembly of the right hand side F is different +// for both solvers. + +#include + +#include +#include +#include "arch/math.h" +#include +#ifdef _OPENMP +#include +#endif +#include +#include + +#include "Libpfs/array2d.h" +#include "Common/ProgressHelper.h" +#include "pde.h" + +using namespace std; + + +#ifndef SQR +#define SQR(x) (x)*(x) +#endif + + +// returns T = EVy A EVx^tr +// note, modifies input data +void transform_ev2normal(pfs::Array2D *A, pfs::Array2D *T) +{ + int width = A->getCols(); + int height = A->getRows(); + assert((int)T->getCols()==width && (int)T->getRows()==height); + + // the discrete cosine transform is not exactly the transform needed + // need to scale input values to get the right transformation + for(int y=1 ; ygetRawData(), T->getRawData(), + FFTW_REDFT00, FFTW_REDFT00, FFTW_ESTIMATE); + fftwf_execute(p); + fftwf_destroy_plan(p); +} + + +// returns T = EVy^-1 * A * (EVx^-1)^tr +void transform_normal2ev(pfs::Array2D *A, pfs::Array2D *T) +{ + int width = A->getCols(); + int height = A->getRows(); + assert((int)T->getCols()==width && (int)T->getRows()==height); + + // executes 2d discrete cosine transform + fftwf_plan p; + p=fftwf_plan_r2r_2d(height, width, A->getRawData(), T->getRawData(), + FFTW_REDFT00, FFTW_REDFT00, FFTW_ESTIMATE); + fftwf_execute(p); + fftwf_destroy_plan(p); + + // need to scale the output matrix to get the right transform + for(int y=0 ; y get_lambda(int n) +{ + assert(n>1); + std::vector v(n); + for (int i=0; igetCols(); + int height = F->getRows(); + + double sum=0.0; + for(int y=1 ; ynewValue(20); + //DEBUG_STR << "solve_pde_fft: solving Laplace U = F ..." << std::endl; + int width = F->getCols(); + int height = F->getRows(); + assert((int)U->getCols()==width && (int)U->getRows()==height); + + // activate parallel execution of fft routines + fftwf_init_threads(); +#ifdef _OPENMP + fftwf_plan_with_nthreads( omp_get_max_threads() ); +#else + fftwf_plan_with_nthreads( 2 ); +#endif + + // in general there might not be a solution to the Poisson pde + // with Neumann boundary conditions unless the boundary satisfies + // an integral condition, this function modifies the boundary so that + // the condition is exactly satisfied + if(adjust_bound) + { + //DEBUG_STR << "solve_pde_fft: checking boundary conditions" << std::endl; + make_compatible_boundary(F); + } + + // transforms F into eigenvector space: Ftr = + //DEBUG_STR << "solve_pde_fft: transform F to ev space (fft)" << std::endl; + pfs::Array2D* F_tr = new pfs::Array2D(width,height); + transform_normal2ev(F, F_tr); + // TODO: F no longer needed so could release memory, but as it is an + // input parameter we won't do that + ph->newValue(50); + if (ph->isTerminationRequested()){ + delete F_tr; + return; + } + + //DEBUG_STR << "solve_pde_fft: F_tr(0,0) = " << (*F_tr)(0,0); + //DEBUG_STR << " (must be 0 for solution to exist)" << std::endl; + + // in the eigenvector space the solution is very simple + //DEBUG_STR << "solve_pde_fft: solve in eigenvector space" << std::endl; + pfs::Array2D* U_tr = new pfs::Array2D(width,height); + std::vector l1=get_lambda(height); + std::vector l2=get_lambda(width); + for(int y=0 ; ynewValue(55); + + + // transforms U_tr back to the normal space + //DEBUG_STR << "solve_pde_fft: transform U_tr to normal space (fft)" << std::endl; + transform_ev2normal(U_tr, U); + delete U_tr; // no longer needed so release memory + ph->newValue(85); + + // the solution U as calculated will satisfy something like int U = 0 + // since for any constant c, U-c is also a solution and we are mainly + // working in the logspace of (0,1) data we prefer to have + // a solution which has no positive values: U_new(x,y)=U(x,y)-max + // (not really needed but good for numerics as we later take exp(U)) + //DEBUG_STR << "solve_pde_fft: removing constant from solution" << std::endl; + double max=0.0; + for(int i=0; inewValue(90); + //DEBUG_STR << "solve_pde_fft: done" << std::endl; +} + + +// --------------------------------------------------------------------- +// the functions below are only for test purposes to check the accuracy +// of the pde solvers + + +// returns the norm of (Laplace U - F) of all interior points +// useful to compare solvers +float residual_pde(pfs::Array2D* U, pfs::Array2D* F) +{ + int width = U->getCols(); + int height = U->getRows(); + assert((int)F->getCols()==width && (int)F->getRows()==height); + + double res=0.0; + for(int y=1;y( sqrt(res) ); +} + diff -Nru luminance-2.2.1/src/TonemappingOperators/fattal02/pde.h luminance-2.3.0/src/TonemappingOperators/fattal02/pde.h --- luminance-2.2.1/src/TonemappingOperators/fattal02/pde.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/fattal02/pde.h 2012-07-01 09:10:50.000000000 +0000 @@ -29,10 +29,14 @@ * $Id: pde.h,v 1.2 2008/09/04 12:46:49 julians37 Exp $ */ -#ifndef _fmg_pde_h_ -#define _fmg_pde_h_ +#ifndef FMG_PDE_H +#define FMG_PDE_H -#include "TonemappingOperators/pfstmo.h" +class ProgressHelper; + +namespace pfs { + class Array2D; +} /** * @brief solve pde using full multrigrid algorithm @@ -40,7 +44,25 @@ * @param F array with divergence * @param U [out] sollution */ -void solve_pde_multigrid(pfs::Array2D *F, pfs::Array2D *U); +void solve_pde_multigrid(pfs::Array2D *F, pfs::Array2D *U, ProgressHelper *ph); + +/** + * @brief solve poisson pde (Laplace U = F) using discrete cosine transform + * + * @param F array of the right hand side (contains div G in this example) + * @param U [out] solution + * @param adjust_bound, adjust boundary values of F to make pde solvable + */ +void solve_pde_fft(pfs::Array2D *F, pfs::Array2D *U, ProgressHelper *ph, bool adjust_bound=false); + +/** + * @brief returns the residual error of the solution U, ie norm(Laplace U - F) + * + * @param F [in] right hand side + * @param U [in] solution + */ +float residual_pde(pfs::Array2D *U, pfs::Array2D *F); + #endif diff -Nru luminance-2.2.1/src/TonemappingOperators/fattal02/pfstmo_fattal02.cpp luminance-2.3.0/src/TonemappingOperators/fattal02/pfstmo_fattal02.cpp --- luminance-2.2.1/src/TonemappingOperators/fattal02/pfstmo_fattal02.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/fattal02/pfstmo_fattal02.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -31,31 +31,52 @@ * $Id: pfstmo_fattal02.cpp,v 1.3 2008/09/04 12:46:49 julians37 Exp $ */ +#include "tmo_fattal02.h" + #include #include +#include +#include #include "Libpfs/frame.h" -#include "tmo_fattal02.h" +#include "Libpfs/colorspace.h" +#include "Common/ProgressHelper.h" + +namespace +{ +const float epsilon = 1e-4f; +} + +void pfstmo_fattal02(pfs::Frame* frame, + float opt_alpha, + float opt_beta, + float opt_saturation, + float opt_noise, + bool newfattal, + bool fftsolver, + int detail_level, + ProgressHelper *ph) +{ + if (fftsolver) + { + // opt_alpha = 1.f; + newfattal = true; // let's make sure, prudence is never enough! + } -void pfstmo_fattal02(pfs::Frame* frame, float opt_alpha, float opt_beta, float opt_saturation, float opt_noise, bool newfattal, ProgressHelper *ph) -{ - //--- default tone mapping parameters; - //float opt_alpha = 1.0f; - //float opt_beta = 0.9f; - //float opt_saturation=0.8f; - //float opt_noise = -1.0f; // not set! - - // adjust noise floor if not set by user if ( opt_noise <= 0.0f ) { - opt_noise = opt_alpha*0.01f; + opt_noise = opt_alpha * 0.01f; } - std::cout << "pfstmo_fattal02" << std::endl; - std::cout << "alpha: " << opt_alpha << std::endl; - std::cout << "beta: " << opt_beta << std::endl; - std::cout << "saturation: " << opt_saturation << std::endl; - std::cout << "noise: " << opt_noise << std::endl; + std::stringstream ss; + ss << "pfstmo_fattal02 ("; + ss << "alpha: " << opt_alpha; + ss << ", beta: " << opt_beta; + ss << ". saturation: " << opt_saturation; + ss << ", noise: " << opt_noise; + ss << ", fftsolver: " << fftsolver << ")"; + std::cout << ss.str(); + std::cout << std::endl; //Store RGB data temporarily in XYZ channels pfs::Channel *X, *Y, *Z; @@ -63,37 +84,47 @@ frame->getTags()->setString("LUMINANCE", "RELATIVE"); //--- - if ( Y==NULL || X==NULL || Z==NULL ) { - throw pfs::Exception( "Missing X, Y, Z channels in the PFS stream" ); + throw pfs::Exception( "Missing X, Y, Z channels in the PFS stream" ); } - pfs::Array2D* Xr = X->getChannelData(); - pfs::Array2D* Yr = Y->getChannelData(); - pfs::Array2D* Zr = Z->getChannelData(); + pfs::Array2D& Xr = *X->getChannelData(); + pfs::Array2D& Yr = *Y->getChannelData(); + pfs::Array2D& Zr = *Z->getChannelData(); // tone mapping int w = Y->getWidth(); int h = Y->getHeight(); - pfs::Array2D* L = new pfs::Array2D(w,h); - tmo_fattal02(w, h, Y->getRawData(), L->getRawData(), opt_alpha, opt_beta, opt_noise, newfattal, ph); + pfs::Array2D L(w,h); + + tmo_fattal02(w, h, Yr, L, + opt_alpha, opt_beta, opt_noise, newfattal, + fftsolver, detail_level, + ph); if ( !ph->isTerminationRequested() ) { - for( int x=0 ; xnewValue( 100 ); + + pfs::transformColorSpace(pfs::CS_RGB, &R, &G, &B, + pfs::CS_XYZ, &Xr, &Yr, &Zr); + + ph->newValue( 100 ); } - - delete L; } diff -Nru luminance-2.2.1/src/TonemappingOperators/fattal02/tmo_fattal02.cpp luminance-2.3.0/src/TonemappingOperators/fattal02/tmo_fattal02.cpp --- luminance-2.2.1/src/TonemappingOperators/fattal02/tmo_fattal02.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/fattal02/tmo_fattal02.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -31,6 +31,7 @@ */ +#include #include #include #include @@ -39,6 +40,7 @@ #include #include "TonemappingOperators/pfstmo.h" +#include "Common/ProgressHelper.h" #include "pde.h" #include "tmo_fattal02.h" @@ -68,88 +70,91 @@ //-------------------------------------------------------------------- -void downSample(pfs::Array2D* A, pfs::Array2D* B) +void downSample(const pfs::Array2D& A, pfs::Array2D& B) { - const int width = B->getCols(); - const int height = B->getRows(); + const int width = B.getCols(); + const int height = B.getRows(); -#pragma omp parallel for - for( int y=0 ; ygetCols(); - const int height = I->getRows(); + const int width = I.getCols(); + const int height = I.getRows(); - pfs::Array2D* T = new pfs::Array2D(width,height); + pfs::Array2D T(width,height); - //--- X blur -#pragma omp parallel for shared(I, T) - for( int y=0 ; ygetCols(); int height = H->getRows(); const int size = width*height; pyramids[0] = new pfs::Array2D(width,height); -#pragma omp parallel for shared(pyramids, H) +//#pragma omp parallel for shared(pyramids, H) for( int i=0 ; igetCols(); - const int height = B->getRows(); - const int awidth = A->getCols(); - const int aheight = A->getRows(); + const int width = B.getCols(); + const int height = B.getRows(); + const int awidth = A.getCols(); + const int aheight = A.getRows(); -#pragma omp parallel for shared(A, B) - for( int y=0 ; y(x * 0.5f); //x / 2.f; + int ay = static_cast(y * 0.5f); //y / 2.f; + ax = (axgetCols(); @@ -223,116 +234,155 @@ // } } + void calculateFiMatrix(pfs::Array2D* FI, pfs::Array2D* gradients[], - float avgGrad[], int nlevels, - float alfa, float beta, float noise, bool newfattal) + float avgGrad[], int nlevels, int detail_level, + float alfa, float beta, float noise, bool newfattal) { - int width = gradients[nlevels-1]->getCols(); - int height = gradients[nlevels-1]->getRows(); - pfs::Array2D** fi = new pfs::Array2D*[nlevels]; - - fi[nlevels-1] = new pfs::Array2D(width,height); - if (newfattal) -#pragma omp parallel for shared(fi) - for( int k=0 ; k=0 ; k-- ) - { - width = gradients[k]->getCols(); - height = gradients[k]->getRows(); + int width = gradients[nlevels-1]->getCols(); + int height = gradients[nlevels-1]->getRows(); + pfs::Array2D** fi = new pfs::Array2D*[nlevels]; -#pragma omp parallel for shared(fi,avgGrad) - for( int y=0 ; y1e-4 ) - value = a/(grad+noise) * pow((grad+noise)/a, beta); - if (newfattal) - (*fi[k])(x,y) *= value; - else - (*fi[k])(x,y) = value; - } - - // create next level - if( k>1 ) + for ( int k = nlevels-1; k >= 0 ; k-- ) { - width = gradients[k-1]->getCols(); - height = gradients[k-1]->getRows(); - fi[k-1] = new pfs::Array2D(width,height); + width = gradients[k]->getCols(); + height = gradients[k]->getRows(); + + // only apply gradients to levels>=detail_level but at least to the coarsest + if ( k >= detail_level + ||k==nlevels-1 + || newfattal == false) + { + //DEBUG_STR << "calculateFiMatrix: apply gradient to level " << k << endl; + //#pragma omp parallel for shared(fi,avgGrad) + for ( int y = 0; y < height; y++ ) + { + for ( int x = 0; x < width; x++ ) + { + float grad = ((*gradients[k])(x,y) < 1e-4f) ? 1e-4 : (*gradients[k])(x,y); + float a = alfa * avgGrad[k]; + + float value = powf((grad+noise)/a, beta - 1.0f); + + if (newfattal) + (*fi[k])(x,y) *= value; + else + (*fi[k])(x,y) = value; + } + } + } + + + // create next level + if ( k>1 ) + { + width = gradients[k-1]->getCols(); + height = gradients[k-1]->getRows(); + fi[k-1] = new pfs::Array2D(width,height); + } + else + fi[0] = FI; // highest level -> result + + if ( k>0 && newfattal ) + { + upSample(*fi[k], *fi[k-1]); // upsample to next level + gaussianBlur(*fi[k-1], *fi[k-1]); + } } - else - fi[0] = FI; // highest level -> result - if( k>0 && newfattal ) + for ( int k=1 ; kgetRows() * I->getCols(); - std::vector vI; + using namespace std; - for( int i=0 ; i vI; - minLum = vI.at( int(minPrct*vI.size()) ); - maxLum = vI.at( int(maxPrct*vI.size()) ); -} + copy(data, data + size, back_inserter(vI)); + sort(vI.begin(), vI.end()); -//-------------------------------------------------------------------- + minLum = vI.at( int(minPrct*vI.size()) ); + maxLum = vI.at( int(maxPrct*vI.size()) ); +} -void tmo_fattal02(unsigned int width, unsigned int height, - const float* nY, float* nL, - float alfa, float beta, float noise, bool newfattal, +void tmo_fattal02(size_t width, + size_t height, + const pfs::Array2D& Y, + //const float* nY, + pfs::Array2D& L, + //float* nL, + float alfa, + float beta, + float noise, + bool newfattal, + bool fftsolver, + int detail_level, ProgressHelper *ph) { - const pfs::Array2D* Y = new pfs::Array2D(width, height, const_cast(nY)); - pfs::Array2D* L = new pfs::Array2D(width, height, nL); - - const int MSIZE = 32; // minimum size of gaussian pyramid + static const float black_point = 0.1f; + static const float white_point = 0.5f; + static const float gamma = 1.0f; // 0.8f; + // static const int detail_level = 3; + if ( detail_level < 0 ) detail_level = 0; + if ( detail_level > 3 ) detail_level = 3; + + ph->newValue(2); + if (ph->isTerminationRequested()) return; + + int MSIZE = 32; // minimum size of gaussian pyramid + // I believe a smaller value than 32 results in slightly better overall + // quality but I'm only applying this if the newly implemented fft solver + // is used in order not to change behaviour of the old version + // TODO: best let the user decide this value + if (fftsolver) + { + MSIZE = 8; + } int size = width*height; - unsigned int x,y; - int i, k; + // unsigned int x,y; + // int i, k; // find max & min values, normalize to range 0..100 and take logarithm - float minLum = (*Y)(0,0); - float maxLum = (*Y)(0,0); - for( i=0 ; imaxLum ) ? (*Y)(i) : maxLum; + minLum = ( Y(i) < minLum ) ? Y(i) : minLum; + maxLum = ( Y(i) > maxLum ) ? Y(i) : maxLum; } pfs::Array2D* H = new pfs::Array2D(width, height); -#pragma omp parallel for private(i) shared(H, Y, maxLum) - for( i=0 ; inewValue(4); // create gaussian pyramids int mins = (width=MSIZE ) + while ( mins >= MSIZE ) { nlevels++; mins /= 2; @@ -343,107 +393,143 @@ pfs::Array2D** pyramids = new pfs::Array2D*[nlevels]; createGaussianPyramids(H, pyramids, nlevels); + ph->newValue(8); // calculate gradients and its average values on pyramid levels pfs::Array2D** gradients = new pfs::Array2D*[nlevels]; float* avgGrad = new float[nlevels]; - for( k=0 ; kgetCols(), pyramids[k]->getRows()); avgGrad[k] = calculateGradients(pyramids[k],gradients[k], k); } + ph->newValue(12); // calculate fi matrix pfs::Array2D* FI = new pfs::Array2D(width, height); - calculateFiMatrix(FI, gradients, avgGrad, nlevels, alfa, beta, noise, newfattal); - + calculateFiMatrix(FI, gradients, avgGrad, nlevels, detail_level, alfa, beta, noise, newfattal); // dumpPFS( "FI.pfs", FI, "Y" ); + for ( int i=0 ; inewValue(16); + if (ph->isTerminationRequested()){ + delete FI; + delete H; + return; + } + // attenuate gradients pfs::Array2D* Gx = new pfs::Array2D(width, height); pfs::Array2D* Gy = new pfs::Array2D(width, height); - //#pramga omp parallel for shared(Gx, Gy, H, FI, ph) - //FIXME: Only update ph in thread 0 - for( y=0 ; ynewValue(100*y/height); - if (ph->isTerminationRequested()) - break; - - for( x=0 ; x= height ? height-2 : y+1); + unsigned int xp1 = (x+1 >= width ? width-2 : x+1); + // forward differences in H, so need to use between-points approx of FI + (*Gx)(x,y) = ((*H)(xp1,y)-(*H)(x,y)) * 0.5*((*FI)(xp1,y)+(*FI)(x,y)); + (*Gy)(x,y) = ((*H)(x,yp1)-(*H)(x,y)) * 0.5*((*FI)(x,yp1)+(*FI)(x,y)); + } + else + for ( size_t y=0 ; ynewValue(18); + + // dumpPFS( "Gx.pfs", Gx, "Y" ); // dumpPFS( "Gy.pfs", Gy, "Y" ); // calculate divergence - pfs::Array2D* DivG = new pfs::Array2D(width, height); - //#pragma omp parallel for shared(ph, DivG, Gx, Gy) - //FIXME: Only update ph in thread 0 - for( y=0 ; ynewValue(100*y/height); - if (ph->isTerminationRequested()) - break; - - for( x=0 ; x 0 ) (*DivG)(x,y) -= (*Gx)(x-1,y); - if( y > 0 ) (*DivG)(x,y) -= (*Gy)(x,y-1); - } + pfs::Array2D DivG(width, height); + for ( size_t y = 0; y < height; ++y ) + { + for ( size_t x = 0; x < width; ++x ) + { + DivG(x,y) = (*Gx)(x,y) + (*Gy)(x,y); + if ( x > 0 ) DivG(x,y) -= (*Gx)(x-1,y); + if ( y > 0 ) DivG(x,y) -= (*Gy)(x,y-1); + + if (fftsolver) + { + if (x==0) DivG(x,y) += (*Gx)(x,y); + if (y==0) DivG(x,y) += (*Gy)(x,y); + } + + } + } + delete Gx; + delete Gy; + ph->newValue(20); + if (ph->isTerminationRequested()) + { + return; } // dumpPFS( "DivG.pfs", DivG, "Y" ); // solve pde and exponentiate (ie recover compressed image) - pfs::Array2D* U = new pfs::Array2D(width, height); - solve_pde_multigrid( DivG, U ); + { + pfs::Array2D U(width, height); + if (fftsolver) + { + solve_pde_fft(&DivG, &U, ph); + } + else + { + solve_pde_multigrid(&DivG, &U, ph); + } + printf("\npde residual error: %f\n", residual_pde(&U, &DivG)); + ph->newValue(90); + if ( ph->isTerminationRequested() ) + { + return; + } - for( y=0 ; ynewValue(100*y/height); - if (ph->isTerminationRequested()) - break; - for( x=0 ; xnewValue(95); // remove percentile of min and max values and renormalize - findMaxMinPercentile(L, 0.001f, minLum, 0.995f, maxLum); - maxLum -= minLum; - for( y=0 ; ynewValue(100*y/height); - if (ph->isTerminationRequested()) - break; - for( x=0 ; x=0.0f && (cut_max<=1.0f) && (cut_min 1.0 } - delete[] pyramids; - delete[] gradients; - delete[] avgGrad; - delete FI; - delete Gx; - delete Gy; - delete DivG; - delete U; - delete L; - delete Y; + ph->newValue(96); } diff -Nru luminance-2.2.1/src/TonemappingOperators/fattal02/tmo_fattal02.h luminance-2.3.0/src/TonemappingOperators/fattal02/tmo_fattal02.h --- luminance-2.2.1/src/TonemappingOperators/fattal02/tmo_fattal02.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/fattal02/tmo_fattal02.h 2012-07-01 09:10:50.000000000 +0000 @@ -30,8 +30,16 @@ * $Id: tmo_fattal02.h,v 1.2 2008/09/04 12:46:49 julians37 Exp $ */ -#ifndef _tmo_fattal02_h_ -#define _tmo_fattal02_h_ +#ifndef TMO_FATTAL02_H +#define TMO_FATTAL02_H + +#include + +namespace pfs { +class Array2D; +} + +class ProgressHelper; /** * @brief Gradient Domain High Dynamic Range Compression @@ -48,8 +56,13 @@ * @param noise gradient level of noise (extra parameter) */ -#include "Common/ProgressHelper.h" - -void tmo_fattal02(unsigned int width, unsigned int height, const float* Y, float* L, float alfa, float beta, float noise, bool newfattal, ProgressHelper *ph); +void tmo_fattal02(size_t width, size_t height, + //const float* Y, float* L, + const pfs::Array2D& Y, + pfs::Array2D& L, + float alfa, float beta, + float noise, bool newfattal, + bool fftsolver, int detail_level, + ProgressHelper *ph); #endif diff -Nru luminance-2.2.1/src/TonemappingOperators/mantiuk06/contrast_domain.cpp luminance-2.3.0/src/TonemappingOperators/mantiuk06/contrast_domain.cpp --- luminance-2.2.1/src/TonemappingOperators/mantiuk06/contrast_domain.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/mantiuk06/contrast_domain.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -323,7 +323,7 @@ #ifdef __APPLE__ float* m = (float*)malloc (sizeof(float)*size); #else - float* m = (float*)_mm_malloc (sizeof(float)*size, 16); + float* m = (float*)_mm_malloc (sizeof(float)*size, 32); #endif if (m == NULL) { @@ -721,7 +721,7 @@ for (; iter < itmax; iter++) { // TEST - ph->newValue( (int) (logf(rdotr_curr/irdotr)*percent_sf) ); + ph->newValue( (int) (logf(rdotr_curr/irdotr)*percent_sf)); // User requested abort if (ph->isTerminationRequested() && iter > 0 ) { @@ -827,7 +827,7 @@ } else { - ph->newValue(100); + ph->newValue( itmax ); } matrix_free(x_best); diff -Nru luminance-2.2.1/src/TonemappingOperators/mantiuk08/display_adaptive_tmo.cpp luminance-2.3.0/src/TonemappingOperators/mantiuk08/display_adaptive_tmo.cpp --- luminance-2.2.1/src/TonemappingOperators/mantiuk08/display_adaptive_tmo.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/mantiuk08/display_adaptive_tmo.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -150,7 +150,7 @@ else return log10( x ); } -#ifdef __USE_SSE__ +#ifdef LUMINANCE_USE_SSE #define LOG2_10 3.3219280948874f #define LOG2_10__1 (1.0f/LOG2_10) @@ -441,7 +441,7 @@ // Compute log10 of an image #pragma omp parallel for default(none) shared(LP_high_raw, L) -#ifndef __USE_SSE__ +#ifndef LUMINANCE_USE_SSE for( int i=0; i < pix_count; i++ ) LP_high_raw[i] = safe_log10( L[i], min_val ); #else @@ -1025,7 +1025,7 @@ float L_fix = clamp_channel(L_in[i]); const float L_out = tc_lut.interp( log10(L_fix) ); const float s = cc_lut.interp( log10(L_fix) ); // color correction -#ifdef __USE_SSE__ +#ifdef LUMINANCE_USE_SSE v4sf vec = _mm_set_ps(R_in[i], G_in[i], B_in[i], 0) / _mm_set1_ps(L_fix); vec = _mm_max_ps(vec, _mm_set1_ps(MIN_PHVAL)); vec = _mm_pow_ps(vec, _mm_set1_ps(s)); diff -Nru luminance-2.2.1/src/TonemappingOperators/mantiuk08/display_function.cpp luminance-2.3.0/src/TonemappingOperators/mantiuk08/display_function.cpp --- luminance-2.2.1/src/TonemappingOperators/mantiuk08/display_function.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/mantiuk08/display_function.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -91,7 +91,7 @@ return pow( pix, gamma ) * (L_max-L_black) + L_offset; } -#ifdef __USE_SSE__ +#ifdef LUMINANCE_USE_SSE v4sf DisplayFunctionGGBA::inv_display( v4sf L ) { diff -Nru luminance-2.2.1/src/TonemappingOperators/mantiuk08/display_function.h luminance-2.3.0/src/TonemappingOperators/mantiuk08/display_function.h --- luminance-2.2.1/src/TonemappingOperators/mantiuk08/display_function.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/mantiuk08/display_function.h 2012-07-01 09:10:50.000000000 +0000 @@ -47,7 +47,7 @@ */ virtual float display( float pix ) = 0; -#ifdef __USE_SSE__ +#ifdef LUMINANCE_USE_SSE virtual v4sf inv_display( v4sf L ) = 0; virtual v4sf display( v4sf L ) = 0; #endif @@ -75,7 +75,7 @@ float inv_display( float L ); float display( float pix ); -#ifdef __USE_SSE__ +#ifdef LUMINANCE_USE_SSE virtual v4sf inv_display( v4sf L ); virtual v4sf display( v4sf L ); #endif diff -Nru luminance-2.2.1/src/TonemappingOperators/pattanaik00/pfstmo_pattanaik00.cpp luminance-2.3.0/src/TonemappingOperators/pattanaik00/pfstmo_pattanaik00.cpp --- luminance-2.2.1/src/TonemappingOperators/pattanaik00/pfstmo_pattanaik00.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/pattanaik00/pfstmo_pattanaik00.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -31,12 +31,14 @@ * $Id: pfstmo_pattanaik00.cpp,v 1.3 2008/09/04 12:46:49 julians37 Exp $ */ +#include "tmo_pattanaik00.h" + #include #include #include "Libpfs/frame.h" #include "Libpfs/colorspace.h" -#include "tmo_pattanaik00.h" +#include "Common/ProgressHelper.h" void multiplyChannels( pfs::Array2D* X, pfs::Array2D* Y, pfs::Array2D* Z, float mult ); diff -Nru luminance-2.2.1/src/TonemappingOperators/pattanaik00/tmo_pattanaik00.cpp luminance-2.3.0/src/TonemappingOperators/pattanaik00/tmo_pattanaik00.cpp --- luminance-2.2.1/src/TonemappingOperators/pattanaik00/tmo_pattanaik00.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/pattanaik00/tmo_pattanaik00.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -34,6 +34,8 @@ #include #include "TonemappingOperators/pfstmo.h" +#include "Libpfs/pfs.h" +#include "Common/ProgressHelper.h" #include "tmo_pattanaik00.h" /// sensitivity of human visual system diff -Nru luminance-2.2.1/src/TonemappingOperators/pattanaik00/tmo_pattanaik00.h luminance-2.3.0/src/TonemappingOperators/pattanaik00/tmo_pattanaik00.h --- luminance-2.2.1/src/TonemappingOperators/pattanaik00/tmo_pattanaik00.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/pattanaik00/tmo_pattanaik00.h 2012-07-01 09:10:50.000000000 +0000 @@ -32,12 +32,15 @@ */ -#ifndef _tmo_pattanaik00_h_ -#define _tmo_pattanaik00_h_ +#ifndef TMO_PATTANAIK00_H +#define TMO_PATTANAIK00_H -#include "Libpfs/pfs.h" -#include "Common/ProgressHelper.h" +namespace pfs { + class Array2D; + class Frame; +} +class ProgressHelper; class VisualAdaptationModel; /** @@ -122,19 +125,27 @@ /// Get cone adaptation level float getAcone() - { return Acone; }; + { + return Acone; + } /// Get rod adaptation level float getArod() - { return Arod; }; + { + return Arod; + } /// Get cone bleaching term float getBcone() - { return Bcone; }; + { + return Bcone; + } /// Get rod bleaching term float getBrod() - { return Brod; }; + { + return Brod; + } }; diff -Nru luminance-2.2.1/src/TonemappingOperators/pfstmdefaultparams.h luminance-2.3.0/src/TonemappingOperators/pfstmdefaultparams.h --- luminance-2.2.1/src/TonemappingOperators/pfstmdefaultparams.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/pfstmdefaultparams.h 2012-07-01 09:10:50.000000000 +0000 @@ -24,8 +24,8 @@ * */ -#ifndef __TonemappingOptionsDefault_H__ -#define __TonemappingOptionsDefault_H__ +#ifndef PFSTMDEFAULTPARAMS_H +#define PFSTMDEFAULTPARAMS_H // Ashikhmin #define ASHIKHMIN_SIMPLE false @@ -79,4 +79,4 @@ #define REINHARD05_CHROMATIC_ADAPTATION 0.0 #define REINHARD05_LIGHT_ADAPTATION 1.0 -#endif +#endif // PFSTMDEFAULTPARAMS_H diff -Nru luminance-2.2.1/src/TonemappingOperators/pfstmo.h luminance-2.3.0/src/TonemappingOperators/pfstmo.h --- luminance-2.2.1/src/TonemappingOperators/pfstmo.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/pfstmo.h 2012-07-01 09:10:50.000000000 +0000 @@ -64,7 +64,7 @@ void pfstmo_ashikhmin02(pfs::Frame* inpfsframe, bool simple_flag, float lc_value, int eq, ProgressHelper *ph); void pfstmo_drago03(pfs::Frame *frame, float biasValue, ProgressHelper *ph); void pfstmo_durand02(pfs::Frame* frame, float sigma_s, float sigma_r, float baseContrast, ProgressHelper *ph); -void pfstmo_fattal02(pfs::Frame* frame, float opt_alpha, float opt_beta, float opt_saturation, float opt_noise, bool newfattal, ProgressHelper *ph); +void pfstmo_fattal02(pfs::Frame* frame, float opt_alpha, float opt_beta, float opt_saturation, float opt_noise, bool newfattal, bool fftsolver, int detail_level, ProgressHelper *ph); void pfstmo_mantiuk06(pfs::Frame* frame, float scaleFactor, float saturationFactor, float detailFactor, bool cont_eq, ProgressHelper *ph); void pfstmo_mantiuk08(pfs::Frame* frame, float saturation_factor, float contrast_enhance_factor, float white_y, bool setluminance, ProgressHelper *ph); void pfstmo_pattanaik00(pfs::Frame* frame, bool local, float multiplier, float Acone, float Arod, bool autolum, ProgressHelper *ph); diff -Nru luminance-2.2.1/src/TonemappingOperators/reinhard02/pfstmo_reinhard02.cpp luminance-2.3.0/src/TonemappingOperators/reinhard02/pfstmo_reinhard02.cpp --- luminance-2.2.1/src/TonemappingOperators/reinhard02/pfstmo_reinhard02.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/reinhard02/pfstmo_reinhard02.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -59,7 +59,6 @@ std::cout << ", upper scale: " << high; std::cout << ", use scales: " << use_scales << ")" << std::endl; - pfs::Channel *X, *Y, *Z; frame->getXYZChannels( X, Y, Z ); frame->getTags()->setString("LUMINANCE", "RELATIVE"); @@ -76,8 +75,10 @@ int w = Y->getWidth(); int h = Y->getHeight(); pfs::Array2D* L = new pfs::Array2D(w,h); + + Reinhard02 tmoperator( w, h, Y->getRawData(), L->getRawData(), use_scales, key, phi, num, low, high, temporal_coherent, ph ); - tmo_reinhard02( w, h, Y->getRawData(), L->getRawData(), use_scales, key, phi, num, low, high, temporal_coherent, ph ); + tmoperator.tmo_reinhard02(); // TODO: this section can be rewritten using SSE Function for( int x=0 ; x +#include #include "arch/math.h" #include "TonemappingOperators/pfstmo.h" #include "Common/ProgressHelper.h" +#include "tmo_reinhard02.h" -#ifdef HAVE_ZFFT -#include -#else -// if no zfft library compile approximate sollution -#define APPROXIMATE -#endif - -//--- from defines.h -typedef struct { - int xmax, ymax; /* image dimensions */ -} CVTS; - -typedef double COLOR[3]; /* red, green, blue (or X,Y,Z) */ -//--- end of defines.h - -static COLOR **image; -static double sigma_0, sigma_1; -double **luminance; - -static double key = 0.18; -static double threshold = 0.05; -static double phi = 8.; -static double white = 1e20; -static int scale_low = 1; -static int scale_high = 43; // 1.6^8 = 43 -static int range = 8; -static int use_scales = 0; -static int use_border = 0; -static CVTS cvts = {0, 0}; - -static bool temporal_coherent; - -#ifdef APPROXIMATE -extern int PyramidHeight; // set by build_pyramid, defines actual pyramid size -extern double V1 (int x, int y, int level); -extern void build_pyramid (double **luminance, int image_width, int image_height); -extern void clean_pyramid (); -#else - -static zomplex **filter_fft; -static zomplex *image_fft, *coeff; - -#define V1(x,y,i) (convolved_image[i][x][y]) - -#endif - -#define SIGMA_I(i) (sigma_0 + ((double)i/(double)range)*(sigma_1 - sigma_0)) +#define SIGMA_I(i) (m_sigma_0 + ((double)i/(double)m_range)*(m_sigma_1 - m_sigma_0)) #define S_I(i) (exp (SIGMA_I(i))) #define V2(x,y,i) (V1(x,y,i+1)) -#define ACTIVITY(x,y,i) ((V1(x,y,i) - V2(x,y,i)) / (((key * pow (2., phi))/(S_I(i)*S_I(i))) + V1(x,y,i))) - - - -/** - * Used to achieve temporal coherence - */ -template -class TemporalSmoothVariable -{ -// const int hist_length = 100; - T value; - - T getThreshold( T luminance ) - { - return 0.01 * luminance; - } - -public: - TemporalSmoothVariable() : value( -1 ) - { - } - - void set( T new_value ) - { - if( value == -1 ) - value = new_value; - else { - T delta = new_value - value; - const T threshold = getThreshold( (new_value + value)/2 ); - if( delta > threshold ) delta = threshold; - else if( delta < -threshold ) delta = -threshold; - value += delta; - } - } - - T get() const - { - return value; - } -}; - - -static TemporalSmoothVariable avg_luminance, max_luminance; - +#define ACTIVITY(x,y,i) ((V1(x,y,i) - V2(x,y,i)) / (((m_key * pow (2., m_phi))/(S_I(i)*S_I(i))) + V1(x,y,i))) /* * Kaiser-Bessel stuff */ -static double alpha = 2.; /* Kaiser-Bessel window parameter */ -static double bbeta; /* Will contain bessel (PI * alpha) */ - /* * Modified zeroeth order bessel function of the first kind */ -double bessel (double x) +double Reinhard02::bessel (double x) { const double f = 1e-9; int n = 1; @@ -151,9 +60,9 @@ * Initialiser for Kaiser-Bessel computations */ -void compute_bessel () +void Reinhard02::compute_bessel () { - bbeta = bessel (M_PI * alpha); + m_bbeta = bessel (M_PI * m_alpha); } /* @@ -161,199 +70,62 @@ * Window length M = min (width, height) / 2 */ -double kaiserbessel (double x, double y, double M) +double Reinhard02::kaiserbessel (double x, double y, double M) { double d = 1. - ((x*x + y*y) / (M * M)); if (d <= 0.) return 0.; - return bessel (M_PI * alpha * sqrt (d)) / bbeta; + return bessel (M_PI * m_alpha * sqrt (d)) / m_bbeta; } - -/* - * FFT functions - */ -#ifdef HAVE_ZFFT -static int width, height, scale; -static double ***convolved_image; -static double k = 1. / (2. * 1.4142136); - -void initialise_fft (int width, int height) -{ - coeff = zfft2di (width, height, NULL); -} - -void compute_fft (zomplex *array, int width, int height) -{ - zfft2d (-1, width, height, array, width, coeff); -} - -void compute_inverse_fft (zomplex *array, int width, int height) -{ - zfft2d (1, width, height, array, width, coeff); -} - - -// Compute Gaussian blurred images -void gaussian_filter (zomplex *filter, double scale, double k ) -{ - int x, y; - double x1, y1, s; - double a = 1. / (k * scale); - double c = 1. / 4.; - - for (y = 0; y < cvts.ymax; y++) - { - y1 = (y >= cvts.ymax / 2) ? y - cvts.ymax : y; - s = erf (a * (y1 - .5)) - erf (a * (y1 + .5)); - for (x = 0; x < cvts.xmax; x++) - { - x1 = (x >= cvts.xmax / 2) ? x - cvts.xmax : x; - filter[y*cvts.xmax + x].re = s * (erf (a * (x1 - .5)) - erf (a * (x1 + .5))) * c; - filter[y*cvts.xmax + x].im = 0.; - } - } -} - -void build_gaussian_fft () -{ - int i; - double length = cvts.xmax * cvts.ymax; - double fft_scale = 1. / sqrt (length); - filter_fft = (zomplex**) calloc (range, sizeof (zomplex*)); - - for (scale = 0; scale < range; scale++) - { - fprintf (stderr, "Computing FFT of Gaussian at scale %i (size %i x %i)%c", - scale, cvts.xmax, cvts.ymax, (char)13); - filter_fft[scale] = (zomplex*) calloc (length, sizeof (zomplex)); - gaussian_filter (filter_fft[scale], S_I(scale), k); - compute_fft (filter_fft[scale], cvts.xmax, cvts.ymax); - for (i = 0; i < length; i++) - { - filter_fft[scale][i].re *= fft_scale; - filter_fft[scale][i].im *= fft_scale; - } - } - fprintf (stderr, "\n"); -} - -void build_image_fft () -{ - int i, x, y; - double length = cvts.xmax * cvts.ymax; - double fft_scale = 1. / sqrt (length); - - fprintf (stderr, "Computing image FFT\n"); - image_fft = (zomplex*) calloc (length, sizeof (zomplex)); - - for (y = 0; y < cvts.ymax; y++) - for (x = 0; x < cvts.xmax; x++) - image_fft[y*cvts.xmax + x].re = luminance[y][x]; - - compute_fft (image_fft, cvts.xmax, cvts.ymax); - for (i = 0; i < length; i++) - { - image_fft[i].re *= fft_scale; - image_fft[i].im *= fft_scale; - } -} - -void convolve_filter (int scale, zomplex *convolution_fft) -{ - int i, x, y; - - for (i = 0; i < cvts.xmax * cvts.ymax; i++) - { - convolution_fft[i].re = image_fft[i].re * filter_fft[scale][i].re - - image_fft[i].im * filter_fft[scale][i].im; - convolution_fft[i].im = image_fft[i].re * filter_fft[scale][i].im + - image_fft[i].im * filter_fft[scale][i].re; - } - compute_inverse_fft (convolution_fft, cvts.xmax, cvts.ymax); - i = 0; - for (y = 0; y < cvts.ymax; y++) - for (x = 0; x < cvts.xmax; x++) - convolved_image[scale][x][y] = convolution_fft[i++].re; -} - -void compute_fourier_convolution () -{ - int x; - zomplex *convolution_fft; - - initialise_fft (cvts.xmax, cvts.ymax); - build_image_fft (); - build_gaussian_fft (); - convolved_image = (double ***) malloc (range * sizeof (double **)); - - convolution_fft = (zomplex *) calloc (cvts.xmax * cvts.ymax, sizeof (zomplex)); - for (scale = 0; scale < range; scale++) - { - fprintf (stderr, "Computing convolved image at scale %i%c", scale, (char)13); - convolved_image[scale] = (double **) malloc (cvts.xmax * sizeof (double *)); - for (x = 0; x < cvts.xmax; x++) - convolved_image[scale][x] = (double *) malloc (cvts.ymax * sizeof (double)); - convolve_filter (scale, convolution_fft); - free (filter_fft[scale]); - } - fprintf (stderr, "\n"); - free (convolution_fft); - free (image_fft); -} - -#endif // #ifdef HAVE_ZFFT - - - /* * Tonemapping routines */ -double get_maxvalue () +double Reinhard02::get_maxvalue () { double max = 0.; int x, y; - for (y = 0; y < cvts.ymax; y++) - for (x = 0; x < cvts.xmax; x++) - max = (max < image[y][x][0]) ? image[y][x][0] : max; + for (y = 0; y < m_cvts.ymax; y++) + for (x = 0; x < m_cvts.xmax; x++) + max = (max < m_image[y][x][0]) ? m_image[y][x][0] : max; return max; } -void tonemap_image () +void Reinhard02::tonemap_image () { double Lmax2; int x, y; int scale, prefscale; - if (white < 1e20) - Lmax2 = white * white; + if (m_white < 1e20) + Lmax2 = m_white * m_white; else { - if( temporal_coherent ) { - max_luminance.set( get_maxvalue() ); - Lmax2 = max_luminance.get(); + if( m_temporal_coherent ) { + m_max_luminance.set( get_maxvalue() ); + Lmax2 = m_max_luminance.get(); } else Lmax2 = get_maxvalue(); Lmax2 *= Lmax2; } - for (y = 0; y < cvts.ymax; y++) - for (x = 0; x < cvts.xmax; x++) + for (y = 0; y < m_cvts.ymax; y++) + for (x = 0; x < m_cvts.xmax; x++) { - if (use_scales) + if (m_use_scales) { - prefscale = range - 1; - for (scale = 0; scale < range - 1; scale++) - if ( scale >= PyramidHeight || fabs (ACTIVITY(x,y,scale)) > threshold) + prefscale = m_range - 1; + for (scale = 0; scale < m_range - 1; scale++) + if ( scale >= PyramidHeight || fabs (ACTIVITY(x,y,scale)) > m_threshold) { prefscale = scale; break; } - image[y][x][0] /= 1. + V1(x,y,prefscale); + m_image[y][x][0] /= 1. + V1(x,y,prefscale); } else - image[y][x][0] = image[y][x][0] * (1. + (image[y][x][0] / Lmax2)) / (1. + image[y][x][0]); + m_image[y][x][0] = m_image[y][x][0] * (1. + (m_image[y][x][0] / Lmax2)) / (1. + m_image[y][x][0]); // image[y][x][0] /= (1. + image[y][x][0]); } } @@ -362,119 +134,119 @@ * Miscellaneous functions */ -void clamp_image () +void Reinhard02::clamp_image () { int x, y; - for (y = 0; y < cvts.ymax; y++) - for (x = 0; x < cvts.xmax; x++) + for (y = 0; y < m_cvts.ymax; y++) + for (x = 0; x < m_cvts.xmax; x++) { - image[y][x][0] = (image[y][x][0] > 1.) ? 1. : image[y][x][0]; - image[y][x][1] = (image[y][x][1] > 1.) ? 1. : image[y][x][1]; - image[y][x][2] = (image[y][x][2] > 1.) ? 1. : image[y][x][2]; + m_image[y][x][0] = (m_image[y][x][0] > 1.) ? 1. : m_image[y][x][0]; + m_image[y][x][1] = (m_image[y][x][1] > 1.) ? 1. : m_image[y][x][1]; + m_image[y][x][2] = (m_image[y][x][2] > 1.) ? 1. : m_image[y][x][2]; } } -double log_average () +double Reinhard02::log_average () { int x, y; double sum = 0.; - for (x = 0; x < cvts.xmax; x++) - for (y = 0; y < cvts.ymax; y++) - sum += log (0.00001 + luminance[y][x]); - return exp (sum / (double)(cvts.xmax * cvts.ymax)); + for (x = 0; x < m_cvts.xmax; x++) + for (y = 0; y < m_cvts.ymax; y++) + sum += log (0.00001 + m_luminance[y][x]); + return exp (sum / (double)(m_cvts.xmax * m_cvts.ymax)); } -void scale_to_midtone () +void Reinhard02::scale_to_midtone () { int x, y, u, v, d; double factor; double scale_factor; - double low_tone = key / 3.; - int border_size = (cvts.xmax < cvts.ymax) ? int(cvts.xmax / 5.) : int(cvts.ymax / 5.); - int hw = cvts.xmax >> 1; - int hh = cvts.ymax >> 1; + double low_tone = m_key / 3.; + int border_size = (m_cvts.xmax < m_cvts.ymax) ? int(m_cvts.xmax / 5.) : int(m_cvts.ymax / 5.); + int hw = m_cvts.xmax >> 1; + int hh = m_cvts.ymax >> 1; double avg; - if( temporal_coherent ) { - avg_luminance.set( log_average() ); - avg = avg_luminance.get(); + if( m_temporal_coherent ) { + m_avg_luminance.set( log_average() ); + avg = m_avg_luminance.get(); } else avg = log_average(); scale_factor = 1.0 / avg; - for (y = 0; y < cvts.ymax; y++) - for (x = 0; x < cvts.xmax; x++) + for (y = 0; y < m_cvts.ymax; y++) + for (x = 0; x < m_cvts.xmax; x++) { - if (use_border) + if (m_use_border) { - u = (x > hw) ? cvts.xmax - x : x; - v = (y > hh) ? cvts.ymax - y : y; + u = (x > hw) ? m_cvts.xmax - x : x; + v = (y > hh) ? m_cvts.ymax - y : y; d = (u < v) ? u : v; - factor = (d < border_size) ? (key - low_tone) * + factor = (d < border_size) ? (m_key - low_tone) * kaiserbessel (border_size - d, 0, border_size) + - low_tone : key; + low_tone : m_key; } else - factor = key; - image[y][x][0] *= scale_factor * factor; - luminance[y][x] *= scale_factor * factor; + factor = m_key; + m_image[y][x][0] *= scale_factor * factor; + m_luminance[y][x] *= scale_factor * factor; } } -void copy_luminance () +void Reinhard02::copy_luminance () { int x, y; - for (x = 0; x < cvts.xmax; x++) - for (y = 0; y < cvts.ymax; y++) - luminance[y][x] = image[y][x][0]; + for (x = 0; x < m_cvts.xmax; x++) + for (y = 0; y < m_cvts.ymax; y++) + m_luminance[y][x] = m_image[y][x][0]; } /* * Memory allocation */ -void allocate_memory () +void Reinhard02::allocate_memory () { int y; - luminance = (double **) malloc (cvts.ymax * sizeof (double *)); - image = (COLOR **) malloc (cvts.ymax * sizeof (COLOR *)); - for (y = 0; y < cvts.ymax; y++) + m_luminance = (double **) malloc (m_cvts.ymax * sizeof (double *)); + m_image = (COLOR **) malloc (m_cvts.ymax * sizeof (COLOR *)); + for (y = 0; y < m_cvts.ymax; y++) { - luminance[y] = (double *) malloc (cvts.xmax * sizeof (double)); - image[y] = (COLOR *) malloc (cvts.xmax * sizeof (COLOR)); + m_luminance[y] = (double *) malloc (m_cvts.xmax * sizeof (double)); + m_image[y] = (COLOR *) malloc (m_cvts.xmax * sizeof (COLOR)); } } -void deallocate_memory () +void Reinhard02::deallocate_memory () { int y; - for (y = 0; y < cvts.ymax; y++) + for (y = 0; y < m_cvts.ymax; y++) { - free(luminance[y]); - free(image[y]); + free(m_luminance[y]); + free(m_image[y]); } - free( luminance ); - free( image ); + free( m_luminance ); + free( m_image ); } -void dynamic_range () +void Reinhard02::dynamic_range () { int x, y; double minval = 1e20; double maxval = -1e20; - for (x = 0; x < cvts.xmax; x++) - for (y = 0; y < cvts.ymax; y++) + for (x = 0; x < m_cvts.xmax; x++) + for (y = 0; y < m_cvts.ymax; y++) { - if ((luminance[y][x] < minval) && - (luminance[y][x] > 0.0)) - minval = luminance[y][x]; - if (luminance[y][x] > maxval) - maxval = luminance[y][x]; + if ((m_luminance[y][x] < minval) && + (m_luminance[y][x] > 0.0)) + minval = m_luminance[y][x]; + if (m_luminance[y][x] > maxval) + maxval = m_luminance[y][x]; } } @@ -491,91 +263,256 @@ * @param low size in pixels of smallest scale (should be kept at 1) * @param high size in pixels of largest scale (default 1.6^8 = 43) */ -void tmo_reinhard02(unsigned int width, unsigned int height, - const float *nY, float *nL, - bool use_scales, float key, float phi, - int num, int low, int high, bool temporal_coherent, ProgressHelper *ph ) -{ - ph->newValue( 0 ); - const pfs::Array2D* Y = new pfs::Array2D(width, height, const_cast(nY)); - pfs::Array2D* L = new pfs::Array2D(width, height, nL); +Reinhard02::Reinhard02(unsigned int width, unsigned int height, + const float *nY, float *nL, + bool use_scales, float key, float phi, + int num, int low, int high, bool temporal_coherent, ProgressHelper *ph ) : +m_width(width), +m_height(height), +m_use_scales(use_scales), +m_use_border(false), +m_key(key), +m_phi(phi), +m_white(1e20), +m_range(num), +m_scale_low(low), +m_scale_high(high), +m_temporal_coherent(temporal_coherent), +m_alpha(2.), +m_threshold(0.05), +m_ph(ph) +{ + m_Y = new pfs::Array2D(m_width, m_height, const_cast(nY)); + m_L = new pfs::Array2D(m_width, m_height, nL); +} - int x,y; +void Reinhard02::tmo_reinhard02() +{ + m_ph->newValue( 0 ); - ::key = key; - ::phi = phi; - ::range = num; - ::scale_low = low; - ::scale_high = high; - ::use_scales = (use_scales) ? 1 : 0; - ::temporal_coherent = temporal_coherent; + int x,y; - cvts.xmax = Y->getCols(); - cvts.ymax = Y->getRows(); + m_cvts.xmax = m_Y->getCols(); + m_cvts.ymax = m_Y->getRows(); - sigma_0 = log ((double)scale_low); - sigma_1 = log ((double)scale_high); + m_sigma_0 = log ((double)m_scale_low); + m_sigma_1 = log ((double)m_scale_high); compute_bessel(); allocate_memory (); - ph->newValue( 10 ); - if (ph->isTerminationRequested()) + m_ph->newValue( 10 ); + if (m_ph->isTerminationRequested()) goto end; // reading image - for( y=0 ; ynewValue( 20 ); - if (ph->isTerminationRequested()) + m_ph->newValue( 20 ); + if (m_ph->isTerminationRequested()) goto end; scale_to_midtone(); - ph->newValue( 30 ); - if (ph->isTerminationRequested()) + m_ph->newValue( 30 ); + if (m_ph->isTerminationRequested()) goto end; - if( use_scales ) + if( m_use_scales ) { -#ifdef APPROXIMATE - build_pyramid(luminance, cvts.xmax, cvts.ymax); -#else - compute_fourier_convolution(); -#endif + build_pyramid(m_luminance, m_cvts.xmax, m_cvts.ymax); } - ph->newValue( 50 ); - if (ph->isTerminationRequested()) + m_ph->newValue( 50 ); + if (m_ph->isTerminationRequested()) goto end; tonemap_image(); - ph->newValue( 85 ); - if (ph->isTerminationRequested()) + m_ph->newValue( 85 ); + if (m_ph->isTerminationRequested()) goto end; // saving image - for( y=0 ; ynewValue( 95 ); - if (ph->isTerminationRequested()) + m_ph->newValue( 95 ); + if (m_ph->isTerminationRequested()) goto end; deallocate_memory(); - if( use_scales ) { -#ifdef APPROXIMATE + if( m_use_scales ) { clean_pyramid(); -#endif } - if (!ph->isTerminationRequested()) - ph->newValue( 100 ); + if (!m_ph->isTerminationRequested()) + m_ph->newValue( 100 ); end: - delete L; - delete Y; + ; +} + +double Reinhard02::V1( int x, int y, int level ) + /* PRE: */ +{ + int x0, y0; + int l, size; + double s, t; + + /* Level 0 is a special case, the value is just the image */ + if (level == 0) + return(m_luminance[y][x]); + + /* Compute the size of the slice */ + l = 1 << level; + x0 = x >> level; + y0 = y >> level; + size = PyramidWidth0 >> (level - 1); + + x0 = (x0 >= size ? size - 1 : x0); + y0 = (y0 >= size ? size - 1 : y0); + + s = (double)(x - x0*l)/(double)l; + t = (double)(y - y0*l)/(double)l; + + level--; + + //!! FIX: a quick fix for boundary conditions + int x01,y01; + x01 = (x0 == size-1 ? x0 : x0+1); + y01 = (y0 == size-1 ? y0 : y0+1); + + return((1-s)*(1-t)*Pyramid[level][y0][x0] + s*(1-t)*Pyramid[level][y0][x01] + + (1-s)*t*Pyramid[level][y01][x0] + s*t*Pyramid[level][y01][x01]); } + +double Reinhard02::pyramid_lookup( int x, int y, int level ) + /* PRE: */ +{ + int n, s; + + /* Level 0 is a special case, the value is just the image */ + if (level == 0) { + if ( (x < 0) || (y < 0) || (x >= m_width) || (y >= m_height) ) + return(0.0); + else + return(m_luminance[y][x]); + } + + /* Compute the size of the slice */ + level--; + n = 1 << level; + s = PyramidWidth0 >> level; + + //x = x >> level; + //y = y >> level; + + if ( (x < 0) || (y < 0) || (x >= s) || (y >= s) ) + return(0.0); + else + return(Pyramid[level][y][x]); +} + +void Reinhard02::build_pyramid( double **/*luminance*/, int image_width, int image_height ) +{ + int k; + int x, y; + int i, j; + int width; + int max_dim; +// int height, pyramid_height; + + double sum = 0; + + double a = 0.4; + double b = 0.25; + double c = b - a/2; + double w[5]; + + /* Compute the "filter kernel" */ + w[0] = c; + w[1] = b; + w[2] = a; + w[3] = w[1]; + w[4] = w[0]; + + /* Build the pyramid slices. The bottom of the pyramid is the luminace */ + /* image, and is not in the Pyramid array. */ + /* For simplicity, the first level is padded to a square whose side is a */ + /* power of two. */ + + /* Compute the size of the Pyramid array */ + max_dim = (m_height > m_width ? m_height : m_width); + PyramidHeight = (int) floor(log(max_dim - 0.5)/log(2.0f)) + 1; + + /* Compute the dimensions of the first level */ + width = 1 << (PyramidHeight - 1); + PyramidWidth0 = width; + +// fprintf(stderr, "max_dim %d height %d\n", max_dim, PyramidHeight); + + /* Allocate the outer Pyramid array */ + Pyramid = (double***) calloc(PyramidHeight, sizeof(double**)); + if (!Pyramid) { + fprintf(stderr, "Unable to allocate pyramid array.\n"); + exit(1); + } + + /* Allocate and assign the Pyramid slices */ + k = 0; + + while (width) { + +// fprintf(stderr, "level %d, width = %d\n", k, width); + + /* Allocate the slice */ + Pyramid[k] = (double**) calloc(width, sizeof(double*)); + if (!Pyramid[k]) { + fprintf(stderr, "Unable to allocate pyramid array.\n"); + exit(1); + } + for (y = 0; y < width; y++) { + Pyramid[k][y] = (double*) calloc(width, sizeof(double)); + if (!Pyramid[k][y]) { + fprintf(stderr, "Unable to allocate pyramid array.\n"); + exit(1); + } + } + + /* Compute the values in the slice */ + for (y = 0; y < width; y++) { + for (x = 0; x < width; x++) { + + sum = 0; + for (i = 0; i < 5; i++) { + for (j = 0; j < 5; j++) { + sum += w[i]*w[j]*pyramid_lookup(2*x + i - 2, 2*y + j - 2, k); + } + } + Pyramid[k][y][x] = sum; + } + } + + /* compute the width of the next slice */ + width /= 2; + k++; + } +} + +void Reinhard02::clean_pyramid() +{ + int k=0; + int width = PyramidWidth0; + while(width) + { + for( int y=0 ; y +class TemporalSmoothVariable +{ +// const int hist_length = 100; + T value; + + T getThreshold( T luminance ) + { + return 0.01 * luminance; + } + +public: + TemporalSmoothVariable() : value( -1 ) + { + } + + void set( T new_value ) + { + if( value == -1 ) + value = new_value; + else { + T delta = new_value - value; + const T threshold = getThreshold( (new_value + value)/2 ); + if( delta > threshold ) delta = threshold; + else if( delta < -threshold ) delta = -threshold; + value += delta; + } + } + + T get() const + { + return value; + } +}; + +//--- from defines.h +typedef struct { + int xmax, ymax; /* image dimensions */ +} CVTS; + +typedef double COLOR[3]; /* red, green, blue (or X,Y,Z) */ +//--- end of defines.h + + +//static double key = 0.18; +//static double threshold = 0.05; +//static double phi = 8.; +//static double white = 1e20; +//static int scale_low = 1; +//static int scale_high = 43; // 1.6^8 = 43 +//static int range = 8; +//static int use_scales = 0; +//static int use_border = 0; + -#include "Common/ProgressHelper.h" /* * @brief Photographic tone-reproduction @@ -27,9 +86,54 @@ * @param low size in pixels of smallest scale (should be kept at 1) * @param high size in pixels of largest scale (default 1.6^8 = 43) */ -void tmo_reinhard02(unsigned int width, unsigned int height, - const float *Y, float *L, - bool use_scales, float key, float phi, - int num, int low, int high, bool temporal_coherent, ProgressHelper *ph ); +class Reinhard02 +{ +public: + Reinhard02(unsigned int width, unsigned int height, + const float *Y, float *L, + bool use_scales, float key, float phi, + int num, int low, int high, bool temporal_coherent, ProgressHelper *ph ); + ~Reinhard02() { delete m_Y; delete m_L; }; + void tmo_reinhard02(); + +private: + TemporalSmoothVariable m_avg_luminance, m_max_luminance; + CVTS m_cvts; + COLOR **m_image; + double m_sigma_0, m_sigma_1; + double **m_luminance; + unsigned int m_width, m_height; + const pfs::Array2D* m_Y; + pfs::Array2D* m_L; + bool m_use_scales; + bool m_use_border; + double m_key, m_phi, m_white; + int m_range, m_scale_low, m_scale_high; + bool m_temporal_coherent; + const double m_alpha; + double m_bbeta; + double m_threshold; + ProgressHelper *m_ph; + + double ***Pyramid; + int PyramidHeight; + int PyramidWidth0; -#endif /* _tmo_reinhard02_h_ */ + double bessel(double); + void compute_bessel(); + double kaiserbessel(double, double, double); + double get_maxvalue(); + void tonemap_image(); + void clamp_image(); + double log_average(); + void scale_to_midtone(); + void copy_luminance(); + void allocate_memory(); + void deallocate_memory(); + void dynamic_range(); + double V1(int, int, int); + double pyramid_lookup(int, int, int); + void build_pyramid(double **, int, int); + void clean_pyramid(); +}; +#endif // TMO_REINHARD02_H diff -Nru luminance-2.2.1/src/TonemappingOperators/reinhard05/pfstmo_reinhard05.cpp luminance-2.3.0/src/TonemappingOperators/reinhard05/pfstmo_reinhard05.cpp --- luminance-2.2.1/src/TonemappingOperators/reinhard05/pfstmo_reinhard05.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/reinhard05/pfstmo_reinhard05.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -31,13 +31,15 @@ * $Id: pfstmo_reinhard05.cpp,v 1.2 2008/09/04 12:46:49 julians37 Exp $ */ +#include "tmo_reinhard05.h" + #include #include #include -#include "tmo_reinhard05.h" #include "Libpfs/frame.h" #include "Libpfs/colorspace.h" +#include "Common/ProgressHelper.h" void pfstmo_reinhard05(pfs::Frame *frame, float brightness, float chromaticadaptation, float lightadaptation, ProgressHelper *ph) { diff -Nru luminance-2.2.1/src/TonemappingOperators/reinhard05/tmo_reinhard05.cpp luminance-2.3.0/src/TonemappingOperators/reinhard05/tmo_reinhard05.cpp --- luminance-2.2.1/src/TonemappingOperators/reinhard05/tmo_reinhard05.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/reinhard05/tmo_reinhard05.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -31,6 +31,7 @@ */ #include "TonemappingOperators/pfstmo.h" +#include "Common/ProgressHelper.h" #include "tmo_reinhard05.h" #include diff -Nru luminance-2.2.1/src/TonemappingOperators/reinhard05/tmo_reinhard05.h luminance-2.3.0/src/TonemappingOperators/reinhard05/tmo_reinhard05.h --- luminance-2.2.1/src/TonemappingOperators/reinhard05/tmo_reinhard05.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingOperators/reinhard05/tmo_reinhard05.h 2012-07-01 09:10:50.000000000 +0000 @@ -30,8 +30,10 @@ * $Id: tmo_reinhard05.h,v 1.2 2008/09/04 12:46:49 julians37 Exp $ */ -#ifndef _tmo_reinhard05_h_ -#define _tmo_reinhard05_h_ +#ifndef TMO_REINHARD05_H +#define TMO_REINHARD05_H + +class ProgressHelper; /** * @brief: Tone mapping algorithm [Reinhard2005] @@ -46,11 +48,8 @@ * @param ca amount of chromatic adaptation 0:1 (saturation, def 0) * @param la amount of light adaptation 0:1 (local/global, def 1) */ - -#include "Common/ProgressHelper.h" - void tmo_reinhard05(unsigned int width, unsigned int height, float* R, float* G, float* B, const float* Y, float br, float ca, float la, ProgressHelper *ph ); -#endif +#endif // TMO_REINHARD05_H diff -Nru luminance-2.2.1/src/TonemappingPanel/CMakeLists.txt luminance-2.3.0/src/TonemappingPanel/CMakeLists.txt --- luminance-2.2.1/src/TonemappingPanel/CMakeLists.txt 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingPanel/CMakeLists.txt 2012-07-01 09:10:50.000000000 +0000 @@ -1,16 +1,12 @@ SET(FILES_UI -${CMAKE_CURRENT_SOURCE_DIR}/SavedParametersDialog.ui ${CMAKE_CURRENT_SOURCE_DIR}/SavingParametersDialog.ui -${CMAKE_CURRENT_SOURCE_DIR}/TonemappingPanel.ui -${CMAKE_CURRENT_SOURCE_DIR}/TonemappingWarnDialog.ui) +${CMAKE_CURRENT_SOURCE_DIR}/TonemappingPanel.ui) SET(FILES_H -${CMAKE_CURRENT_SOURCE_DIR}/SavedParametersDialog.h ${CMAKE_CURRENT_SOURCE_DIR}/SavingParametersDialog.h ${CMAKE_CURRENT_SOURCE_DIR}/TMOProgressIndicator.h ${CMAKE_CURRENT_SOURCE_DIR}/TonemappingPanel.h ${CMAKE_CURRENT_SOURCE_DIR}/TonemappingWarnDialog.h) SET(FILES_CPP -${CMAKE_CURRENT_SOURCE_DIR}/SavedParametersDialog.cpp ${CMAKE_CURRENT_SOURCE_DIR}/SavingParametersDialog.cpp ${CMAKE_CURRENT_SOURCE_DIR}/TMOProgressIndicator.cpp ${CMAKE_CURRENT_SOURCE_DIR}/TonemappingPanel.cpp diff -Nru luminance-2.2.1/src/TonemappingPanel/SavedParametersDialog.cpp luminance-2.3.0/src/TonemappingPanel/SavedParametersDialog.cpp --- luminance-2.2.1/src/TonemappingPanel/SavedParametersDialog.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingPanel/SavedParametersDialog.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,323 +0,0 @@ -/** - * This file is a part of Luminance HDR package. - * ---------------------------------------------------------------------- - * Copyright (C) 2011 Franco Comida - * - * This program 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * ---------------------------------------------------------------------- - * - * @author Franco Comida - * - */ - -#include -#include -#include -#include - -#include "SavedParametersDialog.h" - -SavedParameters::SavedParameters(QWidget *parent): - QDialog(parent), - model(new QSqlTableModel()) -{ - setupUi(this); - //QSqlDatabase db = QSqlDatabase::database(); - - // Create a temp table - QSqlQuery query; - bool res = query.exec("CREATE TABLE comments (comment varchar(150), operator varchar(15));"); - if (res == false) - qDebug() << query.lastError(); - - /* res = query.exec("SELECT ashikhmin.comment, drago.comment," - "durand.comment, fattal.comment, mantiuk06.comment," - "mantiuk08.comment, pattanaik.comment," - "reinhard02.comment, reinhard05.comment" - " FROM ashikhmin, drago," - "durand, fattal, mantiuk06, mantiuk08, pattanaik, reinhard02, reinhard05"); -*/ - // Ashikhmin - res = query.exec("SELECT ashikhmin.comment FROM ashikhmin"); - if (res == false) - qDebug() << query.lastError(); - while (query.next()) - { - QSqlQuery insertQuery; - insertQuery.prepare("INSERT into comments (comment, operator)" - "VALUES (:comment, :operator)"); - insertQuery.bindValue(":comment", query.value(0).toString()); - insertQuery.bindValue(":operator", "ashikhmin"); - res = insertQuery.exec(); - if (res == false) - qDebug() << insertQuery.lastError(); - qDebug() << query.value(0).toString(); - } - // Drago - res = query.exec("SELECT drago.comment FROM drago"); - if (res == false) - qDebug() << query.lastError(); - while (query.next()) - { - QSqlQuery insertQuery; - insertQuery.prepare("INSERT into comments (comment, operator)" - "VALUES (:comment, :operator)"); - insertQuery.bindValue(":comment", query.value(0).toString()); - insertQuery.bindValue(":operator", "drago"); - res = insertQuery.exec(); - if (res == false) - qDebug() << insertQuery.lastError(); - qDebug() << query.value(0).toString(); - } - // Durand - res = query.exec("SELECT durand.comment FROM durand"); - if (res == false) - qDebug() << query.lastError(); - while (query.next()) - { - QSqlQuery insertQuery; - insertQuery.prepare("INSERT into comments (comment, operator)" - "VALUES (:comment, :operator)"); - insertQuery.bindValue(":comment", query.value(0).toString()); - insertQuery.bindValue(":operator", "durand"); - res = insertQuery.exec(); - if (res == false) - qDebug() << insertQuery.lastError(); - qDebug() << query.value(0).toString(); - } - // Fattal - res = query.exec("SELECT fattal.comment FROM fattal"); - if (res == false) - qDebug() << query.lastError(); - while (query.next()) - { - QSqlQuery insertQuery; - insertQuery.prepare("INSERT into comments (comment, operator)" - "VALUES (:comment, :operator)"); - insertQuery.bindValue(":comment", query.value(0).toString()); - insertQuery.bindValue(":operator", "fattal"); - res = insertQuery.exec(); - if (res == false) - qDebug() << insertQuery.lastError(); - qDebug() << query.value(0).toString(); - } - // Mantiuk 06 - res = query.exec("SELECT mantiuk06.comment FROM mantiuk06"); - if (res == false) - qDebug() << query.lastError(); - while (query.next()) - { - QSqlQuery insertQuery; - insertQuery.prepare("INSERT into comments (comment, operator)" - "VALUES (:comment, :operator)"); - insertQuery.bindValue(":comment", query.value(0).toString()); - insertQuery.bindValue(":operator", "mantiuk06"); - res = insertQuery.exec(); - if (res == false) - qDebug() << insertQuery.lastError(); - qDebug() << query.value(0).toString(); - } - // Mantiuk 08 - res = query.exec("SELECT mantiuk08.comment FROM mantiuk08"); - if (res == false) - qDebug() << query.lastError(); - while (query.next()) - { - QSqlQuery insertQuery; - insertQuery.prepare("INSERT into comments (comment, operator)" - "VALUES (:comment, :operator)"); - insertQuery.bindValue(":comment", query.value(0).toString()); - insertQuery.bindValue(":operator", "mantiuk08"); - res = insertQuery.exec(); - if (res == false) - qDebug() << insertQuery.lastError(); - qDebug() << query.value(0).toString(); - } - // Pattanaik - res = query.exec("SELECT pattanaik.comment FROM pattanaik"); - if (res == false) - qDebug() << query.lastError(); - while (query.next()) - { - QSqlQuery insertQuery; - insertQuery.prepare("INSERT into comments (comment, operator)" - "VALUES (:comment, :operator)"); - insertQuery.bindValue(":comment", query.value(0).toString()); - insertQuery.bindValue(":operator", "pattanaik"); - res = insertQuery.exec(); - if (res == false) - qDebug() << insertQuery.lastError(); - qDebug() << query.value(0).toString(); - } - // Reinhard 02 - res = query.exec("SELECT reinhard02.comment FROM reinhard02"); - if (res == false) - qDebug() << query.lastError(); - while (query.next()) - { - QSqlQuery insertQuery; - insertQuery.prepare("INSERT into comments (comment, operator)" - "VALUES (:comment, :operator)"); - insertQuery.bindValue(":comment", query.value(0).toString()); - insertQuery.bindValue(":operator", "reinhard02"); - res = insertQuery.exec(); - if (res == false) - qDebug() << insertQuery.lastError(); - qDebug() << query.value(0).toString(); - } - // Reinhard 05 - res = query.exec("SELECT reinhard05.comment FROM reinhard05"); - if (res == false) - qDebug() << query.lastError(); - while (query.next()) - { - QSqlQuery insertQuery; - insertQuery.prepare("INSERT into comments (comment, operator)" - "VALUES (:comment, :operator)"); - insertQuery.bindValue(":comment", query.value(0).toString()); - insertQuery.bindValue(":operator", "reinhard05"); - res = insertQuery.exec(); - if (res == false) - qDebug() << insertQuery.lastError(); - qDebug() << query.value(0).toString(); - } - - model->setTable("comments"); - model->select(); - model->setHeaderData(0, Qt::Horizontal, tr("Comment")); - model->setHeaderData(1, Qt::Horizontal, tr("TM Operator")); - - tableView->setModel(model); - tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); - tableView->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents); - tableView->show(); -} - - -SavedParameters::SavedParameters(TMOperator op, QWidget *parent): - QDialog(parent), - model(new QSqlTableModel()) -{ - setupUi(this); - //QSqlDatabase db = QSqlDatabase::database(); - - switch (op) - { - case ashikhmin: - model->setTable("ashikhmin"); - model->select(); - model->setHeaderData(0, Qt::Horizontal, tr("Simple")); - model->setHeaderData(1, Qt::Horizontal, tr("Equation 2")); - model->setHeaderData(2, Qt::Horizontal, tr("Local Contrast Threshold")); - model->setHeaderData(3, Qt::Horizontal, tr("Pre-gamma")); - model->setHeaderData(4, Qt::Horizontal, tr("Comment")); - break; - case drago: - model->setTable("drago"); - model->select(); - model->setHeaderData(0, Qt::Horizontal, tr("Bias")); - model->setHeaderData(1, Qt::Horizontal, tr("Pre-gamma")); - model->setHeaderData(2, Qt::Horizontal, tr("Comment")); - break; - case durand: - model->setTable("durand"); - model->select(); - model->setHeaderData(0, Qt::Horizontal, tr("Spatial Kernel Sigma")); - model->setHeaderData(1, Qt::Horizontal, tr("Range Kernel Sigma")); - model->setHeaderData(2, Qt::Horizontal, tr("Base Contrast")); - model->setHeaderData(3, Qt::Horizontal, tr("Pre-gamma")); - model->setHeaderData(4, Qt::Horizontal, tr("Comment")); - break; - case fattal: - model->setTable("fattal"); - model->select(); - model->setHeaderData(0, Qt::Horizontal, tr("Alpha")); - model->setHeaderData(1, Qt::Horizontal, tr("Beta")); - model->setHeaderData(2, Qt::Horizontal, tr("Color Saturation")); - model->setHeaderData(3, Qt::Horizontal, tr("Noise Reduction")); - model->setHeaderData(4, Qt::Horizontal, tr("Old Fattal")); - model->setHeaderData(5, Qt::Horizontal, tr("Pre-gamma")); - model->setHeaderData(6, Qt::Horizontal, tr("Comment")); - break; - case mantiuk06: - model->setTable("mantiuk06"); - model->select(); - model->setHeaderData(0, Qt::Horizontal, tr("Contrast Equalization")); - model->setHeaderData(1, Qt::Horizontal, tr("Contrast Factor")); - model->setHeaderData(2, Qt::Horizontal, tr("Saturation Factor")); - model->setHeaderData(3, Qt::Horizontal, tr("Detail Factor")); - model->setHeaderData(4, Qt::Horizontal, tr("Pre-gamma")); - model->setHeaderData(5, Qt::Horizontal, tr("Comment")); - break; - case mantiuk08: - model->setTable("mantiuk08"); - model->select(); - model->setHeaderData(0, Qt::Horizontal, tr("Color Saturation")); - model->setHeaderData(1, Qt::Horizontal, tr("Contrast Enhancement")); - model->setHeaderData(2, Qt::Horizontal, tr("Luminance Level")); - model->setHeaderData(3, Qt::Horizontal, tr("Manual Luminance Level")); - model->setHeaderData(4, Qt::Horizontal, tr("Pre-gamma")); - model->setHeaderData(5, Qt::Horizontal, tr("Comment")); - break; - case pattanaik: - model->setTable("pattanaik"); - model->select(); - model->setHeaderData(0, Qt::Horizontal, tr("Cone and Rod based on Luminance")); - model->setHeaderData(1, Qt::Horizontal, tr("Local Tonemapping")); - model->setHeaderData(2, Qt::Horizontal, tr("Cone Level")); - model->setHeaderData(3, Qt::Horizontal, tr("Rod Level")); - model->setHeaderData(4, Qt::Horizontal, tr("Multiplier")); - model->setHeaderData(5, Qt::Horizontal, tr("Pre-gamma")); - model->setHeaderData(6, Qt::Horizontal, tr("Comment")); - break; - case reinhard02: - model->setTable("reinhard02"); - model->select(); - model->setHeaderData(0, Qt::Horizontal, tr("Use Scales")); - model->setHeaderData(1, Qt::Horizontal, tr("Key Value")); - model->setHeaderData(2, Qt::Horizontal, tr("Phi Value")); - model->setHeaderData(3, Qt::Horizontal, tr("Range")); - model->setHeaderData(4, Qt::Horizontal, tr("Lower Scale")); - model->setHeaderData(5, Qt::Horizontal, tr("Upper Scale")); - model->setHeaderData(6, Qt::Horizontal, tr("Pre-gamma")); - model->setHeaderData(7, Qt::Horizontal, tr("Comment")); - break; - case reinhard05: - model->setTable("reinhard05"); - model->select(); - model->setHeaderData(0, Qt::Horizontal, tr("Brightness")); - model->setHeaderData(1, Qt::Horizontal, tr("Chromatic Adaptation")); - model->setHeaderData(2, Qt::Horizontal, tr("Light Adaptation")); - model->setHeaderData(3, Qt::Horizontal, tr("Pre-gamma")); - model->setHeaderData(4, Qt::Horizontal, tr("Comment")); - break; - } - tableView->setModel(model); - tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); - tableView->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents); - tableView->show(); -} - -SavedParameters::~SavedParameters() -{ -#ifdef QT_DEBUG - qDebug() << "SavedParameters::~SavedParameters()"; -#endif - QSqlQuery query("DROP TABLE IF EXISTS comments"); -#ifdef QT_DEBUG - qDebug() << query.lastError(); -#endif - delete model; -} diff -Nru luminance-2.2.1/src/TonemappingPanel/SavedParametersDialog.h luminance-2.3.0/src/TonemappingPanel/SavedParametersDialog.h --- luminance-2.2.1/src/TonemappingPanel/SavedParametersDialog.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingPanel/SavedParametersDialog.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ -/** - * This file is a part of Luminance HDR package. - * ---------------------------------------------------------------------- - * Copyright (C) 2011 Franco Comida - * - * This program 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 2 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, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * ---------------------------------------------------------------------- - * - * @author Franco Comida - * - */ - -#ifndef SAVEDPARAMETERSDIALOG_H -#define SAVEDPARAMETERSDIALOG_H - -#include - -#include "Core/TonemappingOptions.h" -#include "ui_SavedParametersDialog.h" - -class SavedParameters : public QDialog, private Ui::ParametersDialog -{ - Q_OBJECT - -public: - //! \brief Default constructor - explicit SavedParameters(QWidget *parent = 0); - - //! \brief Specialized ctor - SavedParameters(TMOperator op, QWidget *parent = 0); - - ~SavedParameters(); - - QModelIndex getCurrentIndex(); - QSqlTableModel* getModel(); - -protected: - QSqlTableModel* model; -}; - -inline QModelIndex SavedParameters::getCurrentIndex() -{ - return tableView->currentIndex(); -} - -inline QSqlTableModel* SavedParameters::getModel() -{ - return model; -} - -#endif diff -Nru luminance-2.2.1/src/TonemappingPanel/SavedParametersDialog.ui luminance-2.3.0/src/TonemappingPanel/SavedParametersDialog.ui --- luminance-2.2.1/src/TonemappingPanel/SavedParametersDialog.ui 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingPanel/SavedParametersDialog.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,77 +0,0 @@ - - - ParametersDialog - - - Qt::ApplicationModal - - - - 0 - 0 - 835 - 300 - - - - Saved Parameters - - - - - - - - - - - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - - - - - - - - - buttonBox - accepted() - ParametersDialog - accept() - - - 689 - 278 - - - 586 - 1 - - - - - buttonBox - rejected() - ParametersDialog - reject() - - - 762 - 283 - - - 721 - -2 - - - - - diff -Nru luminance-2.2.1/src/TonemappingPanel/TMOProgressIndicator.cpp luminance-2.3.0/src/TonemappingPanel/TMOProgressIndicator.cpp --- luminance-2.2.1/src/TonemappingPanel/TMOProgressIndicator.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingPanel/TMOProgressIndicator.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -23,6 +23,7 @@ */ #include "TMOProgressIndicator.h" +#include "OsIntegration/osintegration.h" #include @@ -81,6 +82,7 @@ #endif m_progressBar->setValue(value); + OsIntegration::getInstance().setProgress(value, m_progressBar->maximum() - m_progressBar->minimum()); } void TMOProgressIndicator::setMaximum(int max) @@ -96,5 +98,6 @@ void TMOProgressIndicator::reset() { m_progressBar->reset(); + OsIntegration::getInstance().setProgress(-1); m_isTerminated = false; } diff -Nru luminance-2.2.1/src/TonemappingPanel/TonemappingPanel.cpp luminance-2.3.0/src/TonemappingPanel/TonemappingPanel.cpp --- luminance-2.2.1/src/TonemappingPanel/TonemappingPanel.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingPanel/TonemappingPanel.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -45,7 +45,7 @@ #include "Common/config.h" #include "TonemappingPanel/TonemappingPanel.h" #include "TonemappingPanel/TMOProgressIndicator.h" -#include "TonemappingPanel/SavedParametersDialog.h" +#include "Common/SavedParametersDialog.h" #include "TonemappingPanel/SavingParametersDialog.h" #include "TonemappingOperators/pfstmdefaultparams.h" #include "UI/Gang.h" @@ -79,15 +79,16 @@ luminanceLevelGang = new Gang(m_Ui->luminanceLevelSlider, m_Ui->luminanceLevelDSB, m_Ui->luminanceLevelCheckBox, NULL, NULL, NULL, 1.f, 100.0f, MANTIUK08_LUMINANCE_LEVEL); // fattal02 - alphaGang = new Gang(m_Ui->alphaSlider, m_Ui->alphadsb, NULL,NULL,NULL,NULL, 1e-4, 2.f, FATTAL02_ALPHA, true); + alphaGang = new Gang(m_Ui->alphaSlider, m_Ui->alphadsb, NULL,NULL,NULL,NULL, 0.05, 2.f, FATTAL02_ALPHA, true); connect(alphaGang, SIGNAL(enableUndo(bool)), m_Ui->undoButton, SLOT(setEnabled(bool))); connect(alphaGang, SIGNAL(enableRedo(bool)), m_Ui->redoButton, SLOT(setEnabled(bool))); betaGang = new Gang(m_Ui->betaSlider, m_Ui->betadsb, NULL,NULL,NULL,NULL, 0.1f, 2.f, FATTAL02_BETA); - saturation2Gang = new Gang(m_Ui->saturation2Slider, m_Ui->saturation2dsb, NULL,NULL,NULL,NULL, 0.f, 1.f, FATTAL02_COLOR); + saturation2Gang = new Gang(m_Ui->saturation2Slider, m_Ui->saturation2dsb, NULL,NULL,NULL,NULL, 0.f, 1.5f, FATTAL02_COLOR); noiseGang = new Gang(m_Ui->noiseSlider, m_Ui->noisedsb, NULL,NULL,NULL,NULL, 0, 1.f, FATTAL02_NOISE_REDUX); - oldFattalGang = new Gang(NULL,NULL, m_Ui->oldFattalCheckBox); + // oldFattalGang = new Gang(NULL,NULL, m_Ui->oldFattalCheckBox); + fftSolverGang = new Gang(NULL, NULL,m_Ui->fftVersionCheckBox); // ashikhmin02 contrastGang = new Gang(m_Ui->contrastSlider, m_Ui->contrastdsb,NULL,NULL,NULL,NULL, 0.f, 1.f, 0.5f); @@ -195,6 +196,8 @@ delete lightGang; delete pregammaGang; + qDeleteAll(toneMappingOptionsToDelete); + QSqlDatabase db = QSqlDatabase::database(); db.close(); } @@ -313,7 +316,6 @@ betaGang->setDefault(); saturation2Gang->setDefault(); noiseGang->setDefault(); - m_Ui->oldFattalCheckBox->setChecked(false); break; case mantiuk06: contrastfactorGang->setDefault(); @@ -402,77 +404,80 @@ fillToneMappingOptions(); setupUndo(); - emit startTonemapping(&toneMappingOptions); + emit startTonemapping(toneMappingOptions); } void TonemappingPanel::fillToneMappingOptions() -{ - toneMappingOptions.origxsize = sizes[0]; - toneMappingOptions.xsize = sizes[m_Ui->sizeComboBox->currentIndex()]; - toneMappingOptions.pregamma = pregammaGang->v(); - //toneMappingOptions.tonemapSelection = checkBoxSelection->isChecked(); - //toneMappingOptions.tonemapOriginal = checkBoxOriginal->isChecked(); +{ + toneMappingOptions = new TonemappingOptions; + toneMappingOptionsToDelete.push_back(toneMappingOptions); + toneMappingOptions->origxsize = sizes[0]; + toneMappingOptions->xsize = sizes[m_Ui->sizeComboBox->currentIndex()]; + toneMappingOptions->pregamma = pregammaGang->v(); + // toneMappingOptions->tonemapSelection = checkBoxSelection->isChecked(); + // toneMappingOptions->tonemapOriginal = checkBoxOriginal->isChecked(); switch (currentTmoOperator) { case ashikhmin: - toneMappingOptions.tmoperator = ashikhmin; - toneMappingOptions.operator_options.ashikhminoptions.simple=simpleGang->isCheckBox1Checked(); - toneMappingOptions.operator_options.ashikhminoptions.eq2=eq2Gang->isRadioButton1Checked(); - toneMappingOptions.operator_options.ashikhminoptions.lct=contrastGang->v(); + toneMappingOptions->tmoperator = ashikhmin; + toneMappingOptions->operator_options.ashikhminoptions.simple=simpleGang->isCheckBox1Checked(); + toneMappingOptions->operator_options.ashikhminoptions.eq2=eq2Gang->isRadioButton1Checked(); + toneMappingOptions->operator_options.ashikhminoptions.lct=contrastGang->v(); break; case drago: - toneMappingOptions.tmoperator = drago; - toneMappingOptions.operator_options.dragooptions.bias=biasGang->v(); + toneMappingOptions->tmoperator = drago; + toneMappingOptions->operator_options.dragooptions.bias=biasGang->v(); break; case durand: - toneMappingOptions.tmoperator = durand; - toneMappingOptions.operator_options.durandoptions.spatial=spatialGang->v(); - toneMappingOptions.operator_options.durandoptions.range=rangeGang->v(); - toneMappingOptions.operator_options.durandoptions.base=baseGang->v(); + toneMappingOptions->tmoperator = durand; + toneMappingOptions->operator_options.durandoptions.spatial=spatialGang->v(); + toneMappingOptions->operator_options.durandoptions.range=rangeGang->v(); + toneMappingOptions->operator_options.durandoptions.base=baseGang->v(); break; case fattal: - toneMappingOptions.tmoperator = fattal; - toneMappingOptions.operator_options.fattaloptions.alpha=alphaGang->v(); - toneMappingOptions.operator_options.fattaloptions.beta=betaGang->v(); - toneMappingOptions.operator_options.fattaloptions.color=saturation2Gang->v(); - toneMappingOptions.operator_options.fattaloptions.noiseredux=noiseGang->v(); - toneMappingOptions.operator_options.fattaloptions.newfattal=!oldFattalGang->isCheckBox1Checked(); + toneMappingOptions->tmoperator = fattal; + toneMappingOptions->operator_options.fattaloptions.alpha=alphaGang->v(); + toneMappingOptions->operator_options.fattaloptions.beta=betaGang->v(); + toneMappingOptions->operator_options.fattaloptions.color=saturation2Gang->v(); + toneMappingOptions->operator_options.fattaloptions.noiseredux=noiseGang->v(); +// toneMappingOptions->operator_options.fattaloptions.newfattal=!oldFattalGang->isCheckBox1Checked(); + toneMappingOptions->operator_options.fattaloptions.fftsolver=fftSolverGang->isCheckBox1Checked(); break; case mantiuk06: - toneMappingOptions.tmoperator = mantiuk06; - toneMappingOptions.operator_options.mantiuk06options.contrastfactor=contrastfactorGang->v(); - toneMappingOptions.operator_options.mantiuk06options.saturationfactor=saturationfactorGang->v(); - toneMappingOptions.operator_options.mantiuk06options.detailfactor=detailfactorGang->v(); - toneMappingOptions.operator_options.mantiuk06options.contrastequalization=contrastfactorGang->isCheckBox1Checked(); + toneMappingOptions->tmoperator = mantiuk06; + toneMappingOptions->operator_options.mantiuk06options.contrastfactor=contrastfactorGang->v(); + toneMappingOptions->operator_options.mantiuk06options.saturationfactor=saturationfactorGang->v(); + toneMappingOptions->operator_options.mantiuk06options.detailfactor=detailfactorGang->v(); + toneMappingOptions->operator_options.mantiuk06options.contrastequalization=contrastfactorGang->isCheckBox1Checked(); break; case mantiuk08: - toneMappingOptions.tmoperator = mantiuk08; - toneMappingOptions.operator_options.mantiuk08options.colorsaturation=colorSaturationGang->v(); - toneMappingOptions.operator_options.mantiuk08options.contrastenhancement=contrastEnhancementGang->v(); - toneMappingOptions.operator_options.mantiuk08options.luminancelevel=luminanceLevelGang->v(); - toneMappingOptions.operator_options.mantiuk08options.setluminance=luminanceLevelGang->isCheckBox1Checked(); + toneMappingOptions->tmoperator = mantiuk08; + toneMappingOptions->operator_options.mantiuk08options.colorsaturation=colorSaturationGang->v(); + toneMappingOptions->operator_options.mantiuk08options.contrastenhancement=contrastEnhancementGang->v(); + toneMappingOptions->operator_options.mantiuk08options.luminancelevel=luminanceLevelGang->v(); + toneMappingOptions->operator_options.mantiuk08options.setluminance=luminanceLevelGang->isCheckBox1Checked(); break; case pattanaik: - toneMappingOptions.tmoperator = pattanaik; - toneMappingOptions.operator_options.pattanaikoptions.autolum=autoYGang->isCheckBox1Checked(); - toneMappingOptions.operator_options.pattanaikoptions.local=pattalocalGang->isCheckBox1Checked(); - toneMappingOptions.operator_options.pattanaikoptions.cone=coneGang->v(); - toneMappingOptions.operator_options.pattanaikoptions.rod=rodGang->v(); - toneMappingOptions.operator_options.pattanaikoptions.multiplier=multiplierGang->v(); + toneMappingOptions->tmoperator = pattanaik; + toneMappingOptions->operator_options.pattanaikoptions.autolum=autoYGang->isCheckBox1Checked(); + toneMappingOptions->operator_options.pattanaikoptions.local=pattalocalGang->isCheckBox1Checked(); + toneMappingOptions->operator_options.pattanaikoptions.cone=coneGang->v(); + toneMappingOptions->operator_options.pattanaikoptions.rod=rodGang->v(); + toneMappingOptions->operator_options.pattanaikoptions.multiplier=multiplierGang->v(); break; case reinhard02: - toneMappingOptions.tmoperator = reinhard02; - toneMappingOptions.operator_options.reinhard02options.scales=usescalesGang->isCheckBox1Checked(); - toneMappingOptions.operator_options.reinhard02options.key=keyGang->v(); - toneMappingOptions.operator_options.reinhard02options.phi=phiGang->v(); - toneMappingOptions.operator_options.reinhard02options.range=(int)range2Gang->v(); - toneMappingOptions.operator_options.reinhard02options.lower=(int)lowerGang->v(); - toneMappingOptions.operator_options.reinhard02options.upper=(int)upperGang->v(); + toneMappingOptions->tmoperator = reinhard02; + toneMappingOptions->operator_options.reinhard02options.scales=usescalesGang->isCheckBox1Checked(); + toneMappingOptions->operator_options.reinhard02options.key=keyGang->v(); + toneMappingOptions->operator_options.reinhard02options.phi=phiGang->v(); + toneMappingOptions->operator_options.reinhard02options.range=(int)range2Gang->v(); + toneMappingOptions->operator_options.reinhard02options.lower=(int)lowerGang->v(); + toneMappingOptions->operator_options.reinhard02options.upper=(int)upperGang->v(); break; case reinhard05: - toneMappingOptions.tmoperator = reinhard05; - toneMappingOptions.operator_options.reinhard05options.brightness=brightnessGang->v(); - toneMappingOptions.operator_options.reinhard05options.chromaticAdaptation=chromaticGang->v(); - toneMappingOptions.operator_options.reinhard05options.lightAdaptation=lightGang->v(); + toneMappingOptions->tmoperator = reinhard05; + toneMappingOptions->operator_options.reinhard05options.brightness=brightnessGang->v(); + toneMappingOptions->operator_options.reinhard05options.chromaticAdaptation=chromaticGang->v(); + toneMappingOptions->operator_options.reinhard05options.lightAdaptation=lightGang->v(); break; } } @@ -499,7 +504,8 @@ betaGang->setupUndo(); saturation2Gang->setupUndo(); noiseGang->setupUndo(); - oldFattalGang->setupUndo(); +// oldFattalGang->setupUndo(); + fftSolverGang->setupUndo(); break; case mantiuk06: contrastfactorGang->setupUndo(); @@ -556,7 +562,8 @@ betaGang->undo(); saturation2Gang->undo(); noiseGang->undo(); - oldFattalGang->undo(); +// oldFattalGang->undo(); + fftSolverGang->undo(); break; case mantiuk06: contrastfactorGang->undo(); @@ -613,7 +620,8 @@ betaGang->redo(); saturation2Gang->redo(); noiseGang->redo(); - oldFattalGang->redo(); +// oldFattalGang->redo(); + fftSolverGang->redo(); break; case mantiuk06: contrastfactorGang->redo(); @@ -713,7 +721,6 @@ out << "# Please edit this file by hand only if you know what you're doing, in any case never change the left hand side text (i.e. the part before the ``='')." << endl; out << "TMOSETTINGSVERSION=" << TMOSETTINGSVERSION << endl; out << "XSIZE=" << sizes[m_Ui->sizeComboBox->currentIndex()] << endl; - out << "QUALITY=" << LuminanceOptions().getBatchTmDefaultOutputQuality() << endl; QWidget *current_page = m_Ui->stackedWidget_operators->currentWidget(); if (current_page == m_Ui->page_mantiuk06) @@ -739,7 +746,7 @@ out << "BETA=" << betaGang->v() << endl; out << "COLOR=" << saturation2Gang->v() << endl; out << "NOISE=" << noiseGang->v() << endl; - out << "OLDFATTAL=" << (m_Ui->oldFattalCheckBox->isChecked() ? "YES" : "NO") << endl; + out << "OLDFATTAL=NO" << endl; } else if (current_page == m_Ui->page_ashikhmin) { @@ -900,8 +907,8 @@ m_Ui->saturation2Slider->setValue(saturation2Gang->v2p(value.toFloat())); } else if (field == "NOISE") { m_Ui->noiseSlider->setValue(noiseGang->v2p(value.toFloat())); - } else if (field == "OLDFATTAL") { - m_Ui->oldFattalCheckBox->setChecked(value == "YES"); +// } else if (field == "OLDFATTAL") { +// m_Ui->oldFattalCheckBox->setChecked(value == "YES"); } else if (field == "MULTIPLIER") { m_Ui->multiplierSlider->setValue(multiplierGang->v2p(value.toFloat())); } else if (field == "LOCAL") { @@ -1098,7 +1105,7 @@ beta = betaGang->v(); colorSat = saturation2Gang->v(); noiseReduction = noiseGang->v(); - oldFattal = oldFattalGang->isCheckBox1Checked(); + oldFattal = false; //always false! // oldFattalGang->isCheckBox1Checked(); execFattalQuery(alpha, beta, colorSat, noiseReduction, oldFattal, comment); break; case mantiuk06: @@ -1144,10 +1151,10 @@ void TonemappingPanel::loadParameters() { - SavedParameters dialog(currentTmoOperator); + SavedParametersDialog dialog(currentTmoOperator); if (dialog.exec()) { - QSqlTableModel *model = dialog.getModel(); + QSqlQueryModel *model = dialog.getModel(); if (model->rowCount() == 0) return; int selectedRow = dialog.getCurrentIndex().row(); @@ -1250,7 +1257,7 @@ m_Ui->saturation2dsb->setValue(colorSat); m_Ui->noiseSlider->setValue(noiseReduction); m_Ui->noisedsb->setValue(noiseReduction); - m_Ui->oldFattalCheckBox->setChecked(oldFattal); +// m_Ui->oldFattalCheckBox->setChecked(oldFattal); m_Ui->pregammaSlider->setValue(pregamma); m_Ui->pregammadsb->setValue(pregamma); break; @@ -1346,10 +1353,10 @@ void TonemappingPanel::loadComments() { - SavedParameters dialog(this); + SavedParametersDialog dialog(this); if (dialog.exec()) { - QSqlTableModel *model = dialog.getModel(); + QSqlQueryModel *model = dialog.getModel(); int selectedRow = dialog.getCurrentIndex().row(); QString comment, tmOperator; comment = model->record(selectedRow).value("comment").toString(); @@ -1418,7 +1425,7 @@ m_Ui->saturation2dsb->setValue(query.value(2).toFloat()); m_Ui->noiseSlider->setValue(query.value(3).toFloat()); m_Ui->noisedsb->setValue(query.value(3).toFloat()); - m_Ui->oldFattalCheckBox->setChecked(query.value(4).toBool()); +// m_Ui->oldFattalCheckBox->setChecked(query.value(4).toBool()); m_Ui->pregammaSlider->setValue(query.value(5).toFloat()); m_Ui->pregammadsb->setValue(query.value(5).toFloat()); } @@ -1470,9 +1477,9 @@ m_Ui->rodSlider->setValue(query.value(2).toFloat()); m_Ui->roddsb->setValue(query.value(2).toFloat()); m_Ui->pattalocal->setChecked(query.value(3).toBool()); - m_Ui->autoYcheckbox->setChecked(query.value(3).toFloat()); - m_Ui->pregammaSlider->setValue(query.value(4).toFloat()); - m_Ui->pregammadsb->setValue(query.value(4).toFloat()); + m_Ui->autoYcheckbox->setChecked(query.value(4).toBool()); + m_Ui->pregammaSlider->setValue(query.value(5).toFloat()); + m_Ui->pregammadsb->setValue(query.value(5).toFloat()); } } else if (tmOperator == "reinhard02") @@ -1620,7 +1627,7 @@ query.bindValue(":beta", beta); query.bindValue(":colorSaturation", colorSaturation); query.bindValue(":noiseReduction", noiseReduction); - query.bindValue(":oldFattal", oldFattal); + query.bindValue(":oldFattal", oldFattal); query.bindValue(":pregamma", pregamma); query.bindValue(":comment", comment); bool res = query.exec(); diff -Nru luminance-2.2.1/src/TonemappingPanel/TonemappingPanel.h luminance-2.3.0/src/TonemappingPanel/TonemappingPanel.h --- luminance-2.2.1/src/TonemappingPanel/TonemappingPanel.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingPanel/TonemappingPanel.h 2012-07-01 09:10:50.000000000 +0000 @@ -59,7 +59,8 @@ *betaGang, *saturation2Gang, *noiseGang, - *oldFattalGang, + // *oldFattalGang, + *fftSolverGang, // ashikhmin02 *contrastGang, *simpleGang, @@ -91,7 +92,8 @@ *pregammaGang; TMOperator currentTmoOperator; - TonemappingOptions toneMappingOptions; + TonemappingOptions *toneMappingOptions; + QList toneMappingOptionsToDelete; QVector sizes; void fillToneMappingOptions(); void setupUndo(); diff -Nru luminance-2.2.1/src/TonemappingPanel/TonemappingPanel.ui luminance-2.3.0/src/TonemappingPanel/TonemappingPanel.ui --- luminance-2.2.1/src/TonemappingPanel/TonemappingPanel.ui 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingPanel/TonemappingPanel.ui 2012-07-01 09:10:50.000000000 +0000 @@ -289,7 +289,7 @@ - + @@ -311,7 +311,7 @@ - + @@ -330,7 +330,7 @@ - + @@ -367,7 +367,7 @@ - + @@ -435,7 +435,7 @@ - + true @@ -457,7 +457,7 @@ - + true @@ -497,7 +497,7 @@ - + @@ -516,7 +516,7 @@ - + Qt::Vertical @@ -885,6 +885,9 @@ + + true + PointingHandCursor @@ -898,6 +901,9 @@ + + true + 60 @@ -926,7 +932,7 @@ 2.000000000000000 - 0.100000000000000 + 0.050000000000000 1.000000000000000 @@ -1001,7 +1007,7 @@ 2.000000000000000 - 0.100000000000000 + 0.050000000000000 0.900000000000000 @@ -1070,10 +1076,10 @@ 2 - 1.000000000000000 + 1.500000000000000 - 0.100000000000000 + 0.050000000000000 0.800000000000000 @@ -1152,31 +1158,6 @@ - - - - - 0 - 0 - - - - - 0 - 28 - - - - - 16777215 - 28 - - - - Version Pre 1.8.4 - - - @@ -1190,6 +1171,22 @@ + + + + + 0 + 28 + + + + Version 2.3.0 + + + true + + + @@ -2870,15 +2867,22 @@ + + + Qt::Vertical + + + + 20 + 10 + + + + + - - - 0 - 0 - - Restore operator's default values @@ -2886,7 +2890,7 @@ Restore - + :/new/prefix1/images/undo.png:/new/prefix1/images/undo.png @@ -2898,16 +2902,23 @@ + + + Qt::Horizontal + + + + 40 + 20 + + + + + false - - - 0 - 0 - - Previous applied settings @@ -2915,7 +2926,7 @@ Previous - + :/new/prefix1/images/edit-undo.png:/new/prefix1/images/edit-undo.png @@ -2941,7 +2952,7 @@ Next - + :/new/prefix1/images/edit-redo.png:/new/prefix1/images/edit-redo.png @@ -2998,9 +3009,15 @@ &Save to File - + :/new/prefix1/images/filesave.png:/new/prefix1/images/filesave.png + + + 24 + 24 + + @@ -3021,9 +3038,15 @@ &Load from File - + :/new/prefix1/images/fileopen.png:/new/prefix1/images/fileopen.png + + + 24 + 24 + + @@ -3035,8 +3058,14 @@ ... - - :/new/prefix1/images/filesave.png:/new/prefix1/images/filesave.png + + :/new/prefix1/images/vcs_update.png:/new/prefix1/images/vcs_update.png + + + + 24 + 24 + @@ -3049,8 +3078,14 @@ ... - - :/new/prefix1/images/fileopen.png:/new/prefix1/images/fileopen.png + + :/new/prefix1/images/vcs_commit.png:/new/prefix1/images/vcs_commit.png + + + + 24 + 24 + @@ -3063,8 +3098,14 @@ ... - - :/new/prefix1/images/draganddrop.png:/new/prefix1/images/draganddrop.png + + :/new/prefix1/images/vcs_add.png:/new/prefix1/images/vcs_add.png + + + + 24 + 24 + @@ -3244,7 +3285,7 @@ - + :/new/prefix1/images/undo.png:/new/prefix1/images/undo.png @@ -3311,7 +3352,7 @@ Qt::LeftToRight - + :/new/prefix1/images/add.png:/new/prefix1/images/add.png @@ -3346,8 +3387,87 @@ + + applyButton + replaceLdrCheckBox + cmbOperators + contrastFactorSlider + contrastFactordsb + saturationFactorSlider + saturationFactordsb + detailFactorSlider + detailFactordsb + contrastEqualizCheckBox + displayComboBox + colorSaturationSlider + colorSaturationDSB + contrastEnhancementSlider + contrastEnhancementDSB + luminanceLevelCheckBox + luminanceLevelSlider + luminanceLevelDSB + alphaSlider + alphadsb + betaSlider + betadsb + saturation2Slider + saturation2dsb + noiseSlider + noisedsb + biasSlider + biasdsb + baseSlider + basedsb + spatialSlider + spatialdsb + rangeSlider + rangedsb + keySlider + keydsb + phiSlider + phidsb + usescalescheckbox + range2Slider + range2dsb + lowerSlider + lowerdsb + upperSlider + upperdsb + brightnessSlider + brightnessdsb + chromaticAdaptSlider + chromaticAdaptdsb + lightAdaptSlider + lightAdaptdsb + simpleCheckBox + eq2RadioButton + eq4RadioButton + contrastSlider + contrastdsb + multiplierSlider + multiplierdsb + pattalocal + autoYcheckbox + coneSlider + conedsb + rodSlider + roddsb + defaultButton + undoButton + redoButton + savesettingsbutton + loadsettingsbutton + saveButton + loadButton + loadCommentsButton + sizeComboBox + addCustomSizeButton + pregammaSlider + pregammadefault + pregammadsb + - + diff -Nru luminance-2.2.1/src/TonemappingPanel/TonemappingWarnDialog.cpp luminance-2.3.0/src/TonemappingPanel/TonemappingWarnDialog.cpp --- luminance-2.2.1/src/TonemappingPanel/TonemappingWarnDialog.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingPanel/TonemappingWarnDialog.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -1,7 +1,8 @@ -/** - * This file is a part of LuminanceHDR package. +/* + * This file is a part of Luminance HDR package. * ---------------------------------------------------------------------- * Copyright (C) 2010 Elizabeth Oldham + * Copyright (C) 2012 Davide Anastasia * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,45 +20,29 @@ * ---------------------------------------------------------------------- * * @author Elizabeth Oldham + * @author Davide Anastasia + * Refactoring + * */ -#include -#include -#include +#include -#include "Common/config.h" #include "TonemappingWarnDialog.h" -#include "ui_TonemappingWarnDialog.h" +#include "Common/LuminanceOptions.h" TonemappingWarningDialog::TonemappingWarningDialog(QWidget *p): - QDialog(p), - yes(false), - m_Ui(new Ui::TonemappingWarningDialog) -{ - m_Ui->setupUi(this); - - m_Ui->plainText->setPlainText(tr("This tonemapping operator depends on the size of the input image. Applying this operator on the full size image will most probably result in a different image.\n\nDo you want to continue?")); - - m_Ui->checkBoxAskAgain->setChecked(luminance_options.isShowFattalWarning()); - - connect(m_Ui->buttonBox,SIGNAL(accepted()),this,SLOT(accepted())); -} - -void TonemappingWarningDialog::accepted() -{ - luminance_options.setShowFattalWarning( m_Ui->checkBoxAskAgain->isChecked() ); - - accept(); - - yes = true; -} - -bool TonemappingWarningDialog::wasAccepted() + UMessageBox(p) { - return (yes); + this->setText( tr("Fattal Warning") ); + this->setInformativeText( tr("This tonemapping operator depends on the size of the input "\ + " image. Applying this operator on the full size image will "\ + "most probably result in a different image. "\ + "\n\nDo you want to continue?") ); + this->setStandardButtons(QMessageBox::Yes | QMessageBox::YesToAll | QMessageBox::No); + this->setDefaultButton(QMessageBox::No); + this->setIcon(QMessageBox::Warning); } - TonemappingWarningDialog::~TonemappingWarningDialog() -{ -} +{} + diff -Nru luminance-2.2.1/src/TonemappingPanel/TonemappingWarnDialog.h luminance-2.3.0/src/TonemappingPanel/TonemappingWarnDialog.h --- luminance-2.2.1/src/TonemappingPanel/TonemappingWarnDialog.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingPanel/TonemappingWarnDialog.h 2012-07-01 09:10:50.000000000 +0000 @@ -24,29 +24,19 @@ #ifndef TMOWARN_IMPL_H #define TMOWARN_IMPL_H -#include +#include +#include "UI/UMessageBox.h" #include "Common/LuminanceOptions.h" #include "Common/global.h" -namespace Ui { - class TonemappingWarningDialog; -} - -class TonemappingWarningDialog : public QDialog +class TonemappingWarningDialog : public UMessageBox { -Q_OBJECT + Q_OBJECT + public: - TonemappingWarningDialog(QWidget *p); - bool wasAccepted(); - ~TonemappingWarningDialog(); -private: - LuminanceOptions luminance_options; - bool yes; - - QScopedPointer m_Ui; -private slots: - void accepted(); + TonemappingWarningDialog(QWidget *p = 0); + ~TonemappingWarningDialog(); }; #endif diff -Nru luminance-2.2.1/src/TonemappingPanel/TonemappingWarnDialog.ui luminance-2.3.0/src/TonemappingPanel/TonemappingWarnDialog.ui --- luminance-2.2.1/src/TonemappingPanel/TonemappingWarnDialog.ui 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TonemappingPanel/TonemappingWarnDialog.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,115 +0,0 @@ - - - TonemappingWarningDialog - - - Qt::ApplicationModal - - - - 0 - 0 - 421 - 293 - - - - Attention! - - - - - 10 - 10 - 401 - 221 - - - - false - - - false - - - true - - - - - - 10 - 230 - 401 - 61 - - - - - - - - 0 - 0 - - - - Ask again - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QDialogButtonBox::No|QDialogButtonBox::Yes - - - - - - - - - - buttonBox - accepted() - TonemappingWarningDialog - accept() - - - 248 - 254 - - - 157 - 274 - - - - - buttonBox - rejected() - TonemappingWarningDialog - reject() - - - 316 - 260 - - - 286 - 274 - - - - - diff -Nru luminance-2.2.1/src/TransplantExif/TransplantExifDialog.ui luminance-2.3.0/src/TransplantExif/TransplantExifDialog.ui --- luminance-2.2.1/src/TransplantExif/TransplantExifDialog.ui 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/TransplantExif/TransplantExifDialog.ui 2012-07-01 09:10:50.000000000 +0000 @@ -1,402 +1,388 @@ - + + Giuseppe Rota TransplantExifDialog - - + + 0 0 - 454 + 708 483 - + Copy Exif data - - + + :/new/prefix1/images/luminance.png:/new/prefix1/images/luminance.png - - + + 5 - - 2 + + 5 - - + + 6 - + 0 - - - 6 - - - 0 - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Move up selected file(s) - - - - :/new/prefix1/images/uparrow.png:/new/prefix1/images/uparrow.png - - - Qt::ToolButtonTextUnderIcon - - - - - - - Move down selected file(s) - - - - :/new/prefix1/images/downarrow.png:/new/prefix1/images/downarrow.png - - - Qt::ToolButtonTextUnderIcon - - - - - - - Remove selected file(s) from the list - - - - :/new/prefix1/images/remove.png:/new/prefix1/images/remove.png - - - Qt::ToolButtonTextUnderIcon - - - - - - - Append files to the list - - - - :/new/prefix1/images/add.png:/new/prefix1/images/add.png - - - Qt::ToolButtonTextUnderIcon - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - 6 - - - 0 - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">From:</span></p></body></html> - - - Qt::AlignCenter - - - - - - - QAbstractItemView::NoEditTriggers - - - QAbstractItemView::ContiguousSelection - - - -1 - - - - - - - - - 6 - - - 0 - - - - - Qt::LeftToRight - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';"><span style=" font-size:11pt; font-weight:600;">To:</span></p></body></html> - - - Qt::AlignCenter - - - - - - - QAbstractItemView::NoEditTriggers - - - QAbstractItemView::ContiguousSelection - - - - + + + From + + + + + + 6 + + + 0 + + + + + QAbstractItemView::NoEditTriggers + + + QAbstractItemView::ContiguousSelection + + + -1 + + + + + + + + + 6 + + + 0 + + + + + Append files to the list + + + + :/new/prefix1/images/add.png:/new/prefix1/images/add.png + + + + 24 + 24 + + + + + + + + Remove selected file(s) from the list + + + + :/new/prefix1/images/remove.png:/new/prefix1/images/remove.png + + + + 24 + 24 + + + + + + + + Move up selected file(s) + + + + :/new/prefix1/images/uparrow.png:/new/prefix1/images/uparrow.png + + + + 24 + 24 + + + + + + + + Move down selected file(s) + + + + :/new/prefix1/images/downarrow.png:/new/prefix1/images/downarrow.png + + + + 24 + 24 + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + - - - 6 - - - 0 - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Move up selected file(s) - - - - :/new/prefix1/images/uparrow.png:/new/prefix1/images/uparrow.png - - - Qt::ToolButtonTextUnderIcon - - - - - - - Move down selected file(s) - - - - :/new/prefix1/images/downarrow.png:/new/prefix1/images/downarrow.png - - - Qt::ToolButtonTextUnderIcon - - - - - - - Remove selected file(s) from the list - - - - :/new/prefix1/images/remove.png:/new/prefix1/images/remove.png - - - Qt::ToolButtonTextUnderIcon - - - - - - - Append files to the list - - - - :/new/prefix1/images/add.png:/new/prefix1/images/add.png - - - Qt::ToolButtonTextUnderIcon - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - + + + To + + + + + + 6 + + + 0 + + + + + QAbstractItemView::NoEditTriggers + + + QAbstractItemView::ContiguousSelection + + + + + + + + + 6 + + + 0 + + + + + Append files to the list + + + + :/new/prefix1/images/add.png:/new/prefix1/images/add.png + + + + 24 + 24 + + + + + + + + Remove selected file(s) from the list + + + + :/new/prefix1/images/remove.png:/new/prefix1/images/remove.png + + + + 24 + 24 + + + + + + + + Move up selected file(s) + + + + :/new/prefix1/images/uparrow.png:/new/prefix1/images/uparrow.png + + + + 24 + 24 + + + + + + + + Move down selected file(s) + + + + :/new/prefix1/images/downarrow.png:/new/prefix1/images/downarrow.png + + + + 24 + 24 + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + - - - Log: + + + Log - - + + 5 - + 2 - - - + + + 0 0 - + 16777215 110 - + Exif operations report - + QAbstractItemView::NoEditTriggers - + QAbstractItemView::ContiguousSelection - + QListView::Adjust - - + + 6 - + 0 - - + + &Show only: - + filterComboBox - - + + Filter messages based on severity - + All messages - + Errors only - - + + Qt::Vertical - - + + &Filter log messages: - + filterLineEdit - + - - + + false - + Clear filter text - - + + :/new/prefix1/images/fileclose.png:/new/prefix1/images/fileclose.png @@ -407,42 +393,42 @@ - - + + 0 - + Qt::AlignHCenter - + Qt::Horizontal - - + + Keep existing Exif tags in destination file - + true - - + + 6 - + 0 - + Qt::Horizontal - + 40 20 @@ -451,18 +437,18 @@ - - + + &Cancel - - + + false - + &Start @@ -471,8 +457,22 @@ + + movedown_left_button + leftlist + moveup_right_button + movedown_right_button + rightlist + filterComboBox + filterLineEdit + clearTextToolButton + Log_Widget + checkBox_dont_overwrite + cancelbutton + TransplantButton + - + @@ -481,11 +481,11 @@ TransplantExifDialog reject() - + 408 483 - + 54 421 @@ -497,11 +497,11 @@ filterLineEdit clear() - + 472 379 - + 416 378 diff -Nru luminance-2.2.1/src/UI/about.ui luminance-2.3.0/src/UI/about.ui --- luminance-2.2.1/src/UI/about.ui 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/UI/about.ui 2012-07-01 09:10:50.000000000 +0000 @@ -170,7 +170,11 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><a href="mailto:danielkaneider@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">danielkaneider@users.sourceforge.net</span></a></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; text-decoration: underline; color:#0000ff;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">pfs{tools|calibration|tmo} codebase</span><span style=" font-size:9pt;"><br /> Grzegorz Krawczyk<br /> </span><a href="mailto:krawczyk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">krawczyk@mpi-sb.mpg.de</span></a><span style=" font-size:9pt;"><br /> <br /> Rafal Mantiuk<br /> </span><a href="mailto:mantiuk@mpi-sb.mpg.de"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mantiuk@mpi-sb.mpg.de </span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-family:'Sans Serif'; font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;"><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">G.Ward's Mean Threshold Bitmap (MTB) algorithm </span><span style=" font-size:9pt; color:#000000;"><br /> Nicholas Phillips<br /> </span><a href="ngphillips@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">ngphillips@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Russian translator, usability fixes, user manual, .desktop file</span><span style=" font-size:9pt; color:#000000;"><br /> Alexandre Prokoudine<br /> </span><a href="alexandre.prokoudine@gmail.com"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">alexandre.prokoudine@gmail.com</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Norwegian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Åsmund Ødegård<br /> </span><a href="mandus@users.sourceforge.net"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">mandus@users.sourceforge.net</span></a><span style=" font-size:9pt; color:#000000;"><br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Turkish translato</span><span style=" font-size:9pt; color:#000000;">r<br /> Mustafa GÜNAY<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">French translator</span><span style=" font-size:9pt; color:#000000;"><br /> Cyril Lavier<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Spanish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Alberto Garcia<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">German translator</span><span style=" font-size:9pt; color:#000000;"><br /> Christian Raue<br /><br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Czech translator</span><span style=" font-size:9pt; color:#000000;"><br /> Jan Gemela<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Polish translator</span><span style=" font-size:9pt; color:#000000;"><br /> Maciej Dziardziel<br /> <br /></span><span style=" font-size:9pt; font-weight:600; color:#000000;">Romanian translator</span><span style=" font-size:9pt; color:#000000;"><br /> Andrei Răcăşan<br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">Chinese translator</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;"> Lei Zhao</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#000000;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600; color:#000000;">FreeBSD patches and maintainers</span><span style=" font-size:9pt; color:#000000;"><br />Joao Rocha Braga Filho, Bertrand Petit and Steffen Beyer<br /></span></p></body></html> true diff -Nru luminance-2.2.1/src/UI/GammaAndLevels.cpp luminance-2.3.0/src/UI/GammaAndLevels.cpp --- luminance-2.2.1/src/UI/GammaAndLevels.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/UI/GammaAndLevels.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -34,7 +34,8 @@ namespace { -static inline int clamp(const float& v, const float& minV, const float& maxV) +static inline +int clamp(const float& v, const float& minV, const float& maxV) { if ( v <= minV ) return minV; if ( v >= maxV ) return maxV; @@ -178,33 +179,42 @@ qDebug() << "Update Look-Up-Table and send update QImage to viewer"; #endif - int LUT[256]; - //values in 0..1 range - float bin=(float)blackin/255.0f; - float win=(float)whitein/255.0f; - float expgamma=1.0f/gamma; - -// it is only 256 values, so it won't really get any improvement from multi threading -//#pragma omp parallel for - for (int i=0; i<256; ++i) - { - float value = powf( ( ((float)(i)/255.0f) - bin ) / (win-bin), expgamma); - LUT[i] = clamp(blackout+value*(whiteout-blackout),0,255); - } + float bin = static_cast(blackin)/255.0f; + float win = static_cast(whitein)/255.0f; + float expgamma = 1.0f/gamma; // Build new QImage from the reference one - const QRgb* src = (const QRgb*)m_ReferenceQImage.bits(); + const QRgb* src = reinterpret_cast(m_ReferenceQImage.bits()); QImage previewimage(m_ReferenceQImage.width(), m_ReferenceQImage.height(), QImage::Format_RGB32); - QRgb* dst = (QRgb*)previewimage.bits(); + QRgb* dst = reinterpret_cast(previewimage.bits()); -#pragma omp parallel for default(none) shared(src, dst, LUT) +#pragma omp parallel for shared(src, dst) for (int i=0; i < m_ReferenceQImage.width()*m_ReferenceQImage.height(); ++i) { - dst[i] = qRgb(LUT[qRed(src[i])], - LUT[qGreen(src[i])], - LUT[qBlue(src[i])]); + float red = static_cast(qRed(src[i]))/255.f; + float green = static_cast(qGreen(src[i]))/255.f; + float blue = static_cast(qBlue(src[i]))/255.f; + + float L = 0.2126f * red + + 0.7152f * green + + 0.0722f * blue; // number between [0..1] + + float c = powf(L, expgamma - 1.0f); + + red = (red - bin) / (win-bin); + red *= c; + + green = (green - bin) / (win-bin); + green *= c; + + blue = (blue - bin) / (win-bin); + blue *= c; + + dst[i] = qRgb(clamp(blackout+red * (whiteout - blackout), 0.f, 255.f), + clamp(blackout+green * (whiteout - blackout), 0.f, 255.f), + clamp(blackout+blue * (whiteout - blackout), 0.f, 255.f)); } emit updateQImage(previewimage); diff -Nru luminance-2.2.1/src/UI/GammaAndLevels.ui luminance-2.3.0/src/UI/GammaAndLevels.ui --- luminance-2.2.1/src/UI/GammaAndLevels.ui 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/UI/GammaAndLevels.ui 2012-07-01 09:10:50.000000000 +0000 @@ -16,7 +16,7 @@ Levels and Gamma - :/new/prefix1/images/histogram.png + :/new/prefix1/images/histogram.png true @@ -370,7 +370,7 @@ - + diff -Nru luminance-2.2.1/src/UI/ImageQualityDialog.cpp luminance-2.3.0/src/UI/ImageQualityDialog.cpp --- luminance-2.2.1/src/UI/ImageQualityDialog.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/UI/ImageQualityDialog.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -25,10 +25,14 @@ #include #include #include +#include #include "ImageQualityDialog.h" #include "ui_ImageQualityDialog.h" +#include "Fileformat/jpegwriter.h" +#include "Fileformat/pngwriter.h" + ImageQualityDialog::~ImageQualityDialog() {} ImageQualityDialog::ImageQualityDialog(const QImage *img, QString fmt, QWidget *parent): @@ -49,15 +53,32 @@ void ImageQualityDialog::on_getSizeButton_clicked() { + qDebug() << format; setCursor(QCursor(Qt::WaitCursor)); int quality = m_Ui->spinBox->value(); - QByteArray ba; - QBuffer buffer(&ba); - buffer.open(QIODevice::WriteOnly); - image->save(&buffer, (const char *) format.toLatin1(), quality); - + int size = 0; + if (format.startsWith("jp")) + { + JpegWriter writer(image, quality); + writer.writeQImageToJpeg(); + size = writer.getFileSize(); + } + else if (format.startsWith("png")) + { + PngWriter writer(image, quality); + writer.writeQImageToPng(); + size = writer.getFileSize(); + } + else + { + QByteArray ba; + QBuffer buffer(&ba); + buffer.open(QIODevice::WriteOnly); + image->save(&buffer, (const char *) format.toLatin1(), quality); + size = ba.size(); + } QLocale def; - QString s = def.toString( ba.size() ); + QString s = def.toString( size ); //label_filesize->setText(QString::number( ba.size() )); //the JPG on disk differs by 374 more bytes m_Ui->label_filesize->setText( s ); //the JPG on disk differs by 374 more bytes setCursor(QCursor(Qt::ArrowCursor)); diff -Nru luminance-2.2.1/src/UI/ImageQualityDialog.ui luminance-2.3.0/src/UI/ImageQualityDialog.ui --- luminance-2.2.1/src/UI/ImageQualityDialog.ui 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/UI/ImageQualityDialog.ui 2012-07-01 09:10:50.000000000 +0000 @@ -1,7 +1,8 @@ - + + ImgQualityDialog - - + + 0 0 @@ -9,47 +10,47 @@ 200 - - + + 0 0 - + 380 200 - + 380 200 - + Save as - + true - - - + + + - - + + Saved File Quality - - - + + + - - + + Qt::Vertical - + 335 13 @@ -58,36 +59,36 @@ - + - - + + Quality: - - + + 100 - + 100 - + Qt::Horizontal - + QSlider::TicksBelow - - + + 100 - + 100 @@ -95,11 +96,11 @@ - - + + Qt::Vertical - + 330 13 @@ -109,28 +110,28 @@ - - + + - - + + File size: - - + + Unknown - - + + Qt::Horizontal - + 40 20 @@ -139,8 +140,8 @@ - - + + Ca&lculate @@ -151,13 +152,13 @@ - + - - + + Qt::Horizontal - + 48 26 @@ -166,15 +167,15 @@ - - + + &Save - - + + &Cancel @@ -186,11 +187,11 @@ - saveButton - cancelButton - getSizeButton horizontalSlider spinBox + getSizeButton + saveButton + cancelButton @@ -200,11 +201,11 @@ spinBox setValue(int) - + 100 46 - + 195 50 @@ -216,11 +217,11 @@ horizontalSlider setValue(int) - + 226 56 - + 103 51 @@ -232,11 +233,11 @@ ImgQualityDialog accept() - + 120 132 - + 41 161 @@ -248,11 +249,11 @@ ImgQualityDialog reject() - + 187 133 - + 182 161 diff -Nru luminance-2.2.1/src/UI/UMessageBox.cpp luminance-2.3.0/src/UI/UMessageBox.cpp --- luminance-2.2.1/src/UI/UMessageBox.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/UI/UMessageBox.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -40,9 +40,8 @@ void UMessageBox::init() { - m_horizontalSpacer = new QSpacerItem(UMESSAGEBOX_WIDTH, 0, QSizePolicy::Minimum, QSizePolicy::Expanding); - m_layout = (QGridLayout*)this->layout(); - m_layout->addItem(m_horizontalSpacer, m_layout->rowCount(), 0, 1, m_layout->columnCount()); + QGridLayout* layout = reinterpret_cast(this->layout()); + layout->addItem(m_horizontalSpacer, layout->rowCount(), 0, 1, layout->columnCount()); this->setWindowTitle("Luminance HDR "LUMINANCEVERSION); #ifdef Q_WS_MAC @@ -50,24 +49,39 @@ #endif } -UMessageBox::UMessageBox(QWidget *parent) : QMessageBox(parent) +UMessageBox::UMessageBox(QWidget *parent) : + QMessageBox(parent), + m_horizontalSpacer(new QSpacerItem(UMESSAGEBOX_WIDTH, + 0, + QSizePolicy::Minimum, + QSizePolicy::Expanding)) { init(); } -UMessageBox::UMessageBox(const QString &title, const QString &text, Icon icon, - int button0, int button1, int button2, - QWidget *parent, - Qt::WindowFlags f) : -QMessageBox(title, text, icon, button0, button1, button2, parent, f) +UMessageBox::~UMessageBox() +{} + +UMessageBox::UMessageBox(const QString &title, + const QString &text, Icon icon, + int button0, + int button1, + int button2, + QWidget *parent, + Qt::WindowFlags f) : + QMessageBox(title, text, icon, button0, button1, button2, parent, f), + m_horizontalSpacer(new QSpacerItem(UMESSAGEBOX_WIDTH, + 0, + QSizePolicy::Minimum, + QSizePolicy::Expanding)) { init(); } -void UMessageBox::showEvent(QShowEvent *event) -{ - QMessageBox::showEvent(event); -} +//void UMessageBox::showEvent(QShowEvent *event) +//{ +// QMessageBox::showEvent(event); +//} void UMessageBox::about(QWidget* parent) { diff -Nru luminance-2.2.1/src/UI/UMessageBox.h luminance-2.3.0/src/UI/UMessageBox.h --- luminance-2.2.1/src/UI/UMessageBox.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/UI/UMessageBox.h 2012-07-01 09:10:50.000000000 +0000 @@ -1,4 +1,4 @@ -/** +/* * This file is a part of Luminance HDR package. * ---------------------------------------------------------------------- * Copyright (C) 2011 Davide Anastasia @@ -25,8 +25,8 @@ * */ -#ifndef __UNIVERSAL_MESSAGE_BOX__ -#define __UNIVERSAL_MESSAGE_BOX__ +#ifndef UMESSAGEBOX_H +#define UMESSAGEBOX_H #include #include @@ -40,32 +40,34 @@ class UMessageBox : public QMessageBox { -private: - // workaround to set size - QSpacerItem* m_horizontalSpacer; - QGridLayout* m_layout; - - void init(); public: - explicit UMessageBox(QWidget *parent = 0); - - UMessageBox(const QString &title, const QString &text, Icon icon, - int button0, int button1, int button2, - QWidget *parent = 0, - Qt::WindowFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint); + explicit UMessageBox(QWidget *parent = 0); + + UMessageBox(const QString &title, const QString &text, Icon icon, + int button0, int button1, int button2, + QWidget *parent = 0, + Qt::WindowFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint); + + virtual ~UMessageBox(); - virtual void showEvent(QShowEvent *event); + // virtual void showEvent(QShowEvent *event); - static void about(QWidget* parent = 0); + static void about(QWidget* parent = 0); - static int warning(QString title, QString description, QWidget* parent = 0); + static int warning(QString title, QString description, QWidget* parent = 0); - static int saveDialog(QString title, QString description, QWidget* parent = 0); + static int saveDialog(QString title, QString description, QWidget* parent = 0); - /* + /* * Function not yet used, it will... :) */ - static void donationSplashMB(QWidget* parent); + static void donationSplashMB(QWidget* parent); + +private: + // workaround to set size + QSpacerItem* m_horizontalSpacer; + + void init(); }; -#endif +#endif // UMESSAGEBOX_H diff -Nru luminance-2.2.1/src/Viewers/GenericViewer.cpp luminance-2.3.0/src/Viewers/GenericViewer.cpp --- luminance-2.2.1/src/Viewers/GenericViewer.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Viewers/GenericViewer.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -1,7 +1,7 @@ /** * This file is a part of Luminance HDR package. * ---------------------------------------------------------------------- - * Copyright (C) 2009 Franco Comida + * Copyright (C) 2009-2012 Franco Comida, Davide Anastasia * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,10 +18,12 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * ---------------------------------------------------------------------- * - * Original Work * @author Giuseppe Rota - * Improvements, bugfixing + * Original Work * @author Franco Comida + * Improvements, bugfixing + * @author Davide Anastasia + * Refactoring for QGraphicsView * */ @@ -35,7 +37,6 @@ #include "Viewers/IGraphicsPixmapItem.h" #include "Libpfs/frame.h" - namespace { // define the number of pixels to count as border of the image, because of the shadow @@ -88,11 +89,13 @@ mPixmap = new IGraphicsPixmapItem(); mScene->addItem(mPixmap); connect(mPixmap, SIGNAL(selectionReady(bool)), this, SIGNAL(selectionReady(bool))); + connect(mPixmap, SIGNAL(startDragging()), this, SLOT(startDragging())); } GenericViewer::~GenericViewer() { delete mFrame; + delete mPixmap; } void GenericViewer::retranslateUi() @@ -123,8 +126,8 @@ qreal sf = qMin(w_ratio, h_ratio)/getScaleFactor(); - // update only if the change is below the 0.005% - if ( qAbs(sf - 1.0) > 0.005 ) + // update only if the change is above the 0.05% + if ( qAbs(sf - static_cast(1.0)) > 0.05 ) { #ifdef QT_DEBUG //qDebug() << "void GenericViewer::fitToWindow().sf = " << sf; @@ -156,8 +159,8 @@ qreal sf = qMax(w_ratio, h_ratio)/getScaleFactor(); - // update only if the change is below the 0.005% - if ( qAbs(sf - 1.0) > 0.005 ) + // update only if the change is above the 0.05% + if ( qAbs(sf - static_cast(1.0)) > 0.05 ) { #ifdef QT_DEBUG //qDebug() << "void GenericViewer::fillToWindow().sf = " << sf; @@ -412,7 +415,8 @@ // update tonemappingoptions (if available) // in the current implementation, only LdrViewer redefines this function - setTonemappingOptions(tmopts); + if (tmopts != NULL) + setTonemappingOptions(tmopts); // reset boundaries updateView(); @@ -422,3 +426,14 @@ { return mFrame; } + +void GenericViewer::startDragging() +{ + QDrag *drag = new QDrag(this); + QMimeData *mimeData = new QMimeData; + mimeData->setImageData(mPixmap->pixmap().toImage()); + drag->setMimeData(mimeData); + drag->setPixmap(mPixmap->pixmap().scaledToHeight(mPixmap->pixmap().height()/10)); + + Qt::DropAction dropAction = drag->exec(); +} diff -Nru luminance-2.2.1/src/Viewers/GenericViewer.h luminance-2.3.0/src/Viewers/GenericViewer.h --- luminance-2.2.1/src/Viewers/GenericViewer.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Viewers/GenericViewer.h 2012-07-01 09:10:50.000000000 +0000 @@ -32,6 +32,8 @@ #include #include +#include "Common/FloatRgbToQRgb.h" + // Forward declaration namespace pfs { class Frame; // #include "Libpfs/frame.h" @@ -46,8 +48,10 @@ { Q_OBJECT public: + //! \brief Enum containing the list of possible view mode - enum ViewerMode { + enum ViewerMode + { FIT_WINDOW = 0, FILL_WINDOW = 1, NORMAL_SIZE = 2 @@ -115,7 +119,7 @@ //! \brief This function syncronizes scrollbars position and zoom mode //! \param[src] GenericViewer to syncronize with - void syncViewer(GenericViewer *src); + void syncViewer(GenericViewer* src); //! \brief tells is the viewer holds an LDR or an HDR frame virtual bool isHDR() = 0; @@ -126,6 +130,12 @@ //! \brief returns min value of the handled frame virtual float getMinLuminanceValue() = 0; + //! \brief returns the mapping method + virtual LumMappingMethod getLuminanceMappingMethod() + { + return MAP_LINEAR; + } + //! \brief returns a filename postfix based on the viewer's content virtual QString getFileNamePostFix() = 0; @@ -157,6 +167,8 @@ //! \brief Update viewer's pixmap when a new frame is set by setFrame() virtual void updatePixmap() = 0; + void startDragging(); + protected: virtual void retranslateUi(); diff -Nru luminance-2.2.1/src/Viewers/HdrViewer.cpp luminance-2.3.0/src/Viewers/HdrViewer.cpp --- luminance-2.2.1/src/Viewers/HdrViewer.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Viewers/HdrViewer.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -50,14 +50,6 @@ // In this way, we let know the compiler it can mess up as much as it wants with the code, // because it will only used inside this compilation unit -template -inline T clamp( T val, T min, T max ) -{ - if ( val < min ) return min; - if ( val > max ) return max; - return val; -} - const pfs::Array2D* getPrimaryChannel(pfs::Frame* frame) { assert( frame != NULL ); @@ -67,194 +59,14 @@ } // end anonymous namespace -class HdrViewerMapping -{ -public: - HdrViewerMapping(int nan_inf_color = 0, int neg_color = 0, float min_value = 1.0f, float max_value = 1.0f): - m_MappingMethod(MAP_GAMMA2_2), - m_NanInfColor(nan_inf_color), - m_NegColor(neg_color) - { - setMinMax(min_value, max_value); - } - - void setMinMax( float min, float max ) - { - m_MinValue = min; - m_MaxValue = max; - m_Range = max - min; - m_LogRange = log2f(max/min); - } - - void updateErrorColors(int nan_inf_color, int neg_color) - { - m_NanInfColor = nan_inf_color; - m_NegColor = neg_color; - } - - void setMappingMethod(int method) - { - m_MappingMethod = static_cast(method); - } - - int getMappingMethod() - { - return m_MappingMethod; - } - - float getMinLuminance() - { - return m_MinValue; - } - - float getMaxLuminance() - { - return m_MaxValue; - } - - void getMapping(float r, float g, float b, QRgb& pixel) - { -#ifdef __USE_SSE__ - v4sf rgb = (_mm_set_ps(0, b, g, r) - _mm_set1_ps(m_MinValue)) / _mm_set1_ps(m_Range); - - switch ( m_MappingMethod ) - { - case MAP_GAMMA1_4: - rgb = _mm_pow_ps(rgb, _mm_set1_ps(1.0f/1.4f)); - break; - case MAP_GAMMA1_8: - rgb = _mm_pow_ps(rgb, _mm_set1_ps(1.0f/1.8f)); - break; - case MAP_GAMMA2_2: - rgb = _mm_pow_ps(rgb, _mm_set1_ps(1.0f/2.2f)); - break; - case MAP_GAMMA2_6: - rgb = _mm_pow_ps(rgb, _mm_set1_ps(1.0f/2.6f)); - break; - case MAP_LOGARITHMIC: - // log(x) - log(y) = log(x/y) - rgb = _mm_log2_ps(_mm_set_ps(0, b, g, r)/_mm_set1_ps(m_MinValue)) - / _mm_set1_ps(m_LogRange); - break; - default: - case MAP_LINEAR: - // do nothing - // final value is already calculated - break; - } - rgb *= _mm_set1_ps(255.f); - rgb = _mm_min_ps(rgb, _mm_set1_ps(255.f)); - rgb = _mm_max_ps(rgb, _mm_set1_ps(0.f)); - rgb += _mm_set1_ps(0.5f); - float buf[4]; - _mm_store_ps(buf, rgb); - pixel = qRgb( buf[0], buf[1], buf[2] ); -#else - float rgb[3] = { - (r - m_MinValue)/m_Range, - (g - m_MinValue)/m_Range, - (b - m_MinValue)/m_Range - }; - - switch ( m_MappingMethod ) - { - case MAP_GAMMA1_4: - for ( int i = 0; i < 3; i++ ) - rgb[i] = powf(rgb[i], 1.0f/1.4f); - break; - case MAP_GAMMA1_8: - for ( int i = 0; i < 3; i++ ) - rgb[i] = powf(rgb[i], 1.0f/1.8f); - break; - case MAP_GAMMA2_2: - for ( int i = 0; i < 3; i++ ) - rgb[i] = powf(rgb[i], 1.0f/2.2f); - break; - case MAP_GAMMA2_6: - for ( int i = 0; i < 3; i++ ) - rgb[i] = powf(rgb[i], 1.0f/2.6f); - break; - case MAP_LOGARITHMIC: - // log(x) - log(y) = log(x/y) - rgb[0] = log2f(r/m_MinValue)/m_LogRange; - rgb[1] = log2f(g/m_MinValue)/m_LogRange; - rgb[2] = log2f(b/m_MinValue)/m_LogRange; - break; - default: - case MAP_LINEAR: - // do nothing - // final value is already calculated - break; - } - pixel = qRgb( clamp(rgb[0]*255.f, 0.0f, 255.f) + 0.5f, - clamp(rgb[1]*255.f, 0.0f, 255.f) + 0.5f, - clamp(rgb[2]*255.f, 0.0f, 255.f) + 0.5f ); -#endif - } - - QImage mapFrameToImage(pfs::Frame* in_frame) - { -#ifdef TIMER_PROFILING - msec_timer __timer; - __timer.start(); -#endif - - // Channels X Y Z contain R G B data - pfs::Channel *ChR, *ChG, *ChB; - in_frame->getXYZChannels( ChR, ChG, ChB ); - assert( ChR != NULL && ChG != NULL && ChB != NULL); - - const float* R = ChR->getChannelData()->getRawData(); - const float* G = ChG->getChannelData()->getRawData(); - const float* B = ChB->getChannelData()->getRawData(); - - assert( R != NULL && G != NULL && B != NULL ); - - QImage return_qimage(in_frame->getWidth(), in_frame->getHeight(), QImage::Format_RGB32); - QRgb *pixels = reinterpret_cast(return_qimage.bits()); - -#pragma omp parallel for - for ( int index = 0; index < in_frame->getWidth()*in_frame->getHeight(); ++index ) - { - if ( !finite( R[index] ) || !finite( G[index] ) || !finite( B[index] ) ) // x is NaN or Inf - { - pixels[index] = m_NanInfColor; - } - else if ( R[index] < 0 || G[index]<0 || B[index]<0 ) // x is negative - { - pixels[index] = m_NegColor; - } - else - { - getMapping(R[index], G[index], B[index], pixels[index]); - } - } - -#ifdef TIMER_PROFILING - __timer.stop_and_update(); - std::cout << "HdrViewer::mapFrameToImage() [NEW]= " << __timer.get_time() << " msec" << std::endl; -#endif - - return return_qimage; - } -private: - // Current Visualization mode - LumMappingMethod m_MappingMethod; - float m_MinValue; - float m_MaxValue; - float m_Range; - float m_LogRange; - - //! NaN or Inf color - int m_NanInfColor; - //! Neg color - int m_NegColor; -}; // end HdrViewerMapping - - -HdrViewer::HdrViewer(pfs::Frame* frame, QWidget *parent, bool ns, unsigned int neg, unsigned int naninf): - GenericViewer(frame, parent, ns), - m_mappingImpl(new HdrViewerMapping(naninf, neg)) +HdrViewer::HdrViewer(pfs::Frame* frame, QWidget *parent, bool ns, + unsigned int neg, unsigned int naninf) + : GenericViewer(frame, parent, ns) + , m_MappingMethod(MAP_GAMMA2_2) + , m_MinValue(0.f) + , m_MaxValue(1.f) + , m_NanInfColor(naninf) + , m_NegColor(neg) { init_ui(); @@ -264,10 +76,11 @@ m_lumRange->setHistogramImage(getPrimaryChannel(getFrame())); m_lumRange->fitToDynamicRange(); - m_mappingImpl->setMinMax(powf( 10.0f, m_lumRange->getRangeWindowMin() ), - powf( 10.0f, m_lumRange->getRangeWindowMax() )); + m_MappingMethod = static_cast( mappingMethodCB->currentIndex() ); + m_MinValue = powf( 10.0f, m_lumRange->getRangeWindowMin() ); + m_MaxValue = powf( 10.0f, m_lumRange->getRangeWindowMax() ); - mPixmap->setPixmap(QPixmap::fromImage(m_mappingImpl->mapFrameToImage(getFrame()))); + mPixmap->setPixmap(QPixmap::fromImage(mapFrameToImage(getFrame()))); updateView(); m_lumRange->blockSignals(false); @@ -326,7 +139,7 @@ setCursor( Qt::WaitCursor ); - mPixmap->setPixmap(QPixmap::fromImage(m_mappingImpl->mapFrameToImage(getFrame()))); + mPixmap->setPixmap(QPixmap::fromImage(mapFrameToImage(getFrame()))); unsetCursor(); } @@ -360,7 +173,8 @@ void HdrViewer::setRangeWindow( float min, float max ) { - m_mappingImpl->setMinMax(min, max); + m_MinValue = min; + m_MaxValue = max; refreshPixmap(); } @@ -373,14 +187,15 @@ void HdrViewer::setLumMappingMethod( int method ) { mappingMethodCB->setCurrentIndex( method ); - m_mappingImpl->setMappingMethod(method); + m_MappingMethod = static_cast(method); refreshPixmap(); } -void HdrViewer::update_colors(int neg, int naninf ) +void HdrViewer::update_colors(int neg, int naninf) { - m_mappingImpl->updateErrorColors(naninf, neg); + m_NanInfColor = naninf; + m_NegColor = neg; refreshPixmap(); } @@ -402,11 +217,64 @@ //! \brief returns max value of the handled frame float HdrViewer::getMaxLuminanceValue() { - return m_mappingImpl->getMaxLuminance(); + return m_MaxValue; } //! \brief returns min value of the handled frame float HdrViewer::getMinLuminanceValue() { - return m_mappingImpl->getMinLuminance(); + return m_MinValue; +} + +LumMappingMethod HdrViewer::getLuminanceMappingMethod() +{ + return m_MappingMethod; +} + +QImage HdrViewer::mapFrameToImage(pfs::Frame* in_frame) +{ +#ifdef TIMER_PROFILING + msec_timer stop_watch; + stop_watch.start(); +#endif + + // Channels X Y Z contain R G B data + pfs::Channel *ChR, *ChG, *ChB; + in_frame->getXYZChannels( ChR, ChG, ChB ); + assert( ChR != NULL && ChG != NULL && ChB != NULL); + + const float* R = ChR->getChannelData()->getRawData(); + const float* G = ChG->getChannelData()->getRawData(); + const float* B = ChB->getChannelData()->getRawData(); + + assert( R != NULL && G != NULL && B != NULL ); + + QImage return_qimage(in_frame->getWidth(), in_frame->getHeight(), QImage::Format_RGB32); + QRgb *pixels = reinterpret_cast(return_qimage.bits()); + + FloatRgbToQRgb converter(m_MinValue, m_MaxValue, m_MappingMethod); + +#pragma omp parallel for + for ( int index = 0; index < in_frame->getWidth()*in_frame->getHeight(); ++index ) + { + if ( !finite( R[index] ) || !finite( G[index] ) || !finite( B[index] ) ) // x is NaN or Inf + { + pixels[index] = m_NanInfColor; + } + else if ( R[index] < 0 || G[index]<0 || B[index]<0 ) // x is negative + { + pixels[index] = m_NegColor; + } + else + { + converter.toQRgb(R[index], G[index], B[index], pixels[index]); + } + } + +#ifdef TIMER_PROFILING + stop_watch.stop_and_update(); + std::cout << "HdrViewer::mapFrameToImage() [NEW]= " << stop_watch.get_time() << " msec" << std::endl; +#endif + + return return_qimage; } diff -Nru luminance-2.2.1/src/Viewers/HdrViewer.h luminance-2.3.0/src/Viewers/HdrViewer.h --- luminance-2.2.1/src/Viewers/HdrViewer.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Viewers/HdrViewer.h 2012-07-01 09:10:50.000000000 +0000 @@ -37,6 +37,7 @@ #include #include "GenericViewer.h" +#include "Common/FloatRgbToQRgb.h" #include @@ -47,17 +48,7 @@ } class LuminanceRangeWidget; // #include "LuminanceRangeWidget.h" -class HdrViewerMapping; - -enum LumMappingMethod { - MAP_LINEAR, - MAP_GAMMA1_4, - MAP_GAMMA1_8, - MAP_GAMMA2_2, - MAP_GAMMA2_6, - MAP_LOGARITHMIC -}; - +// class HdrViewerMapping; class HdrViewer : public GenericViewer { @@ -85,6 +76,8 @@ //! \brief returns min value of the handled frame float getMinLuminanceValue(); + LumMappingMethod getLuminanceMappingMethod(); + public Q_SLOTS: void updateRangeWindow(); int getLumMappingMethod(); @@ -107,8 +100,16 @@ private: void refreshPixmap(); - //! \brief Smart pointer to PIMPL class - QScopedPointer m_mappingImpl; + LumMappingMethod m_MappingMethod; + float m_MinValue; + float m_MaxValue; + + //! \brief NaN or Inf color + int m_NanInfColor; + //! \brief Neg color + int m_NegColor; + + QImage mapFrameToImage(pfs::Frame* in_frame); }; inline bool HdrViewer::isHDR() diff -Nru luminance-2.2.1/src/Viewers/IGraphicsPixmapItem.cpp luminance-2.3.0/src/Viewers/IGraphicsPixmapItem.cpp --- luminance-2.2.1/src/Viewers/IGraphicsPixmapItem.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Viewers/IGraphicsPixmapItem.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -73,7 +73,10 @@ void IGraphicsPixmapItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { - if (!mIsSelectionEnabled) return; + if (!mIsSelectionEnabled && event->button() == Qt::LeftButton) { + emit startDragging(); + return; + } if (event->button() == Qt::LeftButton) { diff -Nru luminance-2.2.1/src/Viewers/IGraphicsPixmapItem.h luminance-2.3.0/src/Viewers/IGraphicsPixmapItem.h --- luminance-2.2.1/src/Viewers/IGraphicsPixmapItem.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Viewers/IGraphicsPixmapItem.h 2012-07-01 09:10:50.000000000 +0000 @@ -51,6 +51,7 @@ Q_SIGNALS: void selectionReady(bool); + void startDragging(); protected: virtual void mousePressEvent(QGraphicsSceneMouseEvent *e); diff -Nru luminance-2.2.1/src/Viewers/IGraphicsView.cpp luminance-2.3.0/src/Viewers/IGraphicsView.cpp --- luminance-2.2.1/src/Viewers/IGraphicsView.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Viewers/IGraphicsView.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -49,6 +49,9 @@ void IGraphicsView::wheelEvent(QWheelEvent *event) { + // get the focus! + setFocus(); + if (event->modifiers() == Qt::ControlModifier) { if (event->delta() > 0) emit zoomIn(); diff -Nru luminance-2.2.1/src/Viewers/LdrViewer.cpp luminance-2.3.0/src/Viewers/LdrViewer.cpp --- luminance-2.2.1/src/Viewers/LdrViewer.cpp 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Viewers/LdrViewer.cpp 2012-07-01 09:10:50.000000000 +0000 @@ -25,15 +25,20 @@ * */ -#include #include #include +#include +#include +#include +#include #include "Viewers/LdrViewer.h" #include "Viewers/IGraphicsPixmapItem.h" #include "Core/TonemappingOptions.h" #include "Libpfs/frame.h" #include "Fileformat/pfsoutldrimage.h" +#include "Common/LuminanceOptions.h" +#include "Common/ResourceHandlerLcms.h" namespace { @@ -51,6 +56,99 @@ //exif_comment = tmopts.getExifComment(); } } + +QImage* doCMSTransform(QImage* input_qimage, bool doProof, bool doGamutCheck) +{ + LuminanceOptions luminance_opts; + QString monitor_fname = luminance_opts.getMonitorProfileFileName(); + qDebug() << "Monitor profile: " << monitor_fname; + QString printer_fname = luminance_opts.getPrinterProfileFileName(); + qDebug() << "Printer profile: " << printer_fname; + + // CHECK MONITOR PROFILE NAME + // TODO: Check inside LuminanceOptions whether the file is on the filesystem + // or it has been removed! + if ( monitor_fname.isEmpty() ) return NULL; + + qDebug() << "Transform to Monitor Profile"; + QByteArray iccProfileMonitor( QFile::encodeName( monitor_fname ) ); + + QScopedPointer out_qimage( new QImage(input_qimage->width(), input_qimage->height(), QImage::Format_RGB32) ); + + ScopedCmsProfile hsRGB( cmsCreate_sRGBProfile() ); + ScopedCmsProfile hOut( cmsOpenProfileFromFile(iccProfileMonitor.constData(), "r") ); + + ScopedCmsProfile hProof; + ScopedCmsTransform xform; + + // Check whether the output profile is open + if ( !hOut ) + { + QMessageBox::warning(0, + QObject::tr("Warning"), + QObject::tr("I cannot open monitor profile. Please select a different one."), + QMessageBox::Ok, QMessageBox::NoButton); + + return NULL; + } + + // + if (doProof && !printer_fname.isEmpty()) + { + QByteArray iccProfilePrinter( QFile::encodeName( printer_fname ) ); + hProof.reset( cmsOpenProfileFromFile(iccProfilePrinter.constData(), "r") ); + if ( !hProof ) + { + QMessageBox::warning(0, + QObject::tr("Warning"), + QObject::tr("I cannot open printer profile. Please select a different one."), + QMessageBox::Ok, QMessageBox::NoButton); + doProof = false; + } + } + else if (doProof) + { + QMessageBox::warning(0, + QObject::tr("Warning"), + QObject::tr("Please select a printer profile ."), + QMessageBox::Ok, QMessageBox::NoButton); + doProof = false; + } + + if (doProof) + { + cmsUInt32Number dwFlags = doGamutCheck ? cmsFLAGS_SOFTPROOFING | cmsFLAGS_GAMUTCHECK : cmsFLAGS_SOFTPROOFING; + cmsUInt16Number alarmCodes[cmsMAXCHANNELS] = { 0 }; + alarmCodes[1] = 0xFFFF; + cmsSetAlarmCodes(alarmCodes); + xform.reset( cmsCreateProofingTransform(hsRGB.data(), TYPE_BGRA_8, //TYPE_RGBA_8, + hOut.data(), TYPE_BGRA_8, //TYPE_RGBA_8, + hProof.data(), INTENT_PERCEPTUAL, INTENT_ABSOLUTE_COLORIMETRIC, dwFlags) ); + } + else + { + xform.reset( cmsCreateTransform(hsRGB.data(), TYPE_BGRA_8, //TYPE_RGBA_8, + hOut.data(), TYPE_BGRA_8, //TYPE_RGBA_8, + INTENT_PERCEPTUAL, 0) ); + } + + if ( !xform ) + { + QMessageBox::warning(0, + QObject::tr("Warning"), + QObject::tr("I cannot perform the color transform. Please select a different monitor profile."), + QMessageBox::Ok, QMessageBox::NoButton); + + return NULL; + } + + cmsDoTransform(xform.data(), + input_qimage->bits(), + out_qimage->bits(), + (input_qimage->width() * input_qimage->height()) ); + + return out_qimage.take(); +} } @@ -68,19 +166,26 @@ // I am safe LdrViewer::setTonemappingOptions(opts); - QScopedPointer temp_qimage(fromLDRPFStoQImage(getFrame())); + QScopedPointer temp_qimage( fromLDRPFStoQImage(getFrame()) ); + QScopedPointer xformed_qimage( doCMSTransform(temp_qimage.data(), false, false) ); - setQImage(*temp_qimage); + if (xformed_qimage == NULL) + { + setQImage(*temp_qimage); + } + else + { + setQImage(*xformed_qimage); + } updateView(); - retranslateUi(); } LdrViewer::~LdrViewer() { #ifdef QT_DEBUG - std::cout << "LdrViewer::~LdrViewer()" << std::endl; + qDebug() << "LdrViewer::~LdrViewer()"; #endif } @@ -117,9 +222,18 @@ qDebug() << "void LdrViewer::updatePixmap()"; #endif - QScopedPointer temp_qimage(fromLDRPFStoQImage(getFrame())); + QScopedPointer temp_qimage( fromLDRPFStoQImage(getFrame()) ); + QScopedPointer xformed_qimage( doCMSTransform(temp_qimage.data(), false, false) ); + + if ( !xformed_qimage ) + { + mPixmap->setPixmap(QPixmap::fromImage(*temp_qimage)); + } + else + { + mPixmap->setPixmap(QPixmap::fromImage(*xformed_qimage)); + } - mPixmap->setPixmap(QPixmap::fromImage(*temp_qimage)); informativeLabel->setText( tr("LDR image [%1 x %2]").arg(getWidth()).arg(getHeight()) ); } @@ -148,3 +262,23 @@ { return 0.0f; } + +void LdrViewer::doSoftProofing(bool doGamutCheck) +{ + QScopedPointer src_image( fromLDRPFStoQImage(getFrame()) ); + QScopedPointer image( doCMSTransform(src_image.data(), true, doGamutCheck) ); + if (image.data() != NULL) + { + mPixmap->setPixmap(QPixmap::fromImage(*image)); + } +} + +void LdrViewer::undoSoftProofing() +{ + QScopedPointer src_image( fromLDRPFStoQImage(getFrame()) ); + QScopedPointer image( doCMSTransform(src_image.data(), false, false) ); + if (image.data() != NULL) + { + mPixmap->setPixmap(QPixmap::fromImage(*image)); + } +} diff -Nru luminance-2.2.1/src/Viewers/LdrViewer.h luminance-2.3.0/src/Viewers/LdrViewer.h --- luminance-2.2.1/src/Viewers/LdrViewer.h 2012-03-11 20:13:12.000000000 +0000 +++ luminance-2.3.0/src/Viewers/LdrViewer.h 2012-07-01 09:10:50.000000000 +0000 @@ -30,6 +30,8 @@ #include +#include + #include "GenericViewer.h" // Forward declaration @@ -62,6 +64,9 @@ //! \brief returns min value of the handled frame float getMinLuminanceValue(); + void doSoftProofing(bool); + void undoSoftProofing(); + protected Q_SLOTS: virtual void updatePixmap();