diff --git a/.gitignore b/.gitignore index 7141ec92d..21ebf986a 100644 --- a/.gitignore +++ b/.gitignore @@ -13,8 +13,8 @@ Makefile cmake_install.cmake install_manifest.txt -build -Build +build* +Build* Debug RelWithDebInfo MinSizeRel diff --git a/CMakeLists.txt b/CMakeLists.txt index d3e2f2c4b..fa153855b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -112,6 +112,7 @@ endif() option(USE_EXPERIMENTAL_LANG_VERSIONS "Build with -std=c++0x" OFF) option(BUILD_SHARED "Build with shared libraries" OFF) +option(WITH_BENCHMARK "Build with benchmark code" OFF) option(WITH_MYFILE_MMAP "Build using memory mapped file" ON) option(WITH_LTO "Build with link-time optimizations" OFF) option(WITH_SAN "Build with run-time sanitizer" OFF) diff --git a/rtdata/images/Dark/actions/atom.png b/rtdata/images/Dark/actions/atom.png new file mode 100644 index 000000000..1e7ce3da0 Binary files /dev/null and b/rtdata/images/Dark/actions/atom.png differ diff --git a/rtdata/images/Dark/actions/equalizer-narrow.png b/rtdata/images/Dark/actions/equalizer-narrow.png new file mode 100644 index 000000000..dcf484ea7 Binary files /dev/null and b/rtdata/images/Dark/actions/equalizer-narrow.png differ diff --git a/rtdata/images/Dark/actions/equalizer-wide.png b/rtdata/images/Dark/actions/equalizer-wide.png new file mode 100644 index 000000000..50cfed8fa Binary files /dev/null and b/rtdata/images/Dark/actions/equalizer-wide.png differ diff --git a/rtdata/images/Light/actions/atom.png b/rtdata/images/Light/actions/atom.png new file mode 100644 index 000000000..55feaf8d7 Binary files /dev/null and b/rtdata/images/Light/actions/atom.png differ diff --git a/rtdata/images/Light/actions/equalizer-narrow.png b/rtdata/images/Light/actions/equalizer-narrow.png new file mode 100644 index 000000000..c9e2c5b26 Binary files /dev/null and b/rtdata/images/Light/actions/equalizer-narrow.png differ diff --git a/rtdata/images/Light/actions/equalizer-wide.png b/rtdata/images/Light/actions/equalizer-wide.png new file mode 100644 index 000000000..f5b0aca68 Binary files /dev/null and b/rtdata/images/Light/actions/equalizer-wide.png differ diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index eda2ad2ad..7fa32fc56 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -7,6 +7,7 @@ ABOUT_TAB_RELEASENOTES;Notes de la versió ABOUT_TAB_SPLASH;Splash ADJUSTER_RESET_TO_DEFAULT;Restaura predeterminats BATCHQUEUE_AUTOSTART;Auto engega +BATCHQUEUE_AUTOSTARTHINT;Inicia processat automàticament en rebre un nou treball BATCH_PROCESSING;Processament per lots CURVEEDITOR_CURVE;Corba CURVEEDITOR_CURVES;Corbes @@ -148,12 +149,7 @@ FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Mostra imatges no recentment desades.\nDrec FILEBROWSER_SHOWTRASHHINT;Veure què hi ha a la paperera.\nDrecera: Ctrl-t FILEBROWSER_SHOWUNCOLORHINT;Mostra imatges sense etiqueta de color.\nDrecera: Alt-0 FILEBROWSER_SHOWUNRANKHINT;Mostra imatges sense rang.\nDrecera: 0 -FILEBROWSER_STARTPROCESSING;Inicia procés -FILEBROWSER_STARTPROCESSINGHINT;Inicia el processament de les imatges de la cua -FILEBROWSER_STOPPROCESSING;Atura processament -FILEBROWSER_STOPPROCESSINGHINT;Atura processament d'imatges de la cua FILEBROWSER_THUMBSIZE;Tamany minifoto -FILEBROWSER_TOOLTIP_STOPPROCESSING;Inicia processat automàticament en rebre un nou treball FILEBROWSER_ZOOMINHINT;Engrandir minifoto.\nDrecera: + FILEBROWSER_ZOOMOUTHINT;Reduïr minifoto.\nDrecera: - GENERAL_ABOUT;Respecte a @@ -356,7 +352,6 @@ HISTORY_MSG_169;Corba 'CH' HISTORY_MSG_170;Vibrància - corba HISTORY_MSG_171;Corba 'LC' HISTORY_MSG_172;Restriccció LC als tons vermell i pell -HISTORY_MSG_173;RS - Detall de la luminància HISTORY_NEWSNAPSHOT;Afegeix HISTORY_SNAPSHOT;Instantània HISTORY_SNAPSHOTS;Instantànies @@ -523,7 +518,6 @@ PREFERENCES_DIRLAST;Últim directori usat PREFERENCES_DIROTHER;Un altre PREFERENCES_DIRSELECTDLG;Selecc. directori d'inici... PREFERENCES_DIRSOFTWARE;Instal·lació al directori -PREFERENCES_EDITORCMDLINE;Una altra línia de comandament PREFERENCES_EDITORLAYOUT;Sortida d'editor PREFERENCES_EXTERNALEDITOR;Editor extern PREFERENCES_FBROWSEROPTS;Opcions de navegador i minifotos @@ -686,11 +680,11 @@ TP_DARKFRAME_LABEL;Marc fosc TP_DEFRINGE_LABEL;Desserrella TP_DEFRINGE_RADIUS;Radi TP_DEFRINGE_THRESHOLD;Llindar -TP_DIRPYRDENOISE_CHROMA;Crominància -TP_DIRPYRDENOISE_GAMMA;Gama -TP_DIRPYRDENOISE_LABEL;Reducció de soroll (només imatges raw) -TP_DIRPYRDENOISE_LDETAIL;Detall de luminància -TP_DIRPYRDENOISE_LUMA;Luminància +TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Crominància +TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Detall de luminància +TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminància +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LABEL;Reducció de soroll (només imatges raw) +TP_DIRPYRDENOISE_MAIN_GAMMA;Gama TP_DIRPYREQUALIZER_LABEL;Contrast per grau de detall TP_DIRPYREQUALIZER_LUMACOARSEST;Més bast TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast- @@ -957,6 +951,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !!!!!!!!!!!!!!!!!!!!!!!!! !BATCHQUEUE_DESTFILENAME;Path and file name +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !CURVEEDITOR_AXIS_IN;I: !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: @@ -1016,9 +1011,11 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !GENERAL_AUTO;Automatic !GENERAL_CLOSE;Close !GENERAL_OPEN;Open +!GENERAL_SLIDER;Slider !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. !HISTOGRAM_TOOLTIP_CHRO;Show/Hide chromaticity histogram. !HISTORY_MSG_166;Exposure - Reset +!HISTORY_MSG_173;NR - Detail recovery !HISTORY_MSG_174;CIECAM02 !HISTORY_MSG_175;CAM02 - CAT02 adaptation !HISTORY_MSG_176;CAM02 - Viewing surround @@ -1048,7 +1045,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !HISTORY_MSG_200;CAM02 - Tone mapping !HISTORY_MSG_201;NR - Chrominance - R&G !HISTORY_MSG_202;NR - Chrominance - B&Y -!HISTORY_MSG_203;NR - Method +!HISTORY_MSG_203;NR - Color space !HISTORY_MSG_204;LMMSE enhancement steps !HISTORY_MSG_205;CAM02 - Hot/bad pixel filter !HISTORY_MSG_206;CAT02 - Auto scene luminosity @@ -1100,7 +1097,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !HISTORY_MSG_253;CbDL - Reduce artifacts !HISTORY_MSG_254;CbDL - Skin hue !HISTORY_MSG_255;NR - Median filter -!HISTORY_MSG_256;NR - Median type +!HISTORY_MSG_256;NR - Median - Type !HISTORY_MSG_257;Color Toning !HISTORY_MSG_258;CT - Color curve !HISTORY_MSG_259;CT - Opacity curve @@ -1141,7 +1138,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !HISTORY_MSG_294;Film Simulation - Strength !HISTORY_MSG_295;Film Simulation - Film !HISTORY_MSG_296;NR - Luminance curve -!HISTORY_MSG_297;NR - Quality +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_298;Dead pixel filter !HISTORY_MSG_299;NR - Chrominance curve !HISTORY_MSG_300;- @@ -1319,6 +1316,15 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -1380,6 +1386,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !PARTIALPASTE_FILMSIMULATION;Film simulation !PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control !PARTIALPASTE_GRADIENT;Graduated filter +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_PCVIGNETTE;Vignette filter !PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter @@ -1411,6 +1418,12 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_CURVEBBOXPOS;Position of curve copy & paste buttons !PREFERENCES_CURVEBBOXPOS_ABOVE;Above !PREFERENCES_CURVEBBOXPOS_BELOW;Below @@ -1427,6 +1440,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4 !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_DIRECTORIES;Directories +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EXPAUT;Expert !PREFERENCES_FLUOF2;Fluorescent F2 !PREFERENCES_FLUOF7;Fluorescent F7 @@ -1661,14 +1675,14 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_COLORAPP_TCMODE_LABEL3;Curve chroma mode !TP_COLORAPP_TCMODE_LIGHTNESS;Lightness !TP_COLORAPP_TCMODE_SATUR;Saturation -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1708,63 +1722,59 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 -!TP_DIRPYRDENOISE_3X3;3×3 -!TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft -!TP_DIRPYRDENOISE_5X5;5×5 -!TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft -!TP_DIRPYRDENOISE_7X7;7×7 -!TP_DIRPYRDENOISE_9X9;9×9 -!TP_DIRPYRDENOISE_ABM;Chroma only -!TP_DIRPYRDENOISE_AUT;Automatic global -!TP_DIRPYRDENOISE_AUTO;Automatic global -!TP_DIRPYRDENOISE_AUTO_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! -!TP_DIRPYRDENOISE_BLUE;Chrominance - Blue-Yellow -!TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CCCURVE;Chrominance curve -!TP_DIRPYRDENOISE_CHROMAFR;Chrominance -!TP_DIRPYRDENOISE_CTYPE;Method -!TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CUR;Curve -!TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -!TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. -!TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Modulates action of 'Luminance' denoise +!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! +!TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Chrominance - Blue-Yellow +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance +!TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method +!TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Center: Px=%2 Py=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= - +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Chrominance - Red-Green !TP_DIRPYRDENOISE_ENH;Enhanced mode !TP_DIRPYRDENOISE_ENH_TOOLTIP;Increases noise reduction quality at the expense of a 20% processing time increase. -!TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. -!TP_DIRPYRDENOISE_LAB;L*a*b* -!TP_DIRPYRDENOISE_LABM;L*a*b* -!TP_DIRPYRDENOISE_LCURVE;Luminance curve -!TP_DIRPYRDENOISE_LM;Luminance only -!TP_DIRPYRDENOISE_LPLABM;Weighted L* (little) + a*b* (normal) -!TP_DIRPYRDENOISE_LTYPE;Luminance control -!TP_DIRPYRDENOISE_LUMAFR;Luminance -!TP_DIRPYRDENOISE_MAN;Manual -!TP_DIRPYRDENOISE_MANU;Manual -!TP_DIRPYRDENOISE_MED;Median Filter -!TP_DIRPYRDENOISE_MEDMETHOD;Median method -!TP_DIRPYRDENOISE_MEDTYPE;Median type -!TP_DIRPYRDENOISE_METHOD;Method -!TP_DIRPYRDENOISE_METHOD11;Quality -!TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Quality can be adapted to the noise pattern. A setting of "high" increases the noise reduction effect at a cost of extended processing time. -!TP_DIRPYRDENOISE_METHOD_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. -!TP_DIRPYRDENOISE_METM_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. -!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_NOISELABEL;Preview noise: Mean=%1 High=%2 -!TP_DIRPYRDENOISE_NOISELABELEMPTY;Preview noise: Mean= - High= - -!TP_DIRPYRDENOISE_NRESID_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -!TP_DIRPYRDENOISE_PASSES;Median iterations -!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -!TP_DIRPYRDENOISE_PON;Auto multi-zones -!TP_DIRPYRDENOISE_PRE;Preview multi-zones -!TP_DIRPYRDENOISE_PREV;Preview -!TP_DIRPYRDENOISE_PREVLABEL;Preview size=%1, Center: Px=%2 Py=%3 -!TP_DIRPYRDENOISE_RED;Chrominance - Red-Green -!TP_DIRPYRDENOISE_RGB;RGB -!TP_DIRPYRDENOISE_RGBM;RGB -!TP_DIRPYRDENOISE_SHAL;Standard -!TP_DIRPYRDENOISE_SHALBI;High +!TP_DIRPYRDENOISE_LABEL;Noise Reduction +!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control +!TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve +!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance +!TP_DIRPYRDENOISE_MAIN_COLORSPACE;Color space +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. +!TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. +!TP_DIRPYRDENOISE_MAIN_MODE;Mode +!TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressive +!TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Conservative +!TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Conservative" preserves low frequency chroma patterns, while "aggressive" obliterates them. +!TP_DIRPYRDENOISE_MEDIAN_METHOD;Median method +!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median Filter +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Luminance only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +!TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. +!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) +!TP_DIRPYRDENOISE_MEDIAN_PASSES;Median iterations +!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_DIRPYRDENOISE_MEDIAN_TYPE;Median type +!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. !TP_DIRPYRDENOISE_SLI;Slider -!TP_DIRPYRDENOISE_TILELABEL;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_TYPE_3X3;3×3 +!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft +!TP_DIRPYRDENOISE_TYPE_5X5;5×5 +!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft +!TP_DIRPYRDENOISE_TYPE_7X7;7×7 +!TP_DIRPYRDENOISE_TYPE_9X9;9×9 !TP_DIRPYREQUALIZER_ALGO;Skin Color Range !TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: closer to the colors of the skin, minimizing the action on other colors\nLarge: avoid more artifacts. !TP_DIRPYREQUALIZER_ARTIF;Reduce artifacts @@ -1823,6 +1833,15 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_LABCURVE_CURVEEDITOR_LH;LH !TP_LABCURVE_CURVEEDITOR_LH_TOOLTIP;Luminance according to hue L=f(H) !TP_LABCURVE_CURVEEDITOR_LL_TOOLTIP;Luminance according to luminance L=f(L) +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged !TP_NEUTRAL;Reset !TP_PCVIGNETTE_FEATHER;Feather !TP_PCVIGNETTE_FEATHER_TOOLTIP;Feathering:\n0 = corners only,\n50 = halfway to center,\n100 = to center. @@ -1855,7 +1874,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_RAW_DCB;DCB !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... -!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast !TP_RAW_HD;Threshold @@ -1863,7 +1882,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_RAW_HPHD;HPHD !TP_RAW_IGV;IGV !TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_LMMSE;LMMSE !TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps !TP_RAW_LMMSE_TOOLTIP;Adds gamma (step 1), median (steps 2-4) and refinement (steps 5-6) to reduce artifacts and improve the signal-to-noise ratio. @@ -1902,6 +1921,8 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal !TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical !TP_RAW_PIXELSHIFTNREADISO;nRead +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. !TP_RAW_PIXELSHIFTPRNU;PRNU (%) !TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight !TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -1915,6 +1936,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue !TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green !TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +!TP_RAW_RCD;RCD !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index 51aed581d..b829a3d34 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -168,10 +168,6 @@ FILEBROWSER_SHOWRANK5HINT;显示5星图片 FILEBROWSER_SHOWRECENTLYSAVEDHINT;显示保存的图片\n快捷: Alt-7 FILEBROWSER_SHOWTRASHHINT;显示垃圾箱内容 FILEBROWSER_SHOWUNRANKHINT;显示未评星图片 -FILEBROWSER_STARTPROCESSING;开始处理 -FILEBROWSER_STARTPROCESSINGHINT;开始处理或保存队列中的图片 -FILEBROWSER_STOPPROCESSING;停止处理 -FILEBROWSER_STOPPROCESSINGHINT;停止处理图片 FILEBROWSER_THUMBSIZE;缩略图大小 FILEBROWSER_ZOOMINHINT;增大缩略图 FILEBROWSER_ZOOMOUTHINT;减小缩略图 @@ -320,7 +316,6 @@ HISTORY_MSG_158;力度 HISTORY_MSG_159;边缘停止 HISTORY_MSG_160;拉伸 HISTORY_MSG_162;色调映射 -HISTORY_MSG_173;降噪 - 亮度细节 HISTORY_MSG_174;CIECAM02 HISTORY_MSG_183;CAM02 - 对比度 (J) HISTORY_MSG_210;渐变 - 角度 @@ -550,7 +545,6 @@ PREFERENCES_DIRLAST;上次访问路径 PREFERENCES_DIROTHER;其他 PREFERENCES_DIRSELECTDLG;启动时选择图片路径... PREFERENCES_DIRSOFTWARE;软件安装路径 -PREFERENCES_EDITORCMDLINE;其他命令行 PREFERENCES_EDITORLAYOUT;编辑器布局 PREFERENCES_EXPAUT;进阶 PREFERENCES_EXTERNALEDITOR;外部编辑器 @@ -824,10 +818,10 @@ TP_DARKFRAME_AUTOSELECT;自动选择 TP_DARKFRAME_LABEL;黑框架 TP_DEFRINGE_LABEL;去色彩边缘(紫边) TP_DEFRINGE_RADIUS;半径 -TP_DIRPYRDENOISE_LABEL;降噪 -TP_DIRPYRDENOISE_LDETAIL;明亮度细节 -TP_DIRPYRDENOISE_LUMA;光亮度/发光度 -TP_DIRPYRDENOISE_RGB;RGB +TP_DIRPYRDENOISE_LUMINANCE_DETAIL;明亮度细节 +TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;光亮度/发光度 +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LABEL;降噪 +TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB TP_DIRPYREQUALIZER_ALGO;皮肤色彩范围 TP_DIRPYREQUALIZER_ARTIF;减少杂色 TP_DIRPYREQUALIZER_HUESKIN;皮肤色相 @@ -1032,6 +1026,8 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! +!BATCHQUEUE_AUTOSTARTHINT;Start processing automatically when a new job arrives. +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !CURVEEDITOR_AXIS_IN;I: !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: @@ -1064,8 +1060,8 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !FILEBROWSER_SHOWORIGINALHINT;Show only original images.\n\nWhen several images exist with the same filename but different extensions, the one considered original is the one whose extension is nearest the top of the parsed extensions list in Preferences > File Browser > Parsed Extensions. !FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Show unsaved images.\nShortcut: Alt-6 !FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0 -!FILEBROWSER_TOOLTIP_STOPPROCESSING;Start processing automatically when a new job arrives. !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 +!GENERAL_SLIDER;Slider !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. !HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.\nRight-click on image preview to freeze/unfreeze. !HISTOGRAM_TOOLTIP_CHRO;Show/Hide chromaticity histogram. @@ -1136,6 +1132,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !HISTORY_MSG_170;Vibrance - HH curve !HISTORY_MSG_171;L*a*b* - LC curve !HISTORY_MSG_172;L*a*b* - Restrict LC +!HISTORY_MSG_173;NR - Detail recovery !HISTORY_MSG_175;CAM02 - CAT02 adaptation !HISTORY_MSG_176;CAM02 - Viewing surround !HISTORY_MSG_177;CAM02 - Scene luminosity @@ -1163,7 +1160,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !HISTORY_MSG_200;CAM02 - Tone mapping !HISTORY_MSG_201;NR - Chrominance - R&G !HISTORY_MSG_202;NR - Chrominance - B&Y -!HISTORY_MSG_203;NR - Method +!HISTORY_MSG_203;NR - Color space !HISTORY_MSG_204;LMMSE enhancement steps !HISTORY_MSG_205;CAM02 - Hot/bad pixel filter !HISTORY_MSG_206;CAT02 - Auto scene luminosity @@ -1208,7 +1205,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !HISTORY_MSG_253;CbDL - Reduce artifacts !HISTORY_MSG_254;CbDL - Skin hue !HISTORY_MSG_255;NR - Median filter -!HISTORY_MSG_256;NR - Median type +!HISTORY_MSG_256;NR - Median - Type !HISTORY_MSG_257;Color Toning !HISTORY_MSG_258;CT - Color curve !HISTORY_MSG_259;CT - Opacity curve @@ -1249,7 +1246,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !HISTORY_MSG_294;Film Simulation - Strength !HISTORY_MSG_295;Film Simulation - Film !HISTORY_MSG_296;NR - Luminance curve -!HISTORY_MSG_297;NR - Quality +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_298;Dead pixel filter !HISTORY_MSG_299;NR - Chrominance curve !HISTORY_MSG_300;- @@ -1427,6 +1424,15 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1476,12 +1482,20 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !MONITOR_PROFILE_SYSTEM;System default !OPTIONS_DEFIMG_MISSING;The default profile for non-raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\nDefault internal values will be used. !OPTIONS_DEFRAW_MISSING;The default profile for raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\nDefault internal values will be used. +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_TM_FATTAL;HDR Tone mapping !PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. !PREFERENCES_BEHSETALLHINT;Set all parameters to the Set mode.\nAdjustments of parameters in the batch tool panel will be absolute, the actual values will be displayed. +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_CUSTPROFBUILDHINT;Executable (or script) file called when a new initial processing profile should be generated for an image.\n\nThe path of the communication file (*.ini style, a.k.a. "Keyfile") is added as a command line parameter. It contains various parameters required for the scripts and image Exif to allow a rules-based processing profile generation.\n\nWARNING: You are responsible for using double quotes where necessary if you're using paths containing spaces. !PREFERENCES_DIRECTORIES;Directories +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now !PROFILEPANEL_COPYPPASTE;Parameters to copy !PROFILEPANEL_GLOBALPROFILES;Bundled profiles @@ -1607,14 +1621,14 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_COLORAPP_TCMODE_LABEL1;Curve mode 1 !TP_COLORAPP_TCMODE_LABEL2;Curve mode 2 !TP_COLORAPP_TCMODE_LABEL3;Curve chroma mode -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1652,64 +1666,60 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_COLORTONING_TWOCOLOR_TOOLTIP;Standard chroma:\nLinear response, a* = b*.\n\nSpecial chroma:\nLinear response, a* = b*, but unbound - try under the diagonal.\n\nSpecial a* and b*:\nLinear response unbound with separate curves for a* and b*. Intended for special effects.\n\nSpecial chroma 2 colors:\nMore predictable. !TP_COLORTONING_TWOSTD;Standard chroma !TP_DEFRINGE_THRESHOLD;Threshold -!TP_DIRPYRDENOISE_3X3;3×3 -!TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft -!TP_DIRPYRDENOISE_5X5;5×5 -!TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft -!TP_DIRPYRDENOISE_7X7;7×7 -!TP_DIRPYRDENOISE_9X9;9×9 -!TP_DIRPYRDENOISE_ABM;Chroma only -!TP_DIRPYRDENOISE_AUT;Automatic global -!TP_DIRPYRDENOISE_AUTO;Automatic global -!TP_DIRPYRDENOISE_AUTO_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! -!TP_DIRPYRDENOISE_BLUE;Chrominance - Blue-Yellow -!TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CCCURVE;Chrominance curve -!TP_DIRPYRDENOISE_CHROMA;Chrominance - Master -!TP_DIRPYRDENOISE_CHROMAFR;Chrominance -!TP_DIRPYRDENOISE_CTYPE;Method -!TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CUR;Curve -!TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -!TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. -!TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Modulates action of 'Luminance' denoise +!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! +!TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Chrominance - Blue-Yellow +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance +!TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual +!TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Chrominance - Master +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method +!TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Center: Px=%2 Py=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= - +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Chrominance - Red-Green !TP_DIRPYRDENOISE_ENH;Enhanced mode !TP_DIRPYRDENOISE_ENH_TOOLTIP;Increases noise reduction quality at the expense of a 20% processing time increase. -!TP_DIRPYRDENOISE_GAMMA;Gamma -!TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. -!TP_DIRPYRDENOISE_LAB;L*a*b* -!TP_DIRPYRDENOISE_LABM;L*a*b* -!TP_DIRPYRDENOISE_LCURVE;Luminance curve -!TP_DIRPYRDENOISE_LM;Luminance only -!TP_DIRPYRDENOISE_LPLABM;Weighted L* (little) + a*b* (normal) -!TP_DIRPYRDENOISE_LTYPE;Luminance control -!TP_DIRPYRDENOISE_LUMAFR;Luminance -!TP_DIRPYRDENOISE_MAN;Manual -!TP_DIRPYRDENOISE_MANU;Manual -!TP_DIRPYRDENOISE_MED;Median Filter -!TP_DIRPYRDENOISE_MEDMETHOD;Median method -!TP_DIRPYRDENOISE_MEDTYPE;Median type -!TP_DIRPYRDENOISE_METHOD;Method -!TP_DIRPYRDENOISE_METHOD11;Quality -!TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Quality can be adapted to the noise pattern. A setting of "high" increases the noise reduction effect at a cost of extended processing time. -!TP_DIRPYRDENOISE_METHOD_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. -!TP_DIRPYRDENOISE_METM_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. -!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_NOISELABEL;Preview noise: Mean=%1 High=%2 -!TP_DIRPYRDENOISE_NOISELABELEMPTY;Preview noise: Mean= - High= - -!TP_DIRPYRDENOISE_NRESID_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -!TP_DIRPYRDENOISE_PASSES;Median iterations -!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -!TP_DIRPYRDENOISE_PON;Auto multi-zones -!TP_DIRPYRDENOISE_PRE;Preview multi-zones -!TP_DIRPYRDENOISE_PREV;Preview -!TP_DIRPYRDENOISE_PREVLABEL;Preview size=%1, Center: Px=%2 Py=%3 -!TP_DIRPYRDENOISE_RED;Chrominance - Red-Green -!TP_DIRPYRDENOISE_RGBM;RGB -!TP_DIRPYRDENOISE_SHAL;Standard -!TP_DIRPYRDENOISE_SHALBI;High +!TP_DIRPYRDENOISE_LABEL;Noise Reduction +!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control +!TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve +!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance +!TP_DIRPYRDENOISE_MAIN_COLORSPACE;Color space +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. +!TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma +!TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. +!TP_DIRPYRDENOISE_MAIN_MODE;Mode +!TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressive +!TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Conservative +!TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Conservative" preserves low frequency chroma patterns, while "aggressive" obliterates them. +!TP_DIRPYRDENOISE_MEDIAN_METHOD;Median method +!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median Filter +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Luminance only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +!TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. +!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) +!TP_DIRPYRDENOISE_MEDIAN_PASSES;Median iterations +!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_DIRPYRDENOISE_MEDIAN_TYPE;Median type +!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. !TP_DIRPYRDENOISE_SLI;Slider -!TP_DIRPYRDENOISE_TILELABEL;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_TYPE_3X3;3×3 +!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft +!TP_DIRPYRDENOISE_TYPE_5X5;5×5 +!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft +!TP_DIRPYRDENOISE_TYPE_7X7;7×7 +!TP_DIRPYRDENOISE_TYPE_9X9;9×9 !TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: closer to the colors of the skin, minimizing the action on other colors\nLarge: avoid more artifacts. !TP_DIRPYREQUALIZER_HUESKIN_TOOLTIP;This pyramid is for the upper part, so far as the algorithm at its maximum efficiency.\nTo the lower part, the transition zones.\nIf you need to move the area significantly to the left or right - or if there are artifacts: the white balance is incorrect\nYou can slightly reduce the zone to prevent the rest of the image is affected. !TP_DIRPYREQUALIZER_SKIN_TOOLTIP;At -100 skin-tones are targetted.\nAt 0 all tones are treated equally.\nAt +100 skin-tones are protected while all other tones are affected. @@ -1788,6 +1798,15 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_LABCURVE_LCREDSK_TIP;If enabled, the LC Curve affects only red and skin-tones.\nIf disabled, it applies to all tones. !TP_LABCURVE_RSTPROTECTION;Red and skin-tones protection !TP_LABCURVE_RSTPRO_TOOLTIP;Works on the Chromaticity slider and the CC curve. +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged !TP_NEUTRAL;Reset !TP_NEUTRAL_TIP;Resets exposure sliders to neutral values.\nApplies to the same controls that Auto Levels applies to, regardless of whether you used Auto Levels or not. !TP_PCVIGNETTE_FEATHER_TOOLTIP;Feathering:\n0 = corners only,\n50 = halfway to center,\n100 = to center. @@ -1824,7 +1843,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_RAW_DMETHOD;Method !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... -!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_EAHD;EAHD !TP_RAW_FALSECOLOR;False color suppression steps !TP_RAW_FAST;Fast @@ -1833,7 +1852,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_RAW_HPHD;HPHD !TP_RAW_IGV;IGV !TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_LABEL;Demosaicing !TP_RAW_LMMSE;LMMSE !TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps @@ -1873,6 +1892,8 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal !TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical !TP_RAW_PIXELSHIFTNREADISO;nRead +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. !TP_RAW_PIXELSHIFTPRNU;PRNU (%) !TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight !TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -1886,6 +1907,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue !TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green !TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +!TP_RAW_RCD;RCD !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index 2476aeb41..fde7f4fde 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -3,6 +3,7 @@ ADJUSTER_RESET_TO_DEFAULT;重置預設參數 BATCHQUEUE_AUTOSTART;Auto start +BATCHQUEUE_AUTOSTARTHINT;Start processing automatically when a new job arrives CURVEEDITOR_LINEAR;線性 CURVEEDITOR_LOADDLGLABEL;正載入曲線... CURVEEDITOR_SAVEDLGLABEL;正儲存曲線... @@ -60,12 +61,7 @@ FILEBROWSER_SHOWRANK4HINT;Show images ranked as 4 star FILEBROWSER_SHOWRANK5HINT;Show images ranked as 5 star FILEBROWSER_SHOWTRASHHINT;Show content of the trash FILEBROWSER_SHOWUNRANKHINT;Show unranked images -FILEBROWSER_STARTPROCESSING;Start Processing -FILEBROWSER_STARTPROCESSINGHINT;Start processing/saving of images in the queue -FILEBROWSER_STOPPROCESSING;Stop processing -FILEBROWSER_STOPPROCESSINGHINT;Stop processing of images FILEBROWSER_THUMBSIZE;Thumb. size -FILEBROWSER_TOOLTIP_STOPPROCESSING;Start processing automatically when a new job arrives FILEBROWSER_ZOOMINHINT;Increase thumbnail size FILEBROWSER_ZOOMOUTHINT;Decrease thumbnail size GENERAL_ABOUT;關於 @@ -258,7 +254,6 @@ PREFERENCES_DIRLAST;上次訪問路徑 PREFERENCES_DIROTHER;其他 PREFERENCES_DIRSELECTDLG;啟動時選擇圖片路徑... PREFERENCES_DIRSOFTWARE;軟體安裝路徑 -PREFERENCES_EDITORCMDLINE;Other command line PREFERENCES_EXTERNALEDITOR;External editor PREFERENCES_FBROWSEROPTS;檔流覽選項 PREFERENCES_FILEFORMAT;檔格式 @@ -436,6 +431,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !ABOUT_TAB_RELEASENOTES;Release Notes !ABOUT_TAB_SPLASH;Splash !BATCHQUEUE_DESTFILENAME;Path and file name +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !BATCH_PROCESSING;Batch Processing !CURVEEDITOR_AXIS_IN;I: !CURVEEDITOR_AXIS_LEFT_TAN;LT: @@ -581,6 +577,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open +!GENERAL_SLIDER;Slider !GENERAL_WARNING;Warning !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. !HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.\nRight-click on image preview to freeze/unfreeze. @@ -678,7 +675,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !HISTORY_MSG_170;Vibrance - HH curve !HISTORY_MSG_171;L*a*b* - LC curve !HISTORY_MSG_172;L*a*b* - Restrict LC -!HISTORY_MSG_173;NR - Luminance detail +!HISTORY_MSG_173;NR - Detail recovery !HISTORY_MSG_174;CIECAM02 !HISTORY_MSG_175;CAM02 - CAT02 adaptation !HISTORY_MSG_176;CAM02 - Viewing surround @@ -708,7 +705,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !HISTORY_MSG_200;CAM02 - Tone mapping !HISTORY_MSG_201;NR - Chrominance - R&G !HISTORY_MSG_202;NR - Chrominance - B&Y -!HISTORY_MSG_203;NR - Method +!HISTORY_MSG_203;NR - Color space !HISTORY_MSG_204;LMMSE enhancement steps !HISTORY_MSG_205;CAM02 - Hot/bad pixel filter !HISTORY_MSG_206;CAT02 - Auto scene luminosity @@ -760,7 +757,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !HISTORY_MSG_253;CbDL - Reduce artifacts !HISTORY_MSG_254;CbDL - Skin hue !HISTORY_MSG_255;NR - Median filter -!HISTORY_MSG_256;NR - Median type +!HISTORY_MSG_256;NR - Median - Type !HISTORY_MSG_257;Color Toning !HISTORY_MSG_258;CT - Color curve !HISTORY_MSG_259;CT - Opacity curve @@ -801,7 +798,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !HISTORY_MSG_294;Film Simulation - Strength !HISTORY_MSG_295;Film Simulation - Film !HISTORY_MSG_296;NR - Luminance curve -!HISTORY_MSG_297;NR - Quality +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_298;Dead pixel filter !HISTORY_MSG_299;NR - Chrominance curve !HISTORY_MSG_300;- @@ -979,6 +976,15 @@ TP_WBALANCE_TEMPERATURE;色溫 !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -1094,6 +1100,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !PARTIALPASTE_IMPULSEDENOISE;Impulse noise reduction !PARTIALPASTE_LABCURVE;L*a*b* adjustments !PARTIALPASTE_LENSPROFILE;Profiled lens correction +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_PCVIGNETTE;Vignette filter !PARTIALPASTE_PERSPECTIVE;Perspective !PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter @@ -1145,6 +1152,12 @@ TP_WBALANCE_TEMPERATURE;色溫 !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_CURVEBBOXPOS;Position of curve copy & paste buttons !PREFERENCES_CURVEBBOXPOS_ABOVE;Above !PREFERENCES_CURVEBBOXPOS_BELOW;Below @@ -1169,6 +1182,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EDITORLAYOUT;Editor Layout !PREFERENCES_EXPAUT;Expert !PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) @@ -1462,14 +1476,14 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_COLORAPP_TCMODE_LABEL3;Curve chroma mode !TP_COLORAPP_TCMODE_LIGHTNESS;Lightness !TP_COLORAPP_TCMODE_SATUR;Saturation -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1518,68 +1532,63 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold -!TP_DIRPYRDENOISE_3X3;3×3 -!TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft -!TP_DIRPYRDENOISE_5X5;5×5 -!TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft -!TP_DIRPYRDENOISE_7X7;7×7 -!TP_DIRPYRDENOISE_9X9;9×9 -!TP_DIRPYRDENOISE_ABM;Chroma only -!TP_DIRPYRDENOISE_AUT;Automatic global -!TP_DIRPYRDENOISE_AUTO;Automatic global -!TP_DIRPYRDENOISE_AUTO_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! -!TP_DIRPYRDENOISE_BLUE;Chrominance - Blue-Yellow -!TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CCCURVE;Chrominance curve -!TP_DIRPYRDENOISE_CHROMA;Chrominance - Master -!TP_DIRPYRDENOISE_CHROMAFR;Chrominance -!TP_DIRPYRDENOISE_CTYPE;Method -!TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CUR;Curve -!TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -!TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. -!TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Modulates action of 'Luminance' denoise +!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! +!TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Chrominance - Blue-Yellow +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance +!TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual +!TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Chrominance - Master +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method +!TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Center: Px=%2 Py=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= - +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Chrominance - Red-Green !TP_DIRPYRDENOISE_ENH;Enhanced mode !TP_DIRPYRDENOISE_ENH_TOOLTIP;Increases noise reduction quality at the expense of a 20% processing time increase. -!TP_DIRPYRDENOISE_GAMMA;Gamma -!TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. -!TP_DIRPYRDENOISE_LAB;L*a*b* !TP_DIRPYRDENOISE_LABEL;Noise Reduction -!TP_DIRPYRDENOISE_LABM;L*a*b* -!TP_DIRPYRDENOISE_LCURVE;Luminance curve -!TP_DIRPYRDENOISE_LDETAIL;Luminance - Detail -!TP_DIRPYRDENOISE_LM;Luminance only -!TP_DIRPYRDENOISE_LPLABM;Weighted L* (little) + a*b* (normal) -!TP_DIRPYRDENOISE_LTYPE;Luminance control -!TP_DIRPYRDENOISE_LUMA;Luminance -!TP_DIRPYRDENOISE_LUMAFR;Luminance -!TP_DIRPYRDENOISE_MAN;Manual -!TP_DIRPYRDENOISE_MANU;Manual -!TP_DIRPYRDENOISE_MED;Median Filter -!TP_DIRPYRDENOISE_MEDMETHOD;Median method -!TP_DIRPYRDENOISE_MEDTYPE;Median type -!TP_DIRPYRDENOISE_METHOD;Method -!TP_DIRPYRDENOISE_METHOD11;Quality -!TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Quality can be adapted to the noise pattern. A setting of "high" increases the noise reduction effect at a cost of extended processing time. -!TP_DIRPYRDENOISE_METHOD_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. -!TP_DIRPYRDENOISE_METM_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. -!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_NOISELABEL;Preview noise: Mean=%1 High=%2 -!TP_DIRPYRDENOISE_NOISELABELEMPTY;Preview noise: Mean= - High= - -!TP_DIRPYRDENOISE_NRESID_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -!TP_DIRPYRDENOISE_PASSES;Median iterations -!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -!TP_DIRPYRDENOISE_PON;Auto multi-zones -!TP_DIRPYRDENOISE_PRE;Preview multi-zones -!TP_DIRPYRDENOISE_PREV;Preview -!TP_DIRPYRDENOISE_PREVLABEL;Preview size=%1, Center: Px=%2 Py=%3 -!TP_DIRPYRDENOISE_RED;Chrominance - Red-Green -!TP_DIRPYRDENOISE_RGB;RGB -!TP_DIRPYRDENOISE_RGBM;RGB -!TP_DIRPYRDENOISE_SHAL;Standard -!TP_DIRPYRDENOISE_SHALBI;High +!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control +!TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve +!TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Detail recovery +!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance +!TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminance +!TP_DIRPYRDENOISE_MAIN_COLORSPACE;Color space +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. +!TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma +!TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. +!TP_DIRPYRDENOISE_MAIN_MODE;Mode +!TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressive +!TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Conservative +!TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Conservative" preserves low frequency chroma patterns, while "aggressive" obliterates them. +!TP_DIRPYRDENOISE_MEDIAN_METHOD;Median method +!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median Filter +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Luminance only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +!TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. +!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) +!TP_DIRPYRDENOISE_MEDIAN_PASSES;Median iterations +!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_DIRPYRDENOISE_MEDIAN_TYPE;Median type +!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. !TP_DIRPYRDENOISE_SLI;Slider -!TP_DIRPYRDENOISE_TILELABEL;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_TYPE_3X3;3×3 +!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft +!TP_DIRPYRDENOISE_TYPE_5X5;5×5 +!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft +!TP_DIRPYRDENOISE_TYPE_7X7;7×7 +!TP_DIRPYRDENOISE_TYPE_9X9;9×9 !TP_DIRPYREQUALIZER_ALGO;Skin Color Range !TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: closer to the colors of the skin, minimizing the action on other colors\nLarge: avoid more artifacts. !TP_DIRPYREQUALIZER_ARTIF;Reduce artifacts @@ -1730,6 +1739,15 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_LENSPROFILE_USECA;Chromatic aberration correction !TP_LENSPROFILE_USEDIST;Distortion correction !TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged !TP_NEUTRAL;Reset !TP_NEUTRAL_TIP;Resets exposure sliders to neutral values.\nApplies to the same controls that Auto Levels applies to, regardless of whether you used Auto Levels or not. !TP_PCVIGNETTE_FEATHER;Feather @@ -1780,7 +1798,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_RAW_DMETHOD;Method !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... -!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_EAHD;EAHD !TP_RAW_FALSECOLOR;False color suppression steps !TP_RAW_FAST;Fast @@ -1789,7 +1807,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_RAW_HPHD;HPHD !TP_RAW_IGV;IGV !TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_LABEL;Demosaicing !TP_RAW_LMMSE;LMMSE !TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps @@ -1829,6 +1847,8 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal !TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical !TP_RAW_PIXELSHIFTNREADISO;nRead +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. !TP_RAW_PIXELSHIFTPRNU;PRNU (%) !TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight !TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -1842,6 +1862,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue !TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green !TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +!TP_RAW_RCD;RCD !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index 29cf45b3d..e81f2c046 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -38,6 +38,7 @@ #37 2017-01-10 updated by mkyral #38 2017-04-26 updated by mkyral #39 2017-07-21 updated by mkyral +#40 2017-12-13 updated by mkyral ABOUT_TAB_BUILD;Verze ABOUT_TAB_CREDITS;Zásluhy @@ -46,6 +47,7 @@ ABOUT_TAB_RELEASENOTES;Poznámky k vydání ABOUT_TAB_SPLASH;Úvodní obrazovka ADJUSTER_RESET_TO_DEFAULT;Vrátit se k původnímu BATCHQUEUE_AUTOSTART;Automatický start +BATCHQUEUE_AUTOSTARTHINT;Automatické spuštění zpracování po vložení nové úlohy. BATCHQUEUE_DESTFILENAME;Cesta a název souboru BATCH_PROCESSING;Dávkové zpracování CURVEEDITOR_AXIS_IN;Vstup: @@ -73,6 +75,7 @@ CURVEEDITOR_TOOLTIPPASTE;Vložit křivku ze schránky. CURVEEDITOR_TOOLTIPSAVE;Uložit současnou křivku. CURVEEDITOR_TYPE;Typ DIRBROWSER_FOLDERS;Složky +DONT_SHOW_AGAIN;Zprávu znova nezobrazovat. DYNPROFILEEDITOR_DELETE;Smazat DYNPROFILEEDITOR_EDIT;Upravit DYNPROFILEEDITOR_EDIT_RULE;Upravit pravidlo dynamického profilu @@ -107,6 +110,7 @@ EXIFPANEL_RESET;Obnovit EXIFPANEL_RESETALL;Obnovit vše EXIFPANEL_RESETALLHINT;Obnoví původní hodnoty u všech štítků. EXIFPANEL_RESETHINT;Obnoví původní hodnoty u vybraných štítků. +EXIFPANEL_SHOWALL;Zobrazit vše EXIFPANEL_SUBDIRECTORY;Podadresář EXPORT_BYPASS;Kroky zpracování pro přeskočení EXPORT_BYPASS_ALL;Vybrat / Zrušit výběr všeho @@ -232,12 +236,7 @@ FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Ukázat neuložené obrázky.\nZkratka: FILEBROWSER_SHOWTRASHHINT;Ukázat obsah koše.\nZkratka: Ctrl-t FILEBROWSER_SHOWUNCOLORHINT;Ukázat obrázky bez barevného štítku.\nZkratka: Alt-0 FILEBROWSER_SHOWUNRANKHINT;Ukázat nehodnocené obrázky.\nZkratka: 0 -FILEBROWSER_STARTPROCESSING;Spustit zpracování -FILEBROWSER_STARTPROCESSINGHINT;Spustit zpracování obrázků ve frontě.\n\nZkratka: Ctrl+s -FILEBROWSER_STOPPROCESSING;Zastavit zpracovávaní -FILEBROWSER_STOPPROCESSINGHINT;Zastavit zpracování obrázků ve frontě.\n\nZkratka: Ctrl+s FILEBROWSER_THUMBSIZE;Velikost náhledu -FILEBROWSER_TOOLTIP_STOPPROCESSING;Automatické spuštění zpracování po vložení nové úlohy. FILEBROWSER_UNRANK_TOOLTIP;Zrušit hodnocení.\nZkratka: Shift - 0 FILEBROWSER_ZOOMINHINT;Zvětšit velikosti náhledů.\n\nZkratky:\n+ - režim více karet editoru,\nAlt-+ - režim jedné karty editoru. FILEBROWSER_ZOOMOUTHINT;Zmenšit velikosti náhledů.\n\nZkratky:\n- - režim více karet editoru,\nAlt-- - režim jedné karty editoru. @@ -271,6 +270,7 @@ GENERAL_PORTRAIT;Na výšku GENERAL_SAVE;Uložit GENERAL_UNCHANGED;(Beze změny) GENERAL_WARNING;Varování +GIMP_PLUGIN_INFO;Vítejte v RawTherapee doplňku pro GIMP!\nPo dokončení úprav prostě zavřete hlavní okno RawTherapee a obrázek bude automaticky načten GIMPem. HISTOGRAM_TOOLTIP_B;Skrýt/Zobrazit histogram modré. HISTOGRAM_TOOLTIP_BAR;Skrýt/Zobrazit řádek RGB indikátoru\nKlikněte pravým tlačítkem myši na náhled pro zmrazení/uvolnění. HISTOGRAM_TOOLTIP_CHRO;Skrýt/Zobrazit histogram barevnosti. @@ -316,9 +316,9 @@ HISTORY_MSG_30;RLD - Poloměr HISTORY_MSG_31;RLD - Míra HISTORY_MSG_32;RLD - Útlum HISTORY_MSG_33;RLD - Průchody -HISTORY_MSG_34;LCP korekce zkreslení -HISTORY_MSG_35;LCP korekce vinětace -HISTORY_MSG_36;LCP korekce CA +HISTORY_MSG_34;Korekce objektivu - Zkreslení +HISTORY_MSG_35;Korekce objektivu - Vinětace +HISTORY_MSG_36;Korekce objektivu - ChA HISTORY_MSG_37;Expozice - Automatické úrovně HISTORY_MSG_38;Vyvážení bílé - Metoda HISTORY_MSG_39;VB - Teplota @@ -367,7 +367,7 @@ HISTORY_MSG_81;Změna velikosti HISTORY_MSG_82;Profil změněn HISTORY_MSG_83;S/S - Maska ostrosti HISTORY_MSG_84;Korekce perspektivy -HISTORY_MSG_85;LCP +HISTORY_MSG_85;Korekce objektivu - LCP soubor HISTORY_MSG_86;RGB křivky - Režim svítivost HISTORY_MSG_87;Redukce impulzního šumu HISTORY_MSG_88;Redukce impulzního šumu - práh @@ -455,7 +455,6 @@ HISTORY_MSG_169;L*a*b* - CH Křivka HISTORY_MSG_170;Živost - HH křivka HISTORY_MSG_171;L*a*b* - LC křivka HISTORY_MSG_172;L*a*b* - Omezení LC -HISTORY_MSG_173;Redukce šumu - Jas detailu HISTORY_MSG_174;CIECAM02 HISTORY_MSG_175;CAM02 - CAT02 přizpůsobení HISTORY_MSG_176;CAM02 - Okolí pro prohlížení @@ -485,7 +484,6 @@ HISTORY_MSG_199;CAM02 - Výstupní histogramy HISTORY_MSG_200;CAM02 - Mapování tónů HISTORY_MSG_201;Redukce šumu - Barevnost Č a Z HISTORY_MSG_202;Redukce šumu - Barevnost M a Ž -HISTORY_MSG_203;Redukce šumu - Metoda HISTORY_MSG_204;Kroky rozšíření LMMSE HISTORY_MSG_205;CAM02 - Filtr vypálených/špatných pixelů HISTORY_MSG_206;CAT02 - Automatická svítivost scény @@ -537,7 +535,6 @@ HISTORY_MSG_252;KdDÚ - Ochrana tónů pleti HISTORY_MSG_253;KdDÚ - Omezení vzniku artefaktů HISTORY_MSG_254;KdDÚ - Tóny pleti HISTORY_MSG_255;Redukce šumu - Medián -HISTORY_MSG_256;Redukce šumu - Typ mediánu HISTORY_MSG_257;Barevné tónování HISTORY_MSG_258;Barevní tónování - Barevná křivka HISTORY_MSG_259;Barevné tónování - Křivka neprůhlednosti @@ -578,7 +575,6 @@ HISTORY_MSG_293;Simulace filmu HISTORY_MSG_294;Simulace filmu - Síla HISTORY_MSG_295;Simulace filmu - Film HISTORY_MSG_296;Redukce šumu - Křivka jasů -HISTORY_MSG_297;Redukce šumu - Kvalita HISTORY_MSG_298;Filtr mrtvých pixelů HISTORY_MSG_299;Redukce šumu - Křivka barevnosti HISTORY_MSG_300;- @@ -741,6 +737,23 @@ HISTORY_MSG_472;PS - plynulé přechody HISTORY_MSG_473;PS - Použít LMMSE HISTORY_MSG_474;PS - korekce HISTORY_MSG_475;PS - korekce kanálu +HISTORY_MSG_476;CAM02 - Teplota (výstup) +HISTORY_MSG_477;CAM02 - Zelená (výstup) +HISTORY_MSG_478;CAM02 - Yb (výstup) +HISTORY_MSG_479;CAM02 - CAT02 přizpůsobení (výstup) +HISTORY_MSG_480;CAM02 - Automatická CAT02 (výstup) +HISTORY_MSG_481;CAM02 - Teplota scény +HISTORY_MSG_482;CAM02 - Zelená scény +HISTORY_MSG_483;CAM02 - Yb scény +HISTORY_MSG_484;CAT02 - Automatická Yb scény +HISTORY_MSG_485;Korekce objektivu +HISTORY_MSG_486;Korekce objektivu - Fotoaparát +HISTORY_MSG_487;Korekce objektivu - Objektiv +HISTORY_MSG_488;HDR Mapování tónů +HISTORY_MSG_489;HDR TM - Práh +HISTORY_MSG_490;HDR TM - Míra +HISTORY_MSG_491;Vyvážení bílé +HISTORY_MSG_492;RGB křivky HISTORY_NEWSNAPSHOT;Přidat HISTORY_NEWSNAPSHOT_TOOLTIP;Zkratka: Alt-s HISTORY_SNAPSHOT;Snímek @@ -787,6 +800,10 @@ IPTCPANEL_TITLE;Titulek IPTCPANEL_TITLEHINT;Vložte krátké, popisné a lidsky čitelné jméno obrázku. Například název souboru. IPTCPANEL_TRANSREFERENCE;Číslo úlohy IPTCPANEL_TRANSREFERENCEHINT;Zadejte číslo nebo identifikátor potřebný v pracovním postupu nebo pro sledování. +LENSPROFILE_CORRECTION_AUTOMATCH;Automatický dohledané korekční parametry +LENSPROFILE_CORRECTION_LCPFILE;LCP Soubor +LENSPROFILE_CORRECTION_MANUAL;Ruční korekční parametry +LENSPROFILE_LENS_WARNING;Varování: crop factor použitý pro profilování objektivu je větší než crop factor fotoaparátu. Výsledek může být nesprávný. MAIN_BUTTON_FULLSCREEN;Celá obrazovka MAIN_BUTTON_NAVNEXT_TOOLTIP;Přejít k dalšímu obrázku relativnímu k obrázku otevřenému v editoru.\nZkratka: Shift-F4\n\nPřejít k dalšímu obrázku relativnímu k vybranému náhledu v prohlížeči souborů nebo na filmovém pásu:\nZkratka: F4 MAIN_BUTTON_NAVPREV_TOOLTIP;Přejít k předchozímu obrázku relativnímu k obrázku otevřenému v editoru.\nZkratka: Shift-F3\n\nPřejít k předchozímu obrázku relativnímu k vybranému náhledu v prohlížeči souborů nebo na filmovém pásu:\nZkratka: F3 @@ -845,6 +862,7 @@ MAIN_TAB_WAVELET_TOOLTIP;Zkratka: Alt-w MAIN_TOOLTIP_BACKCOLOR0;Barva pozadí náhledu: Dle motivu\nZkratka: 9 MAIN_TOOLTIP_BACKCOLOR1;Barva pozadí náhledu: Černá\nZkratka: 9 MAIN_TOOLTIP_BACKCOLOR2;Barva pozadí náhledu: Bílá\nZkratka: 9 +MAIN_TOOLTIP_BACKCOLOR3;Barva pozadí náhledu: Středně šedá\nZkratka: 9 MAIN_TOOLTIP_BEFOREAFTERLOCK;Zamknout / Odemknout pohled Před\n\nZamknout: ponechá pohled Před nezměněn.\nUžitečné pro posouzení výsledného efektu po použití více nástrojů.\nNavíc může být porovnání provedeno proti kterémukoli stavu v historii.\n\nOdemknout: pohled Před bude následovat pohled Poté, vždy jen o jeden krok zpět, představí vliv právě použitého nástroje. MAIN_TOOLTIP_HIDEHP;Zobrazit či schovat levý panel (obsahující historii).\nZkratka: l MAIN_TOOLTIP_INDCLIPPEDH;Zvýraznit oříznutá světla.\nZkratka: < @@ -912,7 +930,7 @@ PARTIALPASTE_IMPULSEDENOISE;Redukce impulzního šumu PARTIALPASTE_IPTCINFO;IPTC PARTIALPASTE_LABCURVE;L*a*b* úpravy PARTIALPASTE_LENSGROUP;Nastavení související s objektivy -PARTIALPASTE_LENSPROFILE;Korekční profil objektivu +PARTIALPASTE_LENSPROFILE;Korekční profily objektivů PARTIALPASTE_METAGROUP;Metadata PARTIALPASTE_PCVIGNETTE;Viněta PARTIALPASTE_PERSPECTIVE;Perspektiva @@ -933,7 +951,7 @@ PARTIALPASTE_RAW_DMETHOD;Metoda demozajkování PARTIALPASTE_RAW_FALSECOLOR;Potlačení chybných barev PARTIALPASTE_RAW_IMAGENUM;Dílčí snímek PARTIALPASTE_RAW_LMMSEITERATIONS;Kroky rozšíření LMMSE -PARTIALPASTE_RAW_PIXELSHIFT;PixelShift +PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift PARTIALPASTE_RESIZE;Změna velikosti PARTIALPASTE_RETINEX;Retinex PARTIALPASTE_RGBCURVES;RGB křivky @@ -942,6 +960,7 @@ PARTIALPASTE_SHADOWSHIGHLIGHTS;Stíny/Světla PARTIALPASTE_SHARPENEDGE;Hrany PARTIALPASTE_SHARPENING;Doostření (USM/RL) PARTIALPASTE_SHARPENMICRO;Mikrokontrast +PARTIALPASTE_TM_FATTAL;HDR mapování tónů PARTIALPASTE_VIBRANCE;Živost PARTIALPASTE_VIGNETTING;Korekce vinětace PARTIALPASTE_WAVELETGROUP;Úrovně vlnky @@ -954,6 +973,7 @@ PREFERENCES_AUTLISSTD;Vysoké PREFERENCES_AUTLISVLOW;Ne PREFERENCES_AUTLOW;Nízká PREFERENCES_AUTOMONPROFILE;Použít barevný profil hlavního monitoru z operačního systému +PREFERENCES_AUTOSAVE_TP_OPEN;Před ukončením automaticky uložit\nstav sbalení/rozbalení nástrojů. PREFERENCES_AUTSTD;Běžná PREFERENCES_BATCH_PROCESSING;Dávkové zpracování PREFERENCES_BEHADDALL;Vše do 'Přidat' @@ -989,24 +1009,25 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Jméno PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID PREFERENCES_CUSTPROFBUILDPATH;Cesta k programu PREFERENCES_CUTOVERLAYBRUSH;Barva masky ořezu/průhlednosti -PREFERENCES_D50;5000K +PREFERENCES_D50;Nastavení v hlavní nabídce +PREFERENCES_D50_OLD;5000K PREFERENCES_D55;5500K PREFERENCES_D60;6000K PREFERENCES_D65;6500K PREFERENCES_DARKFRAMEFOUND;Nalezeno PREFERENCES_DARKFRAMESHOTS;snímků -PREFERENCES_DARKFRAMETEMPLATES;šablon +PREFERENCES_DARKFRAMETEMPLATES;šablony PREFERENCES_DATEFORMAT;Formát data PREFERENCES_DATEFORMATHINT;Lze použít následující formátovací řetězce:\n%y\t- rok (year)\n%m\t- měsíc (month)\n%d\t- den (day)\n\nNapříklad český formát data:\n%d. %m. %y PREFERENCES_DAUB_LABEL;Použít D6 Daubechiesové vlnky namísto D4 PREFERENCES_DAUB_TOOLTIP;Nástroje Redukce šumu a Úrovně vlnky používají Daubechiesové mateřskou vlnku. Pokud místo D4 vyberete D6 zvýší se počet ortogonálních Daubechiesové koeficientů a pravděpodobně zvýší kvalitu úrovní malého měřítka. Není zde rozdíl ve spotřebě paměti nebo délce zpracování. PREFERENCES_DIRDARKFRAMES;Složka tmavých snímků +PREFERENCES_DIRECTORIES;Složky PREFERENCES_DIRHOME;Domovská složka PREFERENCES_DIRLAST;Poslední navštívená složka PREFERENCES_DIROTHER;Jiná PREFERENCES_DIRSELECTDLG;Zvolte složku s obrázky při spuštění... PREFERENCES_DIRSOFTWARE;Instalační složka -PREFERENCES_EDITORCMDLINE;Jiný příkaz PREFERENCES_EDITORLAYOUT;Rozvržení editoru PREFERENCES_EXPAUT;Expert PREFERENCES_EXTERNALEDITOR;Externí editor @@ -1016,7 +1037,7 @@ PREFERENCES_FILEFORMAT;Formát souboru PREFERENCES_FLATFIELDFOUND;Nalezeno PREFERENCES_FLATFIELDSDIR;Složka Flat Field souborů PREFERENCES_FLATFIELDSHOTS;snímků -PREFERENCES_FLATFIELDTEMPLATES;šablon +PREFERENCES_FLATFIELDTEMPLATES;šablony PREFERENCES_FLUOF2;Fluorescenční F2 PREFERENCES_FLUOF7;Fluorescenční F7 PREFERENCES_FLUOF11;Fluorescenční F11 @@ -1029,7 +1050,8 @@ PREFERENCES_GREY;Yb svítivost výstupního zařízení (%) PREFERENCES_GREY05;Yb=05 CIE L#30 PREFERENCES_GREY10;Yb=10 CIE L#40 PREFERENCES_GREY15;Yb=15 CIE L#45 -PREFERENCES_GREY18;Yb=18 CIE L#50 +PREFERENCES_GREY18;Nastavení v hlavní nabídce +PREFERENCES_GREY18_OLD;Yb=18 CIE L#50 PREFERENCES_GREY23;Yb=23 CIE L#55 PREFERENCES_GREY30;Yb=30 CIE L#60 PREFERENCES_GREY40;Yb=40 CIE L#70 @@ -1051,6 +1073,7 @@ PREFERENCES_INTENT_PERCEPTUAL;Vnímání PREFERENCES_INTENT_RELATIVE;Relativní kolorimetrie PREFERENCES_INTENT_SATURATION;Nasycení PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Ukázat vložené JPEG náhledy u needitovaných snímků +PREFERENCES_LANG;Jazyk PREFERENCES_LANGAUTODETECT;Použít systémový jazyk PREFERENCES_LEVAUTDN;Úroveň odšumění PREFERENCES_LEVDN;Velikost buňky @@ -1112,6 +1135,7 @@ PREFERENCES_REMEMBERZOOMPAN;Zapamatovat si procento přiblížení a posun obrá PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Zapamatovat si procento přiblížení a posun aktuálního obrázku a použít tyto hodnoty při otevírání nového obrázku.\n\nTato volba funguje pouze v režimu "Mód jedné karty editoru" a volba "Metoda demozajkování pro náhled při přiblížení menším než 100%" je nastavena na "Stejně jako v PP3". PREFERENCES_RGBDTL_LABEL;Maximální počet vláken pro redukci šumu a úrovně vlnky PREFERENCES_RGBDTL_TOOLTIP;Pro automatické nastavení maximálního možného počtu vláken ponechte nastaveno na "0". Čím více vláken běží paralelně, tím rychlejší je výpočet. Paměťové nároky najdete na RawPedii. +PREFERENCES_SAVE_TP_OPEN_NOW;Uložit stav sbalení/rozbalení nástrojů hned PREFERENCES_SELECTFONT;Vyberte hlavní písmo PREFERENCES_SELECTFONT_COLPICKER;Vybrat písmo pro Průzkumníka barev PREFERENCES_SELECTLANG;Volba jazyka @@ -1142,6 +1166,7 @@ PREFERENCES_TAB_GENERAL;Obecné PREFERENCES_TAB_IMPROC;Zpracování obrázku PREFERENCES_TAB_PERFORMANCE;Výkon a kvalita PREFERENCES_TAB_SOUND;Zvuky +PREFERENCES_THEME;Vzhled PREFERENCES_TIMAX;Vysoký PREFERENCES_TINB;Počet dlaždic PREFERENCES_TISTD;Běžný @@ -1165,7 +1190,7 @@ PROFILEPANEL_MODE_TIP;Režim uplatnění profilu zpracování.\n\nTlačítko je PROFILEPANEL_MYPROFILES;Mé profily PROFILEPANEL_PASTEPPASTE;Parametry pro vložení PROFILEPANEL_PCUSTOM;Vlastní -PROFILEPANEL_PDYNAMIC;Dynamiký +PROFILEPANEL_PDYNAMIC;Dynamický PROFILEPANEL_PFILE;Ze souboru PROFILEPANEL_PINTERNAL;Neutrální PROFILEPANEL_PLASTSAVED;Poslední uschovaný @@ -1189,13 +1214,21 @@ PROGRESSBAR_SAVEPNG;Ukládání PNG souboru... PROGRESSBAR_SAVETIFF;Ukládání TIFF souboru... PROGRESSBAR_SNAPSHOT_ADDED;Snímek přidán PROGRESSDLG_PROFILECHANGEDINBROWSER;Profil upracování změněn v prohlížeči +QINFO_FRAMECOUNT;%2 snímků +QINFO_HDR;HDR / %2 snímků QINFO_ISO;ISO QINFO_NOEXIF;Exif údaje nejsou k dispozici. +QINFO_PIXELSHIFT;Pixel Shift / %2 snímků +SAMPLEFORMAT_0;Neznámý datový formát +SAMPLEFORMAT_1;Neznaménkový, 8 bitů +SAMPLEFORMAT_2;Neznaménkový, 16 bitů +SAMPLEFORMAT_4;LogLuv, 24 bitů +SAMPLEFORMAT_8;LogLuv, 32 bitů +SAMPLEFORMAT_16;S pohyblivou čárkou, 32 bitů SAVEDLG_AUTOSUFFIX;Automaticky přidat příponu pokud soubor již existuje SAVEDLG_FILEFORMAT;Formát souboru SAVEDLG_FORCEFORMATOPTS;Vynutit volby uložení SAVEDLG_JPEGQUAL;Kvalita JPEG -SAVEDLG_PNGCOMPR;PNG Komprese SAVEDLG_PUTTOQUEUE;Vložit soubor do fronty SAVEDLG_PUTTOQUEUEHEAD;Vložit na začátek fronty SAVEDLG_PUTTOQUEUETAIL;Vložit na konec fronty @@ -1209,8 +1242,8 @@ SAVEDLG_SUBSAMP_TOOLTIP;Nejlepší komprese:\nJ:a:b 4:2:0\nh/v 2/2\nO polovinu s SAVEDLG_TIFFUNCOMPRESSED;Nekomprimovaný TIFF SAVEDLG_WARNFILENAME;Soubor bude pojmenován SHCSELECTOR_TOOLTIP;Klikněte pravým tlačítkem myši pro obnovení výchozí pozice těchto tří posuvníků. -SOFTPROOF_GAMUTCHECK_TOOLTIP;Pokud je aktivní, budou pixely mimo barevnou paletu výstupního profilu označeny šedou barvou. -SOFTPROOF_TOOLTIP;Jemně korekční\nPokud je aktivní, umožní vám simulovat vykreslení dle výstupního profilu ICM. Nejužitečnější pro simulaci tiskového výstupu. +SOFTPROOF_GAMUTCHECK_TOOLTIP;Pokud je aktivní, budou pixely mimo barevnou paletu profilu tiskárnyoznačeny šedou barvou. +SOFTPROOF_TOOLTIP;Jemně korekční\nPokud je aktivní, umožní vám simulovat výstup tiskárny pomocí profilu tiskárny nastaveného v Volby > Správa barev. THRESHOLDSELECTOR_B;Dole THRESHOLDSELECTOR_BL;Dole vlevo THRESHOLDSELECTOR_BR;Dole vpravo @@ -1299,11 +1332,11 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Překlopit horizontálně. TP_COARSETRAF_TOOLTIP_ROTLEFT;Otočit doleva.\n\nZkratky:\n[ - režim více karet editoru,\nAlt-[- režim jedné karty editoru. TP_COARSETRAF_TOOLTIP_ROTRIGHT;Otočit doprava.\n\nZkratky:\n] - režim více karet editoru,\nAlt-]- režim jedné karty editoru. TP_COARSETRAF_TOOLTIP_VFLIP;Překlopit vertikálně. -TP_COLORAPP_ADAPTSCENE;Svítivost scény -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolutní jas scény prostředí(cd/m²).\n 1) Vypočítáno z Exifu:\nRychlost závěrky - citlivost - clona - expoziční korekce fotoaparátu.\n 2) Vypočítáno z hodnoty raw bílého bodu a expoziční kompenzace Rawtherapee. -TP_COLORAPP_ADAPTVIEWING;Svítivost prohlížení (cd/m²) +TP_COLORAPP_ADAPTSCENE;Absolutní jas scény +TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolutní jas scény prostředí (cd/m²).\n 1) Vypočítáno z Exifu:\nRychlost závěrky - citlivost - clona - expoziční korekce fotoaparátu.\n 2) Vypočítáno z hodnoty raw bílého bodu a expoziční kompenzace Rawtherapee. +TP_COLORAPP_ADAPTVIEWING;Absolutní jas prohlížení (cd/m²) TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolutní jas prostředí prohlížení\n(obvykle 16cd/m²). -TP_COLORAPP_ADAP_AUTO_TOOLTIP;Pokud je povoleno (doporučeno), RT vypočítá optimální hodnotu z Exif dat.\nPokud si přejete zadat hodnotu ručně, nejprve zrušte zatržení tohoto pole. +TP_COLORAPP_ADAP_AUTO_TOOLTIP;Pokud je povoleno (doporučeno), RawTherapee vypočítá optimální hodnotu z Exif dat.\nPokud si přejete zadat hodnotu ručně, nejprve zrušte zatržení tohoto pole. TP_COLORAPP_ALGO;Algoritmus TP_COLORAPP_ALGO_ALL;Vše TP_COLORAPP_ALGO_JC;Světlost + Barevnost (JC) @@ -1323,8 +1356,8 @@ TP_COLORAPP_CHROMA_TOOLTIP;Barevnost se v CIECAM02 liší od barevnosti L*a*b* a TP_COLORAPP_CIECAT_DEGREE;CAT02 přizpůsobení TP_COLORAPP_CONTRAST;Kontrast (I) TP_COLORAPP_CONTRAST_Q;Kontrast (O) -TP_COLORAPP_CONTRAST_Q_TOOLTIP;Kontrast pro posuvník Q se v CIECAM02 liší od kontrastu L*a*b* a RGB. -TP_COLORAPP_CONTRAST_TOOLTIP;Kontrast pro posuvník J se v CIECAM02 liší od kontrastu L*a*b* a RGB. +TP_COLORAPP_CONTRAST_Q_TOOLTIP;Liší se od kontrastu L*a*b* a RGB. +TP_COLORAPP_CONTRAST_TOOLTIP;Liší se od kontrastu L*a*b* a RGB. TP_COLORAPP_CURVEEDITOR1;Tónová křivka 1 TP_COLORAPP_CURVEEDITOR1_TOOLTIP;Zobrazuje histogram L* (L*a*b*) křivky před CIECAM02.\nPokud je volba "Zobrazit CIECAM02 histogramy výstupu v křivkách" povolena, zobrazí histogram J nebo Q po CIECAM02 .\n\nJ a Q histogramy nejsou na hlavním panelu zobrazeny.\n\nHistogram konečného výsledku je zobrazen na hlavním panelu. TP_COLORAPP_CURVEEDITOR2;Tónová křivka 2 @@ -1335,6 +1368,7 @@ TP_COLORAPP_DATACIE;CIECAM02 histogramy výstupu v křivkách TP_COLORAPP_DATACIE_TOOLTIP;Pokud je povoleno, zobrazuje histogram v CIECAM02 křivkách přibližné hodnoty/rozsahy po CIECAM02 úpravách J nebo Q, a C, S nebo M.\nVýběr neovlivňuje histogram na hlavním panelu.\n\nPokud je zakázáno, zobrazuje histogram v CIECAM02 křivkách L*a*b* hodnoty před CIECAM02 úpravami. TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Pokud je povoleno (doporučeno), RawTherapee vypočítá optimální hodnotu, jenž následně používá jak CAT02 tak i celý CIECAM02.\nZakažte, pokud si přejete zadat hodnotu ručně (doporučeny jsou hodnoty nad 65). TP_COLORAPP_DEGREE_TOOLTIP;Míra CIE Chromatic Adaptation Transform 2002. +TP_COLORAPP_FREE;Volná teplota + zelená + CAT02 + [výstup] TP_COLORAPP_GAMUT;Kontrola palety (L*a*b*) TP_COLORAPP_GAMUT_TOOLTIP;Povolí kontrolu palety v L*a*b* režimu. TP_COLORAPP_HUE;Odstín (h) @@ -1346,7 +1380,9 @@ TP_COLORAPP_LABEL_VIEWING;Podmínky zobrazení TP_COLORAPP_LIGHT;Světlost (I) TP_COLORAPP_LIGHT_TOOLTIP;Světlost v CIECAM02 se liší od světlosti v L*a*b* a RGB. TP_COLORAPP_MODEL;VB - Model -TP_COLORAPP_MODEL_TOOLTIP;Model bílého bodu.\n\nWB [RT] + [výstup]: Pro scénu je použito vyvážení bílé RT , CIECAM02 je nastaven na D50 a vyvážení bílé výstupního zařízení je nastaveno ve Volby > Správa barev.\n\nWB [RT+CAT02] + [výstup]: CAT02 používá RT nastavení vyvážení bílé a vyvážení bílé výstupního zařízení je nastaveno ve Volby > Správa barev. +TP_COLORAPP_MODEL_TOOLTIP;Model bílého bodu.\n\nWB [RT] + [výstup]: Pro scénu je použito vyvážení bílé RawTherapee , CIECAM02 je nastaven na D50 a vyvážení bílé výstupního zařízení je nastaveno v Podmínkách prohlížení.\n\nWB [RT+CAT02] + [výstup]: CAT02 používá RawTherapee nastavení vyvážení bílé a vyvážení bílé výstupního zařízení je nastaveno v Podmínkách prohlížení.\n\nVolná teplota+zelená + CAT02 + [výstup]: teplota a zelená je vybrána uživatelem, vyvážení bílé výstupního zařízení je nastaveno v Podmínkách prohlížení. +TP_COLORAPP_NEUTRAL;Obnovit +TP_COLORAPP_NEUTRAL_TIP;Obnoví původní hodnoty u všech posuvníků a křivek. TP_COLORAPP_RSTPRO;Ochrana červených a pleťových tónů TP_COLORAPP_RSTPRO_TOOLTIP;Ochrana červených a pleťových tónů ovlivňuje posuvníky i křivky. TP_COLORAPP_SHARPCIE;--nepoužito-- @@ -1367,10 +1403,14 @@ TP_COLORAPP_TCMODE_LABEL2;Mód křivky 2 TP_COLORAPP_TCMODE_LABEL3;Mód barevné křivky TP_COLORAPP_TCMODE_LIGHTNESS;Světlost TP_COLORAPP_TCMODE_SATUR;Nasycení +TP_COLORAPP_TEMP_TOOLTIP;Pro výběr osvětlení vždy nastavte Tint=1.\n\nA barva=2856\nD50 barva=5003\nD55 barva=5503\nD65 barva=6504\nD75 barva=7504 TP_COLORAPP_TONECIE;Mapování tónů pomocí CIECAM02 TP_COLORAPP_TONECIE_TOOLTIP;Pokud je volba zakázána, probíhá mapování tónů v prostoru L*a*b*.\nPokud je volba povolena. probíhá mapování tónů pomocí CIECAM02.\nAby měla tato volba efekt, musí být povolen nástroj Mapování tónů. TP_COLORAPP_WBCAM;WB [RT+CAT02] + [výstup] TP_COLORAPP_WBRT;WB [RT] + [výstup] +TP_COLORAPP_YB;Yb% (střední jas) +TP_COLORAPP_YBSCENE;Yb% (střední jas) +TP_COLORAPP_YBSCENE_TOOLTIP;Pokud je povolena automatika, Yb je vypočteno ze střední hodnoty jasu aktuálního obrázku TP_COLORTONING_AB;o C/L TP_COLORTONING_AUTOSAT;Automaticky TP_COLORTONING_BALANCE;Vyvážené @@ -1430,68 +1470,62 @@ TP_DARKFRAME_LABEL;Tmavý snímek TP_DEFRINGE_LABEL;Odstranění lemu TP_DEFRINGE_RADIUS;Poloměr TP_DEFRINGE_THRESHOLD;Práh -TP_DIRPYRDENOISE_3X3;3×3 -TP_DIRPYRDENOISE_3X3_SOFT;3×3 jemný -TP_DIRPYRDENOISE_5X5;5×5 -TP_DIRPYRDENOISE_5X5_SOFT;5×5 jemný -TP_DIRPYRDENOISE_7X7;7×7 -TP_DIRPYRDENOISE_9X9;9×9 -TP_DIRPYRDENOISE_ABM;Pouze barevnost -TP_DIRPYRDENOISE_AUT;Automatická celková -TP_DIRPYRDENOISE_AUTO;Automatická celková -TP_DIRPYRDENOISE_AUTO_TOOLTIP;Zkusí odhadnout barevný šum\nPozor, tento výpočet je zprůměrován a zcela subjektivní! -TP_DIRPYRDENOISE_BLUE;Barevnost - Modrá a žlutá -TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Ručně\nOvlivňuje celý obrázek.\nVolby redukce šumu nastavujete ručně.\n\nCelková automatika\nOvlivňuje celý obrázek.\nPro výpočet parametrů celkové redukce barevného šumu je použito 9 zón.\n\nNáhled\nOvlivňuje celý obrázek.\nPro výpočet celkového nastavení redukce barevného šumu je použita viditelná část obrázku. -TP_DIRPYRDENOISE_CCCURVE;Křivka barevnosti -TP_DIRPYRDENOISE_CHROMA;Barevnost - Hlavní -TP_DIRPYRDENOISE_CHROMAFR;Barevnost -TP_DIRPYRDENOISE_CTYPE;Metoda -TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Ručně\nOvlivňuje celý obrázek.\nVolby redukce šumu nastavujete ručně.\n\nCelková automatika\nOvlivňuje celý obrázek.\nPro výpočet parametrů celkové redukce barevného šumu je použito 9 zón.\n\nVíce zónová automatika\nBez náhledu - funguje pouze při ukládání, přesto je možné pomocí funkce "Náhled" získat alespoň částečnou představu o výsledku, Nastavení jsou aplikována na centrální dlaždici.\nObrázek je rozdělen na dlaždice (V závislosti na velikosti obrázku jich bude 10 až 70) a pro každou dlaždici bude vypočítáno vhodné nastavení redukce barevného šumu.\n\nNáhled\nOvlivňuje celý obrázek.\nPro výpočet celkového nastavení redukce barevného šumu je použita viditelná část obrázku. -TP_DIRPYRDENOISE_CUR;Křivka -TP_DIRPYRDENOISE_CURVEEDITOR_CC;Barevnost -TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Zvýší (násobí) hodnoty všech barevných posuvníků.\nKřivka vám umožní nastavit sílu redukce barevného šumu jako funkci barvy. Například pro zvýšení účinku v oblastech s nízkým nasycení a snížení v oblastech s vysokým nasycením. -TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Moduluje akci 'jasového' odstranění šumu +TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Více zónová automatika +TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatická celková +TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Zkusí odhadnout barevný šum\nPozor, tento výpočet je zprůměrován a zcela subjektivní! +TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Barevnost - Modrá a žlutá +TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Křivka barevnosti +TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Barevnost +TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Ručně +TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Barevnost - Hlavní +TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Metoda +TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Ručně\nOvlivňuje celý obrázek.\nVolby redukce šumu nastavujete ručně.\n\nCelková automatika\nOvlivňuje celý obrázek.\nPro výpočet parametrů celkové redukce barevného šumu je použito 9 zón.\n\nNáhled\nOvlivňuje celý obrázek.\nPro výpočet celkového nastavení redukce barevného šumu je použita viditelná část obrázku. +TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Ručně\nOvlivňuje celý obrázek.\nVolby redukce šumu nastavujete ručně.\n\nCelková automatika\nOvlivňuje celý obrázek.\nPro výpočet parametrů celkové redukce barevného šumu je použito 9 zón.\n\nVíce zónová automatika\nBez náhledu - funguje pouze při ukládání, přesto je možné pomocí funkce "Náhled" získat alespoň částečnou představu o výsledku, Nastavení jsou aplikována na centrální dlaždici.\nObrázek je rozdělen na dlaždice (V závislosti na velikosti obrázku jich bude 10 až 70) a pro každou dlaždici bude vypočítáno vhodné nastavení redukce barevného šumu.\n\nNáhled\nOvlivňuje celý obrázek.\nPro výpočet celkového nastavení redukce barevného šumu je použita viditelná část obrázku. +TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Více zónový náhled +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Náhled +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Zobrazuje zbývající úroveň zašumění části obrázku viditelného v náhledu po vlnkové transformaci.\n\n>300 Hodně šumu\n100-300 Šum\n50-100 Málo šumu\n<50 Velmi málo šumu\n\nUpozornění: hodnoty RGB a L*a*b* režimu se budou lišit. Protože v RGB režimu nedochází ke kompletnímu oddělení jasu a barev jsou RGB hodnoty jméně přesné +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Velikost náhledu=%1, Střed: Px=%2 Py=%3 +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Náhled šumu: Průměr=%1 Výšky=%2 +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Náhled šumu: Průměr= - Výšky= - +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Velikost dlaždice=%1, Střed: Tx=%2 Ty=%3 +TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Barevnost - Červená a zelená TP_DIRPYRDENOISE_ENH;Vylepšený režim TP_DIRPYRDENOISE_ENH_TOOLTIP;Zvýší kvalitu odstranění šumu, ale zároveň prodlouží dobu zpracování o 20%. -TP_DIRPYRDENOISE_GAMMA;Gama -TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gama ovlivňuje sílu redukce šumu v rozsahu tónů. Menší hodnoty ovlivňují stíny, kdežto vysoké hodnoty zesílí efekt v jasných tónech. -TP_DIRPYRDENOISE_LAB;L*a*b* -TP_DIRPYRDENOISE_LABEL;Redukce šumu -TP_DIRPYRDENOISE_LABM;L*a*b* -TP_DIRPYRDENOISE_LCURVE;Křivka jasů -TP_DIRPYRDENOISE_LDETAIL;Jas - Detail -TP_DIRPYRDENOISE_LM;Pouze jas -TP_DIRPYRDENOISE_LPLABM;Vyvážená L* (trochu) + a*b* (normální) -TP_DIRPYRDENOISE_LTYPE;Ovládání jasu -TP_DIRPYRDENOISE_LUMA;Jas -TP_DIRPYRDENOISE_LUMAFR;Jas -TP_DIRPYRDENOISE_MAN;Ručně -TP_DIRPYRDENOISE_MANU;Ručně -TP_DIRPYRDENOISE_MED;Filtr medián -TP_DIRPYRDENOISE_MEDMETHOD;Metoda mediánu -TP_DIRPYRDENOISE_MEDTYPE;Typ mediánu -TP_DIRPYRDENOISE_METHOD;Metoda -TP_DIRPYRDENOISE_METHOD11;Kvalita -TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Kvalita může být přizpůsobena vzoru šumu. Nastavení "Vysoká" vylepší efekt redukce šumu za cenu navýšení času zpracování. -TP_DIRPYRDENOISE_METHOD_TOOLTIP;Pro raw obrázky může být použita jak RGB tak i L*a*b* metoda.\n\nPro ostatní obrázky bude vždy použita metoda L*a*b* bez ohledu na výběr. -TP_DIRPYRDENOISE_METM_TOOLTIP;Pokud je použito 'Pouze Jas' a 'L*a*b*' metody, bude při odstranění šumu použit filtr medián hned po vlnkové transformaci.\nPokud je použit "RGB" mód, bude filtr použit až na úplný závěr procesu redukce šumu. -TP_DIRPYRDENOISE_MET_TOOLTIP;Aplikuje filtr medián požadované velikosti okna. Čím větší velikost okna, tím déle bude zpracování trvat.\n\n3×3 jemný: upraví 5 pixelů v okně 3x3 pixely.\n3×3: upraví 9 pixelů v okně 3x3 pixely.\n5×5 jemný; upraví 13 pixelů v okně 5x5 pixelů.\n5×5: upraví 25 pixelů v okně 5x5 pixelů.\n7×7: upraví 49 pixelů v okně 7x7 pixelů.\n9×9: upraví 81 pixelů v okně 9x9 pixelů.\n\nV některých případech může být větší kvality dosaženo pomocí několika průběhů s menšími okny než jedním průběhem s velkým oknem. -TP_DIRPYRDENOISE_NOISELABEL;Náhled šumu: Průměr=%1 Výšky=%2 -TP_DIRPYRDENOISE_NOISELABELEMPTY;Náhled šumu: Průměr= - Výšky= - -TP_DIRPYRDENOISE_NRESID_TOOLTIP;Zobrazuje zbývající úroveň zašumění části obrázku viditelného v náhledu po vlnkové transformaci.\n\n>300 Hodně šumu\n100-300 Šum\n50-100 Málo šumu\n<50 Velmi málo šumu\n\nUpozornění: hodnoty RGB a L*a*b* režimu se budou lišit. Protože v RGB režimu nedochází ke kompletnímu oddělení jasu a barev jsou RGB hodnoty jméně přesné -TP_DIRPYRDENOISE_PASSES;Počet průchodů mediánu -TP_DIRPYRDENOISE_PASSES_TOOLTIP;Aplikování tří průchodů filtru medián s oknem 3×3 často vede k lepšímu výsledku než jednou aplikovaný filtr medián s oknem 7×7. -TP_DIRPYRDENOISE_PON;Více zónová automatika -TP_DIRPYRDENOISE_PRE;Více zónový náhled -TP_DIRPYRDENOISE_PREV;Náhled -TP_DIRPYRDENOISE_PREVLABEL;Velikost náhledu=%1, Střed: Px=%2 Py=%3 -TP_DIRPYRDENOISE_RED;Barevnost - Červená a zelená -TP_DIRPYRDENOISE_RGB;RGB -TP_DIRPYRDENOISE_RGBM;RGB -TP_DIRPYRDENOISE_SHAL;Běžná -TP_DIRPYRDENOISE_SHALBI;Vysoká +TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Ovládání jasu +TP_DIRPYRDENOISE_LUMINANCE_CURVE;Křivka jasů +TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Jas - Detail +TP_DIRPYRDENOISE_LUMINANCE_FRAME;Jas +TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Jas +TP_DIRPYRDENOISE_MAIN_COLORSPACE;Metoda +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LABEL;Redukce šumu +TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;Pro raw obrázky může být použita jak RGB tak i L*a*b* metoda.\n\nPro ostatní obrázky bude vždy použita metoda L*a*b* bez ohledu na výběr. +TP_DIRPYRDENOISE_MAIN_GAMMA;Gama +TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gama ovlivňuje sílu redukce šumu v rozsahu tónů. Menší hodnoty ovlivňují stíny, kdežto vysoké hodnoty zesílí efekt v jasných tónech. +TP_DIRPYRDENOISE_MAIN_MODE;Kvalita +TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Vysoká +TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Běžná +TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;Kvalita může být přizpůsobena vzoru šumu. Nastavení "Vysoká" vylepší efekt redukce šumu za cenu navýšení času zpracování. +TP_DIRPYRDENOISE_MEDIAN_METHOD;Metoda mediánu +TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Pouze barevnost +TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Filtr medián +TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Pouze jas +TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;Pokud je použito 'Pouze Jas' a 'L*a*b*' metody, bude při odstranění šumu použit filtr medián hned po vlnkové transformaci.\nPokud je použit "RGB" mód, bude filtr použit až na úplný závěr procesu redukce šumu. +TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Vyvážená L* (trochu) + a*b* (normální) +TP_DIRPYRDENOISE_MEDIAN_PASSES;Počet průchodů mediánu +TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Aplikování tří průchodů filtru medián s oknem 3×3 často vede k lepšímu výsledku než jednou aplikovaný filtr medián s oknem 7×7. +TP_DIRPYRDENOISE_MEDIAN_TYPE;Typ mediánu +TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Aplikuje filtr medián požadované velikosti okna. Čím větší velikost okna, tím déle bude zpracování trvat.\n\n3×3 jemný: upraví 5 pixelů v okně 3x3 pixely.\n3×3: upraví 9 pixelů v okně 3x3 pixely.\n5×5 jemný; upraví 13 pixelů v okně 5x5 pixelů.\n5×5: upraví 25 pixelů v okně 5x5 pixelů.\n7×7: upraví 49 pixelů v okně 7x7 pixelů.\n9×9: upraví 81 pixelů v okně 9x9 pixelů.\n\nV některých případech může být větší kvality dosaženo pomocí několika průběhů s menšími okny než jedním průběhem s velkým oknem. TP_DIRPYRDENOISE_SLI;Posuvník -TP_DIRPYRDENOISE_TILELABEL;Velikost dlaždice=%1, Střed: Tx=%2 Ty=%3 +TP_DIRPYRDENOISE_TYPE_3X3;3×3 +TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 jemný +TP_DIRPYRDENOISE_TYPE_5X5;5×5 +TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 jemný +TP_DIRPYRDENOISE_TYPE_7X7;7×7 +TP_DIRPYRDENOISE_TYPE_9X9;9×9 TP_DIRPYREQUALIZER_ALGO;Rozsah pleťových tónů TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Jemný: blíž k barvám pleti, minimalizuje zásahy na ostatních barvách.\nVelký: více zabrání vzniku artefaktů. TP_DIRPYREQUALIZER_ARTIF;Omezení artefaktů @@ -1587,7 +1621,7 @@ TP_HSVEQUALIZER_LABEL;HSV korekce TP_HSVEQUALIZER_SAT;S TP_HSVEQUALIZER_VAL;V TP_ICM_APPLYBASELINEEXPOSUREOFFSET;Základní expozice -TP_ICM_APPLYBASELINEEXPOSUREOFFSET_TOOLTIP;Použije vložený DCP základní posun expozice. Toto nastavení je dostupné pouze ji pokud DCP obsahuje. +TP_ICM_APPLYBASELINEEXPOSUREOFFSET_TOOLTIP;Použije vložený DCP základní posun expozice. Toto nastavení je dostupné pouze pokud ji vybrané DCP obsahuje. TP_ICM_APPLYHUESATMAP;Základní tabulka TP_ICM_APPLYHUESATMAP_TOOLTIP;Použije vloženou DCP základní tabulku (HueSatMap). Toto nastavení je dostupné pouze pokud ji vybrané DCP obsahuje. TP_ICM_APPLYLOOKTABLE;Tabulka vzhledu @@ -1597,7 +1631,7 @@ TP_ICM_BLENDCMSMATRIX_TOOLTIP;Povolit obnovení vypálených jasů při použit TP_ICM_BPC;Kompenzace černého bodu TP_ICM_DCPILLUMINANT;Osvětlení TP_ICM_DCPILLUMINANT_INTERPOLATED;Interpolované -TP_ICM_DCPILLUMINANT_TOOLTIP;Vyberte které vložené DCP osvětlení se má použít. Ve výchozím stavu se použije "interpolované", což je mix mezi dvěma osvětleními založenými na vyvážení bílé. Nastavené je dostupné pouze v případě, že je povoleno dvojité DCP osvětlení s podporou interpolace. +TP_ICM_DCPILLUMINANT_TOOLTIP;Vyberte které vložené DCP osvětlení se má použít. Ve výchozím stavu se použije "interpolované", což je mix mezi dvěma osvětleními založenými na vyvážení bílé. Nastavené je povoleno pouze v případě, že je vybráno\t dvojité DCP osvětlení s podporou interpolace. TP_ICM_INPUTCAMERA;Standard fotoaparátu TP_ICM_INPUTCAMERAICC;Automatický dohledaný profil fotoaparátu TP_ICM_INPUTCAMERAICC_TOOLTIP;Použít RawTherapee specifický DCP nebo ICC vstupní barevný profil fotoaparátu jenž je mnohem přesnější než zjednodušená matice. Není dostupné pro všechny fotoaparáty. Profily jsou uloženy ve složkách /iccprofiles/input a /dcpprofiles a jsou automaticky vybrány dle jména souboru shodného s fotoaparátem. @@ -1619,7 +1653,7 @@ TP_ICM_SAVEREFERENCE_APPLYWB;Aplikovat vyvážení bílé TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Obecně se vyvážení bílé aplikuje při ukládání obrázku pro vytvoření ICC profilů a neaplikuje při vytváření DCP profilů. TP_ICM_SAVEREFERENCE_TOOLTIP;Uloží lineární TIFF obrázek před aplikováním vstupního profilu. Výsledek může být použit pro kalibraci a generování profilu fotoaparátu. TP_ICM_TONECURVE;Tónová křivka -TP_ICM_TONECURVE_TOOLTIP;Použije vloženou DCP tónovou křivku. Nastavení je dostupné pouze v případě, že DCP obsahuje tónovou křivku. +TP_ICM_TONECURVE_TOOLTIP;Použije vloženou DCP tónovou křivku. Nastavení je dostupné pouze v případě, že vybrané DCP obsahuje tónovou křivku. TP_ICM_WORKINGPROFILE;Pracovní barevný prostor TP_IMPULSEDENOISE_LABEL;Redukce impulzního šumu TP_IMPULSEDENOISE_THRESH;Práh @@ -1663,7 +1697,7 @@ TP_LABCURVE_RSTPRO_TOOLTIP;Pracuje s posuvníkem barevnosti a CC křivkou. TP_LENSGEOM_AUTOCROP;Automatický ořez TP_LENSGEOM_FILL;Automatické vyplnění TP_LENSGEOM_LABEL;Objektiv / Geometrie -TP_LENSPROFILE_LABEL;Korekční profil objektivu +TP_LENSPROFILE_LABEL;Korekční profily objektivů TP_LENSPROFILE_USECA;Korekce chromatické aberace TP_LENSPROFILE_USEDIST;Korekce zkreslení TP_LENSPROFILE_USEVIGN;Korekce vinětace @@ -1779,6 +1813,7 @@ TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Vyhlazení přechodů mezi oblastmi s pohybem a TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev faktor modrý TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev faktor zelený TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev faktor červený +TP_RAW_RCD;RCD TP_RAW_SENSOR_BAYER_LABEL;Snímač s Bayerovou maskou TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;Tří průchodová dává lepší výsledky (doporučeno pro fotky s nízkým ISO).\nJednoprůchodová je téměř k nerozeznání od tří průchodové pro vysoké ISO a je rychlejší. TP_RAW_SENSOR_XTRANS_LABEL;Senzory s X-Trans maticí @@ -1919,6 +1954,9 @@ TP_SHARPENMICRO_AMOUNT;Kvantita TP_SHARPENMICRO_LABEL;Mikrokontrast TP_SHARPENMICRO_MATRIX;Matice 3×3 namísto 5×5 TP_SHARPENMICRO_UNIFORMITY;Jednolitost +TP_TM_FATTAL_AMOUNT;Míra +TP_TM_FATTAL_LABEL;HDR Mapování tónů +TP_TM_FATTAL_THRESHOLD;Práh TP_VIBRANCE_AVOIDCOLORSHIFT;Zabránit posunu barev TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Tóny pleti @@ -2112,7 +2150,7 @@ TP_WBALANCE_CLOUDY;Zataženo TP_WBALANCE_CUSTOM;Vlastní TP_WBALANCE_DAYLIGHT;Denní světlo (slunečno) TP_WBALANCE_EQBLUERED;Korekce modrá/červená -TP_WBALANCE_EQBLUERED_TOOLTIP;Umožňuje odchýlení se od normálního chování "vyvážení bílé" pomocí změny vyvážení modré a červené.\nToto může být užitečné v těchto případech:\na) podmínky jsou velmi odlišné od standardních (například pod vodou),\nb) podmínky se velmi liší od podmínek za kterých probíhala kalibrace,\nc) nevhodné snímače nebo ICC profily. +TP_WBALANCE_EQBLUERED_TOOLTIP;Umožňuje odchýlení se od normálního chování "vyvážení bílé" pomocí změny vyvážení modré a červené.\nToto může být užitečné v těchto případech:\na) podmínky jsou velmi odlišné od běžného osvětlení (například pod vodou),\nb) podmínky se velmi liší od podmínek za kterých probíhala kalibrace,\nc) nevhodné snímače nebo ICC profily. TP_WBALANCE_FLASH55;Leica TP_WBALANCE_FLASH60;Standard, Canon, Pentax, Olympus TP_WBALANCE_FLASH65;Nikon, Panasonic, Sony, Minolta @@ -2166,53 +2204,37 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! -!DONT_SHOW_AGAIN;Don't show this message again. -!EXIFPANEL_SHOWALL;Show all -!GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. -!HISTORY_MSG_476;CAM02 - Temp out -!HISTORY_MSG_477;CAM02 - Green out -!HISTORY_MSG_478;CAM02 - Yb out -!HISTORY_MSG_479;CAM02 - CAT02 adaptation out -!HISTORY_MSG_480;CAM02 - Automatic CAT02 out -!HISTORY_MSG_481;CAM02 - Temp scene -!HISTORY_MSG_482;CAM02 - Green scene -!HISTORY_MSG_483;CAM02 - Yb scene -!HISTORY_MSG_484;CAM02 - Auto Yb scene -!HISTORY_MSG_485;Lens Correction -!HISTORY_MSG_486;Lens Correction - Camera -!HISTORY_MSG_487;Lens Correction - Lens -!HISTORY_MSG_488;HDR Tone Mapping -!HISTORY_MSG_489;HDR TM - Threshold -!HISTORY_MSG_490;HDR TM - Amount -!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters -!LENSPROFILE_CORRECTION_LCPFILE;LCP File -!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters -!LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 -!PARTIALPASTE_TM_FATTAL;HDR Tone mapping -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting -!PREFERENCES_D50_OLD;5000K -!PREFERENCES_DIRECTORIES;Directories -!PREFERENCES_GREY18_OLD;Yb=18 CIE L#50 -!PREFERENCES_LANG;Language -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_THEME;Theme -!QINFO_FRAMECOUNT;%2 frames -!QINFO_HDR;HDR / %2 frame(s) -!QINFO_PIXELSHIFT;Pixel Shift / %2 frame(s) -!SAMPLEFORMAT_0;Unknown data format -!SAMPLEFORMAT_1;Unsigned 8 bits -!SAMPLEFORMAT_2;Unsigned 16 bits -!SAMPLEFORMAT_4;LogLuv 24 bits -!SAMPLEFORMAT_8;LogLuv 32 bits -!SAMPLEFORMAT_16;32 bits floating point -!TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] -!TP_COLORAPP_NEUTRAL;Reset -!TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 -!TP_COLORAPP_YB;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance -!TP_TM_FATTAL_AMOUNT;Amount -!TP_TM_FATTAL_LABEL;HDR Tone Mapping -!TP_TM_FATTAL_THRESHOLD;Threshold +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s +!GENERAL_SLIDER;Slider +!HISTORY_MSG_173;NR - Detail recovery +!HISTORY_MSG_203;NR - Color space +!HISTORY_MSG_256;NR - Median - Type +!HISTORY_MSG_297;NR - Mode +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode +!PARTIALPASTE_LOCALCONTRAST;Local contrast +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None +!PREFERENCES_EDITORCMDLINE;Custom command line +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_LABEL;Noise Reduction +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index 0b619b706..e5f193f6c 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -58,10 +58,6 @@ FILEBROWSER_SHOWRANK4HINT;Vis billeder vurderet med 4 stjerner FILEBROWSER_SHOWRANK5HINT;Vis billeder vurderet med 5 stjerner FILEBROWSER_SHOWTRASHHINT;Vis indhold i papirkurven FILEBROWSER_SHOWUNRANKHINT;Vis billeder uden vurdering -FILEBROWSER_STARTPROCESSING;Begynd bearbejdning -FILEBROWSER_STARTPROCESSINGHINT;Begynd at bearbejde/gemme billeder i køen -FILEBROWSER_STOPPROCESSING;Stop bearbejdning -FILEBROWSER_STOPPROCESSINGHINT;Stop bearbejdningen af billeder FILEBROWSER_THUMBSIZE;Miniaturestr. FILEBROWSER_ZOOMINHINT;Gør miniaturer større FILEBROWSER_ZOOMOUTHINT;Gør miniaturer mindre @@ -249,7 +245,6 @@ PREFERENCES_DIRLAST;Sidst anvendte mappe PREFERENCES_DIROTHER;Andet PREFERENCES_DIRSELECTDLG;Vælg startmappe... PREFERENCES_DIRSOFTWARE;Installationsmappe -PREFERENCES_EDITORCMDLINE;Anden kommandostreng PREFERENCES_EXTERNALEDITOR;Eksternt redigeringsprogram PREFERENCES_FBROWSEROPTS;Indstllinger til filbrowser PREFERENCES_FILEFORMAT;Filformat @@ -427,7 +422,9 @@ TP_WBALANCE_TEMPERATURE;Temperatur !ABOUT_TAB_RELEASENOTES;Release Notes !ABOUT_TAB_SPLASH;Splash !BATCHQUEUE_AUTOSTART;Auto-start +!BATCHQUEUE_AUTOSTARTHINT;Start processing automatically when a new job arrives. !BATCHQUEUE_DESTFILENAME;Path and file name +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !BATCH_PROCESSING;Batch Processing !CURVEEDITOR_AXIS_IN;I: !CURVEEDITOR_AXIS_LEFT_TAN;LT: @@ -558,7 +555,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !FILEBROWSER_SHOWRECENTLYSAVEDHINT;Show saved images.\nShortcut: Alt-7 !FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Show unsaved images.\nShortcut: Alt-6 !FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0 -!FILEBROWSER_TOOLTIP_STOPPROCESSING;Start processing automatically when a new job arrives. !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 !FILECHOOSER_FILTER_ANY;All files !FILECHOOSER_FILTER_COLPROF;Color profiles @@ -576,6 +572,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open +!GENERAL_SLIDER;Slider !GENERAL_UNCHANGED;(Unchanged) !GENERAL_WARNING;Warning !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. @@ -674,7 +671,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_170;Vibrance - HH curve !HISTORY_MSG_171;L*a*b* - LC curve !HISTORY_MSG_172;L*a*b* - Restrict LC -!HISTORY_MSG_173;NR - Luminance detail +!HISTORY_MSG_173;NR - Detail recovery !HISTORY_MSG_174;CIECAM02 !HISTORY_MSG_175;CAM02 - CAT02 adaptation !HISTORY_MSG_176;CAM02 - Viewing surround @@ -704,7 +701,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_200;CAM02 - Tone mapping !HISTORY_MSG_201;NR - Chrominance - R&G !HISTORY_MSG_202;NR - Chrominance - B&Y -!HISTORY_MSG_203;NR - Method +!HISTORY_MSG_203;NR - Color space !HISTORY_MSG_204;LMMSE enhancement steps !HISTORY_MSG_205;CAM02 - Hot/bad pixel filter !HISTORY_MSG_206;CAT02 - Auto scene luminosity @@ -756,7 +753,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_253;CbDL - Reduce artifacts !HISTORY_MSG_254;CbDL - Skin hue !HISTORY_MSG_255;NR - Median filter -!HISTORY_MSG_256;NR - Median type +!HISTORY_MSG_256;NR - Median - Type !HISTORY_MSG_257;Color Toning !HISTORY_MSG_258;CT - Color curve !HISTORY_MSG_259;CT - Opacity curve @@ -797,7 +794,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_294;Film Simulation - Strength !HISTORY_MSG_295;Film Simulation - Film !HISTORY_MSG_296;NR - Luminance curve -!HISTORY_MSG_297;NR - Quality +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_298;Dead pixel filter !HISTORY_MSG_299;NR - Chrominance curve !HISTORY_MSG_300;- @@ -975,6 +972,15 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -1092,6 +1098,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PARTIALPASTE_IMPULSEDENOISE;Impulse noise reduction !PARTIALPASTE_LABCURVE;L*a*b* adjustments !PARTIALPASTE_LENSPROFILE;Profiled lens correction +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_PCVIGNETTE;Vignette filter !PARTIALPASTE_PERSPECTIVE;Perspective !PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter @@ -1143,6 +1150,12 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_CURVEBBOXPOS;Position of curve copy & paste buttons !PREFERENCES_CURVEBBOXPOS_ABOVE;Above !PREFERENCES_CURVEBBOXPOS_BELOW;Below @@ -1167,6 +1180,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EDITORLAYOUT;Editor Layout !PREFERENCES_EXPAUT;Expert !PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) @@ -1460,14 +1474,14 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_COLORAPP_TCMODE_LABEL3;Curve chroma mode !TP_COLORAPP_TCMODE_LIGHTNESS;Lightness !TP_COLORAPP_TCMODE_SATUR;Saturation -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1516,68 +1530,63 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold -!TP_DIRPYRDENOISE_3X3;3×3 -!TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft -!TP_DIRPYRDENOISE_5X5;5×5 -!TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft -!TP_DIRPYRDENOISE_7X7;7×7 -!TP_DIRPYRDENOISE_9X9;9×9 -!TP_DIRPYRDENOISE_ABM;Chroma only -!TP_DIRPYRDENOISE_AUT;Automatic global -!TP_DIRPYRDENOISE_AUTO;Automatic global -!TP_DIRPYRDENOISE_AUTO_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! -!TP_DIRPYRDENOISE_BLUE;Chrominance - Blue-Yellow -!TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CCCURVE;Chrominance curve -!TP_DIRPYRDENOISE_CHROMA;Chrominance - Master -!TP_DIRPYRDENOISE_CHROMAFR;Chrominance -!TP_DIRPYRDENOISE_CTYPE;Method -!TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CUR;Curve -!TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -!TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. -!TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Modulates action of 'Luminance' denoise +!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! +!TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Chrominance - Blue-Yellow +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance +!TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual +!TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Chrominance - Master +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method +!TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Center: Px=%2 Py=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= - +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Chrominance - Red-Green !TP_DIRPYRDENOISE_ENH;Enhanced mode !TP_DIRPYRDENOISE_ENH_TOOLTIP;Increases noise reduction quality at the expense of a 20% processing time increase. -!TP_DIRPYRDENOISE_GAMMA;Gamma -!TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. -!TP_DIRPYRDENOISE_LAB;L*a*b* !TP_DIRPYRDENOISE_LABEL;Noise Reduction -!TP_DIRPYRDENOISE_LABM;L*a*b* -!TP_DIRPYRDENOISE_LCURVE;Luminance curve -!TP_DIRPYRDENOISE_LDETAIL;Luminance - Detail -!TP_DIRPYRDENOISE_LM;Luminance only -!TP_DIRPYRDENOISE_LPLABM;Weighted L* (little) + a*b* (normal) -!TP_DIRPYRDENOISE_LTYPE;Luminance control -!TP_DIRPYRDENOISE_LUMA;Luminance -!TP_DIRPYRDENOISE_LUMAFR;Luminance -!TP_DIRPYRDENOISE_MAN;Manual -!TP_DIRPYRDENOISE_MANU;Manual -!TP_DIRPYRDENOISE_MED;Median Filter -!TP_DIRPYRDENOISE_MEDMETHOD;Median method -!TP_DIRPYRDENOISE_MEDTYPE;Median type -!TP_DIRPYRDENOISE_METHOD;Method -!TP_DIRPYRDENOISE_METHOD11;Quality -!TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Quality can be adapted to the noise pattern. A setting of "high" increases the noise reduction effect at a cost of extended processing time. -!TP_DIRPYRDENOISE_METHOD_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. -!TP_DIRPYRDENOISE_METM_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. -!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_NOISELABEL;Preview noise: Mean=%1 High=%2 -!TP_DIRPYRDENOISE_NOISELABELEMPTY;Preview noise: Mean= - High= - -!TP_DIRPYRDENOISE_NRESID_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -!TP_DIRPYRDENOISE_PASSES;Median iterations -!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -!TP_DIRPYRDENOISE_PON;Auto multi-zones -!TP_DIRPYRDENOISE_PRE;Preview multi-zones -!TP_DIRPYRDENOISE_PREV;Preview -!TP_DIRPYRDENOISE_PREVLABEL;Preview size=%1, Center: Px=%2 Py=%3 -!TP_DIRPYRDENOISE_RED;Chrominance - Red-Green -!TP_DIRPYRDENOISE_RGB;RGB -!TP_DIRPYRDENOISE_RGBM;RGB -!TP_DIRPYRDENOISE_SHAL;Standard -!TP_DIRPYRDENOISE_SHALBI;High +!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control +!TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve +!TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Detail recovery +!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance +!TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminance +!TP_DIRPYRDENOISE_MAIN_COLORSPACE;Color space +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. +!TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma +!TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. +!TP_DIRPYRDENOISE_MAIN_MODE;Mode +!TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressive +!TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Conservative +!TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Conservative" preserves low frequency chroma patterns, while "aggressive" obliterates them. +!TP_DIRPYRDENOISE_MEDIAN_METHOD;Median method +!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median Filter +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Luminance only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +!TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. +!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) +!TP_DIRPYRDENOISE_MEDIAN_PASSES;Median iterations +!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_DIRPYRDENOISE_MEDIAN_TYPE;Median type +!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. !TP_DIRPYRDENOISE_SLI;Slider -!TP_DIRPYRDENOISE_TILELABEL;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_TYPE_3X3;3×3 +!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft +!TP_DIRPYRDENOISE_TYPE_5X5;5×5 +!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft +!TP_DIRPYRDENOISE_TYPE_7X7;7×7 +!TP_DIRPYRDENOISE_TYPE_9X9;9×9 !TP_DIRPYREQUALIZER_ALGO;Skin Color Range !TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: closer to the colors of the skin, minimizing the action on other colors\nLarge: avoid more artifacts. !TP_DIRPYREQUALIZER_ARTIF;Reduce artifacts @@ -1728,6 +1737,15 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_LENSPROFILE_USECA;Chromatic aberration correction !TP_LENSPROFILE_USEDIST;Distortion correction !TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged !TP_NEUTRAL;Reset !TP_NEUTRAL_TIP;Resets exposure sliders to neutral values.\nApplies to the same controls that Auto Levels applies to, regardless of whether you used Auto Levels or not. !TP_PCVIGNETTE_FEATHER;Feather @@ -1777,7 +1795,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RAW_DCBITERATIONS;Number of DCB iterations !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... -!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast !TP_RAW_HD;Threshold @@ -1785,7 +1803,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RAW_HPHD;HPHD !TP_RAW_IGV;IGV !TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_LABEL;Demosaicing !TP_RAW_LMMSE;LMMSE !TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps @@ -1825,6 +1843,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal !TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical !TP_RAW_PIXELSHIFTNREADISO;nRead +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. !TP_RAW_PIXELSHIFTPRNU;PRNU (%) !TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight !TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -1838,6 +1858,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue !TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green !TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +!TP_RAW_RCD;RCD !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 08da90847..f502e61cc 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -46,6 +46,9 @@ #45 15.10.2017 Erweiterung (TooWaBoo) RT 5.3 #46 18.10.2017 Erweiterung (TooWaBoo) RT 5.3 #47 19.11.2017 HDR-Dynamikkompression (TooWaBoo) RT 5.3 +#48 13.12.2017 Erweiterung (TooWaBoo) RT 5.3 +#49 21.12.2017 Lokaler Kontrast (TooWaBoo) RT 5.3 +#50 07.01.2018 Crop Settings (TooWaBoo) RT 5.3 ABOUT_TAB_BUILD;Version ABOUT_TAB_CREDITS;Danksagungen @@ -54,6 +57,7 @@ ABOUT_TAB_RELEASENOTES;Versionshinweise ABOUT_TAB_SPLASH;Startbild ADJUSTER_RESET_TO_DEFAULT;Standard wiederherstellen BATCHQUEUE_AUTOSTART;Automatisch starten +BATCHQUEUE_AUTOSTARTHINT;Bei neuem Job die Verarbeitung automatisch starten BATCHQUEUE_DESTFILENAME;Pfad und Dateiname BATCH_PROCESSING;Stapelverarbeitung CURVEEDITOR_AXIS_IN;x: @@ -242,12 +246,7 @@ FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Nur nicht gespeicherte Bilder anzeigen\nTas FILEBROWSER_SHOWTRASHHINT;Inhalt des Papierkorbs anzeigen\nTaste: Strg + t FILEBROWSER_SHOWUNCOLORHINT;Nur unmarkierte Bilder anzeigen\nTaste: Alt + 0 FILEBROWSER_SHOWUNRANKHINT;Nur unbewertete Bilder anzeigen\nTaste: 0 -FILEBROWSER_STARTPROCESSING;Verarbeitung starten -FILEBROWSER_STARTPROCESSINGHINT;Verarbeitung und Speicherung der\nBilder starten.\nTaste: Strg + s -FILEBROWSER_STOPPROCESSING;Verarbeitung stoppen -FILEBROWSER_STOPPROCESSINGHINT;Verarbeitung der Bilder abbrechen.\nTaste: Strg + s FILEBROWSER_THUMBSIZE;Miniaturbildgröße -FILEBROWSER_TOOLTIP_STOPPROCESSING;Bei neuem Job die Verarbeitung automatisch starten FILEBROWSER_UNRANK_TOOLTIP;Bewertung entfernen\nTaste: Umschalt + 0 FILEBROWSER_ZOOMINHINT;Miniaturbilder vergrößern\n\nIm Multi-Reitermodus:\nTaste: +\nIm Ein-Reitermodus:\nTaste: Alt + FILEBROWSER_ZOOMOUTHINT;Miniaturbilder verkleinern\n\nIm Multi-Reitermodus:\nTaste: -\nIm Ein-Reitermodus:\nTaste: Alt - @@ -466,7 +465,6 @@ HISTORY_MSG_169;(L*a*b*) - CH-Kurve HISTORY_MSG_170;(Dynamik) - HH-Kurve HISTORY_MSG_171;(L*a*b*) - LC-Kurve HISTORY_MSG_172;(L*a*b*) - LC-Kurve\nbeschränken -HISTORY_MSG_173;(Rauschreduzierung)\nLuminanzdetails HISTORY_MSG_174;(CIECAM02) HISTORY_MSG_175;(CIECAM02) - Szene\nCAT02-Adaptation HISTORY_MSG_176;(CIECAM02)\nBetrachtungsbed.\nUmgebung @@ -496,7 +494,6 @@ HISTORY_MSG_199;(CIECAM02) - Ausgabe-\nHistogramm anzeigen HISTORY_MSG_200;(CIECAM02)\nDynamikkompression HISTORY_MSG_201;(Rauschreduzierung)\nDelta-Chrominanz\nRot / Grün HISTORY_MSG_202;(Rauschreduzierung)\nDelta-Chrominanz\nBlau / Gelb -HISTORY_MSG_203;(Rauschreduzierung)\nMethode HISTORY_MSG_204;(Sensor-Matrix)\nFarbinterpolation\nLMMSE-Verbesserung HISTORY_MSG_205;(CIECAM02)\nBetrachtungsbed.\nHot / Bad-Pixelfilter HISTORY_MSG_206;(CIECAM02) - Szene\nAuto-Luminanz @@ -548,7 +545,6 @@ HISTORY_MSG_252;(Detailebenenkontrast)\nHautfarbtöne schützen HISTORY_MSG_253;(Detailebenenkontrast)\nArtefakte reduzieren HISTORY_MSG_254;(Detailebenenkontrast)\nHautfarbton HISTORY_MSG_255;(Rauschreduzierung)\nMedianfilter -HISTORY_MSG_256;(Rauschreduzierung)\nMediantyp HISTORY_MSG_257;(Farbanpassungen) HISTORY_MSG_258;(Farbanpassungen)\nFarbkurve HISTORY_MSG_259;(Farbanpassungen)\nDeckkraftkurve @@ -577,9 +573,9 @@ HISTORY_MSG_281;(Farbanpassungen)\nSättigung schützen\nIntensität HISTORY_MSG_282;(Farbanpassungen)\nSättigung schützen\nSchwelle HISTORY_MSG_283;(Farbanpassungen)\nIntensität HISTORY_MSG_284;(Farbanpassungen)\nSättigung schützen\nAutomatisch -HISTORY_MSG_285;(Rauschreduzierung)\nMedianmethode +HISTORY_MSG_285;(Rauschreduzierung)\nMedianfilter - Methode HISTORY_MSG_286;(Rauschreduzierung)\nMediantyp -HISTORY_MSG_287;(Rauschreduzierung)\nMedianiterationen +HISTORY_MSG_287;(Rauschreduzierung)\nMedianfilter - Iterationen HISTORY_MSG_288;(Weißbild)\nKontrolle zu heller Bereiche HISTORY_MSG_289;(Weißbild)\nAuto-Kontrolle zu\nheller Bereiche HISTORY_MSG_290;(Sensor-Matrix)\nSchwarzpunkt - Rot @@ -589,7 +585,6 @@ HISTORY_MSG_293;(Filmsimulation) HISTORY_MSG_294;(Filmsimulation)\nIntensität HISTORY_MSG_295;(Filmsimulation) - Film HISTORY_MSG_296;(Rauschreduzierung)\nLuminanzkurve -HISTORY_MSG_297;(Rauschreduzierung)\nQualität HISTORY_MSG_298;(Vorverarbeitung)\nDead-Pixel-Filter HISTORY_MSG_299;(Rauschreduzierung)\nChrominanzkurve HISTORY_MSG_300;- @@ -764,6 +759,17 @@ HISTORY_MSG_484;(CIECAM02) - Szene\nAuto Yb% HISTORY_MSG_485;(Objektivkorrektur)\nProfil HISTORY_MSG_486;(Objektivkorrektur)\nProfil - Kamera HISTORY_MSG_487;(Objektivkorrektur)\nProfil - Objektiv +HISTORY_MSG_488;(HDR-Dynamikkompression) +HISTORY_MSG_489;(HDR-Dynamikkompression)\nSchwelle +HISTORY_MSG_490;(HDR-Dynamikkompression)\nIntensität +HISTORY_MSG_491;(Weißabgleich) +HISTORY_MSG_492;(RGB-Kurven) +HISTORY_MSG_493;(L*a*b*) +HISTORY_MSG_LOCALCONTRAST_AMOUNT;(Lokaler Kontrast)\nIntensität +HISTORY_MSG_LOCALCONTRAST_DARKNESS;(Lokaler Kontrast)\nDunkle Bereiche +HISTORY_MSG_LOCALCONTRAST_ENABLED;(Lokaler Kontrast) +HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;(Lokaler Kontrast)\nHelle Bereiche +HISTORY_MSG_LOCALCONTRAST_RADIUS;(Lokaler Kontrast)\nRadius HISTORY_NEWSNAPSHOT;Hinzufügen HISTORY_NEWSNAPSHOT_TOOLTIP;Taste: Alt + s HISTORY_SNAPSHOT;Schnappschuss @@ -941,6 +947,7 @@ PARTIALPASTE_IPTCINFO;IPTC-Informationen PARTIALPASTE_LABCURVE;L*a*b* - Einstellungen PARTIALPASTE_LENSGROUP;Objektivkorrekturen PARTIALPASTE_LENSPROFILE;Objektivkorrekturprofil +PARTIALPASTE_LOCALCONTRAST;Lokaler Kontrast PARTIALPASTE_METAGROUP;Metadaten PARTIALPASTE_PCVIGNETTE;Vignettierungsfilter PARTIALPASTE_PERSPECTIVE;Perspektive @@ -970,6 +977,7 @@ PARTIALPASTE_SHADOWSHIGHLIGHTS;Schatten/Lichter PARTIALPASTE_SHARPENEDGE;Kantenschärfung PARTIALPASTE_SHARPENING;Schärfung PARTIALPASTE_SHARPENMICRO;Mikrokontrast +PARTIALPASTE_TM_FATTAL;HDR-Dynamikkompression PARTIALPASTE_VIBRANCE;Dynamik PARTIALPASTE_VIGNETTING;Vignettierungskorrektur PARTIALPASTE_WAVELETGROUP;Wavelet @@ -1037,7 +1045,6 @@ PREFERENCES_DIRLAST;Zuletzt geöffnetes Verzeichnis PREFERENCES_DIROTHER;Anderes PREFERENCES_DIRSELECTDLG;Wähle das Bild-Verzeichnis beim Programmstart... PREFERENCES_DIRSOFTWARE;Installationsverzeichnis -PREFERENCES_EDITORCMDLINE;Befehlszeile PREFERENCES_EDITORLAYOUT;Editor-Layout PREFERENCES_EXPAUT;Experte PREFERENCES_EXTERNALEDITOR;Externer Editor @@ -1145,7 +1152,7 @@ PREFERENCES_REMEMBERZOOMPAN;Zoom und Bildposition merken PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Öffnen eines neuen Bildes mit den Zoom- und Positionswerten\ndes vorangegangenen Bildes.\n\nFunktioniert nur unter folgenden Bedingungen:\nEin-Reitermodus aktiv\n“Demosaikmethode für 100%-Ansicht“ muss auf “Wie im Bild-\nverarbeitungsprofil vorgegeben“ eingestellt sein. PREFERENCES_RGBDTL_LABEL;Maximale Anzahl Threads für Rauschreduzierung PREFERENCES_RGBDTL_TOOLTIP;Die Rauschreduzierung benötigt mindestens 128MB RAM für ein 10 Megapixel-Bild oder 512MB für ein 40 Megapixel-Bild, und zusätzlich 128MB RAM pro Thread. Je mehr Threads parallel ablaufen, desto schneller ist die Berechnung. Bei Einstellung "0" werden so viele Threads wie möglich benutzt. -PREFERENCES_SAVE_TP_OPEN_NOW;Werkzeugstatus jetzt sichern +PREFERENCES_SAVE_TP_OPEN_NOW;Werkzeugstatus jetzt speichern PREFERENCES_SELECTFONT;Schriftart PREFERENCES_SELECTFONT_COLPICKER;Schriftart für die Farbwähler PREFERENCES_SELECTLANG;Sprache @@ -1481,68 +1488,62 @@ TP_DARKFRAME_LABEL;Dunkelbild TP_DEFRINGE_LABEL;Farbsaum entfernen (Defringe) TP_DEFRINGE_RADIUS;Radius TP_DEFRINGE_THRESHOLD;Schwelle -TP_DIRPYRDENOISE_3X3;3×3 -TP_DIRPYRDENOISE_3X3_SOFT;3×3 weich -TP_DIRPYRDENOISE_5X5;5×5 -TP_DIRPYRDENOISE_5X5_SOFT;5×5 weich -TP_DIRPYRDENOISE_7X7;7×7 -TP_DIRPYRDENOISE_9X9;9×9 -TP_DIRPYRDENOISE_ABM;Nur Farbe -TP_DIRPYRDENOISE_AUT;Automatisch Global -TP_DIRPYRDENOISE_AUTO;Automatisch Global -TP_DIRPYRDENOISE_AUTO_TOOLTIP;Bewertung des Farbrauschens.\nDie Bewertung ist ungenau und sehr subjektiv! -TP_DIRPYRDENOISE_BLUE;Delta-Chrominanz Blau / Gelb -TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Benutzerdefiniert:\nManuelle Anpassung der Chrominanz-Rauschreduzierung.\n\nAutomatisch Global:\nEs werden 9 Zonen für die Berechnung der Chrominanz-\nRauschreduzierung verwendet.\n\nVorschau:\nNur der sichbare Teil des Bildes wird für die Berechnung\nder Chrominanz-Rauschreduzierung verwendet. -TP_DIRPYRDENOISE_CCCURVE;Chrominanzkurve -TP_DIRPYRDENOISE_CHROMA;Chrominanz (Master) -TP_DIRPYRDENOISE_CHROMAFR;Chrominanz -TP_DIRPYRDENOISE_CTYPE;Methode -TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Benutzerdefiniert:\nManuelle Anpassung der Chrominanz-Rauschreduzierung.\n\nAutomatisch Global:\nEs werden 9 Zonen für die Berechnung der Chrominanz-\nRauschreduzierung verwendet.\n\nAuto-Multizonen:\nKeine Voransicht - wird erst beim Speichern angewendet.\nAbhängig von der Bildgröße, wird das Bild in ca. 10 bis 70\nKacheln aufgeteilt. Für jede Kachel wird die Chrominanz-\nRauschreduzierung individuell berechnet.\n\nVorschau:\nNur der sichbare Teil des Bildes wird für die Berechnung\nder Chrominanz-Rauschreduzierung verwendet. -TP_DIRPYRDENOISE_CUR;Kurve -TP_DIRPYRDENOISE_CURVEEDITOR_CC;Farbe -TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Erhöht den Wert aller Chrominanz-Regler und\nregelt die Chrominanz-Rauschreduzierung als\nFunktion der Chromatizität. Die Intensität kann über\nKontrollpunkte für schwach bis intensiv gesättigte\nFarben unterschiedlich eingestellt werden. -TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Moduliert die Wirkung der Luminanz-Rauschreduzierung +TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto-Multizonen +TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatisch Global +TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Bewertung des Farbrauschens.\nDie Bewertung ist ungenau und sehr subjektiv! +TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Delta-Chrominanz Blau / Gelb +TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominanzkurve +TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominanz +TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Benutzerdefiniert +TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Chrominanz (Master) +TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Methode +TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Benutzerdefiniert:\nManuelle Anpassung der Chrominanz-Rauschreduzierung.\n\nAutomatisch Global:\nEs werden 9 Zonen für die Berechnung der Chrominanz-\nRauschreduzierung verwendet.\n\nVorschau:\nNur der sichbare Teil des Bildes wird für die Berechnung\nder Chrominanz-Rauschreduzierung verwendet. +TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Benutzerdefiniert:\nManuelle Anpassung der Chrominanz-Rauschreduzierung.\n\nAutomatisch Global:\nEs werden 9 Zonen für die Berechnung der Chrominanz-\nRauschreduzierung verwendet.\n\nAuto-Multizonen:\nKeine Voransicht - wird erst beim Speichern angewendet.\nAbhängig von der Bildgröße, wird das Bild in ca. 10 bis 70\nKacheln aufgeteilt. Für jede Kachel wird die Chrominanz-\nRauschreduzierung individuell berechnet.\n\nVorschau:\nNur der sichbare Teil des Bildes wird für die Berechnung\nder Chrominanz-Rauschreduzierung verwendet. +TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Vorschau +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Vorschau +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Zeigt das Restrauschen des sichtbaren Bildbereichs\nin der 100%-Ansicht an.\n\n<50: Sehr wenig Rauschen\n50 - 100: Wenig Rauschen\n100 - 300: Durchschnittliches Rauschen\n>300: Hohes Rauschen\n\nDie Werte unterscheiden sich im L*a*b*- und RGB-Modus.\nDie RGB-Werte sind ungenauer, da der RGB-Modus\nLuminanz und Chrominanz nicht komplett trennt. +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Vorschaugröße = %1, Zentrum: Px = %2 Py = %2 +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Rauschen: Mittelwert = %1 Hoch = %2 +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Rauschen: Mittelwert = --- Hoch = --- +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Kachelgröße = %1 Zentrum: Tx = %2 Ty = %2 +TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Delta-Chrominanz Rot / Grün TP_DIRPYRDENOISE_ENH;Erweiterter Modus TP_DIRPYRDENOISE_ENH_TOOLTIP;Erhöht die Qualität der Rauschreduzierung auf Kosten einer um 20% erhöhten Verarbeitungszeit. -TP_DIRPYRDENOISE_GAMMA;Gamma -TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Mit Gamma kann die Intensität der\nRauschreduzierung über den Farbbereich\nvariiert werden. Bei kleinen Werten sind\nnur dunkle Farbtöne betroffen, bei\ngrößeren Werten wird der Effekt auf\nhellere Töne ausgeweitet. -TP_DIRPYRDENOISE_LAB;L*a*b* -TP_DIRPYRDENOISE_LABEL;Rauschreduzierung -TP_DIRPYRDENOISE_LABM;L*a*b* -TP_DIRPYRDENOISE_LCURVE;Luminanzkurve -TP_DIRPYRDENOISE_LDETAIL;Luminanzdetails -TP_DIRPYRDENOISE_LM;Nur Luminanz -TP_DIRPYRDENOISE_LPLABM;Gewichtet L* (wenig) + a*b* (normal) -TP_DIRPYRDENOISE_LTYPE;Luminanzkontrolle -TP_DIRPYRDENOISE_LUMA;Luminanz -TP_DIRPYRDENOISE_LUMAFR;Luminanz -TP_DIRPYRDENOISE_MAN;Benutzerdefiniert -TP_DIRPYRDENOISE_MANU;Benutzerdefiniert -TP_DIRPYRDENOISE_MED;Medianfilter -TP_DIRPYRDENOISE_MEDMETHOD;Medianmethode -TP_DIRPYRDENOISE_MEDTYPE;Mediantyp -TP_DIRPYRDENOISE_METHOD;Methode -TP_DIRPYRDENOISE_METHOD11;Qualität -TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Einstellung der Qualität der Rauschreduzierung.\nDie Einstellung “Hoch“ verbessert die Rausch-\nreduzierung auf Kosten der Verarbeitungszeit. -TP_DIRPYRDENOISE_METHOD_TOOLTIP;Für RAW-Bilder kann entweder die RGB-\noder L*a*b*-Methode verwendet werden.\n\nFür andere Bilder wird unabhängig von der\nAuswahl immer die L*a*b*-Methode verwendet. -TP_DIRPYRDENOISE_METM_TOOLTIP;Bei der Methode “Nur Luminanz“ und “L*a*b*“,\nwird der Medianfilter nach den Waveletschritten\nverarbeitet.\nBei RGB wird der Medianfilter am Ende der\nRauschreduzierung verarbeitet. -TP_DIRPYRDENOISE_MET_TOOLTIP;Einen Medianfilter mit der gewünschten Fenstergröße auswählen.\nJe größer das Fenster, umso länger dauert die Verarbeitungszeit.\n\n3×3 weich: Nutzt 5 Pixel in einem 3×3-Pixelfenster.\n3×3: Nutzt 9 Pixel in einem 3×3-Pixelfenster.\n5×5 weich: Nutzt 13 Pixel in einem 5×5-Pixelfenster.\n5×5: Nutzt 25 Pixel in einem 5×5-Pixelfenster.\n7×7: Nutzt 49 Pixel in einem 7×7-Pixelfenster.\n9×9: Nutzt 81 Pixel in einem 9×9-Pixelfenster.\n\nManchmal ist das Ergebnis mit einem kleineren Fenster und mehreren Iterationen besser, als mit einem größeren und nur einer Iteration. -TP_DIRPYRDENOISE_NOISELABEL;Rauschen: Mittelwert = %1 Hoch = %2 -TP_DIRPYRDENOISE_NOISELABELEMPTY;Rauschen: Mittelwert = --- Hoch = --- -TP_DIRPYRDENOISE_NRESID_TOOLTIP;Zeigt das Restrauschen des sichtbaren Bildbereichs\nin der 100%-Ansicht an.\n\n<50: Sehr wenig Rauschen\n50 - 100: Wenig Rauschen\n100 - 300: Durchschnittliches Rauschen\n>300: Hohes Rauschen\n\nDie Werte unterscheiden sich im L*a*b*- und RGB-Modus.\nDie RGB-Werte sind ungenauer, da der RGB-Modus\nLuminanz und Chrominanz nicht komplett trennt. -TP_DIRPYRDENOISE_PASSES;Medianiterationen -TP_DIRPYRDENOISE_PASSES_TOOLTIP;Manchmal führt ein kleines 3×3-Fenster mit\nmehreren Iterationen zu besseren Ergebnissen\nals ein 7×7-Fenster mit nur einer Iteration. -TP_DIRPYRDENOISE_PON;Auto-Multizonen -TP_DIRPYRDENOISE_PRE;Vorschau -TP_DIRPYRDENOISE_PREV;Vorschau -TP_DIRPYRDENOISE_PREVLABEL;Vorschaugröße = %1, Zentrum: Px = %2 Py = %2 -TP_DIRPYRDENOISE_RED;Delta-Chrominanz Rot / Grün -TP_DIRPYRDENOISE_RGB;RGB -TP_DIRPYRDENOISE_RGBM;RGB -TP_DIRPYRDENOISE_SHAL;Standard -TP_DIRPYRDENOISE_SHALBI;Hoch +TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminanzkontrolle +TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminanzkurve +TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Luminanzdetails +TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminanz +TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminanz +TP_DIRPYRDENOISE_MAIN_COLORSPACE;Farbraum +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LABEL;Rauschreduzierung +TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;Für RAW-Bilder kann entweder die RGB-\noder L*a*b*-Methode verwendet werden.\n\nFür andere Bilder wird unabhängig von der\nAuswahl immer die L*a*b*-Methode verwendet. +TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma +TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Mit Gamma kann die Intensität der\nRauschreduzierung über den Farbbereich\nvariiert werden. Bei kleinen Werten sind\nnur dunkle Farbtöne betroffen, bei\ngrößeren Werten wird der Effekt auf\nhellere Töne ausgeweitet. +TP_DIRPYRDENOISE_MAIN_MODE;Qualität +TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Hoch +TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Standard +TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;Einstellung der Qualität der Rauschreduzierung.\nDie Einstellung “Hoch“ verbessert die Rausch-\nreduzierung auf Kosten der Verarbeitungszeit. +TP_DIRPYRDENOISE_MEDIAN_METHOD;Methode +TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Nur Farbe +TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Medianfilter +TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Nur Luminanz +TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;Bei der Methode “Nur Luminanz“ und “L*a*b*“,\nwird der Medianfilter nach den Waveletschritten\nverarbeitet.\nBei RGB wird der Medianfilter am Ende der\nRauschreduzierung verarbeitet. +TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Gewichtet L* (wenig) + a*b* (normal) +TP_DIRPYRDENOISE_MEDIAN_PASSES;Iterationen +TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Manchmal führt ein kleines 3×3-Fenster mit\nmehreren Iterationen zu besseren Ergebnissen\nals ein 7×7-Fenster mit nur einer Iteration. +TP_DIRPYRDENOISE_MEDIAN_TYPE;Mediantyp +TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Einen Medianfilter mit der gewünschten Fenstergröße auswählen.\nJe größer das Fenster, umso länger dauert die Verarbeitungszeit.\n\n3×3 weich: Nutzt 5 Pixel in einem 3×3-Pixelfenster.\n3×3: Nutzt 9 Pixel in einem 3×3-Pixelfenster.\n5×5 weich: Nutzt 13 Pixel in einem 5×5-Pixelfenster.\n5×5: Nutzt 25 Pixel in einem 5×5-Pixelfenster.\n7×7: Nutzt 49 Pixel in einem 7×7-Pixelfenster.\n9×9: Nutzt 81 Pixel in einem 9×9-Pixelfenster.\n\nManchmal ist das Ergebnis mit einem kleineren Fenster und mehreren Iterationen besser, als mit einem größeren und nur einer Iteration. TP_DIRPYRDENOISE_SLI;Regler -TP_DIRPYRDENOISE_TILELABEL;Kachelgröße = %1 Zentrum: Tx = %2 Ty = %2 +TP_DIRPYRDENOISE_TYPE_3X3;3×3 +TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 weich +TP_DIRPYRDENOISE_TYPE_5X5;5×5 +TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 weich +TP_DIRPYRDENOISE_TYPE_7X7;7×7 +TP_DIRPYRDENOISE_TYPE_9X9;9×9 TP_DIRPYREQUALIZER_ALGO;Hautfarbtonbereich TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fein: Ist näher an den Hautfarbtönen und minimiert den Einfluss auf andere Farben.\n\nGrob: Minimiert Artefakte. TP_DIRPYREQUALIZER_ARTIF;Artefakte reduzieren @@ -1718,6 +1719,11 @@ TP_LENSPROFILE_LABEL;Objektivkorrekturprofil TP_LENSPROFILE_USECA;CA korrigieren TP_LENSPROFILE_USEDIST;Verzeichnung korrigieren TP_LENSPROFILE_USEVIGN;Vignettierung korrigieren +TP_LOCALCONTRAST_AMOUNT;Intensität +TP_LOCALCONTRAST_DARKNESS;Dunkle Bereiche +TP_LOCALCONTRAST_LABEL;Lokaler Kontrast +TP_LOCALCONTRAST_LIGHTNESS;Helle Bereiche +TP_LOCALCONTRAST_RADIUS;Radius TP_NEUTRAL;Zurücksetzen TP_NEUTRAL_TIP;Belichtungseinstellungen auf\nneutrale Werte zurücksetzen TP_PCVIGNETTE_FEATHER;Bereich @@ -1830,6 +1836,7 @@ TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Weicher Übergang zwischen Bereichen mit und ohn TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +TP_RAW_RCD;RCD TP_RAW_SENSOR_BAYER_LABEL;Sensor mit Bayer-Matrix TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;Mit “3-Pass“ erzielt man die besten Ergebnisse\n(empfohlen bei Bildern mit niedrigen ISO-Werten).\n\nBei hohen ISO-Werten unterscheidet sich “1-Pass“\nkaum gegenüber “3-Pass“, ist aber deutlich schneller. TP_RAW_SENSOR_XTRANS_LABEL;Sensor mit X-Trans-Matrix @@ -1970,6 +1977,9 @@ TP_SHARPENMICRO_AMOUNT;Intensität TP_SHARPENMICRO_LABEL;Mikrokontrast TP_SHARPENMICRO_MATRIX;3×3-Matrix statt 5×5-Matrix TP_SHARPENMICRO_UNIFORMITY;Gleichmäßigkeit +TP_TM_FATTAL_AMOUNT;Intensität +TP_TM_FATTAL_LABEL;HDR-Dynamikkompression +TP_TM_FATTAL_THRESHOLD;Schwelle TP_VIBRANCE_AVOIDCOLORSHIFT;Farbverschiebungen vermeiden TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Hautfarbtöne @@ -2217,10 +2227,25 @@ ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! -HISTORY_MSG_488;(HDR-Dynamikkompression) -HISTORY_MSG_489;(HDR-Dynamikkompression)\nSchwelle -HISTORY_MSG_490;(HDR-Dynamikkompression)\nIntensität -PARTIALPASTE_TM_FATTAL;HDR-Dynamikkompression -TP_TM_FATTAL_AMOUNT;Intensität -TP_TM_FATTAL_LABEL;HDR-Dynamikkompression -TP_TM_FATTAL_THRESHOLD;Schwelle +BATCHQUEUE_STARTSTOPHINT;Startet / Stoppt die Verarbeitung\nder Warteschlange.\n\nTaste: Strg + s +GENERAL_SLIDER;Regler +HISTORY_MSG_173;(Rauschreduzierung)\nLuminanzdetails +HISTORY_MSG_203;(Rauschreduzierung)\nFarbraum +HISTORY_MSG_256;(Rauschreduzierung)\nMedianfilter - Mediantyp +HISTORY_MSG_297;(Rauschreduzierung)\nQualität +HISTORY_MSG_METADATA_MODE;(Metadaten)\nKopiermodus +PREFERENCES_CROP;Einstellung des Ausschnittswerkzeuges +PREFERENCES_CROP_AUTO_FIT;Automatischer Zoom des Ausschnitts +PREFERENCES_CROP_GUIDES;Hilfslinien anzeigen wenn Ausschnitt nicht verändert wird +PREFERENCES_CROP_GUIDES_FRAME;Rahmen +PREFERENCES_CROP_GUIDES_FULL;Vorgabe des Ausschnittswerkzeuges +PREFERENCES_CROP_GUIDES_NONE;Keine +PREFERENCES_EDITORCMDLINE;Benutzerdefinierte Befehlszeile +TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Erhöht / Reduziert die Intensität der\nChrominanz-Rauschreduzierung in\nAbhängigkeit der Farbsättigung. +TP_DIRPYRDENOISE_LABEL;Rauschreduzierung +TP_METADATA_EDIT;Veränderte Daten +TP_METADATA_MODE;Kopiermodus +TP_METADATA_STRIP;Keine +TP_METADATA_TUNNEL;Unveränderte Daten +TP_RAW_PIXELSHIFTONEGREEN;Benutze ein Grün +TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Benutze ein Grün anstelle des\nDurchschnitts beider Grüns für\nBereiche ohne Bewegung. diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index e4bbcacd8..7d28deffa 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -13,6 +13,7 @@ HISTORY_MSG_155;Vib - Avoid colour shift HISTORY_MSG_191;CAM02 - Colourfulness (M) HISTORY_MSG_197;CAM02 - Colour curve HISTORY_MSG_198;CAM02 - Colour curve +HISTORY_MSG_203;NR - Colour space HISTORY_MSG_221;B&W - Colour filter HISTORY_MSG_240;GF - Centre HISTORY_MSG_245;VC - Centre @@ -70,9 +71,10 @@ TP_COLORTONING_SPLITCOCO;Colour Balance Shadows/Midtones/Highlights TP_COLORTONING_SPLITLR;Saturation 2 colours TP_COLORTONING_TWO2;Special chroma '2 colours' TP_COLORTONING_TWOCOLOR_TOOLTIP;Standard chroma:\nLinear response, a* = b*.\n\nSpecial chroma:\nLinear response, a* = b*, but unbound - try under the diagonal.\n\nSpecial a* and b*:\nLinear response unbound with separate curves for a* and b*. Intended for special effects.\n\nSpecial chroma 2 colours:\nMore predictable. -TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and centre to the preview size and centre you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -TP_DIRPYRDENOISE_PREVLABEL;Preview size=%1, Centre: Px=%2 Py=%3 -TP_DIRPYRDENOISE_TILELABEL;Tile size=%1, Centre: Tx=%2 Ty=%3 +TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and centre to the preview size and centre you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Centre: Px=%2 Py=%3 +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Centre: Tx=%2 Ty=%3 +TP_DIRPYRDENOISE_MAIN_COLORSPACE;Colour space TP_DIRPYREQUALIZER_ALGO;Skin Colour Range TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: closer to the colours of the skin, minimizing the action on other colours\nLarge: avoid more artifacts. TP_DIRPYREQUALIZER_TOOLTIP;Attempts to reduce artifacts in the transitions between skin colours (hue, chroma, luma) and the rest of the image. @@ -115,7 +117,9 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !ABOUT_TAB_SPLASH;Splash !ADJUSTER_RESET_TO_DEFAULT;Reset to default !BATCHQUEUE_AUTOSTART;Auto-start +!BATCHQUEUE_AUTOSTARTHINT;Start processing automatically when a new job arrives. !BATCHQUEUE_DESTFILENAME;Path and file name +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !BATCH_PROCESSING;Batch Processing !CURVEEDITOR_AXIS_IN;I: !CURVEEDITOR_AXIS_LEFT_TAN;LT: @@ -299,12 +303,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Show unsaved images.\nShortcut: Alt-6 !FILEBROWSER_SHOWTRASHHINT;Show contents of trash.\nShortcut: Ctrl-t !FILEBROWSER_SHOWUNRANKHINT;Show unranked images.\nShortcut: 0 -!FILEBROWSER_STARTPROCESSING;Start processing -!FILEBROWSER_STARTPROCESSINGHINT;Start processing the images in the queue.\n\nShortcut: Ctrl+s -!FILEBROWSER_STOPPROCESSING;Stop processing -!FILEBROWSER_STOPPROCESSINGHINT;Stop processing the images in the queue.\n\nShortcut: Ctrl+s !FILEBROWSER_THUMBSIZE;Thumbnail size -!FILEBROWSER_TOOLTIP_STOPPROCESSING;Start processing automatically when a new job arrives. !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 !FILEBROWSER_ZOOMINHINT;Increase thumbnail size.\n\nShortcuts:\n+ - Multiple Editor Tabs Mode,\nAlt-+ - Single Editor Tab Mode. !FILEBROWSER_ZOOMOUTHINT;Decrease thumbnail size.\n\nShortcuts:\n- - Multiple Editor Tabs Mode,\nAlt-- - Single Editor Tab Mode. @@ -335,6 +334,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !GENERAL_OPEN;Open !GENERAL_PORTRAIT;Portrait !GENERAL_SAVE;Save +!GENERAL_SLIDER;Slider !GENERAL_UNCHANGED;(Unchanged) !GENERAL_WARNING;Warning !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. @@ -515,7 +515,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !HISTORY_MSG_170;Vibrance - HH curve !HISTORY_MSG_171;L*a*b* - LC curve !HISTORY_MSG_172;L*a*b* - Restrict LC -!HISTORY_MSG_173;NR - Luminance detail +!HISTORY_MSG_173;NR - Detail recovery !HISTORY_MSG_174;CIECAM02 !HISTORY_MSG_175;CAM02 - CAT02 adaptation !HISTORY_MSG_176;CAM02 - Viewing surround @@ -542,7 +542,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !HISTORY_MSG_200;CAM02 - Tone mapping !HISTORY_MSG_201;NR - Chrominance - R&G !HISTORY_MSG_202;NR - Chrominance - B&Y -!HISTORY_MSG_203;NR - Method !HISTORY_MSG_204;LMMSE enhancement steps !HISTORY_MSG_205;CAM02 - Hot/bad pixel filter !HISTORY_MSG_206;CAT02 - Auto scene luminosity @@ -591,7 +590,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !HISTORY_MSG_253;CbDL - Reduce artifacts !HISTORY_MSG_254;CbDL - Skin hue !HISTORY_MSG_255;NR - Median filter -!HISTORY_MSG_256;NR - Median type +!HISTORY_MSG_256;NR - Median - Type !HISTORY_MSG_259;CT - Opacity curve !HISTORY_MSG_260;CT - a*[b*] opacity !HISTORY_MSG_261;CT - Method @@ -630,7 +629,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !HISTORY_MSG_294;Film Simulation - Strength !HISTORY_MSG_295;Film Simulation - Film !HISTORY_MSG_296;NR - Luminance curve -!HISTORY_MSG_297;NR - Quality +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_298;Dead pixel filter !HISTORY_MSG_299;NR - Chrominance curve !HISTORY_MSG_300;- @@ -805,6 +804,15 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !HISTORY_NEWSNAPSHOT;Add !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !HISTORY_SNAPSHOT;Snapshot @@ -974,6 +982,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PARTIALPASTE_LABCURVE;L*a*b* adjustments !PARTIALPASTE_LENSGROUP;Lens Related Settings !PARTIALPASTE_LENSPROFILE;Profiled lens correction +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_METAGROUP;Metadata !PARTIALPASTE_PCVIGNETTE;Vignette filter !PARTIALPASTE_PERSPECTIVE;Perspective @@ -1037,6 +1046,12 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_CURVEBBOXPOS;Position of curve copy & paste buttons !PREFERENCES_CURVEBBOXPOS_ABOVE;Above !PREFERENCES_CURVEBBOXPOS_BELOW;Below @@ -1067,7 +1082,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PREFERENCES_DIROTHER;Other !PREFERENCES_DIRSELECTDLG;Select Image Directory at Startup... !PREFERENCES_DIRSOFTWARE;Installation directory -!PREFERENCES_EDITORCMDLINE;Other command line +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EDITORLAYOUT;Editor Layout !PREFERENCES_EXPAUT;Expert !PREFERENCES_EXTERNALEDITOR;External Editor @@ -1414,14 +1429,14 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_COLORAPP_TCMODE_LABEL3;Curve chroma mode !TP_COLORAPP_TCMODE_LIGHTNESS;Lightness !TP_COLORAPP_TCMODE_SATUR;Saturation -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1473,65 +1488,59 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold -!TP_DIRPYRDENOISE_3X3;3×3 -!TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft -!TP_DIRPYRDENOISE_5X5;5×5 -!TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft -!TP_DIRPYRDENOISE_7X7;7×7 -!TP_DIRPYRDENOISE_9X9;9×9 -!TP_DIRPYRDENOISE_ABM;Chroma only -!TP_DIRPYRDENOISE_AUT;Automatic global -!TP_DIRPYRDENOISE_AUTO;Automatic global -!TP_DIRPYRDENOISE_AUTO_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! -!TP_DIRPYRDENOISE_BLUE;Chrominance - Blue-Yellow -!TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CCCURVE;Chrominance curve -!TP_DIRPYRDENOISE_CHROMA;Chrominance - Master -!TP_DIRPYRDENOISE_CHROMAFR;Chrominance -!TP_DIRPYRDENOISE_CTYPE;Method -!TP_DIRPYRDENOISE_CUR;Curve -!TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -!TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. -!TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Modulates action of 'Luminance' denoise +!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! +!TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Chrominance - Blue-Yellow +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance +!TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual +!TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Chrominance - Master +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method +!TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= - +!TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Chrominance - Red-Green !TP_DIRPYRDENOISE_ENH;Enhanced mode !TP_DIRPYRDENOISE_ENH_TOOLTIP;Increases noise reduction quality at the expense of a 20% processing time increase. -!TP_DIRPYRDENOISE_GAMMA;Gamma -!TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. -!TP_DIRPYRDENOISE_LAB;L*a*b* !TP_DIRPYRDENOISE_LABEL;Noise Reduction -!TP_DIRPYRDENOISE_LABM;L*a*b* -!TP_DIRPYRDENOISE_LCURVE;Luminance curve -!TP_DIRPYRDENOISE_LDETAIL;Luminance - Detail -!TP_DIRPYRDENOISE_LM;Luminance only -!TP_DIRPYRDENOISE_LPLABM;Weighted L* (little) + a*b* (normal) -!TP_DIRPYRDENOISE_LTYPE;Luminance control -!TP_DIRPYRDENOISE_LUMA;Luminance -!TP_DIRPYRDENOISE_LUMAFR;Luminance -!TP_DIRPYRDENOISE_MAN;Manual -!TP_DIRPYRDENOISE_MANU;Manual -!TP_DIRPYRDENOISE_MED;Median Filter -!TP_DIRPYRDENOISE_MEDMETHOD;Median method -!TP_DIRPYRDENOISE_MEDTYPE;Median type -!TP_DIRPYRDENOISE_METHOD;Method -!TP_DIRPYRDENOISE_METHOD11;Quality -!TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Quality can be adapted to the noise pattern. A setting of "high" increases the noise reduction effect at a cost of extended processing time. -!TP_DIRPYRDENOISE_METHOD_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. -!TP_DIRPYRDENOISE_METM_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. -!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_NOISELABEL;Preview noise: Mean=%1 High=%2 -!TP_DIRPYRDENOISE_NOISELABELEMPTY;Preview noise: Mean= - High= - -!TP_DIRPYRDENOISE_NRESID_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -!TP_DIRPYRDENOISE_PASSES;Median iterations -!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -!TP_DIRPYRDENOISE_PON;Auto multi-zones -!TP_DIRPYRDENOISE_PRE;Preview multi-zones -!TP_DIRPYRDENOISE_PREV;Preview -!TP_DIRPYRDENOISE_RED;Chrominance - Red-Green -!TP_DIRPYRDENOISE_RGB;RGB -!TP_DIRPYRDENOISE_RGBM;RGB -!TP_DIRPYRDENOISE_SHAL;Standard -!TP_DIRPYRDENOISE_SHALBI;High +!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control +!TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve +!TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Detail recovery +!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance +!TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminance +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. +!TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma +!TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. +!TP_DIRPYRDENOISE_MAIN_MODE;Mode +!TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressive +!TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Conservative +!TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Conservative" preserves low frequency chroma patterns, while "aggressive" obliterates them. +!TP_DIRPYRDENOISE_MEDIAN_METHOD;Median method +!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median Filter +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Luminance only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +!TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. +!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) +!TP_DIRPYRDENOISE_MEDIAN_PASSES;Median iterations +!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_DIRPYRDENOISE_MEDIAN_TYPE;Median type +!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. !TP_DIRPYRDENOISE_SLI;Slider +!TP_DIRPYRDENOISE_TYPE_3X3;3×3 +!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft +!TP_DIRPYRDENOISE_TYPE_5X5;5×5 +!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft +!TP_DIRPYRDENOISE_TYPE_7X7;7×7 +!TP_DIRPYRDENOISE_TYPE_9X9;9×9 !TP_DIRPYREQUALIZER_ARTIF;Reduce artifacts !TP_DIRPYREQUALIZER_HUESKIN;Skin hue !TP_DIRPYREQUALIZER_HUESKIN_TOOLTIP;This pyramid is for the upper part, so far as the algorithm at its maximum efficiency.\nTo the lower part, the transition zones.\nIf you need to move the area significantly to the left or right - or if there are artifacts: the white balance is incorrect\nYou can slightly reduce the zone to prevent the rest of the image is affected. @@ -1690,6 +1699,15 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_LENSPROFILE_USECA;Chromatic aberration correction !TP_LENSPROFILE_USEDIST;Distortion correction !TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged !TP_NEUTRAL;Reset !TP_NEUTRAL_TIP;Resets exposure sliders to neutral values.\nApplies to the same controls that Auto Levels applies to, regardless of whether you used Auto Levels or not. !TP_PCVIGNETTE_FEATHER;Feather @@ -1738,7 +1756,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_RAW_DMETHOD;Method !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... -!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast !TP_RAW_HD;Threshold @@ -1746,7 +1764,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_RAW_HPHD;HPHD !TP_RAW_IGV;IGV !TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_LABEL;Demosaicing !TP_RAW_LMMSE;LMMSE !TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps @@ -1786,6 +1804,8 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal !TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical !TP_RAW_PIXELSHIFTNREADISO;nRead +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. !TP_RAW_PIXELSHIFTPRNU;PRNU (%) !TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight !TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -1799,6 +1819,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue !TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green !TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +!TP_RAW_RCD;RCD !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index 31093bc2b..9173517cf 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -10,7 +10,9 @@ !ABOUT_TAB_SPLASH;Splash !ADJUSTER_RESET_TO_DEFAULT;Reset to default !BATCHQUEUE_AUTOSTART;Auto-start +!BATCHQUEUE_AUTOSTARTHINT;Start processing automatically when a new job arrives. !BATCHQUEUE_DESTFILENAME;Path and file name +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !BATCH_PROCESSING;Batch Processing !CURVEEDITOR_AXIS_IN;I: !CURVEEDITOR_AXIS_LEFT_TAN;LT: @@ -198,12 +200,7 @@ !FILEBROWSER_SHOWTRASHHINT;Show contents of trash.\nShortcut: Ctrl-t !FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0 !FILEBROWSER_SHOWUNRANKHINT;Show unranked images.\nShortcut: 0 -!FILEBROWSER_STARTPROCESSING;Start processing -!FILEBROWSER_STARTPROCESSINGHINT;Start processing the images in the queue.\n\nShortcut: Ctrl+s -!FILEBROWSER_STOPPROCESSING;Stop processing -!FILEBROWSER_STOPPROCESSINGHINT;Stop processing the images in the queue.\n\nShortcut: Ctrl+s !FILEBROWSER_THUMBSIZE;Thumbnail size -!FILEBROWSER_TOOLTIP_STOPPROCESSING;Start processing automatically when a new job arrives. !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 !FILEBROWSER_ZOOMINHINT;Increase thumbnail size.\n\nShortcuts:\n+ - Multiple Editor Tabs Mode,\nAlt-+ - Single Editor Tab Mode. !FILEBROWSER_ZOOMOUTHINT;Decrease thumbnail size.\n\nShortcuts:\n- - Multiple Editor Tabs Mode,\nAlt-- - Single Editor Tab Mode. @@ -235,6 +232,7 @@ !GENERAL_OPEN;Open !GENERAL_PORTRAIT;Portrait !GENERAL_SAVE;Save +!GENERAL_SLIDER;Slider !GENERAL_UNCHANGED;(Unchanged) !GENERAL_WARNING;Warning !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. @@ -422,7 +420,7 @@ !HISTORY_MSG_170;Vibrance - HH curve !HISTORY_MSG_171;L*a*b* - LC curve !HISTORY_MSG_172;L*a*b* - Restrict LC -!HISTORY_MSG_173;NR - Luminance detail +!HISTORY_MSG_173;NR - Detail recovery !HISTORY_MSG_174;CIECAM02 !HISTORY_MSG_175;CAM02 - CAT02 adaptation !HISTORY_MSG_176;CAM02 - Viewing surround @@ -452,7 +450,7 @@ !HISTORY_MSG_200;CAM02 - Tone mapping !HISTORY_MSG_201;NR - Chrominance - R&G !HISTORY_MSG_202;NR - Chrominance - B&Y -!HISTORY_MSG_203;NR - Method +!HISTORY_MSG_203;NR - Color space !HISTORY_MSG_204;LMMSE enhancement steps !HISTORY_MSG_205;CAM02 - Hot/bad pixel filter !HISTORY_MSG_206;CAT02 - Auto scene luminosity @@ -504,7 +502,7 @@ !HISTORY_MSG_253;CbDL - Reduce artifacts !HISTORY_MSG_254;CbDL - Skin hue !HISTORY_MSG_255;NR - Median filter -!HISTORY_MSG_256;NR - Median type +!HISTORY_MSG_256;NR - Median - Type !HISTORY_MSG_257;Color Toning !HISTORY_MSG_258;CT - Color curve !HISTORY_MSG_259;CT - Opacity curve @@ -545,7 +543,7 @@ !HISTORY_MSG_294;Film Simulation - Strength !HISTORY_MSG_295;Film Simulation - Film !HISTORY_MSG_296;NR - Luminance curve -!HISTORY_MSG_297;NR - Quality +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_298;Dead pixel filter !HISTORY_MSG_299;NR - Chrominance curve !HISTORY_MSG_300;- @@ -723,6 +721,15 @@ !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !HISTORY_NEWSNAPSHOT;Add !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !HISTORY_SNAPSHOT;Snapshot @@ -900,6 +907,7 @@ !PARTIALPASTE_LABCURVE;L*a*b* adjustments !PARTIALPASTE_LENSGROUP;Lens Related Settings !PARTIALPASTE_LENSPROFILE;Profiled lens correction +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_METAGROUP;Metadata !PARTIALPASTE_PCVIGNETTE;Vignette filter !PARTIALPASTE_PERSPECTIVE;Perspective @@ -966,6 +974,12 @@ !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_CURVEBBOXPOS;Position of curve copy & paste buttons !PREFERENCES_CURVEBBOXPOS_ABOVE;Above !PREFERENCES_CURVEBBOXPOS_BELOW;Below @@ -997,7 +1011,7 @@ !PREFERENCES_DIROTHER;Other !PREFERENCES_DIRSELECTDLG;Select Image Directory at Startup... !PREFERENCES_DIRSOFTWARE;Installation directory -!PREFERENCES_EDITORCMDLINE;Other command line +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EDITORLAYOUT;Editor Layout !PREFERENCES_EXPAUT;Expert !PREFERENCES_EXTERNALEDITOR;External Editor @@ -1373,14 +1387,14 @@ !TP_COLORAPP_TCMODE_LABEL3;Curve chroma mode !TP_COLORAPP_TCMODE_LIGHTNESS;Lightness !TP_COLORAPP_TCMODE_SATUR;Saturation -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1440,68 +1454,63 @@ !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold -!TP_DIRPYRDENOISE_3X3;3×3 -!TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft -!TP_DIRPYRDENOISE_5X5;5×5 -!TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft -!TP_DIRPYRDENOISE_7X7;7×7 -!TP_DIRPYRDENOISE_9X9;9×9 -!TP_DIRPYRDENOISE_ABM;Chroma only -!TP_DIRPYRDENOISE_AUT;Automatic global -!TP_DIRPYRDENOISE_AUTO;Automatic global -!TP_DIRPYRDENOISE_AUTO_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! -!TP_DIRPYRDENOISE_BLUE;Chrominance - Blue-Yellow -!TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CCCURVE;Chrominance curve -!TP_DIRPYRDENOISE_CHROMA;Chrominance - Master -!TP_DIRPYRDENOISE_CHROMAFR;Chrominance -!TP_DIRPYRDENOISE_CTYPE;Method -!TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CUR;Curve -!TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -!TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. -!TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Modulates action of 'Luminance' denoise +!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! +!TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Chrominance - Blue-Yellow +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance +!TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual +!TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Chrominance - Master +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method +!TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Center: Px=%2 Py=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= - +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Chrominance - Red-Green !TP_DIRPYRDENOISE_ENH;Enhanced mode !TP_DIRPYRDENOISE_ENH_TOOLTIP;Increases noise reduction quality at the expense of a 20% processing time increase. -!TP_DIRPYRDENOISE_GAMMA;Gamma -!TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. -!TP_DIRPYRDENOISE_LAB;L*a*b* !TP_DIRPYRDENOISE_LABEL;Noise Reduction -!TP_DIRPYRDENOISE_LABM;L*a*b* -!TP_DIRPYRDENOISE_LCURVE;Luminance curve -!TP_DIRPYRDENOISE_LDETAIL;Luminance - Detail -!TP_DIRPYRDENOISE_LM;Luminance only -!TP_DIRPYRDENOISE_LPLABM;Weighted L* (little) + a*b* (normal) -!TP_DIRPYRDENOISE_LTYPE;Luminance control -!TP_DIRPYRDENOISE_LUMA;Luminance -!TP_DIRPYRDENOISE_LUMAFR;Luminance -!TP_DIRPYRDENOISE_MAN;Manual -!TP_DIRPYRDENOISE_MANU;Manual -!TP_DIRPYRDENOISE_MED;Median Filter -!TP_DIRPYRDENOISE_MEDMETHOD;Median method -!TP_DIRPYRDENOISE_MEDTYPE;Median type -!TP_DIRPYRDENOISE_METHOD;Method -!TP_DIRPYRDENOISE_METHOD11;Quality -!TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Quality can be adapted to the noise pattern. A setting of "high" increases the noise reduction effect at a cost of extended processing time. -!TP_DIRPYRDENOISE_METHOD_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. -!TP_DIRPYRDENOISE_METM_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. -!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_NOISELABEL;Preview noise: Mean=%1 High=%2 -!TP_DIRPYRDENOISE_NOISELABELEMPTY;Preview noise: Mean= - High= - -!TP_DIRPYRDENOISE_NRESID_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -!TP_DIRPYRDENOISE_PASSES;Median iterations -!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -!TP_DIRPYRDENOISE_PON;Auto multi-zones -!TP_DIRPYRDENOISE_PRE;Preview multi-zones -!TP_DIRPYRDENOISE_PREV;Preview -!TP_DIRPYRDENOISE_PREVLABEL;Preview size=%1, Center: Px=%2 Py=%3 -!TP_DIRPYRDENOISE_RED;Chrominance - Red-Green -!TP_DIRPYRDENOISE_RGB;RGB -!TP_DIRPYRDENOISE_RGBM;RGB -!TP_DIRPYRDENOISE_SHAL;Standard -!TP_DIRPYRDENOISE_SHALBI;High +!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control +!TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve +!TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Detail recovery +!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance +!TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminance +!TP_DIRPYRDENOISE_MAIN_COLORSPACE;Color space +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. +!TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma +!TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. +!TP_DIRPYRDENOISE_MAIN_MODE;Mode +!TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressive +!TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Conservative +!TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Conservative" preserves low frequency chroma patterns, while "aggressive" obliterates them. +!TP_DIRPYRDENOISE_MEDIAN_METHOD;Median method +!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median Filter +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Luminance only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +!TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. +!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) +!TP_DIRPYRDENOISE_MEDIAN_PASSES;Median iterations +!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_DIRPYRDENOISE_MEDIAN_TYPE;Median type +!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. !TP_DIRPYRDENOISE_SLI;Slider -!TP_DIRPYRDENOISE_TILELABEL;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_TYPE_3X3;3×3 +!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft +!TP_DIRPYRDENOISE_TYPE_5X5;5×5 +!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft +!TP_DIRPYRDENOISE_TYPE_7X7;7×7 +!TP_DIRPYRDENOISE_TYPE_9X9;9×9 !TP_DIRPYREQUALIZER_ALGO;Skin Color Range !TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: closer to the colors of the skin, minimizing the action on other colors\nLarge: avoid more artifacts. !TP_DIRPYREQUALIZER_ARTIF;Reduce artifacts @@ -1677,6 +1686,15 @@ !TP_LENSPROFILE_USECA;Chromatic aberration correction !TP_LENSPROFILE_USEDIST;Distortion correction !TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged !TP_NEUTRAL;Reset !TP_NEUTRAL_TIP;Resets exposure sliders to neutral values.\nApplies to the same controls that Auto Levels applies to, regardless of whether you used Auto Levels or not. !TP_PCVIGNETTE_FEATHER;Feather @@ -1727,7 +1745,7 @@ !TP_RAW_DMETHOD;Method !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... -!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_EAHD;EAHD !TP_RAW_FALSECOLOR;False color suppression steps !TP_RAW_FAST;Fast @@ -1736,7 +1754,7 @@ !TP_RAW_HPHD;HPHD !TP_RAW_IGV;IGV !TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_LABEL;Demosaicing !TP_RAW_LMMSE;LMMSE !TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps @@ -1776,6 +1794,8 @@ !TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal !TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical !TP_RAW_PIXELSHIFTNREADISO;nRead +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. !TP_RAW_PIXELSHIFTPRNU;PRNU (%) !TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight !TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -1789,6 +1809,7 @@ !TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue !TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green !TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +!TP_RAW_RCD;RCD !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index ec6dcfb37..1973c1bcc 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -68,6 +68,7 @@ ABOUT_TAB_RELEASENOTES;Notas de la versión ABOUT_TAB_SPLASH;Splash ADJUSTER_RESET_TO_DEFAULT;Restablece los valores predeterminados BATCHQUEUE_AUTOSTART;Inicio automático +BATCHQUEUE_AUTOSTARTHINT;Iniciar automáticamente el procesamiento en cuanto llega un nuevo trabajo BATCHQUEUE_DESTFILENAME;Ruta y nombre del archivo BATCH_PROCESSING;Proceso por lotes CURVEEDITOR_CURVE;Curva @@ -230,12 +231,7 @@ FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Mostrar imágenes no guardadas recientement FILEBROWSER_SHOWTRASHHINT;Mostrar el contenido de la papelera.\nAtajo: Ctrl-t FILEBROWSER_SHOWUNCOLORHINT;Mostrar imágenes sin etiqueta de color.\nAtajo: Alt-0 FILEBROWSER_SHOWUNRANKHINT;Mostrar imágenes sin rango.\nAtajo: 0 -FILEBROWSER_STARTPROCESSING;Iniciar procesamiento -FILEBROWSER_STARTPROCESSINGHINT;Iniciar el procesamiento de imágenes en la cola -FILEBROWSER_STOPPROCESSING;Parar procesamiento -FILEBROWSER_STOPPROCESSINGHINT;Parar el procesamiento de imágenes en la cola FILEBROWSER_THUMBSIZE;Tamaño miniatura -FILEBROWSER_TOOLTIP_STOPPROCESSING;Iniciar automáticamente el procesamiento en cuanto llega un nuevo trabajo FILEBROWSER_UNRANK_TOOLTIP;Sin Rango\nAtajoShift - 0 FILEBROWSER_ZOOMINHINT;Agrandar miniatura.\nAtajo: +\n\nAtajo en modo editor simple: Alt-+ FILEBROWSER_ZOOMOUTHINT;Reducir miniatura.\nAtajo: -\n\nAtajo en modo editor simple: Alt-- @@ -442,7 +438,6 @@ HISTORY_MSG_169;Curva 'CM' HISTORY_MSG_170;Vib - Curva HISTORY_MSG_171;Curva 'LC' HISTORY_MSG_172;Lab - Restringe 'LC' -HISTORY_MSG_173;RR - Detalle en luminancia HISTORY_MSG_174;CIECAM02 HISTORY_MSG_175;CAM02 - Adaptación CAT02 HISTORY_MSG_176;CAM02 - Entorno de visualización @@ -472,7 +467,6 @@ HISTORY_MSG_199;CAM02 - Histogramas de salida HISTORY_MSG_200;CAMO2 - Mapeo tonal HISTORY_MSG_201;RR - Crominancia Ro,Ve HISTORY_MSG_202;RR - Crominancia Az,Am -HISTORY_MSG_203;RR - Método HISTORY_MSG_204;Pasos de mejora LMMSE HISTORY_MSG_205;CAM02 - Píxel caliente/muerto HISTORY_MSG_206;CAT02 - Luz de escena auto. @@ -524,7 +518,6 @@ HISTORY_MSG_252;CbDL - Tono de piel HISTORY_MSG_253;CbDL - Reducir elementos extraños HISTORY_MSG_254;CbDL - Matiz de piel HISTORY_MSG_255;RR - Filtro Median -HISTORY_MSG_256;RR - Tipo Median HISTORY_MSG_257;Tonificación de Color HISTORY_MSG_258;TC - Color HISTORY_MSG_259;TC - Opacidad @@ -565,7 +558,6 @@ HISTORY_MSG_293;Simulación de Fílmico HISTORY_MSG_294;Simulación de Fílmico - Intensidad HISTORY_MSG_295;Simulación de Fílmico - Filme HISTORY_MSG_296;RR - Modular luminancia -HISTORY_MSG_297;RR - Calidad HISTORY_MSG_298;Filtro Pixel Muerto HISTORY_NEWSNAPSHOT;Agregar HISTORY_NEWSNAPSHOT_TOOLTIP;Atajo: Alt-s @@ -770,7 +762,6 @@ PREFERENCES_DIRLAST;Última carpeta visitada PREFERENCES_DIROTHER;Otro PREFERENCES_DIRSELECTDLG;Seleccionar carpeta de imágenes en el arranque... PREFERENCES_DIRSOFTWARE;Carpeta de instalación -PREFERENCES_EDITORCMDLINE;Otra línea de comando PREFERENCES_EDITORLAYOUT;Disposición del editor PREFERENCES_EXTERNALEDITOR;Editor externo PREFERENCES_FBROWSEROPTS;Opciones del explorador de archivos/Miniaturas @@ -1127,33 +1118,32 @@ TP_DARKFRAME_LABEL;Toma Negra TP_DEFRINGE_LABEL;Quitar borde púrpura TP_DEFRINGE_RADIUS;Radio TP_DEFRINGE_THRESHOLD;Umbral -TP_DIRPYRDENOISE_BLUE;Crominancia: Azul-Amarillo -TP_DIRPYRDENOISE_CHROMA;Crominancia: Maestra -TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Modula la acción de eliminación de ruido 'de luminancia' +TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Crominancia: Azul-Amarillo +TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Crominancia: Maestra +TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Crominancia: Rojo-Verde TP_DIRPYRDENOISE_ENH;Modo mejorado TP_DIRPYRDENOISE_ENH_TOOLTIP;Incrementa la calidad de la Reducción de Ruido a costa de un incremento de 20% en el tiempo de procesamiento -TP_DIRPYRDENOISE_GAMMA;Gamma -TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gamma hace variar la fuerza de reducción del ruido a lo largo del rango tonal.\n\n Valores pequeños dirigen la reducción hacia las sombras, mientras que valores grandes extienden el efecto hasta los tonos brillantes -TP_DIRPYRDENOISE_LABEL;Reducción de ruido -TP_DIRPYRDENOISE_LABM;Lab -TP_DIRPYRDENOISE_LCURVE;Curva de Luminancia -TP_DIRPYRDENOISE_LDETAIL;Detalle en luminancia -TP_DIRPYRDENOISE_LM;Sólo luminancia -TP_DIRPYRDENOISE_LUMA;Luminancia -TP_DIRPYRDENOISE_MED;Median -TP_DIRPYRDENOISE_MEDMETHOD;Método Median -TP_DIRPYRDENOISE_MEDTYPE;Tipo Median -TP_DIRPYRDENOISE_METHOD;Método -TP_DIRPYRDENOISE_METHOD11;Calidad -TP_DIRPYRDENOISE_METHOD11_TOOLTIP;La Calidad puede ser adaptada a un patrón de ruido. Al seleccionar "Alto" se incrementa el efecto de reducción de ruido a costa de prolongar el tiempo de procesamiento. -TP_DIRPYRDENOISE_METHOD_TOOLTIP;Para imágenes raw puede usar tanto el método RGB como el Lab.\n\nPara imágenes no raw el método Lab será usado de todas maneras, ignorando el método seleccionado. -TP_DIRPYRDENOISE_METM_TOOLTIP;Cuando se utiliza "Sólo Luminancia" y los métodos "Lab", el filtro Median será aplicado inmediatamente después de cada proceso de toda la cadena de reducción de ruido.\nCuando se utiliza el modo "RGB", el filtro Median se aplicará al final de toda la cadena de procesos de reducción de ruido. -TP_DIRPYRDENOISE_PASSES;Iteracciones Median -TP_DIRPYRDENOISE_RED;Crominancia: Rojo-Verde -TP_DIRPYRDENOISE_RGB;RGB -TP_DIRPYRDENOISE_RGBM;RGB -TP_DIRPYRDENOISE_SHAL;Estándar -TP_DIRPYRDENOISE_SHALBI;Alto +TP_DIRPYRDENOISE_LUMINANCE_CURVE;Curva de Luminancia +TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Detalle en luminancia +TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminancia +TP_DIRPYRDENOISE_MAIN_COLORSPACE;Método +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LABEL;Reducción de ruido +TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;Para imágenes raw puede usar tanto el método RGB como el Lab.\n\nPara imágenes no raw el método Lab será usado de todas maneras, ignorando el método seleccionado. +TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma +TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma hace variar la fuerza de reducción del ruido a lo largo del rango tonal.\n\n Valores pequeños dirigen la reducción hacia las sombras, mientras que valores grandes extienden el efecto hasta los tonos brillantes +TP_DIRPYRDENOISE_MAIN_MODE;Calidad +TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Alto +TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Estándar +TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;La Calidad puede ser adaptada a un patrón de ruido. Al seleccionar "Alto" se incrementa el efecto de reducción de ruido a costa de prolongar el tiempo de procesamiento. +TP_DIRPYRDENOISE_MEDIAN_METHOD;Método Median +TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;Lab +TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median +TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Sólo luminancia +TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;Cuando se utiliza "Sólo Luminancia" y los métodos "Lab", el filtro Median será aplicado inmediatamente después de cada proceso de toda la cadena de reducción de ruido.\nCuando se utiliza el modo "RGB", el filtro Median se aplicará al final de toda la cadena de procesos de reducción de ruido. +TP_DIRPYRDENOISE_MEDIAN_PASSES;Iteracciones Median +TP_DIRPYRDENOISE_MEDIAN_TYPE;Tipo Median TP_DIRPYREQUALIZER_ALGO;Rango de Color de Piel TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fino: cercano a los colores de la piel, minimizando la acción en otros colores\nAmplio: evita más elementos extraños. TP_DIRPYREQUALIZER_HUESKIN;Matiz de la piel @@ -1497,6 +1487,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !CURVEEDITOR_AXIS_IN;I: !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: @@ -1533,8 +1524,13 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !GENERAL_APPLY;Apply !GENERAL_ASIMAGE;As Image !GENERAL_OPEN;Open +!GENERAL_SLIDER;Slider !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. !HISTORY_MSG_166;Exposure - Reset +!HISTORY_MSG_173;NR - Detail recovery +!HISTORY_MSG_203;NR - Color space +!HISTORY_MSG_256;NR - Median - Type +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_299;NR - Chrominance curve !HISTORY_MSG_300;- !HISTORY_MSG_301;NR - Luma control @@ -1711,6 +1707,15 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1757,6 +1762,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !NAVIGATOR_V;V: !PARTIALPASTE_EQUALIZER;Wavelet levels !PARTIALPASTE_GRADIENT;Graduated filter +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAW_IMAGENUM;Sub-image @@ -1775,6 +1781,12 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CMMBPC;Black point compensation +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_CURVEBBOXPOS;Position of curve copy & paste buttons !PREFERENCES_CURVEBBOXPOS_ABOVE;Above !PREFERENCES_CURVEBBOXPOS_BELOW;Below @@ -1784,6 +1796,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4 !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_DIRECTORIES;Directories +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EXPAUT;Expert !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. @@ -1864,48 +1877,45 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 -!TP_DIRPYRDENOISE_3X3;3×3 -!TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft -!TP_DIRPYRDENOISE_5X5;5×5 -!TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft -!TP_DIRPYRDENOISE_7X7;7×7 -!TP_DIRPYRDENOISE_9X9;9×9 -!TP_DIRPYRDENOISE_ABM;Chroma only -!TP_DIRPYRDENOISE_AUT;Automatic global -!TP_DIRPYRDENOISE_AUTO;Automatic global -!TP_DIRPYRDENOISE_AUTO_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! -!TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CCCURVE;Chrominance curve -!TP_DIRPYRDENOISE_CHROMAFR;Chrominance -!TP_DIRPYRDENOISE_CTYPE;Method -!TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CUR;Curve -!TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -!TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. -!TP_DIRPYRDENOISE_LAB;L*a*b* -!TP_DIRPYRDENOISE_LPLABM;Weighted L* (little) + a*b* (normal) -!TP_DIRPYRDENOISE_LTYPE;Luminance control -!TP_DIRPYRDENOISE_LUMAFR;Luminance -!TP_DIRPYRDENOISE_MAN;Manual -!TP_DIRPYRDENOISE_MANU;Manual -!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_NOISELABEL;Preview noise: Mean=%1 High=%2 -!TP_DIRPYRDENOISE_NOISELABELEMPTY;Preview noise: Mean= - High= - -!TP_DIRPYRDENOISE_NRESID_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -!TP_DIRPYRDENOISE_PON;Auto multi-zones -!TP_DIRPYRDENOISE_PRE;Preview multi-zones -!TP_DIRPYRDENOISE_PREV;Preview -!TP_DIRPYRDENOISE_PREVLABEL;Preview size=%1, Center: Px=%2 Py=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance +!TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method +!TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Center: Px=%2 Py=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= - +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_LABEL;Noise Reduction +!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control +!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) +!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. !TP_DIRPYRDENOISE_SLI;Slider -!TP_DIRPYRDENOISE_TILELABEL;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_TYPE_3X3;3×3 +!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft +!TP_DIRPYRDENOISE_TYPE_5X5;5×5 +!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft +!TP_DIRPYRDENOISE_TYPE_7X7;7×7 +!TP_DIRPYRDENOISE_TYPE_9X9;9×9 !TP_DIRPYREQUALIZER_ARTIF;Reduce artifacts !TP_DISTORTION_AUTO_TIP;Automatically corrects lens distortion in raw files by matching it against the embedded JPEG image if one exists and has had its lens disortion auto-corrected by the camera. !TP_EPD_GAMMA;Gamma @@ -1924,6 +1934,15 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !TP_ICM_SAVEREFERENCE_APPLYWB;Apply white balance !TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles. !TP_LABCURVE_CURVEEDITOR_CC;CC +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged !TP_NEUTRAL;Reset !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. @@ -1940,7 +1959,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !TP_RAW_HPHD;HPHD !TP_RAW_IGV;IGV !TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_LMMSE;LMMSE !TP_RAW_MONO;Mono !TP_RAW_NONE;None (Shows sensor pattern) @@ -1977,6 +1996,8 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal !TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical !TP_RAW_PIXELSHIFTNREADISO;nRead +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. !TP_RAW_PIXELSHIFTPRNU;PRNU (%) !TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight !TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -1990,6 +2011,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue !TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green !TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +!TP_RAW_RCD;RCD !TP_RAW_VNG4;VNG4 !TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL !TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index 8718554f5..0fd7866a6 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -58,10 +58,6 @@ FILEBROWSER_SHOWRANK4HINT;Show images ranked as 4 star FILEBROWSER_SHOWRANK5HINT;Show images ranked as 5 star FILEBROWSER_SHOWTRASHHINT;Show content of the trash FILEBROWSER_SHOWUNRANKHINT;Show unranked images -FILEBROWSER_STARTPROCESSING;Start Processing -FILEBROWSER_STARTPROCESSINGHINT;Start processing/saving of images in the queue -FILEBROWSER_STOPPROCESSING;Stop processing -FILEBROWSER_STOPPROCESSINGHINT;Stop processing of images FILEBROWSER_THUMBSIZE;Thumb. size FILEBROWSER_ZOOMINHINT;Increase thumbnail size FILEBROWSER_ZOOMOUTHINT;Decrease thumbnail size @@ -249,7 +245,6 @@ PREFERENCES_DIRLAST;Azkena ikusitako karpeta PREFERENCES_DIROTHER;Besterik PREFERENCES_DIRSELECTDLG;Abioko irudien karpeta hautatu... PREFERENCES_DIRSOFTWARE;Inatalazio karpeta -PREFERENCES_EDITORCMDLINE;Other command line PREFERENCES_EXTERNALEDITOR;External editor PREFERENCES_FBROWSEROPTS;Arakatzailearen aukerak PREFERENCES_FILEFORMAT;Artxiboen formatua @@ -427,7 +422,9 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !ABOUT_TAB_RELEASENOTES;Release Notes !ABOUT_TAB_SPLASH;Splash !BATCHQUEUE_AUTOSTART;Auto-start +!BATCHQUEUE_AUTOSTARTHINT;Start processing automatically when a new job arrives. !BATCHQUEUE_DESTFILENAME;Path and file name +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !BATCH_PROCESSING;Batch Processing !CURVEEDITOR_AXIS_IN;I: !CURVEEDITOR_AXIS_LEFT_TAN;LT: @@ -558,7 +555,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !FILEBROWSER_SHOWRECENTLYSAVEDHINT;Show saved images.\nShortcut: Alt-7 !FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Show unsaved images.\nShortcut: Alt-6 !FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0 -!FILEBROWSER_TOOLTIP_STOPPROCESSING;Start processing automatically when a new job arrives. !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 !FILECHOOSER_FILTER_ANY;All files !FILECHOOSER_FILTER_COLPROF;Color profiles @@ -576,6 +572,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open +!GENERAL_SLIDER;Slider !GENERAL_UNCHANGED;(Unchanged) !GENERAL_WARNING;Warning !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. @@ -674,7 +671,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !HISTORY_MSG_170;Vibrance - HH curve !HISTORY_MSG_171;L*a*b* - LC curve !HISTORY_MSG_172;L*a*b* - Restrict LC -!HISTORY_MSG_173;NR - Luminance detail +!HISTORY_MSG_173;NR - Detail recovery !HISTORY_MSG_174;CIECAM02 !HISTORY_MSG_175;CAM02 - CAT02 adaptation !HISTORY_MSG_176;CAM02 - Viewing surround @@ -704,7 +701,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !HISTORY_MSG_200;CAM02 - Tone mapping !HISTORY_MSG_201;NR - Chrominance - R&G !HISTORY_MSG_202;NR - Chrominance - B&Y -!HISTORY_MSG_203;NR - Method +!HISTORY_MSG_203;NR - Color space !HISTORY_MSG_204;LMMSE enhancement steps !HISTORY_MSG_205;CAM02 - Hot/bad pixel filter !HISTORY_MSG_206;CAT02 - Auto scene luminosity @@ -756,7 +753,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !HISTORY_MSG_253;CbDL - Reduce artifacts !HISTORY_MSG_254;CbDL - Skin hue !HISTORY_MSG_255;NR - Median filter -!HISTORY_MSG_256;NR - Median type +!HISTORY_MSG_256;NR - Median - Type !HISTORY_MSG_257;Color Toning !HISTORY_MSG_258;CT - Color curve !HISTORY_MSG_259;CT - Opacity curve @@ -797,7 +794,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !HISTORY_MSG_294;Film Simulation - Strength !HISTORY_MSG_295;Film Simulation - Film !HISTORY_MSG_296;NR - Luminance curve -!HISTORY_MSG_297;NR - Quality +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_298;Dead pixel filter !HISTORY_MSG_299;NR - Chrominance curve !HISTORY_MSG_300;- @@ -975,6 +972,15 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -1092,6 +1098,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PARTIALPASTE_IMPULSEDENOISE;Impulse noise reduction !PARTIALPASTE_LABCURVE;L*a*b* adjustments !PARTIALPASTE_LENSPROFILE;Profiled lens correction +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_PCVIGNETTE;Vignette filter !PARTIALPASTE_PERSPECTIVE;Perspective !PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter @@ -1143,6 +1150,12 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_CURVEBBOXPOS;Position of curve copy & paste buttons !PREFERENCES_CURVEBBOXPOS_ABOVE;Above !PREFERENCES_CURVEBBOXPOS_BELOW;Below @@ -1167,6 +1180,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EDITORLAYOUT;Editor Layout !PREFERENCES_EXPAUT;Expert !PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) @@ -1460,14 +1474,14 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_COLORAPP_TCMODE_LABEL3;Curve chroma mode !TP_COLORAPP_TCMODE_LIGHTNESS;Lightness !TP_COLORAPP_TCMODE_SATUR;Saturation -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1516,68 +1530,63 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold -!TP_DIRPYRDENOISE_3X3;3×3 -!TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft -!TP_DIRPYRDENOISE_5X5;5×5 -!TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft -!TP_DIRPYRDENOISE_7X7;7×7 -!TP_DIRPYRDENOISE_9X9;9×9 -!TP_DIRPYRDENOISE_ABM;Chroma only -!TP_DIRPYRDENOISE_AUT;Automatic global -!TP_DIRPYRDENOISE_AUTO;Automatic global -!TP_DIRPYRDENOISE_AUTO_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! -!TP_DIRPYRDENOISE_BLUE;Chrominance - Blue-Yellow -!TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CCCURVE;Chrominance curve -!TP_DIRPYRDENOISE_CHROMA;Chrominance - Master -!TP_DIRPYRDENOISE_CHROMAFR;Chrominance -!TP_DIRPYRDENOISE_CTYPE;Method -!TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CUR;Curve -!TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -!TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. -!TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Modulates action of 'Luminance' denoise +!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! +!TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Chrominance - Blue-Yellow +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance +!TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual +!TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Chrominance - Master +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method +!TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Center: Px=%2 Py=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= - +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Chrominance - Red-Green !TP_DIRPYRDENOISE_ENH;Enhanced mode !TP_DIRPYRDENOISE_ENH_TOOLTIP;Increases noise reduction quality at the expense of a 20% processing time increase. -!TP_DIRPYRDENOISE_GAMMA;Gamma -!TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. -!TP_DIRPYRDENOISE_LAB;L*a*b* !TP_DIRPYRDENOISE_LABEL;Noise Reduction -!TP_DIRPYRDENOISE_LABM;L*a*b* -!TP_DIRPYRDENOISE_LCURVE;Luminance curve -!TP_DIRPYRDENOISE_LDETAIL;Luminance - Detail -!TP_DIRPYRDENOISE_LM;Luminance only -!TP_DIRPYRDENOISE_LPLABM;Weighted L* (little) + a*b* (normal) -!TP_DIRPYRDENOISE_LTYPE;Luminance control -!TP_DIRPYRDENOISE_LUMA;Luminance -!TP_DIRPYRDENOISE_LUMAFR;Luminance -!TP_DIRPYRDENOISE_MAN;Manual -!TP_DIRPYRDENOISE_MANU;Manual -!TP_DIRPYRDENOISE_MED;Median Filter -!TP_DIRPYRDENOISE_MEDMETHOD;Median method -!TP_DIRPYRDENOISE_MEDTYPE;Median type -!TP_DIRPYRDENOISE_METHOD;Method -!TP_DIRPYRDENOISE_METHOD11;Quality -!TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Quality can be adapted to the noise pattern. A setting of "high" increases the noise reduction effect at a cost of extended processing time. -!TP_DIRPYRDENOISE_METHOD_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. -!TP_DIRPYRDENOISE_METM_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. -!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_NOISELABEL;Preview noise: Mean=%1 High=%2 -!TP_DIRPYRDENOISE_NOISELABELEMPTY;Preview noise: Mean= - High= - -!TP_DIRPYRDENOISE_NRESID_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -!TP_DIRPYRDENOISE_PASSES;Median iterations -!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -!TP_DIRPYRDENOISE_PON;Auto multi-zones -!TP_DIRPYRDENOISE_PRE;Preview multi-zones -!TP_DIRPYRDENOISE_PREV;Preview -!TP_DIRPYRDENOISE_PREVLABEL;Preview size=%1, Center: Px=%2 Py=%3 -!TP_DIRPYRDENOISE_RED;Chrominance - Red-Green -!TP_DIRPYRDENOISE_RGB;RGB -!TP_DIRPYRDENOISE_RGBM;RGB -!TP_DIRPYRDENOISE_SHAL;Standard -!TP_DIRPYRDENOISE_SHALBI;High +!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control +!TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve +!TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Detail recovery +!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance +!TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminance +!TP_DIRPYRDENOISE_MAIN_COLORSPACE;Color space +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. +!TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma +!TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. +!TP_DIRPYRDENOISE_MAIN_MODE;Mode +!TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressive +!TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Conservative +!TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Conservative" preserves low frequency chroma patterns, while "aggressive" obliterates them. +!TP_DIRPYRDENOISE_MEDIAN_METHOD;Median method +!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median Filter +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Luminance only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +!TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. +!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) +!TP_DIRPYRDENOISE_MEDIAN_PASSES;Median iterations +!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_DIRPYRDENOISE_MEDIAN_TYPE;Median type +!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. !TP_DIRPYRDENOISE_SLI;Slider -!TP_DIRPYRDENOISE_TILELABEL;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_TYPE_3X3;3×3 +!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft +!TP_DIRPYRDENOISE_TYPE_5X5;5×5 +!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft +!TP_DIRPYRDENOISE_TYPE_7X7;7×7 +!TP_DIRPYRDENOISE_TYPE_9X9;9×9 !TP_DIRPYREQUALIZER_ALGO;Skin Color Range !TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: closer to the colors of the skin, minimizing the action on other colors\nLarge: avoid more artifacts. !TP_DIRPYREQUALIZER_ARTIF;Reduce artifacts @@ -1728,6 +1737,15 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_LENSPROFILE_USECA;Chromatic aberration correction !TP_LENSPROFILE_USEDIST;Distortion correction !TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged !TP_NEUTRAL;Reset !TP_NEUTRAL_TIP;Resets exposure sliders to neutral values.\nApplies to the same controls that Auto Levels applies to, regardless of whether you used Auto Levels or not. !TP_PCVIGNETTE_FEATHER;Feather @@ -1777,7 +1795,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_RAW_DCBITERATIONS;Number of DCB iterations !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... -!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast !TP_RAW_HD;Threshold @@ -1785,7 +1803,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_RAW_HPHD;HPHD !TP_RAW_IGV;IGV !TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_LABEL;Demosaicing !TP_RAW_LMMSE;LMMSE !TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps @@ -1825,6 +1843,8 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal !TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical !TP_RAW_PIXELSHIFTNREADISO;nRead +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. !TP_RAW_PIXELSHIFTPRNU;PRNU (%) !TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight !TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -1838,6 +1858,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue !TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green !TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +!TP_RAW_RCD;RCD !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index fe26cda2d..a3bf8759a 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -7,7 +7,9 @@ ABOUT_TAB_RELEASENOTES;Notes de version ABOUT_TAB_SPLASH;Splash ADJUSTER_RESET_TO_DEFAULT;Réglages par défaut BATCHQUEUE_AUTOSTART;Démarrage auto +BATCHQUEUE_AUTOSTARTHINT;Démarrer automatiquement le traitement à l'arrivée d'une nouvelle tâche BATCHQUEUE_DESTFILENAME;Chemin et nom de fichier +BATCHQUEUE_STARTSTOPHINT;Démarre ou arrête le traitement des images dans la file.\n\nRaccourci: Ctrl+s BATCH_PROCESSING;Traitement par lot CURVEEDITOR_AXIS_IN;E: CURVEEDITOR_AXIS_LEFT_TAN;TG: @@ -195,12 +197,7 @@ FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT; Afficher les images non sauvegardées réc FILEBROWSER_SHOWTRASHHINT;Voir le contenu de la corbeille\nRaccourci: Ctrl-t FILEBROWSER_SHOWUNCOLORHINT;Afficher les images sans label de couleur\nRaccourci: Alt-0 FILEBROWSER_SHOWUNRANKHINT;Voir les images sans étoile\nRaccourci: 0 -FILEBROWSER_STARTPROCESSING;Démarrer le traitement -FILEBROWSER_STARTPROCESSINGHINT;Démarre le traitement/sauvegarde des images dans la file -FILEBROWSER_STOPPROCESSING;Arrêter le traitement -FILEBROWSER_STOPPROCESSINGHINT;Arrête le traitement des images FILEBROWSER_THUMBSIZE;Taille vign. -FILEBROWSER_TOOLTIP_STOPPROCESSING;Démarrer automatiquement le traitement à l'arrivée d'une nouvelle tâche FILEBROWSER_UNRANK_TOOLTIP;Effacer le rang\nRaccourci: Shift-0 FILEBROWSER_ZOOMINHINT;Augmenter la taille des vignettes.\nRaccourci: +\n\nRaccourcis dans le mode Éditeur Unique: Alt-+ FILEBROWSER_ZOOMOUTHINT;Diminuer la taille des vignettes.\nRaccourci: -\n\nRaccourcis dans le mode Éditeur Unique: Alt-- @@ -232,6 +229,7 @@ GENERAL_OK;OK GENERAL_OPEN;Ouvrir GENERAL_PORTRAIT;Portrait GENERAL_SAVE;Enregistrer +GENERAL_SLIDER;Curseur GENERAL_UNCHANGED;(Inchangé) GENERAL_WARNING;Attention GIMP_PLUGIN_INFO;Bienvenue dans le plugin RawTherapee de GIMP!\nUne fois l'édition terminée, fermez simplement la fenêtre principale de RawTherapee et l'image sera importée automatiquement dans GIMP. @@ -419,7 +417,7 @@ HISTORY_MSG_169;Courbe 'CT' HISTORY_MSG_170;Vib. - Courbe HISTORY_MSG_171;Courbe 'LC' HISTORY_MSG_172;Lab - Restreindre 'LC' -HISTORY_MSG_173;Réd. Bruit - Détail Luminance +HISTORY_MSG_173;Réd. de bruit - Récupération des détails HISTORY_MSG_174;Modèle d'Apparence de la Couleur 2002 HISTORY_MSG_175;CAM02 - Adaptation CAT02 HISTORY_MSG_176;CAM02 - Environ. de visionnage @@ -449,7 +447,7 @@ HISTORY_MSG_199;CAM02 - Histogrammes de sortie HISTORY_MSG_200;CAM02 - Compression tonale HISTORY_MSG_201;Réd. de bruit - Chrom. R,V HISTORY_MSG_202;Réd. de bruit - Chrom. B,J -HISTORY_MSG_203;Réd. de bruit - Méthode +HISTORY_MSG_203;Réd. de bruit - Espace couleur HISTORY_MSG_204;Niveau d'amélioration LMMSE HISTORY_MSG_205;CAM02 Pixels chauds/morts HISTORY_MSG_206;CAT02 - Luminosité de la scène auto @@ -501,7 +499,7 @@ HISTORY_MSG_252;CpND - Tons chair HISTORY_MSG_253;CpND - Réduction des artéfactes HISTORY_MSG_254;CpND - Teinte chair HISTORY_MSG_255;Réd. de bruit - Filtre médian -HISTORY_MSG_256;Réd. de bruit - Type de médiane +HISTORY_MSG_256;Réd. de bruit - Médian - Type HISTORY_MSG_257;Virage Partiel HISTORY_MSG_258;Virage Partiel - Couleur HISTORY_MSG_259;Virage Partiel - Opacité @@ -542,7 +540,7 @@ HISTORY_MSG_293;Simulation de Film HISTORY_MSG_294;Simulation de Film - Force HISTORY_MSG_295;Simulation de Film - Film HISTORY_MSG_296;Réd. de bruit - Courbe de luminance -HISTORY_MSG_297;Réd. de bruit - Qualité +HISTORY_MSG_297;Réd. de bruit - Mode HISTORY_MSG_298;Filtre de pixel mort HISTORY_MSG_299;Réd. de bruit - Courbe de chrominance HISTORY_MSG_300;- @@ -720,6 +718,17 @@ HISTORY_MSG_487;Corr. d'Obj. - Objectif HISTORY_MSG_488;Compression tonale HDR HISTORY_MSG_489;CT HDR - Seuil HISTORY_MSG_490;CT HDR - Quantité +HISTORY_MSG_491;Balances des Blancs +HISTORY_MSG_492;Courbes RVB +HISTORY_MSG_493;Ajustements L*a*b* +HISTORY_MSG_COLORTONING_LABGRID_VALUE;Virage Partiel - Correction couleur +HISTORY_MSG_HISTMATCHING;Calcul Courbe Tonale svt Aperçu +HISTORY_MSG_LOCALCONTRAST_AMOUNT;Contraste Local - Quantité +HISTORY_MSG_LOCALCONTRAST_DARKNESS;Contraste Local - Ombres +HISTORY_MSG_LOCALCONTRAST_ENABLED;Contraste Local +HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Contraste Local - H.L. +HISTORY_MSG_LOCALCONTRAST_RADIUS;Contraste Local - Rayon +HISTORY_MSG_METADATA_MODE;Mode de copie des métadonnées HISTORY_NEWSNAPSHOT;Ajouter HISTORY_NEWSNAPSHOT_TOOLTIP;Raccourci: Alt-s HISTORY_SNAPSHOT;Capture @@ -805,6 +814,8 @@ MAIN_MSG_QOVERWRITE;Voulez-vous l'écraser? MAIN_MSG_SETPATHFIRST;Vous devez d'abord choisir un dossier cible dans Préférences\npour pouvoir utiliser cette fonction! MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. MAIN_MSG_WRITEFAILED;Échec de l'enregistrement du fichier\n\n"%1"\n\nAssurez-vous que le dossier existe et qu'il est permis d'y écrire. +MAIN_TAB_ADVANCED;Avancé +MAIN_TAB_ADVANCED_TOOLTIP;Raccourci: Alt-w MAIN_TAB_COLOR;Couleur MAIN_TAB_COLOR_TOOLTIP;Raccourci:Alt-c MAIN_TAB_DETAIL;Détail @@ -859,6 +870,7 @@ NAVIGATOR_XY_FULL;Largeur = %1, Hauteur = %2 NAVIGATOR_XY_NA;x = n/d, y = n/d OPTIONS_DEFIMG_MISSING;Le profil par défaut pour les images standards n'a pas été trouvé ou n'a pas été réglé.\n\nVérifiez également le dossier de vos profils, il peut être manquant ou endommagé\n\nLes valeurs internes pas défaut seront utilisées. OPTIONS_DEFRAW_MISSING;Le profil par défaut pour les images Raw n'a pas été trouvé ou n'a pas été réglé.\n\nVérifiez également le dossier de vos profils, il peut être manquant ou endommagé\n\nLes valeurs internes pas défaut seront utilisées. +PARTIALPASTE_ADVANCEDGROUP;Réglages Avancés PARTIALPASTE_BASICGROUP;Réglages de base PARTIALPASTE_CACORRECTION;Aberration chromatique PARTIALPASTE_CHANNELMIXER;Mixage des canaux @@ -897,6 +909,8 @@ PARTIALPASTE_IPTCINFO;Infos IPTC PARTIALPASTE_LABCURVE;Courbes Lab PARTIALPASTE_LENSGROUP;Réglages de l'objectif PARTIALPASTE_LENSPROFILE;Profil de correction d'Objectif +PARTIALPASTE_LOCALCONTRAST;Contraste local +PARTIALPASTE_METADATA;Mode des Metadonnées PARTIALPASTE_METAGROUP;Réglages des Métadonnées PARTIALPASTE_PCVIGNETTE;Filtre Vignettage PARTIALPASTE_PERSPECTIVE;Perspective @@ -963,6 +977,12 @@ PREFERENCES_CLUTSCACHE;Cache HaldCLUT PREFERENCES_CLUTSCACHE_LABEL;Nombre maximum de chache CLUT PREFERENCES_CLUTSDIR;Dossier HaldCLUT PREFERENCES_CMMBPC;Compensation du point noir +PREFERENCES_CROP;Édition du recadrage +PREFERENCES_CROP_AUTO_FIT;Zommer automatiquement sur la zone recadrée +PREFERENCES_CROP_GUIDES;Guides affichés en dehors de l'édition du recadrage +PREFERENCES_CROP_GUIDES_FRAME;Cadre +PREFERENCES_CROP_GUIDES_FULL;Original +PREFERENCES_CROP_GUIDES_NONE;Aucun PREFERENCES_CURVEBBOXPOS;Position des boutons copier/coller des courbes PREFERENCES_CURVEBBOXPOS_ABOVE;Au-dessus PREFERENCES_CURVEBBOXPOS_BELOW;En-dessous @@ -994,7 +1014,7 @@ PREFERENCES_DIRLAST;Dernier dossier visité PREFERENCES_DIROTHER;Autre PREFERENCES_DIRSELECTDLG;Choix du dossier Image au lancement... PREFERENCES_DIRSOFTWARE;Dossier d'installation -PREFERENCES_EDITORCMDLINE;Autre ligne de commande +PREFERENCES_EDITORCMDLINE;Ligne de commande personnelle PREFERENCES_EDITORLAYOUT;Disposition de l'éditeur PREFERENCES_EXPAUT;Expert PREFERENCES_EXTERNALEDITOR;Éditeur externe @@ -1390,6 +1410,8 @@ TP_COLORTONING_HIGHLIGHT;Hautes lumières TP_COLORTONING_HUE;Teinte TP_COLORTONING_LAB;Mixage Lab TP_COLORTONING_LABEL;Virage Partiel +TP_COLORTONING_LABGRID;Grille de correction L*a*b* +TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nO: a=%3 b=%4 TP_COLORTONING_LUMA;Luminance TP_COLORTONING_LUMAMODE;Préserver la luminance TP_COLORTONING_LUMAMODE_TOOLTIP;Si activé, lorsque vous changez la couleur (rouge, vert, cyan, bleu, etc.), la luminance de chaque pixel est préservé @@ -1438,69 +1460,65 @@ TP_DARKFRAME_LABEL;Trame Noire TP_DEFRINGE_LABEL;Aberration chromatique TP_DEFRINGE_RADIUS;Rayon TP_DEFRINGE_THRESHOLD;Seuil -TP_DIRPYRDENOISE_3X3;3×3 -TP_DIRPYRDENOISE_3X3_SOFT;3×3 doux -TP_DIRPYRDENOISE_5X5;5×5 -TP_DIRPYRDENOISE_5X5_SOFT;5×5 doux -TP_DIRPYRDENOISE_7X7;7×7 -TP_DIRPYRDENOISE_9X9;9×9 -TP_DIRPYRDENOISE_ABM;Chroma uniquement -TP_DIRPYRDENOISE_AUT;Global automatique -TP_DIRPYRDENOISE_AUTO;Global automatique -TP_DIRPYRDENOISE_AUTO_TOOLTIP;Essaie d'évaluer le bruit chroma\nFaites attention, cela calcul une moyenne, et est très subjectif ! -TP_DIRPYRDENOISE_BLUE;Chrominance - Bleu-Jaune -TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manuel\nAgit sur l'image entière.\nVous controlez les paramètres de réduction de bruit manuellement.\n\nGlobal automatique\nAgit sur l'image entière.\n9 zones sont utilisées pour calculer un réglage de réduction de bruit de chroma.\n\nAperçu\nAgit sur l'image entière.\nLa partie visible de l'image dans l'aperçu est utilisé pour calculer un réglage de réduction de bruit de chroma. -TP_DIRPYRDENOISE_CCCURVE;Courbe de chrominance -TP_DIRPYRDENOISE_CHROMA;Chrominance - Maître -TP_DIRPYRDENOISE_CHROMAFR;Chrominance -TP_DIRPYRDENOISE_CTYPE;Méthode -TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manuel\nAgit sur l'image entière.\nVous controlez les paramètres de réduction de bruit manuellement.\n\nGlobal automatique\nAgit sur l'image entière.\n9 zones sont utilisées pour calculer un réglage de réduction de bruit de chroma.\n\nAutomatique multi-zones\nPas d'aperçu - ne fonctionne que lors de l'enregistrement, mais utiliser la méthode "Aperçu" en faisant correspondre la taille et le centre de la tuile à la taille et au centre de l'aperçu, vous permet d'avoir une idée des résultats attendus.\nL'image est divisé en tuiles (entre 10 et 70 en fonction de la taille de l'image) et chaque tuile reçoit son propre réglage de réduction de bruit de chrominance.\n\nAperçu\nAgit sur l'image entière.\nLa partie de l'image visible dans l'aperçu est utilisé pour calculer un réglage de réduction de bruit de chroma. -TP_DIRPYRDENOISE_CUR;Courbe -TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Augmente (multiplie) la valeur de tousles curseurs de chrominance.\nCette courbe vous permet d'ajuster la force de la réduction de bruit chromatique en fonction de la chromaticité, par exemple pour augmenter l'action dans les zones peu saturées et pour la réduire dans ceux celles très saturées. -TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Module l'action du débruitage de 'Luminance' +TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Multi-zones auto +TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Global automatique +TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Essaie d'évaluer le bruit chroma\nFaites attention, cela calcul une moyenne, et est très subjectif ! +TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Chrominance - Bleu-Jaune +TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Courbe de chrominance +TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Augmente (multiplie) la valeur de tous les curseurs de chrominance.\nCette courbe vous permet d'ajuster la force de la réduction de bruit chromatique en fonction de la chromaticité, par exemple pour augmenter l'action dans les zones faiblement saturées et pour la diminuer dans celles très saturées. +TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance +TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manuel +TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Chrominance - Maître +TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Méthode +TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manuel\nAgit sur l'image entière.\nVous controlez les paramètres de réduction de bruit manuellement.\n\nGlobal automatique\nAgit sur l'image entière.\n9 zones sont utilisées pour calculer un réglage de réduction de bruit de chroma.\n\nAperçu\nAgit sur l'image entière.\nLa partie visible de l'image dans l'aperçu est utilisé pour calculer un réglage de réduction de bruit de chroma. +TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manuel\nAgit sur l'image entière.\nVous controlez les paramètres de réduction de bruit manuellement.\n\nGlobal automatique\nAgit sur l'image entière.\n9 zones sont utilisées pour calculer un réglage de réduction de bruit de chroma.\n\nAutomatique multi-zones\nPas d'aperçu - ne fonctionne que lors de l'enregistrement, mais utiliser la méthode "Aperçu" en faisant correspondre la taille et le centre de la tuile à la taille et au centre de l'aperçu, vous permet d'avoir une idée des résultats attendus.\nL'image est divisé en tuiles (entre 10 et 70 en fonction de la taille de l'image) et chaque tuile reçoit son propre réglage de réduction de bruit de chrominance.\n\nAperçu\nAgit sur l'image entière.\nLa partie de l'image visible dans l'aperçu est utilisé pour calculer un réglage de réduction de bruit de chroma. +TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Aperçu multi-zones +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Aperçu +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Affiche les niveaux de bruit résiduel de la partie de l'image visible dans l'aperçu après les ondelettes.\n\n>300 Très bruité\n100-300 Bruité\n50-100 Peu bruité\n<50 Très peu bruité\n\nAttention, les valeurs diffèreront entre le mode RVB et L*a*b*. Les valeurs RVB sont moins précises car le mode RVB ne séparent pas complètement la luminance et la chrominance. +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Taille de l'aperçu=%1, Centre: Px=%2 Py=%3 +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Bruit de l'aperçu: Moyen=%1 Haut=%2 +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Bruit de l'aperçu: Moyen= - Haut= - +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Taille des tuiles =%1, Centre: Tx=%2 Ty=%3 +TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Chrominance - Rouge-Vert TP_DIRPYRDENOISE_ENH;Mode amélioré TP_DIRPYRDENOISE_ENH_TOOLTIP;Augmente la qualité du débruitage, mais augmente le temps de traitement d'environ 20% -TP_DIRPYRDENOISE_GAMMA;Gamma -TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gamma fait varier la quantité de réduction de bruit sur l'échelle des tons. Les plus petites valeurs cibleront les ombres, les plus hautes valeurs cibleront les tons les plus clairs. -TP_DIRPYRDENOISE_LAB;Lab -TP_DIRPYRDENOISE_LABEL;Réduction du bruit -TP_DIRPYRDENOISE_LABM;L*a*b* -TP_DIRPYRDENOISE_LCURVE;Courbe de luminance -TP_DIRPYRDENOISE_LDETAIL;Niveau de détails de Luminance -TP_DIRPYRDENOISE_LM;Luminance seulement -TP_DIRPYRDENOISE_LPLABM;L* pondéré (faiblement) + a*b* (normal) -TP_DIRPYRDENOISE_LTYPE;Contrôle de luminance -TP_DIRPYRDENOISE_LUMA;Luminance -TP_DIRPYRDENOISE_LUMAFR;Luminance -TP_DIRPYRDENOISE_MAN;Manuel -TP_DIRPYRDENOISE_MANU;Manuel -TP_DIRPYRDENOISE_MED;Filtre Médian -TP_DIRPYRDENOISE_MEDMETHOD;Méthode -TP_DIRPYRDENOISE_MEDTYPE;Type de médiane -TP_DIRPYRDENOISE_METHOD;Méthode -TP_DIRPYRDENOISE_METHOD11;Qualité -TP_DIRPYRDENOISE_METHOD11_TOOLTIP;La qualité peut être adapté à la trame du bruit. Régler sur "haut" augmentera l'effet de la réduction de bruit au prix d'un temps de traitement plus long. -TP_DIRPYRDENOISE_METHOD_TOOLTIP;Pour les images raw, les méthodes RVB ou Lab peuvent être utilisées.\n\nPour les images non-raw la méthode Lab sera utilisée, indépendamment de ce qu'indique ce bouton. -TP_DIRPYRDENOISE_METM_TOOLTIP;Lorsque vous utilisez les méthodes "Luminance seulement" et "Lab", un filtrage médian sera effectué juste après l'étape des ondelettes dans le pipeline de la réduction de bruit.\nEm mode "RVB", il sera effectué à la toute fin du pipeline de la réduction de bruit. -TP_DIRPYRDENOISE_MET_TOOLTIP;Applique un filtre médian de la taille de "fenêtre" désirée. Plus cette taille est grande, plus cela prendra de temps.\n\n3×3 doux: traite 5 pixels dans une fenêtre de 3×3 pixels.\n3×3: traite 9 pixels dans une fenêtre de 3×3 pixels.\n5×5 doux: traite 13 pixels dans une fenêtre de 5×5 pixels.\n5×5: traite 25 pixels dans une fenêtre de 5×5 pixels.\n7×7: traite 49 pixels dans une fenêtre de 7×7 pixels.\n9×9: traite 81 pixels dans une fenêtre 9×9 pixels.\n\nIl est parfois possible d'atteindre une meilleurs qualité en appliquant plusieurs itérations d'une petite fenêtre qu'une seule itération d'une grande. -TP_DIRPYRDENOISE_NOISELABEL;Bruit de l'aperçu: Moyen=%1 Haut=%2 -TP_DIRPYRDENOISE_NOISELABELEMPTY;Bruit de l'aperçu: Moyen= - Haut= - -TP_DIRPYRDENOISE_NRESID_TOOLTIP;Affiche les niveaux de bruit résiduel de la partie de l'image visible dans l'aperçu après les ondelettes.\n\n>300 Très bruité\n100-300 Bruité\n50-100 Peu bruité\n<50 Très peu bruité\n\nAttention, les valeurs diffèreront entre le mode RVB et L*a*b*. Les valeurs RVB sont moins précises car le mode RVB ne séparent pas complètement la luminance et la chrominance. +TP_DIRPYRDENOISE_LABEL;Réduction de Bruit +TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Contrôle de luminance +TP_DIRPYRDENOISE_LUMINANCE_CURVE;Courbe de luminance +TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Niveau de détails de Luminance +TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance +TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminance +TP_DIRPYRDENOISE_MAIN_COLORSPACE;Méthode +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;Lab +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LABEL;Réduction du bruit +TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RVB +TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;Pour les images raw, les méthodes RVB ou Lab peuvent être utilisées.\n\nPour les images non-raw la méthode Lab sera utilisée, indépendamment de ce qu'indique ce bouton. +TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma +TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma fait varier la quantité de réduction de bruit sur l'échelle des tons. Les plus petites valeurs cibleront les ombres, les plus hautes valeurs cibleront les tons les plus clairs. +TP_DIRPYRDENOISE_MAIN_MODE;Qualité +TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Haut +TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Standard +TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;La qualité peut être adapté à la trame du bruit. Régler sur "haut" augmentera l'effet de la réduction de bruit au prix d'un temps de traitement plus long. +TP_DIRPYRDENOISE_MEDIAN_METHOD;Méthode +TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma uniquement +TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Filtre Médian +TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Luminance seulement +TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RVB +TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;Lorsque vous utilisez les méthodes "Luminance seulement" et "Lab", un filtrage médian sera effectué juste après l'étape des ondelettes dans le pipeline de la réduction de bruit.\nEm mode "RVB", il sera effectué à la toute fin du pipeline de la réduction de bruit. +TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;L* pondéré (faiblement) + a*b* (normal) +TP_DIRPYRDENOISE_MEDIAN_PASSES;Itérations +TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Appliquer trois itérations avec une taille de fenêtre de 3×3 aboutit souvent à de meilleurs résultats qu'une seule itération avec une taille de fenêtre de 7×7. +TP_DIRPYRDENOISE_MEDIAN_TYPE;Type de médiane +TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Applique un filtre médian de la taille de "fenêtre" désirée. Plus cette taille est grande, plus cela prendra de temps.\n\n3×3 doux: traite 5 pixels dans une fenêtre de 3×3 pixels.\n3×3: traite 9 pixels dans une fenêtre de 3×3 pixels.\n5×5 doux: traite 13 pixels dans une fenêtre de 5×5 pixels.\n5×5: traite 25 pixels dans une fenêtre de 5×5 pixels.\n7×7: traite 49 pixels dans une fenêtre de 7×7 pixels.\n9×9: traite 81 pixels dans une fenêtre 9×9 pixels.\n\nIl est parfois possible d'atteindre une meilleurs qualité en appliquant plusieurs itérations d'une petite fenêtre qu'une seule itération d'une grande. TP_DIRPYRDENOISE_PASSE;Itérations -TP_DIRPYRDENOISE_PASSES;Itérations -TP_DIRPYRDENOISE_PASSES_TOOLTIP;Appliquer trois itérations avec une taille de fenêtre de 3×3 aboutit souvent à de meilleurs résultats qu'une seule itération avec une taille de fenêtre de 7×7. -TP_DIRPYRDENOISE_PON;Multi-zones auto -TP_DIRPYRDENOISE_PRE;Aperçu multi-zones -TP_DIRPYRDENOISE_PREV;Aperçu -TP_DIRPYRDENOISE_PREVLABEL;Taille de l'aperçu=%1, Centre: Px=%2 Py=%3 -TP_DIRPYRDENOISE_RED;Chrominance - Rouge-Vert -TP_DIRPYRDENOISE_RGB;RVB -TP_DIRPYRDENOISE_RGBM;RVB -TP_DIRPYRDENOISE_SHAL;Standard -TP_DIRPYRDENOISE_SHALBI;Haut TP_DIRPYRDENOISE_SLI;Curseur -TP_DIRPYRDENOISE_TILELABEL;Taille des tuiles =%1, Centre: Tx=%2 Ty=%3 +TP_DIRPYRDENOISE_TYPE_3X3;3×3 +TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 doux +TP_DIRPYRDENOISE_TYPE_5X5;5×5 +TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 doux +TP_DIRPYRDENOISE_TYPE_7X7;7×7 +TP_DIRPYRDENOISE_TYPE_9X9;9×9 TP_DIRPYREQUALIZER_ALGO;Domaine des tons chairs TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fin: plus proche des tons chairs, minimisant l'actions sur les autres couleurs\nLarge: évite plus d'artéfacts TP_DIRPYREQUALIZER_ARTIF;Réduire les artéfacts @@ -1540,6 +1558,8 @@ TP_EXPOSURE_CURVEEDITOR1;Courbe Tonale 1 TP_EXPOSURE_CURVEEDITOR2;Courbe Tonale 2 TP_EXPOSURE_CURVEEDITOR2_TOOLTIP;Référez-vous à la section suivante du manuel pour en savoir plus sur les manières d'obtenir les meilleurs résultats avec l'option de double courbe:\nThe Toolbox > Exposure Tab > Exposure Panel > Tone Curve TP_EXPOSURE_EXPCOMP;Compensation d'exposition +TP_EXPOSURE_HISTMATCHING;Calcul Courbe Tonale svt Aperçu +TP_EXPOSURE_HISTMATCHING_TOOLTIP;Ajuste automatiquement les curseurs et courbes (excepté la compensation d'exposition) pour obtenir l'aspect de l'aperçu JPEG inclus. TP_EXPOSURE_LABEL;Exposition TP_EXPOSURE_SATURATION;Saturation TP_EXPOSURE_TCMODE_FILMLIKE;Similaire Film @@ -1676,6 +1696,15 @@ TP_LENSPROFILE_LABEL;Profil de correction d'objectif TP_LENSPROFILE_USECA;Corr. de l'aber. chromatique TP_LENSPROFILE_USEDIST;Corr. de la distortion TP_LENSPROFILE_USEVIGN;Corr. du vignettage +TP_LOCALCONTRAST_AMOUNT;Quantité +TP_LOCALCONTRAST_DARKNESS;Niveau des ombres +TP_LOCALCONTRAST_LABEL;Contraste Local +TP_LOCALCONTRAST_LIGHTNESS;Niveau des hautes-lumières +TP_LOCALCONTRAST_RADIUS;Rayon +TP_METADATA_EDIT;Appliquer les modifications +TP_METADATA_MODE;Mode de copie des métadonnées +TP_METADATA_STRIP;Retirer toutes les métadonnées +TP_METADATA_TUNNEL;Copier à l'identique TP_NEUTRAL;Réinit. TP_NEUTRAL_TIP;Réinitialise les valeurs de l'exposition à des valeurs neutres TP_PCVIGNETTE_FEATHER;Étendue @@ -1775,6 +1804,8 @@ TP_RAW_PIXELSHIFTNONGREENCROSS2;Vérifier vert AMaZE TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Vérifier rouge/bleu horizontal TP_RAW_PIXELSHIFTNONGREENVERTICAL;Vérifier rouge/bleu vertical TP_RAW_PIXELSHIFTNREADISO;Lire +TP_RAW_PIXELSHIFTONEGREEN;Utiliser un seul canal vert +TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Utilise un seul canal vert au lieu de faire la moyennes des deux canaux verts pour détecter les régions sans mouvement. TP_RAW_PIXELSHIFTPRNU;PRNU (%) TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Poid Rouge&Bleu TP_RAW_PIXELSHIFTSHOWMOTION;Voir le masque de mouvement @@ -1788,6 +1819,7 @@ TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Adouci les transitions entre les zones avec mouv TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;Facteur DevStd Bleu TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;Facteur DevStd Vert TP_RAW_PIXELSHIFTSTDDEVFACTORRED;Facteur DevStd Rouge +TP_RAW_RCD;RCD TP_RAW_SENSOR_BAYER_LABEL;Capteur à matrice de Bayer TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-passes donne les meilleurs résultats (recommendé pour les images de faible ISO).\n1-passe est presque indifférentiable de 3-passes pour les images à haut ISO et est plus rapide. TP_RAW_SENSOR_XTRANS_LABEL;Capteur à matrice X-Trans diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index 4ffc14338..3051bd490 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -58,10 +58,6 @@ FILEBROWSER_SHOWRANK4HINT;Show images ranked as 4 star FILEBROWSER_SHOWRANK5HINT;Show images ranked as 5 star FILEBROWSER_SHOWTRASHHINT;Show content of the trash FILEBROWSER_SHOWUNRANKHINT;Show unranked images -FILEBROWSER_STARTPROCESSING;Start Processing -FILEBROWSER_STARTPROCESSINGHINT;Start processing/saving of images in the queue -FILEBROWSER_STOPPROCESSING;Stop processing -FILEBROWSER_STOPPROCESSINGHINT;Stop processing of images FILEBROWSER_THUMBSIZE;Thumb. size FILEBROWSER_ZOOMINHINT;Increase thumbnail size FILEBROWSER_ZOOMOUTHINT;Decrease thumbnail size @@ -249,7 +245,6 @@ PREFERENCES_DIRLAST;Τελευταία τοποθεσία που χρησιμο PREFERENCES_DIROTHER;Άλλο PREFERENCES_DIRSELECTDLG;Επιλέξτε τοποθεσία εικόνων κατά την έναρξη... PREFERENCES_DIRSOFTWARE;Τοποθεσία εγκατάστασης -PREFERENCES_EDITORCMDLINE;Other command line PREFERENCES_EXTERNALEDITOR;External editor PREFERENCES_FBROWSEROPTS;Επιλογές περιήγησης αρχείων PREFERENCES_FILEFORMAT;Είδος αρχείου @@ -426,7 +421,9 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !ABOUT_TAB_RELEASENOTES;Release Notes !ABOUT_TAB_SPLASH;Splash !BATCHQUEUE_AUTOSTART;Auto-start +!BATCHQUEUE_AUTOSTARTHINT;Start processing automatically when a new job arrives. !BATCHQUEUE_DESTFILENAME;Path and file name +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !BATCH_PROCESSING;Batch Processing !CURVEEDITOR_AXIS_IN;I: !CURVEEDITOR_AXIS_LEFT_TAN;LT: @@ -557,7 +554,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !FILEBROWSER_SHOWRECENTLYSAVEDHINT;Show saved images.\nShortcut: Alt-7 !FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Show unsaved images.\nShortcut: Alt-6 !FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0 -!FILEBROWSER_TOOLTIP_STOPPROCESSING;Start processing automatically when a new job arrives. !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 !FILECHOOSER_FILTER_ANY;All files !FILECHOOSER_FILTER_COLPROF;Color profiles @@ -575,6 +571,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open +!GENERAL_SLIDER;Slider !GENERAL_UNCHANGED;(Unchanged) !GENERAL_WARNING;Warning !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. @@ -673,7 +670,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !HISTORY_MSG_170;Vibrance - HH curve !HISTORY_MSG_171;L*a*b* - LC curve !HISTORY_MSG_172;L*a*b* - Restrict LC -!HISTORY_MSG_173;NR - Luminance detail +!HISTORY_MSG_173;NR - Detail recovery !HISTORY_MSG_174;CIECAM02 !HISTORY_MSG_175;CAM02 - CAT02 adaptation !HISTORY_MSG_176;CAM02 - Viewing surround @@ -703,7 +700,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !HISTORY_MSG_200;CAM02 - Tone mapping !HISTORY_MSG_201;NR - Chrominance - R&G !HISTORY_MSG_202;NR - Chrominance - B&Y -!HISTORY_MSG_203;NR - Method +!HISTORY_MSG_203;NR - Color space !HISTORY_MSG_204;LMMSE enhancement steps !HISTORY_MSG_205;CAM02 - Hot/bad pixel filter !HISTORY_MSG_206;CAT02 - Auto scene luminosity @@ -755,7 +752,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !HISTORY_MSG_253;CbDL - Reduce artifacts !HISTORY_MSG_254;CbDL - Skin hue !HISTORY_MSG_255;NR - Median filter -!HISTORY_MSG_256;NR - Median type +!HISTORY_MSG_256;NR - Median - Type !HISTORY_MSG_257;Color Toning !HISTORY_MSG_258;CT - Color curve !HISTORY_MSG_259;CT - Opacity curve @@ -796,7 +793,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !HISTORY_MSG_294;Film Simulation - Strength !HISTORY_MSG_295;Film Simulation - Film !HISTORY_MSG_296;NR - Luminance curve -!HISTORY_MSG_297;NR - Quality +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_298;Dead pixel filter !HISTORY_MSG_299;NR - Chrominance curve !HISTORY_MSG_300;- @@ -974,6 +971,15 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -1091,6 +1097,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PARTIALPASTE_IMPULSEDENOISE;Impulse noise reduction !PARTIALPASTE_LABCURVE;L*a*b* adjustments !PARTIALPASTE_LENSPROFILE;Profiled lens correction +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_PCVIGNETTE;Vignette filter !PARTIALPASTE_PERSPECTIVE;Perspective !PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter @@ -1142,6 +1149,12 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_CURVEBBOXPOS;Position of curve copy & paste buttons !PREFERENCES_CURVEBBOXPOS_ABOVE;Above !PREFERENCES_CURVEBBOXPOS_BELOW;Below @@ -1166,6 +1179,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EDITORLAYOUT;Editor Layout !PREFERENCES_EXPAUT;Expert !PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) @@ -1459,14 +1473,14 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_COLORAPP_TCMODE_LABEL3;Curve chroma mode !TP_COLORAPP_TCMODE_LIGHTNESS;Lightness !TP_COLORAPP_TCMODE_SATUR;Saturation -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1515,68 +1529,63 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold -!TP_DIRPYRDENOISE_3X3;3×3 -!TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft -!TP_DIRPYRDENOISE_5X5;5×5 -!TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft -!TP_DIRPYRDENOISE_7X7;7×7 -!TP_DIRPYRDENOISE_9X9;9×9 -!TP_DIRPYRDENOISE_ABM;Chroma only -!TP_DIRPYRDENOISE_AUT;Automatic global -!TP_DIRPYRDENOISE_AUTO;Automatic global -!TP_DIRPYRDENOISE_AUTO_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! -!TP_DIRPYRDENOISE_BLUE;Chrominance - Blue-Yellow -!TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CCCURVE;Chrominance curve -!TP_DIRPYRDENOISE_CHROMA;Chrominance - Master -!TP_DIRPYRDENOISE_CHROMAFR;Chrominance -!TP_DIRPYRDENOISE_CTYPE;Method -!TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CUR;Curve -!TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -!TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. -!TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Modulates action of 'Luminance' denoise +!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! +!TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Chrominance - Blue-Yellow +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance +!TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual +!TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Chrominance - Master +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method +!TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Center: Px=%2 Py=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= - +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Chrominance - Red-Green !TP_DIRPYRDENOISE_ENH;Enhanced mode !TP_DIRPYRDENOISE_ENH_TOOLTIP;Increases noise reduction quality at the expense of a 20% processing time increase. -!TP_DIRPYRDENOISE_GAMMA;Gamma -!TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. -!TP_DIRPYRDENOISE_LAB;L*a*b* !TP_DIRPYRDENOISE_LABEL;Noise Reduction -!TP_DIRPYRDENOISE_LABM;L*a*b* -!TP_DIRPYRDENOISE_LCURVE;Luminance curve -!TP_DIRPYRDENOISE_LDETAIL;Luminance - Detail -!TP_DIRPYRDENOISE_LM;Luminance only -!TP_DIRPYRDENOISE_LPLABM;Weighted L* (little) + a*b* (normal) -!TP_DIRPYRDENOISE_LTYPE;Luminance control -!TP_DIRPYRDENOISE_LUMA;Luminance -!TP_DIRPYRDENOISE_LUMAFR;Luminance -!TP_DIRPYRDENOISE_MAN;Manual -!TP_DIRPYRDENOISE_MANU;Manual -!TP_DIRPYRDENOISE_MED;Median Filter -!TP_DIRPYRDENOISE_MEDMETHOD;Median method -!TP_DIRPYRDENOISE_MEDTYPE;Median type -!TP_DIRPYRDENOISE_METHOD;Method -!TP_DIRPYRDENOISE_METHOD11;Quality -!TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Quality can be adapted to the noise pattern. A setting of "high" increases the noise reduction effect at a cost of extended processing time. -!TP_DIRPYRDENOISE_METHOD_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. -!TP_DIRPYRDENOISE_METM_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. -!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_NOISELABEL;Preview noise: Mean=%1 High=%2 -!TP_DIRPYRDENOISE_NOISELABELEMPTY;Preview noise: Mean= - High= - -!TP_DIRPYRDENOISE_NRESID_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -!TP_DIRPYRDENOISE_PASSES;Median iterations -!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -!TP_DIRPYRDENOISE_PON;Auto multi-zones -!TP_DIRPYRDENOISE_PRE;Preview multi-zones -!TP_DIRPYRDENOISE_PREV;Preview -!TP_DIRPYRDENOISE_PREVLABEL;Preview size=%1, Center: Px=%2 Py=%3 -!TP_DIRPYRDENOISE_RED;Chrominance - Red-Green -!TP_DIRPYRDENOISE_RGB;RGB -!TP_DIRPYRDENOISE_RGBM;RGB -!TP_DIRPYRDENOISE_SHAL;Standard -!TP_DIRPYRDENOISE_SHALBI;High +!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control +!TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve +!TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Detail recovery +!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance +!TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminance +!TP_DIRPYRDENOISE_MAIN_COLORSPACE;Color space +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. +!TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma +!TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. +!TP_DIRPYRDENOISE_MAIN_MODE;Mode +!TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressive +!TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Conservative +!TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Conservative" preserves low frequency chroma patterns, while "aggressive" obliterates them. +!TP_DIRPYRDENOISE_MEDIAN_METHOD;Median method +!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median Filter +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Luminance only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +!TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. +!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) +!TP_DIRPYRDENOISE_MEDIAN_PASSES;Median iterations +!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_DIRPYRDENOISE_MEDIAN_TYPE;Median type +!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. !TP_DIRPYRDENOISE_SLI;Slider -!TP_DIRPYRDENOISE_TILELABEL;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_TYPE_3X3;3×3 +!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft +!TP_DIRPYRDENOISE_TYPE_5X5;5×5 +!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft +!TP_DIRPYRDENOISE_TYPE_7X7;7×7 +!TP_DIRPYRDENOISE_TYPE_9X9;9×9 !TP_DIRPYREQUALIZER_ALGO;Skin Color Range !TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: closer to the colors of the skin, minimizing the action on other colors\nLarge: avoid more artifacts. !TP_DIRPYREQUALIZER_ARTIF;Reduce artifacts @@ -1727,6 +1736,15 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_LENSPROFILE_USECA;Chromatic aberration correction !TP_LENSPROFILE_USEDIST;Distortion correction !TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged !TP_NEUTRAL;Reset !TP_NEUTRAL_TIP;Resets exposure sliders to neutral values.\nApplies to the same controls that Auto Levels applies to, regardless of whether you used Auto Levels or not. !TP_PCVIGNETTE_FEATHER;Feather @@ -1776,7 +1794,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_RAW_DCBITERATIONS;Number of DCB iterations !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... -!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast !TP_RAW_HD;Threshold @@ -1784,7 +1802,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_RAW_HPHD;HPHD !TP_RAW_IGV;IGV !TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_LABEL;Demosaicing !TP_RAW_LMMSE;LMMSE !TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps @@ -1824,6 +1842,8 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal !TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical !TP_RAW_PIXELSHIFTNREADISO;nRead +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. !TP_RAW_PIXELSHIFTPRNU;PRNU (%) !TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight !TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -1837,6 +1857,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue !TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green !TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +!TP_RAW_RCD;RCD !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index ef8717fa3..5fe10c54c 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -58,10 +58,6 @@ FILEBROWSER_SHOWRANK4HINT;Show images ranked as 4 star FILEBROWSER_SHOWRANK5HINT;Show images ranked as 5 star FILEBROWSER_SHOWTRASHHINT;Show content of the trash FILEBROWSER_SHOWUNRANKHINT;Show unranked images -FILEBROWSER_STARTPROCESSING;Start Processing -FILEBROWSER_STARTPROCESSINGHINT;Start processing/saving of images in the queue -FILEBROWSER_STOPPROCESSING;Stop processing -FILEBROWSER_STOPPROCESSINGHINT;Stop processing of images FILEBROWSER_THUMBSIZE;Thumb. size FILEBROWSER_ZOOMINHINT;Increase thumbnail size FILEBROWSER_ZOOMOUTHINT;Decrease thumbnail size @@ -249,7 +245,6 @@ PREFERENCES_DIRLAST;תיקיה האחרונה שביקרתי בה PREFERENCES_DIROTHER;אחר PREFERENCES_DIRSELECTDLG;בחר תיקיית צילומים לאתחול PREFERENCES_DIRSOFTWARE;תיקיית התקנה -PREFERENCES_EDITORCMDLINE;Other command line PREFERENCES_EXTERNALEDITOR;External editor PREFERENCES_FBROWSEROPTS;ברירות דפדפן PREFERENCES_FILEFORMAT;תצורת קובץ @@ -427,7 +422,9 @@ TP_WBALANCE_TEMPERATURE;מידת חום !ABOUT_TAB_RELEASENOTES;Release Notes !ABOUT_TAB_SPLASH;Splash !BATCHQUEUE_AUTOSTART;Auto-start +!BATCHQUEUE_AUTOSTARTHINT;Start processing automatically when a new job arrives. !BATCHQUEUE_DESTFILENAME;Path and file name +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !BATCH_PROCESSING;Batch Processing !CURVEEDITOR_AXIS_IN;I: !CURVEEDITOR_AXIS_LEFT_TAN;LT: @@ -558,7 +555,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !FILEBROWSER_SHOWRECENTLYSAVEDHINT;Show saved images.\nShortcut: Alt-7 !FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Show unsaved images.\nShortcut: Alt-6 !FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0 -!FILEBROWSER_TOOLTIP_STOPPROCESSING;Start processing automatically when a new job arrives. !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 !FILECHOOSER_FILTER_ANY;All files !FILECHOOSER_FILTER_COLPROF;Color profiles @@ -576,6 +572,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open +!GENERAL_SLIDER;Slider !GENERAL_UNCHANGED;(Unchanged) !GENERAL_WARNING;Warning !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. @@ -674,7 +671,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !HISTORY_MSG_170;Vibrance - HH curve !HISTORY_MSG_171;L*a*b* - LC curve !HISTORY_MSG_172;L*a*b* - Restrict LC -!HISTORY_MSG_173;NR - Luminance detail +!HISTORY_MSG_173;NR - Detail recovery !HISTORY_MSG_174;CIECAM02 !HISTORY_MSG_175;CAM02 - CAT02 adaptation !HISTORY_MSG_176;CAM02 - Viewing surround @@ -704,7 +701,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !HISTORY_MSG_200;CAM02 - Tone mapping !HISTORY_MSG_201;NR - Chrominance - R&G !HISTORY_MSG_202;NR - Chrominance - B&Y -!HISTORY_MSG_203;NR - Method +!HISTORY_MSG_203;NR - Color space !HISTORY_MSG_204;LMMSE enhancement steps !HISTORY_MSG_205;CAM02 - Hot/bad pixel filter !HISTORY_MSG_206;CAT02 - Auto scene luminosity @@ -756,7 +753,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !HISTORY_MSG_253;CbDL - Reduce artifacts !HISTORY_MSG_254;CbDL - Skin hue !HISTORY_MSG_255;NR - Median filter -!HISTORY_MSG_256;NR - Median type +!HISTORY_MSG_256;NR - Median - Type !HISTORY_MSG_257;Color Toning !HISTORY_MSG_258;CT - Color curve !HISTORY_MSG_259;CT - Opacity curve @@ -797,7 +794,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !HISTORY_MSG_294;Film Simulation - Strength !HISTORY_MSG_295;Film Simulation - Film !HISTORY_MSG_296;NR - Luminance curve -!HISTORY_MSG_297;NR - Quality +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_298;Dead pixel filter !HISTORY_MSG_299;NR - Chrominance curve !HISTORY_MSG_300;- @@ -975,6 +972,15 @@ TP_WBALANCE_TEMPERATURE;מידת חום !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -1092,6 +1098,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PARTIALPASTE_IMPULSEDENOISE;Impulse noise reduction !PARTIALPASTE_LABCURVE;L*a*b* adjustments !PARTIALPASTE_LENSPROFILE;Profiled lens correction +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_PCVIGNETTE;Vignette filter !PARTIALPASTE_PERSPECTIVE;Perspective !PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter @@ -1143,6 +1150,12 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_CURVEBBOXPOS;Position of curve copy & paste buttons !PREFERENCES_CURVEBBOXPOS_ABOVE;Above !PREFERENCES_CURVEBBOXPOS_BELOW;Below @@ -1167,6 +1180,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EDITORLAYOUT;Editor Layout !PREFERENCES_EXPAUT;Expert !PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) @@ -1460,14 +1474,14 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_COLORAPP_TCMODE_LABEL3;Curve chroma mode !TP_COLORAPP_TCMODE_LIGHTNESS;Lightness !TP_COLORAPP_TCMODE_SATUR;Saturation -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1516,68 +1530,63 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold -!TP_DIRPYRDENOISE_3X3;3×3 -!TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft -!TP_DIRPYRDENOISE_5X5;5×5 -!TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft -!TP_DIRPYRDENOISE_7X7;7×7 -!TP_DIRPYRDENOISE_9X9;9×9 -!TP_DIRPYRDENOISE_ABM;Chroma only -!TP_DIRPYRDENOISE_AUT;Automatic global -!TP_DIRPYRDENOISE_AUTO;Automatic global -!TP_DIRPYRDENOISE_AUTO_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! -!TP_DIRPYRDENOISE_BLUE;Chrominance - Blue-Yellow -!TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CCCURVE;Chrominance curve -!TP_DIRPYRDENOISE_CHROMA;Chrominance - Master -!TP_DIRPYRDENOISE_CHROMAFR;Chrominance -!TP_DIRPYRDENOISE_CTYPE;Method -!TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CUR;Curve -!TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -!TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. -!TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Modulates action of 'Luminance' denoise +!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! +!TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Chrominance - Blue-Yellow +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance +!TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual +!TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Chrominance - Master +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method +!TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Center: Px=%2 Py=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= - +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Chrominance - Red-Green !TP_DIRPYRDENOISE_ENH;Enhanced mode !TP_DIRPYRDENOISE_ENH_TOOLTIP;Increases noise reduction quality at the expense of a 20% processing time increase. -!TP_DIRPYRDENOISE_GAMMA;Gamma -!TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. -!TP_DIRPYRDENOISE_LAB;L*a*b* !TP_DIRPYRDENOISE_LABEL;Noise Reduction -!TP_DIRPYRDENOISE_LABM;L*a*b* -!TP_DIRPYRDENOISE_LCURVE;Luminance curve -!TP_DIRPYRDENOISE_LDETAIL;Luminance - Detail -!TP_DIRPYRDENOISE_LM;Luminance only -!TP_DIRPYRDENOISE_LPLABM;Weighted L* (little) + a*b* (normal) -!TP_DIRPYRDENOISE_LTYPE;Luminance control -!TP_DIRPYRDENOISE_LUMA;Luminance -!TP_DIRPYRDENOISE_LUMAFR;Luminance -!TP_DIRPYRDENOISE_MAN;Manual -!TP_DIRPYRDENOISE_MANU;Manual -!TP_DIRPYRDENOISE_MED;Median Filter -!TP_DIRPYRDENOISE_MEDMETHOD;Median method -!TP_DIRPYRDENOISE_MEDTYPE;Median type -!TP_DIRPYRDENOISE_METHOD;Method -!TP_DIRPYRDENOISE_METHOD11;Quality -!TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Quality can be adapted to the noise pattern. A setting of "high" increases the noise reduction effect at a cost of extended processing time. -!TP_DIRPYRDENOISE_METHOD_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. -!TP_DIRPYRDENOISE_METM_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. -!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_NOISELABEL;Preview noise: Mean=%1 High=%2 -!TP_DIRPYRDENOISE_NOISELABELEMPTY;Preview noise: Mean= - High= - -!TP_DIRPYRDENOISE_NRESID_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -!TP_DIRPYRDENOISE_PASSES;Median iterations -!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -!TP_DIRPYRDENOISE_PON;Auto multi-zones -!TP_DIRPYRDENOISE_PRE;Preview multi-zones -!TP_DIRPYRDENOISE_PREV;Preview -!TP_DIRPYRDENOISE_PREVLABEL;Preview size=%1, Center: Px=%2 Py=%3 -!TP_DIRPYRDENOISE_RED;Chrominance - Red-Green -!TP_DIRPYRDENOISE_RGB;RGB -!TP_DIRPYRDENOISE_RGBM;RGB -!TP_DIRPYRDENOISE_SHAL;Standard -!TP_DIRPYRDENOISE_SHALBI;High +!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control +!TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve +!TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Detail recovery +!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance +!TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminance +!TP_DIRPYRDENOISE_MAIN_COLORSPACE;Color space +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. +!TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma +!TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. +!TP_DIRPYRDENOISE_MAIN_MODE;Mode +!TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressive +!TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Conservative +!TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Conservative" preserves low frequency chroma patterns, while "aggressive" obliterates them. +!TP_DIRPYRDENOISE_MEDIAN_METHOD;Median method +!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median Filter +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Luminance only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +!TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. +!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) +!TP_DIRPYRDENOISE_MEDIAN_PASSES;Median iterations +!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_DIRPYRDENOISE_MEDIAN_TYPE;Median type +!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. !TP_DIRPYRDENOISE_SLI;Slider -!TP_DIRPYRDENOISE_TILELABEL;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_TYPE_3X3;3×3 +!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft +!TP_DIRPYRDENOISE_TYPE_5X5;5×5 +!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft +!TP_DIRPYRDENOISE_TYPE_7X7;7×7 +!TP_DIRPYRDENOISE_TYPE_9X9;9×9 !TP_DIRPYREQUALIZER_ALGO;Skin Color Range !TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: closer to the colors of the skin, minimizing the action on other colors\nLarge: avoid more artifacts. !TP_DIRPYREQUALIZER_ARTIF;Reduce artifacts @@ -1728,6 +1737,15 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_LENSPROFILE_USECA;Chromatic aberration correction !TP_LENSPROFILE_USEDIST;Distortion correction !TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged !TP_NEUTRAL;Reset !TP_NEUTRAL_TIP;Resets exposure sliders to neutral values.\nApplies to the same controls that Auto Levels applies to, regardless of whether you used Auto Levels or not. !TP_PCVIGNETTE_FEATHER;Feather @@ -1777,7 +1795,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_RAW_DCBITERATIONS;Number of DCB iterations !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... -!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast !TP_RAW_HD;Threshold @@ -1785,7 +1803,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_RAW_HPHD;HPHD !TP_RAW_IGV;IGV !TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_LABEL;Demosaicing !TP_RAW_LMMSE;LMMSE !TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps @@ -1825,6 +1843,8 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal !TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical !TP_RAW_PIXELSHIFTNREADISO;nRead +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. !TP_RAW_PIXELSHIFTPRNU;PRNU (%) !TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight !TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -1838,6 +1858,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue !TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green !TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +!TP_RAW_RCD;RCD !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index 034d16928..2da39b47b 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -11,6 +11,7 @@ ABOUT_TAB_RELEASENOTES;Note di rilascio ABOUT_TAB_SPLASH;Emblema ADJUSTER_RESET_TO_DEFAULT;Ripristina BATCHQUEUE_AUTOSTART;Autoavvia +BATCHQUEUE_AUTOSTARTHINT;Inizia a sviluppare automaticamente quando un nuovo lavoro viene accodato BATCHQUEUE_DESTFILENAME;Percorso e nome file BATCH_PROCESSING;Sviluppo in serie CURVEEDITOR_CURVE;Curva @@ -174,12 +175,7 @@ FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Mostra le immagini non salvate.\nScorciatoi FILEBROWSER_SHOWTRASHHINT;Mostra il contenuto del cestino.\nScorciatoia: Ctrl-t FILEBROWSER_SHOWUNCOLORHINT;Mostra le immagini senza etichetta colorata.\nScorciatoia: Alt-0 FILEBROWSER_SHOWUNRANKHINT;Mostra le immagini non classificate.\nScorciatoia: 0 -FILEBROWSER_STARTPROCESSING;Comincia a sviluppare -FILEBROWSER_STARTPROCESSINGHINT;Inizia a sviluppare le immagini nella Coda. -FILEBROWSER_STOPPROCESSING;Ferma lo sviluppo -FILEBROWSER_STOPPROCESSINGHINT;Ferma lo sviluppo delle immagini nella Coda. FILEBROWSER_THUMBSIZE;Dimensione miniature -FILEBROWSER_TOOLTIP_STOPPROCESSING;Inizia a sviluppare automaticamente quando un nuovo lavoro viene accodato FILEBROWSER_UNRANK_TOOLTIP;Nessun Punteggio.\nScorciatoia: Shift-0 FILEBROWSER_ZOOMINHINT;Aumenta la dimensione delle miniature.\n\nScorciatoie:\n+ - Modalità a Schede Multiple,\nAlt-+ - Modalità a Schede Singole. FILEBROWSER_ZOOMOUTHINT;Diminuisci la dimensione delle miniature.\n\nScorciatoie:\n- - Modalità a Schede Multiple,\nAlt-- - Modalità a Schede Singole. @@ -386,7 +382,6 @@ HISTORY_MSG_169;Curva 'CH' HISTORY_MSG_170;Vividezza - Curva HISTORY_MSG_171;Curva 'LC' HISTORY_MSG_172;Lab - Limita LC -HISTORY_MSG_173;NR - Dettaglio di Luminanza HISTORY_MSG_174;CIECAM02 HISTORY_MSG_175;CAM02 - Adattamento CAT02 HISTORY_MSG_176;CAM02 - Ambiente di Visualizzazione @@ -416,7 +411,6 @@ HISTORY_MSG_199;CAM02 - Mostra negli istogrammi HISTORY_MSG_200;CAM02 - Tone mapping HISTORY_MSG_201;NR - Crominanza R,G HISTORY_MSG_202;NR - Crominanza B,Y -HISTORY_MSG_203;NR - Metodo HISTORY_MSG_204;Passaggi di miglioramento LMMSE HISTORY_MSG_205;CAM02 - Pixel Surriscaldati/Guasti HISTORY_MSG_206;CAT02 - Lum. automatica della scena @@ -672,7 +666,6 @@ PREFERENCES_DIRLAST;Ultima cartella visitata PREFERENCES_DIROTHER;Altra PREFERENCES_DIRSELECTDLG;Seleziona la cartella delle immagini all'avvio... PREFERENCES_DIRSOFTWARE;Cartella d'installazione -PREFERENCES_EDITORCMDLINE;Altra linea di comando PREFERENCES_EDITORLAYOUT;Disposizione PREFERENCES_EXTERNALEDITOR;Programma di ritocco esterni PREFERENCES_FBROWSEROPTS;Opzioni del Navigatore e delle miniature @@ -993,20 +986,20 @@ TP_DARKFRAME_LABEL;Dark Frame TP_DEFRINGE_LABEL;Defringe TP_DEFRINGE_RADIUS;Raggio TP_DEFRINGE_THRESHOLD;Soglia -TP_DIRPYRDENOISE_BLUE;Crominanza - Blu-Giallo -TP_DIRPYRDENOISE_CHROMA;Crominanza (Principale) +TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Crominanza - Blu-Giallo +TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Crominanza (Principale) +TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Crominanza - Rosso-Verde TP_DIRPYRDENOISE_ENH;Modalità Migliorata TP_DIRPYRDENOISE_ENH_TOOLTIP;Aumenta la qualità della riduzione rumore al costo di un incremento del 20% del tempo di elaborazione. -TP_DIRPYRDENOISE_GAMMA;Gamma -TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Il gamma varia la forza della riduzione rumore su tutto l'intervallo di toni. Valori più piccoli incideranno sulle ombre, mentre valori maggiori estenderanno l'effetto ai toni più luminosi. -TP_DIRPYRDENOISE_LAB;Lab -TP_DIRPYRDENOISE_LABEL;Riduzione Rumore -TP_DIRPYRDENOISE_LDETAIL;Dettaglio di Luminanza -TP_DIRPYRDENOISE_LUMA;Luminanza -TP_DIRPYRDENOISE_METHOD;Metodo -TP_DIRPYRDENOISE_METHOD_TOOLTIP;Per immagini raw può essere usato il metodo RGB o Lab.\n\nPer immagini non raw verrà utilizzato il metodo Lab, indipendentemente dalla selezione. -TP_DIRPYRDENOISE_RED;Crominanza - Rosso-Verde -TP_DIRPYRDENOISE_RGB;RGB +TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Dettaglio di Luminanza +TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminanza +TP_DIRPYRDENOISE_MAIN_COLORSPACE;Metodo +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;Lab +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LABEL;Riduzione Rumore +TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;Per immagini raw può essere usato il metodo RGB o Lab.\n\nPer immagini non raw verrà utilizzato il metodo Lab, indipendentemente dalla selezione. +TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma +TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Il gamma varia la forza della riduzione rumore su tutto l'intervallo di toni. Valori più piccoli incideranno sulle ombre, mentre valori maggiori estenderanno l'effetto ai toni più luminosi. TP_DIRPYREQUALIZER_ALGO;Algoritmo Pelle TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: più simile ai colori dell'incarnato, minimizzando l'azione di altri colori\nAmpio: evita ulteriori artefatti TP_DIRPYREQUALIZER_HUESKIN;Tonalità della Pelle @@ -1329,6 +1322,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !CURVEEDITOR_AXIS_IN;I: !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: @@ -1364,9 +1358,12 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !GENERAL_APPLY;Apply !GENERAL_ASIMAGE;As Image !GENERAL_OPEN;Open +!GENERAL_SLIDER;Slider !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. !HISTORY_MSG_166;Exposure - Reset -!HISTORY_MSG_256;NR - Median type +!HISTORY_MSG_173;NR - Detail recovery +!HISTORY_MSG_203;NR - Color space +!HISTORY_MSG_256;NR - Median - Type !HISTORY_MSG_257;Color Toning !HISTORY_MSG_258;CT - Color curve !HISTORY_MSG_259;CT - Opacity curve @@ -1407,7 +1404,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !HISTORY_MSG_294;Film Simulation - Strength !HISTORY_MSG_295;Film Simulation - Film !HISTORY_MSG_296;NR - Luminance curve -!HISTORY_MSG_297;NR - Quality +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_298;Dead pixel filter !HISTORY_MSG_299;NR - Chrominance curve !HISTORY_MSG_300;- @@ -1585,6 +1582,15 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1625,6 +1631,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !PARTIALPASTE_EQUALIZER;Wavelet levels !PARTIALPASTE_FILMSIMULATION;Film simulation !PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening @@ -1646,6 +1653,12 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_CURVEBBOXPOS;Position of curve copy & paste buttons !PREFERENCES_CURVEBBOXPOS_ABOVE;Above !PREFERENCES_CURVEBBOXPOS_BELOW;Below @@ -1655,6 +1668,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4 !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_DIRECTORIES;Directories +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EXPAUT;Expert !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. @@ -1735,10 +1749,10 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1778,54 +1792,50 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 -!TP_DIRPYRDENOISE_3X3;3×3 -!TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft -!TP_DIRPYRDENOISE_5X5;5×5 -!TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft -!TP_DIRPYRDENOISE_7X7;7×7 -!TP_DIRPYRDENOISE_9X9;9×9 -!TP_DIRPYRDENOISE_ABM;Chroma only -!TP_DIRPYRDENOISE_AUT;Automatic global -!TP_DIRPYRDENOISE_AUTO;Automatic global -!TP_DIRPYRDENOISE_AUTO_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! -!TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CCCURVE;Chrominance curve -!TP_DIRPYRDENOISE_CHROMAFR;Chrominance -!TP_DIRPYRDENOISE_CTYPE;Method -!TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CUR;Curve -!TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -!TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. -!TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Modulates action of 'Luminance' denoise -!TP_DIRPYRDENOISE_LABM;L*a*b* -!TP_DIRPYRDENOISE_LCURVE;Luminance curve -!TP_DIRPYRDENOISE_LM;Luminance only -!TP_DIRPYRDENOISE_LPLABM;Weighted L* (little) + a*b* (normal) -!TP_DIRPYRDENOISE_LTYPE;Luminance control -!TP_DIRPYRDENOISE_LUMAFR;Luminance -!TP_DIRPYRDENOISE_MAN;Manual -!TP_DIRPYRDENOISE_MANU;Manual -!TP_DIRPYRDENOISE_MED;Median Filter -!TP_DIRPYRDENOISE_MEDMETHOD;Median method -!TP_DIRPYRDENOISE_MEDTYPE;Median type -!TP_DIRPYRDENOISE_METHOD11;Quality -!TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Quality can be adapted to the noise pattern. A setting of "high" increases the noise reduction effect at a cost of extended processing time. -!TP_DIRPYRDENOISE_METM_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. -!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_NOISELABEL;Preview noise: Mean=%1 High=%2 -!TP_DIRPYRDENOISE_NOISELABELEMPTY;Preview noise: Mean= - High= - -!TP_DIRPYRDENOISE_NRESID_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -!TP_DIRPYRDENOISE_PASSES;Median iterations -!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -!TP_DIRPYRDENOISE_PON;Auto multi-zones -!TP_DIRPYRDENOISE_PRE;Preview multi-zones -!TP_DIRPYRDENOISE_PREV;Preview -!TP_DIRPYRDENOISE_PREVLABEL;Preview size=%1, Center: Px=%2 Py=%3 -!TP_DIRPYRDENOISE_RGBM;RGB -!TP_DIRPYRDENOISE_SHAL;Standard -!TP_DIRPYRDENOISE_SHALBI;High +!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance +!TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method +!TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Center: Px=%2 Py=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= - +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_LABEL;Noise Reduction +!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control +!TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve +!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance +!TP_DIRPYRDENOISE_MAIN_MODE;Mode +!TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressive +!TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Conservative +!TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Conservative" preserves low frequency chroma patterns, while "aggressive" obliterates them. +!TP_DIRPYRDENOISE_MEDIAN_METHOD;Median method +!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median Filter +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Luminance only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +!TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. +!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) +!TP_DIRPYRDENOISE_MEDIAN_PASSES;Median iterations +!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_DIRPYRDENOISE_MEDIAN_TYPE;Median type +!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. !TP_DIRPYRDENOISE_SLI;Slider -!TP_DIRPYRDENOISE_TILELABEL;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_TYPE_3X3;3×3 +!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft +!TP_DIRPYRDENOISE_TYPE_5X5;5×5 +!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft +!TP_DIRPYRDENOISE_TYPE_7X7;7×7 +!TP_DIRPYRDENOISE_TYPE_9X9;9×9 !TP_DIRPYREQUALIZER_ARTIF;Reduce artifacts !TP_DISTORTION_AUTO_TIP;Automatically corrects lens distortion in raw files by matching it against the embedded JPEG image if one exists and has had its lens disortion auto-corrected by the camera. !TP_EPD_GAMMA;Gamma @@ -1850,6 +1860,15 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_ICM_SAVEREFERENCE;Save Reference Image !TP_ICM_SAVEREFERENCE_APPLYWB;Apply white balance !TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles. +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged !TP_NEUTRAL;Reset !TP_PREPROCESS_DEADPIXFILT;Dead pixel filter !TP_PREPROCESS_DEADPIXFILT_TOOLTIP;Tries to suppress dead pixels. @@ -1878,7 +1897,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_RAW_HPHD;HPHD !TP_RAW_IGV;IGV !TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_LMMSE;LMMSE !TP_RAW_MONO;Mono !TP_RAW_NONE;None (Shows sensor pattern) @@ -1915,6 +1934,8 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal !TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical !TP_RAW_PIXELSHIFTNREADISO;nRead +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. !TP_RAW_PIXELSHIFTPRNU;PRNU (%) !TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight !TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -1928,6 +1949,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue !TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green !TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +!TP_RAW_RCD;RCD !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index ae9ff5b7f..10979e399 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -40,6 +40,7 @@ ABOUT_TAB_RELEASENOTES;リリースノート ABOUT_TAB_SPLASH;スプラッシュ ADJUSTER_RESET_TO_DEFAULT;デフォルト値に戻す BATCHQUEUE_AUTOSTART;オートスタート +BATCHQUEUE_AUTOSTARTHINT;新しいrawファイルが送られて来たら自動的に現像処理を開始します BATCHQUEUE_DESTFILENAME;パスとファイル名 BATCH_PROCESSING;バッチ処理 CURVEEDITOR_AXIS_IN;I: @@ -210,12 +211,7 @@ FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;最近保存されていない画像を表 FILEBROWSER_SHOWTRASHHINT;ゴミ箱の内容を表示\nショートカット: Ctrl-t FILEBROWSER_SHOWUNCOLORHINT;カラー・ラベルのない画像を表示\nショートカット: Alt-0 FILEBROWSER_SHOWUNRANKHINT;ランクなし画像を表示\nショートカット: 0 -FILEBROWSER_STARTPROCESSING;処理開始 -FILEBROWSER_STARTPROCESSINGHINT;キューにある画像の処理を開始\n\nショートカット:Ctrl+s -FILEBROWSER_STOPPROCESSING;処理中止 -FILEBROWSER_STOPPROCESSINGHINT;キューにある画像の処理を中止\n\nショートカット:Ctrl+s FILEBROWSER_THUMBSIZE;サムネイルのサイズ -FILEBROWSER_TOOLTIP_STOPPROCESSING;新しいrawファイルが送られて来たら自動的に現像処理を開始します FILEBROWSER_UNRANK_TOOLTIP;ランクなし\nショートカット: Shift-0 FILEBROWSER_ZOOMINHINT;サムネイルサイズの拡大\nショートカット: +\n\nシングル・エディタ・タブのショートカット: Alt-+ FILEBROWSER_ZOOMOUTHINT;サムネイルサイズの縮小\nショートカット: -\n\nシングル・エディタ・タブのショートカット: Alt-- @@ -430,7 +426,6 @@ HISTORY_MSG_169;L*a*b* CH カーブ HISTORY_MSG_170;自然な彩度 - カーブ HISTORY_MSG_171;L*a*b* LC カーブ HISTORY_MSG_172;LCの適用をレッドと肌色トーンだけに制限 -HISTORY_MSG_173;輝度ノイズ 細部の復元 HISTORY_MSG_174;CIE色の見えモデル2002 HISTORY_MSG_175;CAM02 - 色順応量 HISTORY_MSG_176;CAM02 - 観視の暗い周囲環境 @@ -460,7 +455,6 @@ HISTORY_MSG_199;CAM02 - カーブでCIECAM02出力のヒストグラムを表示 HISTORY_MSG_200;CAM02 - CIECAM02 Q でトーンマッピング HISTORY_MSG_201;色差 レッド/グリーン HISTORY_MSG_202;色差 ブルー/イエロー -HISTORY_MSG_203;ノイズ低減 - 方式 HISTORY_MSG_204;LMMSE 拡張処理 HISTORY_MSG_205;CAM02 ホット/バッドピクセル HISTORY_MSG_206;CAT02 - 自動で順応 @@ -512,7 +506,6 @@ HISTORY_MSG_252;CbDL 肌色の目標/保護 HISTORY_MSG_253;CbDL アーティファクトを軽減 HISTORY_MSG_254;CbDL 肌色の色相 HISTORY_MSG_255;ノイズ低減 - メディアン -HISTORY_MSG_256;ノイズ低減 - フィルターの種類 HISTORY_MSG_257;カラートーン調整 HISTORY_MSG_258;カラートーン調整 - カラーのカーブ HISTORY_MSG_259;カラートーン調整 - 不透明度のカーブ @@ -553,7 +546,6 @@ HISTORY_MSG_293;フィルムシミュレーション HISTORY_MSG_294;フィルムシミュレーション - 強さ HISTORY_MSG_295;フィルムシミュレーション - フィルム HISTORY_MSG_296;輝度ノイズ低減のカーブ -HISTORY_MSG_297;ノイズ低減 - 質 HISTORY_MSG_298;デッドピクセルフィルター HISTORY_MSG_299;色ノイズ低減のカーブ HISTORY_MSG_300;- @@ -894,7 +886,6 @@ PREFERENCES_DIRLAST;最近参照したディレクトリ PREFERENCES_DIROTHER;他 PREFERENCES_DIRSELECTDLG;起動時の画像ディレクトリ選択... PREFERENCES_DIRSOFTWARE;インストール・ディレクトリ -PREFERENCES_EDITORCMDLINE;その他・コマンド入力 PREFERENCES_EDITORLAYOUT;編集 レイアウト PREFERENCES_EXPAUT;高度 PREFERENCES_EXTERNALEDITOR;外部エディタ @@ -1050,7 +1041,7 @@ PROFILEPANEL_TOOLTIPSAVE;現在のプロファイルを保存\nCtrl-クリック PROGRESSBAR_LOADING;画像読み込み中... PROGRESSBAR_LOADINGTHUMBS;サムネイルの読み込み... PROGRESSBAR_LOADJPEG;JPEGファイル読み込み中... -PROGRESSBAR_LOADPNG;;PNGファイル読み込み中... +PROGRESSBAR_LOADPNG;PNGファイル読み込み中... PROGRESSBAR_LOADTIFF;TIFFファイル読み込み中... PROGRESSBAR_NOIMAGES;画像が見つかりません PROGRESSBAR_PROCESSING;画像処理中... @@ -1294,60 +1285,54 @@ TP_DARKFRAME_LABEL;ダークフレーム TP_DEFRINGE_LABEL;フリンジ低減 TP_DEFRINGE_RADIUS;半径 TP_DEFRINGE_THRESHOLD;しきい値 -TP_DIRPYRDENOISE_ABM;色ノイズだけ -TP_DIRPYRDENOISE_AUT;自動(分割方式) -TP_DIRPYRDENOISE_AUTO;自動(分割方式) -TP_DIRPYRDENOISE_AUTO_TOOLTIP;色ノイズ低減の効果を確認して下さい\n注意:設定値の計算はあくまで平均的なもので、かなり主観的でです -TP_DIRPYRDENOISE_BLUE;色差 ブルー/イエロー -TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;手動\n画像全体に作用します\nノイズ低減の設定を手動で行います\n\n自動(分割方式)\n画像全体に作用します\n画像を9つに分割して、そこから全体の色ノイズ低減に適した設定を自動的に行います\n\n自動(プレビュー方式)\n画像全体に作用します\nプレビューで見えている画像の一部を使って全体の色ノイズ低減に適した設定を自動で行います -TP_DIRPYRDENOISE_CCCURVE;色ノイズ低減のカーブ -TP_DIRPYRDENOISE_CHROMA;色(マスター) -TP_DIRPYRDENOISE_CHROMAFR;色ノイズ -TP_DIRPYRDENOISE_CTYPE;色ノイズの調整法 -TP_DIRPYRDENOISE_CTYPE_TOOLTIP;手動\n画像全体に作用します\nノイズ低減の設定を手動で行います\n\n自動(分割方式)\n画像全体に作用します\n画像を9つに分割して、そこから全体の色ノイズ低減に適した設定を自動的に行います\n\n自動(多分割方式)\nプレビュー画像には反映されません-保存画像だけに反映されます。但し、タイルサイズとその中心をプレビューサイズとその中心にマッチさせる〝プレビュー”方式を使えば、効果がどれ位か予測がつきます。\n画像をタイル状に分割し(タイル数は画像サイズ次第で、10~70枚になります)、各タイルにあった色ノイズ低減の設定を自動で行います\n\n自動(プレビュー方式)\n画像全体に作用します\nプレビューで見えている画像の一部を使って全体の色ノイズ低減に適した設定を自動で行います -TP_DIRPYRDENOISE_CUR;カーブ -TP_DIRPYRDENOISE_CURVEEDITOR_CC;色度 -TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;色度のスライダーの値を全て増やします(乗数)\nこれは色度に応じて色ノイズの低減効果の強弱を調節するカーブです。例えば、色度の低い部分で低減効果を高めるとか、色度の高い部分で低減効果を緩める、という具合です。 -TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;‘輝度’の位置でノイズ低減の強さを加減します +TP_DIRPYRDENOISE_CHROMINANCE_AMZ;自動(多分割方式) +TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;自動(分割方式) +TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;色ノイズ低減の効果を確認して下さい\n注意:設定値の計算はあくまで平均的なもので、かなり主観的でです +TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;色差 ブルー/イエロー +TP_DIRPYRDENOISE_CHROMINANCE_CURVE;色ノイズ低減のカーブ +TP_DIRPYRDENOISE_CHROMINANCE_FRAME;色ノイズ +TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;手動 +TP_DIRPYRDENOISE_CHROMINANCE_MASTER;色(マスター) +TP_DIRPYRDENOISE_CHROMINANCE_METHOD;色ノイズの調整法 +TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;手動\n画像全体に作用します\nノイズ低減の設定を手動で行います\n\n自動(分割方式)\n画像全体に作用します\n画像を9つに分割して、そこから全体の色ノイズ低減に適した設定を自動的に行います\n\n自動(プレビュー方式)\n画像全体に作用します\nプレビューで見えている画像の一部を使って全体の色ノイズ低減に適した設定を自動で行います +TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;手動\n画像全体に作用します\nノイズ低減の設定を手動で行います\n\n自動(分割方式)\n画像全体に作用します\n画像を9つに分割して、そこから全体の色ノイズ低減に適した設定を自動的に行います\n\n自動(多分割方式)\nプレビュー画像には反映されません-保存画像だけに反映されます。但し、タイルサイズとその中心をプレビューサイズとその中心にマッチさせる〝プレビュー”方式を使えば、効果がどれ位か予測がつきます。\n画像をタイル状に分割し(タイル数は画像サイズ次第で、10~70枚になります)、各タイルにあった色ノイズ低減の設定を自動で行います\n\n自動(プレビュー方式)\n画像全体に作用します\nプレビューで見えている画像の一部を使って全体の色ノイズ低減に適した設定を自動で行います +TP_DIRPYRDENOISE_CHROMINANCE_PMZ;自動(プレビュー方式) +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;プレビュー方式 +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;ウェーブレット変換後、プレビューで見える部分画像で残ったノイズのレベルを表示します\n\n>300以上 非常にノイズが多い\n100~300 ノイズが多い\n50~100 ノイズが少ない\n50以下 ノイズが非常に少ない\n\n算出値はRGBとL*a*b*モードでは異なります。RGBモードは輝度と色を完全に切り離すことが出来ないので、算出値の精度は劣ります。 +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;プレビューのサイズ=%1, 中心: Px=%2 Py=%3 +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;プレビューのノイズ: 中間色度=%1 高色度=%2 +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;プレビューのノイズ: 中間色度= - 高色度= - +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;タイルのサイズ=%1, 中心位置: X座標=%2 Y座標=%3 +TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;色差 レッド/グリーン TP_DIRPYRDENOISE_ENH;強化モード TP_DIRPYRDENOISE_ENH_TOOLTIP;ノイズ低減の効果を髙めますが、代わりに演算時間が約20%増えます。 -TP_DIRPYRDENOISE_GAMMA;ガンマ -TP_DIRPYRDENOISE_GAMMA_TOOLTIP;ガンマは、トーンの範囲全体でノイズ低減の量を変化させます。値が大きいほど明るいトーンに効果を及ぼし、値が小さいほどシャドウをターゲットにします -TP_DIRPYRDENOISE_LAB;L*a*b* -TP_DIRPYRDENOISE_LABEL;ノイズ低減 -TP_DIRPYRDENOISE_LABM;L*a*b* -TP_DIRPYRDENOISE_LCURVE;輝度カーブ -TP_DIRPYRDENOISE_LDETAIL;輝度 細部の復元 -TP_DIRPYRDENOISE_LM;輝度のみ -TP_DIRPYRDENOISE_LPLABM;加重平均 L* (少なめ) + a*b* (普通) -TP_DIRPYRDENOISE_LTYPE;輝度ノイズの調整法 -TP_DIRPYRDENOISE_LUMA;輝度 -TP_DIRPYRDENOISE_LUMAFR;輝度ノイズ -TP_DIRPYRDENOISE_MAN;手動 -TP_DIRPYRDENOISE_MANU;手動 -TP_DIRPYRDENOISE_MED;メディアンフィルター -TP_DIRPYRDENOISE_MEDMETHOD;方式 -TP_DIRPYRDENOISE_MEDTYPE;フィルターの種類 -TP_DIRPYRDENOISE_METHOD;方式 -TP_DIRPYRDENOISE_METHOD11;ノイズ低減の質 -TP_DIRPYRDENOISE_METHOD11_TOOLTIP;ノイズの状態に応じて低減効果の質を選べます:1-標準 2-高い\n2の方がノイズ低減効果は高くなりますが、その分処理時間が増えます。 -TP_DIRPYRDENOISE_METHOD_TOOLTIP;raw画像は、RGBまたはL*a*b*方式のいずれかを使用することができます。\n\nraw以外の画像は、選択にかかわらずL*a*b*方式が採用されます -TP_DIRPYRDENOISE_METM_TOOLTIP;フィルタリングの方式で、"輝度のみ"と"L*a*b*"を選択した場合、メディアンフィルタリングはノイズ低減行程でウェーブレット変換が行われた直後に適用されます\n"RGB"モードの場合は、ノイズ低減行程の最後で適用されます -TP_DIRPYRDENOISE_NOISELABEL;プレビューのノイズ: 中間色度=%1 高色度=%2 -TP_DIRPYRDENOISE_NOISELABELEMPTY;プレビューのノイズ: 中間色度= - 高色度= - -TP_DIRPYRDENOISE_NRESID_TOOLTIP;ウェーブレット変換後、プレビューで見える部分画像で残ったノイズのレベルを表示します\n\n>300以上 非常にノイズが多い\n100~300 ノイズが多い\n50~100 ノイズが少ない\n50以下 ノイズが非常に少ない\n\n算出値はRGBとL*a*b*モードでは異なります。RGBモードは輝度と色を完全に切り離すことが出来ないので、算出値の精度は劣ります。 -TP_DIRPYRDENOISE_PASSES;フィルタリングの繰り返し回数 -TP_DIRPYRDENOISE_PON;自動(多分割方式) -TP_DIRPYRDENOISE_PRE;自動(プレビュー方式) -TP_DIRPYRDENOISE_PREV;プレビュー方式 -TP_DIRPYRDENOISE_PREVLABEL;プレビューのサイズ=%1, 中心: Px=%2 Py=%3 -TP_DIRPYRDENOISE_RED;色差 レッド/グリーン -TP_DIRPYRDENOISE_RGB;RGB -TP_DIRPYRDENOISE_RGBM;RGB -TP_DIRPYRDENOISE_SHAL;標準 -TP_DIRPYRDENOISE_SHALBI;高い +TP_DIRPYRDENOISE_LUMINANCE_CONTROL;輝度ノイズの調整法 +TP_DIRPYRDENOISE_LUMINANCE_CURVE;輝度カーブ +TP_DIRPYRDENOISE_LUMINANCE_DETAIL;輝度 細部の復元 +TP_DIRPYRDENOISE_LUMINANCE_FRAME;輝度ノイズ +TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;輝度 +TP_DIRPYRDENOISE_MAIN_COLORSPACE;方式 +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LABEL;ノイズ低減 +TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;raw画像は、RGBまたはL*a*b*方式のいずれかを使用することができます。\n\nraw以外の画像は、選択にかかわらずL*a*b*方式が採用されます +TP_DIRPYRDENOISE_MAIN_GAMMA;ガンマ +TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;ガンマは、トーンの範囲全体でノイズ低減の量を変化させます。値が大きいほど明るいトーンに効果を及ぼし、値が小さいほどシャドウをターゲットにします +TP_DIRPYRDENOISE_MAIN_MODE;ノイズ低減の質 +TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;高い +TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;標準 +TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;ノイズの状態に応じて低減効果の質を選べます:1-標準 2-高い\n2の方がノイズ低減効果は高くなりますが、その分処理時間が増えます。 +TP_DIRPYRDENOISE_MEDIAN_METHOD;方式 +TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;色ノイズだけ +TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;メディアンフィルター +TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;輝度のみ +TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;フィルタリングの方式で、"輝度のみ"と"L*a*b*"を選択した場合、メディアンフィルタリングはノイズ低減行程でウェーブレット変換が行われた直後に適用されます\n"RGB"モードの場合は、ノイズ低減行程の最後で適用されます +TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;加重平均 L* (少なめ) + a*b* (普通) +TP_DIRPYRDENOISE_MEDIAN_PASSES;フィルタリングの繰り返し回数 +TP_DIRPYRDENOISE_MEDIAN_TYPE;フィルターの種類 TP_DIRPYRDENOISE_SLI;スライダー -TP_DIRPYRDENOISE_TILELABEL;タイルのサイズ=%1, 中心位置: X座標=%2 Y座標=%3 TP_DIRPYREQUALIZER_ALGO;肌色の範囲 TP_DIRPYREQUALIZER_ALGO_TOOLTIP;ファイン:撮影の肌色に近い部分に働くアルゴリズム、他の色への影響を最小限に抑えます\n広範: アーティファクトの増加を避けるアルゴリズムです TP_DIRPYREQUALIZER_ARTIF;アーティファクトを軽減 @@ -1872,6 +1857,7 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !DONT_SHOW_AGAIN;Don't show this message again. !DYNPROFILEEDITOR_DELETE;Delete !DYNPROFILEEDITOR_EDIT;Edit @@ -1892,8 +1878,13 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - !FILEBROWSER_SHOWORIGINALHINT;Show only original images.\n\nWhen several images exist with the same filename but different extensions, the one considered original is the one whose extension is nearest the top of the parsed extensions list in Preferences > File Browser > Parsed Extensions. !GENERAL_APPLY;Apply !GENERAL_OPEN;Open +!GENERAL_SLIDER;Slider !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. !HISTORY_MSG_166;Exposure - Reset +!HISTORY_MSG_173;NR - Detail recovery +!HISTORY_MSG_203;NR - Color space +!HISTORY_MSG_256;NR - Median - Type +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_407;Retinex - Method !HISTORY_MSG_408;Retinex - Radius !HISTORY_MSG_409;Retinex - Contrast @@ -1962,6 +1953,15 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1995,6 +1995,7 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. !MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 !MONITOR_PROFILE_SYSTEM;System default +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAW_IMAGENUM;Sub-image @@ -2003,8 +2004,15 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - !PARTIALPASTE_TM_FATTAL;HDR Tone mapping !PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_CMMBPC;Black point compensation +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_D50_OLD;5000K !PREFERENCES_DIRECTORIES;Directories +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_GREY18_OLD;Yb=18 CIE L#50 !PREFERENCES_LANG;Language !PREFERENCES_MONINTENT;Default rendering intent @@ -2045,23 +2053,34 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance -!TP_DIRPYRDENOISE_3X3;3×3 -!TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft -!TP_DIRPYRDENOISE_5X5;5×5 -!TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft -!TP_DIRPYRDENOISE_7X7;7×7 -!TP_DIRPYRDENOISE_9X9;9×9 -!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_LABEL;Noise Reduction +!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. +!TP_DIRPYRDENOISE_TYPE_3X3;3×3 +!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft +!TP_DIRPYRDENOISE_TYPE_5X5;5×5 +!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft +!TP_DIRPYRDENOISE_TYPE_7X7;7×7 +!TP_DIRPYRDENOISE_TYPE_9X9;9×9 !TP_DISTORTION_AUTO_TIP;Automatically corrects lens distortion in raw files by matching it against the embedded JPEG image if one exists and has had its lens disortion auto-corrected by the camera. !TP_FILMSIMULATION_SLOWPARSEDIR;RawTherapee is configured to look for Hald CLUT images, which are used for the Film Simulation tool, in a folder which is taking too long to load.\nGo to Preferences > Image Processing > Film Simulation\nto see which folder is being used. You should either point RawTherapee to a folder which contains only Hald CLUT images and nothing more, or to an empty folder if you don't want to use the Film Simulation tool.\n\nRead the Film Simulation article in RawPedia for more information.\n\nDo you want to cancel the scan now? !TP_ICM_BPC;Black Point Compensation !TP_ICM_PROFILEINTENT;Rendering Intent !TP_ICM_SAVEREFERENCE;Save Reference Image +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged !TP_NEUTRAL;Reset !TP_RAWCACORR_CASTR;Strength !TP_RAW_1PASSMEDIUM;1-Pass (Medium) @@ -2074,7 +2093,7 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - !TP_RAW_HPHD;HPHD !TP_RAW_IGV;IGV !TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_LMMSE;LMMSE !TP_RAW_MONO;Mono !TP_RAW_NONE;None (Shows sensor pattern) @@ -2111,6 +2130,8 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - !TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal !TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical !TP_RAW_PIXELSHIFTNREADISO;nRead +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. !TP_RAW_PIXELSHIFTPRNU;PRNU (%) !TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight !TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -2124,6 +2145,7 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - !TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue !TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green !TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +!TP_RAW_RCD;RCD !TP_RAW_VNG4;VNG4 !TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL !TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index 56e1fabb7..50e1407a9 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -58,10 +58,6 @@ FILEBROWSER_SHOWRANK4HINT;Rādīt attēlus ar 4 zvaigznēm FILEBROWSER_SHOWRANK5HINT;Rādīt attēlus ar 5 zvaigznēm FILEBROWSER_SHOWTRASHHINT;Rādīt atkritni FILEBROWSER_SHOWUNRANKHINT;Rādīt nevērtētus attēlus -FILEBROWSER_STARTPROCESSING;Sākt apstrādi -FILEBROWSER_STARTPROCESSINGHINT;Sākt attēlu rindas apstrādi/saglabāšanu -FILEBROWSER_STOPPROCESSING;Apturēt apstrādi -FILEBROWSER_STOPPROCESSINGHINT;Apturēt attēlu apstrādi FILEBROWSER_THUMBSIZE;Sīktēlu izmērs FILEBROWSER_ZOOMINHINT;Palielināt sīktēlus FILEBROWSER_ZOOMOUTHINT;Samazināt sīktēlus @@ -249,7 +245,6 @@ PREFERENCES_DIRLAST;Pēdējā lietotā mape PREFERENCES_DIROTHER;Cita PREFERENCES_DIRSELECTDLG;Izvēlies attēlu mapi sākumam... PREFERENCES_DIRSOFTWARE;Uzstādīšanas mape -PREFERENCES_EDITORCMDLINE;Cita komandrinda PREFERENCES_EXTERNALEDITOR;Ārējais redaktors PREFERENCES_FBROWSEROPTS;Failu pārlūka iespējas PREFERENCES_FILEFORMAT;Faila formāts @@ -427,7 +422,9 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !ABOUT_TAB_RELEASENOTES;Release Notes !ABOUT_TAB_SPLASH;Splash !BATCHQUEUE_AUTOSTART;Auto-start +!BATCHQUEUE_AUTOSTARTHINT;Start processing automatically when a new job arrives. !BATCHQUEUE_DESTFILENAME;Path and file name +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !BATCH_PROCESSING;Batch Processing !CURVEEDITOR_AXIS_IN;I: !CURVEEDITOR_AXIS_LEFT_TAN;LT: @@ -558,7 +555,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !FILEBROWSER_SHOWRECENTLYSAVEDHINT;Show saved images.\nShortcut: Alt-7 !FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Show unsaved images.\nShortcut: Alt-6 !FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0 -!FILEBROWSER_TOOLTIP_STOPPROCESSING;Start processing automatically when a new job arrives. !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 !FILECHOOSER_FILTER_ANY;All files !FILECHOOSER_FILTER_COLPROF;Color profiles @@ -576,6 +572,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open +!GENERAL_SLIDER;Slider !GENERAL_UNCHANGED;(Unchanged) !GENERAL_WARNING;Warning !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. @@ -674,7 +671,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !HISTORY_MSG_170;Vibrance - HH curve !HISTORY_MSG_171;L*a*b* - LC curve !HISTORY_MSG_172;L*a*b* - Restrict LC -!HISTORY_MSG_173;NR - Luminance detail +!HISTORY_MSG_173;NR - Detail recovery !HISTORY_MSG_174;CIECAM02 !HISTORY_MSG_175;CAM02 - CAT02 adaptation !HISTORY_MSG_176;CAM02 - Viewing surround @@ -704,7 +701,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !HISTORY_MSG_200;CAM02 - Tone mapping !HISTORY_MSG_201;NR - Chrominance - R&G !HISTORY_MSG_202;NR - Chrominance - B&Y -!HISTORY_MSG_203;NR - Method +!HISTORY_MSG_203;NR - Color space !HISTORY_MSG_204;LMMSE enhancement steps !HISTORY_MSG_205;CAM02 - Hot/bad pixel filter !HISTORY_MSG_206;CAT02 - Auto scene luminosity @@ -756,7 +753,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !HISTORY_MSG_253;CbDL - Reduce artifacts !HISTORY_MSG_254;CbDL - Skin hue !HISTORY_MSG_255;NR - Median filter -!HISTORY_MSG_256;NR - Median type +!HISTORY_MSG_256;NR - Median - Type !HISTORY_MSG_257;Color Toning !HISTORY_MSG_258;CT - Color curve !HISTORY_MSG_259;CT - Opacity curve @@ -797,7 +794,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !HISTORY_MSG_294;Film Simulation - Strength !HISTORY_MSG_295;Film Simulation - Film !HISTORY_MSG_296;NR - Luminance curve -!HISTORY_MSG_297;NR - Quality +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_298;Dead pixel filter !HISTORY_MSG_299;NR - Chrominance curve !HISTORY_MSG_300;- @@ -975,6 +972,15 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -1092,6 +1098,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PARTIALPASTE_IMPULSEDENOISE;Impulse noise reduction !PARTIALPASTE_LABCURVE;L*a*b* adjustments !PARTIALPASTE_LENSPROFILE;Profiled lens correction +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_PCVIGNETTE;Vignette filter !PARTIALPASTE_PERSPECTIVE;Perspective !PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter @@ -1143,6 +1150,12 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_CURVEBBOXPOS;Position of curve copy & paste buttons !PREFERENCES_CURVEBBOXPOS_ABOVE;Above !PREFERENCES_CURVEBBOXPOS_BELOW;Below @@ -1167,6 +1180,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EDITORLAYOUT;Editor Layout !PREFERENCES_EXPAUT;Expert !PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) @@ -1460,14 +1474,14 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_COLORAPP_TCMODE_LABEL3;Curve chroma mode !TP_COLORAPP_TCMODE_LIGHTNESS;Lightness !TP_COLORAPP_TCMODE_SATUR;Saturation -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1516,68 +1530,63 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold -!TP_DIRPYRDENOISE_3X3;3×3 -!TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft -!TP_DIRPYRDENOISE_5X5;5×5 -!TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft -!TP_DIRPYRDENOISE_7X7;7×7 -!TP_DIRPYRDENOISE_9X9;9×9 -!TP_DIRPYRDENOISE_ABM;Chroma only -!TP_DIRPYRDENOISE_AUT;Automatic global -!TP_DIRPYRDENOISE_AUTO;Automatic global -!TP_DIRPYRDENOISE_AUTO_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! -!TP_DIRPYRDENOISE_BLUE;Chrominance - Blue-Yellow -!TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CCCURVE;Chrominance curve -!TP_DIRPYRDENOISE_CHROMA;Chrominance - Master -!TP_DIRPYRDENOISE_CHROMAFR;Chrominance -!TP_DIRPYRDENOISE_CTYPE;Method -!TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CUR;Curve -!TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -!TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. -!TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Modulates action of 'Luminance' denoise +!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! +!TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Chrominance - Blue-Yellow +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance +!TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual +!TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Chrominance - Master +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method +!TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Center: Px=%2 Py=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= - +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Chrominance - Red-Green !TP_DIRPYRDENOISE_ENH;Enhanced mode !TP_DIRPYRDENOISE_ENH_TOOLTIP;Increases noise reduction quality at the expense of a 20% processing time increase. -!TP_DIRPYRDENOISE_GAMMA;Gamma -!TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. -!TP_DIRPYRDENOISE_LAB;L*a*b* !TP_DIRPYRDENOISE_LABEL;Noise Reduction -!TP_DIRPYRDENOISE_LABM;L*a*b* -!TP_DIRPYRDENOISE_LCURVE;Luminance curve -!TP_DIRPYRDENOISE_LDETAIL;Luminance - Detail -!TP_DIRPYRDENOISE_LM;Luminance only -!TP_DIRPYRDENOISE_LPLABM;Weighted L* (little) + a*b* (normal) -!TP_DIRPYRDENOISE_LTYPE;Luminance control -!TP_DIRPYRDENOISE_LUMA;Luminance -!TP_DIRPYRDENOISE_LUMAFR;Luminance -!TP_DIRPYRDENOISE_MAN;Manual -!TP_DIRPYRDENOISE_MANU;Manual -!TP_DIRPYRDENOISE_MED;Median Filter -!TP_DIRPYRDENOISE_MEDMETHOD;Median method -!TP_DIRPYRDENOISE_MEDTYPE;Median type -!TP_DIRPYRDENOISE_METHOD;Method -!TP_DIRPYRDENOISE_METHOD11;Quality -!TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Quality can be adapted to the noise pattern. A setting of "high" increases the noise reduction effect at a cost of extended processing time. -!TP_DIRPYRDENOISE_METHOD_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. -!TP_DIRPYRDENOISE_METM_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. -!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_NOISELABEL;Preview noise: Mean=%1 High=%2 -!TP_DIRPYRDENOISE_NOISELABELEMPTY;Preview noise: Mean= - High= - -!TP_DIRPYRDENOISE_NRESID_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -!TP_DIRPYRDENOISE_PASSES;Median iterations -!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -!TP_DIRPYRDENOISE_PON;Auto multi-zones -!TP_DIRPYRDENOISE_PRE;Preview multi-zones -!TP_DIRPYRDENOISE_PREV;Preview -!TP_DIRPYRDENOISE_PREVLABEL;Preview size=%1, Center: Px=%2 Py=%3 -!TP_DIRPYRDENOISE_RED;Chrominance - Red-Green -!TP_DIRPYRDENOISE_RGB;RGB -!TP_DIRPYRDENOISE_RGBM;RGB -!TP_DIRPYRDENOISE_SHAL;Standard -!TP_DIRPYRDENOISE_SHALBI;High +!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control +!TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve +!TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Detail recovery +!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance +!TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminance +!TP_DIRPYRDENOISE_MAIN_COLORSPACE;Color space +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. +!TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma +!TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. +!TP_DIRPYRDENOISE_MAIN_MODE;Mode +!TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressive +!TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Conservative +!TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Conservative" preserves low frequency chroma patterns, while "aggressive" obliterates them. +!TP_DIRPYRDENOISE_MEDIAN_METHOD;Median method +!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median Filter +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Luminance only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +!TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. +!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) +!TP_DIRPYRDENOISE_MEDIAN_PASSES;Median iterations +!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_DIRPYRDENOISE_MEDIAN_TYPE;Median type +!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. !TP_DIRPYRDENOISE_SLI;Slider -!TP_DIRPYRDENOISE_TILELABEL;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_TYPE_3X3;3×3 +!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft +!TP_DIRPYRDENOISE_TYPE_5X5;5×5 +!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft +!TP_DIRPYRDENOISE_TYPE_7X7;7×7 +!TP_DIRPYRDENOISE_TYPE_9X9;9×9 !TP_DIRPYREQUALIZER_ALGO;Skin Color Range !TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: closer to the colors of the skin, minimizing the action on other colors\nLarge: avoid more artifacts. !TP_DIRPYREQUALIZER_ARTIF;Reduce artifacts @@ -1728,6 +1737,15 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_LENSPROFILE_USECA;Chromatic aberration correction !TP_LENSPROFILE_USEDIST;Distortion correction !TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged !TP_NEUTRAL;Reset !TP_NEUTRAL_TIP;Resets exposure sliders to neutral values.\nApplies to the same controls that Auto Levels applies to, regardless of whether you used Auto Levels or not. !TP_PCVIGNETTE_FEATHER;Feather @@ -1777,7 +1795,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_RAW_DCBITERATIONS;Number of DCB iterations !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... -!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast !TP_RAW_HD;Threshold @@ -1785,7 +1803,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_RAW_HPHD;HPHD !TP_RAW_IGV;IGV !TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_LABEL;Demosaicing !TP_RAW_LMMSE;LMMSE !TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps @@ -1825,6 +1843,8 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal !TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical !TP_RAW_PIXELSHIFTNREADISO;nRead +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. !TP_RAW_PIXELSHIFTPRNU;PRNU (%) !TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight !TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -1838,6 +1858,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue !TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green !TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +!TP_RAW_RCD;RCD !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index abddd957a..9b4ae8097 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -7,6 +7,7 @@ ABOUT_TAB_RELEASENOTES;Kiadási megjegyzések ABOUT_TAB_SPLASH;Splash ADJUSTER_RESET_TO_DEFAULT;Alaphelyzetbe állítás BATCHQUEUE_AUTOSTART;Auto start +BATCHQUEUE_AUTOSTARTHINT;Új kép érkezése esetén a feldolgozás automatikus indítása. BATCH_PROCESSING;Kötegelt feldolgozás CURVEEDITOR_CURVE;Görbe CURVEEDITOR_CURVES;Görbék @@ -143,12 +144,7 @@ FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Korábban mentett képek megjelenítése.\n FILEBROWSER_SHOWTRASHHINT;A kuka tartalmának mutatása FILEBROWSER_SHOWUNCOLORHINT;Színcímke nélküli képek megjelenítése.\nGyorsbillentyű: Alt-0 FILEBROWSER_SHOWUNRANKHINT;Meg nem jelölt képek mutatása -FILEBROWSER_STARTPROCESSING;Feldolgozás indítása -FILEBROWSER_STARTPROCESSINGHINT;A sorban álló képek feldolgozásának elindítása -FILEBROWSER_STOPPROCESSING;Feldolgozás leállítása -FILEBROWSER_STOPPROCESSINGHINT;A sorban álló képek feldolgozásának leállítása FILEBROWSER_THUMBSIZE;Bélyegméret -FILEBROWSER_TOOLTIP_STOPPROCESSING;Új kép érkezése esetén a feldolgozás automatikus indítása. FILEBROWSER_ZOOMINHINT;Növelés FILEBROWSER_ZOOMOUTHINT;Csökkentés GENERAL_ABOUT;Névjegy @@ -504,7 +500,6 @@ PREFERENCES_DIRLAST;Utoljára látogatott könyvtár PREFERENCES_DIROTHER;Más PREFERENCES_DIRSELECTDLG;Képek könyvtára induláskor... PREFERENCES_DIRSOFTWARE;Telepítés helye -PREFERENCES_EDITORCMDLINE;Egyéb parancssor PREFERENCES_EDITORLAYOUT;Szerkesztési mód PREFERENCES_EXTERNALEDITOR;Külső képszerkesztő program PREFERENCES_FBROWSEROPTS;Állományböngésző beállításai @@ -651,10 +646,10 @@ TP_DARKFRAME_LABEL;Fekete referenciakép (dark frame) TP_DEFRINGE_LABEL;Színihiba-javítás (defringe) TP_DEFRINGE_RADIUS;Sugár TP_DEFRINGE_THRESHOLD;Küszöb -TP_DIRPYRDENOISE_CHROMA;Színzaj -TP_DIRPYRDENOISE_GAMMA;Gamma -TP_DIRPYRDENOISE_LABEL;Zajcsökkentés -TP_DIRPYRDENOISE_LUMA;Luminancia +TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Színzaj +TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminancia +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LABEL;Zajcsökkentés +TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma TP_DIRPYREQUALIZER_LABEL;Kontraszt részletek szerint TP_DIRPYREQUALIZER_LUMACOARSEST;Durva részletek TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Kontraszt- @@ -872,6 +867,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !!!!!!!!!!!!!!!!!!!!!!!!! !BATCHQUEUE_DESTFILENAME;Path and file name +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !CURVEEDITOR_AXIS_IN;I: !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: @@ -936,6 +932,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !GENERAL_AUTO;Automatic !GENERAL_CLOSE;Close !GENERAL_OPEN;Open +!GENERAL_SLIDER;Slider !GENERAL_WARNING;Warning !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. !HISTOGRAM_TOOLTIP_CHRO;Show/Hide chromaticity histogram. @@ -947,7 +944,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !HISTORY_MSG_170;Vibrance - HH curve !HISTORY_MSG_171;L*a*b* - LC curve !HISTORY_MSG_172;L*a*b* - Restrict LC -!HISTORY_MSG_173;NR - Luminance detail +!HISTORY_MSG_173;NR - Detail recovery !HISTORY_MSG_174;CIECAM02 !HISTORY_MSG_175;CAM02 - CAT02 adaptation !HISTORY_MSG_176;CAM02 - Viewing surround @@ -977,7 +974,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !HISTORY_MSG_200;CAM02 - Tone mapping !HISTORY_MSG_201;NR - Chrominance - R&G !HISTORY_MSG_202;NR - Chrominance - B&Y -!HISTORY_MSG_203;NR - Method +!HISTORY_MSG_203;NR - Color space !HISTORY_MSG_204;LMMSE enhancement steps !HISTORY_MSG_205;CAM02 - Hot/bad pixel filter !HISTORY_MSG_206;CAT02 - Auto scene luminosity @@ -1029,7 +1026,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !HISTORY_MSG_253;CbDL - Reduce artifacts !HISTORY_MSG_254;CbDL - Skin hue !HISTORY_MSG_255;NR - Median filter -!HISTORY_MSG_256;NR - Median type +!HISTORY_MSG_256;NR - Median - Type !HISTORY_MSG_257;Color Toning !HISTORY_MSG_258;CT - Color curve !HISTORY_MSG_259;CT - Opacity curve @@ -1070,7 +1067,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !HISTORY_MSG_294;Film Simulation - Strength !HISTORY_MSG_295;Film Simulation - Film !HISTORY_MSG_296;NR - Luminance curve -!HISTORY_MSG_297;NR - Quality +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_298;Dead pixel filter !HISTORY_MSG_299;NR - Chrominance curve !HISTORY_MSG_300;- @@ -1248,6 +1245,15 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -1316,6 +1322,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control !PARTIALPASTE_GRADIENT;Graduated filter !PARTIALPASTE_LENSPROFILE;Profiled lens correction +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_PCVIGNETTE;Vignette filter !PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter @@ -1347,6 +1354,12 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_CURVEBBOXPOS;Position of curve copy & paste buttons !PREFERENCES_CURVEBBOXPOS_ABOVE;Above !PREFERENCES_CURVEBBOXPOS_BELOW;Below @@ -1363,6 +1376,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4 !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_DIRECTORIES;Directories +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EXPAUT;Expert !PREFERENCES_FLUOF2;Fluorescent F2 !PREFERENCES_FLUOF7;Fluorescent F7 @@ -1612,14 +1626,14 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_COLORAPP_TCMODE_LABEL3;Curve chroma mode !TP_COLORAPP_TCMODE_LIGHTNESS;Lightness !TP_COLORAPP_TCMODE_SATUR;Saturation -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1660,64 +1674,60 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 -!TP_DIRPYRDENOISE_3X3;3×3 -!TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft -!TP_DIRPYRDENOISE_5X5;5×5 -!TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft -!TP_DIRPYRDENOISE_7X7;7×7 -!TP_DIRPYRDENOISE_9X9;9×9 -!TP_DIRPYRDENOISE_ABM;Chroma only -!TP_DIRPYRDENOISE_AUT;Automatic global -!TP_DIRPYRDENOISE_AUTO;Automatic global -!TP_DIRPYRDENOISE_AUTO_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! -!TP_DIRPYRDENOISE_BLUE;Chrominance - Blue-Yellow -!TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CCCURVE;Chrominance curve -!TP_DIRPYRDENOISE_CHROMAFR;Chrominance -!TP_DIRPYRDENOISE_CTYPE;Method -!TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CUR;Curve -!TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -!TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. -!TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Modulates action of 'Luminance' denoise +!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! +!TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Chrominance - Blue-Yellow +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance +!TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method +!TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Center: Px=%2 Py=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= - +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Chrominance - Red-Green !TP_DIRPYRDENOISE_ENH;Enhanced mode !TP_DIRPYRDENOISE_ENH_TOOLTIP;Increases noise reduction quality at the expense of a 20% processing time increase. -!TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. -!TP_DIRPYRDENOISE_LAB;L*a*b* -!TP_DIRPYRDENOISE_LABM;L*a*b* -!TP_DIRPYRDENOISE_LCURVE;Luminance curve -!TP_DIRPYRDENOISE_LDETAIL;Luminance - Detail -!TP_DIRPYRDENOISE_LM;Luminance only -!TP_DIRPYRDENOISE_LPLABM;Weighted L* (little) + a*b* (normal) -!TP_DIRPYRDENOISE_LTYPE;Luminance control -!TP_DIRPYRDENOISE_LUMAFR;Luminance -!TP_DIRPYRDENOISE_MAN;Manual -!TP_DIRPYRDENOISE_MANU;Manual -!TP_DIRPYRDENOISE_MED;Median Filter -!TP_DIRPYRDENOISE_MEDMETHOD;Median method -!TP_DIRPYRDENOISE_MEDTYPE;Median type -!TP_DIRPYRDENOISE_METHOD;Method -!TP_DIRPYRDENOISE_METHOD11;Quality -!TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Quality can be adapted to the noise pattern. A setting of "high" increases the noise reduction effect at a cost of extended processing time. -!TP_DIRPYRDENOISE_METHOD_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. -!TP_DIRPYRDENOISE_METM_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. -!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_NOISELABEL;Preview noise: Mean=%1 High=%2 -!TP_DIRPYRDENOISE_NOISELABELEMPTY;Preview noise: Mean= - High= - -!TP_DIRPYRDENOISE_NRESID_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -!TP_DIRPYRDENOISE_PASSES;Median iterations -!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -!TP_DIRPYRDENOISE_PON;Auto multi-zones -!TP_DIRPYRDENOISE_PRE;Preview multi-zones -!TP_DIRPYRDENOISE_PREV;Preview -!TP_DIRPYRDENOISE_PREVLABEL;Preview size=%1, Center: Px=%2 Py=%3 -!TP_DIRPYRDENOISE_RED;Chrominance - Red-Green -!TP_DIRPYRDENOISE_RGB;RGB -!TP_DIRPYRDENOISE_RGBM;RGB -!TP_DIRPYRDENOISE_SHAL;Standard -!TP_DIRPYRDENOISE_SHALBI;High +!TP_DIRPYRDENOISE_LABEL;Noise Reduction +!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control +!TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve +!TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Detail recovery +!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance +!TP_DIRPYRDENOISE_MAIN_COLORSPACE;Color space +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. +!TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. +!TP_DIRPYRDENOISE_MAIN_MODE;Mode +!TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressive +!TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Conservative +!TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Conservative" preserves low frequency chroma patterns, while "aggressive" obliterates them. +!TP_DIRPYRDENOISE_MEDIAN_METHOD;Median method +!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median Filter +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Luminance only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +!TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. +!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) +!TP_DIRPYRDENOISE_MEDIAN_PASSES;Median iterations +!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_DIRPYRDENOISE_MEDIAN_TYPE;Median type +!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. !TP_DIRPYRDENOISE_SLI;Slider -!TP_DIRPYRDENOISE_TILELABEL;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_TYPE_3X3;3×3 +!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft +!TP_DIRPYRDENOISE_TYPE_5X5;5×5 +!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft +!TP_DIRPYRDENOISE_TYPE_7X7;7×7 +!TP_DIRPYRDENOISE_TYPE_9X9;9×9 !TP_DIRPYREQUALIZER_ALGO;Skin Color Range !TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: closer to the colors of the skin, minimizing the action on other colors\nLarge: avoid more artifacts. !TP_DIRPYREQUALIZER_ARTIF;Reduce artifacts @@ -1816,6 +1826,15 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_LENSPROFILE_USECA;Chromatic aberration correction !TP_LENSPROFILE_USEDIST;Distortion correction !TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged !TP_NEUTRAL;Reset !TP_PCVIGNETTE_FEATHER;Feather !TP_PCVIGNETTE_FEATHER_TOOLTIP;Feathering:\n0 = corners only,\n50 = halfway to center,\n100 = to center. @@ -1848,7 +1867,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_RAW_DCB;DCB !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... -!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast !TP_RAW_HD;Threshold @@ -1856,7 +1875,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_RAW_HPHD;HPHD !TP_RAW_IGV;IGV !TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_LMMSE;LMMSE !TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps !TP_RAW_LMMSE_TOOLTIP;Adds gamma (step 1), median (steps 2-4) and refinement (steps 5-6) to reduce artifacts and improve the signal-to-noise ratio. @@ -1895,6 +1914,8 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal !TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical !TP_RAW_PIXELSHIFTNREADISO;nRead +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. !TP_RAW_PIXELSHIFTPRNU;PRNU (%) !TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight !TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -1908,6 +1929,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue !TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green !TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +!TP_RAW_RCD;RCD !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index 0ea147eb8..9cf4cdf5d 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -22,6 +22,7 @@ ABOUT_TAB_RELEASENOTES;Uitgave-opmerkingen ABOUT_TAB_SPLASH;Splash ADJUSTER_RESET_TO_DEFAULT;Terug naar beginwaarde BATCHQUEUE_AUTOSTART;Autostart +BATCHQUEUE_AUTOSTARTHINT;Start verwerking automatisch wanneer nieuwe foto arriveert BATCHQUEUE_DESTFILENAME;Pad en bestandsnaam BATCH_PROCESSING;Batch-verwerking CURVEEDITOR_AXIS_IN;I: @@ -208,12 +209,7 @@ FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Toon niet-opgeslagen/verwerkte foto's.\nSne FILEBROWSER_SHOWTRASHHINT;Toon inhoud prullenbak\nSneltoets: Ctrl-t FILEBROWSER_SHOWUNCOLORHINT;Toon foto's zonder kleurlabel.\nSneltoets: Alt-0 FILEBROWSER_SHOWUNRANKHINT;Toon foto's zonder sterwaardering.\nSneltoets: 0 -FILEBROWSER_STARTPROCESSING;Start verwerking -FILEBROWSER_STARTPROCESSINGHINT;Start verwerking van bestanden in verwerkingsrij -FILEBROWSER_STOPPROCESSING;Stop verwerking -FILEBROWSER_STOPPROCESSINGHINT;Stop verwerking van bestanden in verwerkingsrij FILEBROWSER_THUMBSIZE;Miniaturen -FILEBROWSER_TOOLTIP_STOPPROCESSING;Start verwerking automatisch wanneer nieuwe foto arriveert FILEBROWSER_UNRANK_TOOLTIP;Verwijder sterwaardering\nSneltoets: Shift-0 FILEBROWSER_ZOOMINHINT;Groter FILEBROWSER_ZOOMOUTHINT;Kleiner @@ -431,7 +427,6 @@ HISTORY_MSG_169;L*a*b* - CH curve HISTORY_MSG_170;Levendigheid curve HISTORY_MSG_171;L*a*b* - LC curve HISTORY_MSG_172;L*a*b* - Beperk LC -HISTORY_MSG_173;RO - Luminantie Detail HISTORY_MSG_174;CIECAM02 HISTORY_MSG_175;CAM02 - CAT02 toepassing HISTORY_MSG_176;CAM02 - Weergave omgeving @@ -461,7 +456,6 @@ HISTORY_MSG_199;CAM02 - Toont in histogram HISTORY_MSG_200;CAM02 - Tonemapping HISTORY_MSG_201;RO - Chromin. rood-groen HISTORY_MSG_202;RO - Chromin. blauw-geel -HISTORY_MSG_203;RO - Methode HISTORY_MSG_204;LMMSE Verbetering HISTORY_MSG_205;CAM02 hete/dode pixels HISTORY_MSG_206;CAT02 - Opname Lum. Auto @@ -513,7 +507,6 @@ HISTORY_MSG_252;DC - Huidtonen HISTORY_MSG_253;DC - Verminder artefacten HISTORY_MSG_254;DC - Huidtint HISTORY_MSG_255;DC - Algoritme -HISTORY_MSG_256;RO - Mediaan Type HISTORY_MSG_257;Kleurtint HISTORY_MSG_258;KT - Kleur curve HISTORY_MSG_259;KT - Dekking @@ -554,7 +547,6 @@ HISTORY_MSG_293;Film Simuleren HISTORY_MSG_294;Film - Sterkte HISTORY_MSG_295;Film - Film HISTORY_MSG_296;RO - Luminantie curve -HISTORY_MSG_297;RO - Kwaliteit HISTORY_MSG_298;Dode pixels filter HISTORY_MSG_299;RO - Chrominantie curve HISTORY_MSG_300;- @@ -979,7 +971,6 @@ PREFERENCES_DIRLAST;Laatst bezochte map PREFERENCES_DIROTHER;Anders PREFERENCES_DIRSELECTDLG;Selecteer standaardmap bij opstarten... PREFERENCES_DIRSOFTWARE;Installatiemap -PREFERENCES_EDITORCMDLINE;Andere editor, geef pad PREFERENCES_EDITORLAYOUT;Bewerkingsvenster PREFERENCES_EXPAUT;Expert PREFERENCES_EXTERNALEDITOR;Externe editor @@ -1402,69 +1393,63 @@ TP_DARKFRAME_LABEL;Donkerframe TP_DEFRINGE_LABEL;Verzachten (Lab/CIECAM02) TP_DEFRINGE_RADIUS;Straal TP_DEFRINGE_THRESHOLD;Drempel -TP_DIRPYRDENOISE_3X3;3×3 -TP_DIRPYRDENOISE_3X3_SOFT;3×3 zacht -TP_DIRPYRDENOISE_5X5;5×5 -TP_DIRPYRDENOISE_5X5_SOFT;5×5 zacht -TP_DIRPYRDENOISE_7X7;7×7 -TP_DIRPYRDENOISE_9X9;9×9 -TP_DIRPYRDENOISE_ABM;Alleen chroma -TP_DIRPYRDENOISE_AUT;Automatisch algemeen -TP_DIRPYRDENOISE_AUTO;Automatisch algemeen -TP_DIRPYRDENOISE_AUTO_TOOLTIP;Probeert chroma ruis te bepalen\nWees voorzichtig, deze berekening is een gemiddelde en kan subjectief zijn! -TP_DIRPYRDENOISE_BLUE;Chrominantie Blauw & Geel -TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Handmatig\nWerkt op de hele afbeelding.\nDe instellingen voor ruisonderdrukking moeten zelf worden bepaald.\n\nAutomatisch algemeen\nWerkt op de hele afbeelding.\n9 gebieden worden gebruikt om de chroma ruisonderdrukking te bepalen.\n\nVoorbeeld\nWerkt op de hele afbeelding.\nHet deel van de afbeelding dat zichtbaar is in het voorbeeld wordt gebruikt om de chroma ruisonderdrukking te bepalen. -TP_DIRPYRDENOISE_CCCURVE;Chrominantie curve -TP_DIRPYRDENOISE_CHROMA;Chrominantie (master) -TP_DIRPYRDENOISE_CHROMAFR;Chrominantie -TP_DIRPYRDENOISE_CTYPE;Auto methode -TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Handmatig\nWerkt op de hele afbeelding.\nDe instellingen voor ruisonderdrukking moeten zelf worden bepaald.\n\nAutomatisch algemeen\nWerkt op de hele afbeelding.\n9 gebieden worden gebruikt om de chroma ruisonderdrukking te bepalen.\n\nAutomatisch multi-zones\nGeen voorbeeld - werkt alleen bij opslaan. Gebruik de "Voorbeeld" methode om een idee te krijgen van het verwachte resultaat door de tegelgrootte en het centrum van het voorbeeld te matchen.\nDe afbeelding is verdeeld in tegels (10 tot 70 afhankelijk van de afbeeldingsgrootte) en van elke tegel wordt de eigen chroma ruisonderdrukking bepaald.\n\Voorbeeld\nWerkt op de hele afbeelding.\nHet deel van de afbeelding dat zichtbaar is in het voorbeeld wordt gebruikt om de chroma ruisonderdrukking te bepalen. -TP_DIRPYRDENOISE_CUR;Curve -TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Vergroot (vermenigvuldigt) de waarde van alle chrominantie schuifbalken.\nMet deze curve kun je de sterkte aanpassen van de chromatische ruisonderdrukking. Bijvoorbeeld door de werking te vergroten in gebieden met lage verzadiging en te verminderen in gebieden met hoge verzadiging. -TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Luminantie ruisonderdrukking. Werkt niet lineair maar modulerend +TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zone +TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatisch algemeen +TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Probeert chroma ruis te bepalen\nWees voorzichtig, deze berekening is een gemiddelde en kan subjectief zijn! +TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Chrominantie Blauw & Geel +TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominantie curve +TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominantie +TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Handmatig +TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Chrominantie (master) +TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Auto methode +TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Handmatig\nWerkt op de hele afbeelding.\nDe instellingen voor ruisonderdrukking moeten zelf worden bepaald.\n\nAutomatisch algemeen\nWerkt op de hele afbeelding.\n9 gebieden worden gebruikt om de chroma ruisonderdrukking te bepalen.\n\nVoorbeeld\nWerkt op de hele afbeelding.\nHet deel van de afbeelding dat zichtbaar is in het voorbeeld wordt gebruikt om de chroma ruisonderdrukking te bepalen. +TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Handmatig\nWerkt op de hele afbeelding.\nDe instellingen voor ruisonderdrukking moeten zelf worden bepaald.\n\nAutomatisch algemeen\nWerkt op de hele afbeelding.\n9 gebieden worden gebruikt om de chroma ruisonderdrukking te bepalen.\n\nAutomatisch multi-zones\nGeen voorbeeld - werkt alleen bij opslaan. Gebruik de "Voorbeeld" methode om een idee te krijgen van het verwachte resultaat door de tegelgrootte en het centrum van het voorbeeld te matchen.\nDe afbeelding is verdeeld in tegels (10 tot 70 afhankelijk van de afbeeldingsgrootte) en van elke tegel wordt de eigen chroma ruisonderdrukking bepaald.\n\Voorbeeld\nWerkt op de hele afbeelding.\nHet deel van de afbeelding dat zichtbaar is in het voorbeeld wordt gebruikt om de chroma ruisonderdrukking te bepalen. +TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Voorbeeld multi-zone +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Voorbeeld +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Toont de overgebleven ruisniveaus van het zichtbare deel van de afbeelding in het voorbeeld na wavelet.\n\n>300 Veel ruis\n100-300 Gemiddeld ruis\n50-100 Weinig ruis\n<50 Zeer weinig ruis\n\nVoorzichtig, de waarden zullen verschillen tussen RGB en L*a*b* mode. De RGB waarden zijn minder accuraat omdat de RGB mode luminantie en chrominantie niet volledig scheidt. +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Voorbeeld grootte=%1, Centrum: Px=%2 Py=%3 +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Voorbeeld ruis: Gemiddeld=%1 Hoog=%2 +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Voorbeeld ruis: Gemiddeld= - Hoog= - +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tegel grootte=%1, Centrum: Tx=%2 Ty=%3 +TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Chrominantie Rood & Groen TP_DIRPYRDENOISE_ENH;Verbeteren TP_DIRPYRDENOISE_ENH_TOOLTIP;Verbetert de ruisonderdrukking, maar vergroot de verwerkingstijd met ongeveer 20% -TP_DIRPYRDENOISE_GAMMA;Gamma -TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gamma varieert de mate van ruisonderdrukking over het bereik van tinten. Kleinere waarden beperken zich tot schaduwen, terwijl grotere waarden het bereik oprekken tot heldere tinten -TP_DIRPYRDENOISE_LAB;L*a*b* -TP_DIRPYRDENOISE_LABEL;Ruisonderdrukking -TP_DIRPYRDENOISE_LABM;L*a*b* -TP_DIRPYRDENOISE_LCURVE;Luminantie curve -TP_DIRPYRDENOISE_LDETAIL;Luminantie Detail -TP_DIRPYRDENOISE_LM;Alleen Luminantie -TP_DIRPYRDENOISE_LPLABM;Gewogen L* (weinig) + a*b* (normaal) -TP_DIRPYRDENOISE_LTYPE;Type gereedschap -TP_DIRPYRDENOISE_LUMA;Luminantie -TP_DIRPYRDENOISE_LUMAFR;Luminantie -TP_DIRPYRDENOISE_MAN;Handmatig -TP_DIRPYRDENOISE_MANU;Handmatig -TP_DIRPYRDENOISE_MED;Mediaan filter -TP_DIRPYRDENOISE_MEDMETHOD;Methode -TP_DIRPYRDENOISE_MEDTYPE;Type -TP_DIRPYRDENOISE_METHOD;Methode -TP_DIRPYRDENOISE_METHOD11;Kwaliteit -TP_DIRPYRDENOISE_METHOD11_TOOLTIP;De kwaliteit kan worden aangepast aan de hoeveelheid ruis. \nHoog verbetert de ruisonderdrukking, maar verlengt de verwerkingstijd -TP_DIRPYRDENOISE_METHOD_TOOLTIP;Voor raw afbeeldingen kan RGB of Lab methode worden gebruikt.\n\nVoor niet-raw afbeeldingen zal altijd de Lab methode worden gebruikt, ongeacht de geselecteerde methode. -TP_DIRPYRDENOISE_METM_TOOLTIP;De "Alleen Luminantie" en "L*a*b*" methodes worden meteen na de wavelet stap uitgevoerd bij het onderdrukken van ruis.\nDe "RGB" methode, wordt echter als laatste stap uitgevoerd bij ruisonderdrukking. -TP_DIRPYRDENOISE_MET_TOOLTIP;Gebruik een mediaan filter van gewenste venster grootte. Hoe groter het venster hoe langer het duurt.\n\n3×3 zacht: behandeld 5 pixels in een 3×3 pixel venster.\n3×3: behandeld 9 pixels in een 3×3 pixel venster.\n5×5 zacht: behandeld 13 pixels in een 5×5 pixel venster.\n5×5: behandeld 25 pixels in een 5×5 pixel venster.\n7×7: behandeld 49 pixels in een 7×7 pixel venster.\n9×9: behandeld 81 pixels in a 9×9 pixel venster.\n\nSoms is het mogelijk om een betere kwaliteit te krijgen door het uitvoeren van meerdere herhalingen met een kleiner venster dan één uitvoering met een groter venster. -TP_DIRPYRDENOISE_NOISELABEL;Voorbeeld ruis: Gemiddeld=%1 Hoog=%2 -TP_DIRPYRDENOISE_NOISELABELEMPTY;Voorbeeld ruis: Gemiddeld= - Hoog= - -TP_DIRPYRDENOISE_NRESID_TOOLTIP;Toont de overgebleven ruisniveaus van het zichtbare deel van de afbeelding in het voorbeeld na wavelet.\n\n>300 Veel ruis\n100-300 Gemiddeld ruis\n50-100 Weinig ruis\n<50 Zeer weinig ruis\n\nVoorzichtig, de waarden zullen verschillen tussen RGB en L*a*b* mode. De RGB waarden zijn minder accuraat omdat de RGB mode luminantie en chrominantie niet volledig scheidt. +TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Type gereedschap +TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminantie curve +TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Luminantie Detail +TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminantie +TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminantie +TP_DIRPYRDENOISE_MAIN_COLORSPACE;Methode +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LABEL;Ruisonderdrukking +TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;Voor raw afbeeldingen kan RGB of Lab methode worden gebruikt.\n\nVoor niet-raw afbeeldingen zal altijd de Lab methode worden gebruikt, ongeacht de geselecteerde methode. +TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma +TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma varieert de mate van ruisonderdrukking over het bereik van tinten. Kleinere waarden beperken zich tot schaduwen, terwijl grotere waarden het bereik oprekken tot heldere tinten +TP_DIRPYRDENOISE_MAIN_MODE;Kwaliteit +TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Hoog +TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Standaard +TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;De kwaliteit kan worden aangepast aan de hoeveelheid ruis. \nHoog verbetert de ruisonderdrukking, maar verlengt de verwerkingstijd +TP_DIRPYRDENOISE_MEDIAN_METHOD;Methode +TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Alleen chroma +TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Mediaan filter +TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Alleen Luminantie +TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;De "Alleen Luminantie" en "L*a*b*" methodes worden meteen na de wavelet stap uitgevoerd bij het onderdrukken van ruis.\nDe "RGB" methode, wordt echter als laatste stap uitgevoerd bij ruisonderdrukking. +TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Gewogen L* (weinig) + a*b* (normaal) +TP_DIRPYRDENOISE_MEDIAN_PASSES;Mediaan herhalingen +TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Het gebruik van drie mediaan filter herhalingen met een 3×3 venster grootte geeft meestal een beter resultaat dan het gebruik van één mediaan filter herhaling met eeen 7×7 venster grootte. +TP_DIRPYRDENOISE_MEDIAN_TYPE;Type +TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Gebruik een mediaan filter van gewenste venster grootte. Hoe groter het venster hoe langer het duurt.\n\n3×3 zacht: behandeld 5 pixels in een 3×3 pixel venster.\n3×3: behandeld 9 pixels in een 3×3 pixel venster.\n5×5 zacht: behandeld 13 pixels in een 5×5 pixel venster.\n5×5: behandeld 25 pixels in een 5×5 pixel venster.\n7×7: behandeld 49 pixels in een 7×7 pixel venster.\n9×9: behandeld 81 pixels in a 9×9 pixel venster.\n\nSoms is het mogelijk om een betere kwaliteit te krijgen door het uitvoeren van meerdere herhalingen met een kleiner venster dan één uitvoering met een groter venster. TP_DIRPYRDENOISE_PASSE;Herhalingen -TP_DIRPYRDENOISE_PASSES;Mediaan herhalingen -TP_DIRPYRDENOISE_PASSES_TOOLTIP;Het gebruik van drie mediaan filter herhalingen met een 3×3 venster grootte geeft meestal een beter resultaat dan het gebruik van één mediaan filter herhaling met eeen 7×7 venster grootte. -TP_DIRPYRDENOISE_PON;Auto multi-zone -TP_DIRPYRDENOISE_PRE;Voorbeeld multi-zone -TP_DIRPYRDENOISE_PREV;Voorbeeld -TP_DIRPYRDENOISE_PREVLABEL;Voorbeeld grootte=%1, Centrum: Px=%2 Py=%3 -TP_DIRPYRDENOISE_RED;Chrominantie Rood & Groen -TP_DIRPYRDENOISE_RGB;RGB -TP_DIRPYRDENOISE_RGBM;RGB -TP_DIRPYRDENOISE_SHAL;Standaard -TP_DIRPYRDENOISE_SHALBI;Hoog TP_DIRPYRDENOISE_SLI;Schuifbalk -TP_DIRPYRDENOISE_TILELABEL;Tegel grootte=%1, Centrum: Tx=%2 Ty=%3 +TP_DIRPYRDENOISE_TYPE_3X3;3×3 +TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 zacht +TP_DIRPYRDENOISE_TYPE_5X5;5×5 +TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 zacht +TP_DIRPYRDENOISE_TYPE_7X7;7×7 +TP_DIRPYRDENOISE_TYPE_9X9;9×9 TP_DIRPYREQUALIZER_ALGO;Algoritme Huid TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fijn: behoud de kleuren van de huid, minimaliseert de actie op andere kleuren\nGroot: vermijd artefacten TP_DIRPYREQUALIZER_ARTIF;Verminder artefacten @@ -2136,9 +2121,15 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !DONT_SHOW_AGAIN;Don't show this message again. !EXIFPANEL_SHOWALL;Show all +!GENERAL_SLIDER;Slider !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. +!HISTORY_MSG_173;NR - Detail recovery +!HISTORY_MSG_203;NR - Color space +!HISTORY_MSG_256;NR - Median - Type +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_475;PS - Equalize channel !HISTORY_MSG_476;CAM02 - Temp out @@ -2156,16 +2147,33 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters !LENSPROFILE_CORRECTION_LCPFILE;LCP File !LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters !LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. !MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_TM_FATTAL;HDR Tone mapping !PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_D50_OLD;5000K !PREFERENCES_DIRECTORIES;Directories +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_GREY18_OLD;Yb=18 CIE L#50 !PREFERENCES_LANG;Language !PREFERENCES_PROFILESAVEBOTH;Save processing profile both to the cache and next to the input file @@ -2184,13 +2192,27 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_LABEL;Noise Reduction +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL;Equalize per channel !TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL_TOOLTIP;Enabled: Equalize the RGB channels individually.\nDisabled: Use same equalization factor for all channels. +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. +!TP_RAW_RCD;RCD !TP_RETINEX_GAINOFFS;Gain and Offset (brightness) !TP_RETINEX_GAINTRANSMISSION;Gain transmission !TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain. diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index 7e68880b8..fdb78ffc0 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -58,10 +58,6 @@ FILEBROWSER_SHOWRANK4HINT;Vis bilder rangert med 4 stjerne FILEBROWSER_SHOWRANK5HINT;Vis bilder rangert med 5 stjerne FILEBROWSER_SHOWTRASHHINT;Vis innholdet i søpla FILEBROWSER_SHOWUNRANKHINT;Vis unrangerte bilder -FILEBROWSER_STARTPROCESSING;Start Processing -FILEBROWSER_STARTPROCESSINGHINT;Begynn prosessering/lagring av bilder i køen -FILEBROWSER_STOPPROCESSING;Stopp prosesseringen -FILEBROWSER_STOPPROCESSINGHINT;Stopp prosesseringen av bilder FILEBROWSER_THUMBSIZE;Thumbnail størrelse FILEBROWSER_ZOOMINHINT;Øk thumbnail størrelse FILEBROWSER_ZOOMOUTHINT;Reduser thumbnail størrelse @@ -249,7 +245,6 @@ PREFERENCES_DIRLAST;Sidste besøkte mappe PREFERENCES_DIROTHER;Annen PREFERENCES_DIRSELECTDLG;Velg bildemappe ved oppstart... PREFERENCES_DIRSOFTWARE;Installasjons-mappe -PREFERENCES_EDITORCMDLINE;Annen kommandolinje PREFERENCES_EXTERNALEDITOR;Ekstern editor PREFERENCES_FBROWSEROPTS;Filfremviser-innstillinger PREFERENCES_FILEFORMAT;Filformat @@ -426,7 +421,9 @@ TP_WBALANCE_TEMPERATURE;Temperatur !ABOUT_TAB_RELEASENOTES;Release Notes !ABOUT_TAB_SPLASH;Splash !BATCHQUEUE_AUTOSTART;Auto-start +!BATCHQUEUE_AUTOSTARTHINT;Start processing automatically when a new job arrives. !BATCHQUEUE_DESTFILENAME;Path and file name +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !BATCH_PROCESSING;Batch Processing !CURVEEDITOR_AXIS_IN;I: !CURVEEDITOR_AXIS_LEFT_TAN;LT: @@ -557,7 +554,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !FILEBROWSER_SHOWRECENTLYSAVEDHINT;Show saved images.\nShortcut: Alt-7 !FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Show unsaved images.\nShortcut: Alt-6 !FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0 -!FILEBROWSER_TOOLTIP_STOPPROCESSING;Start processing automatically when a new job arrives. !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 !FILECHOOSER_FILTER_ANY;All files !FILECHOOSER_FILTER_COLPROF;Color profiles @@ -575,6 +571,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open +!GENERAL_SLIDER;Slider !GENERAL_UNCHANGED;(Unchanged) !GENERAL_WARNING;Warning !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. @@ -673,7 +670,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_170;Vibrance - HH curve !HISTORY_MSG_171;L*a*b* - LC curve !HISTORY_MSG_172;L*a*b* - Restrict LC -!HISTORY_MSG_173;NR - Luminance detail +!HISTORY_MSG_173;NR - Detail recovery !HISTORY_MSG_174;CIECAM02 !HISTORY_MSG_175;CAM02 - CAT02 adaptation !HISTORY_MSG_176;CAM02 - Viewing surround @@ -703,7 +700,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_200;CAM02 - Tone mapping !HISTORY_MSG_201;NR - Chrominance - R&G !HISTORY_MSG_202;NR - Chrominance - B&Y -!HISTORY_MSG_203;NR - Method +!HISTORY_MSG_203;NR - Color space !HISTORY_MSG_204;LMMSE enhancement steps !HISTORY_MSG_205;CAM02 - Hot/bad pixel filter !HISTORY_MSG_206;CAT02 - Auto scene luminosity @@ -755,7 +752,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_253;CbDL - Reduce artifacts !HISTORY_MSG_254;CbDL - Skin hue !HISTORY_MSG_255;NR - Median filter -!HISTORY_MSG_256;NR - Median type +!HISTORY_MSG_256;NR - Median - Type !HISTORY_MSG_257;Color Toning !HISTORY_MSG_258;CT - Color curve !HISTORY_MSG_259;CT - Opacity curve @@ -796,7 +793,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_294;Film Simulation - Strength !HISTORY_MSG_295;Film Simulation - Film !HISTORY_MSG_296;NR - Luminance curve -!HISTORY_MSG_297;NR - Quality +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_298;Dead pixel filter !HISTORY_MSG_299;NR - Chrominance curve !HISTORY_MSG_300;- @@ -974,6 +971,15 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -1091,6 +1097,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PARTIALPASTE_IMPULSEDENOISE;Impulse noise reduction !PARTIALPASTE_LABCURVE;L*a*b* adjustments !PARTIALPASTE_LENSPROFILE;Profiled lens correction +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_PCVIGNETTE;Vignette filter !PARTIALPASTE_PERSPECTIVE;Perspective !PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter @@ -1142,6 +1149,12 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_CURVEBBOXPOS;Position of curve copy & paste buttons !PREFERENCES_CURVEBBOXPOS_ABOVE;Above !PREFERENCES_CURVEBBOXPOS_BELOW;Below @@ -1166,6 +1179,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EDITORLAYOUT;Editor Layout !PREFERENCES_EXPAUT;Expert !PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) @@ -1459,14 +1473,14 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_COLORAPP_TCMODE_LABEL3;Curve chroma mode !TP_COLORAPP_TCMODE_LIGHTNESS;Lightness !TP_COLORAPP_TCMODE_SATUR;Saturation -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1515,68 +1529,63 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold -!TP_DIRPYRDENOISE_3X3;3×3 -!TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft -!TP_DIRPYRDENOISE_5X5;5×5 -!TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft -!TP_DIRPYRDENOISE_7X7;7×7 -!TP_DIRPYRDENOISE_9X9;9×9 -!TP_DIRPYRDENOISE_ABM;Chroma only -!TP_DIRPYRDENOISE_AUT;Automatic global -!TP_DIRPYRDENOISE_AUTO;Automatic global -!TP_DIRPYRDENOISE_AUTO_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! -!TP_DIRPYRDENOISE_BLUE;Chrominance - Blue-Yellow -!TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CCCURVE;Chrominance curve -!TP_DIRPYRDENOISE_CHROMA;Chrominance - Master -!TP_DIRPYRDENOISE_CHROMAFR;Chrominance -!TP_DIRPYRDENOISE_CTYPE;Method -!TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CUR;Curve -!TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -!TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. -!TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Modulates action of 'Luminance' denoise +!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! +!TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Chrominance - Blue-Yellow +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance +!TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual +!TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Chrominance - Master +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method +!TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Center: Px=%2 Py=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= - +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Chrominance - Red-Green !TP_DIRPYRDENOISE_ENH;Enhanced mode !TP_DIRPYRDENOISE_ENH_TOOLTIP;Increases noise reduction quality at the expense of a 20% processing time increase. -!TP_DIRPYRDENOISE_GAMMA;Gamma -!TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. -!TP_DIRPYRDENOISE_LAB;L*a*b* !TP_DIRPYRDENOISE_LABEL;Noise Reduction -!TP_DIRPYRDENOISE_LABM;L*a*b* -!TP_DIRPYRDENOISE_LCURVE;Luminance curve -!TP_DIRPYRDENOISE_LDETAIL;Luminance - Detail -!TP_DIRPYRDENOISE_LM;Luminance only -!TP_DIRPYRDENOISE_LPLABM;Weighted L* (little) + a*b* (normal) -!TP_DIRPYRDENOISE_LTYPE;Luminance control -!TP_DIRPYRDENOISE_LUMA;Luminance -!TP_DIRPYRDENOISE_LUMAFR;Luminance -!TP_DIRPYRDENOISE_MAN;Manual -!TP_DIRPYRDENOISE_MANU;Manual -!TP_DIRPYRDENOISE_MED;Median Filter -!TP_DIRPYRDENOISE_MEDMETHOD;Median method -!TP_DIRPYRDENOISE_MEDTYPE;Median type -!TP_DIRPYRDENOISE_METHOD;Method -!TP_DIRPYRDENOISE_METHOD11;Quality -!TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Quality can be adapted to the noise pattern. A setting of "high" increases the noise reduction effect at a cost of extended processing time. -!TP_DIRPYRDENOISE_METHOD_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. -!TP_DIRPYRDENOISE_METM_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. -!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_NOISELABEL;Preview noise: Mean=%1 High=%2 -!TP_DIRPYRDENOISE_NOISELABELEMPTY;Preview noise: Mean= - High= - -!TP_DIRPYRDENOISE_NRESID_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -!TP_DIRPYRDENOISE_PASSES;Median iterations -!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -!TP_DIRPYRDENOISE_PON;Auto multi-zones -!TP_DIRPYRDENOISE_PRE;Preview multi-zones -!TP_DIRPYRDENOISE_PREV;Preview -!TP_DIRPYRDENOISE_PREVLABEL;Preview size=%1, Center: Px=%2 Py=%3 -!TP_DIRPYRDENOISE_RED;Chrominance - Red-Green -!TP_DIRPYRDENOISE_RGB;RGB -!TP_DIRPYRDENOISE_RGBM;RGB -!TP_DIRPYRDENOISE_SHAL;Standard -!TP_DIRPYRDENOISE_SHALBI;High +!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control +!TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve +!TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Detail recovery +!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance +!TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminance +!TP_DIRPYRDENOISE_MAIN_COLORSPACE;Color space +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. +!TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma +!TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. +!TP_DIRPYRDENOISE_MAIN_MODE;Mode +!TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressive +!TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Conservative +!TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Conservative" preserves low frequency chroma patterns, while "aggressive" obliterates them. +!TP_DIRPYRDENOISE_MEDIAN_METHOD;Median method +!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median Filter +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Luminance only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +!TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. +!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) +!TP_DIRPYRDENOISE_MEDIAN_PASSES;Median iterations +!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_DIRPYRDENOISE_MEDIAN_TYPE;Median type +!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. !TP_DIRPYRDENOISE_SLI;Slider -!TP_DIRPYRDENOISE_TILELABEL;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_TYPE_3X3;3×3 +!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft +!TP_DIRPYRDENOISE_TYPE_5X5;5×5 +!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft +!TP_DIRPYRDENOISE_TYPE_7X7;7×7 +!TP_DIRPYRDENOISE_TYPE_9X9;9×9 !TP_DIRPYREQUALIZER_ALGO;Skin Color Range !TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: closer to the colors of the skin, minimizing the action on other colors\nLarge: avoid more artifacts. !TP_DIRPYREQUALIZER_ARTIF;Reduce artifacts @@ -1727,6 +1736,15 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_LENSPROFILE_USECA;Chromatic aberration correction !TP_LENSPROFILE_USEDIST;Distortion correction !TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged !TP_NEUTRAL;Reset !TP_NEUTRAL_TIP;Resets exposure sliders to neutral values.\nApplies to the same controls that Auto Levels applies to, regardless of whether you used Auto Levels or not. !TP_PCVIGNETTE_FEATHER;Feather @@ -1776,7 +1794,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RAW_DCBITERATIONS;Number of DCB iterations !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... -!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast !TP_RAW_HD;Threshold @@ -1784,7 +1802,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RAW_HPHD;HPHD !TP_RAW_IGV;IGV !TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_LABEL;Demosaicing !TP_RAW_LMMSE;LMMSE !TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps @@ -1824,6 +1842,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal !TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical !TP_RAW_PIXELSHIFTNREADISO;nRead +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. !TP_RAW_PIXELSHIFTPRNU;PRNU (%) !TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight !TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -1837,6 +1857,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue !TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green !TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +!TP_RAW_RCD;RCD !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index 3c54cc184..eda9251ce 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -15,6 +15,7 @@ ABOUT_TAB_RELEASENOTES;Notatki eksploatacyjne ABOUT_TAB_SPLASH;Ekran powitalny ADJUSTER_RESET_TO_DEFAULT;Przywróć domyślne BATCHQUEUE_AUTOSTART;Autostart +BATCHQUEUE_AUTOSTARTHINT;Rozpocznij przetwarzanie automatycznie gdy pojawi się nowe zadanie. BATCHQUEUE_DESTFILENAME;Ścieżka i nazwa pliku BATCH_PROCESSING;Przetwarzanie wsadowe CURVEEDITOR_CURVE;Krzywa @@ -178,12 +179,7 @@ FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Pokazuje niezapisane zdjęcia.\nSkrót: FILEBROWSER_SHOWTRASHHINT;Pokazuje zawartość kosza.\nSkrót: Ctrl-t FILEBROWSER_SHOWUNCOLORHINT;Pokazuje zdjęcia bez kolorowej etykiety.\nSkrót: Alt-0 FILEBROWSER_SHOWUNRANKHINT;Pokazuje nieocenione zdjęcia.\nSkrót: 0 -FILEBROWSER_STARTPROCESSING;Rozpocznij przetwarzanie -FILEBROWSER_STARTPROCESSINGHINT;Rozpoczyna przetwarzanie/zapisywanie plików z kolejki. -FILEBROWSER_STOPPROCESSING;Zatrzymaj przetwarzanie -FILEBROWSER_STOPPROCESSINGHINT;Zatrzymuje przetwarzanie zdjęć. FILEBROWSER_THUMBSIZE;Rozmiar minaturek -FILEBROWSER_TOOLTIP_STOPPROCESSING;Rozpocznij przetwarzanie automatycznie gdy pojawi się nowe zadanie. FILEBROWSER_UNRANK_TOOLTIP;Usuń ocenę.\nSkrót: Shift-0 FILEBROWSER_ZOOMINHINT;Zwiększa rozmiar miniaturek.\n\nSkróty:\n+ - Tryb wielu zakładek,\nAlt-+ - Tryb pojedyńczej zakładki. FILEBROWSER_ZOOMOUTHINT;Zmniejsza rozmiar miniaturek.\n\nSkróty:\n- - Tryb wielu zakładek,\nAlt-- - Tryb pojedyńczej zakładki. @@ -390,7 +386,6 @@ HISTORY_MSG_169;L*a*b* - Krzywa CH HISTORY_MSG_170;Jaskrawość - Krzywa HH HISTORY_MSG_171;L*a*b* - Krzywa LC HISTORY_MSG_172;L*a*b* - Ogranicz LC -HISTORY_MSG_173;RS - Szczegóły luminancji HISTORY_MSG_174;CIECAM02 HISTORY_MSG_175;CAM02 - Adaptacja CAT02 HISTORY_MSG_176;CAM02 - Otoczenie @@ -420,7 +415,6 @@ HISTORY_MSG_199;CAM02 - Histogramy wyjściowe HISTORY_MSG_200;CAMO2 - Tone mapping HISTORY_MSG_201;RS - Chrominancja - R&G HISTORY_MSG_202;RS - Chrominancja - B&Y -HISTORY_MSG_203;RS - Metoda HISTORY_MSG_204;Kroki poprawy LMMSE HISTORY_MSG_205;CAM02 - Gorące/uszkodzone px HISTORY_MSG_206;CAT02 - Auto luminancja sceny @@ -472,7 +466,6 @@ HISTORY_MSG_252;KwgPS - Odcienie skóry HISTORY_MSG_253;KwgPS - Redukcja błędów HISTORY_MSG_254;KwgPS - Odcienie skóry HISTORY_MSG_255;RS - Filtr mediana -HISTORY_MSG_256;RS - Wielkość okna mediana HISTORY_MSG_257;Koloryzacja HISTORY_MSG_258;Koloryzacja - Kolor HISTORY_MSG_259;Koloryzacja - Przezroczystość @@ -513,7 +506,6 @@ HISTORY_MSG_293;Symulacja Kliszy HISTORY_MSG_294;Symulacja Kliszy - Siła HISTORY_MSG_295;Symulacja Kliszy - Klisza HISTORY_MSG_296;RS - Modulacja luminancji -HISTORY_MSG_297;RS - Jakość HISTORY_MSG_298;Filtrowanie martwych pikseli HISTORY_NEWSNAPSHOT;Nowa migawka HISTORY_NEWSNAPSHOT_TOOLTIP;Skrót: Alt-s @@ -725,7 +717,6 @@ PREFERENCES_DIRLAST;Ostatnio odwiedzony katalog PREFERENCES_DIROTHER;Inny PREFERENCES_DIRSELECTDLG;Wybierz katalog z obrazami po uruchomieniu... PREFERENCES_DIRSOFTWARE;Katalog instalacyjny -PREFERENCES_EDITORCMDLINE;Inna linia poleceń PREFERENCES_EDITORLAYOUT;Układ edytora PREFERENCES_EXTERNALEDITOR;Zewnętrzny edytor PREFERENCES_FBROWSEROPTS;Opcje przeglądarki plików @@ -1082,33 +1073,32 @@ TP_DARKFRAME_LABEL;Czarna klatka TP_DEFRINGE_LABEL;Usuwanie widma TP_DEFRINGE_RADIUS;Promień TP_DEFRINGE_THRESHOLD;Próg -TP_DIRPYRDENOISE_BLUE;Chrominancja - Błękit-żółć -TP_DIRPYRDENOISE_CHROMA;Chrominancja - Główna -TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Moduluje działanie usuwania szumów luminancji +TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Chrominancja - Błękit-żółć +TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Chrominancja - Główna +TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Chrominancja - Czerwień-zieleń TP_DIRPYRDENOISE_ENH;Tryb ulepszony TP_DIRPYRDENOISE_ENH_TOOLTIP;Ulepsza jakość usuwania szumów kosztem około 20% wzrostu czasu przetwarzania. -TP_DIRPYRDENOISE_GAMMA;Gamma -TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gamma skupia siłę redukcji szumów na danym predziale zakresu tonalnego. Mniejsze wartości gamma powodują skupienie na ciemniejszych barwach, natomiast większe wartości rozciągną zakres działania również na barwy jasne. -TP_DIRPYRDENOISE_LABEL;Redukcja szumu -TP_DIRPYRDENOISE_LABM;L*a*b* -TP_DIRPYRDENOISE_LCURVE;Krzywa luminancji -TP_DIRPYRDENOISE_LDETAIL;Szczegółowość luminancji -TP_DIRPYRDENOISE_LM;Tylko luminancja -TP_DIRPYRDENOISE_LUMA;Luminacja -TP_DIRPYRDENOISE_MED;Filtr Mediana -TP_DIRPYRDENOISE_MEDMETHOD;Metoda mediana -TP_DIRPYRDENOISE_MEDTYPE;Rodzaj mediana -TP_DIRPYRDENOISE_METHOD;Metoda -TP_DIRPYRDENOISE_METHOD11;Jakość -TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Jakość może zostać dopasowana do wzoru szumów. Ustawienie "wysoka" ulepsza odszumianie około 20% wzrostu czasu przetwarzania. -TP_DIRPYRDENOISE_METHOD_TOOLTIP;Dla obrazów raw można używać metody RGB oraz L*a*b*.\n\nDla obrazów nie-raw metoda L*a*b* zostanie użyta niezależnie od wyboru. -TP_DIRPYRDENOISE_METM_TOOLTIP;Przy użyciu metod "tylko luminancja" oraz "L*a*b*", filtrowanie mediana zostanie wykonane prosto po funkcji falki w procesie odszumiania.\nW trybie "RGB" filtrowanie to zostanie wykonana pod koniec calego procesu. -TP_DIRPYRDENOISE_PASSES;Liczba powtórzeń mediana -TP_DIRPYRDENOISE_RED;Chrominancja - Czerwień-zieleń -TP_DIRPYRDENOISE_RGB;RGB -TP_DIRPYRDENOISE_RGBM;RGB -TP_DIRPYRDENOISE_SHAL;Standardowa -TP_DIRPYRDENOISE_SHALBI;Wysoka +TP_DIRPYRDENOISE_LUMINANCE_CURVE;Krzywa luminancji +TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Szczegółowość luminancji +TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminacja +TP_DIRPYRDENOISE_MAIN_COLORSPACE;Metoda +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LABEL;Redukcja szumu +TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;Dla obrazów raw można używać metody RGB oraz L*a*b*.\n\nDla obrazów nie-raw metoda L*a*b* zostanie użyta niezależnie od wyboru. +TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma +TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma skupia siłę redukcji szumów na danym predziale zakresu tonalnego. Mniejsze wartości gamma powodują skupienie na ciemniejszych barwach, natomiast większe wartości rozciągną zakres działania również na barwy jasne. +TP_DIRPYRDENOISE_MAIN_MODE;Jakość +TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Wysoka +TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Standardowa +TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;Jakość może zostać dopasowana do wzoru szumów. Ustawienie "wysoka" ulepsza odszumianie około 20% wzrostu czasu przetwarzania. +TP_DIRPYRDENOISE_MEDIAN_METHOD;Metoda mediana +TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Filtr Mediana +TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Tylko luminancja +TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;Przy użyciu metod "tylko luminancja" oraz "L*a*b*", filtrowanie mediana zostanie wykonane prosto po funkcji falki w procesie odszumiania.\nW trybie "RGB" filtrowanie to zostanie wykonana pod koniec calego procesu. +TP_DIRPYRDENOISE_MEDIAN_PASSES;Liczba powtórzeń mediana +TP_DIRPYRDENOISE_MEDIAN_TYPE;Rodzaj mediana TP_DIRPYREQUALIZER_ALGO;Zakres odcieni skóry TP_DIRPYREQUALIZER_ALGO_TOOLTIP;- TP_DIRPYREQUALIZER_HUESKIN;Odcień skóry @@ -1455,6 +1445,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !CURVEEDITOR_AXIS_IN;I: !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: @@ -1490,8 +1481,13 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !GENERAL_APPLY;Apply !GENERAL_ASIMAGE;As Image !GENERAL_OPEN;Open +!GENERAL_SLIDER;Slider !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. !HISTORY_MSG_166;Exposure - Reset +!HISTORY_MSG_173;NR - Detail recovery +!HISTORY_MSG_203;NR - Color space +!HISTORY_MSG_256;NR - Median - Type +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_299;NR - Chrominance curve !HISTORY_MSG_300;- !HISTORY_MSG_301;NR - Luma control @@ -1668,6 +1664,15 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1705,6 +1710,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 !MONITOR_PROFILE_SYSTEM;System default !PARTIALPASTE_EQUALIZER;Wavelet levels +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAW_IMAGENUM;Sub-image @@ -1723,6 +1729,12 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CMMBPC;Black point compensation +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_CURVEBBOXPOS;Position of curve copy & paste buttons !PREFERENCES_CURVEBBOXPOS_ABOVE;Above !PREFERENCES_CURVEBBOXPOS_BELOW;Below @@ -1732,6 +1744,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4 !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_DIRECTORIES;Directories +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EXPAUT;Expert !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. @@ -1812,48 +1825,45 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 -!TP_DIRPYRDENOISE_3X3;3×3 -!TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft -!TP_DIRPYRDENOISE_5X5;5×5 -!TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft -!TP_DIRPYRDENOISE_7X7;7×7 -!TP_DIRPYRDENOISE_9X9;9×9 -!TP_DIRPYRDENOISE_ABM;Chroma only -!TP_DIRPYRDENOISE_AUT;Automatic global -!TP_DIRPYRDENOISE_AUTO;Automatic global -!TP_DIRPYRDENOISE_AUTO_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! -!TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CCCURVE;Chrominance curve -!TP_DIRPYRDENOISE_CHROMAFR;Chrominance -!TP_DIRPYRDENOISE_CTYPE;Method -!TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CUR;Curve -!TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -!TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. -!TP_DIRPYRDENOISE_LAB;L*a*b* -!TP_DIRPYRDENOISE_LPLABM;Weighted L* (little) + a*b* (normal) -!TP_DIRPYRDENOISE_LTYPE;Luminance control -!TP_DIRPYRDENOISE_LUMAFR;Luminance -!TP_DIRPYRDENOISE_MAN;Manual -!TP_DIRPYRDENOISE_MANU;Manual -!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_NOISELABEL;Preview noise: Mean=%1 High=%2 -!TP_DIRPYRDENOISE_NOISELABELEMPTY;Preview noise: Mean= - High= - -!TP_DIRPYRDENOISE_NRESID_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -!TP_DIRPYRDENOISE_PON;Auto multi-zones -!TP_DIRPYRDENOISE_PRE;Preview multi-zones -!TP_DIRPYRDENOISE_PREV;Preview -!TP_DIRPYRDENOISE_PREVLABEL;Preview size=%1, Center: Px=%2 Py=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance +!TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method +!TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Center: Px=%2 Py=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= - +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_LABEL;Noise Reduction +!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control +!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) +!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. !TP_DIRPYRDENOISE_SLI;Slider -!TP_DIRPYRDENOISE_TILELABEL;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_TYPE_3X3;3×3 +!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft +!TP_DIRPYRDENOISE_TYPE_5X5;5×5 +!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft +!TP_DIRPYRDENOISE_TYPE_7X7;7×7 +!TP_DIRPYRDENOISE_TYPE_9X9;9×9 !TP_DIRPYREQUALIZER_ARTIF;Reduce artifacts !TP_DISTORTION_AUTO_TIP;Automatically corrects lens distortion in raw files by matching it against the embedded JPEG image if one exists and has had its lens disortion auto-corrected by the camera. !TP_EPD_GAMMA;Gamma @@ -1871,6 +1881,15 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_ICM_SAVEREFERENCE;Save Reference Image !TP_ICM_SAVEREFERENCE_APPLYWB;Apply white balance !TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles. +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged !TP_NEUTRAL;Reset !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. @@ -1887,7 +1906,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_RAW_HPHD;HPHD !TP_RAW_IGV;IGV !TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_LMMSE;LMMSE !TP_RAW_MONO;Mono !TP_RAW_NONE;None (Shows sensor pattern) @@ -1924,6 +1943,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal !TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical !TP_RAW_PIXELSHIFTNREADISO;nRead +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. !TP_RAW_PIXELSHIFTPRNU;PRNU (%) !TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight !TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -1937,6 +1958,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue !TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green !TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +!TP_RAW_RCD;RCD !TP_RAW_VNG4;VNG4 !TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL !TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index 85b9e3f0b..1212ed840 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -15,6 +15,7 @@ ABOUT_TAB_RELEASENOTES;Notatki eksploatacyjne ABOUT_TAB_SPLASH;Ekran powitalny ADJUSTER_RESET_TO_DEFAULT;Przywroc domyslne BATCHQUEUE_AUTOSTART;Autostart +BATCHQUEUE_AUTOSTARTHINT;Rozpocznij przetwarzanie automatycznie gdy pojawi sie nowe zadanie. BATCHQUEUE_DESTFILENAME;Sciezka i nazwa pliku BATCH_PROCESSING;Przetwarzanie wsadowe CURVEEDITOR_CURVE;Krzywa @@ -178,12 +179,7 @@ FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Pokazuje niezapisane zdjecia.\nSkrot: Al FILEBROWSER_SHOWTRASHHINT;Pokazuje zawartosc kosza.\nSkrot: Ctrl-t FILEBROWSER_SHOWUNCOLORHINT;Pokazuje zdjecia bez kolorowej etykiety.\nSkrot: Alt-0 FILEBROWSER_SHOWUNRANKHINT;Pokazuje nieocenione zdjecia.\nSkrot: 0 -FILEBROWSER_STARTPROCESSING;Rozpocznij przetwarzanie -FILEBROWSER_STARTPROCESSINGHINT;Rozpoczyna przetwarzanie/zapisywanie plikow z kolejki. -FILEBROWSER_STOPPROCESSING;Zatrzymaj przetwarzanie -FILEBROWSER_STOPPROCESSINGHINT;Zatrzymuje przetwarzanie zdjec. FILEBROWSER_THUMBSIZE;Rozmiar minaturek -FILEBROWSER_TOOLTIP_STOPPROCESSING;Rozpocznij przetwarzanie automatycznie gdy pojawi sie nowe zadanie. FILEBROWSER_UNRANK_TOOLTIP;Usun ocene.\nSkrot: Shift-0 FILEBROWSER_ZOOMINHINT;Zwieksza rozmiar miniaturek.\n\nSkroty:\n+ - Tryb wielu zakladek,\nAlt-+ - Tryb pojedynczej zakladki. FILEBROWSER_ZOOMOUTHINT;Zmniejsza rozmiar miniaturek.\n\nSkroty:\n- - Tryb wielu zakladek,\nAlt-- - Tryb pojedynczej zakladki. @@ -390,7 +386,6 @@ HISTORY_MSG_169;L*a*b* - Krzywa CH HISTORY_MSG_170;Jaskrawosc - Krzywa HH HISTORY_MSG_171;L*a*b* - Krzywa LC HISTORY_MSG_172;L*a*b* - Ogranicz LC -HISTORY_MSG_173;RS - Szczegoly luminancji HISTORY_MSG_174;CIECAM02 HISTORY_MSG_175;CAM02 - Adaptacja CAT02 HISTORY_MSG_176;CAM02 - Otoczenie @@ -420,7 +415,6 @@ HISTORY_MSG_199;CAM02 - Histogramy wyjsciowe HISTORY_MSG_200;CAMO2 - Tone mapping HISTORY_MSG_201;RS - Chrominancja - R&G HISTORY_MSG_202;RS - Chrominancja - B&Y -HISTORY_MSG_203;RS - Metoda HISTORY_MSG_204;Kroki poprawy LMMSE HISTORY_MSG_205;CAM02 - Gorace/uszkodzone px HISTORY_MSG_206;CAT02 - Auto luminancja sceny @@ -472,7 +466,6 @@ HISTORY_MSG_252;KwgPS - Odcienie skory HISTORY_MSG_253;KwgPS - Redukcja bledow HISTORY_MSG_254;KwgPS - Odcienie skory HISTORY_MSG_255;RS - Filtr mediana -HISTORY_MSG_256;RS - Wielkosc okna mediana HISTORY_MSG_257;Koloryzacja HISTORY_MSG_258;Koloryzacja - Kolor HISTORY_MSG_259;Koloryzacja - Przezroczystosc @@ -513,7 +506,6 @@ HISTORY_MSG_293;Symulacja Kliszy HISTORY_MSG_294;Symulacja Kliszy - Sila HISTORY_MSG_295;Symulacja Kliszy - Klisza HISTORY_MSG_296;RS - Modulacja luminancji -HISTORY_MSG_297;RS - Jakosc HISTORY_MSG_298;Filtrowanie martwych pikseli HISTORY_NEWSNAPSHOT;Nowa migawka HISTORY_NEWSNAPSHOT_TOOLTIP;Skrot: Alt-s @@ -725,7 +717,6 @@ PREFERENCES_DIRLAST;Ostatnio odwiedzony katalog PREFERENCES_DIROTHER;Inny PREFERENCES_DIRSELECTDLG;Wybierz katalog z obrazami po uruchomieniu... PREFERENCES_DIRSOFTWARE;Katalog instalacyjny -PREFERENCES_EDITORCMDLINE;Inna linia polecen PREFERENCES_EDITORLAYOUT;Uklad edytora PREFERENCES_EXTERNALEDITOR;Zewnetrzny edytor PREFERENCES_FBROWSEROPTS;Opcje przegladarki plikow @@ -1082,33 +1073,32 @@ TP_DARKFRAME_LABEL;Czarna klatka TP_DEFRINGE_LABEL;Usuwanie widma TP_DEFRINGE_RADIUS;Promien TP_DEFRINGE_THRESHOLD;Prog -TP_DIRPYRDENOISE_BLUE;Chrominancja - Blekit-zolc -TP_DIRPYRDENOISE_CHROMA;Chrominancja - Glowna -TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Moduluje dzialanie usuwania szumow luminancji +TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Chrominancja - Blekit-zolc +TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Chrominancja - Glowna +TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Chrominancja - Czerwien-zielen TP_DIRPYRDENOISE_ENH;Tryb ulepszony TP_DIRPYRDENOISE_ENH_TOOLTIP;Ulepsza jakosc usuwania szumow kosztem okolo 20% wzrostu czasu przetwarzania. -TP_DIRPYRDENOISE_GAMMA;Gamma -TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gamma skupia sile redukcji szumow na danym predziale zakresu tonalnego. Mniejsze wartosci gamma powoduja skupienie na ciemniejszych barwach, natomiast wieksze wartosci rozciagna zakres dzialania rowniez na barwy jasne. -TP_DIRPYRDENOISE_LABEL;Redukcja szumu -TP_DIRPYRDENOISE_LABM;L*a*b* -TP_DIRPYRDENOISE_LCURVE;Krzywa luminancji -TP_DIRPYRDENOISE_LDETAIL;Szczegolowosc luminancji -TP_DIRPYRDENOISE_LM;Tylko luminancja -TP_DIRPYRDENOISE_LUMA;Luminacja -TP_DIRPYRDENOISE_MED;Filtr Mediana -TP_DIRPYRDENOISE_MEDMETHOD;Metoda mediana -TP_DIRPYRDENOISE_MEDTYPE;Rodzaj mediana -TP_DIRPYRDENOISE_METHOD;Metoda -TP_DIRPYRDENOISE_METHOD11;Jakosc -TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Jakosc moze zostac dopasowana do wzoru szumow. Ustawienie "wysoka" ulepsza odszumianie okolo 20% wzrostu czasu przetwarzania. -TP_DIRPYRDENOISE_METHOD_TOOLTIP;Dla obrazow raw mozna uzywac metody RGB oraz L*a*b*.\n\nDla obrazow nie-raw metoda L*a*b* zostanie uzyta niezaleznie od wyboru. -TP_DIRPYRDENOISE_METM_TOOLTIP;Przy uzyciu metod "tylko luminancja" oraz "L*a*b*", filtrowanie mediana zostanie wykonane prosto po funkcji falki w procesie odszumiania.\nW trybie "RGB" filtrowanie to zostanie wykonana pod koniec calego procesu. -TP_DIRPYRDENOISE_PASSES;Liczba powtorzen mediana -TP_DIRPYRDENOISE_RED;Chrominancja - Czerwien-zielen -TP_DIRPYRDENOISE_RGB;RGB -TP_DIRPYRDENOISE_RGBM;RGB -TP_DIRPYRDENOISE_SHAL;Standardowa -TP_DIRPYRDENOISE_SHALBI;Wysoka +TP_DIRPYRDENOISE_LUMINANCE_CURVE;Krzywa luminancji +TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Szczegolowosc luminancji +TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminacja +TP_DIRPYRDENOISE_MAIN_COLORSPACE;Metoda +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LABEL;Redukcja szumu +TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;Dla obrazow raw mozna uzywac metody RGB oraz L*a*b*.\n\nDla obrazow nie-raw metoda L*a*b* zostanie uzyta niezaleznie od wyboru. +TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma +TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma skupia sile redukcji szumow na danym predziale zakresu tonalnego. Mniejsze wartosci gamma powoduja skupienie na ciemniejszych barwach, natomiast wieksze wartosci rozciagna zakres dzialania rowniez na barwy jasne. +TP_DIRPYRDENOISE_MAIN_MODE;Jakosc +TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Wysoka +TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Standardowa +TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;Jakosc moze zostac dopasowana do wzoru szumow. Ustawienie "wysoka" ulepsza odszumianie okolo 20% wzrostu czasu przetwarzania. +TP_DIRPYRDENOISE_MEDIAN_METHOD;Metoda mediana +TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Filtr Mediana +TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Tylko luminancja +TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;Przy uzyciu metod "tylko luminancja" oraz "L*a*b*", filtrowanie mediana zostanie wykonane prosto po funkcji falki w procesie odszumiania.\nW trybie "RGB" filtrowanie to zostanie wykonana pod koniec calego procesu. +TP_DIRPYRDENOISE_MEDIAN_PASSES;Liczba powtorzen mediana +TP_DIRPYRDENOISE_MEDIAN_TYPE;Rodzaj mediana TP_DIRPYREQUALIZER_ALGO;Zakres odcieni skory TP_DIRPYREQUALIZER_ALGO_TOOLTIP;- TP_DIRPYREQUALIZER_HUESKIN;Odcien skory @@ -1455,6 +1445,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !CURVEEDITOR_AXIS_IN;I: !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: @@ -1490,8 +1481,13 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !GENERAL_APPLY;Apply !GENERAL_ASIMAGE;As Image !GENERAL_OPEN;Open +!GENERAL_SLIDER;Slider !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. !HISTORY_MSG_166;Exposure - Reset +!HISTORY_MSG_173;NR - Detail recovery +!HISTORY_MSG_203;NR - Color space +!HISTORY_MSG_256;NR - Median - Type +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_299;NR - Chrominance curve !HISTORY_MSG_300;- !HISTORY_MSG_301;NR - Luma control @@ -1668,6 +1664,15 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1705,6 +1710,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 !MONITOR_PROFILE_SYSTEM;System default !PARTIALPASTE_EQUALIZER;Wavelet levels +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAW_IMAGENUM;Sub-image @@ -1723,6 +1729,12 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CMMBPC;Black point compensation +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_CURVEBBOXPOS;Position of curve copy & paste buttons !PREFERENCES_CURVEBBOXPOS_ABOVE;Above !PREFERENCES_CURVEBBOXPOS_BELOW;Below @@ -1732,6 +1744,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4 !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_DIRECTORIES;Directories +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EXPAUT;Expert !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. @@ -1812,48 +1825,45 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 -!TP_DIRPYRDENOISE_3X3;3×3 -!TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft -!TP_DIRPYRDENOISE_5X5;5×5 -!TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft -!TP_DIRPYRDENOISE_7X7;7×7 -!TP_DIRPYRDENOISE_9X9;9×9 -!TP_DIRPYRDENOISE_ABM;Chroma only -!TP_DIRPYRDENOISE_AUT;Automatic global -!TP_DIRPYRDENOISE_AUTO;Automatic global -!TP_DIRPYRDENOISE_AUTO_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! -!TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CCCURVE;Chrominance curve -!TP_DIRPYRDENOISE_CHROMAFR;Chrominance -!TP_DIRPYRDENOISE_CTYPE;Method -!TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CUR;Curve -!TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -!TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. -!TP_DIRPYRDENOISE_LAB;L*a*b* -!TP_DIRPYRDENOISE_LPLABM;Weighted L* (little) + a*b* (normal) -!TP_DIRPYRDENOISE_LTYPE;Luminance control -!TP_DIRPYRDENOISE_LUMAFR;Luminance -!TP_DIRPYRDENOISE_MAN;Manual -!TP_DIRPYRDENOISE_MANU;Manual -!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_NOISELABEL;Preview noise: Mean=%1 High=%2 -!TP_DIRPYRDENOISE_NOISELABELEMPTY;Preview noise: Mean= - High= - -!TP_DIRPYRDENOISE_NRESID_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -!TP_DIRPYRDENOISE_PON;Auto multi-zones -!TP_DIRPYRDENOISE_PRE;Preview multi-zones -!TP_DIRPYRDENOISE_PREV;Preview -!TP_DIRPYRDENOISE_PREVLABEL;Preview size=%1, Center: Px=%2 Py=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance +!TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method +!TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Center: Px=%2 Py=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= - +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_LABEL;Noise Reduction +!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control +!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) +!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. !TP_DIRPYRDENOISE_SLI;Slider -!TP_DIRPYRDENOISE_TILELABEL;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_TYPE_3X3;3×3 +!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft +!TP_DIRPYRDENOISE_TYPE_5X5;5×5 +!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft +!TP_DIRPYRDENOISE_TYPE_7X7;7×7 +!TP_DIRPYRDENOISE_TYPE_9X9;9×9 !TP_DIRPYREQUALIZER_ARTIF;Reduce artifacts !TP_DISTORTION_AUTO_TIP;Automatically corrects lens distortion in raw files by matching it against the embedded JPEG image if one exists and has had its lens disortion auto-corrected by the camera. !TP_EPD_GAMMA;Gamma @@ -1871,6 +1881,15 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_ICM_SAVEREFERENCE;Save Reference Image !TP_ICM_SAVEREFERENCE_APPLYWB;Apply white balance !TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles. +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged !TP_NEUTRAL;Reset !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. @@ -1887,7 +1906,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_RAW_HPHD;HPHD !TP_RAW_IGV;IGV !TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_LMMSE;LMMSE !TP_RAW_MONO;Mono !TP_RAW_NONE;None (Shows sensor pattern) @@ -1924,6 +1943,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal !TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical !TP_RAW_PIXELSHIFTNREADISO;nRead +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. !TP_RAW_PIXELSHIFTPRNU;PRNU (%) !TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight !TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -1937,6 +1958,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue !TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green !TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +!TP_RAW_RCD;RCD !TP_RAW_VNG4;VNG4 !TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL !TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index 661f24483..42c1436bc 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -58,10 +58,6 @@ FILEBROWSER_SHOWRANK4HINT;Exibir imagens classificadas como 4 estrelas FILEBROWSER_SHOWRANK5HINT;Exibir imagens classificadas como 5 estrelas FILEBROWSER_SHOWTRASHHINT;Exibir conteúdo da lixeira FILEBROWSER_SHOWUNRANKHINT;Exibir imagens não classificadas -FILEBROWSER_STARTPROCESSING;Iniciar Processamento -FILEBROWSER_STARTPROCESSINGHINT;Iniciar processamento/salvar imagens da lista -FILEBROWSER_STOPPROCESSING;Parar processamento -FILEBROWSER_STOPPROCESSINGHINT;Para o processamento das imagens FILEBROWSER_THUMBSIZE;Tamanho das Miniaturas FILEBROWSER_ZOOMINHINT;Aumentar Tamanho das Miniaturas FILEBROWSER_ZOOMOUTHINT;Diminuir Tamanho das Miniaturas @@ -249,7 +245,6 @@ PREFERENCES_DIRLAST;Último directory visitado PREFERENCES_DIROTHER;Outro PREFERENCES_DIRSELECTDLG;selecionar diretório de imagem na inicialização... PREFERENCES_DIRSOFTWARE;Diretório de instalação -PREFERENCES_EDITORCMDLINE;Outra Linha de Comando PREFERENCES_EXTERNALEDITOR;Editor externo PREFERENCES_FBROWSEROPTS;Opções do navegador de arquivos PREFERENCES_FILEFORMAT;Formato de arquivo @@ -427,7 +422,9 @@ TP_WBALANCE_TEMPERATURE;Temperatura !ABOUT_TAB_RELEASENOTES;Release Notes !ABOUT_TAB_SPLASH;Splash !BATCHQUEUE_AUTOSTART;Auto-start +!BATCHQUEUE_AUTOSTARTHINT;Start processing automatically when a new job arrives. !BATCHQUEUE_DESTFILENAME;Path and file name +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !BATCH_PROCESSING;Batch Processing !CURVEEDITOR_AXIS_IN;I: !CURVEEDITOR_AXIS_LEFT_TAN;LT: @@ -558,7 +555,6 @@ TP_WBALANCE_TEMPERATURE;Temperatura !FILEBROWSER_SHOWRECENTLYSAVEDHINT;Show saved images.\nShortcut: Alt-7 !FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Show unsaved images.\nShortcut: Alt-6 !FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0 -!FILEBROWSER_TOOLTIP_STOPPROCESSING;Start processing automatically when a new job arrives. !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 !FILECHOOSER_FILTER_ANY;All files !FILECHOOSER_FILTER_COLPROF;Color profiles @@ -576,6 +572,7 @@ TP_WBALANCE_TEMPERATURE;Temperatura !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open +!GENERAL_SLIDER;Slider !GENERAL_UNCHANGED;(Unchanged) !GENERAL_WARNING;Warning !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. @@ -674,7 +671,7 @@ TP_WBALANCE_TEMPERATURE;Temperatura !HISTORY_MSG_170;Vibrance - HH curve !HISTORY_MSG_171;L*a*b* - LC curve !HISTORY_MSG_172;L*a*b* - Restrict LC -!HISTORY_MSG_173;NR - Luminance detail +!HISTORY_MSG_173;NR - Detail recovery !HISTORY_MSG_174;CIECAM02 !HISTORY_MSG_175;CAM02 - CAT02 adaptation !HISTORY_MSG_176;CAM02 - Viewing surround @@ -704,7 +701,7 @@ TP_WBALANCE_TEMPERATURE;Temperatura !HISTORY_MSG_200;CAM02 - Tone mapping !HISTORY_MSG_201;NR - Chrominance - R&G !HISTORY_MSG_202;NR - Chrominance - B&Y -!HISTORY_MSG_203;NR - Method +!HISTORY_MSG_203;NR - Color space !HISTORY_MSG_204;LMMSE enhancement steps !HISTORY_MSG_205;CAM02 - Hot/bad pixel filter !HISTORY_MSG_206;CAT02 - Auto scene luminosity @@ -756,7 +753,7 @@ TP_WBALANCE_TEMPERATURE;Temperatura !HISTORY_MSG_253;CbDL - Reduce artifacts !HISTORY_MSG_254;CbDL - Skin hue !HISTORY_MSG_255;NR - Median filter -!HISTORY_MSG_256;NR - Median type +!HISTORY_MSG_256;NR - Median - Type !HISTORY_MSG_257;Color Toning !HISTORY_MSG_258;CT - Color curve !HISTORY_MSG_259;CT - Opacity curve @@ -797,7 +794,7 @@ TP_WBALANCE_TEMPERATURE;Temperatura !HISTORY_MSG_294;Film Simulation - Strength !HISTORY_MSG_295;Film Simulation - Film !HISTORY_MSG_296;NR - Luminance curve -!HISTORY_MSG_297;NR - Quality +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_298;Dead pixel filter !HISTORY_MSG_299;NR - Chrominance curve !HISTORY_MSG_300;- @@ -975,6 +972,15 @@ TP_WBALANCE_TEMPERATURE;Temperatura !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -1092,6 +1098,7 @@ TP_WBALANCE_TEMPERATURE;Temperatura !PARTIALPASTE_IMPULSEDENOISE;Impulse noise reduction !PARTIALPASTE_LABCURVE;L*a*b* adjustments !PARTIALPASTE_LENSPROFILE;Profiled lens correction +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_PCVIGNETTE;Vignette filter !PARTIALPASTE_PERSPECTIVE;Perspective !PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter @@ -1143,6 +1150,12 @@ TP_WBALANCE_TEMPERATURE;Temperatura !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_CURVEBBOXPOS;Position of curve copy & paste buttons !PREFERENCES_CURVEBBOXPOS_ABOVE;Above !PREFERENCES_CURVEBBOXPOS_BELOW;Below @@ -1167,6 +1180,7 @@ TP_WBALANCE_TEMPERATURE;Temperatura !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EDITORLAYOUT;Editor Layout !PREFERENCES_EXPAUT;Expert !PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) @@ -1460,14 +1474,14 @@ TP_WBALANCE_TEMPERATURE;Temperatura !TP_COLORAPP_TCMODE_LABEL3;Curve chroma mode !TP_COLORAPP_TCMODE_LIGHTNESS;Lightness !TP_COLORAPP_TCMODE_SATUR;Saturation -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1516,68 +1530,63 @@ TP_WBALANCE_TEMPERATURE;Temperatura !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold -!TP_DIRPYRDENOISE_3X3;3×3 -!TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft -!TP_DIRPYRDENOISE_5X5;5×5 -!TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft -!TP_DIRPYRDENOISE_7X7;7×7 -!TP_DIRPYRDENOISE_9X9;9×9 -!TP_DIRPYRDENOISE_ABM;Chroma only -!TP_DIRPYRDENOISE_AUT;Automatic global -!TP_DIRPYRDENOISE_AUTO;Automatic global -!TP_DIRPYRDENOISE_AUTO_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! -!TP_DIRPYRDENOISE_BLUE;Chrominance - Blue-Yellow -!TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CCCURVE;Chrominance curve -!TP_DIRPYRDENOISE_CHROMA;Chrominance - Master -!TP_DIRPYRDENOISE_CHROMAFR;Chrominance -!TP_DIRPYRDENOISE_CTYPE;Method -!TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CUR;Curve -!TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -!TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. -!TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Modulates action of 'Luminance' denoise +!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! +!TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Chrominance - Blue-Yellow +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance +!TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual +!TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Chrominance - Master +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method +!TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Center: Px=%2 Py=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= - +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Chrominance - Red-Green !TP_DIRPYRDENOISE_ENH;Enhanced mode !TP_DIRPYRDENOISE_ENH_TOOLTIP;Increases noise reduction quality at the expense of a 20% processing time increase. -!TP_DIRPYRDENOISE_GAMMA;Gamma -!TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. -!TP_DIRPYRDENOISE_LAB;L*a*b* !TP_DIRPYRDENOISE_LABEL;Noise Reduction -!TP_DIRPYRDENOISE_LABM;L*a*b* -!TP_DIRPYRDENOISE_LCURVE;Luminance curve -!TP_DIRPYRDENOISE_LDETAIL;Luminance - Detail -!TP_DIRPYRDENOISE_LM;Luminance only -!TP_DIRPYRDENOISE_LPLABM;Weighted L* (little) + a*b* (normal) -!TP_DIRPYRDENOISE_LTYPE;Luminance control -!TP_DIRPYRDENOISE_LUMA;Luminance -!TP_DIRPYRDENOISE_LUMAFR;Luminance -!TP_DIRPYRDENOISE_MAN;Manual -!TP_DIRPYRDENOISE_MANU;Manual -!TP_DIRPYRDENOISE_MED;Median Filter -!TP_DIRPYRDENOISE_MEDMETHOD;Median method -!TP_DIRPYRDENOISE_MEDTYPE;Median type -!TP_DIRPYRDENOISE_METHOD;Method -!TP_DIRPYRDENOISE_METHOD11;Quality -!TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Quality can be adapted to the noise pattern. A setting of "high" increases the noise reduction effect at a cost of extended processing time. -!TP_DIRPYRDENOISE_METHOD_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. -!TP_DIRPYRDENOISE_METM_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. -!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_NOISELABEL;Preview noise: Mean=%1 High=%2 -!TP_DIRPYRDENOISE_NOISELABELEMPTY;Preview noise: Mean= - High= - -!TP_DIRPYRDENOISE_NRESID_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -!TP_DIRPYRDENOISE_PASSES;Median iterations -!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -!TP_DIRPYRDENOISE_PON;Auto multi-zones -!TP_DIRPYRDENOISE_PRE;Preview multi-zones -!TP_DIRPYRDENOISE_PREV;Preview -!TP_DIRPYRDENOISE_PREVLABEL;Preview size=%1, Center: Px=%2 Py=%3 -!TP_DIRPYRDENOISE_RED;Chrominance - Red-Green -!TP_DIRPYRDENOISE_RGB;RGB -!TP_DIRPYRDENOISE_RGBM;RGB -!TP_DIRPYRDENOISE_SHAL;Standard -!TP_DIRPYRDENOISE_SHALBI;High +!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control +!TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve +!TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Detail recovery +!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance +!TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminance +!TP_DIRPYRDENOISE_MAIN_COLORSPACE;Color space +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. +!TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma +!TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. +!TP_DIRPYRDENOISE_MAIN_MODE;Mode +!TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressive +!TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Conservative +!TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Conservative" preserves low frequency chroma patterns, while "aggressive" obliterates them. +!TP_DIRPYRDENOISE_MEDIAN_METHOD;Median method +!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median Filter +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Luminance only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +!TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. +!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) +!TP_DIRPYRDENOISE_MEDIAN_PASSES;Median iterations +!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_DIRPYRDENOISE_MEDIAN_TYPE;Median type +!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. !TP_DIRPYRDENOISE_SLI;Slider -!TP_DIRPYRDENOISE_TILELABEL;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_TYPE_3X3;3×3 +!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft +!TP_DIRPYRDENOISE_TYPE_5X5;5×5 +!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft +!TP_DIRPYRDENOISE_TYPE_7X7;7×7 +!TP_DIRPYRDENOISE_TYPE_9X9;9×9 !TP_DIRPYREQUALIZER_ALGO;Skin Color Range !TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: closer to the colors of the skin, minimizing the action on other colors\nLarge: avoid more artifacts. !TP_DIRPYREQUALIZER_ARTIF;Reduce artifacts @@ -1728,6 +1737,15 @@ TP_WBALANCE_TEMPERATURE;Temperatura !TP_LENSPROFILE_USECA;Chromatic aberration correction !TP_LENSPROFILE_USEDIST;Distortion correction !TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged !TP_NEUTRAL;Reset !TP_NEUTRAL_TIP;Resets exposure sliders to neutral values.\nApplies to the same controls that Auto Levels applies to, regardless of whether you used Auto Levels or not. !TP_PCVIGNETTE_FEATHER;Feather @@ -1777,7 +1795,7 @@ TP_WBALANCE_TEMPERATURE;Temperatura !TP_RAW_DCBITERATIONS;Number of DCB iterations !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... -!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast !TP_RAW_HD;Threshold @@ -1785,7 +1803,7 @@ TP_WBALANCE_TEMPERATURE;Temperatura !TP_RAW_HPHD;HPHD !TP_RAW_IGV;IGV !TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_LABEL;Demosaicing !TP_RAW_LMMSE;LMMSE !TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps @@ -1825,6 +1843,8 @@ TP_WBALANCE_TEMPERATURE;Temperatura !TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal !TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical !TP_RAW_PIXELSHIFTNREADISO;nRead +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. !TP_RAW_PIXELSHIFTPRNU;PRNU (%) !TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight !TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -1838,6 +1858,7 @@ TP_WBALANCE_TEMPERATURE;Temperatura !TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue !TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green !TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +!TP_RAW_RCD;RCD !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index a67674975..7737d6578 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -13,6 +13,7 @@ ABOUT_TAB_RELEASENOTES;Примечания к выпуску ABOUT_TAB_SPLASH;Заставка ADJUSTER_RESET_TO_DEFAULT;Сбросить настройки BATCHQUEUE_AUTOSTART;Автостарт +BATCHQUEUE_AUTOSTARTHINT;Автоматически запускать обработку при добавлении файла в очередь BATCHQUEUE_DESTFILENAME;Имя файла и путь к нему BATCH_PROCESSING;Пакетная обработка CURVEEDITOR_CURVE;Кривая @@ -173,12 +174,7 @@ FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Показать изображения, с FILEBROWSER_SHOWTRASHHINT;Показать содержимое корзины.\nГорячая клавиша: Ctrl-t FILEBROWSER_SHOWUNCOLORHINT;Показать изображения без цветовой метки.\nГорячая клавиша: Alt-0 FILEBROWSER_SHOWUNRANKHINT;Показать изображения без рейтинга\nГорячая клавиша: 0 -FILEBROWSER_STARTPROCESSING;Начать обработку -FILEBROWSER_STARTPROCESSINGHINT;Запуск обработки помещенных в очередь изображений -FILEBROWSER_STOPPROCESSING;Остановить обработку -FILEBROWSER_STOPPROCESSINGHINT;Отмена обработки изображений FILEBROWSER_THUMBSIZE;Размер эскиза -FILEBROWSER_TOOLTIP_STOPPROCESSING;Автоматически запускать обработку при добавлении файла в очередь FILEBROWSER_UNRANK_TOOLTIP;Удалить рейтинг\nГорячая клавиша: Shift-~ FILEBROWSER_ZOOMINHINT;Увеличить размер эскиза\nГорячая клавиша: +\n\nГорячая клавиша в режиме Одиночного редактора: Alt-+ FILEBROWSER_ZOOMOUTHINT;Уменьшить размер эскиза\nГорячая клавиша: +\n\nГорячая клавиша в режиме Одиночного редактора: Alt-- @@ -385,7 +381,6 @@ HISTORY_MSG_169;Кривая 'ЦО' HISTORY_MSG_170;Рез: кривая HISTORY_MSG_171;Кривая 'ЯЦ' HISTORY_MSG_172;LAB: Ограничение 'ЯЦ' -HISTORY_MSG_173;ПШ: Детализация яркости HISTORY_MSG_174;CIECAM02 HISTORY_MSG_175;CAM02: Адаптация CAT02 HISTORY_MSG_176;CAM02: Условия просмотра @@ -415,7 +410,6 @@ HISTORY_MSG_199;CAM02: Выходная гистограмма HISTORY_MSG_200;CAM02: Тональное отображение HISTORY_MSG_201;ПШ: Цветность К,З HISTORY_MSG_202;ПШ: Цветность С,Ж -HISTORY_MSG_203;ПШ: Метод HISTORY_MSG_204;Шагов улучшения LMMSE HISTORY_MSG_205;CAM02: Горячие/битые пиксели HISTORY_MSG_206;CAT02: Автояркость сцены @@ -656,7 +650,6 @@ PREFERENCES_DIRLAST;Последний каталог PREFERENCES_DIROTHER;Другой PREFERENCES_DIRSELECTDLG;Каталог, открываемый при запуске программы PREFERENCES_DIRSOFTWARE;Каталог установки -PREFERENCES_EDITORCMDLINE;Другой (путь к исполняемому файлу) PREFERENCES_EDITORLAYOUT;Тип редактора PREFERENCES_EXTERNALEDITOR;Внешний редактор PREFERENCES_FBROWSEROPTS;Настройки @@ -937,20 +930,20 @@ TP_DARKFRAME_LABEL;Темновой кадр TP_DEFRINGE_LABEL;Подавление ореолов TP_DEFRINGE_RADIUS;Радиус TP_DEFRINGE_THRESHOLD;Порог -TP_DIRPYRDENOISE_BLUE;Цветность: синий-жёлтый -TP_DIRPYRDENOISE_CHROMA;Цветность +TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Цветность: синий-жёлтый +TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Цветность +TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Цветность: красный-зелёный TP_DIRPYRDENOISE_ENH;Улучшенный режим TP_DIRPYRDENOISE_ENH_TOOLTIP;Улучшает качество шумоподавления путём увеличения времени обработки на 20%. -TP_DIRPYRDENOISE_GAMMA;Гамма -TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Значение гаммы изменяет диапазон тонов для подавления шума. Уменьшение значения влияет на тени, увеличение расширит эффект на более светлые тона. -TP_DIRPYRDENOISE_LAB;Lab -TP_DIRPYRDENOISE_LABEL;Подавление шума -TP_DIRPYRDENOISE_LDETAIL;Детализация яркости -TP_DIRPYRDENOISE_LUMA;Яркость -TP_DIRPYRDENOISE_METHOD;Метод -TP_DIRPYRDENOISE_METHOD_TOOLTIP;Для raw-изображений можно использовать как режим RGB так и Lab.\n\nДля не-raw будет использован Lab режим вне зависимости от выбора. -TP_DIRPYRDENOISE_RED;Цветность: красный-зелёный -TP_DIRPYRDENOISE_RGB;RGB +TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Детализация яркости +TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Яркость +TP_DIRPYRDENOISE_MAIN_COLORSPACE;Метод +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;Lab +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LABEL;Подавление шума +TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;Для raw-изображений можно использовать как режим RGB так и Lab.\n\nДля не-raw будет использован Lab режим вне зависимости от выбора. +TP_DIRPYRDENOISE_MAIN_GAMMA;Гамма +TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Значение гаммы изменяет диапазон тонов для подавления шума. Уменьшение значения влияет на тени, увеличение расширит эффект на более светлые тона. TP_DIRPYREQUALIZER_LABEL;Контраст по уровню деталей TP_DIRPYREQUALIZER_LUMACOARSEST;Крупные TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Контраст- @@ -1265,6 +1258,7 @@ ZOOMPANEL_ZOOMOUT;Удалить - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !CURVEEDITOR_AXIS_IN;I: !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: @@ -1303,13 +1297,16 @@ ZOOMPANEL_ZOOMOUT;Удалить - !GENERAL_APPLY;Apply !GENERAL_ASIMAGE;As Image !GENERAL_OPEN;Open +!GENERAL_SLIDER;Slider !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. !HISTORY_MSG_166;Exposure - Reset +!HISTORY_MSG_173;NR - Detail recovery +!HISTORY_MSG_203;NR - Color space !HISTORY_MSG_252;CbDL - Skin tar/prot !HISTORY_MSG_253;CbDL - Reduce artifacts !HISTORY_MSG_254;CbDL - Skin hue !HISTORY_MSG_255;NR - Median filter -!HISTORY_MSG_256;NR - Median type +!HISTORY_MSG_256;NR - Median - Type !HISTORY_MSG_257;Color Toning !HISTORY_MSG_258;CT - Color curve !HISTORY_MSG_259;CT - Opacity curve @@ -1350,7 +1347,7 @@ ZOOMPANEL_ZOOMOUT;Удалить - !HISTORY_MSG_294;Film Simulation - Strength !HISTORY_MSG_295;Film Simulation - Film !HISTORY_MSG_296;NR - Luminance curve -!HISTORY_MSG_297;NR - Quality +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_298;Dead pixel filter !HISTORY_MSG_299;NR - Chrominance curve !HISTORY_MSG_300;- @@ -1528,6 +1525,15 @@ ZOOMPANEL_ZOOMOUT;Удалить - !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1579,6 +1585,7 @@ ZOOMPANEL_ZOOMOUT;Удалить - !PARTIALPASTE_EQUALIZER;Wavelet levels !PARTIALPASTE_FILMSIMULATION;Film simulation !PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening @@ -1600,6 +1607,12 @@ ZOOMPANEL_ZOOMOUT;Удалить - !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_CURVEBBOXPOS;Position of curve copy & paste buttons !PREFERENCES_CURVEBBOXPOS_ABOVE;Above !PREFERENCES_CURVEBBOXPOS_BELOW;Below @@ -1609,6 +1622,7 @@ ZOOMPANEL_ZOOMOUT;Удалить - !PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4 !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_DIRECTORIES;Directories +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EXPAUT;Expert !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. @@ -1725,14 +1739,14 @@ ZOOMPANEL_ZOOMOUT;Удалить - !TP_COLORAPP_TCMODE_LABEL3;Curve chroma mode !TP_COLORAPP_TCMODE_LIGHTNESS;Lightness !TP_COLORAPP_TCMODE_SATUR;Saturation -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1772,54 +1786,50 @@ ZOOMPANEL_ZOOMOUT;Удалить - !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 -!TP_DIRPYRDENOISE_3X3;3×3 -!TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft -!TP_DIRPYRDENOISE_5X5;5×5 -!TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft -!TP_DIRPYRDENOISE_7X7;7×7 -!TP_DIRPYRDENOISE_9X9;9×9 -!TP_DIRPYRDENOISE_ABM;Chroma only -!TP_DIRPYRDENOISE_AUT;Automatic global -!TP_DIRPYRDENOISE_AUTO;Automatic global -!TP_DIRPYRDENOISE_AUTO_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! -!TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CCCURVE;Chrominance curve -!TP_DIRPYRDENOISE_CHROMAFR;Chrominance -!TP_DIRPYRDENOISE_CTYPE;Method -!TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CUR;Curve -!TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -!TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. -!TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Modulates action of 'Luminance' denoise -!TP_DIRPYRDENOISE_LABM;L*a*b* -!TP_DIRPYRDENOISE_LCURVE;Luminance curve -!TP_DIRPYRDENOISE_LM;Luminance only -!TP_DIRPYRDENOISE_LPLABM;Weighted L* (little) + a*b* (normal) -!TP_DIRPYRDENOISE_LTYPE;Luminance control -!TP_DIRPYRDENOISE_LUMAFR;Luminance -!TP_DIRPYRDENOISE_MAN;Manual -!TP_DIRPYRDENOISE_MANU;Manual -!TP_DIRPYRDENOISE_MED;Median Filter -!TP_DIRPYRDENOISE_MEDMETHOD;Median method -!TP_DIRPYRDENOISE_MEDTYPE;Median type -!TP_DIRPYRDENOISE_METHOD11;Quality -!TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Quality can be adapted to the noise pattern. A setting of "high" increases the noise reduction effect at a cost of extended processing time. -!TP_DIRPYRDENOISE_METM_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. -!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_NOISELABEL;Preview noise: Mean=%1 High=%2 -!TP_DIRPYRDENOISE_NOISELABELEMPTY;Preview noise: Mean= - High= - -!TP_DIRPYRDENOISE_NRESID_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -!TP_DIRPYRDENOISE_PASSES;Median iterations -!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -!TP_DIRPYRDENOISE_PON;Auto multi-zones -!TP_DIRPYRDENOISE_PRE;Preview multi-zones -!TP_DIRPYRDENOISE_PREV;Preview -!TP_DIRPYRDENOISE_PREVLABEL;Preview size=%1, Center: Px=%2 Py=%3 -!TP_DIRPYRDENOISE_RGBM;RGB -!TP_DIRPYRDENOISE_SHAL;Standard -!TP_DIRPYRDENOISE_SHALBI;High +!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance +!TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method +!TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Center: Px=%2 Py=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= - +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_LABEL;Noise Reduction +!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control +!TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve +!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance +!TP_DIRPYRDENOISE_MAIN_MODE;Mode +!TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressive +!TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Conservative +!TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Conservative" preserves low frequency chroma patterns, while "aggressive" obliterates them. +!TP_DIRPYRDENOISE_MEDIAN_METHOD;Median method +!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median Filter +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Luminance only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +!TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. +!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) +!TP_DIRPYRDENOISE_MEDIAN_PASSES;Median iterations +!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_DIRPYRDENOISE_MEDIAN_TYPE;Median type +!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. !TP_DIRPYRDENOISE_SLI;Slider -!TP_DIRPYRDENOISE_TILELABEL;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_TYPE_3X3;3×3 +!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft +!TP_DIRPYRDENOISE_TYPE_5X5;5×5 +!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft +!TP_DIRPYRDENOISE_TYPE_7X7;7×7 +!TP_DIRPYRDENOISE_TYPE_9X9;9×9 !TP_DIRPYREQUALIZER_ALGO;Skin Color Range !TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: closer to the colors of the skin, minimizing the action on other colors\nLarge: avoid more artifacts. !TP_DIRPYREQUALIZER_ARTIF;Reduce artifacts @@ -1852,6 +1862,15 @@ ZOOMPANEL_ZOOMOUT;Удалить - !TP_ICM_SAVEREFERENCE;Save Reference Image !TP_ICM_SAVEREFERENCE_APPLYWB;Apply white balance !TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles. +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged !TP_NEUTRAL;Reset !TP_PREPROCESS_DEADPIXFILT;Dead pixel filter !TP_PREPROCESS_DEADPIXFILT_TOOLTIP;Tries to suppress dead pixels. @@ -1880,7 +1899,7 @@ ZOOMPANEL_ZOOMOUT;Удалить - !TP_RAW_HPHD;HPHD !TP_RAW_IGV;IGV !TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_LMMSE;LMMSE !TP_RAW_MONO;Mono !TP_RAW_NONE;None (Shows sensor pattern) @@ -1917,6 +1936,8 @@ ZOOMPANEL_ZOOMOUT;Удалить - !TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal !TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical !TP_RAW_PIXELSHIFTNREADISO;nRead +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. !TP_RAW_PIXELSHIFTPRNU;PRNU (%) !TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight !TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -1930,6 +1951,7 @@ ZOOMPANEL_ZOOMOUT;Удалить - !TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue !TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green !TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +!TP_RAW_RCD;RCD !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index b6f614cce..e94beb82b 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -7,6 +7,7 @@ ABOUT_TAB_RELEASENOTES;Белешке о издању ABOUT_TAB_SPLASH;Увод ADJUSTER_RESET_TO_DEFAULT;Врати на подразумевано BATCHQUEUE_AUTOSTART;Сам започни +BATCHQUEUE_AUTOSTARTHINT;Покреће обраду фотографија када их закажете BATCHQUEUE_DESTFILENAME;Путања и име датотеке BATCH_PROCESSING;обрада CURVEEDITOR_CURVE;Кривуља @@ -154,12 +155,7 @@ FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Приказује слике које ни FILEBROWSER_SHOWTRASHHINT;Приказује слике у смећу FILEBROWSER_SHOWUNCOLORHINT;Приказује слике које нису означене бојом Alt-0 FILEBROWSER_SHOWUNRANKHINT;Прикажи неоцењене слике -FILEBROWSER_STARTPROCESSING;Започни обраду -FILEBROWSER_STARTPROCESSINGHINT;Почиње обраду и чување заказаних слика -FILEBROWSER_STOPPROCESSING;Заустави обраду -FILEBROWSER_STOPPROCESSINGHINT;Зауставља обраду слика FILEBROWSER_THUMBSIZE;Преглед -FILEBROWSER_TOOLTIP_STOPPROCESSING;Покреће обраду фотографија када их закажете FILEBROWSER_UNRANK_TOOLTIP;Неоцењено.\nПречица: Shift-0 FILEBROWSER_ZOOMINHINT;Увећава преглед FILEBROWSER_ZOOMOUTHINT;Умањује преглед @@ -367,7 +363,6 @@ HISTORY_MSG_169;„CH“ крива HISTORY_MSG_170;Жив - крива HISTORY_MSG_171;„LC“ крива HISTORY_MSG_172;Лаб - Забрани LC -HISTORY_MSG_173;УШ - Детаљи луминансе HISTORY_MSG_174;CIECAM02 HISTORY_MSG_175;CAM02 - CAT02 адаптација HISTORY_MSG_176;CAM02 - Околина приказа @@ -397,7 +392,6 @@ HISTORY_MSG_199;CAM02 - Излазни хистограми HISTORY_MSG_200;CAM02 - Мапирање тонова HISTORY_MSG_201;УШ - Хроминанса Ц,З HISTORY_MSG_202;УШ - Хроминанса П,Y -HISTORY_MSG_203;УШ - Начин HISTORY_MSG_204;LMMSE кораци побољшања HISTORY_MSG_205;CAM02 - Врући/лош пиксели HISTORY_MSG_206;CAT02 - Аутоматска луминанса кадра @@ -642,7 +636,6 @@ PREFERENCES_DIRLAST;Последњи директоријум PREFERENCES_DIROTHER;Неки други PREFERENCES_DIRSELECTDLG;Бира одређени директоријум са сликама... PREFERENCES_DIRSOFTWARE;Директоријум са инсталацијом -PREFERENCES_EDITORCMDLINE;Произвољна наредба PREFERENCES_EDITORLAYOUT;Размештај програма PREFERENCES_EXTERNALEDITOR;Спољни уређивач PREFERENCES_FBROWSEROPTS;Опције разгледача датотеке @@ -958,19 +951,19 @@ TP_DARKFRAME_LABEL;Тамни кадар TP_DEFRINGE_LABEL;Уклаљање ореола TP_DEFRINGE_RADIUS;Полупречник TP_DEFRINGE_THRESHOLD;Праг -TP_DIRPYRDENOISE_BLUE;Хроминанса: Плава-Жута -TP_DIRPYRDENOISE_CHROMA;Боја +TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Хроминанса: Плава-Жута +TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Боја +TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Хроминанса - црвена-зелена TP_DIRPYRDENOISE_ENH;Побољшани режим TP_DIRPYRDENOISE_ENH_TOOLTIP;Повећава квалитет уклањања шума на уштрб око 20% времена за обраду. -TP_DIRPYRDENOISE_GAMMA;Гама -TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Гама утиче на јачину уклањања шума преко опсег тонова. Мања вредност ће утицати на сенке, већа ће повећати овај ефекат и на светлије тонове. -TP_DIRPYRDENOISE_LABEL;Дирекционо пирамидно уклањање шума -TP_DIRPYRDENOISE_LDETAIL;Детаљи луминансе -TP_DIRPYRDENOISE_LUMA;Луминанса -TP_DIRPYRDENOISE_METHOD;Начин -TP_DIRPYRDENOISE_METHOD_TOOLTIP;За рав слике можете користити РГБ или Лаб режиме.\n\nЗа остале слике се користи Лаб, без обзира на избор. -TP_DIRPYRDENOISE_RED;Хроминанса - црвена-зелена -TP_DIRPYRDENOISE_RGB;РГБ +TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Детаљи луминансе +TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Луминанса +TP_DIRPYRDENOISE_MAIN_COLORSPACE;Начин +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LABEL;Дирекционо пирамидно уклањање шума +TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;РГБ +TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;За рав слике можете користити РГБ или Лаб режиме.\n\nЗа остале слике се користи Лаб, без обзира на избор. +TP_DIRPYRDENOISE_MAIN_GAMMA;Гама +TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Гама утиче на јачину уклањања шума преко опсег тонова. Мања вредност ће утицати на сенке, већа ће повећати овај ефекат и на светлије тонове. TP_DIRPYREQUALIZER_LABEL;Детаљни ниво контраста TP_DIRPYREQUALIZER_LUMACOARSEST;грубо TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Контраст- @@ -1286,6 +1279,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !CURVEEDITOR_AXIS_IN;I: !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: @@ -1337,12 +1331,15 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !GENERAL_APPLY;Apply !GENERAL_ASIMAGE;As Image !GENERAL_OPEN;Open +!GENERAL_SLIDER;Slider !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. +!HISTORY_MSG_173;NR - Detail recovery +!HISTORY_MSG_203;NR - Color space !HISTORY_MSG_252;CbDL - Skin tar/prot !HISTORY_MSG_253;CbDL - Reduce artifacts !HISTORY_MSG_254;CbDL - Skin hue !HISTORY_MSG_255;NR - Median filter -!HISTORY_MSG_256;NR - Median type +!HISTORY_MSG_256;NR - Median - Type !HISTORY_MSG_257;Color Toning !HISTORY_MSG_258;CT - Color curve !HISTORY_MSG_259;CT - Opacity curve @@ -1383,7 +1380,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !HISTORY_MSG_294;Film Simulation - Strength !HISTORY_MSG_295;Film Simulation - Film !HISTORY_MSG_296;NR - Luminance curve -!HISTORY_MSG_297;NR - Quality +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_298;Dead pixel filter !HISTORY_MSG_299;NR - Chrominance curve !HISTORY_MSG_300;- @@ -1561,6 +1558,15 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1610,6 +1616,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !PARTIALPASTE_EQUALIZER;Wavelet levels !PARTIALPASTE_FILMSIMULATION;Film simulation !PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_METAGROUP;Metadata !PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter @@ -1632,6 +1639,12 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_CURVEBBOXPOS;Position of curve copy & paste buttons !PREFERENCES_CURVEBBOXPOS_ABOVE;Above !PREFERENCES_CURVEBBOXPOS_BELOW;Below @@ -1641,6 +1654,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4 !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_DIRECTORIES;Directories +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EXPAUT;Expert !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. @@ -1727,10 +1741,10 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1770,55 +1784,51 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 -!TP_DIRPYRDENOISE_3X3;3×3 -!TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft -!TP_DIRPYRDENOISE_5X5;5×5 -!TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft -!TP_DIRPYRDENOISE_7X7;7×7 -!TP_DIRPYRDENOISE_9X9;9×9 -!TP_DIRPYRDENOISE_ABM;Chroma only -!TP_DIRPYRDENOISE_AUT;Automatic global -!TP_DIRPYRDENOISE_AUTO;Automatic global -!TP_DIRPYRDENOISE_AUTO_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! -!TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CCCURVE;Chrominance curve -!TP_DIRPYRDENOISE_CHROMAFR;Chrominance -!TP_DIRPYRDENOISE_CTYPE;Method -!TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CUR;Curve -!TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -!TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. -!TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Modulates action of 'Luminance' denoise -!TP_DIRPYRDENOISE_LAB;L*a*b* -!TP_DIRPYRDENOISE_LABM;L*a*b* -!TP_DIRPYRDENOISE_LCURVE;Luminance curve -!TP_DIRPYRDENOISE_LM;Luminance only -!TP_DIRPYRDENOISE_LPLABM;Weighted L* (little) + a*b* (normal) -!TP_DIRPYRDENOISE_LTYPE;Luminance control -!TP_DIRPYRDENOISE_LUMAFR;Luminance -!TP_DIRPYRDENOISE_MAN;Manual -!TP_DIRPYRDENOISE_MANU;Manual -!TP_DIRPYRDENOISE_MED;Median Filter -!TP_DIRPYRDENOISE_MEDMETHOD;Median method -!TP_DIRPYRDENOISE_MEDTYPE;Median type -!TP_DIRPYRDENOISE_METHOD11;Quality -!TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Quality can be adapted to the noise pattern. A setting of "high" increases the noise reduction effect at a cost of extended processing time. -!TP_DIRPYRDENOISE_METM_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. -!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_NOISELABEL;Preview noise: Mean=%1 High=%2 -!TP_DIRPYRDENOISE_NOISELABELEMPTY;Preview noise: Mean= - High= - -!TP_DIRPYRDENOISE_NRESID_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -!TP_DIRPYRDENOISE_PASSES;Median iterations -!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -!TP_DIRPYRDENOISE_PON;Auto multi-zones -!TP_DIRPYRDENOISE_PRE;Preview multi-zones -!TP_DIRPYRDENOISE_PREV;Preview -!TP_DIRPYRDENOISE_PREVLABEL;Preview size=%1, Center: Px=%2 Py=%3 -!TP_DIRPYRDENOISE_RGBM;RGB -!TP_DIRPYRDENOISE_SHAL;Standard -!TP_DIRPYRDENOISE_SHALBI;High +!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance +!TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method +!TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Center: Px=%2 Py=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= - +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_LABEL;Noise Reduction +!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control +!TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve +!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +!TP_DIRPYRDENOISE_MAIN_MODE;Mode +!TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressive +!TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Conservative +!TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Conservative" preserves low frequency chroma patterns, while "aggressive" obliterates them. +!TP_DIRPYRDENOISE_MEDIAN_METHOD;Median method +!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median Filter +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Luminance only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +!TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. +!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) +!TP_DIRPYRDENOISE_MEDIAN_PASSES;Median iterations +!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_DIRPYRDENOISE_MEDIAN_TYPE;Median type +!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. !TP_DIRPYRDENOISE_SLI;Slider -!TP_DIRPYRDENOISE_TILELABEL;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_TYPE_3X3;3×3 +!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft +!TP_DIRPYRDENOISE_TYPE_5X5;5×5 +!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft +!TP_DIRPYRDENOISE_TYPE_7X7;7×7 +!TP_DIRPYRDENOISE_TYPE_9X9;9×9 !TP_DIRPYREQUALIZER_ALGO;Skin Color Range !TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: closer to the colors of the skin, minimizing the action on other colors\nLarge: avoid more artifacts. !TP_DIRPYREQUALIZER_ARTIF;Reduce artifacts @@ -1852,6 +1862,15 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_ICM_SAVEREFERENCE;Save Reference Image !TP_ICM_SAVEREFERENCE_APPLYWB;Apply white balance !TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles. +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged !TP_PREPROCESS_DEADPIXFILT;Dead pixel filter !TP_PREPROCESS_DEADPIXFILT_TOOLTIP;Tries to suppress dead pixels. !TP_PREPROCESS_HOTPIXFILT;Hot pixel filter @@ -1879,7 +1898,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_RAW_HPHD;HPHD !TP_RAW_IGV;IGV !TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_LMMSE;LMMSE !TP_RAW_MONO;Mono !TP_RAW_NONE;None (Shows sensor pattern) @@ -1916,6 +1935,8 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal !TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical !TP_RAW_PIXELSHIFTNREADISO;nRead +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. !TP_RAW_PIXELSHIFTPRNU;PRNU (%) !TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight !TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -1929,6 +1950,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue !TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green !TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +!TP_RAW_RCD;RCD !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index 6feba1bf3..a0597fbb6 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -7,6 +7,7 @@ ABOUT_TAB_RELEASENOTES;Beleške o izdanju ABOUT_TAB_SPLASH;Uvod ADJUSTER_RESET_TO_DEFAULT;Vrati na podrazumevano BATCHQUEUE_AUTOSTART;Sam započni +BATCHQUEUE_AUTOSTARTHINT;Pokreće obradu fotografija kada ih zakažete BATCHQUEUE_DESTFILENAME;Putanja i ime datoteke BATCH_PROCESSING;obrada CURVEEDITOR_CURVE;Krivulja @@ -154,12 +155,7 @@ FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Prikazuje slike koje nisu skoro sačuvane < FILEBROWSER_SHOWTRASHHINT;Prikazuje slike u smeću FILEBROWSER_SHOWUNCOLORHINT;Prikazuje slike koje nisu označene bojom Alt-0 FILEBROWSER_SHOWUNRANKHINT;Prikaži neocenjene slike -FILEBROWSER_STARTPROCESSING;Započni obradu -FILEBROWSER_STARTPROCESSINGHINT;Počinje obradu i čuvanje zakazanih slika -FILEBROWSER_STOPPROCESSING;Zaustavi obradu -FILEBROWSER_STOPPROCESSINGHINT;Zaustavlja obradu slika FILEBROWSER_THUMBSIZE;Pregled -FILEBROWSER_TOOLTIP_STOPPROCESSING;Pokreće obradu fotografija kada ih zakažete FILEBROWSER_UNRANK_TOOLTIP;Neocenjeno.\nPrečica: Shift-0 FILEBROWSER_ZOOMINHINT;Uvećava pregled FILEBROWSER_ZOOMOUTHINT;Umanjuje pregled @@ -367,7 +363,6 @@ HISTORY_MSG_169;„CH“ kriva HISTORY_MSG_170;Živ - kriva HISTORY_MSG_171;„LC“ kriva HISTORY_MSG_172;Lab - Zabrani LC -HISTORY_MSG_173;UŠ - Detalji luminanse HISTORY_MSG_174;CIECAM02 HISTORY_MSG_175;CAM02 - CAT02 adaptacija HISTORY_MSG_176;CAM02 - Okolina prikaza @@ -397,7 +392,6 @@ HISTORY_MSG_199;CAM02 - Izlazni histogrami HISTORY_MSG_200;CAM02 - Mapiranje tonova HISTORY_MSG_201;UŠ - Hrominansa C,Z HISTORY_MSG_202;UŠ - Hrominansa P,Y -HISTORY_MSG_203;UŠ - Način HISTORY_MSG_204;LMMSE koraci poboljšanja HISTORY_MSG_205;CAM02 - Vrući/loš pikseli HISTORY_MSG_206;CAT02 - Automatska luminansa kadra @@ -642,7 +636,6 @@ PREFERENCES_DIRLAST;Poslednji direktorijum PREFERENCES_DIROTHER;Neki drugi PREFERENCES_DIRSELECTDLG;Bira određeni direktorijum sa slikama... PREFERENCES_DIRSOFTWARE;Direktorijum sa instalacijom -PREFERENCES_EDITORCMDLINE;Proizvoljna naredba PREFERENCES_EDITORLAYOUT;Razmeštaj programa PREFERENCES_EXTERNALEDITOR;Spoljni uređivač PREFERENCES_FBROWSEROPTS;Opcije razgledača datoteke @@ -958,19 +951,19 @@ TP_DARKFRAME_LABEL;Tamni kadar TP_DEFRINGE_LABEL;Uklaljanje oreola TP_DEFRINGE_RADIUS;Poluprečnik TP_DEFRINGE_THRESHOLD;Prag -TP_DIRPYRDENOISE_BLUE;Hrominansa: Plava-Žuta -TP_DIRPYRDENOISE_CHROMA;Boja +TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Hrominansa: Plava-Žuta +TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Boja +TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Hrominansa - crvena-zelena TP_DIRPYRDENOISE_ENH;Poboljšani režim TP_DIRPYRDENOISE_ENH_TOOLTIP;Povećava kvalitet uklanjanja šuma na uštrb oko 20% vremena za obradu. -TP_DIRPYRDENOISE_GAMMA;Gama -TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gama utiče na jačinu uklanjanja šuma preko opseg tonova. Manja vrednost će uticati na senke, veća će povećati ovaj efekat i na svetlije tonove. -TP_DIRPYRDENOISE_LABEL;Direkciono piramidno uklanjanje šuma -TP_DIRPYRDENOISE_LDETAIL;Detalji luminanse -TP_DIRPYRDENOISE_LUMA;Luminansa -TP_DIRPYRDENOISE_METHOD;Način -TP_DIRPYRDENOISE_METHOD_TOOLTIP;Za rav slike možete koristiti RGB ili Lab režime.\n\nZa ostale slike se koristi Lab, bez obzira na izbor. -TP_DIRPYRDENOISE_RED;Hrominansa - crvena-zelena -TP_DIRPYRDENOISE_RGB;RGB +TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Detalji luminanse +TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminansa +TP_DIRPYRDENOISE_MAIN_COLORSPACE;Način +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LABEL;Direkciono piramidno uklanjanje šuma +TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;Za rav slike možete koristiti RGB ili Lab režime.\n\nZa ostale slike se koristi Lab, bez obzira na izbor. +TP_DIRPYRDENOISE_MAIN_GAMMA;Gama +TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gama utiče na jačinu uklanjanja šuma preko opseg tonova. Manja vrednost će uticati na senke, veća će povećati ovaj efekat i na svetlije tonove. TP_DIRPYREQUALIZER_LABEL;Detaljni nivo kontrasta TP_DIRPYREQUALIZER_LUMACOARSEST;grubo TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Kontrast- @@ -1286,6 +1279,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !CURVEEDITOR_AXIS_IN;I: !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: @@ -1337,12 +1331,15 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !GENERAL_APPLY;Apply !GENERAL_ASIMAGE;As Image !GENERAL_OPEN;Open +!GENERAL_SLIDER;Slider !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. +!HISTORY_MSG_173;NR - Detail recovery +!HISTORY_MSG_203;NR - Color space !HISTORY_MSG_252;CbDL - Skin tar/prot !HISTORY_MSG_253;CbDL - Reduce artifacts !HISTORY_MSG_254;CbDL - Skin hue !HISTORY_MSG_255;NR - Median filter -!HISTORY_MSG_256;NR - Median type +!HISTORY_MSG_256;NR - Median - Type !HISTORY_MSG_257;Color Toning !HISTORY_MSG_258;CT - Color curve !HISTORY_MSG_259;CT - Opacity curve @@ -1383,7 +1380,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !HISTORY_MSG_294;Film Simulation - Strength !HISTORY_MSG_295;Film Simulation - Film !HISTORY_MSG_296;NR - Luminance curve -!HISTORY_MSG_297;NR - Quality +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_298;Dead pixel filter !HISTORY_MSG_299;NR - Chrominance curve !HISTORY_MSG_300;- @@ -1561,6 +1558,15 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1610,6 +1616,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !PARTIALPASTE_EQUALIZER;Wavelet levels !PARTIALPASTE_FILMSIMULATION;Film simulation !PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_METAGROUP;Metadata !PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter @@ -1632,6 +1639,12 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_CURVEBBOXPOS;Position of curve copy & paste buttons !PREFERENCES_CURVEBBOXPOS_ABOVE;Above !PREFERENCES_CURVEBBOXPOS_BELOW;Below @@ -1641,6 +1654,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4 !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_DIRECTORIES;Directories +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EXPAUT;Expert !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. @@ -1727,10 +1741,10 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1770,55 +1784,51 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 -!TP_DIRPYRDENOISE_3X3;3×3 -!TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft -!TP_DIRPYRDENOISE_5X5;5×5 -!TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft -!TP_DIRPYRDENOISE_7X7;7×7 -!TP_DIRPYRDENOISE_9X9;9×9 -!TP_DIRPYRDENOISE_ABM;Chroma only -!TP_DIRPYRDENOISE_AUT;Automatic global -!TP_DIRPYRDENOISE_AUTO;Automatic global -!TP_DIRPYRDENOISE_AUTO_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! -!TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CCCURVE;Chrominance curve -!TP_DIRPYRDENOISE_CHROMAFR;Chrominance -!TP_DIRPYRDENOISE_CTYPE;Method -!TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CUR;Curve -!TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -!TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. -!TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Modulates action of 'Luminance' denoise -!TP_DIRPYRDENOISE_LAB;L*a*b* -!TP_DIRPYRDENOISE_LABM;L*a*b* -!TP_DIRPYRDENOISE_LCURVE;Luminance curve -!TP_DIRPYRDENOISE_LM;Luminance only -!TP_DIRPYRDENOISE_LPLABM;Weighted L* (little) + a*b* (normal) -!TP_DIRPYRDENOISE_LTYPE;Luminance control -!TP_DIRPYRDENOISE_LUMAFR;Luminance -!TP_DIRPYRDENOISE_MAN;Manual -!TP_DIRPYRDENOISE_MANU;Manual -!TP_DIRPYRDENOISE_MED;Median Filter -!TP_DIRPYRDENOISE_MEDMETHOD;Median method -!TP_DIRPYRDENOISE_MEDTYPE;Median type -!TP_DIRPYRDENOISE_METHOD11;Quality -!TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Quality can be adapted to the noise pattern. A setting of "high" increases the noise reduction effect at a cost of extended processing time. -!TP_DIRPYRDENOISE_METM_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. -!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_NOISELABEL;Preview noise: Mean=%1 High=%2 -!TP_DIRPYRDENOISE_NOISELABELEMPTY;Preview noise: Mean= - High= - -!TP_DIRPYRDENOISE_NRESID_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -!TP_DIRPYRDENOISE_PASSES;Median iterations -!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -!TP_DIRPYRDENOISE_PON;Auto multi-zones -!TP_DIRPYRDENOISE_PRE;Preview multi-zones -!TP_DIRPYRDENOISE_PREV;Preview -!TP_DIRPYRDENOISE_PREVLABEL;Preview size=%1, Center: Px=%2 Py=%3 -!TP_DIRPYRDENOISE_RGBM;RGB -!TP_DIRPYRDENOISE_SHAL;Standard -!TP_DIRPYRDENOISE_SHALBI;High +!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance +!TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method +!TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Center: Px=%2 Py=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= - +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_LABEL;Noise Reduction +!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control +!TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve +!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +!TP_DIRPYRDENOISE_MAIN_MODE;Mode +!TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressive +!TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Conservative +!TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Conservative" preserves low frequency chroma patterns, while "aggressive" obliterates them. +!TP_DIRPYRDENOISE_MEDIAN_METHOD;Median method +!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median Filter +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Luminance only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +!TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. +!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) +!TP_DIRPYRDENOISE_MEDIAN_PASSES;Median iterations +!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_DIRPYRDENOISE_MEDIAN_TYPE;Median type +!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. !TP_DIRPYRDENOISE_SLI;Slider -!TP_DIRPYRDENOISE_TILELABEL;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_TYPE_3X3;3×3 +!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft +!TP_DIRPYRDENOISE_TYPE_5X5;5×5 +!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft +!TP_DIRPYRDENOISE_TYPE_7X7;7×7 +!TP_DIRPYRDENOISE_TYPE_9X9;9×9 !TP_DIRPYREQUALIZER_ALGO;Skin Color Range !TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: closer to the colors of the skin, minimizing the action on other colors\nLarge: avoid more artifacts. !TP_DIRPYREQUALIZER_ARTIF;Reduce artifacts @@ -1852,6 +1862,15 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_ICM_SAVEREFERENCE;Save Reference Image !TP_ICM_SAVEREFERENCE_APPLYWB;Apply white balance !TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles. +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged !TP_PREPROCESS_DEADPIXFILT;Dead pixel filter !TP_PREPROCESS_DEADPIXFILT_TOOLTIP;Tries to suppress dead pixels. !TP_PREPROCESS_HOTPIXFILT;Hot pixel filter @@ -1879,7 +1898,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_RAW_HPHD;HPHD !TP_RAW_IGV;IGV !TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_LMMSE;LMMSE !TP_RAW_MONO;Mono !TP_RAW_NONE;None (Shows sensor pattern) @@ -1916,6 +1935,8 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal !TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical !TP_RAW_PIXELSHIFTNREADISO;nRead +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. !TP_RAW_PIXELSHIFTPRNU;PRNU (%) !TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight !TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -1929,6 +1950,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue !TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green !TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +!TP_RAW_RCD;RCD !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index f589c3ee1..ada1225ef 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -4,6 +4,7 @@ ADJUSTER_RESET_TO_DEFAULT;Resetovať na predvolené nastavenia BATCHQUEUE_AUTOSTART;Auto štart +BATCHQUEUE_AUTOSTARTHINT;Začať spracovanie automaticky, keď príde nová úloha BATCH_PROCESSING;Dávkové spracovanie CURVEEDITOR_CUSTOM;Vlastné CURVEEDITOR_DARKS;Tiene @@ -75,12 +76,7 @@ FILEBROWSER_SHOWRANK4HINT;Ukázať obrázky triedy 4 hviezda FILEBROWSER_SHOWRANK5HINT;Ukázať obrázky triedy 5 hviezda FILEBROWSER_SHOWTRASHHINT;Zobraziť obsah koša FILEBROWSER_SHOWUNRANKHINT;Zobraziť obrázky bez triedy -FILEBROWSER_STARTPROCESSING;Začať spracovanie -FILEBROWSER_STARTPROCESSINGHINT;Začať spracovanie/ukladanie obrázkov v rade -FILEBROWSER_STOPPROCESSING;Zastaviť spracovanie -FILEBROWSER_STOPPROCESSINGHINT;Zastaviť spracovanie obrázkov FILEBROWSER_THUMBSIZE;Veľkosť zmenšenín -FILEBROWSER_TOOLTIP_STOPPROCESSING;Začať spracovanie automaticky, keď príde nová úloha FILEBROWSER_ZOOMINHINT;Zväčšiť veľkosť zmenšenín FILEBROWSER_ZOOMOUTHINT;Zmenšiť veľkosť zmenšenín GENERAL_ABOUT;O programe @@ -293,7 +289,6 @@ PREFERENCES_DIRLAST;Posledný navštívený adresár PREFERENCES_DIROTHER;Iný PREFERENCES_DIRSELECTDLG;Vybrať adresár s obrázkami pri spustení... PREFERENCES_DIRSOFTWARE;Inštalačný adresár -PREFERENCES_EDITORCMDLINE;Iný príkazový riadok PREFERENCES_EDITORLAYOUT;Rozloženie editora PREFERENCES_EXTERNALEDITOR;Externý editor PREFERENCES_FBROWSEROPTS;Voľby prehliadača súborov @@ -399,10 +394,10 @@ TP_CROP_SELECTCROP; Vyberte Orez TP_CROP_W;Š TP_CROP_X;x TP_CROP_Y;y -TP_DIRPYRDENOISE_CHROMA;Farebnosť -TP_DIRPYRDENOISE_GAMMA;Gamma -TP_DIRPYRDENOISE_LABEL;Redukcia šumu pomocou smerovej pyramídy -TP_DIRPYRDENOISE_LUMA;Svietivosť +TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Farebnosť +TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Svietivosť +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LABEL;Redukcia šumu pomocou smerovej pyramídy +TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma TP_DIRPYREQUALIZER_LABEL;Vyrovnávač smerovej pyramídy TP_DIRPYREQUALIZER_LUMACOARSEST;Najhrubšie TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Kontrast- @@ -518,6 +513,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !ABOUT_TAB_RELEASENOTES;Release Notes !ABOUT_TAB_SPLASH;Splash !BATCHQUEUE_DESTFILENAME;Path and file name +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !CURVEEDITOR_AXIS_IN;I: !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: @@ -649,6 +645,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open +!GENERAL_SLIDER;Slider !GENERAL_WARNING;Warning !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. !HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.\nRight-click on image preview to freeze/unfreeze. @@ -736,7 +733,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !HISTORY_MSG_170;Vibrance - HH curve !HISTORY_MSG_171;L*a*b* - LC curve !HISTORY_MSG_172;L*a*b* - Restrict LC -!HISTORY_MSG_173;NR - Luminance detail +!HISTORY_MSG_173;NR - Detail recovery !HISTORY_MSG_174;CIECAM02 !HISTORY_MSG_175;CAM02 - CAT02 adaptation !HISTORY_MSG_176;CAM02 - Viewing surround @@ -766,7 +763,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !HISTORY_MSG_200;CAM02 - Tone mapping !HISTORY_MSG_201;NR - Chrominance - R&G !HISTORY_MSG_202;NR - Chrominance - B&Y -!HISTORY_MSG_203;NR - Method +!HISTORY_MSG_203;NR - Color space !HISTORY_MSG_204;LMMSE enhancement steps !HISTORY_MSG_205;CAM02 - Hot/bad pixel filter !HISTORY_MSG_206;CAT02 - Auto scene luminosity @@ -818,7 +815,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !HISTORY_MSG_253;CbDL - Reduce artifacts !HISTORY_MSG_254;CbDL - Skin hue !HISTORY_MSG_255;NR - Median filter -!HISTORY_MSG_256;NR - Median type +!HISTORY_MSG_256;NR - Median - Type !HISTORY_MSG_257;Color Toning !HISTORY_MSG_258;CT - Color curve !HISTORY_MSG_259;CT - Opacity curve @@ -859,7 +856,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !HISTORY_MSG_294;Film Simulation - Strength !HISTORY_MSG_295;Film Simulation - Film !HISTORY_MSG_296;NR - Luminance curve -!HISTORY_MSG_297;NR - Quality +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_298;Dead pixel filter !HISTORY_MSG_299;NR - Chrominance curve !HISTORY_MSG_300;- @@ -1037,6 +1034,15 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -1145,6 +1151,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PARTIALPASTE_HSVEQUALIZER;HSV equalizer !PARTIALPASTE_IMPULSEDENOISE;Impulse noise reduction !PARTIALPASTE_LENSPROFILE;Profiled lens correction +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_PCVIGNETTE;Vignette filter !PARTIALPASTE_PERSPECTIVE;Perspective !PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter @@ -1193,6 +1200,12 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_CURVEBBOXPOS;Position of curve copy & paste buttons !PREFERENCES_CURVEBBOXPOS_ABOVE;Above !PREFERENCES_CURVEBBOXPOS_BELOW;Below @@ -1217,6 +1230,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EXPAUT;Expert !PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) !PREFERENCES_FLATFIELDFOUND;Found @@ -1499,14 +1513,14 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_COLORAPP_TCMODE_LABEL3;Curve chroma mode !TP_COLORAPP_TCMODE_LIGHTNESS;Lightness !TP_COLORAPP_TCMODE_SATUR;Saturation -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1555,64 +1569,60 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold -!TP_DIRPYRDENOISE_3X3;3×3 -!TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft -!TP_DIRPYRDENOISE_5X5;5×5 -!TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft -!TP_DIRPYRDENOISE_7X7;7×7 -!TP_DIRPYRDENOISE_9X9;9×9 -!TP_DIRPYRDENOISE_ABM;Chroma only -!TP_DIRPYRDENOISE_AUT;Automatic global -!TP_DIRPYRDENOISE_AUTO;Automatic global -!TP_DIRPYRDENOISE_AUTO_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! -!TP_DIRPYRDENOISE_BLUE;Chrominance - Blue-Yellow -!TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CCCURVE;Chrominance curve -!TP_DIRPYRDENOISE_CHROMAFR;Chrominance -!TP_DIRPYRDENOISE_CTYPE;Method -!TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CUR;Curve -!TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -!TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. -!TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Modulates action of 'Luminance' denoise +!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! +!TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Chrominance - Blue-Yellow +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance +!TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method +!TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Center: Px=%2 Py=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= - +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Chrominance - Red-Green !TP_DIRPYRDENOISE_ENH;Enhanced mode !TP_DIRPYRDENOISE_ENH_TOOLTIP;Increases noise reduction quality at the expense of a 20% processing time increase. -!TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. -!TP_DIRPYRDENOISE_LAB;L*a*b* -!TP_DIRPYRDENOISE_LABM;L*a*b* -!TP_DIRPYRDENOISE_LCURVE;Luminance curve -!TP_DIRPYRDENOISE_LDETAIL;Luminance - Detail -!TP_DIRPYRDENOISE_LM;Luminance only -!TP_DIRPYRDENOISE_LPLABM;Weighted L* (little) + a*b* (normal) -!TP_DIRPYRDENOISE_LTYPE;Luminance control -!TP_DIRPYRDENOISE_LUMAFR;Luminance -!TP_DIRPYRDENOISE_MAN;Manual -!TP_DIRPYRDENOISE_MANU;Manual -!TP_DIRPYRDENOISE_MED;Median Filter -!TP_DIRPYRDENOISE_MEDMETHOD;Median method -!TP_DIRPYRDENOISE_MEDTYPE;Median type -!TP_DIRPYRDENOISE_METHOD;Method -!TP_DIRPYRDENOISE_METHOD11;Quality -!TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Quality can be adapted to the noise pattern. A setting of "high" increases the noise reduction effect at a cost of extended processing time. -!TP_DIRPYRDENOISE_METHOD_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. -!TP_DIRPYRDENOISE_METM_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. -!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_NOISELABEL;Preview noise: Mean=%1 High=%2 -!TP_DIRPYRDENOISE_NOISELABELEMPTY;Preview noise: Mean= - High= - -!TP_DIRPYRDENOISE_NRESID_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -!TP_DIRPYRDENOISE_PASSES;Median iterations -!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -!TP_DIRPYRDENOISE_PON;Auto multi-zones -!TP_DIRPYRDENOISE_PRE;Preview multi-zones -!TP_DIRPYRDENOISE_PREV;Preview -!TP_DIRPYRDENOISE_PREVLABEL;Preview size=%1, Center: Px=%2 Py=%3 -!TP_DIRPYRDENOISE_RED;Chrominance - Red-Green -!TP_DIRPYRDENOISE_RGB;RGB -!TP_DIRPYRDENOISE_RGBM;RGB -!TP_DIRPYRDENOISE_SHAL;Standard -!TP_DIRPYRDENOISE_SHALBI;High +!TP_DIRPYRDENOISE_LABEL;Noise Reduction +!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control +!TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve +!TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Detail recovery +!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance +!TP_DIRPYRDENOISE_MAIN_COLORSPACE;Color space +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. +!TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. +!TP_DIRPYRDENOISE_MAIN_MODE;Mode +!TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressive +!TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Conservative +!TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Conservative" preserves low frequency chroma patterns, while "aggressive" obliterates them. +!TP_DIRPYRDENOISE_MEDIAN_METHOD;Median method +!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median Filter +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Luminance only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +!TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. +!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) +!TP_DIRPYRDENOISE_MEDIAN_PASSES;Median iterations +!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_DIRPYRDENOISE_MEDIAN_TYPE;Median type +!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. !TP_DIRPYRDENOISE_SLI;Slider -!TP_DIRPYRDENOISE_TILELABEL;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_TYPE_3X3;3×3 +!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft +!TP_DIRPYRDENOISE_TYPE_5X5;5×5 +!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft +!TP_DIRPYRDENOISE_TYPE_7X7;7×7 +!TP_DIRPYRDENOISE_TYPE_9X9;9×9 !TP_DIRPYREQUALIZER_ALGO;Skin Color Range !TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: closer to the colors of the skin, minimizing the action on other colors\nLarge: avoid more artifacts. !TP_DIRPYREQUALIZER_ARTIF;Reduce artifacts @@ -1747,6 +1757,15 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_LENSPROFILE_USECA;Chromatic aberration correction !TP_LENSPROFILE_USEDIST;Distortion correction !TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged !TP_NEUTRAL;Reset !TP_NEUTRAL_TIP;Resets exposure sliders to neutral values.\nApplies to the same controls that Auto Levels applies to, regardless of whether you used Auto Levels or not. !TP_PCVIGNETTE_FEATHER;Feather @@ -1788,7 +1807,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_RAW_DCB;DCB !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... -!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast !TP_RAW_HD;Threshold @@ -1796,7 +1815,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_RAW_HPHD;HPHD !TP_RAW_IGV;IGV !TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_LABEL;Demosaicing !TP_RAW_LMMSE;LMMSE !TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps @@ -1836,6 +1855,8 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal !TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical !TP_RAW_PIXELSHIFTNREADISO;nRead +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. !TP_RAW_PIXELSHIFTPRNU;PRNU (%) !TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight !TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -1849,6 +1870,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue !TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green !TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +!TP_RAW_RCD;RCD !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index ecdcfff8a..034995605 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -58,10 +58,6 @@ FILEBROWSER_SHOWRANK4HINT;Näytä 4 tähden kuvat FILEBROWSER_SHOWRANK5HINT;Näytä 5 tähden kuvat FILEBROWSER_SHOWTRASHHINT;Näytä roskakorin sisältö FILEBROWSER_SHOWUNRANKHINT;Näytä arvostelemattomat kuvat -FILEBROWSER_STARTPROCESSING;Aloita käsittely -FILEBROWSER_STARTPROCESSINGHINT;Aloita jonossa olevien kuvien käsittely -FILEBROWSER_STOPPROCESSING;Lopeta käsittely -FILEBROWSER_STOPPROCESSINGHINT;Lopeta jonossa olevien kuvien käsittely FILEBROWSER_THUMBSIZE;Esikatselun koko FILEBROWSER_ZOOMINHINT;Kasvata esikatselukuvien kokoa FILEBROWSER_ZOOMOUTHINT;Pienennä esikatselukuvien kokoa @@ -249,7 +245,6 @@ PREFERENCES_DIRLAST;Viimeksi käytetty hakemisto PREFERENCES_DIROTHER;Muu PREFERENCES_DIRSELECTDLG;Valitse kuvahakemisto käynnistettäessä... PREFERENCES_DIRSOFTWARE;Asennushakemisto -PREFERENCES_EDITORCMDLINE;Muu komentorivi PREFERENCES_EXTERNALEDITOR;Ulkoinen ohjelma PREFERENCES_FBROWSEROPTS;Näytettävät tiedot PREFERENCES_FILEFORMAT;Tallennuksen asetukset @@ -428,7 +423,9 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !ABOUT_TAB_RELEASENOTES;Release Notes !ABOUT_TAB_SPLASH;Splash !BATCHQUEUE_AUTOSTART;Auto-start +!BATCHQUEUE_AUTOSTARTHINT;Start processing automatically when a new job arrives. !BATCHQUEUE_DESTFILENAME;Path and file name +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !BATCH_PROCESSING;Batch Processing !CURVEEDITOR_AXIS_IN;I: !CURVEEDITOR_AXIS_LEFT_TAN;LT: @@ -559,7 +556,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !FILEBROWSER_SHOWRECENTLYSAVEDHINT;Show saved images.\nShortcut: Alt-7 !FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Show unsaved images.\nShortcut: Alt-6 !FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0 -!FILEBROWSER_TOOLTIP_STOPPROCESSING;Start processing automatically when a new job arrives. !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 !FILECHOOSER_FILTER_ANY;All files !FILECHOOSER_FILTER_COLPROF;Color profiles @@ -577,6 +573,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open +!GENERAL_SLIDER;Slider !GENERAL_UNCHANGED;(Unchanged) !GENERAL_WARNING;Warning !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. @@ -675,7 +672,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !HISTORY_MSG_170;Vibrance - HH curve !HISTORY_MSG_171;L*a*b* - LC curve !HISTORY_MSG_172;L*a*b* - Restrict LC -!HISTORY_MSG_173;NR - Luminance detail +!HISTORY_MSG_173;NR - Detail recovery !HISTORY_MSG_174;CIECAM02 !HISTORY_MSG_175;CAM02 - CAT02 adaptation !HISTORY_MSG_176;CAM02 - Viewing surround @@ -705,7 +702,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !HISTORY_MSG_200;CAM02 - Tone mapping !HISTORY_MSG_201;NR - Chrominance - R&G !HISTORY_MSG_202;NR - Chrominance - B&Y -!HISTORY_MSG_203;NR - Method +!HISTORY_MSG_203;NR - Color space !HISTORY_MSG_204;LMMSE enhancement steps !HISTORY_MSG_205;CAM02 - Hot/bad pixel filter !HISTORY_MSG_206;CAT02 - Auto scene luminosity @@ -757,7 +754,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !HISTORY_MSG_253;CbDL - Reduce artifacts !HISTORY_MSG_254;CbDL - Skin hue !HISTORY_MSG_255;NR - Median filter -!HISTORY_MSG_256;NR - Median type +!HISTORY_MSG_256;NR - Median - Type !HISTORY_MSG_257;Color Toning !HISTORY_MSG_258;CT - Color curve !HISTORY_MSG_259;CT - Opacity curve @@ -798,7 +795,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !HISTORY_MSG_294;Film Simulation - Strength !HISTORY_MSG_295;Film Simulation - Film !HISTORY_MSG_296;NR - Luminance curve -!HISTORY_MSG_297;NR - Quality +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_298;Dead pixel filter !HISTORY_MSG_299;NR - Chrominance curve !HISTORY_MSG_300;- @@ -976,6 +973,15 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -1093,6 +1099,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PARTIALPASTE_IMPULSEDENOISE;Impulse noise reduction !PARTIALPASTE_LABCURVE;L*a*b* adjustments !PARTIALPASTE_LENSPROFILE;Profiled lens correction +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_PCVIGNETTE;Vignette filter !PARTIALPASTE_PERSPECTIVE;Perspective !PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter @@ -1144,6 +1151,12 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_CURVEBBOXPOS;Position of curve copy & paste buttons !PREFERENCES_CURVEBBOXPOS_ABOVE;Above !PREFERENCES_CURVEBBOXPOS_BELOW;Below @@ -1168,6 +1181,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EDITORLAYOUT;Editor Layout !PREFERENCES_EXPAUT;Expert !PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) @@ -1460,14 +1474,14 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_COLORAPP_TCMODE_LABEL3;Curve chroma mode !TP_COLORAPP_TCMODE_LIGHTNESS;Lightness !TP_COLORAPP_TCMODE_SATUR;Saturation -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1516,68 +1530,63 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold -!TP_DIRPYRDENOISE_3X3;3×3 -!TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft -!TP_DIRPYRDENOISE_5X5;5×5 -!TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft -!TP_DIRPYRDENOISE_7X7;7×7 -!TP_DIRPYRDENOISE_9X9;9×9 -!TP_DIRPYRDENOISE_ABM;Chroma only -!TP_DIRPYRDENOISE_AUT;Automatic global -!TP_DIRPYRDENOISE_AUTO;Automatic global -!TP_DIRPYRDENOISE_AUTO_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! -!TP_DIRPYRDENOISE_BLUE;Chrominance - Blue-Yellow -!TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CCCURVE;Chrominance curve -!TP_DIRPYRDENOISE_CHROMA;Chrominance - Master -!TP_DIRPYRDENOISE_CHROMAFR;Chrominance -!TP_DIRPYRDENOISE_CTYPE;Method -!TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CUR;Curve -!TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -!TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. -!TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Modulates action of 'Luminance' denoise +!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! +!TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Chrominance - Blue-Yellow +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance +!TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual +!TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Chrominance - Master +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method +!TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Center: Px=%2 Py=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= - +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Chrominance - Red-Green !TP_DIRPYRDENOISE_ENH;Enhanced mode !TP_DIRPYRDENOISE_ENH_TOOLTIP;Increases noise reduction quality at the expense of a 20% processing time increase. -!TP_DIRPYRDENOISE_GAMMA;Gamma -!TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. -!TP_DIRPYRDENOISE_LAB;L*a*b* !TP_DIRPYRDENOISE_LABEL;Noise Reduction -!TP_DIRPYRDENOISE_LABM;L*a*b* -!TP_DIRPYRDENOISE_LCURVE;Luminance curve -!TP_DIRPYRDENOISE_LDETAIL;Luminance - Detail -!TP_DIRPYRDENOISE_LM;Luminance only -!TP_DIRPYRDENOISE_LPLABM;Weighted L* (little) + a*b* (normal) -!TP_DIRPYRDENOISE_LTYPE;Luminance control -!TP_DIRPYRDENOISE_LUMA;Luminance -!TP_DIRPYRDENOISE_LUMAFR;Luminance -!TP_DIRPYRDENOISE_MAN;Manual -!TP_DIRPYRDENOISE_MANU;Manual -!TP_DIRPYRDENOISE_MED;Median Filter -!TP_DIRPYRDENOISE_MEDMETHOD;Median method -!TP_DIRPYRDENOISE_MEDTYPE;Median type -!TP_DIRPYRDENOISE_METHOD;Method -!TP_DIRPYRDENOISE_METHOD11;Quality -!TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Quality can be adapted to the noise pattern. A setting of "high" increases the noise reduction effect at a cost of extended processing time. -!TP_DIRPYRDENOISE_METHOD_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. -!TP_DIRPYRDENOISE_METM_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. -!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_NOISELABEL;Preview noise: Mean=%1 High=%2 -!TP_DIRPYRDENOISE_NOISELABELEMPTY;Preview noise: Mean= - High= - -!TP_DIRPYRDENOISE_NRESID_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -!TP_DIRPYRDENOISE_PASSES;Median iterations -!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -!TP_DIRPYRDENOISE_PON;Auto multi-zones -!TP_DIRPYRDENOISE_PRE;Preview multi-zones -!TP_DIRPYRDENOISE_PREV;Preview -!TP_DIRPYRDENOISE_PREVLABEL;Preview size=%1, Center: Px=%2 Py=%3 -!TP_DIRPYRDENOISE_RED;Chrominance - Red-Green -!TP_DIRPYRDENOISE_RGB;RGB -!TP_DIRPYRDENOISE_RGBM;RGB -!TP_DIRPYRDENOISE_SHAL;Standard -!TP_DIRPYRDENOISE_SHALBI;High +!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control +!TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve +!TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Detail recovery +!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance +!TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminance +!TP_DIRPYRDENOISE_MAIN_COLORSPACE;Color space +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. +!TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma +!TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. +!TP_DIRPYRDENOISE_MAIN_MODE;Mode +!TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressive +!TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Conservative +!TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Conservative" preserves low frequency chroma patterns, while "aggressive" obliterates them. +!TP_DIRPYRDENOISE_MEDIAN_METHOD;Median method +!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median Filter +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Luminance only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +!TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. +!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) +!TP_DIRPYRDENOISE_MEDIAN_PASSES;Median iterations +!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_DIRPYRDENOISE_MEDIAN_TYPE;Median type +!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. !TP_DIRPYRDENOISE_SLI;Slider -!TP_DIRPYRDENOISE_TILELABEL;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_TYPE_3X3;3×3 +!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft +!TP_DIRPYRDENOISE_TYPE_5X5;5×5 +!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft +!TP_DIRPYRDENOISE_TYPE_7X7;7×7 +!TP_DIRPYRDENOISE_TYPE_9X9;9×9 !TP_DIRPYREQUALIZER_ALGO;Skin Color Range !TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: closer to the colors of the skin, minimizing the action on other colors\nLarge: avoid more artifacts. !TP_DIRPYREQUALIZER_ARTIF;Reduce artifacts @@ -1728,6 +1737,15 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_LENSPROFILE_USECA;Chromatic aberration correction !TP_LENSPROFILE_USEDIST;Distortion correction !TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged !TP_NEUTRAL;Reset !TP_NEUTRAL_TIP;Resets exposure sliders to neutral values.\nApplies to the same controls that Auto Levels applies to, regardless of whether you used Auto Levels or not. !TP_PCVIGNETTE_FEATHER;Feather @@ -1777,7 +1795,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_RAW_DCBITERATIONS;Number of DCB iterations !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... -!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast !TP_RAW_HD;Threshold @@ -1785,7 +1803,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_RAW_HPHD;HPHD !TP_RAW_IGV;IGV !TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_LABEL;Demosaicing !TP_RAW_LMMSE;LMMSE !TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps @@ -1825,6 +1843,8 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal !TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical !TP_RAW_PIXELSHIFTNREADISO;nRead +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. !TP_RAW_PIXELSHIFTPRNU;PRNU (%) !TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight !TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -1838,6 +1858,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue !TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green !TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +!TP_RAW_RCD;RCD !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index 0f3ddaafd..0e45b4441 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -10,6 +10,7 @@ ABOUT_TAB_RELEASENOTES;Versionsnyheter ABOUT_TAB_SPLASH;Splash ADJUSTER_RESET_TO_DEFAULT;Återställ till standard BATCHQUEUE_AUTOSTART;Autostart +BATCHQUEUE_AUTOSTARTHINT;Starta behandlingen automatiskt när en ny bild kommer in BATCHQUEUE_DESTFILENAME;Sökväg och filnamn BATCH_PROCESSING;Batchbehandling CURVEEDITOR_AXIS_IN;I: @@ -178,12 +179,7 @@ FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Visa bilder som inte nyligen sparats\nKortk FILEBROWSER_SHOWTRASHHINT;Visa innehållet i papperskorgen FILEBROWSER_SHOWUNCOLORHINT;Visa bilder utan färgetikett\nKortkommando: Alt-0 FILEBROWSER_SHOWUNRANKHINT;Visa icke-betygsatta bilder -FILEBROWSER_STARTPROCESSING;Starta behandlingen -FILEBROWSER_STARTPROCESSINGHINT;Starta behandlingen och spara bilderna i behandlingskön -FILEBROWSER_STOPPROCESSING;Avbryt behandlingen -FILEBROWSER_STOPPROCESSINGHINT;Avbryt behandlingen av bilderna FILEBROWSER_THUMBSIZE;Miniatyrbildens storlek -FILEBROWSER_TOOLTIP_STOPPROCESSING;Starta behandlingen automatiskt när en ny bild kommer in FILEBROWSER_UNRANK_TOOLTIP;Ta bort betyg\nKortkommando: Shift-0 FILEBROWSER_ZOOMINHINT;Förstora miniatyrbilderna.\nKortkommando: +\nKortkommado i enkelbildsläget: Alt-+ FILEBROWSER_ZOOMOUTHINT;Förminska miniatyrbilderna.\nKortkommando: -\nKortkommado i enkelbildsläget: Alt-- @@ -401,7 +397,6 @@ HISTORY_MSG_169;'CH'-kurvan HISTORY_MSG_170;Lyster-kurvan HISTORY_MSG_171;'LC'-kurvan HISTORY_MSG_172;Begränsa LC till röda färger och hudtoner -HISTORY_MSG_173;Brusreducering - Luminansdetalj HISTORY_MSG_174;CIECAM02 HISTORY_MSG_175;CAM02 - Cat02-anpassning HISTORY_MSG_176;CAM02 - Vyns mörka omgivning @@ -431,7 +426,6 @@ HISTORY_MSG_199;CAM02 - Utmatningshistogram HISTORY_MSG_200;CAM02 - Tonmappning HISTORY_MSG_201;NR - Krominans röd-grön HISTORY_MSG_202;NR - Krominans blå-gul -HISTORY_MSG_203;Brusreducering - metod HISTORY_MSG_204;LMMSE förbättringssteg HISTORY_MSG_205;CAM02 - Heta/dåliga pixlar HISTORY_MSG_206;CAT02 - Anpassa automatiskt till bilden @@ -483,7 +477,6 @@ HISTORY_MSG_252;CbDL Hudtoner HISTORY_MSG_253;CbDL Reducera artefakter HISTORY_MSG_254;CbDL - Nyans på hudtoner HISTORY_MSG_255;CbDL - Algoritm -HISTORY_MSG_256;NR - Median HISTORY_MSG_258;CT - Färgkurva HISTORY_MSG_259;CT - Opacitetskurva HISTORY_MSG_260;CT - a*[b*] opacitet @@ -521,7 +514,6 @@ HISTORY_MSG_293;Filmsimulering HISTORY_MSG_294;Filmsimulering - Styrka HISTORY_MSG_295;Filmsimulering - Film HISTORY_MSG_296;NR - Luminanskurva -HISTORY_MSG_297;NR - Kvalitet HISTORY_MSG_298;Filter för döda pixlar HISTORY_MSG_299;NR - Krominanskurva HISTORY_MSG_300;- @@ -883,7 +875,6 @@ PREFERENCES_DIRLAST;Senaste besökta katalog PREFERENCES_DIROTHER;Annan PREFERENCES_DIRSELECTDLG;Välj bildkatalog vid uppstart... PREFERENCES_DIRSOFTWARE;Installationskatalog -PREFERENCES_EDITORCMDLINE;Annan kommandorad PREFERENCES_EDITORLAYOUT;Layout för redigeringsvyn PREFERENCES_EXPAUT;Expert PREFERENCES_EXTERNALEDITOR;Externt bildredigeringsprogram @@ -1288,57 +1279,51 @@ TP_DARKFRAME_LABEL;Svartbild TP_DEFRINGE_LABEL;Fyll ut överstrålning TP_DEFRINGE_RADIUS;Radie TP_DEFRINGE_THRESHOLD;Tröskelvärde -TP_DIRPYRDENOISE_3X3;3×3 -TP_DIRPYRDENOISE_3X3_SOFT;3×3 mjuk -TP_DIRPYRDENOISE_5X5;5×5 -TP_DIRPYRDENOISE_5X5_SOFT;5×5 mjuk -TP_DIRPYRDENOISE_7X7;7×7 -TP_DIRPYRDENOISE_9X9;9×9 -TP_DIRPYRDENOISE_ABM;Endast chroma -TP_DIRPYRDENOISE_AUT;Automatisk global -TP_DIRPYRDENOISE_AUTO;Automatisk global -TP_DIRPYRDENOISE_AUTO_TOOLTIP;Försök att utvärdera chroma-bruset\nVar försiktig, den här beräkningen görs på genomsnittet och är tämligen subjektiv! -TP_DIRPYRDENOISE_BLUE;Krominans - Blå-Gul -TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manuell\nVerkar på hela bilden.\nDu kontrollerar brusreduceringen manuellt.\n\nAutomatisk global\nVerkar på hela bilden.\n9 zoner används för att beräkna en global kroma-brusreducering.\n\nFörhandsgranskning\nVerkar på hela bilden.\nDen synliga delen av förhandsgranskningen används för att beräkna en global kroma-brusreducering. -TP_DIRPYRDENOISE_CCCURVE;Krominans-kurva -TP_DIRPYRDENOISE_CHROMA;Kroma -TP_DIRPYRDENOISE_CHROMAFR;Krominans -TP_DIRPYRDENOISE_CTYPE;Metod -TP_DIRPYRDENOISE_CUR;Kurva -TP_DIRPYRDENOISE_CURVEEDITOR_CC;Kroma -TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Öka (multiplicera) värdet av alla krominansreglage.\nDen här kurvan låter dig justera styrkan för den kromatiska brusreduceringen som en funktion av kromaticit, till exempel för att öka mängden i området med låg mättnad och för att minska det i de områden med hög mättnad. -TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Modulerar verkan av brusreduceringen för 'Luminans' +TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatisk global +TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Försök att utvärdera chroma-bruset\nVar försiktig, den här beräkningen görs på genomsnittet och är tämligen subjektiv! +TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Krominans - Blå-Gul +TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Krominans-kurva +TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Krominans +TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manuell +TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Kroma +TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Metod +TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manuell\nVerkar på hela bilden.\nDu kontrollerar brusreduceringen manuellt.\n\nAutomatisk global\nVerkar på hela bilden.\n9 zoner används för att beräkna en global kroma-brusreducering.\n\nFörhandsgranskning\nVerkar på hela bilden.\nDen synliga delen av förhandsgranskningen används för att beräkna en global kroma-brusreducering. +TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Förhandsgranska multi-zon +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Förhandsgranska +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Förhandsgranska storlek=%1, Centrum: Px=%2 Py=%3 +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Förhandsgranska brus: Medel=%1 Hög=%2 +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Förhandsgranska brus: Medel= - Hög= - +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile-storlek=%1, Center: Tx=%2 Ty=%3 +TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Krominans - Röd-Grön TP_DIRPYRDENOISE_ENH;Förbättrat läge TP_DIRPYRDENOISE_ENH_TOOLTIP;Ökar kvaliteten på brusreduceringen till priset av 20 % längre beräkningstid -TP_DIRPYRDENOISE_GAMMA;Gamma -TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gamma varierar brusreduceringens styrka över hela skalan av toner. Mindre värden riktar sig mot de mörka partierna i bilden, medan större värden utökar effekten till högdagrarna. -TP_DIRPYRDENOISE_LAB;Lab -TP_DIRPYRDENOISE_LABEL;Brusreducering -TP_DIRPYRDENOISE_LABM;L*a*b* -TP_DIRPYRDENOISE_LCURVE;Luminans-kurva -TP_DIRPYRDENOISE_LDETAIL;Luminansdetalj -TP_DIRPYRDENOISE_LM;Endast luminans -TP_DIRPYRDENOISE_LPLABM;Viktad L* (litet) + a*b* (normal) -TP_DIRPYRDENOISE_LTYPE;Luminanskontroll -TP_DIRPYRDENOISE_LUMA;Luminans -TP_DIRPYRDENOISE_LUMAFR;Luminans -TP_DIRPYRDENOISE_MAN;Manuell -TP_DIRPYRDENOISE_MANU;Manuell -TP_DIRPYRDENOISE_METHOD;Metod -TP_DIRPYRDENOISE_METHOD11;Kvalitet -TP_DIRPYRDENOISE_METHOD_TOOLTIP;För råfiler kan antingen RGB- eller Labmetoder användas.\n\nFör icke-råfiler kommer Labmetoden att användas, oavsett vad som är valt. -TP_DIRPYRDENOISE_NOISELABEL;Förhandsgranska brus: Medel=%1 Hög=%2 -TP_DIRPYRDENOISE_NOISELABELEMPTY;Förhandsgranska brus: Medel= - Hög= - -TP_DIRPYRDENOISE_PRE;Förhandsgranska multi-zon -TP_DIRPYRDENOISE_PREV;Förhandsgranska -TP_DIRPYRDENOISE_PREVLABEL;Förhandsgranska storlek=%1, Centrum: Px=%2 Py=%3 -TP_DIRPYRDENOISE_RED;Krominans - Röd-Grön -TP_DIRPYRDENOISE_RGB;RGB -TP_DIRPYRDENOISE_RGBM;RGB -TP_DIRPYRDENOISE_SHAL;Standard -TP_DIRPYRDENOISE_SHALBI;Hög +TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminanskontroll +TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminans-kurva +TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Luminansdetalj +TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminans +TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminans +TP_DIRPYRDENOISE_MAIN_COLORSPACE;Metod +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;Lab +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LABEL;Brusreducering +TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;För råfiler kan antingen RGB- eller Labmetoder användas.\n\nFör icke-råfiler kommer Labmetoden att användas, oavsett vad som är valt. +TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma +TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma varierar brusreduceringens styrka över hela skalan av toner. Mindre värden riktar sig mot de mörka partierna i bilden, medan större värden utökar effekten till högdagrarna. +TP_DIRPYRDENOISE_MAIN_MODE;Kvalitet +TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Hög +TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Standard +TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Endast chroma +TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Endast luminans +TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Viktad L* (litet) + a*b* (normal) TP_DIRPYRDENOISE_SLI;Reglage -TP_DIRPYRDENOISE_TILELABEL;Tile-storlek=%1, Center: Tx=%2 Ty=%3 +TP_DIRPYRDENOISE_TYPE_3X3;3×3 +TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 mjuk +TP_DIRPYRDENOISE_TYPE_5X5;5×5 +TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 mjuk +TP_DIRPYRDENOISE_TYPE_7X7;7×7 +TP_DIRPYRDENOISE_TYPE_9X9;9×9 TP_DIRPYREQUALIZER_ALGO;Algoritm för hudtoner TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fin: närmre hudens färger, minimerar inverkan på andra färger\nStor: undvik än mer artefakter TP_DIRPYREQUALIZER_ARTIF;Reducera artefakter @@ -1880,6 +1865,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: !CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. @@ -1900,10 +1886,15 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !EXPORT_USE_FAST_PIPELINE_TIP;Use a dedicated processing pipeline for images in Fast Export mode, that trades speed for quality. Resizing of the image is done as early as possible, instead of doing it at the end like in the normal pipeline. The speedup can be significant, but be prepared to see artifacts and a general degradation of output quality. !EXPORT_USE_NORMAL_PIPELINE;Standard (bypass some steps, resize at the end) !FILEBROWSER_RESETDEFAULTPROFILE;Reset to default +!GENERAL_SLIDER;Slider !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. +!HISTORY_MSG_173;NR - Detail recovery +!HISTORY_MSG_203;NR - Color space +!HISTORY_MSG_256;NR - Median - Type !HISTORY_MSG_257;Color Toning !HISTORY_MSG_288;Flat Field - Clip control !HISTORY_MSG_289;Flat Field - Clip control - Auto +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_310;W - Residual - Sky tar/prot !HISTORY_MSG_313;W - Chroma - Sat/past !HISTORY_MSG_316;W - Gamut - Skin tar/prot @@ -1955,6 +1946,15 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1988,14 +1988,22 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 !PARTIALPASTE_COLORTONING;Color toning !PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAW_IMAGENUM;Sub-image !PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift !PARTIALPASTE_TM_FATTAL;HDR Tone mapping !PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_CMMBPC;Black point compensation +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_D50_OLD;5000K !PREFERENCES_DIRECTORIES;Directories +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_GREY18_OLD;Yb=18 CIE L#50 !PREFERENCES_INSPECT_MAXBUFFERS_TOOLTIP;Set the maximum number of images stored in cache when hovering over them in the File Browser; systems with little RAM (2GB) should keep this value set to 1 or 2. !PREFERENCES_LANG;Language @@ -2027,25 +2035,27 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_CURVEEDITOR_CL_TOOLTIP;Chroma opacity as a function of luminance oC=f(L) !TP_COLORTONING_LABEL;Color Toning !TP_COLORTONING_METHOD_TOOLTIP;"L*a*b* blending", "RGB sliders" and "RGB curves" use interpolated color blending.\n"Color balance (Shadows/Midtones/Highlights)" and "Saturation 2 colors" use direct colors.\n\nThe Black-and-White tool can be enabled when using any color toning method, which allows for color toning. !TP_COLORTONING_TWOCOLOR_TOOLTIP;Standard chroma:\nLinear response, a* = b*.\n\nSpecial chroma:\nLinear response, a* = b*, but unbound - try under the diagonal.\n\nSpecial a* and b*:\nLinear response unbound with separate curves for a* and b*. Intended for special effects.\n\nSpecial chroma 2 colors:\nMore predictable. -!TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_MED;Median Filter -!TP_DIRPYRDENOISE_MEDMETHOD;Median method -!TP_DIRPYRDENOISE_MEDTYPE;Median type -!TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Quality can be adapted to the noise pattern. A setting of "high" increases the noise reduction effect at a cost of extended processing time. -!TP_DIRPYRDENOISE_METM_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. -!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_NRESID_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -!TP_DIRPYRDENOISE_PASSES;Median iterations -!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -!TP_DIRPYRDENOISE_PON;Auto multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. +!TP_DIRPYRDENOISE_LABEL;Noise Reduction +!TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Conservative" preserves low frequency chroma patterns, while "aggressive" obliterates them. +!TP_DIRPYRDENOISE_MEDIAN_METHOD;Median method +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median Filter +!TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. +!TP_DIRPYRDENOISE_MEDIAN_PASSES;Median iterations +!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_DIRPYRDENOISE_MEDIAN_TYPE;Median type +!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. !TP_DIRPYREQUALIZER_HUESKIN_TOOLTIP;This pyramid is for the upper part, so far as the algorithm at its maximum efficiency.\nTo the lower part, the transition zones.\nIf you need to move the area significantly to the left or right - or if there are artifacts: the white balance is incorrect\nYou can slightly reduce the zone to prevent the rest of the image is affected. !TP_DISTORTION_AUTO_TIP;Automatically corrects lens distortion in raw files by matching it against the embedded JPEG image if one exists and has had its lens disortion auto-corrected by the camera. !TP_FLATFIELD_CLIPCONTROL;Clip control @@ -2055,6 +2065,15 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_ICM_APPLYLOOKTABLE;Look table !TP_ICM_PROFILEINTENT;Rendering Intent !TP_ICM_SAVEREFERENCE;Save Reference Image +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged !TP_RAW_1PASSMEDIUM;1-Pass (Medium) !TP_RAW_3PASSBEST;3-Pass (Best) !TP_RAW_AHD;AHD @@ -2065,7 +2084,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_RAW_HPHD;HPHD !TP_RAW_IGV;IGV !TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_LMMSE;LMMSE !TP_RAW_MONO;Mono !TP_RAW_NONE;None (Shows sensor pattern) @@ -2102,6 +2121,8 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal !TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical !TP_RAW_PIXELSHIFTNREADISO;nRead +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. !TP_RAW_PIXELSHIFTPRNU;PRNU (%) !TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight !TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -2115,6 +2136,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue !TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green !TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +!TP_RAW_RCD;RCD !TP_RAW_VNG4;VNG4 !TP_RETINEX_CONTEDIT_MAP;Mask equalizer !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index 937e0dabb..a0909bcab 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -58,10 +58,6 @@ FILEBROWSER_SHOWRANK4HINT;Show images ranked as 4 star FILEBROWSER_SHOWRANK5HINT;Show images ranked as 5 star FILEBROWSER_SHOWTRASHHINT;Show content of the trash FILEBROWSER_SHOWUNRANKHINT;Show unranked images -FILEBROWSER_STARTPROCESSING;Start Processing -FILEBROWSER_STARTPROCESSINGHINT;Start processing/saving of images in the queue -FILEBROWSER_STOPPROCESSING;Stop processing -FILEBROWSER_STOPPROCESSINGHINT;Stop processing of images FILEBROWSER_THUMBSIZE;Thumb. size FILEBROWSER_ZOOMINHINT;Increase thumbnail size FILEBROWSER_ZOOMOUTHINT;Decrease thumbnail size @@ -249,7 +245,6 @@ PREFERENCES_DIRLAST;Son gidilen dizin PREFERENCES_DIROTHER;Diğer PREFERENCES_DIRSELECTDLG;Başlangıç görüntü dizinini seç... PREFERENCES_DIRSOFTWARE;Kurulum dizini -PREFERENCES_EDITORCMDLINE;Other command line PREFERENCES_EXTERNALEDITOR;External editor PREFERENCES_FBROWSEROPTS;Dosya gezgini seçenekleri PREFERENCES_FILEFORMAT;Dosya biçimi @@ -427,7 +422,9 @@ TP_WBALANCE_TEMPERATURE;Isı !ABOUT_TAB_RELEASENOTES;Release Notes !ABOUT_TAB_SPLASH;Splash !BATCHQUEUE_AUTOSTART;Auto-start +!BATCHQUEUE_AUTOSTARTHINT;Start processing automatically when a new job arrives. !BATCHQUEUE_DESTFILENAME;Path and file name +!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !BATCH_PROCESSING;Batch Processing !CURVEEDITOR_AXIS_IN;I: !CURVEEDITOR_AXIS_LEFT_TAN;LT: @@ -558,7 +555,6 @@ TP_WBALANCE_TEMPERATURE;Isı !FILEBROWSER_SHOWRECENTLYSAVEDHINT;Show saved images.\nShortcut: Alt-7 !FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Show unsaved images.\nShortcut: Alt-6 !FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0 -!FILEBROWSER_TOOLTIP_STOPPROCESSING;Start processing automatically when a new job arrives. !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 !FILECHOOSER_FILTER_ANY;All files !FILECHOOSER_FILTER_COLPROF;Color profiles @@ -576,6 +572,7 @@ TP_WBALANCE_TEMPERATURE;Isı !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open +!GENERAL_SLIDER;Slider !GENERAL_UNCHANGED;(Unchanged) !GENERAL_WARNING;Warning !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. @@ -674,7 +671,7 @@ TP_WBALANCE_TEMPERATURE;Isı !HISTORY_MSG_170;Vibrance - HH curve !HISTORY_MSG_171;L*a*b* - LC curve !HISTORY_MSG_172;L*a*b* - Restrict LC -!HISTORY_MSG_173;NR - Luminance detail +!HISTORY_MSG_173;NR - Detail recovery !HISTORY_MSG_174;CIECAM02 !HISTORY_MSG_175;CAM02 - CAT02 adaptation !HISTORY_MSG_176;CAM02 - Viewing surround @@ -704,7 +701,7 @@ TP_WBALANCE_TEMPERATURE;Isı !HISTORY_MSG_200;CAM02 - Tone mapping !HISTORY_MSG_201;NR - Chrominance - R&G !HISTORY_MSG_202;NR - Chrominance - B&Y -!HISTORY_MSG_203;NR - Method +!HISTORY_MSG_203;NR - Color space !HISTORY_MSG_204;LMMSE enhancement steps !HISTORY_MSG_205;CAM02 - Hot/bad pixel filter !HISTORY_MSG_206;CAT02 - Auto scene luminosity @@ -756,7 +753,7 @@ TP_WBALANCE_TEMPERATURE;Isı !HISTORY_MSG_253;CbDL - Reduce artifacts !HISTORY_MSG_254;CbDL - Skin hue !HISTORY_MSG_255;NR - Median filter -!HISTORY_MSG_256;NR - Median type +!HISTORY_MSG_256;NR - Median - Type !HISTORY_MSG_257;Color Toning !HISTORY_MSG_258;CT - Color curve !HISTORY_MSG_259;CT - Opacity curve @@ -797,7 +794,7 @@ TP_WBALANCE_TEMPERATURE;Isı !HISTORY_MSG_294;Film Simulation - Strength !HISTORY_MSG_295;Film Simulation - Film !HISTORY_MSG_296;NR - Luminance curve -!HISTORY_MSG_297;NR - Quality +!HISTORY_MSG_297;NR - Mode !HISTORY_MSG_298;Dead pixel filter !HISTORY_MSG_299;NR - Chrominance curve !HISTORY_MSG_300;- @@ -975,6 +972,15 @@ TP_WBALANCE_TEMPERATURE;Isı !HISTORY_MSG_488;HDR Tone Mapping !HISTORY_MSG_489;HDR TM - Threshold !HISTORY_MSG_490;HDR TM - Amount +!HISTORY_MSG_491;White Balance +!HISTORY_MSG_492;RGB Curves +!HISTORY_MSG_493;L*a*b* Adjustments +!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +!HISTORY_MSG_METADATA_MODE;Metadata copy mode !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -1092,6 +1098,7 @@ TP_WBALANCE_TEMPERATURE;Isı !PARTIALPASTE_IMPULSEDENOISE;Impulse noise reduction !PARTIALPASTE_LABCURVE;L*a*b* adjustments !PARTIALPASTE_LENSPROFILE;Profiled lens correction +!PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_PCVIGNETTE;Vignette filter !PARTIALPASTE_PERSPECTIVE;Perspective !PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter @@ -1143,6 +1150,12 @@ TP_WBALANCE_TEMPERATURE;Isı !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation +!PREFERENCES_CROP;Crop editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +!PREFERENCES_CROP_GUIDES_FRAME;Frame +!PREFERENCES_CROP_GUIDES_FULL;Original +!PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_CURVEBBOXPOS;Position of curve copy & paste buttons !PREFERENCES_CURVEBBOXPOS_ABOVE;Above !PREFERENCES_CURVEBBOXPOS_BELOW;Below @@ -1167,6 +1180,7 @@ TP_WBALANCE_TEMPERATURE;Isı !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories +!PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EDITORLAYOUT;Editor Layout !PREFERENCES_EXPAUT;Expert !PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) @@ -1459,14 +1473,14 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_COLORAPP_TCMODE_LABEL3;Curve chroma mode !TP_COLORAPP_TCMODE_LIGHTNESS;Lightness !TP_COLORAPP_TCMODE_SATUR;Saturation -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 +!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORAPP_YB;Yb% (mean luminance) !TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;if auto enable, Yb is calculated from the mean value of actual image luminance +!TP_COLORAPP_YBSCENE_TOOLTIP;if auto is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1515,68 +1529,63 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold -!TP_DIRPYRDENOISE_3X3;3×3 -!TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft -!TP_DIRPYRDENOISE_5X5;5×5 -!TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft -!TP_DIRPYRDENOISE_7X7;7×7 -!TP_DIRPYRDENOISE_9X9;9×9 -!TP_DIRPYRDENOISE_ABM;Chroma only -!TP_DIRPYRDENOISE_AUT;Automatic global -!TP_DIRPYRDENOISE_AUTO;Automatic global -!TP_DIRPYRDENOISE_AUTO_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! -!TP_DIRPYRDENOISE_BLUE;Chrominance - Blue-Yellow -!TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CCCURVE;Chrominance curve -!TP_DIRPYRDENOISE_CHROMA;Chrominance - Master -!TP_DIRPYRDENOISE_CHROMAFR;Chrominance -!TP_DIRPYRDENOISE_CTYPE;Method -!TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CUR;Curve -!TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -!TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. -!TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Modulates action of 'Luminance' denoise +!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global +!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! +!TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Chrominance - Blue-Yellow +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve +!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +!TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance +!TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual +!TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Chrominance - Master +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method +!TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Center: Px=%2 Py=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2 +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= - +!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Chrominance - Red-Green !TP_DIRPYRDENOISE_ENH;Enhanced mode !TP_DIRPYRDENOISE_ENH_TOOLTIP;Increases noise reduction quality at the expense of a 20% processing time increase. -!TP_DIRPYRDENOISE_GAMMA;Gamma -!TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. -!TP_DIRPYRDENOISE_LAB;L*a*b* !TP_DIRPYRDENOISE_LABEL;Noise Reduction -!TP_DIRPYRDENOISE_LABM;L*a*b* -!TP_DIRPYRDENOISE_LCURVE;Luminance curve -!TP_DIRPYRDENOISE_LDETAIL;Luminance - Detail -!TP_DIRPYRDENOISE_LM;Luminance only -!TP_DIRPYRDENOISE_LPLABM;Weighted L* (little) + a*b* (normal) -!TP_DIRPYRDENOISE_LTYPE;Luminance control -!TP_DIRPYRDENOISE_LUMA;Luminance -!TP_DIRPYRDENOISE_LUMAFR;Luminance -!TP_DIRPYRDENOISE_MAN;Manual -!TP_DIRPYRDENOISE_MANU;Manual -!TP_DIRPYRDENOISE_MED;Median Filter -!TP_DIRPYRDENOISE_MEDMETHOD;Median method -!TP_DIRPYRDENOISE_MEDTYPE;Median type -!TP_DIRPYRDENOISE_METHOD;Method -!TP_DIRPYRDENOISE_METHOD11;Quality -!TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Quality can be adapted to the noise pattern. A setting of "high" increases the noise reduction effect at a cost of extended processing time. -!TP_DIRPYRDENOISE_METHOD_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. -!TP_DIRPYRDENOISE_METM_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. -!TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_NOISELABEL;Preview noise: Mean=%1 High=%2 -!TP_DIRPYRDENOISE_NOISELABELEMPTY;Preview noise: Mean= - High= - -!TP_DIRPYRDENOISE_NRESID_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -!TP_DIRPYRDENOISE_PASSES;Median iterations -!TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -!TP_DIRPYRDENOISE_PON;Auto multi-zones -!TP_DIRPYRDENOISE_PRE;Preview multi-zones -!TP_DIRPYRDENOISE_PREV;Preview -!TP_DIRPYRDENOISE_PREVLABEL;Preview size=%1, Center: Px=%2 Py=%3 -!TP_DIRPYRDENOISE_RED;Chrominance - Red-Green -!TP_DIRPYRDENOISE_RGB;RGB -!TP_DIRPYRDENOISE_RGBM;RGB -!TP_DIRPYRDENOISE_SHAL;Standard -!TP_DIRPYRDENOISE_SHALBI;High +!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control +!TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve +!TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Detail recovery +!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance +!TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminance +!TP_DIRPYRDENOISE_MAIN_COLORSPACE;Color space +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +!TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. +!TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma +!TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. +!TP_DIRPYRDENOISE_MAIN_MODE;Mode +!TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressive +!TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Conservative +!TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Conservative" preserves low frequency chroma patterns, while "aggressive" obliterates them. +!TP_DIRPYRDENOISE_MEDIAN_METHOD;Median method +!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median Filter +!TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Luminance only +!TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +!TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. +!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) +!TP_DIRPYRDENOISE_MEDIAN_PASSES;Median iterations +!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +!TP_DIRPYRDENOISE_MEDIAN_TYPE;Median type +!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. !TP_DIRPYRDENOISE_SLI;Slider -!TP_DIRPYRDENOISE_TILELABEL;Tile size=%1, Center: Tx=%2 Ty=%3 +!TP_DIRPYRDENOISE_TYPE_3X3;3×3 +!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft +!TP_DIRPYRDENOISE_TYPE_5X5;5×5 +!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft +!TP_DIRPYRDENOISE_TYPE_7X7;7×7 +!TP_DIRPYRDENOISE_TYPE_9X9;9×9 !TP_DIRPYREQUALIZER_ALGO;Skin Color Range !TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: closer to the colors of the skin, minimizing the action on other colors\nLarge: avoid more artifacts. !TP_DIRPYREQUALIZER_ARTIF;Reduce artifacts @@ -1727,6 +1736,15 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_LENSPROFILE_USECA;Chromatic aberration correction !TP_LENSPROFILE_USEDIST;Distortion correction !TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_LOCALCONTRAST_AMOUNT;Amount +!TP_LOCALCONTRAST_DARKNESS;Darkness level +!TP_LOCALCONTRAST_LABEL;Local Contrast +!TP_LOCALCONTRAST_LIGHTNESS;Lightness level +!TP_LOCALCONTRAST_RADIUS;Radius +!TP_METADATA_EDIT;Apply modifications +!TP_METADATA_MODE;Metadata copy mode +!TP_METADATA_STRIP;Strip all metadata +!TP_METADATA_TUNNEL;Copy unchanged !TP_NEUTRAL;Reset !TP_NEUTRAL_TIP;Resets exposure sliders to neutral values.\nApplies to the same controls that Auto Levels applies to, regardless of whether you used Auto Levels or not. !TP_PCVIGNETTE_FEATHER;Feather @@ -1776,7 +1794,7 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_RAW_DCBITERATIONS;Number of DCB iterations !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... -!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast !TP_RAW_HD;Threshold @@ -1784,7 +1802,7 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_RAW_HPHD;HPHD !TP_RAW_IGV;IGV !TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_LABEL;Demosaicing !TP_RAW_LMMSE;LMMSE !TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps @@ -1824,6 +1842,8 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal !TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical !TP_RAW_PIXELSHIFTNREADISO;nRead +!TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +!TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. !TP_RAW_PIXELSHIFTPRNU;PRNU (%) !TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight !TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -1837,6 +1857,7 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue !TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green !TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red +!TP_RAW_RCD;RCD !TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix !TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster. !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix diff --git a/rtdata/languages/default b/rtdata/languages/default index 2d249d5b3..4f89e34ce 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -9,7 +9,9 @@ ABOUT_TAB_RELEASENOTES;Release Notes ABOUT_TAB_SPLASH;Splash ADJUSTER_RESET_TO_DEFAULT;Reset to default BATCHQUEUE_AUTOSTART;Auto-start +BATCHQUEUE_AUTOSTARTHINT;Start processing automatically when a new job arrives. BATCHQUEUE_DESTFILENAME;Path and file name +BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s BATCH_PROCESSING;Batch Processing CURVEEDITOR_AXIS_IN;I: CURVEEDITOR_AXIS_LEFT_TAN;LT: @@ -196,12 +198,7 @@ FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Show unsaved images.\nShortcut: Alt-6Ctrl-t FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0 FILEBROWSER_SHOWUNRANKHINT;Show unranked images.\nShortcut: 0 -FILEBROWSER_STARTPROCESSING;Start processing -FILEBROWSER_STARTPROCESSINGHINT;Start processing the images in the queue.\n\nShortcut: Ctrl+s -FILEBROWSER_STOPPROCESSING;Stop processing -FILEBROWSER_STOPPROCESSINGHINT;Stop processing the images in the queue.\n\nShortcut: Ctrl+s FILEBROWSER_THUMBSIZE;Thumbnail size -FILEBROWSER_TOOLTIP_STOPPROCESSING;Start processing automatically when a new job arrives. FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 FILEBROWSER_ZOOMINHINT;Increase thumbnail size.\n\nShortcuts:\n+ - Multiple Editor Tabs Mode,\nAlt-+ - Single Editor Tab Mode. FILEBROWSER_ZOOMOUTHINT;Decrease thumbnail size.\n\nShortcuts:\n- - Multiple Editor Tabs Mode,\nAlt-- - Single Editor Tab Mode. @@ -233,6 +230,7 @@ GENERAL_OK;OK GENERAL_OPEN;Open GENERAL_PORTRAIT;Portrait GENERAL_SAVE;Save +GENERAL_SLIDER;Slider GENERAL_UNCHANGED;(Unchanged) GENERAL_WARNING;Warning GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. @@ -420,7 +418,7 @@ HISTORY_MSG_169;L*a*b* - CH curve HISTORY_MSG_170;Vibrance - HH curve HISTORY_MSG_171;L*a*b* - LC curve HISTORY_MSG_172;L*a*b* - Restrict LC -HISTORY_MSG_173;NR - Luminance detail +HISTORY_MSG_173;NR - Detail recovery HISTORY_MSG_174;CIECAM02 HISTORY_MSG_175;CAM02 - CAT02 adaptation HISTORY_MSG_176;CAM02 - Viewing surround @@ -450,7 +448,7 @@ HISTORY_MSG_199;CAM02 - Output histograms HISTORY_MSG_200;CAM02 - Tone mapping HISTORY_MSG_201;NR - Chrominance - R&G HISTORY_MSG_202;NR - Chrominance - B&Y -HISTORY_MSG_203;NR - Method +HISTORY_MSG_203;NR - Color space HISTORY_MSG_204;LMMSE enhancement steps HISTORY_MSG_205;CAM02 - Hot/bad pixel filter HISTORY_MSG_206;CAT02 - Auto scene luminosity @@ -502,7 +500,7 @@ HISTORY_MSG_252;CbDL - Skin tar/prot HISTORY_MSG_253;CbDL - Reduce artifacts HISTORY_MSG_254;CbDL - Skin hue HISTORY_MSG_255;NR - Median filter -HISTORY_MSG_256;NR - Median type +HISTORY_MSG_256;NR - Median - Type HISTORY_MSG_257;Color Toning HISTORY_MSG_258;CT - Color curve HISTORY_MSG_259;CT - Opacity curve @@ -543,7 +541,7 @@ HISTORY_MSG_293;Film Simulation HISTORY_MSG_294;Film Simulation - Strength HISTORY_MSG_295;Film Simulation - Film HISTORY_MSG_296;NR - Luminance curve -HISTORY_MSG_297;NR - Quality +HISTORY_MSG_297;NR - Mode HISTORY_MSG_298;Dead pixel filter HISTORY_MSG_299;NR - Chrominance curve HISTORY_MSG_300;- @@ -721,6 +719,17 @@ HISTORY_MSG_487;Lens Correction - Lens HISTORY_MSG_488;HDR Tone Mapping HISTORY_MSG_489;HDR TM - Threshold HISTORY_MSG_490;HDR TM - Amount +HISTORY_MSG_491;White Balance +HISTORY_MSG_492;RGB Curves +HISTORY_MSG_493;L*a*b* Adjustments +HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction +HISTORY_MSG_HISTMATCHING;Auto-matched Tone Curve +HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount +HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness +HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast +HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness +HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius +HISTORY_MSG_METADATA_MODE;Metadata copy mode HISTORY_NEWSNAPSHOT;Add HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s HISTORY_SNAPSHOT;Snapshot @@ -806,6 +815,8 @@ MAIN_MSG_QOVERWRITE;Do you want to overwrite it? MAIN_MSG_SETPATHFIRST;You first have to set a target path in Preferences in order to use this function! MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. MAIN_MSG_WRITEFAILED;Failed to write\n"%1"\n\nMake sure that the folder exists and that you have write permission to it. +MAIN_TAB_ADVANCED;Advanced +MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w MAIN_TAB_COLOR;Color MAIN_TAB_COLOR_TOOLTIP;Shortcut: Alt-c MAIN_TAB_DETAIL;Detail @@ -824,8 +835,6 @@ MAIN_TAB_RAW;Raw MAIN_TAB_RAW_TOOLTIP;Shortcut: Alt-r MAIN_TAB_TRANSFORM;Transform MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t -MAIN_TAB_WAVELET;Wavelet -MAIN_TAB_WAVELET_TOOLTIP;Shortcut: Alt-w MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: Theme-based\nShortcut: 9 MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: Black\nShortcut: 9 MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: White\nShortcut: 9 @@ -860,6 +869,7 @@ NAVIGATOR_XY_FULL;Width: %1, Height: %2 NAVIGATOR_XY_NA;x: --, y: -- OPTIONS_DEFIMG_MISSING;The default profile for non-raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\nDefault internal values will be used. OPTIONS_DEFRAW_MISSING;The default profile for raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\nDefault internal values will be used. +PARTIALPASTE_ADVANCEDGROUP;Advanced Settings PARTIALPASTE_BASICGROUP;Basic Settings PARTIALPASTE_CACORRECTION;Chromatic aberration correction PARTIALPASTE_CHANNELMIXER;Channel mixer @@ -898,7 +908,9 @@ PARTIALPASTE_IPTCINFO;IPTC PARTIALPASTE_LABCURVE;L*a*b* adjustments PARTIALPASTE_LENSGROUP;Lens Related Settings PARTIALPASTE_LENSPROFILE;Profiled lens correction -PARTIALPASTE_METAGROUP;Metadata +PARTIALPASTE_LOCALCONTRAST;Local contrast +PARTIALPASTE_METADATA;Metadata mode +PARTIALPASTE_METAGROUP;Metadata settings PARTIALPASTE_PCVIGNETTE;Vignette filter PARTIALPASTE_PERSPECTIVE;Perspective PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter @@ -930,7 +942,6 @@ PARTIALPASTE_SHARPENMICRO;Microcontrast PARTIALPASTE_TM_FATTAL;HDR Tone mapping PARTIALPASTE_VIBRANCE;Vibrance PARTIALPASTE_VIGNETTING;Vignetting correction -PARTIALPASTE_WAVELETGROUP;Wavelet Levels PARTIALPASTE_WHITEBALANCE;White balance PREFERENCES_ADD;Add PREFERENCES_APPLNEXTSTARTUP;restart required @@ -964,6 +975,12 @@ PREFERENCES_CLUTSCACHE;HaldCLUT Cache PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs PREFERENCES_CLUTSDIR;HaldCLUT directory PREFERENCES_CMMBPC;Black point compensation +PREFERENCES_CROP;Crop editing +PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop +PREFERENCES_CROP_GUIDES_FRAME;Frame +PREFERENCES_CROP_GUIDES_FULL;Original +PREFERENCES_CROP_GUIDES_NONE;None PREFERENCES_CURVEBBOXPOS;Position of curve copy & paste buttons PREFERENCES_CURVEBBOXPOS_ABOVE;Above PREFERENCES_CURVEBBOXPOS_BELOW;Below @@ -995,7 +1012,7 @@ PREFERENCES_DIRLAST;Last visited directory PREFERENCES_DIROTHER;Other PREFERENCES_DIRSELECTDLG;Select Image Directory at Startup... PREFERENCES_DIRSOFTWARE;Installation directory -PREFERENCES_EDITORCMDLINE;Other command line +PREFERENCES_EDITORCMDLINE;Custom command line PREFERENCES_EDITORLAYOUT;Editor Layout PREFERENCES_EXPAUT;Expert PREFERENCES_EXTERNALEDITOR;External Editor @@ -1390,6 +1407,8 @@ TP_COLORTONING_HIGHLIGHT;Highlights TP_COLORTONING_HUE;Hue TP_COLORTONING_LAB;L*a*b* blending TP_COLORTONING_LABEL;Color Toning +TP_COLORTONING_LABGRID;L*a*b* color correction grid +TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 TP_COLORTONING_LUMA;Luminance TP_COLORTONING_LUMAMODE;Preserve luminance TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved. @@ -1438,68 +1457,63 @@ TP_DARKFRAME_LABEL;Dark-Frame TP_DEFRINGE_LABEL;Defringe TP_DEFRINGE_RADIUS;Radius TP_DEFRINGE_THRESHOLD;Threshold -TP_DIRPYRDENOISE_3X3;3×3 -TP_DIRPYRDENOISE_3X3_SOFT;3×3 soft -TP_DIRPYRDENOISE_5X5;5×5 -TP_DIRPYRDENOISE_5X5_SOFT;5×5 soft -TP_DIRPYRDENOISE_7X7;7×7 -TP_DIRPYRDENOISE_9X9;9×9 -TP_DIRPYRDENOISE_ABM;Chroma only -TP_DIRPYRDENOISE_AUT;Automatic global -TP_DIRPYRDENOISE_AUTO;Automatic global -TP_DIRPYRDENOISE_AUTO_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! -TP_DIRPYRDENOISE_BLUE;Chrominance - Blue-Yellow -TP_DIRPYRDENOISE_C2TYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -TP_DIRPYRDENOISE_CCCURVE;Chrominance curve -TP_DIRPYRDENOISE_CHROMA;Chrominance - Master -TP_DIRPYRDENOISE_CHROMAFR;Chrominance -TP_DIRPYRDENOISE_CTYPE;Method -TP_DIRPYRDENOISE_CTYPE_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -TP_DIRPYRDENOISE_CUR;Curve -TP_DIRPYRDENOISE_CURVEEDITOR_CC;Chroma -TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. -TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP;Modulates action of 'Luminance' denoise +TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones +TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global +TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! +TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Chrominance - Blue-Yellow +TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve +TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. +TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance +TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual +TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Chrominance - Master +TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method +TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. +TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Center: Px=%2 Py=%3 +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2 +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= - +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3 +TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Chrominance - Red-Green TP_DIRPYRDENOISE_ENH;Enhanced mode TP_DIRPYRDENOISE_ENH_TOOLTIP;Increases noise reduction quality at the expense of a 20% processing time increase. -TP_DIRPYRDENOISE_GAMMA;Gamma -TP_DIRPYRDENOISE_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. -TP_DIRPYRDENOISE_LAB;L*a*b* TP_DIRPYRDENOISE_LABEL;Noise Reduction -TP_DIRPYRDENOISE_LABM;L*a*b* -TP_DIRPYRDENOISE_LCURVE;Luminance curve -TP_DIRPYRDENOISE_LDETAIL;Luminance - Detail -TP_DIRPYRDENOISE_LM;Luminance only -TP_DIRPYRDENOISE_LPLABM;Weighted L* (little) + a*b* (normal) -TP_DIRPYRDENOISE_LTYPE;Luminance control -TP_DIRPYRDENOISE_LUMA;Luminance -TP_DIRPYRDENOISE_LUMAFR;Luminance -TP_DIRPYRDENOISE_MAN;Manual -TP_DIRPYRDENOISE_MANU;Manual -TP_DIRPYRDENOISE_MED;Median Filter -TP_DIRPYRDENOISE_MEDMETHOD;Median method -TP_DIRPYRDENOISE_MEDTYPE;Median type -TP_DIRPYRDENOISE_METHOD;Method -TP_DIRPYRDENOISE_METHOD11;Quality -TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Quality can be adapted to the noise pattern. A setting of "high" increases the noise reduction effect at a cost of extended processing time. -TP_DIRPYRDENOISE_METHOD_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. -TP_DIRPYRDENOISE_METM_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. -TP_DIRPYRDENOISE_MET_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -TP_DIRPYRDENOISE_NOISELABEL;Preview noise: Mean=%1 High=%2 -TP_DIRPYRDENOISE_NOISELABELEMPTY;Preview noise: Mean= - High= - -TP_DIRPYRDENOISE_NRESID_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -TP_DIRPYRDENOISE_PASSES;Median iterations -TP_DIRPYRDENOISE_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -TP_DIRPYRDENOISE_PON;Auto multi-zones -TP_DIRPYRDENOISE_PRE;Preview multi-zones -TP_DIRPYRDENOISE_PREV;Preview -TP_DIRPYRDENOISE_PREVLABEL;Preview size=%1, Center: Px=%2 Py=%3 -TP_DIRPYRDENOISE_RED;Chrominance - Red-Green -TP_DIRPYRDENOISE_RGB;RGB -TP_DIRPYRDENOISE_RGBM;RGB -TP_DIRPYRDENOISE_SHAL;Standard -TP_DIRPYRDENOISE_SHALBI;High +TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control +TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve +TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Detail recovery +TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance +TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminance +TP_DIRPYRDENOISE_MAIN_COLORSPACE;Color space +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* +TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB +TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection. +TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma +TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones. +TP_DIRPYRDENOISE_MAIN_MODE;Mode +TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressive +TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Conservative +TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Conservative" preserves low frequency chroma patterns, while "aggressive" obliterates them. +TP_DIRPYRDENOISE_MEDIAN_METHOD;Median method +TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only +TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* +TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median Filter +TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Luminance only +TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB +TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline. +TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) +TP_DIRPYRDENOISE_MEDIAN_PASSES;Median iterations +TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. +TP_DIRPYRDENOISE_MEDIAN_TYPE;Median type +TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. TP_DIRPYRDENOISE_SLI;Slider -TP_DIRPYRDENOISE_TILELABEL;Tile size=%1, Center: Tx=%2 Ty=%3 +TP_DIRPYRDENOISE_TYPE_3X3;3×3 +TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft +TP_DIRPYRDENOISE_TYPE_5X5;5×5 +TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft +TP_DIRPYRDENOISE_TYPE_7X7;7×7 +TP_DIRPYRDENOISE_TYPE_9X9;9×9 TP_DIRPYREQUALIZER_ALGO;Skin Color Range TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: closer to the colors of the skin, minimizing the action on other colors\nLarge: avoid more artifacts. TP_DIRPYREQUALIZER_ARTIF;Reduce artifacts @@ -1539,6 +1553,8 @@ TP_EXPOSURE_CURVEEDITOR1;Tone curve 1 TP_EXPOSURE_CURVEEDITOR2;Tone curve 2 TP_EXPOSURE_CURVEEDITOR2_TOOLTIP;Please refer to the "Exposure > Tone Curves" RawPedia article to learn how to achieve the best results by using two tone curves. TP_EXPOSURE_EXPCOMP;Exposure compensation +TP_EXPOSURE_HISTMATCHING;Auto-matched Tone Curve +TP_EXPOSURE_HISTMATCHING_TOOLTIP;Automatically adjust sliders and curves (except exposure compensation) to match the look of the embedded JPEG thumbnail. TP_EXPOSURE_LABEL;Exposure TP_EXPOSURE_SATURATION;Saturation TP_EXPOSURE_TCMODE_FILMLIKE;Film-like @@ -1675,6 +1691,15 @@ TP_LENSPROFILE_LABEL;Profiled Lens Correction TP_LENSPROFILE_USECA;Chromatic aberration correction TP_LENSPROFILE_USEDIST;Distortion correction TP_LENSPROFILE_USEVIGN;Vignetting correction +TP_LOCALCONTRAST_AMOUNT;Amount +TP_LOCALCONTRAST_DARKNESS;Darkness level +TP_LOCALCONTRAST_LABEL;Local Contrast +TP_LOCALCONTRAST_LIGHTNESS;Lightness level +TP_LOCALCONTRAST_RADIUS;Radius +TP_METADATA_EDIT;Apply modifications +TP_METADATA_MODE;Metadata copy mode +TP_METADATA_STRIP;Strip all metadata +TP_METADATA_TUNNEL;Copy unchanged TP_NEUTRAL;Reset TP_NEUTRAL_TIP;Resets exposure sliders to neutral values.\nApplies to the same controls that Auto Levels applies to, regardless of whether you used Auto Levels or not. TP_PCVIGNETTE_FEATHER;Feather @@ -1725,7 +1750,7 @@ TP_RAW_DCBITERATIONS;Number of DCB iterations TP_RAW_DMETHOD;Method TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... -TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. TP_RAW_EAHD;EAHD TP_RAW_FALSECOLOR;False color suppression steps TP_RAW_FAST;Fast @@ -1734,7 +1759,7 @@ TP_RAW_HD_TOOLTIP;Lower values make hot/dead pixel detection more aggressive, bu TP_RAW_HPHD;HPHD TP_RAW_IGV;IGV TP_RAW_IMAGENUM;Sub-image -TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. +TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. TP_RAW_LABEL;Demosaicing TP_RAW_LMMSE;LMMSE TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps @@ -1774,6 +1799,8 @@ TP_RAW_PIXELSHIFTNONGREENCROSS2;Check green AMaZE TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Check red/blue horizontal TP_RAW_PIXELSHIFTNONGREENVERTICAL;Check red/blue vertical TP_RAW_PIXELSHIFTNREADISO;nRead +TP_RAW_PIXELSHIFTONEGREEN;Use one green instead of average +TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use one green instead of averaging two greens for regions without motion. TP_RAW_PIXELSHIFTPRNU;PRNU (%) TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Red&Blue weight TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask @@ -2172,7 +2199,7 @@ TP_WBALANCE_WATER_HEADER;UnderWater ZOOMPANEL_100;(100%) ZOOMPANEL_NEWCROPWINDOW;Open (new) detail window ZOOMPANEL_ZOOM100;Zoom to 100%\nShortcut: z -ZOOMPANEL_ZOOMFITCROPSCREEN;Fit crop to screen\nShortcut: Alt-f -ZOOMPANEL_ZOOMFITSCREEN;Fit whole image to screen\nShortcut: f +ZOOMPANEL_ZOOMFITCROPSCREEN;Fit crop to screen\nShortcut: f +ZOOMPANEL_ZOOMFITSCREEN;Fit whole image to screen\nShortcut: Alt-f ZOOMPANEL_ZOOMIN;Zoom In\nShortcut: + ZOOMPANEL_ZOOMOUT;Zoom Out\nShortcut: - diff --git a/rtdata/options/options.lin b/rtdata/options/options.lin index bbc1de057..4ff90246d 100644 --- a/rtdata/options/options.lin +++ b/rtdata/options/options.lin @@ -12,8 +12,8 @@ MultiUser=true [File Browser] # Image filename extensions to be looked for, and their corresponding search state (0/1 -> skip/include) -ParseExtensions=3fr;arw;cr2;crf;crw;dcr;dng;fff;iiq;jpg;jpeg;kdc;mef;mos;mrw;nef;nrw;orf;pef;png;raf;raw;rw2;rwl;rwz;sr2;srf;srw;tif;tiff;x3f; -ParseExtensionsEnabled=1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;1;1;1;1;1;1;1;1;1;1;1; +ParseExtensions=3fr;arw;arq;cr2;crf;crw;dcr;dng;fff;iiq;jpg;jpeg;kdc;mef;mos;mrw;nef;nrw;orf;pef;png;raf;raw;rw2;rwl;rwz;sr2;srf;srw;tif;tiff;x3f; +ParseExtensionsEnabled=1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;1;1;1;1;1;1;1;1;1;1;1; [Output] PathTemplate=%p1/converted/%f diff --git a/rtdata/options/options.osx b/rtdata/options/options.osx index 25696cb85..9130ef9ad 100644 --- a/rtdata/options/options.osx +++ b/rtdata/options/options.osx @@ -12,8 +12,8 @@ MultiUser=true [File Browser] # Image filename extensions to be looked for, and their corresponding search state (0/1 -> skip/include) -ParseExtensions=3fr;arw;cr2;crf;crw;dcr;dng;fff;iiq;jpg;jpeg;kdc;mef;mos;mrw;nef;nrw;orf;pef;png;raf;raw;rw2;rwl;rwz;sr2;srf;srw;tif;tiff;x3f; -ParseExtensionsEnabled=1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;1;1;1;1;1;1;1;1;1;1;1; +ParseExtensions=3fr;arw;arq;cr2;crf;crw;dcr;dng;fff;iiq;jpg;jpeg;kdc;mef;mos;mrw;nef;nrw;orf;pef;png;raf;raw;rw2;rwl;rwz;sr2;srf;srw;tif;tiff;x3f; +ParseExtensionsEnabled=1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;1;1;1;1;1;1;1;1;1;1;1; [Output] PathTemplate=%p1/converted/%f diff --git a/rtdata/options/options.win b/rtdata/options/options.win index 3f309fd16..33ab499be 100644 --- a/rtdata/options/options.win +++ b/rtdata/options/options.win @@ -14,8 +14,8 @@ UseSystemTheme=false [File Browser] # Image filename extensions to be looked for, and their corresponding search state (0/1 -> skip/include) -ParseExtensions=3fr;arw;cr2;crf;crw;dcr;dng;fff;iiq;jpg;jpeg;kdc;mef;mos;mrw;nef;nrw;orf;pef;png;raf;raw;rw2;rwl;rwz;sr2;srf;srw;tif;tiff;x3f; -ParseExtensionsEnabled=1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;1;1;1;1;1;1;1;1;1;1;1; +ParseExtensions=3fr;arw;arq;cr2;crf;crw;dcr;dng;fff;iiq;jpg;jpeg;kdc;mef;mos;mrw;nef;nrw;orf;pef;png;raf;raw;rw2;rwl;rwz;sr2;srf;srw;tif;tiff;x3f; +ParseExtensionsEnabled=1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;1;1;1;1;1;1;1;1;1;1;1; [Output] PathTemplate=%p1/converted/%f diff --git a/rtdata/profiles/Pentax Pixel Shift/PS ISO High.pp3 b/rtdata/profiles/Pixel Shift/PS ISO High.pp3 similarity index 100% rename from rtdata/profiles/Pentax Pixel Shift/PS ISO High.pp3 rename to rtdata/profiles/Pixel Shift/PS ISO High.pp3 diff --git a/rtdata/profiles/Pentax Pixel Shift/PS ISO Low.pp3 b/rtdata/profiles/Pixel Shift/PS ISO Low.pp3 similarity index 100% rename from rtdata/profiles/Pentax Pixel Shift/PS ISO Low.pp3 rename to rtdata/profiles/Pixel Shift/PS ISO Low.pp3 diff --git a/rtdata/profiles/Pentax Pixel Shift/PS ISO Medium.pp3 b/rtdata/profiles/Pixel Shift/PS ISO Medium.pp3 similarity index 100% rename from rtdata/profiles/Pentax Pixel Shift/PS ISO Medium.pp3 rename to rtdata/profiles/Pixel Shift/PS ISO Medium.pp3 diff --git a/rtdata/profiles/Pentax Pixel Shift/PS No Motion.pp3 b/rtdata/profiles/Pixel Shift/PS No Motion.pp3 similarity index 100% rename from rtdata/profiles/Pentax Pixel Shift/PS No Motion.pp3 rename to rtdata/profiles/Pixel Shift/PS No Motion.pp3 diff --git a/rtdata/themes/RawTherapee-GTK3-20_.css b/rtdata/themes/RawTherapee-GTK3-20_.css index b0a7ac071..a2fadeca3 100644 --- a/rtdata/themes/RawTherapee-GTK3-20_.css +++ b/rtdata/themes/RawTherapee-GTK3-20_.css @@ -446,6 +446,11 @@ menuitem { min-height: 10px; } +/* FlowBoxChild */ +flowboxchild:selected { + background-color: inherit; +} + #HistogramPanel { margin: 0; padding: 0; diff --git a/rtdata/themes/TooWaBlue-GTK3-20_.css b/rtdata/themes/TooWaBlue-GTK3-20_.css index 1e196bff8..a65fb2d3e 100644 --- a/rtdata/themes/TooWaBlue-GTK3-20_.css +++ b/rtdata/themes/TooWaBlue-GTK3-20_.css @@ -2,7 +2,7 @@ This file is part of RawTherapee. Copyright (c) 2016-2017 TooWaBoo - Version 2.60 + Version 2.62 RawTherapee is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -213,10 +213,6 @@ dialog frame > label { padding-left: 0.91667em; } -#BatchQueueButtons { - margin-top: 0.66667em; -} - frame > label { margin: 0; padding: 0.5em 0; @@ -637,6 +633,11 @@ scale:disabled trough { background-image: none; } +#BatchQueueButtonsMainContainer scale:disabled slider, +#BatchQueueButtonsMainContainer scale:disabled trough { + background-color: shade(@bg-light-grey,.85); +} + /*** end ***************************************************************************************/ /*** Progressbar *******************************************************************************/ @@ -1225,6 +1226,51 @@ popover.background modelbutton:hover { } /** end ****************************************************************************************/ +/*** Switch ***********************************************************************************/ +switch { + min-height: 2.16667em; + min-width: 11em; + margin: 0; + padding: 0; + border-radius: 0.2em; + background-image: none; + box-shadow: inset 0.08334em 0.08334em rgba(0, 0, 0, 0.08), 0 0.08334em rgba(242, 242, 242, 0.1); + border: 0.08334em solid @bg-entry-border; + background-color: @bg-scale-entry; + margin-bottom: 0.5em; +} + +switch slider { + border: 0.08334em solid @bg-entry-border; + background-color: shade (@bg-light-grey, .85); + background-image: linear-gradient(to bottom, rgba(125,125,125,.4), rgba(60,60,60,.4)); + border: 0.08334em solid @bg-entry-border; + box-shadow: inset 0 0.08334em rgba(242, 242, 242, 0.1); + border-radius: 0.2em 0 0 0.2em; +} +switch:checked slider{ + border-radius: 0 0.2em 0.2em 0; +} + +switch:hover slider { + background-color: shade (@bg-light-grey, .65); + background-image: linear-gradient(to bottom, rgba(125,125,125,.4), rgba(60,60,60,.4)); +} + +switch:checked { + background-color: @accent-color2; + color: @headline-big; +} + +switch:disabled:not(:checked) { + box-shadow: none; + background-image: none; + background-color: shade (@bg-light-grey, .85); +} + + +/** end ****************************************************************************************/ + /*** Buttons ***********************************************************************************/ button { min-height: 2.16667em; @@ -1355,6 +1401,7 @@ button.MiddleH { /**/ /* Button base format for Toolbox and dialogs */ +#ToolPanelNotebook > stack > box > box > combobox .combo, dialog button, #MyExpander button, #BatchQueueButtonsMainContainer button { @@ -1371,7 +1418,7 @@ combobox .combo, dialog combobox .combo, #ToolPanelNotebook combobox .combo, #BatchQueueButtonsMainContainer combobox .combo { - padding: 0 0.208334em; + padding: 0 0.26667em; } /**/ @@ -1386,6 +1433,7 @@ dialog combobox .combo, #MyExpander combobox + label */ { margin-left: 0.16667em; } + #MyExpander label + * > button:not(.flat).Left, #MyExpander label + combobox:not(:first-child):not(:only-child), #MyExpander label + button:not(.flat):not(spinbutton) { @@ -1455,13 +1503,6 @@ messagedialog .dialog-action-area button:not(:only-child):nth-child(2) { } /**/ -/* Queue */ -#BatchQueueButtons button { - min-height: 2.16667em; - min-width: 10em; -} -/**/ - /* View & Filechooser Buttons */ dialog .view button, window .view button { diff --git a/rtengine/CMakeLists.txt b/rtengine/CMakeLists.txt index 957304bb8..19e4472a3 100644 --- a/rtengine/CMakeLists.txt +++ b/rtengine/CMakeLists.txt @@ -117,12 +117,17 @@ set(RTENGINESOURCEFILES utils.cc rtlensfun.cc tmo_fattal02.cc + iplocalcontrast.cc + histmatching.cc ) if(LENSFUN_HAS_LOAD_DIRECTORY) set_source_files_properties(rtlensfun.cc PROPERTIES COMPILE_DEFINITIONS RT_LENSFUN_HAS_LOAD_DIRECTORY) endif() +if(WITH_BENCHMARK) + add_definitions(-DBENCHMARK) +endif() if(NOT WITH_SYSTEM_KLT) set(RTENGINESOURCEFILES ${RTENGINESOURCEFILES} diff --git a/rtengine/FTblockDN.cc b/rtengine/FTblockDN.cc index 334f97f05..aec11e59b 100644 --- a/rtengine/FTblockDN.cc +++ b/rtengine/FTblockDN.cc @@ -41,6 +41,7 @@ #ifdef _OPENMP #include #endif +#include "StopWatch.h" #define TS 64 // Tile size #define offset 25 // shift between tiles @@ -78,8 +79,10 @@ namespace { template -void do_median_denoise(float **src, float **dst, float upperBound, const int width, const int height, const ImProcFunctions::Median medianType, const int iterations, const int numThreads, float **buffer) +void do_median_denoise(float **src, float **dst, float upperBound, int width, int height, ImProcFunctions::Median medianType, int iterations, int numThreads, float **buffer) { + iterations = max(1, iterations); + typedef ImProcFunctions::Median Median; int border = 1; @@ -473,6 +476,7 @@ enum nrquality {QUALITY_STANDARD, QUALITY_HIGH}; SSEFUNCTION void ImProcFunctions::RGB_denoise(int kall, Imagefloat * src, Imagefloat * dst, Imagefloat * calclum, float * ch_M, float *max_r, float *max_b, bool isRAW, const procparams::DirPyrDenoiseParams & dnparams, const double expcomp, const NoiseCurve & noiseLCurve, const NoiseCurve & noiseCCurve, float &nresi, float &highresi) { +BENCHFUN //#ifdef _DEBUG MyTime t1e, t2e; t1e.set(); @@ -761,10 +765,10 @@ SSEFUNCTION void ImProcFunctions::RGB_denoise(int kall, Imagefloat * src, Imagef fftw_r2r_kind bwdkind[2] = {FFTW_REDFT01, FFTW_REDFT01}; // Creating the plans with FFTW_MEASURE instead of FFTW_ESTIMATE speeds up the execute a bit - plan_forward_blox[0] = fftwf_plan_many_r2r(2, nfwd, max_numblox_W, Lbloxtmp, nullptr, 1, TS * TS, fLbloxtmp, nullptr, 1, TS * TS, fwdkind, FFTW_MEASURE || FFTW_DESTROY_INPUT); - plan_backward_blox[0] = fftwf_plan_many_r2r(2, nfwd, max_numblox_W, fLbloxtmp, nullptr, 1, TS * TS, Lbloxtmp, nullptr, 1, TS * TS, bwdkind, FFTW_MEASURE || FFTW_DESTROY_INPUT); - plan_forward_blox[1] = fftwf_plan_many_r2r(2, nfwd, min_numblox_W, Lbloxtmp, nullptr, 1, TS * TS, fLbloxtmp, nullptr, 1, TS * TS, fwdkind, FFTW_MEASURE || FFTW_DESTROY_INPUT); - plan_backward_blox[1] = fftwf_plan_many_r2r(2, nfwd, min_numblox_W, fLbloxtmp, nullptr, 1, TS * TS, Lbloxtmp, nullptr, 1, TS * TS, bwdkind, FFTW_MEASURE || FFTW_DESTROY_INPUT); + plan_forward_blox[0] = fftwf_plan_many_r2r(2, nfwd, max_numblox_W, Lbloxtmp, nullptr, 1, TS * TS, fLbloxtmp, nullptr, 1, TS * TS, fwdkind, FFTW_MEASURE | FFTW_DESTROY_INPUT); + plan_backward_blox[0] = fftwf_plan_many_r2r(2, nfwd, max_numblox_W, fLbloxtmp, nullptr, 1, TS * TS, Lbloxtmp, nullptr, 1, TS * TS, bwdkind, FFTW_MEASURE | FFTW_DESTROY_INPUT); + plan_forward_blox[1] = fftwf_plan_many_r2r(2, nfwd, min_numblox_W, Lbloxtmp, nullptr, 1, TS * TS, fLbloxtmp, nullptr, 1, TS * TS, fwdkind, FFTW_MEASURE | FFTW_DESTROY_INPUT); + plan_backward_blox[1] = fftwf_plan_many_r2r(2, nfwd, min_numblox_W, fLbloxtmp, nullptr, 1, TS * TS, Lbloxtmp, nullptr, 1, TS * TS, bwdkind, FFTW_MEASURE | FFTW_DESTROY_INPUT); fftwf_free(Lbloxtmp); fftwf_free(fLbloxtmp); } @@ -1779,7 +1783,6 @@ SSEFUNCTION void ImProcFunctions::RGB_denoise(int kall, Imagefloat * src, Imagef fftwf_destroy_plan(plan_backward_blox[0]); fftwf_destroy_plan(plan_forward_blox[1]); fftwf_destroy_plan(plan_backward_blox[1]); - fftwf_cleanup(); } } while (memoryAllocationFailed && numTries < 2 && (options.rgbDenoiseThreadLimit == 0) && !ponder); diff --git a/rtengine/LUT.h b/rtengine/LUT.h index 2701c4ffc..0fd906dc0 100644 --- a/rtengine/LUT.h +++ b/rtengine/LUT.h @@ -93,8 +93,11 @@ class LUT : { protected: // list of variables ordered to improve cache speed - unsigned int maxs; + int maxs; float maxsf; + // For the SSE routine operator[](vfloat), we just clip float lookup values + // to just below the max value. + float maxIndexFloat; T * data; unsigned int clip; unsigned int size; @@ -123,12 +126,16 @@ public: #endif dirty = true; clip = flags; - data = new T[s]; + // Add a few extra elements so [](vfloat) won't access out-of-bounds memory. + // The routine would still produce the right answer, but might cause issues + // with address/heap checking programs. + data = new T[s + 3]; owner = 1; size = s; upperBound = size - 1; maxs = size - 2; maxsf = (float)maxs; + maxIndexFloat = ((float)upperBound) - 1e-5; #if defined( __SSE2__ ) && defined( __x86_64__ ) maxsv = F2V( maxs ); sizeiv = _mm_set1_epi32( (int)(size - 1) ); @@ -152,12 +159,14 @@ public: dirty = true; // Assumption! clip = flags; - data = new T[s]; + // See comment in constructor. + data = new T[s + 3]; owner = 1; size = s; upperBound = size - 1; maxs = size - 2; maxsf = (float)maxs; + maxIndexFloat = ((float)upperBound) - 1e-5; #if defined( __SSE2__ ) && defined( __x86_64__ ) maxsv = F2V( maxs ); sizeiv = _mm_set1_epi32( (int)(size - 1) ); @@ -191,6 +200,10 @@ public: clip = flags; } + int getClip() const { + return clip; + } + /** @brief Get the number of element in the LUT (i.e. dimension of the array) * For a LUT(500), it will return 500 * @return number of element in the array @@ -218,7 +231,8 @@ public: } if (this->data == nullptr) { - this->data = new T[rhs.size]; + // See comment in constructor. + this->data = new T[rhs.size + 3]; } this->clip = rhs.clip; @@ -228,6 +242,7 @@ public: this->upperBound = rhs.upperBound; this->maxs = this->size - 2; this->maxsf = (float)this->maxs; + this->maxIndexFloat = ((float)this->upperBound) - 1e-5; #if defined( __SSE2__ ) && defined( __x86_64__ ) this->maxsv = F2V( this->size - 2); this->sizeiv = _mm_set1_epi32( (int)(this->size - 1) ); @@ -293,72 +308,101 @@ public: } #if defined( __SSE2__ ) && defined( __x86_64__ ) -/* - vfloat operator[](vfloat indexv ) const + + + // NOTE: This function requires LUTs which clips only at lower bound + vfloat cb(vfloat indexv) const { -// printf("don't use this operator. It's not ready for production"); - return _mm_setzero_ps(); + static_assert(std::is_same::value, "This method only works for float LUTs"); - // convert floats to ints - vint idxv = _mm_cvttps_epi32( indexv ); - vfloat tempv, resultv, p1v, p2v; - vmask maxmask = vmaskf_gt(indexv, maxsv); - idxv = _mm_castps_si128(vself(maxmask, maxsv, _mm_castsi128_ps(idxv))); - vmask minmask = vmaskf_lt(indexv, _mm_setzero_ps()); - idxv = _mm_castps_si128(vself(minmask, _mm_setzero_ps(), _mm_castsi128_ps(idxv))); - // access the LUT 4 times and shuffle the values into p1v and p2v + // Clamp and convert to integer values. Extract out of SSE register because all + // lookup operations use regular addresses. + vfloat clampedIndexes = vmaxf(ZEROV, vminf(F2V(maxIndexFloat), indexv)); + vint indexes = _mm_cvttps_epi32(clampedIndexes); + int indexArray[4]; + _mm_storeu_si128(reinterpret_cast<__m128i*>(&indexArray[0]), indexes); - int idx; + // Load data from the table. This reads more than necessary, but there don't seem + // to exist more granular operations (though we could try non-SSE). + // Cast to int for convenience in the next operation (partial transpose). + vint values[4]; + for (int i = 0; i < 4; ++i) { + values[i] = _mm_castps_si128(LVFU(data[indexArray[i]])); + } - // get 4th value - idx = _mm_cvtsi128_si32 (_mm_shuffle_epi32(idxv, _MM_SHUFFLE(3, 3, 3, 3))); - tempv = LVFU(data[idx]); - p1v = _mm_shuffle_ps(tempv, tempv, _MM_SHUFFLE(0, 0, 0, 0)); - p2v = _mm_shuffle_ps(tempv, tempv, _MM_SHUFFLE(1, 1, 1, 1)); - // now p1v is 3 3 3 3 - // p2v is 3 3 3 3 + // Partial 4x4 transpose operation. We want two new vectors, the first consisting + // of [values[0][0] ... values[3][0]] and the second [values[0][1] ... values[3][1]]. + __m128i temp0 = _mm_unpacklo_epi32(values[0], values[1]); + __m128i temp1 = _mm_unpacklo_epi32(values[2], values[3]); + vfloat lower = _mm_castsi128_ps(_mm_unpacklo_epi64(temp0, temp1)); + vfloat upper = _mm_castsi128_ps(_mm_unpackhi_epi64(temp0, temp1)); - // get 3rd value - idx = _mm_cvtsi128_si32 (_mm_shuffle_epi32(idxv, _MM_SHUFFLE(2, 2, 2, 2))); - tempv = LVFU(data[idx]); - p1v = _mm_move_ss( p1v, tempv); - tempv = _mm_shuffle_ps(tempv, tempv, _MM_SHUFFLE(1, 1, 1, 1)); - p2v = _mm_move_ss( p2v, tempv); - // now p1v is 3 3 3 2 - // p2v is 3 3 3 2 - - // get 2nd value - idx = _mm_cvtsi128_si32 (_mm_shuffle_epi32(idxv, _MM_SHUFFLE(1, 1, 1, 1))); - tempv = LVFU(data[idx]); - p1v = _mm_shuffle_ps( p1v, p1v, _MM_SHUFFLE(1, 0, 1, 0)); - p2v = _mm_shuffle_ps( p2v, p2v, _MM_SHUFFLE(1, 0, 1, 0)); - // now p1v is 3 2 3 2 - // now p2v is 3 2 3 2 - p1v = _mm_move_ss( p1v, tempv ); - // now p1v is 3 2 3 1 - tempv = _mm_shuffle_ps(tempv, tempv, _MM_SHUFFLE(1, 1, 1, 1)); - p2v = _mm_move_ss( p2v, tempv); - // now p1v is 3 2 3 1 - - // get 1st value - idx = _mm_cvtsi128_si32 (_mm_shuffle_epi32(idxv, _MM_SHUFFLE(0, 0, 0, 0))); - tempv = LVFU(data[idx]); - p1v = _mm_shuffle_ps( p1v, p1v, _MM_SHUFFLE(3, 2, 0, 0)); - // now p1v is 3 2 1 1 - p2v = _mm_shuffle_ps( p2v, p2v, _MM_SHUFFLE(3, 2, 0, 0)); - // now p2v is 3 2 1 1 - p1v = _mm_move_ss( p1v, tempv ); - // now p1v is 3 2 1 0 - tempv = _mm_shuffle_ps(tempv, tempv, _MM_SHUFFLE(1, 1, 1, 1)); - p2v = _mm_move_ss( p2v, tempv); - // now p2v is 3 2 1 0 - - vfloat diffv = indexv - _mm_cvtepi32_ps ( idxv ); - diffv = vself(vorm(maxmask, minmask), _mm_setzero_ps(), diffv); - resultv = p1v + p2v * diffv; - return resultv ; + vfloat diff = vmaxf(ZEROV, indexv) - _mm_cvtepi32_ps(indexes); + return vintpf(diff, upper, lower); + } + + // NOTE: This version requires LUTs which clip at upper and lower bounds + // (which is the default). + vfloat operator[](vfloat indexv) const + { + static_assert(std::is_same::value, "This method only works for float LUTs"); + + // Clamp and convert to integer values. Extract out of SSE register because all + // lookup operations use regular addresses. + vfloat clampedIndexes = vmaxf(ZEROV, vminf(F2V(maxIndexFloat), indexv)); + vint indexes = _mm_cvttps_epi32(clampedIndexes); + int indexArray[4]; + _mm_storeu_si128(reinterpret_cast<__m128i*>(&indexArray[0]), indexes); + + // Load data from the table. This reads more than necessary, but there don't seem + // to exist more granular operations (though we could try non-SSE). + // Cast to int for convenience in the next operation (partial transpose). + vint values[4]; + for (int i = 0; i < 4; ++i) { + values[i] = _mm_castps_si128(LVFU(data[indexArray[i]])); + } + + // Partial 4x4 transpose operation. We want two new vectors, the first consisting + // of [values[0][0] ... values[3][0]] and the second [values[0][1] ... values[3][1]]. + __m128i temp0 = _mm_unpacklo_epi32(values[0], values[1]); + __m128i temp1 = _mm_unpacklo_epi32(values[2], values[3]); + vfloat lower = _mm_castsi128_ps(_mm_unpacklo_epi64(temp0, temp1)); + vfloat upper = _mm_castsi128_ps(_mm_unpackhi_epi64(temp0, temp1)); + + vfloat diff = clampedIndexes - _mm_cvtepi32_ps(indexes); + return vintpf(diff, upper, lower); + } + + // NOTE: This version requires LUTs which do not clip at upper and lower bounds + vfloat operator()(vfloat indexv) const + { + static_assert(std::is_same::value, "This method only works for float LUTs"); + + // Clamp and convert to integer values. Extract out of SSE register because all + // lookup operations use regular addresses. + vfloat clampedIndexes = vmaxf(ZEROV, vminf(F2V(maxsf), indexv)); + vint indexes = _mm_cvttps_epi32(clampedIndexes); + int indexArray[4]; + _mm_storeu_si128(reinterpret_cast<__m128i*>(&indexArray[0]), indexes); + + // Load data from the table. This reads more than necessary, but there don't seem + // to exist more granular operations (though we could try non-SSE). + // Cast to int for convenience in the next operation (partial transpose). + vint values[4]; + for (int i = 0; i < 4; ++i) { + values[i] = _mm_castps_si128(LVFU(data[indexArray[i]])); + } + + // Partial 4x4 transpose operation. We want two new vectors, the first consisting + // of [values[0][0] ... values[3][0]] and the second [values[0][1] ... values[3][1]]. + __m128i temp0 = _mm_unpacklo_epi32(values[0], values[1]); + __m128i temp1 = _mm_unpacklo_epi32(values[2], values[3]); + vfloat lower = _mm_castsi128_ps(_mm_unpacklo_epi64(temp0, temp1)); + vfloat upper = _mm_castsi128_ps(_mm_unpackhi_epi64(temp0, temp1)); + + vfloat diff = indexv - _mm_cvtepi32_ps(indexes); + return vintpf(diff, upper, lower); } -*/ #ifdef __SSE4_1__ template::value>::type> vfloat operator[](vint idxv ) const @@ -456,7 +500,7 @@ public: } idx = 0; - } else if (index > maxsf) { + } else if (idx > maxs) { if (clip & LUT_CLIP_ABOVE) { return data[upperBound]; } @@ -543,6 +587,7 @@ public: maxs = 0; maxsf = 0.f; clip = 0; + maxIndexFloat = ((float)upperBound) - 1e-5; } // create an identity LUT (LUT(x) = x) or a scaled identity LUT (LUT(x) = x / divisor) @@ -652,6 +697,7 @@ public: upperBound = size - 1; maxs = size - 2; maxsf = (float)maxs; + maxIndexFloat = ((float)upperBound) - 1e-5; #if defined( __SSE2__ ) && defined( __x86_64__ ) maxsv = F2V( size - 2); sizeiv = _mm_set1_epi32( (int)(size - 1) ); diff --git a/rtengine/alignedbuffer.h b/rtengine/alignedbuffer.h index dd9d7b278..27a376c57 100644 --- a/rtengine/alignedbuffer.h +++ b/rtengine/alignedbuffer.h @@ -18,9 +18,15 @@ */ #ifndef _ALIGNEDBUFFER_ #define _ALIGNEDBUFFER_ + +#include #include #include +inline size_t padToAlignment(size_t size, size_t align = 16) { + return align * ((size + align - 1) / align); +} + // Aligned buffer that should be faster template class AlignedBuffer { diff --git a/rtengine/cJSON.c b/rtengine/cJSON.c index 8e9cdcccf..263a45113 100644 --- a/rtengine/cJSON.c +++ b/rtengine/cJSON.c @@ -38,7 +38,8 @@ const char *cJSON_GetErrorPtr(void) {return ep;} static int cJSON_strcasecmp(const char *s1,const char *s2) { - if (!s1) return (s1==s2)?0:1;if (!s2) return 1; + if (!s1) return (s1==s2)?0:1; + if (!s2) return 1; for(; tolower(*s1) == tolower(*s2); ++s1, ++s2) if(*s1 == 0) return 0; return tolower(*(const unsigned char *)s1) - tolower(*(const unsigned char *)s2); } @@ -107,7 +108,7 @@ static const char *parse_number(cJSON *item,const char *num) } n=sign*n*pow(10.0,(scale+subscale*signsubscale)); /* number = +/- number.fraction * 10^+/- exponent */ - + item->valuedouble=n; item->valueint=(int)n; item->type=cJSON_Number; @@ -156,12 +157,12 @@ static const char *parse_string(cJSON *item,const char *str) { const char *ptr=str+1;char *ptr2;char *out;int len=0;unsigned uc,uc2; if (*str!='\"') {ep=str;return 0;} /* not a string! */ - + while (*ptr!='\"' && *ptr && ++len) if (*ptr++ == '\\') ptr++; /* Skip escaped quotes. */ - + out=(char*)cJSON_malloc(len+1); /* This is how long we need for the string, roughly. */ if (!out) return 0; - + ptr=str+1;ptr2=out; while (*ptr!='\"' && *ptr) { @@ -190,7 +191,7 @@ static const char *parse_string(cJSON *item,const char *str) } len=4;if (uc<0x80) len=1;else if (uc<0x800) len=2;else if (uc<0x10000) len=3; ptr2+=len; - + #if defined( __GNUC__ ) && __GNUC__ >= 7// silence warning #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wimplicit-fallthrough" @@ -224,10 +225,10 @@ static const char *parse_string(cJSON *item,const char *str) static char *print_string_ptr(const char *str) { const char *ptr;char *ptr2,*out;int len=0;unsigned char token; - + if (!str) return cJSON_strdup(""); ptr=str;while ((token=*ptr) && ++len) {if (strchr("\"\\\b\f\n\r\t",token)) len++; else if (token<32) len+=5;ptr++;} - + out=(char*)cJSON_malloc(len+3); if (!out) return 0; @@ -360,7 +361,7 @@ static char *print_array(cJSON *item,int depth,int fmt) char *out=0,*ptr,*ret;int len=5; cJSON *child=item->child; int numentries=0,i=0,fail=0; - + /* How many entries in the array? */ while (child) numentries++,child=child->next; /* Explicitly handle numentries==0 */ @@ -383,7 +384,7 @@ static char *print_array(cJSON *item,int depth,int fmt) if (ret) len+=strlen(ret)+2+(fmt?1:0); else fail=1; child=child->next; } - + /* If we didn't fail, try to malloc the output string */ if (!fail) out=(char*)cJSON_malloc(len); /* If that fails, we fail. */ @@ -396,7 +397,7 @@ static char *print_array(cJSON *item,int depth,int fmt) cJSON_free(entries); return 0; } - + /* Compose the output array. */ *out='['; ptr=out+1;*ptr=0; @@ -408,7 +409,7 @@ static char *print_array(cJSON *item,int depth,int fmt) } cJSON_free(entries); *ptr++=']';*ptr++=0; - return out; + return out; } /* Build an object from the text. */ @@ -416,11 +417,11 @@ static const char *parse_object(cJSON *item,const char *value) { cJSON *child; if (*value!='{') {ep=value;return 0;} /* not an object! */ - + item->type=cJSON_Object; value=skip(value+1); if (*value=='}') return value+1; /* empty array. */ - + item->child=child=cJSON_New_Item(); if (!item->child) return 0; value=skip(parse_string(child,skip(value))); @@ -429,7 +430,7 @@ static const char *parse_object(cJSON *item,const char *value) if (*value!=':') {ep=value;return 0;} /* fail! */ value=skip(parse_value(child,skip(value+1))); /* skip any spacing, get the value. */ if (!value) return 0; - + while (*value==',') { cJSON *new_item; @@ -442,7 +443,7 @@ static const char *parse_object(cJSON *item,const char *value) value=skip(parse_value(child,skip(value+1))); /* skip any spacing, get the value. */ if (!value) return 0; } - + if (*value=='}') return value+1; /* end of array */ ep=value;return 0; /* malformed. */ } @@ -483,7 +484,7 @@ static char *print_object(cJSON *item,int depth,int fmt) if (str && ret) len+=strlen(ret)+strlen(str)+2+(fmt?2+depth:0); else fail=1; child=child->next; } - + /* Try to allocate the output string */ if (!fail) out=(char*)cJSON_malloc(len); if (!out) fail=1; @@ -495,7 +496,7 @@ static char *print_object(cJSON *item,int depth,int fmt) cJSON_free(names);cJSON_free(entries); return 0; } - + /* Compose the output: */ *out='{';ptr=out+1;if (fmt)*ptr++='\n';*ptr=0; for (i=0;ichild;while (c && which>0) c=c->next,which--;if (!c) return 0; - if (c->prev) c->prev->next=c->next;if (c->next) c->next->prev=c->prev;if (c==array->child) array->child=c->next;c->prev=c->next=0;return c;} +cJSON *cJSON_DetachItemFromArray(cJSON *array,int which) { + cJSON *c=array->child; + while (c && which>0) c=c->next,which--; + if (!c) return 0; + if (c->prev) c->prev->next=c->next; + if (c->next) c->next->prev=c->prev; + if (c==array->child) array->child=c->next;c->prev=c->next=0; + return c; +} void cJSON_DeleteItemFromArray(cJSON *array,int which) {cJSON_Delete(cJSON_DetachItemFromArray(array,which));} cJSON *cJSON_DetachItemFromObject(cJSON *object,const char *string) {int i=0;cJSON *c=object->child;while (c && cJSON_strcasecmp(c->string,string)) i++,c=c->next;if (c) return cJSON_DetachItemFromArray(object,i);return 0;} void cJSON_DeleteItemFromObject(cJSON *object,const char *string) {cJSON_Delete(cJSON_DetachItemFromObject(object,string));} @@ -602,4 +611,4 @@ void cJSON_Minify(char *json) else *into++=*json++; // All other characters. } *into=0; // and null-terminate. -} \ No newline at end of file +} diff --git a/rtengine/camconst.json b/rtengine/camconst.json index 5a3a18fd1..610a22310 100644 --- a/rtengine/camconst.json +++ b/rtengine/camconst.json @@ -2285,6 +2285,13 @@ Camera constants: "ranges": { "black": 800, "white": 16300 } }, + { // Quality C, + "make_model": "Sony ILCE-7RM3", + "dcraw_matrix": [ 6640,-1847,-503,-5238,13010,2474,-993,1673,6527 ], // DNG_v10.1 D65 + "raw_crop": [ 0, 0, -36, 0 ], // full raw frame 8000x5320 - 36 rightmost columns are garbage + "ranges": { "black": 512, "white": 16300 } + }, + { // Quality C, No proper color data, beta samples, frame set to official jpeg, "make_model": [ "XIAOYI M1", "YI TECHNOLOGY M1" ], "dcraw_matrix": [ 7158,-1911,-606,-3603,10669,2530,-659,1236,5530 ], // XIAO YI DNG D65 diff --git a/rtengine/ciecam02.cc b/rtengine/ciecam02.cc index 77c57048a..560d5721a 100644 --- a/rtengine/ciecam02.cc +++ b/rtengine/ciecam02.cc @@ -608,31 +608,31 @@ void Ciecam02::calculate_ab ( double &aa, double &bb, double h, double e, double } void Ciecam02::calculate_abfloat ( float &aa, float &bb, float h, float e, float t, float nbb, float a ) { - float2 sincosval = xsincosf ((h * rtengine::RT_PI) / 180.0f); + float2 sincosval = xsincosf(h * rtengine::RT_PI_F_180); float sinh = sincosval.x; float cosh = sincosval.y; float x = (a / nbb) + 0.305f; - float p3 = 1.05f; - bool swapValues = fabs ( sinh ) > fabs ( cosh ); + constexpr float p3 = 1.05f; + const bool swapValues = fabs(sinh) > fabs(cosh); if (swapValues) { - std::swap (sinh, cosh); + std::swap(sinh, cosh); } float c1 = 1.f; float c2 = sinh / cosh; if (swapValues) { - std::swap (c1, c2); + std::swap(c1, c2); } - float div = ((e / (t * cosh)) - (-0.31362f - (p3 * 0.15681f)) * c1 - ((0.01924f - (p3 * 4.49038f)) * (c2))); + float div = ((e / (t * cosh)) - (-0.31362f - (p3 * 0.15681f)) * c1 - ((0.01924f - (p3 * 4.49038f)) * c2)); // for large values of t the above calculation can change its sign which results in a hue shift of 180 degree // so we have to check the sign to avoid this shift. // Additionally it seems useful to limit the minimum value of div // I limited it, but I'm sure the actual limit is not the best one - if (signf (div) != signf (cosh) || fabsf (div) <= fabsf (cosh) * 2.f) { + if (signf(div) != signf(cosh) || fabsf(div) <= fabsf(cosh) * 2.f) { div = cosh * 2.f; } @@ -640,7 +640,7 @@ void Ciecam02::calculate_abfloat ( float &aa, float &bb, float h, float e, float bb = (aa * sinh) / cosh; if (swapValues) { - std::swap (aa, bb); + std::swap(aa, bb); } } #ifdef __SSE2__ @@ -1007,9 +1007,18 @@ void Ciecam02::xyz2jch_ciecam02float ( float &J, float &C, float &h, float aw, f bp = MAXR (bp, 0.0f); } - rpa = nonlinear_adaptationfloat ( rp, fl ); - gpa = nonlinear_adaptationfloat ( gp, fl ); - bpa = nonlinear_adaptationfloat ( bp, fl ); +#ifdef __SSE2__ + vfloat pv = _mm_setr_ps(rp, gp, bp, 1.f); + vfloat fv = F2V(fl); + vfloat outv = nonlinear_adaptationfloat(pv, fv); + rpa = outv[0]; + gpa = outv[1]; + bpa = outv[2]; +#else + rpa = nonlinear_adaptationfloat(rp, fl); + gpa = nonlinear_adaptationfloat(gp, fl); + bpa = nonlinear_adaptationfloat(bp, fl); +#endif ca = rpa - ((12.0f * gpa) - bpa) / 11.0f; cb = (0.11111111f) * (rpa + gpa - (2.0f * bpa)); @@ -1084,26 +1093,43 @@ void Ciecam02::jch2xyz_ciecam02float ( float &x, float &y, float &z, float J, fl float a, ca, cb; float e, t; gamu = 1; - xyz_to_cat02float ( rw, gw, bw, xw, yw, zw, gamu ); - e = ((961.53846f) * nc * ncb) * (xcosf ( ((h * rtengine::RT_PI) / 180.0f) + 2.0f ) + 3.8f); - a = pow_F ( J / 100.0f, 1.0f / (c * cz) ) * aw; - t = pow_F ( 10.f * C / (sqrtf ( J ) * pow1), 1.1111111f ); + xyz_to_cat02float(rw, gw, bw, xw, yw, zw, gamu); + e = ((961.53846f) * nc * ncb) * (xcosf(h * rtengine::RT_PI_F_180 + 2.0f) + 3.8f); - calculate_abfloat ( ca, cb, h, e, t, nbb, a ); - Aab_to_rgbfloat ( rpa, gpa, bpa, a, ca, cb, nbb ); +#ifdef __SSE2__ + vfloat powinv1 = _mm_setr_ps(J / 100.0f, 10.f * C / (sqrtf(J) * pow1), 1.f, 1.f); + vfloat powinv2 = _mm_setr_ps(1.0f / (c * cz), 1.1111111f, 1.f, 1.f); + vfloat powoutv = pow_F(powinv1, powinv2); + a = powoutv[0] * aw; + t = powoutv[1]; +#else + a = pow_F(J / 100.0f, 1.0f / (c * cz)) * aw; + t = pow_F(10.f * C / (sqrtf(J) * pow1), 1.1111111f); +#endif - rp = inverse_nonlinear_adaptationfloat ( rpa, fl ); - gp = inverse_nonlinear_adaptationfloat ( gpa, fl ); - bp = inverse_nonlinear_adaptationfloat ( bpa, fl ); + calculate_abfloat(ca, cb, h, e, t, nbb, a); + Aab_to_rgbfloat(rpa, gpa, bpa, a, ca, cb, nbb); - hpe_to_xyzfloat ( x, y, z, rp, gp, bp ); - xyz_to_cat02float ( rc, gc, bc, x, y, z, gamu ); +#ifdef __SSE2__ + vfloat pav = _mm_setr_ps(rpa, gpa, bpa, 1.f); + vfloat fv = F2V(fl); + vfloat outv = inverse_nonlinear_adaptationfloat(pav, fv); + rp = outv[0]; + gp = outv[1]; + bp = outv[2]; +#else + rp = inverse_nonlinear_adaptationfloat(rpa, fl); + gp = inverse_nonlinear_adaptationfloat(gpa, fl); + bp = inverse_nonlinear_adaptationfloat(bpa, fl); +#endif + hpe_to_xyzfloat(x, y, z, rp, gp, bp); + xyz_to_cat02float(rc, gc, bc, x, y, z, gamu); r = rc / (((yw * d) / rw) + (1.0f - d)); g = gc / (((yw * d) / gw) + (1.0f - d)); b = bc / (((yw * d) / bw) + (1.0f - d)); - cat02_to_xyzfloat ( x, y, z, r, g, b, gamu ); + cat02_to_xyzfloat(x, y, z, r, g, b, gamu); } #ifdef __SSE2__ diff --git a/rtengine/color.cc b/rtengine/color.cc index 7964cc472..ee63720aa 100644 --- a/rtengine/color.cc +++ b/rtengine/color.cc @@ -553,44 +553,6 @@ void Color::rgb2hsl(float r, float g, float b, float &h, float &s, float &l) } } -void Color::rgb2hslfloat(float r, float g, float b, float &h, float &s, float &l) -{ - - float m = min(r, g, b); - float M = max(r, g, b); - float C = M - m; - - l = (M + m) * 7.6295109e-6f; // (0.5f / 65535.f) - - if (fabsf(C) < 0.65535f) { // 0.00001f * 65535.f - h = 0.f; - s = 0.f; - } else { - - if (l <= 0.5f) { - s = (M - m) / (M + m); - } else { - s = (M - m) / (131070.f - M - m); // 131070.f = 2.f * 65535.f - } - - if ( r == M ) { - h = (g - b); - } else if ( g == M ) { - h = (2.f * C) + (b - r); - } else { - h = (4.f * C) + (r - g); - } - - h /= (6.f * C); - - if ( h < 0.f ) { - h += 1.f; - } else if ( h > 1.f ) { - h -= 1.f; - } - } -} - #ifdef __SSE2__ void Color::rgb2hsl(vfloat r, vfloat g, vfloat b, vfloat &h, vfloat &s, vfloat &l) { @@ -609,9 +571,8 @@ void Color::rgb2hsl(vfloat r, vfloat g, vfloat b, vfloat &h, vfloat &s, vfloat & h /= (F2V(6.f) * C); vfloat onev = F2V(1.f); h = vself(vmaskf_lt(h, ZEROV), h + onev, h); - h = vself(vmaskf_gt(h, onev), h - onev, h); - vmask zeromask = vmaskf_lt(vabsf(C), F2V(0.65535f)); + vmask zeromask = vmaskf_lt(C, F2V(0.65535f)); h = vself(zeromask, ZEROV, h); s = vself(zeromask, ZEROV, s); } @@ -697,28 +658,6 @@ void Color::hsl2rgb (float h, float s, float l, float &r, float &g, float &b) } } -void Color::hsl2rgbfloat (float h, float s, float l, float &r, float &g, float &b) -{ - - if (s == 0.f) { - r = g = b = 65535.f * l; // achromatic - } else { - float m2; - - if (l <= 0.5f) { - m2 = l * (1.f + s); - } else { - m2 = l + s - l * s; - } - - float m1 = 2.f * l - m2; - - r = 65535.f * hue2rgbfloat (m1, m2, h * 6.f + 2.f); - g = 65535.f * hue2rgbfloat (m1, m2, h * 6.f); - b = 65535.f * hue2rgbfloat (m1, m2, h * 6.f - 2.f); - } -} - #ifdef __SSE2__ void Color::hsl2rgb (vfloat h, vfloat s, vfloat l, vfloat &r, vfloat &g, vfloat &b) { @@ -1783,6 +1722,71 @@ void Color::Lab2XYZ(vfloat L, vfloat a, vfloat b, vfloat &x, vfloat &y, vfloat & } #endif // __SSE2__ +void Color::RGB2Lab(float *R, float *G, float *B, float *L, float *a, float *b, const float wp[3][3], int width) +{ + +#if defined( __SSE2__ ) && defined( __x86_64__ ) + vfloat maxvalfv = F2V(MAXVALF); + vfloat c116v = F2V(116.f); + vfloat c5242d88v = F2V(5242.88f); + vfloat c500v = F2V(500.f); + vfloat c200v = F2V(200.f); +#endif + int i = 0; +#if defined( __SSE2__ ) && defined( __x86_64__ ) + for(;i < width - 3; i+=4) { + const vfloat rv = LVFU(R[i]); + const vfloat gv = LVFU(G[i]); + const vfloat bv = LVFU(B[i]); + const vfloat xv = F2V(wp[0][0]) * rv + F2V(wp[0][1]) * gv + F2V(wp[0][2]) * bv; + const vfloat yv = F2V(wp[1][0]) * rv + F2V(wp[1][1]) * gv + F2V(wp[1][2]) * bv; + const vfloat zv = F2V(wp[2][0]) * rv + F2V(wp[2][1]) * gv + F2V(wp[2][2]) * bv; + + vmask maxMask = vmaskf_gt(vmaxf(xv, vmaxf(yv, zv)), maxvalfv); + if (_mm_movemask_ps((vfloat)maxMask)) { + // take slower code path for all 4 pixels if one of the values is > MAXVALF. Still faster than non SSE2 version + for(int k = 0; k < 4; ++k) { + float x = xv[k]; + float y = yv[k]; + float z = zv[k]; + float fx = (x <= 65535.f ? cachef[x] : (327.68f * xcbrtf(x / MAXVALF))); + float fy = (y <= 65535.f ? cachef[y] : (327.68f * xcbrtf(y / MAXVALF))); + float fz = (z <= 65535.f ? cachef[z] : (327.68f * xcbrtf(z / MAXVALF))); + + L[i + k] = (116.f * fy - 5242.88f); //5242.88=16.0*327.68; + a[i + k] = (500.f * (fx - fy) ); + b[i + k] = (200.f * (fy - fz) ); + } + } else { + const vfloat fx = cachef[xv]; + const vfloat fy = cachef[yv]; + const vfloat fz = cachef[zv]; + + STVFU(L[i], c116v * fy - c5242d88v); //5242.88=16.0*327.68; + STVFU(a[i], c500v * (fx - fy)); + STVFU(b[i], c200v * (fy - fz)); + } + } +#endif + for(;i < width; ++i) { + const float rv = R[i]; + const float gv = G[i]; + const float bv = B[i]; + float x = wp[0][0] * rv + wp[0][1] * gv + wp[0][2] * bv; + float y = wp[1][0] * rv + wp[1][1] * gv + wp[1][2] * bv; + float z = wp[2][0] * rv + wp[2][1] * gv + wp[2][2] * bv; + float fx, fy, fz; + + fx = (x <= 65535.0f ? cachef[x] : (327.68f * xcbrtf(x / MAXVALF))); + fy = (y <= 65535.0f ? cachef[y] : (327.68f * xcbrtf(y / MAXVALF))); + fz = (z <= 65535.0f ? cachef[z] : (327.68f * xcbrtf(z / MAXVALF))); + + L[i] = 116.0f * fy - 5242.88f; //5242.88=16.0*327.68; + a[i] = 500.0f * (fx - fy); + b[i] = 200.0f * (fy - fz); + } +} + void Color::XYZ2Lab(float X, float Y, float Z, float &L, float &a, float &b) { diff --git a/rtengine/color.h b/rtengine/color.h index 59e189810..d56b30e52 100644 --- a/rtengine/color.h +++ b/rtengine/color.h @@ -205,7 +205,64 @@ public: * @param l luminance channel [0; 1] (return value) */ static void rgb2hsl (float r, float g, float b, float &h, float &s, float &l); - static void rgb2hslfloat (float r, float g, float b, float &h, float &s, float &l); + + static inline void rgb2slfloat(float r, float g, float b, float &s, float &l) + { + + float m = min(r, g, b); + float M = max(r, g, b); + float C = M - m; + + l = (M + m) * 7.6295109e-6f; // (0.5f / 65535.f) + + if (C < 0.65535f) { // 0.00001f * 65535.f + s = 0.f; + } else { + + if (l <= 0.5f) { + s = C / (M + m); + } else { + s = C / (131070.f - (M + m)); // 131070.f = 2.f * 65535.f + } + } + } + + static inline void rgb2hslfloat(float r, float g, float b, float &h, float &s, float &l) + { + + float m = min(r, g, b); + float M = max(r, g, b); + float C = M - m; + + l = (M + m) * 7.6295109e-6f; // (0.5f / 65535.f) + + if (C < 0.65535f) { // 0.00001f * 65535.f + h = 0.f; + s = 0.f; + } else { + + if (l <= 0.5f) { + s = C / (M + m); + } else { + s = C / (131070.f - (M + m)); // 131070.f = 2.f * 65535.f + } + + if ( r == M ) { + h = (g - b); + } else if ( g == M ) { + h = (2.f * C) + (b - r); + } else { + h = (4.f * C) + (r - g); + } + + h /= (6.f * C); + + if ( h < 0.f ) { + h += 1.f; + } + } + } + #ifdef __SSE2__ static void rgb2hsl (vfloat r, vfloat g, vfloat b, vfloat &h, vfloat &s, vfloat &l); #endif @@ -220,7 +277,29 @@ public: * @param b blue channel [0 ; 65535] (return value) */ static void hsl2rgb (float h, float s, float l, float &r, float &g, float &b); - static void hsl2rgbfloat (float h, float s, float l, float &r, float &g, float &b); + + static inline void hsl2rgbfloat (float h, float s, float l, float &r, float &g, float &b) + { + + if (s == 0.f) { + r = g = b = 65535.f * l; // achromatic + } else { + float m2; + + if (l <= 0.5f) { + m2 = l * (1.f + s); + } else { + m2 = l + s - l * s; + } + + float m1 = 2.f * l - m2; + + r = 65535.f * hue2rgbfloat (m1, m2, h * 6.f + 2.f); + g = 65535.f * hue2rgbfloat (m1, m2, h * 6.f); + b = 65535.f * hue2rgbfloat (m1, m2, h * 6.f - 2.f); + } + } + #ifdef __SSE2__ static void hsl2rgb (vfloat h, vfloat s, vfloat l, vfloat &r, vfloat &g, vfloat &b); #endif @@ -254,11 +333,7 @@ public: float var_Max = max(r, g, b); float del_Max = var_Max - var_Min; - if (del_Max < 0.00001f) { - return 0.f; - } else { - return del_Max / var_Max; - } + return del_Max / (var_Max == 0.f ? 1.f : var_Max); } static inline bool rgb2hsvdcp(float r, float g, float b, float &h, float &s, float &v) @@ -298,6 +373,30 @@ public: } } + static inline void rgb2hsvtc(float r, float g, float b, float &h, float &s, float &v) + { + const float var_Min = min(r, g, b); + const float var_Max = max(r, g, b); + const float del_Max = var_Max - var_Min; + + v = var_Max / 65535.f; + + if (del_Max < 0.00001f) { + h = 0.f; + s = 0.f; + } else { + s = del_Max / var_Max; + + if (r == var_Max) { + h = (g < b ? 6.f : 0.f) + (g - b) / del_Max; + } else if (g == var_Max) { + h = 2.f + (b - r) / del_Max; + } else { /*if ( b == var_Max ) */ + h = 4.f + (r - g) / del_Max; + } + } + } + /** * @brief Convert hue saturation value in red green blue * @param h hue channel [0 ; 1] @@ -312,14 +411,14 @@ public: static inline void hsv2rgbdcp (float h, float s, float v, float &r, float &g, float &b) { // special version for dcp which saves 1 division (in caller) and six multiplications (inside this function) - int sector = h; // sector 0 to 5, floor() is very slow, and h is always >0 - float f = h - sector; // fractional part of h + const int sector = h; // sector 0 to 5, floor() is very slow, and h is always > 0 + const float f = h - sector; // fractional part of h v *= 65535.f; - float vs = v * s; - float p = v - vs; - float q = v - f * vs; - float t = p + v - q; + const float vs = v * s; + const float p = v - vs; + const float q = v - f * vs; + const float t = p + v - q; switch (sector) { case 1: @@ -475,7 +574,7 @@ public: * @param b channel [-42000 ; +42000] ; can be more than 42000 (return value) */ static void XYZ2Lab(float x, float y, float z, float &L, float &a, float &b); - + static void RGB2Lab(float *X, float *Y, float *Z, float *L, float *a, float *b, const float wp[3][3], int width); /** * @brief Convert Lab in Yuv diff --git a/rtengine/colortemp.h b/rtengine/colortemp.h index d96e6f5ce..145c8ed20 100644 --- a/rtengine/colortemp.h +++ b/rtengine/colortemp.h @@ -21,6 +21,7 @@ #include #include +#include namespace rtengine { diff --git a/rtengine/curves.cc b/rtengine/curves.cc index db6c4c5f5..8d52782a2 100644 --- a/rtengine/curves.cc +++ b/rtengine/curves.cc @@ -1822,64 +1822,242 @@ float PerceptualToneCurve::calculateToneCurveContrastValue() const return maxslope; } -void PerceptualToneCurve::Apply(float &r, float &g, float &b, PerceptualToneCurveState & state) const +void PerceptualToneCurve::BatchApply(const size_t start, const size_t end, float *rc, float *gc, float *bc, const PerceptualToneCurveState &state) const { - float x, y, z; - - if (!state.isProphoto) { - // convert to prophoto space to make sure the same result is had regardless of working color space - float newr = state.Working2Prophoto[0][0] * r + state.Working2Prophoto[0][1] * g + state.Working2Prophoto[0][2] * b; - float newg = state.Working2Prophoto[1][0] * r + state.Working2Prophoto[1][1] * g + state.Working2Prophoto[1][2] * b; - float newb = state.Working2Prophoto[2][0] * r + state.Working2Prophoto[2][1] * g + state.Working2Prophoto[2][2] * b; - r = newr; - g = newg; - b = newb; - } - const AdobeToneCurve& adobeTC = static_cast((const ToneCurve&) * this); - float ar = r; - float ag = g; - float ab = b; - adobeTC.Apply(ar, ag, ab); - if (ar >= 65535.f && ag >= 65535.f && ab >= 65535.f) { - // clip fast path, will also avoid strange colors of clipped highlights - r = g = b = 65535.f; - return; - } + for (size_t i = start; i < end; ++i) { + float r = CLIP(rc[i]); + float g = CLIP(gc[i]); + float b = CLIP(bc[i]); - if (ar <= 0.f && ag <= 0.f && ab <= 0.f) { - r = g = b = 0; - return; - } + if (!state.isProphoto) { + // convert to prophoto space to make sure the same result is had regardless of working color space + float newr = state.Working2Prophoto[0][0] * r + state.Working2Prophoto[0][1] * g + state.Working2Prophoto[0][2] * b; + float newg = state.Working2Prophoto[1][0] * r + state.Working2Prophoto[1][1] * g + state.Working2Prophoto[1][2] * b; + float newb = state.Working2Prophoto[2][0] * r + state.Working2Prophoto[2][1] * g + state.Working2Prophoto[2][2] * b; + r = newr; + g = newg; + b = newb; + } - // ProPhoto constants for luminance, that is xyz_prophoto[1][] - const float Yr = 0.2880402f; - const float Yg = 0.7118741f; - const float Yb = 0.0000857f; + float ar = r; + float ag = g; + float ab = b; + adobeTC.Apply(ar, ag, ab); - // we use the Adobe (RGB-HSV hue-stabilized) curve to decide luminance, which generally leads to a less contrasty result - // compared to a pure luminance curve. We do this to be more compatible with the most popular curves. - float oldLuminance = r * Yr + g * Yg + b * Yb; - float newLuminance = ar * Yr + ag * Yg + ab * Yb; - float Lcoef = newLuminance / oldLuminance; - r = LIM(r * Lcoef, 0.f, 65535.f); - g = LIM(g * Lcoef, 0.f, 65535.f); - b = LIM(b * Lcoef, 0.f, 65535.f); + if (ar >= 65535.f && ag >= 65535.f && ab >= 65535.f) { + // clip fast path, will also avoid strange colours of clipped highlights + rc[i] = gc[i] = bc[i] = 65535.f; + continue; + } - // move to JCh so we can modulate chroma based on the global contrast-related chroma scaling factor - Color::Prophotoxyz(r, g, b, x, y, z); + if (ar <= 0.f && ag <= 0.f && ab <= 0.f) { + rc[i] = gc[i] = bc[i] = 0; + continue; + } - float J, C, h; - Ciecam02::xyz2jch_ciecam02float( J, C, h, - aw, fl, - x * 0.0015259022f, y * 0.0015259022f, z * 0.0015259022f, - xw, yw, zw, - c, nc, pow1, nbb, ncb, cz, d); + // ProPhoto constants for luminance, that is xyz_prophoto[1][] + constexpr float Yr = 0.2880402f; + constexpr float Yg = 0.7118741f; + constexpr float Yb = 0.0000857f; + + // we use the Adobe (RGB-HSV hue-stabilized) curve to decide luminance, which generally leads to a less contrasty result + // compared to a pure luminance curve. We do this to be more compatible with the most popular curves. + const float oldLuminance = r * Yr + g * Yg + b * Yb; + const float newLuminance = ar * Yr + ag * Yg + ab * Yb; + const float Lcoef = newLuminance / oldLuminance; + r = LIM(r * Lcoef, 0.f, 65535.f); + g = LIM(g * Lcoef, 0.f, 65535.f); + b = LIM(b * Lcoef, 0.f, 65535.f); + + // move to JCh so we can modulate chroma based on the global contrast-related chroma scaling factor + float x, y, z; + Color::Prophotoxyz(r, g, b, x, y, z); + + float J, C, h; + Ciecam02::xyz2jch_ciecam02float( J, C, h, + aw, fl, + x * 0.0015259022f, y * 0.0015259022f, z * 0.0015259022f, + xw, yw, zw, + c, nc, pow1, nbb, ncb, cz, d); - if (!isfinite(J) || !isfinite(C) || !isfinite(h)) { - // this can happen for dark noise colors or colors outside human gamut. Then we just return the curve's result. + if (!isfinite(J) || !isfinite(C) || !isfinite(h)) { + // this can happen for dark noise colours or colours outside human gamut. Then we just return the curve's result. + if (!state.isProphoto) { + float newr = state.Prophoto2Working[0][0] * r + state.Prophoto2Working[0][1] * g + state.Prophoto2Working[0][2] * b; + float newg = state.Prophoto2Working[1][0] * r + state.Prophoto2Working[1][1] * g + state.Prophoto2Working[1][2] * b; + float newb = state.Prophoto2Working[2][0] * r + state.Prophoto2Working[2][1] * g + state.Prophoto2Working[2][2] * b; + r = newr; + g = newg; + b = newb; + } + rc[i] = r; + gc[i] = g; + bc[i] = b; + + continue; + } + + float cmul = state.cmul_contrast; // chroma scaling factor + + // depending on color, the chroma scaling factor can be fine-tuned below + + { + // decrease chroma scaling sligthly of extremely saturated colors + float saturated_scale_factor = 0.95f; + constexpr float lolim = 35.f; // lower limit, below this chroma all colors will keep original chroma scaling factor + constexpr float hilim = 60.f; // high limit, above this chroma the chroma scaling factor is multiplied with the saturated scale factor value above + + if (C < lolim) { + // chroma is low enough, don't scale + saturated_scale_factor = 1.f; + } else if (C < hilim) { + // S-curve transition between low and high limit + float x = (C - lolim) / (hilim - lolim); // x = [0..1], 0 at lolim, 1 at hilim + + if (x < 0.5f) { + x = 2.f * SQR(x); + } else { + x = 1.f - 2.f * SQR(1 - x); + } + + saturated_scale_factor = (1.f - x) + saturated_scale_factor * x; + } else { + // do nothing, high saturation color, keep scale factor + } + + cmul *= saturated_scale_factor; + } + + { + // increase chroma scaling slightly of shadows + float nL = Color::gamma2curve[newLuminance]; // apply gamma so we make comparison and transition with a more perceptual lightness scale + float dark_scale_factor = 1.20f; + //float dark_scale_factor = 1.0 + state.debug.p2 / 100.0f; + constexpr float lolim = 0.15f; + constexpr float hilim = 0.50f; + + if (nL < lolim) { + // do nothing, keep scale factor + } else if (nL < hilim) { + // S-curve transition + float x = (nL - lolim) / (hilim - lolim); // x = [0..1], 0 at lolim, 1 at hilim + + if (x < 0.5f) { + x = 2.f * SQR(x); + } else { + x = 1.f - 2.f * SQR(1 - x); + } + + dark_scale_factor = dark_scale_factor * (1.0f - x) + x; + } else { + dark_scale_factor = 1.f; + } + + cmul *= dark_scale_factor; + } + + { + // to avoid strange CIECAM02 chroma errors on close-to-shadow-clipping colors we reduce chroma scaling towards 1.0 for black colors + float dark_scale_factor = 1.f / cmul; + constexpr float lolim = 4.f; + constexpr float hilim = 7.f; + + if (J < lolim) { + // do nothing, keep scale factor + } else if (J < hilim) { + // S-curve transition + float x = (J - lolim) / (hilim - lolim); + + if (x < 0.5f) { + x = 2.f * SQR(x); + } else { + x = 1.f - 2.f * SQR(1 - x); + } + + dark_scale_factor = dark_scale_factor * (1.f - x) + x; + } else { + dark_scale_factor = 1.f; + } + + cmul *= dark_scale_factor; + } + + C *= cmul; + + Ciecam02::jch2xyz_ciecam02float( x, y, z, + J, C, h, + xw, yw, zw, + c, nc, 1, pow1, nbb, ncb, fl, cz, d, aw ); + + if (!isfinite(x) || !isfinite(y) || !isfinite(z)) { + // can happen for colours on the rim of being outside gamut, that worked without chroma scaling but not with. Then we return only the curve's result. + if (!state.isProphoto) { + float newr = state.Prophoto2Working[0][0] * r + state.Prophoto2Working[0][1] * g + state.Prophoto2Working[0][2] * b; + float newg = state.Prophoto2Working[1][0] * r + state.Prophoto2Working[1][1] * g + state.Prophoto2Working[1][2] * b; + float newb = state.Prophoto2Working[2][0] * r + state.Prophoto2Working[2][1] * g + state.Prophoto2Working[2][2] * b; + r = newr; + g = newg; + b = newb; + } + + rc[i] = r; + gc[i] = g; + bc[i] = b; + + continue; + } + + Color::xyz2Prophoto(x, y, z, r, g, b); + r *= 655.35f; + g *= 655.35f; + b *= 655.35f; + r = LIM(r, 0.f, 65535.f); + g = LIM(g, 0.f, 65535.f); + b = LIM(b, 0.f, 65535.f); + + { + // limit saturation increase in rgb space to avoid severe clipping and flattening in extreme highlights + + // we use the RGB-HSV hue-stable "Adobe" curve as reference. For S-curve contrast it increases + // saturation greatly, but desaturates extreme highlights and thus provide a smooth transition to + // the white point. However the desaturation effect is quite strong so we make a weighting + const float as = Color::rgb2s(ar, ag, ab); + const float s = Color::rgb2s(r, g, b); + + const float sat_scale = as <= 0.f ? 1.f : s / as; // saturation scale compared to Adobe curve + float keep = 0.2f; + constexpr float lolim = 1.00f; // only mix in the Adobe curve if we have increased saturation compared to it + constexpr float hilim = 1.20f; + + if (sat_scale < lolim) { + // saturation is low enough, don't desaturate + keep = 1.f; + } else if (sat_scale < hilim) { + // S-curve transition + float x = (sat_scale - lolim) / (hilim - lolim); // x = [0..1], 0 at lolim, 1 at hilim + + if (x < 0.5f) { + x = 2.f * SQR(x); + } else { + x = 1.f - 2.f * SQR(1 - x); + } + + keep = (1.f - x) + keep * x; + } else { + // do nothing, very high increase, keep minimum amount + } + + if (keep < 1.f) { + // mix in some of the Adobe curve result + r = intp(keep, r, ar); + g = intp(keep, g, ag); + b = intp(keep, b, ab); + } + } + if (!state.isProphoto) { float newr = state.Prophoto2Working[0][0] * r + state.Prophoto2Working[0][1] * g + state.Prophoto2Working[0][2] * b; float newg = state.Prophoto2Working[1][0] * r + state.Prophoto2Working[1][1] * g + state.Prophoto2Working[1][2] * b; @@ -1888,175 +2066,11 @@ void PerceptualToneCurve::Apply(float &r, float &g, float &b, PerceptualToneCurv g = newg; b = newb; } - - return; - } - - float cmul = state.cmul_contrast; // chroma scaling factor - - // depending on color, the chroma scaling factor can be fine-tuned below - - { - // decrease chroma scaling sligthly of extremely saturated colors - float saturated_scale_factor = 0.95f; - const float lolim = 35.f; // lower limit, below this chroma all colors will keep original chroma scaling factor - const float hilim = 60.f; // high limit, above this chroma the chroma scaling factor is multiplied with the saturated scale factor value above - - if (C < lolim) { - // chroma is low enough, don't scale - saturated_scale_factor = 1.f; - } else if (C < hilim) { - // S-curve transition between low and high limit - float x = (C - lolim) / (hilim - lolim); // x = [0..1], 0 at lolim, 1 at hilim - - if (x < 0.5f) { - x = 2.f * SQR(x); - } else { - x = 1.f - 2.f * SQR(1 - x); - } - - saturated_scale_factor = (1.f - x) + saturated_scale_factor * x; - } else { - // do nothing, high saturation color, keep scale factor - } - - cmul *= saturated_scale_factor; - } - - { - // increase chroma scaling slightly of shadows - float nL = Color::gamma2curve[newLuminance]; // apply gamma so we make comparison and transition with a more perceptual lightness scale - float dark_scale_factor = 1.20f; - //float dark_scale_factor = 1.0 + state.debug.p2 / 100.0f; - const float lolim = 0.15f; - const float hilim = 0.50f; - - if (nL < lolim) { - // do nothing, keep scale factor - } else if (nL < hilim) { - // S-curve transition - float x = (nL - lolim) / (hilim - lolim); // x = [0..1], 0 at lolim, 1 at hilim - - if (x < 0.5f) { - x = 2.f * SQR(x); - } else { - x = 1.f - 2.f * SQR(1 - x); - } - - dark_scale_factor = dark_scale_factor * (1.0f - x) + x; - } else { - dark_scale_factor = 1.f; - } - - cmul *= dark_scale_factor; - } - - { - // to avoid strange CIECAM02 chroma errors on close-to-shadow-clipping colors we reduce chroma scaling towards 1.0 for black colors - float dark_scale_factor = 1.f / cmul; - const float lolim = 4.f; - const float hilim = 7.f; - - if (J < lolim) { - // do nothing, keep scale factor - } else if (J < hilim) { - // S-curve transition - float x = (J - lolim) / (hilim - lolim); - - if (x < 0.5f) { - x = 2.f * SQR(x); - } else { - x = 1.f - 2.f * SQR(1 - x); - } - - dark_scale_factor = dark_scale_factor * (1.f - x) + x; - } else { - dark_scale_factor = 1.f; - } - - cmul *= dark_scale_factor; - } - - C *= cmul; - - Ciecam02::jch2xyz_ciecam02float( x, y, z, - J, C, h, - xw, yw, zw, - c, nc, 1, pow1, nbb, ncb, fl, cz, d, aw ); - - if (!isfinite(x) || !isfinite(y) || !isfinite(z)) { - // can happen for colors on the rim of being outside gamut, that worked without chroma scaling but not with. Then we return only the curve's result. - if (!state.isProphoto) { - float newr = state.Prophoto2Working[0][0] * r + state.Prophoto2Working[0][1] * g + state.Prophoto2Working[0][2] * b; - float newg = state.Prophoto2Working[1][0] * r + state.Prophoto2Working[1][1] * g + state.Prophoto2Working[1][2] * b; - float newb = state.Prophoto2Working[2][0] * r + state.Prophoto2Working[2][1] * g + state.Prophoto2Working[2][2] * b; - r = newr; - g = newg; - b = newb; - } - - return; - } - - Color::xyz2Prophoto(x, y, z, r, g, b); - r *= 655.35f; - g *= 655.35f; - b *= 655.35f; - r = LIM(r, 0.f, 65535.f); - g = LIM(g, 0.f, 65535.f); - b = LIM(b, 0.f, 65535.f); - - { - // limit saturation increase in rgb space to avoid severe clipping and flattening in extreme highlights - - // we use the RGB-HSV hue-stable "Adobe" curve as reference. For S-curve contrast it increases - // saturation greatly, but desaturates extreme highlights and thus provide a smooth transition to - // the white point. However the desaturation effect is quite strong so we make a weighting - float ah, as, av, h, s, v; - Color::rgb2hsv(ar, ag, ab, ah, as, av); - Color::rgb2hsv(r, g, b, h, s, v); - - float sat_scale = as <= 0.f ? 1.f : s / as; // saturation scale compared to Adobe curve - float keep = 0.2f; - const float lolim = 1.00f; // only mix in the Adobe curve if we have increased saturation compared to it - const float hilim = 1.20f; - - if (sat_scale < lolim) { - // saturation is low enough, don't desaturate - keep = 1.f; - } else if (sat_scale < hilim) { - // S-curve transition - float x = (sat_scale - lolim) / (hilim - lolim); // x = [0..1], 0 at lolim, 1 at hilim - - if (x < 0.5f) { - x = 2.f * SQR(x); - } else { - x = 1.f - 2.f * SQR(1 - x); - } - - keep = (1.f - x) + keep * x; - } else { - // do nothing, very high increase, keep minimum amount - } - - if (keep < 1.f) { - // mix in some of the Adobe curve result - r = r * keep + (1.f - keep) * ar; - g = g * keep + (1.f - keep) * ag; - b = b * keep + (1.f - keep) * ab; - } - } - - if (!state.isProphoto) { - float newr = state.Prophoto2Working[0][0] * r + state.Prophoto2Working[0][1] * g + state.Prophoto2Working[0][2] * b; - float newg = state.Prophoto2Working[1][0] * r + state.Prophoto2Working[1][1] * g + state.Prophoto2Working[1][2] * b; - float newb = state.Prophoto2Working[2][0] * r + state.Prophoto2Working[2][1] * g + state.Prophoto2Working[2][2] * b; - r = newr; - g = newg; - b = newb; + rc[i] = r; + gc[i] = g; + bc[i] = b; } } - float PerceptualToneCurve::cf_range[2]; float PerceptualToneCurve::cf[1000]; float PerceptualToneCurve::f, PerceptualToneCurve::c, PerceptualToneCurve::nc, PerceptualToneCurve::yb, PerceptualToneCurve::la, PerceptualToneCurve::xw, PerceptualToneCurve::yw, PerceptualToneCurve::zw, PerceptualToneCurve::gamut; diff --git a/rtengine/curves.h b/rtengine/curves.h index c616c94da..6a37b7e46 100644 --- a/rtengine/curves.h +++ b/rtengine/curves.h @@ -800,6 +800,13 @@ class StandardToneCurve : public ToneCurve { public: void Apply(float& r, float& g, float& b) const; + + // Applies the tone curve to `r`, `g`, `b` arrays, starting at `r[start]` + // and ending at `r[end]` (and respectively for `b` and `g`). Uses SSE + // and requires that `r`, `g`, and `b` pointers have the same alignment. + void BatchApply( + const size_t start, const size_t end, + float *r, float *g, float *b) const; }; class AdobeToneCurve : public ToneCurve @@ -821,8 +828,12 @@ class WeightedStdToneCurve : public ToneCurve { private: float Triangle(float refX, float refY, float X2) const; +#if defined( __SSE2__ ) && defined( __x86_64__ ) + vfloat Triangle(vfloat refX, vfloat refY, vfloat X2) const; +#endif public: void Apply(float& r, float& g, float& b) const; + void BatchApply(const size_t start, const size_t end, float *r, float *g, float *b) const; }; class LuminanceToneCurve : public ToneCurve @@ -861,7 +872,7 @@ private: public: static void init(); void initApplyState(PerceptualToneCurveState & state, Glib::ustring workingSpace) const; - void Apply(float& r, float& g, float& b, PerceptualToneCurveState & state) const; + void BatchApply(const size_t start, const size_t end, float *r, float *g, float *b, const PerceptualToneCurveState &state) const; }; // Standard tone curve @@ -875,6 +886,55 @@ inline void StandardToneCurve::Apply (float& r, float& g, float& b) const b = lutToneCurve[b]; } +inline void StandardToneCurve::BatchApply( + const size_t start, const size_t end, + float *r, float *g, float *b) const { + assert (lutToneCurve); + assert (lutToneCurve.getClip() & LUT_CLIP_BELOW); + assert (lutToneCurve.getClip() & LUT_CLIP_ABOVE); + + // All pointers must have the same alignment for SSE usage. In the loop body below, + // we will only check `r`, assuming that the same result would hold for `g` and `b`. + assert (reinterpret_cast(r) % 16 == reinterpret_cast(g) % 16); + assert (reinterpret_cast(g) % 16 == reinterpret_cast(b) % 16); + + size_t i = start; + while (true) { + if (i >= end) { + // If we get to the end before getting to an aligned address, just return. + // (Or, for non-SSE mode, if we get to the end.) + return; +#if defined( __SSE2__ ) && defined( __x86_64__ ) + } else if (reinterpret_cast(&r[i]) % 16 == 0) { + // Otherwise, we get to the first aligned address; go to the SSE part. + break; +#endif + } + r[i] = lutToneCurve[r[i]]; + g[i] = lutToneCurve[g[i]]; + b[i] = lutToneCurve[b[i]]; + i++; + } + +#if defined( __SSE2__ ) && defined( __x86_64__ ) + for (; i + 3 < end; i += 4) { + __m128 r_val = LVF(r[i]); + __m128 g_val = LVF(g[i]); + __m128 b_val = LVF(b[i]); + STVF(r[i], lutToneCurve[r_val]); + STVF(g[i], lutToneCurve[g_val]); + STVF(b[i], lutToneCurve[b_val]); + } + + // Remainder in non-SSE. + for (; i < end; ++i) { + r[i] = lutToneCurve[r[i]]; + g[i] = lutToneCurve[g[i]]; + b[i] = lutToneCurve[b[i]]; + } +#endif +} + // Tone curve according to Adobe's reference implementation // values in 0xffff space // inlined to make sure there will be no cache flush when used @@ -947,6 +1007,17 @@ inline float WeightedStdToneCurve::Triangle(float a, float a1, float b) const return a1; } +#if defined( __SSE2__ ) && defined( __x86_64__ ) +inline vfloat WeightedStdToneCurve::Triangle(vfloat a, vfloat a1, vfloat b) const +{ + vfloat a2 = a1 - a; + vmask cmask = vmaskf_lt(b, a); + vfloat b3 = vself(cmask, b, F2V(65535.f) - b); + vfloat a3 = vself(cmask, a, F2V(65535.f) - a); + return b + a2 * b3 / a3; +} +#endif + // Tone curve modifying the value channel only, preserving hue and saturation // values in 0xffff space inline void WeightedStdToneCurve::Apply (float& r, float& g, float& b) const @@ -954,6 +1025,9 @@ inline void WeightedStdToneCurve::Apply (float& r, float& g, float& b) const assert (lutToneCurve); + r = CLIP(r); + g = CLIP(g); + b = CLIP(b); float r1 = lutToneCurve[r]; float g1 = Triangle(r, r1, g); float b1 = Triangle(r, r1, b); @@ -966,11 +1040,70 @@ inline void WeightedStdToneCurve::Apply (float& r, float& g, float& b) const float r3 = Triangle(b, b3, r); float g3 = Triangle(b, b3, g); - r = CLIP( r1 * 0.50f + r2 * 0.25f + r3 * 0.25f); + r = CLIP(r1 * 0.50f + r2 * 0.25f + r3 * 0.25f); g = CLIP(g1 * 0.25f + g2 * 0.50f + g3 * 0.25f); b = CLIP(b1 * 0.25f + b2 * 0.25f + b3 * 0.50f); } +inline void WeightedStdToneCurve::BatchApply(const size_t start, const size_t end, float *r, float *g, float *b) const { + assert (lutToneCurve); + assert (lutToneCurve.getClip() & LUT_CLIP_BELOW); + assert (lutToneCurve.getClip() & LUT_CLIP_ABOVE); + + // All pointers must have the same alignment for SSE usage. In the loop body below, + // we will only check `r`, assuming that the same result would hold for `g` and `b`. + assert (reinterpret_cast(r) % 16 == reinterpret_cast(g) % 16); + assert (reinterpret_cast(g) % 16 == reinterpret_cast(b) % 16); + + size_t i = start; + while (true) { + if (i >= end) { + // If we get to the end before getting to an aligned address, just return. + // (Or, for non-SSE mode, if we get to the end.) + return; +#if defined( __SSE2__ ) && defined( __x86_64__ ) + } else if (reinterpret_cast(&r[i]) % 16 == 0) { + // Otherwise, we get to the first aligned address; go to the SSE part. + break; +#endif + } + Apply(r[i], g[i], b[i]); + i++; + } + +#if defined( __SSE2__ ) && defined( __x86_64__ ) + const vfloat c65535v = F2V(65535.f); + const vfloat zd5v = F2V(0.5f); + const vfloat zd25v = F2V(0.25f); + + for (; i + 3 < end; i += 4) { + vfloat r_val = LIMV(LVF(r[i]), ZEROV, c65535v); + vfloat g_val = LIMV(LVF(g[i]), ZEROV, c65535v); + vfloat b_val = LIMV(LVF(b[i]), ZEROV, c65535v); + vfloat r1 = lutToneCurve[r_val]; + vfloat g1 = Triangle(r_val, r1, g_val); + vfloat b1 = Triangle(r_val, r1, b_val); + + vfloat g2 = lutToneCurve[g_val]; + vfloat r2 = Triangle(g_val, g2, r_val); + vfloat b2 = Triangle(g_val, g2, b_val); + + vfloat b3 = lutToneCurve[b_val]; + vfloat r3 = Triangle(b_val, b3, r_val); + vfloat g3 = Triangle(b_val, b3, g_val); + + STVF(r[i], LIMV(r1 * zd5v + r2 * zd25v + r3 * zd25v, ZEROV, c65535v)); + STVF(g[i], LIMV(g1 * zd25v + g2 * zd5v + g3 * zd25v, ZEROV, c65535v)); + STVF(b[i], LIMV(b1 * zd25v + b2 * zd25v + b3 * zd5v, ZEROV, c65535v)); + } + + // Remainder in non-SSE. + for (; i < end; ++i) { + Apply(r[i], g[i], b[i]); + } +#endif +} + // Tone curve modifying the value channel only, preserving hue and saturation // values in 0xffff space inline void SatAndValueBlendingToneCurve::Apply (float& r, float& g, float& b) const @@ -978,29 +1111,32 @@ inline void SatAndValueBlendingToneCurve::Apply (float& r, float& g, float& b) c assert (lutToneCurve); - float h, s, v; - float lum = (r + g + b) / 3.f; - //float lum = Color::rgbLuminance(r, g, b); - float newLum = lutToneCurve[lum]; + r = CLIP(r); + g = CLIP(g); + b = CLIP(b); + + const float lum = (r + g + b) / 3.f; + const float newLum = lutToneCurve[lum]; if (newLum == lum) { return; } - Color::rgb2hsv(r, g, b, h, s, v); + float h, s, v; + Color::rgb2hsvtc(r, g, b, h, s, v); float dV; if (newLum > lum) { // Linearly targeting Value = 1 and Saturation = 0 - float coef = (newLum - lum) / (65535.f - lum); + const float coef = (newLum - lum) / (65535.f - lum); dV = (1.f - v) * coef; s *= 1.f - coef; } else { // Linearly targeting Value = 0 - float coef = (newLum - lum) / lum ; + const float coef = (newLum - lum) / lum ; dV = v * coef; } - Color::hsv2rgb(h, s, v + dV, r, g, b); + Color::hsv2rgbdcp(h, s, v + dV, r, g, b); } } diff --git a/rtengine/dcp.cc b/rtengine/dcp.cc index f9cdd1c73..82ea35f0f 100644 --- a/rtengine/dcp.cc +++ b/rtengine/dcp.cc @@ -1074,7 +1074,7 @@ void DCPProfile::apply( float s; float v; - if(Color::rgb2hsvdcp(newr, newg, newb, h , s, v)) { + if (LIKELY(Color::rgb2hsvdcp(newr, newg, newb, h , s, v))) { hsdApply(delta_info, delta_base, h, s, v); diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 9ae313530..4786000bb 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -2349,6 +2349,37 @@ void CLASS unpacked_load_raw() && (unsigned) (col-left_margin) < width) derror(); } + +// RT +void CLASS sony_arq_load_raw() +{ + static unsigned frame2pos[] = { 0, 1, 3, 2 }; + int row, col, bits=0; + ushort samples[4]; + unsigned frame = frame2pos[shot_select]; + + while (1 << ++bits < maximum); + for (row=0; row < ((frame < 2) ? 1 : raw_height); row++) { + for (col=0; col < ((row == 0) ? raw_width : 1); col++) { + RAW(row,col) = 0; + } + } + for (row=0; row < raw_height; row++) { + int r = row + (frame & 1); + for (col=0; col < raw_width; col++) { + int c = col + ((frame >> 1) & 1); + read_shorts(samples, 4); + if (r < raw_height && c < raw_width) { + RAW(r,c) = samples[(2 * (r & 1)) + (c & 1)]; + if ((RAW(r,c) >>= load_flags) >> bits + && (unsigned) (row-top_margin) < height + && (unsigned) (col-left_margin) < width) derror(); + } + } + } +} + + void CLASS sinar_4shot_load_raw() { ushort *pixel; @@ -3820,7 +3851,7 @@ float CLASS foveon_avg (short *pix, int range[2], float cfilt) short * CLASS foveon_make_curve (double max, double mul, double filt) { short *curve; - unsigned i, size; + size_t i, size; double x; if (!filt) filt = 0.8; @@ -5466,7 +5497,8 @@ nf: order = 0x4949; for (c=i=2; (ushort) c != 0xbbbb && i < len; i++) c = c << 8 | fgetc(ifp); while ((i+=4) < len-5) - if (get4() == 257 && (i=len) && (c = (get4(),fgetc(ifp))) < 3) + if (get4() == 257 && (i=len) && (c = (get4(),fgetc(ifp))) < 3 && strcmp(make,"Canon")) + // don't use this tag for Canon cameras as it's known to give wrong orientation some times flip = "065"[c]-'0'; } if (tag == 0x10 && type == 4) @@ -6524,6 +6556,17 @@ void CLASS apply_tiff() if (!strncmp(make,"OLYMPUS",7) && tiff_ifd[raw].bytes*7 > raw_width*raw_height) load_raw = &CLASS olympus_load_raw; + // ------- RT ------- + if (!strncmp(make,"SONY",4) && + !strncmp(model,"ILCE-7RM3",9) && + tiff_samples == 4 && + tiff_ifd[raw].bytes == raw_width*raw_height*tiff_samples*2) { + load_raw = &CLASS sony_arq_load_raw; + colors = 3; + is_raw = 4; + filters = 0x94949494; + } + // ------------------ } break; case 6: case 7: case 99: diff --git a/rtengine/dcraw.h b/rtengine/dcraw.h index 0a10f9732..5a2790801 100644 --- a/rtengine/dcraw.h +++ b/rtengine/dcraw.h @@ -409,6 +409,7 @@ sony_decrypt_t sony_decrypt; void sony_load_raw(); void sony_arw_load_raw(); void sony_arw2_load_raw(); +void sony_arq_load_raw(); // RT void smal_decode_segment (unsigned seg[2][2], int holes); void smal_v6_load_raw(); diff --git a/rtengine/demosaic_algos.cc b/rtengine/demosaic_algos.cc index d83b90cef..68b2ad8bb 100644 --- a/rtengine/demosaic_algos.cc +++ b/rtengine/demosaic_algos.cc @@ -37,7 +37,6 @@ #include "sleef.c" #include "opthelper.h" #include "median.h" -//#define BENCHMARK #include "StopWatch.h" #ifdef _OPENMP #include @@ -4213,7 +4212,7 @@ void RawImageSource::rcd_demosaic() } } - border_interpolate2(width, height, 4); + border_interpolate2(width, height, 8); if (plistener) { plistener->setProgress(1); diff --git a/rtengine/histmatching.cc b/rtengine/histmatching.cc new file mode 100644 index 000000000..4216c4581 --- /dev/null +++ b/rtengine/histmatching.cc @@ -0,0 +1,251 @@ +/* -*- C++ -*- + * + * This file is part of RawTherapee. + * + * Copyright (c) 2018 Alberto Griggio + * + * RawTherapee is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RawTherapee is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RawTherapee. If not, see . + */ + +#include "rawimagesource.h" +#include "rtthumbnail.h" +#include "curves.h" +#include "color.h" +#include "rt_math.h" +#include "iccstore.h" +#include "../rtgui/mydiagonalcurve.h" +#include "improcfun.h" +#include "StopWatch.h" +#include +#include + + +namespace rtengine { + +extern const Settings *settings; + +namespace { + +std::vector getCdf(const IImage8 &img) +{ + std::vector ret(256); + for (int y = 0; y < img.getHeight(); ++y) { + for (int x = 0; x < img.getWidth(); ++x) { + int lum = LIM(0, int(Color::rgbLuminance(float(img.r(y, x)), float(img.g(y, x)), float(img.b(y, x)))), 255); + ++ret[lum]; + } + } + + int sum = 0; + for (size_t i = 0; i < ret.size(); ++i) { + sum += ret[i]; + ret[i] = sum; + } + + return ret; +} + + +int findMatch(int val, const std::vector &cdf, int j) +{ + if (cdf[j] <= val) { + for (; j < int(cdf.size()); ++j) { + if (cdf[j] == val) { + return j; + } else if (cdf[j] > val) { + return (cdf[j] - val <= val - cdf[j-1] ? j : j-1); + } + } + return 255; + } else { + for (; j >= 0; --j) { + if (cdf[j] == val) { + return j; + } else if (cdf[j] < val) { + return (val - cdf[j] <= cdf[j+1] - val ? j : j+1); + } + } + return 0; + } +} + + +void mappingToCurve(const std::vector &mapping, std::vector &curve) +{ + curve.clear(); + + const int npoints = 8; + int idx = 1; + for (; idx < int(mapping.size()); ++idx) { + if (mapping[idx] >= idx) { + break; + } + } + int step = max(int(mapping.size())/npoints, 1); + + auto coord = [](int v) -> double { return double(v)/255.0; }; + auto doit = + [&](int start, int stop, int step, bool addstart) -> void + { + int prev = start; + if (addstart) { + curve.push_back(coord(start)); + curve.push_back(coord(mapping[start])); + } + for (int i = start; i < stop; ++i) { + int v = mapping[i]; + bool change = i > 0 && v != mapping[i-1]; + int diff = i - prev; + if ((change && std::abs(diff - step) <= 1) || diff > step * 2) { + curve.push_back(coord(i)); + curve.push_back(coord(v)); + prev = i; + } + } + }; + doit(0, idx, idx > step ? step : idx / 2, true); + doit(idx, int(mapping.size()), step, idx - step > step / 2); + if (curve.size() > 2 && (1 - curve[curve.size()-2] <= step / (256.0 * 3))) { + curve.pop_back(); + curve.pop_back(); + } + curve.push_back(1.0); + curve.push_back(1.0); + + if (curve.size() < 4) { + curve = { DCT_Linear }; // not enough points, fall back to linear + } else { + curve.insert(curve.begin(), DCT_Spline); + } +} + +} // namespace + + +void RawImageSource::getAutoMatchedToneCurve(std::vector &outCurve) +{ + BENCHFUN + + if (settings->verbose) { + std::cout << "performing histogram matching for " << getFileName() << " on the embedded thumbnail" << std::endl; + } + + if (!histMatchingCache.empty()) { + if (settings->verbose) { + std::cout << "tone curve found in cache" << std::endl; + outCurve = histMatchingCache; + return; + } + } + + outCurve = { DCT_Linear }; + + int fw, fh; + getFullSize(fw, fh, TR_NONE); + int skip = 10; + + if (settings->verbose) { + std::cout << "histogram matching: full raw image size is " << fw << "x" << fh << std::endl; + } + + ProcParams neutral; + + std::unique_ptr source; + { + RawMetaDataLocation rml; + eSensorType sensor_type; + int w, h; + std::unique_ptr thumb(Thumbnail::loadQuickFromRaw(getFileName(), rml, sensor_type, w, h, 1, false, true)); + if (!thumb) { + if (settings->verbose) { + std::cout << "histogram matching: no thumbnail found, generating a neutral curve" << std::endl; + } + histMatchingCache = outCurve; + return; + } + source.reset(thumb->quickProcessImage(neutral, fh / skip, TI_Nearest)); + + if (settings->verbose) { + std::cout << "histogram matching: extracted embedded thumbnail" << std::endl; + } + } + + std::unique_ptr target; + { + int tw = source->getWidth(), th = source->getHeight(); + float thumb_ratio = float(std::max(tw, th)) / float(std::min(tw, th)); + float target_ratio = float(std::max(fw, fh)) / float(std::min(fw, fh)); + int cx = 0, cy = 0; + if (std::abs(thumb_ratio - target_ratio) > 0.01) { + if (thumb_ratio > target_ratio) { + // crop the height + int ch = fh - (fw * float(th) / float(tw)); + cy += ch / 2; + fh -= ch; + } else { + // crop the width + int cw = fw - (fh * float(tw) / float(th)); + cx += cw / 2; + fw -= cw; + } + if (settings->verbose) { + std::cout << "histogram matching: cropping target to get an aspect ratio of " << std::fixed << std::setprecision(2) << thumb_ratio << ":1, new full size is " << fw << "x" << fh << std::endl; + } + } + PreviewProps pp(cx, cy, fw, fh, skip); + ColorTemp currWB = getWB(); + std::unique_ptr image(new Imagefloat(int(fw / skip), int(fh / skip))); + getImage(currWB, TR_NONE, image.get(), pp, neutral.toneCurve, neutral.raw); + + // this could probably be made faster -- ideally we would need to just + // perform the transformation from camera space to the output space + // (taking gamma into account), but I couldn't find anything + // ready-made, so for now this will do. Remember the famous quote: + // "premature optimization is the root of all evil" :-) + convertColorSpace(image.get(), neutral.icm, currWB); + ImProcFunctions ipf(&neutral); + LabImage tmplab(image->getWidth(), image->getHeight()); + ipf.rgb2lab(*image, tmplab, neutral.icm.working); + image.reset(ipf.lab2rgbOut(&tmplab, 0, 0, tmplab.W, tmplab.H, neutral.icm)); + target.reset(image->to8()); + + if (settings->verbose) { + std::cout << "histogram matching: generated neutral rendering" << std::endl; + } + } + if (target->getWidth() != source->getWidth() || target->getHeight() != source->getHeight()) { + Image8 *tmp = new Image8(source->getWidth(), source->getHeight()); + target->resizeImgTo(source->getWidth(), source->getHeight(), TI_Nearest, tmp); + target.reset(tmp); + } + std::vector scdf = getCdf(*source); + std::vector tcdf = getCdf(*target); + + std::vector mapping; + int j = 0; + for (size_t i = 0; i < tcdf.size(); ++i) { + j = findMatch(tcdf[i], scdf, j); + mapping.push_back(j); + } + + mappingToCurve(mapping, outCurve); + + if (settings->verbose) { + std::cout << "histogram matching: generated curve with " << outCurve.size()/2 << " control points" << std::endl; + } + + histMatchingCache = outCurve; +} + +} // namespace rtengine diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 891fb1600..81d0583ac 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -574,6 +574,7 @@ public: void setDefaultMonitorProfileName(const Glib::ustring &name) { + MyMutex::MyLock lock(mutex); defaultMonitorProfile = name; } diff --git a/rtengine/image16.cc b/rtengine/image16.cc index f76aa6ca2..e4b7014b6 100644 --- a/rtengine/image16.cc +++ b/rtengine/image16.cc @@ -151,17 +151,22 @@ void Image16::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, const P { // compute channel multipliers - double drm, dgm, dbm; - ctemp.getMultipliers (drm, dgm, dbm); - float rm = drm, gm = dgm, bm = dbm; + float rm = 1.f, gm = 1.f, bm = 1.f; + if (ctemp.getTemp() >= 0) { + double drm, dgm, dbm; + ctemp.getMultipliers (drm, dgm, dbm); + rm = drm; + gm = dgm; + bm = dbm; - rm = 1.0 / rm; - gm = 1.0 / gm; - bm = 1.0 / bm; - float mul_lum = 0.299 * rm + 0.587 * gm + 0.114 * bm; - rm /= mul_lum; - gm /= mul_lum; - bm /= mul_lum; + rm = 1.0 / rm; + gm = 1.0 / gm; + bm = 1.0 / bm; + float mul_lum = 0.299 * rm + 0.587 * gm + 0.114 * bm; + rm /= mul_lum; + gm /= mul_lum; + bm /= mul_lum; + } int sx1, sy1, sx2, sy2; @@ -339,50 +344,50 @@ Image16::tofloat() return imgfloat; } -// Parallized transformation; create transform with cmsFLAGS_NOCACHE! -void Image16::ExecCMSTransform(cmsHTRANSFORM hTransform, const LabImage &labImage, int cx, int cy) -{ - // LittleCMS cannot parallelize planar Lab float images - // so build temporary buffers to allow multi processor execution -#ifdef _OPENMP - #pragma omp parallel -#endif - { - AlignedBuffer bufferLab(width * 3); - AlignedBuffer bufferRGB(width * 3); +// // Parallized transformation; create transform with cmsFLAGS_NOCACHE! +// void Image16::ExecCMSTransform(cmsHTRANSFORM hTransform, const LabImage &labImage, int cx, int cy) +// { +// // LittleCMS cannot parallelize planar Lab float images +// // so build temporary buffers to allow multi processor execution +// #ifdef _OPENMP +// #pragma omp parallel +// #endif +// { +// AlignedBuffer bufferLab(width * 3); +// AlignedBuffer bufferRGB(width * 3); -#ifdef _OPENMP - #pragma omp for schedule(static) -#endif +// #ifdef _OPENMP +// #pragma omp for schedule(static) +// #endif - for (int y = cy; y < cy + height; y++) - { - unsigned short *pRGB, *pR, *pG, *pB; - float *pLab, *pL, *pa, *pb; +// for (int y = cy; y < cy + height; y++) +// { +// unsigned short *pRGB, *pR, *pG, *pB; +// float *pLab, *pL, *pa, *pb; - pLab= bufferLab.data; - pL = labImage.L[y] + cx; - pa = labImage.a[y] + cx; - pb = labImage.b[y] + cx; +// pLab= bufferLab.data; +// pL = labImage.L[y] + cx; +// pa = labImage.a[y] + cx; +// pb = labImage.b[y] + cx; - for (int x = 0; x < width; x++) { - *(pLab++) = *(pL++) / 327.68f; - *(pLab++) = *(pa++) / 327.68f; - *(pLab++) = *(pb++) / 327.68f; - } +// for (int x = 0; x < width; x++) { +// *(pLab++) = *(pL++) / 327.68f; +// *(pLab++) = *(pa++) / 327.68f; +// *(pLab++) = *(pb++) / 327.68f; +// } - cmsDoTransform (hTransform, bufferLab.data, bufferRGB.data, width); +// cmsDoTransform (hTransform, bufferLab.data, bufferRGB.data, width); - pRGB = bufferRGB.data; - pR = r(y - cy); - pG = g(y - cy); - pB = b(y - cy); +// pRGB = bufferRGB.data; +// pR = r(y - cy); +// pG = g(y - cy); +// pB = b(y - cy); - for (int x = 0; x < width; x++) { - *(pR++) = *(pRGB++); - *(pG++) = *(pRGB++); - *(pB++) = *(pRGB++); - } - } // End of parallelization - } -} +// for (int x = 0; x < width; x++) { +// *(pR++) = *(pRGB++); +// *(pG++) = *(pRGB++); +// *(pB++) = *(pRGB++); +// } +// } // End of parallelization +// } +// } diff --git a/rtengine/image16.h b/rtengine/image16.h index 861a5d8fc..3537051d2 100644 --- a/rtengine/image16.h +++ b/rtengine/image16.h @@ -97,7 +97,7 @@ public: delete this; } - void ExecCMSTransform(cmsHTRANSFORM hTransform, const LabImage &labImage, int cx, int cy); + /* void ExecCMSTransform(cmsHTRANSFORM hTransform, const LabImage &labImage, int cx, int cy); */ }; } diff --git a/rtengine/image8.cc b/rtengine/image8.cc index dd895ee66..16169e86f 100644 --- a/rtengine/image8.cc +++ b/rtengine/image8.cc @@ -97,17 +97,22 @@ Image8* Image8::copy () void Image8::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, const PreviewProps & pp, bool first, procparams::ToneCurveParams hrp) { // compute channel multipliers - double drm, dgm, dbm; - ctemp.getMultipliers (drm, dgm, dbm); - float rm = drm, gm = dgm, bm = dbm; + float rm = 1.f, gm = 1.f, bm = 1.f; + if (ctemp.getTemp() >= 0) { + double drm, dgm, dbm; + ctemp.getMultipliers (drm, dgm, dbm); + rm = drm; + gm = dgm; + bm = dbm; - rm = 1.0 / rm; - gm = 1.0 / gm; - bm = 1.0 / bm; - float mul_lum = 0.299 * rm + 0.587 * gm + 0.114 * bm; - rm /= mul_lum; - gm /= mul_lum; - bm /= mul_lum; + rm = 1.0 / rm; + gm = 1.0 / gm; + bm = 1.0 / bm; + float mul_lum = 0.299 * rm + 0.587 * gm + 0.114 * bm; + rm /= mul_lum; + gm /= mul_lum; + bm /= mul_lum; + } int sx1, sy1, sx2, sy2; diff --git a/rtengine/imagedata.cc b/rtengine/imagedata.cc index 47688fca6..5fb1e98f6 100644 --- a/rtengine/imagedata.cc +++ b/rtengine/imagedata.cc @@ -473,15 +473,15 @@ FrameData::FrameData (rtexif::TagDirectory* frameRootDir_, rtexif::TagDirectory* // ----------------------- Special file type detection (HDR, PixelShift) ------------------------ - uint16 bitspersample = 0, sampleformat = 0, photometric = 0, compression = 0; - rtexif::Tag* bps = frameRootDir->findTag("BitsPerSample"); - rtexif::Tag* spp = frameRootDir->findTag("SamplesPerPixel"); - rtexif::Tag* sf = frameRootDir->findTag("SampleFormat"); - rtexif::Tag* pi = frameRootDir->findTag("PhotometricInterpretation"); - rtexif::Tag* c = frameRootDir->findTag("Compression"); + uint16 bitspersample = 0, samplesperpixel = 0, sampleformat = 0, photometric = 0, compression = 0; + const rtexif::Tag* const bps = frameRootDir->findTag("BitsPerSample"); + const rtexif::Tag* const spp = frameRootDir->findTag("SamplesPerPixel"); + const rtexif::Tag* const sf = frameRootDir->findTag("SampleFormat"); + const rtexif::Tag* const pi = frameRootDir->findTag("PhotometricInterpretation"); + const rtexif::Tag* const c = frameRootDir->findTag("Compression"); if (mnote && (!make.compare (0, 6, "PENTAX") || (!make.compare (0, 5, "RICOH") && !model.compare (0, 6, "PENTAX")))) { - rtexif::Tag* hdr = mnote->findTag("HDR"); + const rtexif::Tag* const hdr = mnote->findTag("HDR"); if (hdr) { if (hdr->toInt() > 0 && hdr->toInt(2) > 0) { isHDR = true; @@ -490,7 +490,7 @@ FrameData::FrameData (rtexif::TagDirectory* frameRootDir_, rtexif::TagDirectory* #endif } } else { - rtexif::Tag* dm = mnote->findTag("DriveMode"); + const rtexif::Tag* const dm = mnote->findTag("DriveMode"); if (dm) { char buffer[60]; dm->toString(buffer, 3); @@ -505,7 +505,7 @@ FrameData::FrameData (rtexif::TagDirectory* frameRootDir_, rtexif::TagDirectory* } if (!isHDR) { - rtexif::Tag* q = mnote->findTag("Quality"); + const rtexif::Tag* const q = mnote->findTag("Quality"); if (q && q->toInt() == 7) { isPixelShift = true; #if PRINT_HDR_PS_DETECTION @@ -530,11 +530,16 @@ FrameData::FrameData (rtexif::TagDirectory* frameRootDir_, rtexif::TagDirectory* sampleformat = sf->toInt(); } - if ((!bps & !spp) || !pi) { + if ( + !bps + || !spp + || !pi + ) { return; } bitspersample = bps->toInt(); + samplesperpixel = spp->toInt(); photometric = pi->toInt(); if (photometric == PHOTOMETRIC_LOGLUV) { @@ -582,6 +587,26 @@ FrameData::FrameData (rtexif::TagDirectory* frameRootDir_, rtexif::TagDirectory* sampleFormat = IIOSF_UNSIGNED_SHORT; } } + } else if (photometric == 34892 || photometric == 32892 /* Linear RAW (see DNG spec ; 32892 seem to be a flaw from Sony's ARQ files) */) { + if (sampleformat == SAMPLEFORMAT_IEEEFP) { + sampleFormat = IIOSF_FLOAT; + isHDR = true; +#if PRINT_HDR_PS_DETECTION + printf("HDR detected ! -> sampleFormat = %d\n", sampleFormat); +#endif + } else if (sampleformat == SAMPLEFORMAT_INT || sampleformat == SAMPLEFORMAT_UINT) { + if (bitspersample == 8) { // shouldn't occur... + sampleFormat = IIOSF_UNSIGNED_CHAR; + } else if (bitspersample <= 16) { + sampleFormat = IIOSF_UNSIGNED_SHORT; + if (mnote && (!make.compare (0, 4, "SONY")) && bitspersample >= 12 && samplesperpixel == 4) { + isPixelShift = true; +#if PRINT_HDR_PS_DETECTION + printf("PixelShift detected ! -> \"Make\" = SONY, bitsPerPixel > 8, samplesPerPixel == 4\n"); +#endif + } + } + } } else if (photometric == PHOTOMETRIC_LOGLUV) { if (compression == COMPRESSION_SGILOG24) { sampleFormat = IIOSF_LOGLUV24; @@ -764,7 +789,7 @@ FrameData *FramesData::getFrameData (unsigned int frame) const bool FramesData::getPixelShift (unsigned int frame) const { - // So far only Pentax provide multi-frame HDR file. + // So far only Pentax and Sony provide multi-frame HDR file. // Only the first frame contains the HDR tag // If more brand have to be supported, this rule may need // to evolve @@ -813,8 +838,6 @@ rtexif::TagDirectory* FramesData::getBestExifData (ImageSource *imgSource, procp */ } - frames[imgNum]->getExifData (); - td = getFrameExifData (imgNum); rtexif::Tag* makeTag; if (td && (makeTag = td->findTag("Make", true))) { diff --git a/rtengine/imagefloat.cc b/rtengine/imagefloat.cc index 347f97c67..0951d06eb 100644 --- a/rtengine/imagefloat.cc +++ b/rtengine/imagefloat.cc @@ -154,10 +154,24 @@ void Imagefloat::getScanline (int row, unsigned char* buffer, int bps) int ix = 0; float* sbuffer = (float*) buffer; + // agriggio -- assume the image is normalized to [0, 65535] for (int i = 0; i < width; i++) { - sbuffer[ix++] = r(row, i); - sbuffer[ix++] = g(row, i); - sbuffer[ix++] = b(row, i); + sbuffer[ix++] = r(row, i) / 65535.f; + sbuffer[ix++] = g(row, i) / 65535.f; + sbuffer[ix++] = b(row, i) / 65535.f; + } + } else if (bps == 16) { + unsigned short *sbuffer = (unsigned short *)buffer; + for (int i = 0, ix = 0; i < width; i++) { + sbuffer[ix++] = CLIP(r(row, i)); + sbuffer[ix++] = CLIP(g(row, i)); + sbuffer[ix++] = CLIP(b(row, i)); + } + } else if (bps == 8) { + for (int i = 0, ix = 0; i < width; i++) { + buffer[ix++] = rtengine::uint16ToUint8Rounded(CLIP(r(row, i))); + buffer[ix++] = rtengine::uint16ToUint8Rounded(CLIP(g(row, i))); + buffer[ix++] = rtengine::uint16ToUint8Rounded(CLIP(b(row, i))); } } } @@ -189,17 +203,22 @@ void Imagefloat::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, cons { // compute channel multipliers - double drm, dgm, dbm; - ctemp.getMultipliers (drm, dgm, dbm); - float rm = drm, gm = dgm, bm = dbm; + float rm = 1.f, gm = 1.f, bm = 1.f; + if (ctemp.getTemp() >= 0) { + double drm, dgm, dbm; + ctemp.getMultipliers (drm, dgm, dbm); + rm = drm; + gm = dgm; + bm = dbm; - rm = 1.0 / rm; - gm = 1.0 / gm; - bm = 1.0 / bm; - float mul_lum = 0.299 * rm + 0.587 * gm + 0.114 * bm; - rm /= mul_lum; - gm /= mul_lum; - bm /= mul_lum; + rm = 1.0 / rm; + gm = 1.0 / gm; + bm = 1.0 / bm; + float mul_lum = 0.299 * rm + 0.587 * gm + 0.114 * bm; + rm /= mul_lum; + gm /= mul_lum; + bm /= mul_lum; + } int sx1, sy1, sx2, sy2; @@ -525,3 +544,51 @@ void Imagefloat::ExecCMSTransform(cmsHTRANSFORM hTransform) } // End of parallelization } } + +// Parallized transformation; create transform with cmsFLAGS_NOCACHE! +void Imagefloat::ExecCMSTransform(cmsHTRANSFORM hTransform, const LabImage &labImage, int cx, int cy) +{ + // LittleCMS cannot parallelize planar Lab float images + // so build temporary buffers to allow multi processor execution +#ifdef _OPENMP + #pragma omp parallel +#endif + { + AlignedBuffer bufferLab(width * 3); + AlignedBuffer bufferRGB(width * 3); + +#ifdef _OPENMP + #pragma omp for schedule(static) +#endif + + for (int y = cy; y < cy + height; y++) + { + float *pRGB, *pR, *pG, *pB; + float *pLab, *pL, *pa, *pb; + + pLab= bufferLab.data; + pL = labImage.L[y] + cx; + pa = labImage.a[y] + cx; + pb = labImage.b[y] + cx; + + for (int x = 0; x < width; x++) { + *(pLab++) = *(pL++) / 327.68f; + *(pLab++) = *(pa++) / 327.68f; + *(pLab++) = *(pb++) / 327.68f; + } + + cmsDoTransform (hTransform, bufferLab.data, bufferRGB.data, width); + + pRGB = bufferRGB.data; + pR = r(y - cy); + pG = g(y - cy); + pB = b(y - cy); + + for (int x = 0; x < width; x++) { + *(pR++) = *(pRGB++); + *(pG++) = *(pRGB++); + *(pB++) = *(pRGB++); + } + } // End of parallelization + } +} diff --git a/rtengine/imagefloat.h b/rtengine/imagefloat.h index 3c60d10f4..d63e09e85 100644 --- a/rtengine/imagefloat.h +++ b/rtengine/imagefloat.h @@ -107,6 +107,7 @@ public: void calcCroppedHistogram(const ProcParams ¶ms, float scale, LUTu & hist); void ExecCMSTransform(cmsHTRANSFORM hTransform); + void ExecCMSTransform(cmsHTRANSFORM hTransform, const LabImage &labImage, int cx, int cy); }; } diff --git a/rtengine/imageio.cc b/rtengine/imageio.cc index ff9c9b559..0e404fa91 100644 --- a/rtengine/imageio.cc +++ b/rtengine/imageio.cc @@ -75,15 +75,6 @@ FILE* g_fopen_withBinaryAndLock(const Glib::ustring& fname) return f; } -Glib::ustring to_utf8 (const std::string& str) -{ - try { - return Glib::locale_to_utf8 (str); - } catch (Glib::Error&) { - return Glib::convert_with_fallback (str, "UTF-8", "ISO-8859-1", "?"); - } -} - } Glib::ustring ImageIO::errorMsg[6] = {"Success", "Cannot read file.", "Invalid header.", "Error while reading header.", "File reading error", "Image format not supported."}; @@ -136,13 +127,19 @@ void ImageIO::setMetadata (const rtexif::TagDirectory* eroot, const rtengine::pr iptc = iptc_data_new (); + const unsigned char utf8Esc[] = {0x1B, '%', 'G'}; + IptcDataSet * ds = iptc_dataset_new (); + iptc_dataset_set_tag (ds, IPTC_RECORD_OBJECT_ENV, IPTC_TAG_CHARACTER_SET); + iptc_dataset_set_data (ds, utf8Esc, 3, IPTC_DONT_VALIDATE); + iptc_data_add_dataset (iptc, ds); + iptc_dataset_unref (ds); + for (rtengine::procparams::IPTCPairs::const_iterator i = iptcc.begin(); i != iptcc.end(); ++i) { if (i->first == "Keywords" && !(i->second.empty())) { for (unsigned int j = 0; j < i->second.size(); j++) { IptcDataSet * ds = iptc_dataset_new (); iptc_dataset_set_tag (ds, IPTC_RECORD_APP_2, IPTC_TAG_KEYWORDS); - std::string loc = to_utf8(i->second.at(j)); - iptc_dataset_set_data (ds, (unsigned char*)loc.c_str(), min(static_cast(64), loc.size()), IPTC_DONT_VALIDATE); + iptc_dataset_set_data (ds, (unsigned char*)i->second.at(j).c_str(), min(static_cast(64), i->second.at(j).bytes()), IPTC_DONT_VALIDATE); iptc_data_add_dataset (iptc, ds); iptc_dataset_unref (ds); } @@ -152,8 +149,7 @@ void ImageIO::setMetadata (const rtexif::TagDirectory* eroot, const rtengine::pr for (unsigned int j = 0; j < i->second.size(); j++) { IptcDataSet * ds = iptc_dataset_new (); iptc_dataset_set_tag (ds, IPTC_RECORD_APP_2, IPTC_TAG_SUPPL_CATEGORY); - std::string loc = to_utf8(i->second.at(j)); - iptc_dataset_set_data (ds, (unsigned char*)loc.c_str(), min(static_cast(32), loc.size()), IPTC_DONT_VALIDATE); + iptc_dataset_set_data (ds, (unsigned char*)i->second.at(j).c_str(), min(static_cast(32), i->second.at(j).bytes()), IPTC_DONT_VALIDATE); iptc_data_add_dataset (iptc, ds); iptc_dataset_unref (ds); } @@ -165,8 +161,7 @@ void ImageIO::setMetadata (const rtexif::TagDirectory* eroot, const rtengine::pr if (i->first == strTags[j].field && !(i->second.empty())) { IptcDataSet * ds = iptc_dataset_new (); iptc_dataset_set_tag (ds, IPTC_RECORD_APP_2, strTags[j].tag); - std::string loc = to_utf8(i->second.at(0)); - iptc_dataset_set_data (ds, (unsigned char*)loc.c_str(), min(strTags[j].size, loc.size()), IPTC_DONT_VALIDATE); + iptc_dataset_set_data (ds, (unsigned char*)i->second.at(0).c_str(), min(strTags[j].size, i->second.at(0).bytes()), IPTC_DONT_VALIDATE); iptc_data_add_dataset (iptc, ds); iptc_dataset_unref (ds); } @@ -308,6 +303,11 @@ int ImageIO::loadPNG (Glib::ustring fname) return IMIO_HEADERERROR; } + // silence the warning about "invalid" sRGB profiles -- see #4260 +#if defined(PNG_SKIP_sRGB_CHECK_PROFILE) && defined(PNG_SET_OPTION_SUPPORTED) + png_set_option(png, PNG_SKIP_sRGB_CHECK_PROFILE, PNG_OPTION_ON); +#endif + png_infop info = png_create_info_struct (png); png_infop end_info = png_create_info_struct (png); @@ -356,6 +356,22 @@ int ImageIO::loadPNG (Glib::ustring fname) png_set_strip_alpha(png); } + // reading the embedded ICC profile if any + if (png_get_valid(png, info, PNG_INFO_iCCP)) { + png_charp name; + int compression_type; +#if PNG_LIBPNG_VER < 10500 + png_charp profdata; +#else + png_bytep profdata; +#endif + png_uint_32 proflen; + png_get_iCCP(png, info, &name, &compression_type, &profdata, &proflen); + embProfile = cmsOpenProfileFromMem(profdata, proflen); + loadedProfileData = new char[proflen]; + memcpy(loadedProfileData, profdata, proflen); + } + //setting gamma double gamma; @@ -905,6 +921,77 @@ int ImageIO::loadPPMFromMemory(const char* buffer, int width, int height, bool s return IMIO_SUCCESS; } + +namespace { + +// Taken from Darktable -- src/imageio/format/png.c +// +/* Write EXIF data to PNG file. + * Code copied from DigiKam's libs/dimg/loaders/pngloader.cpp. + * The EXIF embedding is defined by ImageMagicK. + * It is documented in the ExifTool page: + * http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/PNG.html + * + * ..and in turn copied from ufraw. thanks to udi and colleagues + * for making useful code much more readable and discoverable ;) + */ + +void PNGwriteRawProfile(png_struct *ping, png_info *ping_info, const char *profile_type, guint8 *profile_data, png_uint_32 length) +{ + png_textp text; + long i; + guint8 *sp; + png_charp dp; + png_uint_32 allocated_length, description_length; + + const guint8 hex[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; + text = static_cast(png_malloc(ping, sizeof(png_text))); + description_length = strlen(profile_type); + allocated_length = length * 2 + (length >> 5) + 20 + description_length; + + text[0].text = static_cast(png_malloc(ping, allocated_length)); + text[0].key = static_cast(png_malloc(ping, 80)); + text[0].key[0] = '\0'; + + g_strlcat(text[0].key, "Raw profile type ", 80); + g_strlcat(text[0].key, profile_type, 80); + + sp = profile_data; + dp = text[0].text; + *dp++ = '\n'; + + g_strlcpy(dp, profile_type, allocated_length); + + dp += description_length; + *dp++ = '\n'; + *dp = '\0'; + + g_snprintf(dp, allocated_length - strlen(text[0].text), "%8lu ", static_cast(length)); + + dp += 8; + + for(i = 0; i < long(length); i++) + { + if(i % 36 == 0) *dp++ = '\n'; + + *(dp++) = hex[((*sp >> 4) & 0x0f)]; + *(dp++) = hex[((*sp++) & 0x0f)]; + } + + *dp++ = '\n'; + *dp = '\0'; + text[0].text_length = (dp - text[0].text); + text[0].compression = -1; + + if(text[0].text_length <= allocated_length) png_set_text(ping, ping_info, text, 1); + + png_free(ping, text[0].text); + png_free(ping, text[0].key); + png_free(ping, text); +} + +} // namespace + int ImageIO::savePNG (Glib::ustring fname, volatile int bps) { if (getWidth() < 1 || getHeight() < 1) { @@ -929,6 +1016,11 @@ int ImageIO::savePNG (Glib::ustring fname, volatile int bps) return IMIO_HEADERERROR; } + // silence the warning about "invalid" sRGB profiles -- see #4260 +#if defined(PNG_SKIP_sRGB_CHECK_PROFILE) && defined(PNG_SET_OPTION_SUPPORTED) + png_set_option(png, PNG_SKIP_sRGB_CHECK_PROFILE, PNG_OPTION_ON); +#endif + png_infop info = png_create_info_struct(png); if (!info) { @@ -959,6 +1051,38 @@ int ImageIO::savePNG (Glib::ustring fname, volatile int bps) png_set_IHDR(png, info, width, height, bps, PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_BASE); + if (profileData) { +#if PNG_LIBPNG_VER < 10500 + png_charp profdata = reinterpret_cast(profileData); +#else + png_bytep profdata = reinterpret_cast(profileData); +#endif + png_set_iCCP(png, info, const_cast("icc"), 0, profdata, profileLength); + } + + { + // buffer for the exif and iptc + unsigned int bufferSize; + unsigned char* buffer = nullptr; // buffer will be allocated in createTIFFHeader + unsigned char* iptcdata = nullptr; + unsigned int iptclen = 0; + + if (iptc && iptc_data_save (iptc, &iptcdata, &iptclen) && iptcdata) { + iptc_data_free_buf (iptc, iptcdata); + iptcdata = nullptr; + } + + int size = rtexif::ExifManager::createPNGMarker(exifRoot, exifChange, width, height, bps, (char*)iptcdata, iptclen, buffer, bufferSize); + + if (iptcdata) { + iptc_data_free_buf (iptc, iptcdata); + } + if (buffer && size) { + PNGwriteRawProfile(png, info, "exif", buffer, size); + delete[] buffer; + } + } + int rowlen = width * 3 * bps / 8; unsigned char *row = new unsigned char [rowlen]; @@ -1121,13 +1245,13 @@ int ImageIO::saveJPEG (Glib::ustring fname, int quality, int subSamp) int bytes = 0; if (!error && (bytes = iptc_jpeg_ps3_save_iptc (nullptr, 0, iptcdata, size, buffer, 65532)) < 0) { - if (iptcdata) { - iptc_data_free_buf (iptc, iptcdata); - } - error = true; } + if (iptcdata) { + iptc_data_free_buf (iptc, iptcdata); + } + if (!error) { jpeg_write_marker(&cinfo, JPEG_APP0 + 13, buffer, bytes); } @@ -1212,189 +1336,177 @@ int ImageIO::saveTIFF (Glib::ustring fname, int bps, bool uncompressed) int lineWidth = width * 3 * bps / 8; unsigned char* linebuffer = new unsigned char[lineWidth]; -// TODO the following needs to be looked into - do we really need two ways to write a Tiff file ? - if (exifRoot && uncompressed) { - FILE *file = g_fopen_withBinaryAndLock (fname); + // little hack to get libTiff to use proper byte order (see TIFFClienOpen()): + const char *mode = !exifRoot ? "w" : (exifRoot->getOrder() == rtexif::INTEL ? "wl" : "wb"); +#ifdef WIN32 + FILE *file = g_fopen_withBinaryAndLock (fname); + int fileno = _fileno(file); + int osfileno = _get_osfhandle(fileno); + TIFF* out = TIFFFdOpen (osfileno, fname.c_str(), mode); +#else + TIFF* out = TIFFOpen(fname.c_str(), mode); + int fileno = TIFFFileno (out); +#endif - if (!file) { - delete [] linebuffer; - return IMIO_CANNOTWRITEFILE; + if (!out) { + delete [] linebuffer; + return IMIO_CANNOTWRITEFILE; + } + + if (pl) { + pl->setProgressStr ("PROGRESSBAR_SAVETIFF"); + pl->setProgress (0.0); + } + + if (exifRoot) { + rtexif::TagDirectory* cl = (const_cast (exifRoot))->clone (nullptr); + + // ------------------ remove some unknown top level tags which produce warnings when opening a tiff (might be useless) ----------------- + + rtexif::Tag *removeTag = cl->getTag (0x9003); + + if (removeTag) { + removeTag->setKeep (false); } - if (pl) { - pl->setProgressStr ("PROGRESSBAR_SAVETIFF"); - pl->setProgress (0.0); + removeTag = cl->getTag (0x9211); + + if (removeTag) { + removeTag->setKeep (false); } - // buffer for the exif and iptc - unsigned int bufferSize; - unsigned char* buffer = nullptr; // buffer will be allocated in createTIFFHeader - unsigned char* iptcdata = nullptr; - unsigned int iptclen = 0; + // ------------------ Apply list of change ----------------- - if (iptc && iptc_data_save (iptc, &iptcdata, &iptclen) && iptcdata) { + for (auto currExifChange : exifChange) { + cl->applyChange (currExifChange.first, currExifChange.second); + } + + rtexif::Tag *tag = cl->getTag (TIFFTAG_EXIFIFD); + + if (tag && tag->isDirectory()) { + rtexif::TagDirectory *exif = tag->getDirectory(); + + if (exif) { + int exif_size = exif->calculateSize(); + unsigned char *buffer = new unsigned char[exif_size + 8]; + // TIFFOpen writes out the header and sets file pointer at position 8 + + exif->write (8, buffer); + + write (fileno, buffer + 8, exif_size); + + delete [] buffer; + // let libtiff know that scanlines or any other following stuff should go + // at a different offset: + TIFFSetWriteOffset (out, exif_size + 8); + TIFFSetField (out, TIFFTAG_EXIFIFD, 8); + } + } + + //TODO Even though we are saving EXIF IFD - MakerNote still comes out screwed. + + if ((tag = cl->getTag (TIFFTAG_MODEL)) != nullptr) { + TIFFSetField (out, TIFFTAG_MODEL, tag->getValue()); + } + + if ((tag = cl->getTag (TIFFTAG_MAKE)) != nullptr) { + TIFFSetField (out, TIFFTAG_MAKE, tag->getValue()); + } + + if ((tag = cl->getTag (TIFFTAG_DATETIME)) != nullptr) { + TIFFSetField (out, TIFFTAG_DATETIME, tag->getValue()); + } + + if ((tag = cl->getTag (TIFFTAG_ARTIST)) != nullptr) { + TIFFSetField (out, TIFFTAG_ARTIST, tag->getValue()); + } + + if ((tag = cl->getTag (TIFFTAG_COPYRIGHT)) != nullptr) { + TIFFSetField (out, TIFFTAG_COPYRIGHT, tag->getValue()); + } + + delete cl; + } + + unsigned char* iptcdata = nullptr; + unsigned int iptclen = 0; + + if (iptc && iptc_data_save (iptc, &iptcdata, &iptclen)) { + if (iptcdata) { iptc_data_free_buf (iptc, iptcdata); iptcdata = nullptr; } + } - int size = rtexif::ExifManager::createTIFFHeader (exifRoot, exifChange, width, height, bps, profileData, profileLength, (char*)iptcdata, iptclen, buffer, bufferSize); - - if (iptcdata) { - iptc_data_free_buf (iptc, iptcdata); - } - - // The maximum lenght is strangely not the same than for the JPEG file... - // Which maximum length is the good one ? - if (size > 0 && size <= static_cast(bufferSize)) { - fwrite (buffer, size, 1, file); - } - + if (iptcdata) { + rtexif::Tag iptcTag(nullptr, rtexif::lookupAttrib (rtexif::ifdAttribs, "IPTCData")); + iptcTag.initLongArray((char*)iptcdata, iptclen); #if __BYTE_ORDER__==__ORDER_LITTLE_ENDIAN__ - bool needsReverse = bps == 16 && exifRoot->getOrder() == rtexif::MOTOROLA; + bool needsReverse = exifRoot && exifRoot->getOrder() == rtexif::MOTOROLA; #else - bool needsReverse = bps == 16 && exifRoot->getOrder() == rtexif::INTEL; + bool needsReverse = exifRoot && exifRoot->getOrder() == rtexif::INTEL; #endif - - for (int i = 0; i < height; i++) { - getScanline (i, linebuffer, bps); - - if (needsReverse) - for (int i = 0; i < lineWidth; i += 2) { - char c = linebuffer[i]; - linebuffer[i] = linebuffer[i + 1]; - linebuffer[i + 1] = c; - } - - fwrite (linebuffer, lineWidth, 1, file); - - if (pl && !(i % 100)) { - pl->setProgress ((double)(i + 1) / height); + if (needsReverse) { + unsigned char *ptr = iptcTag.getValue(); + for (int a = 0; a < iptcTag.getCount(); ++a) { + unsigned char cc; + cc = ptr[3]; + ptr[3] = ptr[0]; + ptr[0] = cc; + cc = ptr[2]; + ptr[2] = ptr[1]; + ptr[1] = cc; + ptr += 4; } } + TIFFSetField (out, TIFFTAG_RICHTIFFIPTC, iptcTag.getCount(), (long*)iptcTag.getValue()); + iptc_data_free_buf (iptc, iptcdata); + } - if(buffer) { - delete [] buffer; - } + TIFFSetField (out, TIFFTAG_SOFTWARE, "RawTherapee " RTVERSION); + TIFFSetField (out, TIFFTAG_IMAGEWIDTH, width); + TIFFSetField (out, TIFFTAG_IMAGELENGTH, height); + TIFFSetField (out, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT); + TIFFSetField (out, TIFFTAG_SAMPLESPERPIXEL, 3); + TIFFSetField (out, TIFFTAG_ROWSPERSTRIP, height); + TIFFSetField (out, TIFFTAG_BITSPERSAMPLE, bps); + TIFFSetField (out, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG); + TIFFSetField (out, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_UINT); + TIFFSetField (out, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB); + TIFFSetField (out, TIFFTAG_COMPRESSION, uncompressed ? COMPRESSION_NONE : COMPRESSION_DEFLATE); + TIFFSetField (out, TIFFTAG_SAMPLEFORMAT, bps == 32 ? SAMPLEFORMAT_IEEEFP : SAMPLEFORMAT_UINT); - if (ferror(file)) { - writeOk = false; - } + if (!uncompressed) { + TIFFSetField (out, TIFFTAG_PREDICTOR, bps == 32 ? PREDICTOR_FLOATINGPOINT : PREDICTOR_HORIZONTAL); + } - fclose (file); - } else { - // little hack to get libTiff to use proper byte order (see TIFFClienOpen()): - const char *mode = !exifRoot ? "w" : (exifRoot->getOrder() == rtexif::INTEL ? "wl" : "wb"); -#ifdef WIN32 - FILE *file = g_fopen_withBinaryAndLock (fname); - int fileno = _fileno(file); - int osfileno = _get_osfhandle(fileno); - TIFF* out = TIFFFdOpen (osfileno, fname.c_str(), mode); -#else - TIFF* out = TIFFOpen(fname.c_str(), mode); - int fileno = TIFFFileno (out); -#endif + if (profileData) { + TIFFSetField (out, TIFFTAG_ICCPROFILE, profileLength, profileData); + } - if (!out) { + for (int row = 0; row < height; row++) { + getScanline (row, linebuffer, bps); + + if (TIFFWriteScanline (out, linebuffer, row, 0) < 0) { + TIFFClose (out); delete [] linebuffer; return IMIO_CANNOTWRITEFILE; } - if (pl) { - pl->setProgressStr ("PROGRESSBAR_SAVETIFF"); - pl->setProgress (0.0); + if (pl && !(row % 100)) { + pl->setProgress ((double)(row + 1) / height); } - - if (exifRoot) { - rtexif::Tag *tag = exifRoot->getTag (TIFFTAG_EXIFIFD); - - if (tag && tag->isDirectory()) { - rtexif::TagDirectory *exif = tag->getDirectory(); - - if (exif) { - int exif_size = exif->calculateSize(); - unsigned char *buffer = new unsigned char[exif_size + 8]; - // TIFFOpen writes out the header and sets file pointer at position 8 - - exif->write (8, buffer); - - write (fileno, buffer + 8, exif_size); - - delete [] buffer; - // let libtiff know that scanlines or any other following stuff should go - // at a different offset: - TIFFSetWriteOffset (out, exif_size + 8); - TIFFSetField (out, TIFFTAG_EXIFIFD, 8); - } - } - -//TODO Even though we are saving EXIF IFD - MakerNote still comes out screwed. - - if ((tag = exifRoot->getTag (TIFFTAG_MODEL)) != nullptr) { - TIFFSetField (out, TIFFTAG_MODEL, tag->getValue()); - } - - if ((tag = exifRoot->getTag (TIFFTAG_MAKE)) != nullptr) { - TIFFSetField (out, TIFFTAG_MAKE, tag->getValue()); - } - - if ((tag = exifRoot->getTag (TIFFTAG_DATETIME)) != nullptr) { - TIFFSetField (out, TIFFTAG_DATETIME, tag->getValue()); - } - - if ((tag = exifRoot->getTag (TIFFTAG_ARTIST)) != nullptr) { - TIFFSetField (out, TIFFTAG_ARTIST, tag->getValue()); - } - - if ((tag = exifRoot->getTag (TIFFTAG_COPYRIGHT)) != nullptr) { - TIFFSetField (out, TIFFTAG_COPYRIGHT, tag->getValue()); - } - - } - - TIFFSetField (out, TIFFTAG_SOFTWARE, "RawTherapee " RTVERSION); - TIFFSetField (out, TIFFTAG_IMAGEWIDTH, width); - TIFFSetField (out, TIFFTAG_IMAGELENGTH, height); - TIFFSetField (out, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT); - TIFFSetField (out, TIFFTAG_SAMPLESPERPIXEL, 3); - TIFFSetField (out, TIFFTAG_ROWSPERSTRIP, height); - TIFFSetField (out, TIFFTAG_BITSPERSAMPLE, bps); - TIFFSetField (out, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG); - TIFFSetField (out, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_UINT); - TIFFSetField (out, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB); - TIFFSetField (out, TIFFTAG_COMPRESSION, uncompressed ? COMPRESSION_NONE : COMPRESSION_DEFLATE); - - if (!uncompressed) { - TIFFSetField (out, TIFFTAG_PREDICTOR, PREDICTOR_NONE); - } - - if (profileData) { - TIFFSetField (out, TIFFTAG_ICCPROFILE, profileLength, profileData); - } - - for (int row = 0; row < height; row++) { - getScanline (row, linebuffer, bps); - - if (TIFFWriteScanline (out, linebuffer, row, 0) < 0) { - TIFFClose (out); - delete [] linebuffer; - return IMIO_CANNOTWRITEFILE; - } - - if (pl && !(row % 100)) { - pl->setProgress ((double)(row + 1) / height); - } - } - - if (TIFFFlush(out) != 1) { - writeOk = false; - } - - TIFFClose (out); -#ifdef WIN32 - fclose (file); -#endif } + if (TIFFFlush(out) != 1) { + writeOk = false; + } + + TIFFClose (out); +#ifdef WIN32 + fclose (file); +#endif + delete [] linebuffer; if (pl) { diff --git a/rtengine/imagesource.h b/rtengine/imagesource.h index b76a962eb..675243b65 100644 --- a/rtengine/imagesource.h +++ b/rtengine/imagesource.h @@ -69,9 +69,9 @@ public: virtual int load (const Glib::ustring &fname) = 0; virtual void preprocess (const RAWParams &raw, const LensProfParams &lensProf, const CoarseTransformParams& coarse, bool prepareDenoise = true) {}; virtual void demosaic (const RAWParams &raw) {}; - virtual void retinex (ColorManagementParams cmp, const RetinexParams &deh, ToneCurveParams Tc, LUTf & cdcurve, LUTf & mapcurve, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, multi_array2D &conversionBuffer, bool dehacontlutili, bool mapcontlutili, bool useHsl, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax, LUTu &histLRETI) {}; + virtual void retinex (const ColorManagementParams& cmp, const RetinexParams &deh, const ToneCurveParams& Tc, LUTf & cdcurve, LUTf & mapcurve, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, multi_array2D &conversionBuffer, bool dehacontlutili, bool mapcontlutili, bool useHsl, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax, LUTu &histLRETI) {}; virtual void retinexPrepareCurves (const RetinexParams &retinexParams, LUTf &cdcurve, LUTf &mapcurve, RetinextransmissionCurve &retinextransmissionCurve, RetinexgaintransmissionCurve &retinexgaintransmissionCurve, bool &retinexcontlutili, bool &mapcontlutili, bool &useHsl, LUTu & lhist16RETI, LUTu & histLRETI) {}; - virtual void retinexPrepareBuffers (ColorManagementParams cmp, const RetinexParams &retinexParams, multi_array2D &conversionBuffer, LUTu &lhist16RETI) {}; + virtual void retinexPrepareBuffers (const ColorManagementParams& cmp, const RetinexParams &retinexParams, multi_array2D &conversionBuffer, LUTu &lhist16RETI) {}; virtual void flushRawData () {}; virtual void flushRGB () {}; virtual void HLRecovery_Global (ToneCurveParams hrp) {}; @@ -137,6 +137,13 @@ public: histGreenRaw.clear(); histBlueRaw.clear(); // only some sources will supply this } + + // for RAW files, compute a tone curve using histogram matching on the embedded thumbnail + virtual void getAutoMatchedToneCurve(std::vector &outCurve) + { + outCurve = { 0.0 }; + } + double getDirPyrDenoiseExpComp ( ) { return dirpyrdenoiseExpComp; diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 8fd7bb959..ef2c6695a 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -199,11 +199,7 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) imgsrc->preprocess ( rp, params.lensProf, params.coarse ); imgsrc->getRAWHistogram ( histRedRaw, histGreenRaw, histBlueRaw ); - if (highDetailNeeded) { - highDetailPreprocessComputed = true; - } else { - highDetailPreprocessComputed = false; - } + highDetailPreprocessComputed = highDetailNeeded; } /* @@ -269,21 +265,6 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) } } - - // Updating toneCurve.hrenabled if necessary - // It has to be done there, because the next 'if' statement will use the value computed here - if (todo & M_AUTOEXP) { - if (params.toneCurve.autoexp) {// this enabled HLRecovery - if (ToneCurveParams::HLReconstructionNecessary (histRedRaw, histGreenRaw, histBlueRaw) && !params.toneCurve.hrenabled) { - // switching params.toneCurve.hrenabled to true -> shouting in listener's ears! - params.toneCurve.hrenabled = true; - - // forcing INIT to be done, to reconstruct HL again - todo |= M_INIT; - } - } - } - if (todo & (M_INIT | M_LINDENOISE | M_HDR)) { MyMutex::MyLock initLock (minit); // Also used in crop window @@ -296,7 +277,9 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) currWB = ColorTemp (params.wb.temperature, params.wb.green, params.wb.equal, params.wb.method); - if (params.wb.method == "Camera") { + if (!params.wb.enabled) { + currWB = ColorTemp(); + } else if (params.wb.method == "Camera") { currWB = imgsrc->getWB (); } else if (params.wb.method == "Auto") { if (lastAwbEqual != params.wb.equal || lastAwbTempBias != params.wb.tempBias) { @@ -320,10 +303,12 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) currWB = autoWB; } - params.wb.temperature = currWB.getTemp (); - params.wb.green = currWB.getGreen (); + if (params.wb.enabled) { + params.wb.temperature = currWB.getTemp (); + params.wb.green = currWB.getGreen (); + } - if (params.wb.method == "Auto" && awbListener) { + if (params.wb.method == "Auto" && awbListener && params.wb.enabled) { awbListener->WBChanged (params.wb.temperature, params.wb.green); } @@ -479,6 +464,24 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) aeListener->autoExpChanged (params.toneCurve.expcomp, params.toneCurve.brightness, params.toneCurve.contrast, params.toneCurve.black, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh, params.toneCurve.hrenabled); } + if (params.toneCurve.histmatching) { + imgsrc->getAutoMatchedToneCurve(params.toneCurve.curve); + + if (params.toneCurve.autoexp) { + params.toneCurve.expcomp = 0.0; + } + + params.toneCurve.autoexp = false; + params.toneCurve.curveMode = ToneCurveParams::TcMode::FILMLIKE; + params.toneCurve.curve2 = { 0 }; + params.toneCurve.brightness = 0; + params.toneCurve.contrast = 0; + params.toneCurve.black = 0; + + if (aeListener) { + aeListener->autoMatchedToneCurveChanged(params.toneCurve.curveMode, params.toneCurve.curve); + } + } } progress ("Exposure curve & CIELAB conversion...", 100 * readyphase / numofphases); @@ -523,7 +526,7 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) int satPR = 30; int indi = 0; - if (params.colorToning.enabled && params.colorToning.autosat) { //for colortoning evaluation of saturation settings + if (params.colorToning.enabled && params.colorToning.autosat && params.colorToning.method != "LabGrid") { //for colortoning evaluation of saturation settings float moyS = 0.f; float eqty = 0.f; ipf.moyeqt (spotprevi, moyS, eqty);//return image : mean saturation and standard dev of saturation @@ -1293,21 +1296,20 @@ void ImProcCoordinator::saveInputICCReference (const Glib::ustring& fname, bool } } - Image16* im16 = im->to16(); - delete im; - int imw, imh; double tmpScale = ipf.resizeScale (¶ms, fW, fH, imw, imh); if (tmpScale != 1.0) { - Image16* tempImage = new Image16 (imw, imh); - ipf.resize (im16, tempImage, tmpScale); - delete im16; - im16 = tempImage; + Imagefloat* tempImage = new Imagefloat (imw, imh); + ipf.resize (im, tempImage, tmpScale); + delete im; + im = tempImage; } - im16->saveTIFF (fname, 16, true); - delete im16; + im->setMetadata (imgsrc->getMetaData()->getRootExifData ()); + + im->saveTIFF (fname, 16, true); + delete im; if (plistener) { plistener->setProgressState (false); @@ -1397,7 +1399,8 @@ ProcParams* ImProcCoordinator::beginUpdateParams () void ImProcCoordinator::endUpdateParams (ProcEvent change) { - endUpdateParams ( refreshmap[ (int)change] ); + int action = RefreshMapper::getInstance()->getAction(change); + endUpdateParams(action); } void ImProcCoordinator::endUpdateParams (int changeFlags) diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index ad7e4260d..d0c78f906 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -23,6 +23,7 @@ #include #endif +#include "alignedbuffer.h" #include "rtengine.h" #include "improcfun.h" #include "curves.h" @@ -39,7 +40,6 @@ #include "improccoordinator.h" #include "clutstore.h" #include "ciecam02.h" -//#define BENCHMARK #include "StopWatch.h" #include "../rtgui/ppversion.h" #include "../rtgui/guiutils.h" @@ -47,6 +47,210 @@ #undef CLIPD #define CLIPD(a) ((a)>0.0f?((a)<1.0f?(a):1.0f):0.0f) +namespace { + +using namespace rtengine; +// begin of helper function for rgbProc() +void shadowToneCurve(const LUTf &shtonecurve, float *rtemp, float *gtemp, float *btemp, int istart, int tH, int jstart, int tW, int tileSize) { + +#if defined( __SSE2__ ) && defined( __x86_64__ ) + vfloat cr = F2V(0.299f); + vfloat cg = F2V(0.587f); + vfloat cb = F2V(0.114f); +#endif + + for (int i = istart, ti = 0; i < tH; i++, ti++) { + int j = jstart, tj = 0; +#if defined( __SSE2__ ) && defined( __x86_64__ ) + for (; j < tW - 3; j+=4, tj+=4) { + + vfloat rv = LVF(rtemp[ti * tileSize + tj]); + vfloat gv = LVF(gtemp[ti * tileSize + tj]); + vfloat bv = LVF(btemp[ti * tileSize + tj]); + + //shadow tone curve + vfloat Yv = cr * rv + cg * gv + cb * bv; + vfloat tonefactorv = shtonecurve(Yv); + STVF(rtemp[ti * tileSize + tj], rv * tonefactorv); + STVF(gtemp[ti * tileSize + tj], gv * tonefactorv); + STVF(btemp[ti * tileSize + tj], bv * tonefactorv); + } +#endif + for (; j < tW; j++, tj++) { + + float r = rtemp[ti * tileSize + tj]; + float g = gtemp[ti * tileSize + tj]; + float b = btemp[ti * tileSize + tj]; + + //shadow tone curve + float Y = (0.299f * r + 0.587f * g + 0.114f * b); + float tonefactor = shtonecurve[Y]; + rtemp[ti * tileSize + tj] = rtemp[ti * tileSize + tj] * tonefactor; + gtemp[ti * tileSize + tj] = gtemp[ti * tileSize + tj] * tonefactor; + btemp[ti * tileSize + tj] = btemp[ti * tileSize + tj] * tonefactor; + } + } +} + +void highlightToneCurve(const LUTf &hltonecurve, float *rtemp, float *gtemp, float *btemp, int istart, int tH, int jstart, int tW, int tileSize, float exp_scale, float comp, float hlrange) { + +#if defined( __SSE2__ ) && defined( __x86_64__ ) + vfloat threev = F2V(3.f); + vfloat maxvalfv = F2V(MAXVALF); +#endif + + for (int i = istart, ti = 0; i < tH; i++, ti++) { + int j = jstart, tj = 0; +#if defined( __SSE2__ ) && defined( __x86_64__ ) + for (; j < tW - 3; j+=4, tj+=4) { + + vfloat rv = LVF(rtemp[ti * tileSize + tj]); + vfloat gv = LVF(gtemp[ti * tileSize + tj]); + vfloat bv = LVF(btemp[ti * tileSize + tj]); + + //TODO: proper treatment of out-of-gamut colors + //float tonefactor = hltonecurve[(0.299f*r+0.587f*g+0.114f*b)]; + vmask maxMask = vmaskf_ge(vmaxf(rv, vmaxf(gv, bv)), maxvalfv); + if(_mm_movemask_ps((vfloat)maxMask)) { + for (int k = 0; k < 4; ++k) { + float r = rtemp[ti * tileSize + tj + k]; + float g = gtemp[ti * tileSize + tj + k]; + float b = btemp[ti * tileSize + tj + k]; + float tonefactor = ((r < MAXVALF ? hltonecurve[r] : CurveFactory::hlcurve (exp_scale, comp, hlrange, r) ) + + (g < MAXVALF ? hltonecurve[g] : CurveFactory::hlcurve (exp_scale, comp, hlrange, g) ) + + (b < MAXVALF ? hltonecurve[b] : CurveFactory::hlcurve (exp_scale, comp, hlrange, b) ) ) / 3.0; + + // note: tonefactor includes exposure scaling, that is here exposure slider and highlight compression takes place + rtemp[ti * tileSize + tj + k] = r * tonefactor; + gtemp[ti * tileSize + tj + k] = g * tonefactor; + btemp[ti * tileSize + tj + k] = b * tonefactor; + } + } else { + vfloat tonefactorv = (hltonecurve.cb(rv) + hltonecurve.cb(gv) + hltonecurve.cb(bv)) / threev; + // note: tonefactor includes exposure scaling, that is here exposure slider and highlight compression takes place + STVF(rtemp[ti * tileSize + tj], rv * tonefactorv); + STVF(gtemp[ti * tileSize + tj], gv * tonefactorv); + STVF(btemp[ti * tileSize + tj], bv * tonefactorv); + } + } +#endif + for (; j < tW; j++, tj++) { + + float r = rtemp[ti * tileSize + tj]; + float g = gtemp[ti * tileSize + tj]; + float b = btemp[ti * tileSize + tj]; + + //TODO: proper treatment of out-of-gamut colors + //float tonefactor = hltonecurve[(0.299f*r+0.587f*g+0.114f*b)]; + float tonefactor = ((r < MAXVALF ? hltonecurve[r] : CurveFactory::hlcurve (exp_scale, comp, hlrange, r) ) + + (g < MAXVALF ? hltonecurve[g] : CurveFactory::hlcurve (exp_scale, comp, hlrange, g) ) + + (b < MAXVALF ? hltonecurve[b] : CurveFactory::hlcurve (exp_scale, comp, hlrange, b) ) ) / 3.0; + + // note: tonefactor includes exposure scaling, that is here exposure slider and highlight compression takes place + rtemp[ti * tileSize + tj] = r * tonefactor; + gtemp[ti * tileSize + tj] = g * tonefactor; + btemp[ti * tileSize + tj] = b * tonefactor; + } + } +} + +void proPhotoBlue(float *rtemp, float *gtemp, float *btemp, int istart, int tH, int jstart, int tW, int tileSize) { + // this is a hack to avoid the blue=>black bug (Issue 2141) + for (int i = istart, ti = 0; i < tH; i++, ti++) { + int j = jstart, tj = 0; +#if defined( __SSE2__ ) && defined( __x86_64__ ) + for (; j < tW - 3; j+=4, tj+=4) { + vfloat rv = LVF(rtemp[ti * tileSize + tj]); + vfloat gv = LVF(gtemp[ti * tileSize + tj]); + vmask zeromask = vorm(vmaskf_eq(rv, ZEROV), vmaskf_eq(gv, ZEROV)); + if(_mm_movemask_ps((vfloat)zeromask)) { + for (int k = 0; k < 4; ++k) { + float r = rtemp[ti * tileSize + tj + k]; + float g = gtemp[ti * tileSize + tj + k]; + if (r == 0.0f || g == 0.0f) { + float b = btemp[ti * tileSize + tj + k]; + float h, s, v; + Color::rgb2hsv (r, g, b, h, s, v); + s *= 0.99f; + Color::hsv2rgb (h, s, v, rtemp[ti * tileSize + tj + k], gtemp[ti * tileSize + tj + k], btemp[ti * tileSize + tj + k]); + } + } + } + } +#endif + for (; j < tW; j++, tj++) { + float r = rtemp[ti * tileSize + tj]; + float g = gtemp[ti * tileSize + tj]; + + if (r == 0.0f || g == 0.0f) { + float b = btemp[ti * tileSize + tj]; + float h, s, v; + Color::rgb2hsv (r, g, b, h, s, v); + s *= 0.99f; + Color::hsv2rgb (h, s, v, rtemp[ti * tileSize + tj], gtemp[ti * tileSize + tj], btemp[ti * tileSize + tj]); + } + } + } +} + +void customToneCurve(const ToneCurve &customToneCurve, ToneCurveParams::TcMode curveMode, float *rtemp, float *gtemp, float *btemp, int istart, int tH, int jstart, int tW, int tileSize, PerceptualToneCurveState ptcApplyState) { + + if (curveMode == ToneCurveParams::TcMode::STD) { // Standard + const StandardToneCurve& userToneCurve = static_cast (customToneCurve); + for (int i = istart, ti = 0; i < tH; i++, ti++) { + userToneCurve.BatchApply(0, tW - jstart, &rtemp[ti * tileSize], >emp[ti * tileSize], &btemp[ti * tileSize]); + } + } else if (curveMode == ToneCurveParams::TcMode::FILMLIKE) { // Adobe like + const AdobeToneCurve& userToneCurve = static_cast (customToneCurve); + for (int i = istart, ti = 0; i < tH; i++, ti++) { + for (int j = jstart, tj = 0; j < tW; j++, tj++) { + userToneCurve.Apply(rtemp[ti * tileSize + tj], gtemp[ti * tileSize + tj], btemp[ti * tileSize + tj]); + } + } + } else if (curveMode == ToneCurveParams::TcMode::SATANDVALBLENDING) { // apply the curve on the saturation and value channels + const SatAndValueBlendingToneCurve& userToneCurve = static_cast (customToneCurve); + for (int i = istart, ti = 0; i < tH; i++, ti++) { + for (int j = jstart, tj = 0; j < tW; j++, tj++) { + userToneCurve.Apply(rtemp[ti * tileSize + tj], gtemp[ti * tileSize + tj], btemp[ti * tileSize + tj]); + } + } + } else if (curveMode == ToneCurveParams::TcMode::WEIGHTEDSTD) { // apply the curve to the rgb channels, weighted + const WeightedStdToneCurve& userToneCurve = static_cast (customToneCurve); + for (int i = istart, ti = 0; i < tH; i++, ti++) { + userToneCurve.BatchApply(0, tW - jstart, &rtemp[ti * tileSize], >emp[ti * tileSize], &btemp[ti * tileSize]); + } + } else if (curveMode == ToneCurveParams::TcMode::LUMINANCE) { // apply the curve to the luminance channel + const LuminanceToneCurve& userToneCurve = static_cast (customToneCurve); + + for (int i = istart, ti = 0; i < tH; i++, ti++) { + for (int j = jstart, tj = 0; j < tW; j++, tj++) { + rtemp[ti * tileSize + tj] = CLIP (rtemp[ti * tileSize + tj]); + gtemp[ti * tileSize + tj] = CLIP (gtemp[ti * tileSize + tj]); + btemp[ti * tileSize + tj] = CLIP (btemp[ti * tileSize + tj]); + userToneCurve.Apply(rtemp[ti * tileSize + tj], gtemp[ti * tileSize + tj], btemp[ti * tileSize + tj]); + } + } + } else if (curveMode == ToneCurveParams::TcMode::PERCEPTUAL) { // apply curve while keeping color appearance constant + const PerceptualToneCurve& userToneCurve = static_cast (customToneCurve); + for (int i = istart, ti = 0; i < tH; i++, ti++) { + userToneCurve.BatchApply(0, tW - jstart, &rtemp[ti * tileSize], >emp[ti * tileSize], &btemp[ti * tileSize], ptcApplyState); + } + } +} + +void fillEditFloat(float *editIFloatTmpR, float *editIFloatTmpG, float *editIFloatTmpB, float *rtemp, float *gtemp, float *btemp, int istart, int tH, int jstart, int tW, int tileSize) { + for (int i = istart, ti = 0; i < tH; i++, ti++) { + for (int j = jstart, tj = 0; j < tW; j++, tj++) { + editIFloatTmpR[ti * tileSize + tj] = Color::gamma2curve[rtemp[ti * tileSize + tj]] / 65535.f; + editIFloatTmpG[ti * tileSize + tj] = Color::gamma2curve[gtemp[ti * tileSize + tj]] / 65535.f; + editIFloatTmpB[ti * tileSize + tj] = Color::gamma2curve[btemp[ti * tileSize + tj]] / 65535.f; + } + } +} +// end of helper function for rgbProc() + +} + namespace rtengine { @@ -1965,7 +2169,9 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw const float pow1 = pow_F ( 1.64f - pow_F ( 0.29f, n ), 0.73f ); float nj, nbbj, ncbj, czj, awj, flj; Ciecam02::initcam2float (gamu, yb2, pilotout, f2, la2, xw2, yw2, zw2, nj, dj, nbbj, ncbj, czj, awj, flj); +#ifdef __SSE2__ const float reccmcz = 1.f / (c2 * czj); +#endif const float pow1n = pow_F ( 1.64f - pow_F ( 0.29f, nj ), 0.73f ); const float epsil = 0.0001f; @@ -2530,7 +2736,7 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw Ciecam02::jch2xyz_ciecam02float ( xx, yy, zz, J, C, h, xw2, yw2, zw2, - f2, c2, nc2, gamu, pow1n, nbbj, ncbj, flj, czj, dj, awj); + c2, nc2, gamu, pow1n, nbbj, ncbj, flj, czj, dj, awj); float x, y, z; x = xx * 655.35f; y = yy * 655.35f; @@ -2541,10 +2747,9 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw // gamut control in Lab mode; I must study how to do with cIECAM only if (gamu == 1) { - float HH, Lprov1, Chprov1; + float Lprov1, Chprov1; Lprov1 = Ll / 327.68f; Chprov1 = sqrtf (SQR (aa) + SQR (bb)) / 327.68f; - HH = xatan2f (bb, aa); float2 sincosval; if (Chprov1 == 0.0f) { @@ -2874,7 +3079,7 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw Ciecam02::jch2xyz_ciecam02float ( xx, yy, zz, ncie->J_p[i][j], ncie_C_p, ncie->h_p[i][j], xw2, yw2, zw2, - f2, c2, nc2, gamu, pow1n, nbbj, ncbj, flj, czj, dj, awj); + c2, nc2, gamu, pow1n, nbbj, ncbj, flj, czj, dj, awj); float x = (float)xx * 655.35f; float y = (float)yy * 655.35f; float z = (float)zz * 655.35f; @@ -3107,8 +3312,6 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer } bool processSH = params->sh.enabled && shmap && (params->sh.highlights > 0 || params->sh.shadows > 0); - bool processLCE = params->sh.enabled && shmap && params->sh.localcontrast > 0; - double lceamount = params->sh.localcontrast / 200.0; TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params->icm.working); TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix (params->icm.working); @@ -3146,7 +3349,8 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer {wprof[2][0], wprof[2][1], wprof[2][2]} }; - bool mixchannels = (params->chmixer.red[0] != 100 || params->chmixer.red[1] != 0 || params->chmixer.red[2] != 0 || + bool mixchannels = params->chmixer.enabled && + (params->chmixer.red[0] != 100 || params->chmixer.red[1] != 0 || params->chmixer.red[2] != 0 || params->chmixer.green[0] != 0 || params->chmixer.green[1] != 100 || params->chmixer.green[2] != 0 || params->chmixer.blue[0] != 0 || params->chmixer.blue[1] != 0 || params->chmixer.blue[2] != 100); @@ -3159,9 +3363,9 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer FlatCurveType sCurveType = (FlatCurveType)params->hsvequalizer.scurve.at (0); FlatCurveType vCurveType = (FlatCurveType)params->hsvequalizer.vcurve.at (0); FlatCurveType bwlCurveType = (FlatCurveType)params->blackwhite.luminanceCurve.at (0); - bool hCurveEnabled = hCurveType > FCT_Linear; - bool sCurveEnabled = sCurveType > FCT_Linear; - bool vCurveEnabled = vCurveType > FCT_Linear; + bool hCurveEnabled = params->hsvequalizer.enabled && hCurveType > FCT_Linear; + bool sCurveEnabled = params->hsvequalizer.enabled && sCurveType > FCT_Linear; + bool vCurveEnabled = params->hsvequalizer.enabled && vCurveType > FCT_Linear; bool bwlCurveEnabled = bwlCurveType > FCT_Linear; // TODO: We should create a 'skip' value like for CurveFactory::complexsgnCurve (rtengine/curves.cc) @@ -3273,7 +3477,8 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer userToneCurve.initApplyState (ptc2ApplyState, params->icm.working); } - bool hasColorToning = params->colorToning.enabled && bool (ctOpacityCurve) && bool (ctColorCurve); + bool hasColorToning = params->colorToning.enabled && bool (ctOpacityCurve) && bool (ctColorCurve) && params->colorToning.method != "LabGrid"; + bool hasColorToningLabGrid = params->colorToning.enabled && params->colorToning.method == "LabGrid"; // float satLimit = float(params->colorToning.satProtectionThreshold)/100.f*0.7f+0.3f; // float satLimitOpacity = 1.f-(float(params->colorToning.saturatedOpacity)/100.f); float strProtect = (float (params->colorToning.strength) / 100.f); @@ -3308,15 +3513,15 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer } */ - float RedLow = (100.f + float (params->colorToning.redlow)) / 100.f; //printf("Rel=%f\n",RedLow); - float GreenLow = (100.f + float (params->colorToning.greenlow)) / 100.f; //printf("Gre=%f\n",GreenLow); - float BlueLow = (100.f + float (params->colorToning.bluelow)) / 100.f; //printf("Blu=%f\n",BlueLow); - float RedMed = (100.f + float (params->colorToning.redmed)) / 100.f; - float GreenMed = (100.f + float (params->colorToning.greenmed)) / 100.f; - float BlueMed = (100.f + float (params->colorToning.bluemed)) / 100.f; - float RedHigh = (100.f + float (params->colorToning.redhigh)) / 100.f; //printf("RedH=%f\n",RedHigh); - float GreenHigh = (100.f + float (params->colorToning.greenhigh)) / 100.f; - float BlueHigh = (100.f + float (params->colorToning.bluehigh)) / 100.f; + float RedLow = params->colorToning.redlow / 100.f; + float GreenLow = params->colorToning.greenlow / 100.f; + float BlueLow = params->colorToning.bluelow / 100.f; + float RedMed = params->colorToning.redmed / 100.f; + float GreenMed = params->colorToning.greenmed / 100.f; + float BlueMed = params->colorToning.bluemed / 100.f; + float RedHigh = params->colorToning.redhigh / 100.f; + float GreenHigh = params->colorToning.greenhigh / 100.f; + float BlueHigh = params->colorToning.bluehigh / 100.f; float SatLow = float (params->colorToning.shadowsColSat.getBottom()) / 100.f; float SatHigh = float (params->colorToning.hlColSat.getBottom()) / 100.f; @@ -3410,28 +3615,28 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer #pragma omp parallel if (multiThread) #endif { - char *buffer; + size_t perChannelSizeBytes = padToAlignment(sizeof (float) * TS * TS + 4 * 64); + AlignedBuffer buffer(3 * perChannelSizeBytes); char *editIFloatBuffer = nullptr; char *editWhateverBuffer = nullptr; - buffer = (char *) malloc (3 * sizeof (float) * TS * TS + 20 * 64 + 63); - char *data; - data = (char*) ( ( uintptr_t (buffer) + uintptr_t (63)) / 64 * 64); - - float *rtemp = (float (*))data; - float *gtemp = (float (*)) ((char*)rtemp + sizeof (float) * TS * TS + 4 * 64); - float *btemp = (float (*)) ((char*)gtemp + sizeof (float) * TS * TS + 8 * 64); + float *rtemp = buffer.data; + float *gtemp = &rtemp[perChannelSizeBytes / sizeof(float)]; + float *btemp = >emp[perChannelSizeBytes / sizeof(float)]; int istart; int jstart; int tW; int tH; + // zero out the buffers + memset(rtemp, 0, 3 * perChannelSizeBytes); + // Allocating buffer for the PipetteBuffer float *editIFloatTmpR = nullptr, *editIFloatTmpG = nullptr, *editIFloatTmpB = nullptr, *editWhateverTmp = nullptr; if (editImgFloat) { editIFloatBuffer = (char *) malloc (3 * sizeof (float) * TS * TS + 20 * 64 + 63); - data = (char*) ( ( uintptr_t (editIFloatBuffer) + uintptr_t (63)) / 64 * 64); + char *data = (char*) ( ( uintptr_t (editIFloatBuffer) + uintptr_t (63)) / 64 * 64); editIFloatTmpR = (float (*))data; editIFloatTmpG = (float (*)) ((char*)editIFloatTmpR + sizeof (float) * TS * TS + 4 * 64); @@ -3440,7 +3645,7 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer if (editWhatever) { editWhateverBuffer = (char *) malloc (sizeof (float) * TS * TS + 20 * 64 + 63); - data = (char*) ( ( uintptr_t (editWhateverBuffer) + uintptr_t (63)) / 64 * 64); + char *data = (char*) ( ( uintptr_t (editWhateverBuffer) + uintptr_t (63)) / 64 * 64); editWhateverTmp = (float (*))data; } @@ -3493,7 +3698,7 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer } } - if (processSH || processLCE) { + if (processSH) { for (int i = istart, ti = 0; i < tH; i++, ti++) { for (int j = jstart, tj = 0; j < tW; j++, tj++) { @@ -3501,66 +3706,25 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer float g = gtemp[ti * TS + tj]; float b = btemp[ti * TS + tj]; - double mapval = 1.0 + shmap->map[i][j]; - double factor = 1.0; - if (processSH) { - if (mapval > h_th) { - factor = (h_th + (100.0 - shHighlights) * (mapval - h_th) / 100.0) / mapval; - } else if (mapval < s_th) { - factor = (s_th - (100.0 - shShadows) * (s_th - mapval) / 100.0) / mapval; - } + float mapval = 1.f + shmap->map[i][j]; + float factor = 1.f; + + if (mapval > h_th) { + factor = (h_th + (100.0 - shHighlights) * (mapval - h_th) / 100.0) / mapval; + } else if (mapval < s_th) { + factor = (s_th - (100.0 - shShadows) * (s_th - mapval) / 100.0) / mapval; } - if (processLCE) { - double sub = lceamount * (mapval - factor * (r * lumimul[0] + g * lumimul[1] + b * lumimul[2])); - rtemp[ti * TS + tj] = factor * r - sub; - gtemp[ti * TS + tj] = factor * g - sub; - btemp[ti * TS + tj] = factor * b - sub; - } else { - rtemp[ti * TS + tj] = factor * r; - gtemp[ti * TS + tj] = factor * g; - btemp[ti * TS + tj] = factor * b; - } + rtemp[ti * TS + tj] = factor * r; + gtemp[ti * TS + tj] = factor * g; + btemp[ti * TS + tj] = factor * b; } } } - for (int i = istart, ti = 0; i < tH; i++, ti++) { - for (int j = jstart, tj = 0; j < tW; j++, tj++) { - - float r = rtemp[ti * TS + tj]; - float g = gtemp[ti * TS + tj]; - float b = btemp[ti * TS + tj]; - - //TODO: proper treatment of out-of-gamut colors - //float tonefactor = hltonecurve[(0.299f*r+0.587f*g+0.114f*b)]; - float tonefactor = ((r < MAXVALF ? hltonecurve[r] : CurveFactory::hlcurve (exp_scale, comp, hlrange, r) ) + - (g < MAXVALF ? hltonecurve[g] : CurveFactory::hlcurve (exp_scale, comp, hlrange, g) ) + - (b < MAXVALF ? hltonecurve[b] : CurveFactory::hlcurve (exp_scale, comp, hlrange, b) ) ) / 3.0; - - // note: tonefactor includes exposure scaling, that is here exposure slider and highlight compression takes place - rtemp[ti * TS + tj] = r * tonefactor; - gtemp[ti * TS + tj] = g * tonefactor; - btemp[ti * TS + tj] = b * tonefactor; - } - } - - for (int i = istart, ti = 0; i < tH; i++, ti++) { - for (int j = jstart, tj = 0; j < tW; j++, tj++) { - - float r = rtemp[ti * TS + tj]; - float g = gtemp[ti * TS + tj]; - float b = btemp[ti * TS + tj]; - - //shadow tone curve - float Y = (0.299f * r + 0.587f * g + 0.114f * b); - float tonefactor = shtonecurve[Y]; - rtemp[ti * TS + tj] = rtemp[ti * TS + tj] * tonefactor; - gtemp[ti * TS + tj] = gtemp[ti * TS + tj] * tonefactor; - btemp[ti * TS + tj] = btemp[ti * TS + tj] * tonefactor; - } - } + highlightToneCurve(hltonecurve, rtemp, gtemp, btemp, istart, tH, jstart, tW, TS, exp_scale, comp, hlrange); + shadowToneCurve(shtonecurve, rtemp, gtemp, btemp, istart, tH, jstart, tW, TS); if (dcpProf) { dcpProf->step2ApplyTile (rtemp, gtemp, btemp, tW - jstart, tH - istart, TS, asIn); @@ -3568,22 +3732,10 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer for (int i = istart, ti = 0; i < tH; i++, ti++) { for (int j = jstart, tj = 0; j < tW; j++, tj++) { - float r = rtemp[ti * TS + tj]; - float g = gtemp[ti * TS + tj]; - float b = btemp[ti * TS + tj]; - - // clip out of gamut colors, without distorting color too bad - if (r < 0) { - r = 0; - } - - if (g < 0) { - g = 0; - } - - if (b < 0) { - b = 0; - } + // clip out of gamut colors, without distorting colour too bad + float r = std::max(rtemp[ti * TS + tj], 0.f); + float g = std::max(gtemp[ti * TS + tj], 0.f); + float b = std::max(btemp[ti * TS + tj], 0.f); if (r > 65535 || g > 65535 || b > 65535) { filmlike_clip (&r, &g, &b); @@ -3595,149 +3747,53 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer } } - for (int i = istart, ti = 0; i < tH; i++, ti++) { - for (int j = jstart, tj = 0; j < tW; j++, tj++) { + if (histToneCurveThr) { + for (int i = istart, ti = 0; i < tH; i++, ti++) { + for (int j = jstart, tj = 0; j < tW; j++, tj++) { - //brightness/contrast - rtemp[ti * TS + tj] = tonecurve[ rtemp[ti * TS + tj] ]; - gtemp[ti * TS + tj] = tonecurve[ gtemp[ti * TS + tj] ]; - btemp[ti * TS + tj] = tonecurve[ btemp[ti * TS + tj] ]; + //brightness/contrast + rtemp[ti * TS + tj] = tonecurve[ rtemp[ti * TS + tj] ]; + gtemp[ti * TS + tj] = tonecurve[ gtemp[ti * TS + tj] ]; + btemp[ti * TS + tj] = tonecurve[ btemp[ti * TS + tj] ]; - if (histToneCurveThr) { int y = CLIP (lumimulf[0] * Color::gamma2curve[rtemp[ti * TS + tj]] + lumimulf[1] * Color::gamma2curve[gtemp[ti * TS + tj]] + lumimulf[2] * Color::gamma2curve[btemp[ti * TS + tj]]); histToneCurveThr[y >> histToneCurveCompression]++; } } + } else { + for (int i = istart, ti = 0; i < tH; i++, ti++) { + int j = jstart, tj = 0; +#if defined( __SSE2__ ) && defined( __x86_64__ ) + for (; j < tW - 3; j+=4, tj+=4) { + //brightness/contrast + STVF(rtemp[ti * TS + tj], tonecurve(LVF(rtemp[ti * TS + tj]))); + STVF(gtemp[ti * TS + tj], tonecurve(LVF(gtemp[ti * TS + tj]))); + STVF(btemp[ti * TS + tj], tonecurve(LVF(btemp[ti * TS + tj]))); + } +#endif + for (; j < tW; j++, tj++) { + //brightness/contrast + rtemp[ti * TS + tj] = tonecurve[rtemp[ti * TS + tj]]; + gtemp[ti * TS + tj] = tonecurve[gtemp[ti * TS + tj]]; + btemp[ti * TS + tj] = tonecurve[btemp[ti * TS + tj]]; + } + } } if (editID == EUID_ToneCurve1) { // filling the pipette buffer - for (int i = istart, ti = 0; i < tH; i++, ti++) { - for (int j = jstart, tj = 0; j < tW; j++, tj++) { - editIFloatTmpR[ti * TS + tj] = Color::gamma2curve[rtemp[ti * TS + tj]] / 65535.f; - editIFloatTmpG[ti * TS + tj] = Color::gamma2curve[gtemp[ti * TS + tj]] / 65535.f; - editIFloatTmpB[ti * TS + tj] = Color::gamma2curve[btemp[ti * TS + tj]] / 65535.f; - } - } + fillEditFloat(editIFloatTmpR, editIFloatTmpG, editIFloatTmpB, rtemp, gtemp, btemp, istart, tH, jstart, tW, TS); } if (hasToneCurve1) { - if (curveMode == ToneCurveParams::TcMode::STD) { // Standard - for (int i = istart, ti = 0; i < tH; i++, ti++) { - for (int j = jstart, tj = 0; j < tW; j++, tj++) { - const StandardToneCurve& userToneCurve = static_cast (customToneCurve1); - userToneCurve.Apply (rtemp[ti * TS + tj], gtemp[ti * TS + tj], btemp[ti * TS + tj]); - } - } - } else if (curveMode == ToneCurveParams::TcMode::FILMLIKE) { // Adobe like - for (int i = istart, ti = 0; i < tH; i++, ti++) { - for (int j = jstart, tj = 0; j < tW; j++, tj++) { - const AdobeToneCurve& userToneCurve = static_cast (customToneCurve1); - userToneCurve.Apply (rtemp[ti * TS + tj], gtemp[ti * TS + tj], btemp[ti * TS + tj]); - } - } - } else if (curveMode == ToneCurveParams::TcMode::SATANDVALBLENDING) { // apply the curve on the saturation and value channels - for (int i = istart, ti = 0; i < tH; i++, ti++) { - for (int j = jstart, tj = 0; j < tW; j++, tj++) { - const SatAndValueBlendingToneCurve& userToneCurve = static_cast (customToneCurve1); - rtemp[ti * TS + tj] = CLIP (rtemp[ti * TS + tj]); - gtemp[ti * TS + tj] = CLIP (gtemp[ti * TS + tj]); - btemp[ti * TS + tj] = CLIP (btemp[ti * TS + tj]); - userToneCurve.Apply (rtemp[ti * TS + tj], gtemp[ti * TS + tj], btemp[ti * TS + tj]); - } - } - } else if (curveMode == ToneCurveParams::TcMode::WEIGHTEDSTD) { // apply the curve to the rgb channels, weighted - const WeightedStdToneCurve& userToneCurve = static_cast (customToneCurve1); - - for (int i = istart, ti = 0; i < tH; i++, ti++) { - for (int j = jstart, tj = 0; j < tW; j++, tj++) { - rtemp[ti * TS + tj] = CLIP (rtemp[ti * TS + tj]); - gtemp[ti * TS + tj] = CLIP (gtemp[ti * TS + tj]); - btemp[ti * TS + tj] = CLIP (btemp[ti * TS + tj]); - userToneCurve.Apply (rtemp[ti * TS + tj], gtemp[ti * TS + tj], btemp[ti * TS + tj]); - } - } - } else if (curveMode == ToneCurveParams::TcMode::LUMINANCE) { // apply the curve to the luminance channel - const LuminanceToneCurve& userToneCurve = static_cast (customToneCurve1); - - for (int i = istart, ti = 0; i < tH; i++, ti++) { - for (int j = jstart, tj = 0; j < tW; j++, tj++) { - rtemp[ti * TS + tj] = CLIP (rtemp[ti * TS + tj]); - gtemp[ti * TS + tj] = CLIP (gtemp[ti * TS + tj]); - btemp[ti * TS + tj] = CLIP (btemp[ti * TS + tj]); - userToneCurve.Apply (rtemp[ti * TS + tj], gtemp[ti * TS + tj], btemp[ti * TS + tj]); - } - } - } else if (curveMode == ToneCurveParams::TcMode::PERCEPTUAL) { // apply curve while keeping color appearance constant - const PerceptualToneCurve& userToneCurve = static_cast (customToneCurve1); - - for (int i = istart, ti = 0; i < tH; i++, ti++) { - for (int j = jstart, tj = 0; j < tW; j++, tj++) { - rtemp[ti * TS + tj] = CLIP (rtemp[ti * TS + tj]); - gtemp[ti * TS + tj] = CLIP (gtemp[ti * TS + tj]); - btemp[ti * TS + tj] = CLIP (btemp[ti * TS + tj]); - userToneCurve.Apply (rtemp[ti * TS + tj], gtemp[ti * TS + tj], btemp[ti * TS + tj], ptc1ApplyState); - } - } - } + customToneCurve(customToneCurve1, curveMode, rtemp, gtemp, btemp, istart, tH, jstart, tW, TS, ptc1ApplyState); } if (editID == EUID_ToneCurve2) { // filling the pipette buffer - for (int i = istart, ti = 0; i < tH; i++, ti++) { - for (int j = jstart, tj = 0; j < tW; j++, tj++) { - editIFloatTmpR[ti * TS + tj] = Color::gamma2curve[rtemp[ti * TS + tj]] / 65535.f; - editIFloatTmpG[ti * TS + tj] = Color::gamma2curve[gtemp[ti * TS + tj]] / 65535.f; - editIFloatTmpB[ti * TS + tj] = Color::gamma2curve[btemp[ti * TS + tj]] / 65535.f; - } - } + fillEditFloat(editIFloatTmpR, editIFloatTmpG, editIFloatTmpB, rtemp, gtemp, btemp, istart, tH, jstart, tW, TS); } if (hasToneCurve2) { - if (curveMode2 == ToneCurveParams::TcMode::STD) { // Standard - for (int i = istart, ti = 0; i < tH; i++, ti++) { - for (int j = jstart, tj = 0; j < tW; j++, tj++) { - const StandardToneCurve& userToneCurve = static_cast (customToneCurve2); - userToneCurve.Apply (rtemp[ti * TS + tj], gtemp[ti * TS + tj], btemp[ti * TS + tj]); - } - } - } else if (curveMode2 == ToneCurveParams::TcMode::FILMLIKE) { // Adobe like - for (int i = istart, ti = 0; i < tH; i++, ti++) { - for (int j = jstart, tj = 0; j < tW; j++, tj++) { - const AdobeToneCurve& userToneCurve = static_cast (customToneCurve2); - userToneCurve.Apply (rtemp[ti * TS + tj], gtemp[ti * TS + tj], btemp[ti * TS + tj]); - } - } - } else if (curveMode2 == ToneCurveParams::TcMode::SATANDVALBLENDING) { // apply the curve on the saturation and value channels - for (int i = istart, ti = 0; i < tH; i++, ti++) { - for (int j = jstart, tj = 0; j < tW; j++, tj++) { - const SatAndValueBlendingToneCurve& userToneCurve = static_cast (customToneCurve2); - userToneCurve.Apply (rtemp[ti * TS + tj], gtemp[ti * TS + tj], btemp[ti * TS + tj]); - } - } - } else if (curveMode2 == ToneCurveParams::TcMode::WEIGHTEDSTD) { // apply the curve to the rgb channels, weighted - const WeightedStdToneCurve& userToneCurve = static_cast (customToneCurve2); - - for (int i = istart, ti = 0; i < tH; i++, ti++) { - for (int j = jstart, tj = 0; j < tW; j++, tj++) { - userToneCurve.Apply (rtemp[ti * TS + tj], gtemp[ti * TS + tj], btemp[ti * TS + tj]); - } - } - } else if (curveMode2 == ToneCurveParams::TcMode::LUMINANCE) { // apply the curve to the luminance channel - const LuminanceToneCurve& userToneCurve = static_cast (customToneCurve2); - - for (int i = istart, ti = 0; i < tH; i++, ti++) { - for (int j = jstart, tj = 0; j < tW; j++, tj++) { - userToneCurve.Apply (rtemp[ti * TS + tj], gtemp[ti * TS + tj], btemp[ti * TS + tj]); - } - } - } else if (curveMode2 == ToneCurveParams::TcMode::PERCEPTUAL) { // apply curve while keeping color appearance constant - const PerceptualToneCurve& userToneCurve = static_cast (customToneCurve2); - - for (int i = istart, ti = 0; i < tH; i++, ti++) { - for (int j = jstart, tj = 0; j < tW; j++, tj++) { - userToneCurve.Apply (rtemp[ti * TS + tj], gtemp[ti * TS + tj], btemp[ti * TS + tj], ptc2ApplyState); - } - } - } + customToneCurve(customToneCurve2, curveMode2, rtemp, gtemp, btemp, istart, tH, jstart, tW, TS, ptc2ApplyState); } if (editID == EUID_RGB_R) { @@ -3760,7 +3816,7 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer } } - if (rCurve || gCurve || bCurve) { // if any of the RGB curves is engaged + if (params->rgbCurves.enabled && (rCurve || gCurve || bCurve)) { // if any of the RGB curves is engaged if (!params->rgbCurves.lumamode) { // normal RGB mode for (int i = istart, ti = 0; i < tH; i++, ti++) { @@ -3873,22 +3929,14 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer } if (sat != 0 || hCurveEnabled || sCurveEnabled || vCurveEnabled) { + const float satby100 = sat / 100.f; for (int i = istart, ti = 0; i < tH; i++, ti++) { for (int j = jstart, tj = 0; j < tW; j++, tj++) { - - const float satby100 = sat / 100.f; - float r = rtemp[ti * TS + tj]; - float g = gtemp[ti * TS + tj]; - float b = btemp[ti * TS + tj]; float h, s, v; - Color::rgb2hsv (r, g, b, h, s, v); - + Color::rgb2hsvtc(rtemp[ti * TS + tj], gtemp[ti * TS + tj], btemp[ti * TS + tj], h, s, v); + h /= 6.f; if (sat > 0) { - s = (1.f - satby100) * s + satby100 * (1.f - SQR (SQR (1.f - min (s, 1.0f)))); - - if (s < 0.f) { - s = 0.f; - } + s = std::max(0.f, intp(satby100, 1.f - SQR(SQR(1.f - std::min(s, 1.0f))), s)); } else { /*if (sat < 0)*/ s *= 1.f + satby100; } @@ -3943,47 +3991,32 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer } - Color::hsv2rgb (h, s, v, rtemp[ti * TS + tj], gtemp[ti * TS + tj], btemp[ti * TS + tj]); + Color::hsv2rgbdcp(h * 6.f, s, v, rtemp[ti * TS + tj], gtemp[ti * TS + tj], btemp[ti * TS + tj]); } } } if (isProPhoto) { // this is a hack to avoid the blue=>black bug (Issue 2141) - for (int i = istart, ti = 0; i < tH; i++, ti++) { - for (int j = jstart, tj = 0; j < tW; j++, tj++) { - float r = rtemp[ti * TS + tj]; - float g = gtemp[ti * TS + tj]; - - if (r == 0.0f || g == 0.0f) { - float b = btemp[ti * TS + tj]; - float h, s, v; - Color::rgb2hsv (r, g, b, h, s, v); - s *= 0.99f; - Color::hsv2rgb (h, s, v, rtemp[ti * TS + tj], gtemp[ti * TS + tj], btemp[ti * TS + tj]); - } - } - } + proPhotoBlue(rtemp, gtemp, btemp, istart, tH, jstart, tW, TS); } if (hasColorToning && !blackwhite) { if (params->colorToning.method == "Splitlr") { - float balanS, balanH; - float reducac = 0.4f; + constexpr float reducac = 0.4f; int preser = 0; if (params->colorToning.lumamode) { preser = 1; } - balanS = 1.f + Balan / 100.f; //balan between 0 and 2 - balanH = 1.f - Balan / 100.f; + const float balanS = 1.f + Balan / 100.f; //balan between 0 and 2 + const float balanH = 1.f - Balan / 100.f; float rh, gh, bh; float rl, gl, bl; float xh, yh, zh; float xl, yl, zl; - float iplow, iphigh; - iplow = (float)ctColorCurve.low; - iphigh = (float)ctColorCurve.high; + const float iplow = ctColorCurve.low; + const float iphigh = ctColorCurve.high; //2 colours ctColorCurve.getVal (iphigh, xh, yh, zh); ctColorCurve.getVal (iplow, xl, yl, zl); @@ -3992,79 +4025,49 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer Color::xyz2rgb (xl, yl, zl, rl, gl, bl, wip); //reteave rgb value with s and l =1 retreavergb (rl, gl, bl); + const float krl = rl / (rl + gl + bl); + const float kgl = gl / (rl + gl + bl); + const float kbl = bl / (rl + gl + bl); retreavergb (rh, gh, bh); - //printf("rl=%f gl=%f bl=%f\n",rl,gl,bl); - + const float krh = rh / (rh + gh + bh); + const float kgh = gh / (rh + gh + bh); + const float kbh = bh / (rh + gh + bh); + strProtect = pow_F(strProtect, 0.4f); + constexpr int mode = 0; for (int i = istart, ti = 0; i < tH; i++, ti++) { for (int j = jstart, tj = 0; j < tW; j++, tj++) { - float r = rtemp[ti * TS + tj]; - float g = gtemp[ti * TS + tj]; - float b = btemp[ti * TS + tj]; - float ro, go, bo; - int mode = 0; - toning2col (r, g, b, ro, go, bo, iplow, iphigh, rl, gl, bl, rh, gh, bh, SatLow, SatHigh, balanS, balanH, reducac, mode, preser, strProtect); - rtemp[ti * TS + tj] = ro; - gtemp[ti * TS + tj] = go; - btemp[ti * TS + tj] = bo; + toning2col(rtemp[ti * TS + tj], gtemp[ti * TS + tj], btemp[ti * TS + tj], rtemp[ti * TS + tj], gtemp[ti * TS + tj], btemp[ti * TS + tj], iplow, iphigh, krl, kgl, kbl, krh, kgh, kbh, SatLow, SatHigh, balanS, balanH, reducac, mode, preser, strProtect); } } } - // color toning with colour + // colour toning with colour else if (params->colorToning.method == "Splitco") { - /* - #if 1 - for (int i=istart,ti=0; i crash - gtemp[ti*TS+tj] = CLIP(go); - btemp[ti*TS+tj] = CLIP(bo); - } - } - #else - */ - float reducac = 0.3f; - int preser = 0; - - //bool execbal = params->colorToning.method=="Splitbal"; - if (params->colorToning.lumamode) { - preser = 1; - } - + constexpr float reducac = 0.3f; + constexpr int mode = 0; + strProtect = pow_F(strProtect, 0.4f); for (int i = istart, ti = 0; i < tH; i++, ti++) { for (int j = jstart, tj = 0; j < tW; j++, tj++) { - float r = rtemp[ti * TS + tj]; - float g = gtemp[ti * TS + tj]; - float b = btemp[ti * TS + tj]; - float lumbefore = 0.299f * r + 0.587f * g + 0.114f * b; + const float r = rtemp[ti * TS + tj]; + const float g = gtemp[ti * TS + tj]; + const float b = btemp[ti * TS + tj]; float ro, go, bo; - int mode = 0; - toningsmh (r, g, b, ro, go, bo, RedLow, GreenLow, BlueLow, RedMed, GreenMed, BlueMed, RedHigh, GreenHigh, BlueHigh, reducac, mode, strProtect); - float lumafter = 0.299f * ro + 0.587f * go + 0.114f * bo; - float preserv = 1.f; + toningsmh(r, g, b, ro, go, bo, RedLow, GreenLow, BlueLow, RedMed, GreenMed, BlueMed, RedHigh, GreenHigh, BlueHigh, reducac, mode, strProtect); - if (preser == 1) { - preserv = lumbefore / lumafter; + if (params->colorToning.lumamode) { + const float lumbefore = 0.299f * r + 0.587f * g + 0.114f * b; + const float lumafter = 0.299f * ro + 0.587f * go + 0.114f * bo; + const float preserv = lumbefore / lumafter; + ro *= preserv; + go *= preserv; + bo *= preserv; } - ro *= preserv; - go *= preserv; - bo *= preserv; - ro = CLIP (ro); - go = CLIP (go); - bo = CLIP (bo); - rtemp[ti * TS + tj] = ro; - gtemp[ti * TS + tj] = go; - btemp[ti * TS + tj] = bo; + rtemp[ti * TS + tj] = CLIP(ro); + gtemp[ti * TS + tj] = CLIP(go); + btemp[ti * TS + tj] = CLIP(bo); } } - -//#endif } //colortoning with shift color XYZ or Lch @@ -4132,29 +4135,25 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer // Luminance = (0.299f*r + 0.587f*g + 0.114f*b) - float h, s, l; - Color::rgb2hsl (r, g, b, h, s, l); + float s, l; + Color::rgb2slfloat (r, g, b, s, l); - float l_ = Color::gamma_srgb (l * 65535.f) / 65535.f; + float l_ = Color::gammatab_srgb1[l * 65535.f]; // get the opacity and tweak it to preserve saturated colors - float opacity; + float opacity = 0.f; if (ctOpacityCurve) { opacity = (1.f - min (s / satLimit, 1.f) * (1.f - satLimitOpacity)) * ctOpacityCurve.lutOpacityCurve[l_ * 500.f]; } - if (!ctOpacityCurve) { - opacity = 0.f; - } - float r2, g2, b2; ctColorCurve.getVal (l_, r2, g2, b2); // get the color from the color curve float h2, s2, l2; - Color::rgb2hsl (r2, g2, b2, h2, s2, l2); // transform this new color to hsl + Color::rgb2hslfloat (r2, g2, b2, h2, s2, l2); // transform this new color to hsl - Color::hsl2rgb (h2, s + ((1.f - s) * (1.f - l) * 0.7f), l, r2, g2, b2); + Color::hsl2rgbfloat (h2, s + ((1.f - s) * (1.f - l) * 0.7f), l, r2, g2, b2); rtemp[ti * TS + tj] = r + (r2 - r) * opacity; // merge the color to the old color, depending on the opacity gtemp[ti * TS + tj] = g + (g2 - g) * opacity; @@ -4166,13 +4165,7 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer // filling the pipette buffer if (editID == EUID_BlackWhiteBeforeCurve) { - for (int i = istart, ti = 0; i < tH; i++, ti++) { - for (int j = jstart, tj = 0; j < tW; j++, tj++) { - editIFloatTmpR[ti * TS + tj] = Color::gamma2curve[rtemp[ti * TS + tj]] / 65535.f; - editIFloatTmpG[ti * TS + tj] = Color::gamma2curve[gtemp[ti * TS + tj]] / 65535.f; - editIFloatTmpB[ti * TS + tj] = Color::gamma2curve[btemp[ti * TS + tj]] / 65535.f; - } - } + fillEditFloat(editIFloatTmpR, editIFloatTmpG, editIFloatTmpB, rtemp, gtemp, btemp, istart, tH, jstart, tW, TS); } else if (editID == EUID_BlackWhiteLuminance) { for (int i = istart, ti = 0; i < tH; i++, ti++) { for (int j = jstart, tj = 0; j < tW; j++, tj++) { @@ -4465,53 +4458,27 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer if (!blackwhite) { + if (editImgFloat || editWhatever) { + for (int i = istart, ti = 0; i < tH; i++, ti++) { + for (int j = jstart, tj = 0; j < tW; j++, tj++) { + + // filling the pipette buffer by the content of the temp pipette buffers + if (editImgFloat) { + editImgFloat->r (i, j) = editIFloatTmpR[ti * TS + tj]; + editImgFloat->g (i, j) = editIFloatTmpG[ti * TS + tj]; + editImgFloat->b (i, j) = editIFloatTmpB[ti * TS + tj]; + } else if (editWhatever) { + editWhatever->v (i, j) = editWhateverTmp[ti * TS + tj]; + } + } + } + } // ready, fill lab for (int i = istart, ti = 0; i < tH; i++, ti++) { - for (int j = jstart, tj = 0; j < tW; j++, tj++) { - - // filling the pipette buffer by the content of the temp pipette buffers - if (editImgFloat) { - editImgFloat->r (i, j) = editIFloatTmpR[ti * TS + tj]; - editImgFloat->g (i, j) = editIFloatTmpG[ti * TS + tj]; - editImgFloat->b (i, j) = editIFloatTmpB[ti * TS + tj]; - } else if (editWhatever) { - editWhatever->v (i, j) = editWhateverTmp[ti * TS + tj]; - } - - float r = rtemp[ti * TS + tj]; - float g = gtemp[ti * TS + tj]; - float b = btemp[ti * TS + tj]; - - float x = toxyz[0][0] * r + toxyz[0][1] * g + toxyz[0][2] * b; - float y = toxyz[1][0] * r + toxyz[1][1] * g + toxyz[1][2] * b; - float z = toxyz[2][0] * r + toxyz[2][1] * g + toxyz[2][2] * b; - - float fx, fy, fz; - - fx = (x < 65535.0f ? Color::cachef[x] : 327.68f * std::cbrt (x / MAXVALF)); - fy = (y < 65535.0f ? Color::cachef[y] : 327.68f * std::cbrt (y / MAXVALF)); - fz = (z < 65535.0f ? Color::cachef[z] : 327.68f * std::cbrt (z / MAXVALF)); - - lab->L[i][j] = (116.0f * fy - 5242.88f); //5242.88=16.0*327.68; - lab->a[i][j] = (500.0f * (fx - fy) ); - lab->b[i][j] = (200.0f * (fy - fz) ); - - //test for color accuracy - /* - float fy = (0.00862069 * lab->L[i][j])/327.68 + 0.137932; // (L+16)/116 - float fx = (0.002 * lab->a[i][j])/327.68 + fy; - float fz = fy - (0.005 * lab->b[i][j])/327.68; - - float x_ = 65535*Lab2xyz(fx)*Color::D50x; - float y_ = 65535*Lab2xyz(fy); - float z_ = 65535*Lab2xyz(fz)*Color::D50z; - - int R,G,B; - xyz2srgb(x_,y_,z_,R,G,B); - r=(float)R; g=(float)G; b=(float)B; - float xxx=1; - */ - } + Color::RGB2Lab(&rtemp[ti * TS], >emp[ti * TS], &btemp[ti * TS], &(lab->L[i][jstart]), &(lab->a[i][jstart]), &(lab->b[i][jstart]), toxyz, tW - jstart); + } + if (hasColorToningLabGrid) { + colorToningLabGrid(lab, jstart, tW, istart, tH, false); } } else { // black & white // Auto channel mixer needs whole image, so we now copy to tmpImage and close the tiled processing @@ -4534,8 +4501,6 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer } } - free (buffer); - if (editIFloatBuffer) { free (editIFloatBuffer); } @@ -4682,89 +4647,59 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer } } - //colortoning with black and white + //colour toning with black and white if (hasColorToning) { if (params->colorToning.method == "Splitco") { - /* - #if 1 - for (int i=istart,ti=0; i crash - gtemp[ti*TS+tj] = CLIP(go); - btemp[ti*TS+tj] = CLIP(bo); - } - } - #else - */ - int preser = 0; - - if (params->colorToning.lumamode) { - preser = 1; - } - - float reducac = 0.3f; + constexpr float reducac = 0.5f; + constexpr int mode = 1; #ifdef _OPENMP #pragma omp parallel for schedule(dynamic, 5) #endif for (int i = 0; i < tH; i++) { for (int j = 0; j < tW; j++) { - float r = tmpImage->r (i, j); - float g = tmpImage->g (i, j); - float b = tmpImage->b (i, j); + const float r = tmpImage->r (i, j); + const float g = tmpImage->g (i, j); + const float b = tmpImage->b (i, j); - float lumbefore = 0.299f * r + 0.587f * g + 0.114f * b; + const float lumbefore = 0.299f * r + 0.587f * g + 0.114f * b; - if (lumbefore < 65000.f && lumbefore > 500.f) { //reduct artifacts for highlights an extrem shadows + if (lumbefore < 65000.f && lumbefore > 500.f) { //reduce artefacts for highlights and extreme shadows float ro, go, bo; - int mode = 1; - toningsmh (r, g, b, ro, go, bo, RedLow, GreenLow, BlueLow, RedMed, GreenMed, BlueMed, RedHigh, GreenHigh, BlueHigh, reducac, mode, strProtect); - float lumafter = 0.299f * ro + 0.587f * go + 0.114f * bo; - float preserv = 1.f; + toningsmh(r, g, b, ro, go, bo, RedLow, GreenLow, BlueLow, RedMed, GreenMed, BlueMed, RedHigh, GreenHigh, BlueHigh, reducac, mode, strProtect); - if (preser == 1) { - preserv = lumbefore / lumafter; + if (params->colorToning.lumamode) { + const float lumafter = 0.299f * ro + 0.587f * go + 0.114f * bo; + const float preserv = lumbefore / lumafter; + ro *= preserv; + go *= preserv; + bo *= preserv; } - ro *= preserv; - go *= preserv; - bo *= preserv; - ro = CLIP (ro); - go = CLIP (go); - bo = CLIP (bo); - tmpImage->r (i, j) = ro; - tmpImage->g (i, j) = go; - tmpImage->b (i, j) = bo; + tmpImage->r(i, j) = CLIP(ro); + tmpImage->g(i, j) = CLIP(go); + tmpImage->b(i, j) = CLIP(bo); } } } - -//#endif } else if (params->colorToning.method == "Splitlr") { - float balanS, balanH; - float reducac = 0.4f; + constexpr float reducac = 0.4f; int preser = 0; if (params->colorToning.lumamode) { preser = 1; } - balanS = 1.f + Balan / 100.f; //balan between 0 and 2 - balanH = 1.f - Balan / 100.f; + const float balanS = 1.f + Balan / 100.f; //balan between 0 and 2 + const float balanH = 1.f - Balan / 100.f; float rh, gh, bh; float rl, gl, bl; float xh, yh, zh; float xl, yl, zl; - float iplow, iphigh; - iplow = (float)ctColorCurve.low; - iphigh = (float)ctColorCurve.high; + const float iplow = ctColorCurve.low; + const float iphigh = ctColorCurve.high; //2 colours ctColorCurve.getVal (iphigh, xh, yh, zh); @@ -4775,23 +4710,23 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer //retrieve rgb value with s and l =1 retreavergb (rl, gl, bl); + const float krl = rl / (rl + gl + bl); + const float kgl = gl / (rl + gl + bl); + const float kbl = bl / (rl + gl + bl); + retreavergb (rh, gh, bh); + const float krh = rh / (rh + gh + bh); + const float kgh = gh / (rh + gh + bh); + const float kbh = bh / (rh + gh + bh); + strProtect = pow_F(strProtect, 0.4f); + constexpr int mode = 1; #ifdef _OPENMP #pragma omp parallel for schedule(dynamic, 5) #endif for (int i = 0; i < tH; i++) { for (int j = 0; j < tW; j++) { - float r = tmpImage->r (i, j); - float g = tmpImage->g (i, j); - float b = tmpImage->b (i, j); - - float ro, go, bo; - int mode = 1; - toning2col (r, g, b, ro, go, bo, iplow, iphigh, rl, gl, bl, rh, gh, bh, SatLow, SatHigh, balanS, balanH, reducac, mode, preser, strProtect); - tmpImage->r (i, j) = ro; - tmpImage->g (i, j) = go; - tmpImage->b (i, j) = bo; + toning2col(tmpImage->r(i, j), tmpImage->g(i, j), tmpImage->b(i, j), tmpImage->r(i, j), tmpImage->g(i, j), tmpImage->b(i, j), iplow, iphigh, krl, kgl, kbl, krh, kgh, kbh, SatLow, SatHigh, balanS, balanH, reducac, mode, preser, strProtect); } } } @@ -4867,31 +4802,31 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer for (int i = 0; i < tH; i++) { for (int j = 0; j < tW; j++) { - float r = tmpImage->r (i, j); - float g = tmpImage->g (i, j); - float b = tmpImage->b (i, j); + float r = tmpImage->r(i, j); + float g = tmpImage->g(i, j); + float b = tmpImage->b(i, j); // Luminance = (0.299f*r + 0.587f*g + 0.114f*b) - float h, s, l; - Color::rgb2hsl (r, g, b, h, s, l); + float s, l; + Color::rgb2slfloat(r, g, b, s, l); - float l_ = Color::gamma_srgb (l * 65535.f) / 65535.f; + float l_ = Color::gammatab_srgb1[l * 65535.f]; - // get the opacity and tweak it to preserve saturated colors + // get the opacity and tweak it to preserve saturated colours float opacity = ctOpacityCurve.lutOpacityCurve[l_ * 500.f] / 4.f; float r2, g2, b2; - ctColorCurve.getVal (l_, r2, g2, b2); // get the color from the color curve + ctColorCurve.getVal(l_, r2, g2, b2); // get the colour from the colour curve float h2, s2, l2; - Color::rgb2hsl (r2, g2, b2, h2, s2, l2); // transform this new color to hsl + Color::rgb2hslfloat(r2, g2, b2, h2, s2, l2); // transform this new colour to hsl - Color::hsl2rgb (h2, s2, l, r2, g2, b2); + Color::hsl2rgbfloat(h2, s2, l, r2, g2, b2); - tmpImage->r (i, j) = r + (r2 - r) * opacity; - tmpImage->g (i, j) = g + (g2 - g) * opacity; - tmpImage->b (i, j) = b + (b2 - b) * opacity; + tmpImage->r(i, j) = intp(opacity, r2, r); + tmpImage->g(i, j) = intp(opacity, g2, g); + tmpImage->b(i, j) = intp(opacity, b2, b); } } } @@ -4925,24 +4860,9 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer #endif for (int i = 0; i < tH; i++) { - for (int j = 0; j < tW; j++) { - float r = tmpImage->r (i, j); - float g = tmpImage->g (i, j); - float b = tmpImage->b (i, j); - - float x = toxyz[0][0] * r + toxyz[0][1] * g + toxyz[0][2] * b; - float y = toxyz[1][0] * r + toxyz[1][1] * g + toxyz[1][2] * b; - float z = toxyz[2][0] * r + toxyz[2][1] * g + toxyz[2][2] * b; - - float fx, fy, fz; - - fx = (x < MAXVALF ? Color::cachef[x] : 327.68f * std::cbrt (x / MAXVALF)); - fy = (y < MAXVALF ? Color::cachef[y] : 327.68f * std::cbrt (y / MAXVALF)); - fz = (z < MAXVALF ? Color::cachef[z] : 327.68f * std::cbrt (z / MAXVALF)); - - lab->L[i][j] = 116.0f * fy - 5242.88f; //5242.88=16.0*327.68; - lab->a[i][j] = 500.0f * (fx - fy); - lab->b[i][j] = 200.0f * (fy - fz); + Color::RGB2Lab(tmpImage->r(i), tmpImage->g(i), tmpImage->b(i), lab->L[i], lab->a[i], lab->b[i], toxyz, tW); + if (hasColorToningLabGrid) { + colorToningLabGrid(lab, 0, tW, i, i + 1, false); } } @@ -4964,6 +4884,11 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer if (vCurveEnabled) { delete vCurve; } + + if (params->localContrast.enabled) { + // Alberto's local contrast + localContrast(lab); + } } /** @@ -5036,11 +4961,8 @@ void ImProcFunctions::secondeg_end (float reducac, float vinf, float &aa, float **/ void ImProcFunctions::secondeg_begin (float reducac, float vend, float &aam, float &bbm) { - float zrmd = reducac; //linear = 0.5 - float v0m = vend; - float mem = vend / 2.f; //(0. + 0.8)/2.f - aam = (1.f - zrmd * v0m / mem) / (v0m * v0m - mem * v0m); // - bbm = (1.f - aam * v0m * v0m) / v0m; + aam = (2.f - 4.f * reducac) / (vend * vend); + bbm = 1.f / vend - aam * vend; } @@ -5052,130 +4974,101 @@ void ImProcFunctions::secondeg_begin (float reducac, float vend, float &aam, flo * @param ro red output values [0..65535] * @param go green output values [0..65535] * @param bo blue output values [0..65535] -* @param RedLow [0..1] value after transformations of sliders [-100..100] for shadows -* @param GreenLow [0..1] value after transformations of sliders [-100..100] for shadows -* @param BlueLow [0..1] value after transformations of sliders [-100..100] for shadows -* @param RedMed [0..1] value after transformations of sliders [-100..100] for midtones -* @param GreenMed [0..1] value after transformations of sliders [-100..100] for midtones -* @param BlueMed [0..1] value after transformations of sliders [-100..100] for midtones -* @param RedHigh [0..1] value after transformations of sliders [-100..100] for highlights -* @param GreenHigh [0..1] value after transformations of sliders [-100..100] for highlights -* @param BlueHigh [0..1] value after transformations of sliders [-100..100] for highlights +* @param RedLow [-1..1] value after transformations of sliders [-100..100] for shadows +* @param GreenLow [-1..1] value after transformations of sliders [-100..100] for shadows +* @param BlueLow [-1..1] value after transformations of sliders [-100..100] for shadows +* @param RedMed [-1..1] value after transformations of sliders [-100..100] for midtones +* @param GreenMed [-1..1] value after transformations of sliders [-100..100] for midtones +* @param BlueMed [-1..1] value after transformations of sliders [-100..100] for midtones +* @param RedHigh [-1..1] value after transformations of sliders [-100..100] for highlights +* @param GreenHigh [-1..1] value after transformations of sliders [-100..100] for highlights +* @param BlueHigh [-1..1] value after transformations of sliders [-100..100] for highlights * @param reducac value of the reduction in the middle of the range for second degree increse or decrease action -* @param mode ? -* @param preser whether to preserve luminance (if 1) or not +* @param mode 0 = colour, 1 = Black and White +* @param strProtect ? **/ -void ImProcFunctions::toningsmh (float r, float g, float b, float &ro, float &go, float &bo, float RedLow, float GreenLow, float BlueLow, float RedMed, float GreenMed, float BlueMed, float RedHigh, float GreenHigh, float BlueHigh, float reducac, int mode, float strProtect) +void ImProcFunctions::toningsmh(float r, float g, float b, float &ro, float &go, float &bo, float RedLow, float GreenLow, float BlueLow, float RedMed, float GreenMed, float BlueMed, float RedHigh, float GreenHigh, float BlueHigh, float reducac, int mode, float strProtect) { - float bmu = mode == 1 ? 0.5f : 0.4f; - float RedL = 1.f + (RedLow - 1.f) * 0.4f; - float GreenL = 1.f + (GreenLow - 1.f) * 0.4f; - float BlueL = 1.f + (BlueLow - 1.f) * bmu; - float h, s, v; - Color::rgb2hsv (r, g, b, h, s, v); - float ksat = 1.f; - float ksatlow = 1.f; -// float s_0=0.55f; -// float s_1=0.85f; - /* - if(mode==0) {//color - if(s < s_0) ksat=SQR((1.f/s_0)*s); - if(s > s_1) ksat=SQR((1.f/(s_1-1.f))*s - (1.f/(s_1-1.f))); - } - */ + const float v = max(r, g, b) / 65535.f; float kl = 1.f; - float rlo = 1.f; //0.4 0.5 - float rlm = 1.5f; //1.1 - float rlh = 2.2f; //1.1 - float rlob = bmu; //for BW old mode + float rlo; //0.4 0.5 + float rlm; //1.1 + float rlh; //1.1 + float rlob; //for BW old mode - if (mode == 0) { //color - rlo *= pow_F (strProtect, 0.4f); //0.5 ==> 0.75 - rlh *= pow_F (strProtect, 0.4f); - rlm *= pow_F (strProtect, 0.4f); + if (mode == 0) { //colour + rlo = rlob = strProtect; //0.5 ==> 0.75 + rlh = 2.2f * strProtect; + rlm = 1.5f * strProtect; + constexpr float v0 = 0.15f; + //second degree + + if (v > v0) { + float aa, bb, cc; + secondeg_end (reducac, v0, aa, bb, cc); + kl = aa * v * v + bb * v + cc; //verified ==> exact + } else { + float aab, bbb; + secondeg_begin (0.7f, v0, aab, bbb); + kl = aab * v * v + bbb * v; + } } else { //bw coefficient to preserve same results as before for satlimtopacity = 0.5 (default) rlo = strProtect * 0.8f; //0.4 rlob = strProtect; //0.5 rlm = strProtect * 2.2f; //1.1 rlh = strProtect * 2.4f; //1.2 - } - - if (mode == 0) { - rlob = rlo; - } - - - //fixed value of reducac=0.3 - //secondeg_end (reducac, v0, aa, bb, cc); - if (mode == 1) { - reducac = 0.5f; //black and white mode - if (v > 0.15f) { - kl = (-1.f / 0.85f) * v + (1.f) / 0.85f; //Low light ==> decrease action after v=0.15 - } - } else { //color - float v0 = 0.15f; - //second degree - float aa, bb, cc; - secondeg_end (reducac, v0, aa, bb, cc); - float aab, bbb; - secondeg_begin (0.7f, v0, aab, bbb); - - if (v > v0) { - kl = aa * v * v + bb * v + cc; //verified ==> exact - } else if (mode == 0) { - kl = aab * v * v + bbb * v; //ksatlow=ksat; + kl = (-1.f / 0.85f) * v + 1.f / 0.85f; //Low light ==> decrease action after v=0.15 } } - if (RedLow != 1.f) { - RedL = 1.f + (RedLow - 1.f) * kl * ksat * rlo; //0.4 - - if (RedLow >= 1.f) { - g -= 20000.f * (RedL - 1.f) * ksatlow; - b -= 20000.f * (RedL - 1.f) * ksatlow; + { + const float corr = 20000.f * RedLow * kl * rlo; + if (RedLow > 0.f) { + g -= corr; + b -= corr; } else { - r += 20000.f * (RedL - 1.f) * ksatlow; + r += corr; } - r = CLIP (r); - g = CLIP (g); - b = CLIP (b); + r = CLIP(r); + g = CLIP(g); + b = CLIP(b); } - if (GreenLow != 1.f) { - GreenL = 1.f + (GreenLow - 1.f) * kl * ksat * rlo; //0.4 - - if (GreenLow >= 1.f) { - r -= 20000.f * (GreenL - 1.f) * ksatlow; - b -= 20000.f * (GreenL - 1.f) * ksatlow; + { + const float corr = 20000.f * GreenLow * kl * rlo; + if (GreenLow > 0.f) { + r -= corr; + b -= corr; } else { - g += 20000.f * (GreenL - 1.f) * ksatlow; + g += corr; } - r = CLIP (r); - b = CLIP (b); - g = CLIP (g); + r = CLIP(r); + b = CLIP(b); + g = CLIP(g); } - if (BlueLow != 1.f) { - BlueL = 1.f + (BlueLow - 1.f) * kl * ksat * rlob; - if (BlueLow >= 1.f) { - r -= 20000.f * (BlueL - 1.f) * ksatlow; - g -= 20000.f * (BlueL - 1.f) * ksatlow; + { + const float corr = 20000.f * BlueLow * kl * rlob; + + if (BlueLow > 0.f) { + r -= corr; + g -= corr; } else { - b += 20000.f * (BlueL - 1.f) * ksatlow; + b += corr; } - r = CLIP (r); - g = CLIP (g); - b = CLIP (b); + r = CLIP(r); + g = CLIP(g); + b = CLIP(b); } // mid tones float km; - float v0m = 0.5f; //max action + constexpr float v0m = 0.5f; //max action if (v < v0m) { float aam, bbm; @@ -5189,134 +5082,112 @@ void ImProcFunctions::toningsmh (float r, float g, float b, float &ro, float &go km = aamm * v * v + bbmm * v + ccmm; //verification good } - float RedM = 1.f + (RedMed - 1.f) * rlm; + { + const float RedM = RedMed * km * rlm; - if (RedMed != 1.f) { - RedM = 1.f + (RedMed - 1.f) * km * rlm; - - if (RedMed >= 1.f) { - r += 20000.f * (RedM - 1.f); - g -= 10000.f * (RedM - 1.f); - b -= 10000.f * (RedM - 1.f); - r = CLIP (r); - g = CLIP (g); - b = CLIP (b); + if (RedMed > 0.f) { + r += 20000.f * RedM; + g -= 10000.f * RedM; + b -= 10000.f * RedM; } else { - r += 10000.f * (RedM - 1.f); - g -= 20000.f * (RedM - 1.f); - b -= 20000.f * (RedM - 1.f); - r = CLIP (r); - g = CLIP (g); - b = CLIP (b); + r += 10000.f * RedM; + g -= 20000.f * RedM; + b -= 20000.f * RedM; } + r = CLIP(r); + g = CLIP(g); + b = CLIP(b); } - float GreenM = 1.f + (GreenMed - 1.f) * rlm; + { + const float GreenM = GreenMed * km * rlm; - if (GreenMed != 1.f) { - GreenM = 1.f + (GreenMed - 1.f) * km * rlm; - - if (GreenMed >= 1.f) { - r -= 10000.f * (GreenM - 1.f); - g += 20000.f * (GreenM - 1.f); - b -= 10000.f * (GreenM - 1.f); - r = CLIP (r); - g = CLIP (g); - b = CLIP (b); + if (GreenMed > 0.f) { + r -= 10000.f * GreenM; + g += 20000.f * GreenM; + b -= 10000.f * GreenM; } else { - r -= 20000.f * (GreenM - 1.f); - g += 10000.f * (GreenM - 1.f); - b -= 20000.f * (GreenM - 1.f); - r = CLIP (r); - g = CLIP (g); - b = CLIP (b); + r -= 20000.f * GreenM; + g += 10000.f * GreenM; + b -= 20000.f * GreenM; } + r = CLIP(r); + g = CLIP(g); + b = CLIP(b); } - float BlueM = 1.f + (BlueMed - 1.f) * rlm; + { + const float BlueM = BlueMed * km * rlm; - if (BlueMed != 1.f) { - BlueM = 1.f + (BlueMed - 1.f) * km * rlm; - - if (BlueMed >= 1.f) { - r -= 10000.f * (BlueM - 1.f); - g -= 10000.f * (BlueM - 1.f); - b += 20000.f * (BlueM - 1.f); - r = CLIP (r); - g = CLIP (g); - b = CLIP (b); + if (BlueMed > 0.f) { + r -= 10000.f * BlueM; + g -= 10000.f * BlueM; + b += 20000.f * BlueM; } else { - r -= 20000.f * (BlueM - 1.f); - g -= 20000.f * (BlueM - 1.f); - b += 10000.f * (BlueM - 1.f); - r = CLIP (r); - g = CLIP (g); - b = CLIP (b); + r -= 20000.f * BlueM; + g -= 20000.f * BlueM; + b += 10000.f * BlueM; } + r = CLIP(r); + g = CLIP(g); + b = CLIP(b); } //high tones - float kh; - kh = 1.f; - float v00 = 0.8f; //max action + constexpr float v00 = 0.8f; //max action float aa0, bb0; secondeg_begin (reducac, v00, aa0, bb0); -// float hmu=1.5f; -// if(mode==1) hmu=1.2f;//for BW old mode - if (v > v00) { - kh = (-1.f / (1.f - v00)) * v + (1.f) / (1.f - v00); //High tones + float kh; + if (v > v00) { //max action + kh = (1.f - v) / (1.f - v00); //High tones } else { - kh = aa0 * v * v + bb0 * v; //verification = good + kh = v * (aa0 * v + bb0); //verification = good } - float RedH = 1.f + (RedHigh - 1.f) * rlh; - float GreenH = 1.f + (GreenHigh - 1.f) * rlh; - float BlueH = 1.f + (BlueHigh - 1.f) * rlh; //1.2 + { + const float corr = 20000.f * RedHigh * kh * rlh; //1.2 - if (RedHigh != 1.f) { - RedH = 1.f + (RedHigh - 1.f) * kh * rlh; //1.2 - - if (RedHigh >= 1.f) { - r += 20000.f * (RedH - 1.f); - r = CLIP (r); + if (RedHigh > 0.f) { + r += corr; } else { - g -= 20000.f * (RedH - 1.f); - b -= 20000.f * (RedH - 1.f); + g -= corr; + b -= corr; } - g = CLIP (g); - b = CLIP (b); + r = CLIP(r); + g = CLIP(g); + b = CLIP(b); } - if (GreenHigh != 1.f) { - GreenH = 1.f + (GreenHigh - 1.f) * kh * rlh; //1.2 + { + const float corr = 20000.f * GreenHigh * kh * rlh; //1.2 - if (GreenHigh >= 1.f) { - g += 20000.f * (GreenH - 1.f); - g = CLIP (g); + if (GreenHigh > 0.f) { + g += corr; } else { - r -= 20000.f * (GreenH - 1.f); - b -= 20000.f * (GreenH - 1.f); + r -= corr; + b -= corr; } - r = CLIP (r); - b = CLIP (b); + r = CLIP(r); + g = CLIP(g); + b = CLIP(b); } - if (BlueHigh != 1.f) { - BlueH = 1.f + (BlueHigh - 1.f) * kh * rlh; //1.2 + { + const float corr = 20000.f * BlueHigh * kh * rlh; //1.2 - if (BlueHigh >= 1.f) { - b += 20000.f * (BlueH - 1.f); - b = CLIP (b); + if (BlueHigh > 0.f) { + b += corr; } else { - r -= 20000.f * (BlueH - 1.f); - g -= 20000.f * (BlueH - 1.f); + r -= corr; + g -= corr; } - r = CLIP (r); - g = CLIP (g); + r = CLIP(r); + g = CLIP(g); + b = CLIP(b); } ro = r; @@ -5336,164 +5207,101 @@ void ImProcFunctions::toningsmh (float r, float g, float b, float &ro, float &go * @param balanH [0..1] balance for highlights (same slider than for balanS) * @param reducac value of the reduction in the middle of the range for second degree, increase or decrease action **/ -void ImProcFunctions::toning2col (float r, float g, float b, float &ro, float &go, float &bo, float iplow, float iphigh, float rl, float gl, float bl, float rh, float gh, float bh, float SatLow, float SatHigh, float balanS, float balanH, float reducac, int mode, int preser, float strProtect) +void ImProcFunctions::toning2col (float r, float g, float b, float &ro, float &go, float &bo, float iplow, float iphigh, float krl, float kgl, float kbl, float krh, float kgh, float kbh, float SatLow, float SatHigh, float balanS, float balanH, float reducac, int mode, int preser, float strProtect) { - float lumbefore = 0.299f * r + 0.587f * g + 0.114f * b; - float h, s, l; - Color::rgb2hsl (r, g, b, h, s, l); - float v; - Color::rgb2hsv (r, g, b, h, s, v); - float ksat = 1.f; - float ksatlow = 1.f; - /* - if(mode==0) {//color - if(s < s_0) ksat=SQR((1.f/s_0)*s); - if(s > s_1) ksat=SQR((1.f/(s_1-1.f))*s - (1.f/(s_1-1.f))); - } - */ - float kl = 1.f; - float rlo = 1.f; - float rlh = 2.2f; - rlo *= pow_F (strProtect, 0.4f); //0.5 ==> 0.75 transfered value for more action - rlh *= pow_F (strProtect, 0.4f); + const float lumbefore = 0.299f * r + 0.587f * g + 0.114f * b; + const float v = max(r, g, b) / 65535.f; + + const float rlo = strProtect; //0.5 ==> 0.75 transfered value for more action + const float rlh = 2.2f * strProtect; + //low tones //second degree float aa, bb, cc; //fixed value of reducac =0.4; secondeg_end (reducac, iplow, aa, bb, cc); - float aab, bbb; + float aab, bbb; secondeg_begin (0.7f, iplow, aab, bbb); - if (v > iplow) { - kl = aa * v * v + bb * v + cc; - } else if (mode == 0) { - kl = aab * v * v + bbb * v; - } - - if (SatLow > 0.f) { - //rl gl bl - float krl = rl / (rl + gl + bl); - float kgl = gl / (rl + gl + bl); - float kbl = bl / (rl + gl + bl); - float RedL, GreenL, BlueL; - - if (g < 20000.f || b < 20000.f || r < 20000.f) { - float kmgb = min (r, g, b); //I have tested ...0.85 compromise... - kl *= pow ((kmgb / 20000.f), 0.85f); + float kl = 1.f; + if (v > iplow) { + kl = aa * v * v + bb * v + cc; + } else if (mode == 0) { + kl = aab * v * v + bbb * v; + } + const float kmgb = min(r, g, b); + if (kmgb < 20000.f) { + //I have tested ...0.85 compromise... + kl *= pow_F ((kmgb / 20000.f), 0.85f); } - RedL = 1.f + (SatLow * krl) * kl * ksat * rlo * balanS; //0.4 + const float factor = 20000.f * SatLow * kl * rlo * balanS; if (krl > 0.f) { - g -= 20000.f * (RedL - 1.f) * ksatlow; - b -= 20000.f * (RedL - 1.f) * ksatlow; + g -= factor * krl; + b -= factor * krl; } - g = CLIP (g); - b = CLIP (b); - - GreenL = 1.f + (SatLow * kgl) * kl * ksat * rlo * balanS; //0.4 + g = CLIP(g); + b = CLIP(b); if (kgl > 0.f) { - r -= 20000.f * (GreenL - 1.f) * ksatlow; - b -= 20000.f * (GreenL - 1.f) * ksatlow; + r -= factor * kgl; + b -= factor * kgl; } - r = CLIP (r); - b = CLIP (b); - - BlueL = 1.f + (SatLow * kbl) * kl * ksat * rlo * balanS; //0.4 + r = CLIP(r); + b = CLIP(b); if (kbl > 0.f) { - r -= 20000.f * (BlueL - 1.f) * ksatlow; - g -= 20000.f * (BlueL - 1.f) * ksatlow; + r -= factor * kbl; + g -= factor * kbl; } - r = CLIP (r); - g = CLIP (g); + r = CLIP(r); + g = CLIP(g); } //high tones - float kh = 1.f; float aa0, bb0; //fixed value of reducac ==0.4; secondeg_begin (reducac, iphigh, aa0, bb0); - if (v > iphigh) { - kh = (-1.f / (1.f - iphigh)) * v + (1.f) / (1.f - iphigh); //Low light ==> decrease action after iplow - } else { - kh = aa0 * v * v + bb0 * v; - } - - - if (g > 45535.f || b > 45535.f || r > 45535.f) { - float kmgb = max (r, g, b); - float cora = 1.f / (45535.f - 65535.f); - float corb = 1.f - cora * 45535.f; - float cor = kmgb * cora + corb; - kh *= cor; - /* best algo if necessary with non linear response...little differences and more time! - float aa=1.f /(pow(45535.f,0.65f) - pow(65535.f,0.65f)); - float bb=1.f-aa*pow(45535.f,0.65f); - float cor=aa*pow(kmbg,0.65f)+bb; - kh*=cor;*/ - } - - if (SatHigh > 0.f) { - float RedH, GreenH, BlueH; - float krh = rh / (rh + gh + bh); - float kgh = gh / (rh + gh + bh); - float kbh = bh / (rh + gh + bh); - RedH = 1.f + (SatHigh * krh) * kh * rlh * balanH; //1.2 - - if (krh > 0.f) { - r += 20000.f * (RedH - 1.f); - r = CLIP (r); + float kh = 1.f; + if (v > iphigh) { + kh = (1.f - v) / (1.f - iphigh); //Low light ==> decrease action after iplow + } else { + kh = aa0 * v * v + bb0 * v; } - g = CLIP (g); - b = CLIP (b); - - GreenH = 1.f + (SatHigh * kgh) * kh * rlh * balanH; //1.2 - - if (kgh > 0.f) { - g += 20000.f * (GreenH - 1.f); - g = CLIP (g); + const float kmgb = max(r, g, b); + if (kmgb > 45535.f) { + constexpr float cora = 1.f / (45535.f - 65535.f); + constexpr float corb = 1.f - cora * 45535.f; + kh *= kmgb * cora + corb; } + const float factor = 20000.f * SatHigh * kh * rlh * balanH; + r += factor * (krh > 0.f ? krh : 0.f); + g += factor * (kgh > 0.f ? kgh : 0.f); + b += factor * (kbh > 0.f ? kbh : 0.f); - r = CLIP (r); - b = CLIP (b); - BlueH = 1.f + (SatHigh * kbh) * kh * rlh * balanH; //1.2 - - if (kbh > 0.f) { - b += 20000.f * (BlueH - 1.f); - b = CLIP (b); - } - - r = CLIP (r); - g = CLIP (g); + r = CLIP(r); + g = CLIP(g); + b = CLIP(b); } - float lumafter = 0.299f * r + 0.587f * g + 0.114f * b; float preserv = 1.f; - if (preser == 1) { + float lumafter = 0.299f * r + 0.587f * g + 0.114f * b; preserv = lumbefore / lumafter; } - //float preserv=lumbefore/lumafter; - ro = r; - go = g; - bo = b; - ro *= preserv; - go *= preserv; - bo *= preserv; - ro = CLIP (ro); - go = CLIP (go); - bo = CLIP (bo); + ro = CLIP(r * preserv); + go = CLIP(g * preserv); + bo = CLIP(b * preserv); } /** @@ -5585,6 +5393,10 @@ void ImProcFunctions::luminanceCurve (LabImage* lold, LabImage* lnew, LUTf & cur SSEFUNCTION void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW, LabImage* lold, LabImage* lnew, LUTf & acurve, LUTf & bcurve, LUTf & satcurve, LUTf & lhskcurve, LUTf & clcurve, LUTf & curve, bool utili, bool autili, bool butili, bool ccutili, bool cclutili, bool clcutili, LUTu &histCCurve, LUTu &histLCurve) { + if (!params->labCurve.enabled) { + return; + } + int W = lold->W; int H = lold->H; // lhskcurve.dump("lh_curve"); @@ -7179,4 +6991,41 @@ SSEFUNCTION void ImProcFunctions::lab2rgb (const LabImage &src, Imagefloat &dst, //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +// adapted from the "color correction" module of Darktable. Original copyright follows +/* + copyright (c) 2009--2010 johannes hanika. + + darktable is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + darktable 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 darktable. If not, see . +*/ +void ImProcFunctions::colorToningLabGrid(LabImage *lab, int xstart, int xend, int ystart, int yend, bool MultiThread) +{ + const float factor = ColorToningParams::LABGRID_CORR_MAX * 3.f; + float a_scale = (params->colorToning.labgridAHigh - params->colorToning.labgridALow) / factor; + float a_base = params->colorToning.labgridALow; + float b_scale = (params->colorToning.labgridBHigh - params->colorToning.labgridBLow) / factor; + float b_base = params->colorToning.labgridBLow; + +#ifdef _OPENMP + #pragma omp parallel for if (multiThread) +#endif + for (int y = ystart; y < yend; ++y) { + for (int x = xstart; x < xend; ++x) { + lab->a[y][x] += lab->L[y][x] * a_scale + a_base; + lab->b[y][x] += lab->L[y][x] * b_scale + b_base; + } + } +} + } diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index 66b00e8f6..720f835da 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -239,9 +239,9 @@ public: void transform (Imagefloat* original, Imagefloat* transformed, int cx, int cy, int sx, int sy, int oW, int oH, int fW, int fH, const FramesMetaData *metadata, int rawRotationDeg, bool fullImage); float resizeScale (const ProcParams* params, int fw, int fh, int &imw, int &imh); void lab2monitorRgb (LabImage* lab, Image8* image); - void resize (Image16* src, Image16* dst, float dScale); + void resize (Imagefloat* src, Imagefloat* dst, float dScale); void Lanczos (const LabImage* src, LabImage* dst, float scale); - void Lanczos (const Image16* src, Image16* dst, float scale); + void Lanczos (const Imagefloat* src, Imagefloat* dst, float scale); void deconvsharpening (float** luminance, float** buffer, int W, int H, const SharpeningParams &sharpenParam); void MLsharpen (LabImage* lab);// Manuel's clarity / sharpening @@ -348,9 +348,11 @@ public: void BadpixelsLab (LabImage * src, LabImage * dst, double radius, int thresh, int mode, float skinprot, float chrom); void ToneMapFattal02(Imagefloat *rgb); + void localContrast(LabImage *lab); + void colorToningLabGrid(LabImage *lab, int xstart, int xend, int ystart, int yend, bool MultiThread); Image8* lab2rgb (LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm); - Image16* lab2rgb16 (LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, GammaValues *ga = nullptr); + Imagefloat* lab2rgbOut (LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, GammaValues *ga = nullptr); // CieImage *ciec; bool transCoord (int W, int H, int x, int y, int w, int h, int& xv, int& yv, int& wv, int& hv, double ascaleDef = -1, const LensCorrection *pLCPMap = nullptr); diff --git a/rtengine/init.cc b/rtengine/init.cc index 8d2cf9174..0d4560c6b 100644 --- a/rtengine/init.cc +++ b/rtengine/init.cc @@ -16,6 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ +#include #include "../rtgui/profilestorecombobox.h" #include "rtengine.h" #include "iccstore.h" @@ -108,10 +109,15 @@ int init (const Settings* s, Glib::ustring baseDir, Glib::ustring userSettingsDi void cleanup () { - ProcParams::cleanup (); Color::cleanup (); RawImageSource::cleanup (); +#ifdef RT_FFTW3F_OMP + fftwf_cleanup_threads(); +#else + fftwf_cleanup(); +#endif + } StagedImageProcessor* StagedImageProcessor::create (InitialImage* initialImage) diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index abef0a878..ba2fe6ffb 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -262,7 +262,7 @@ Image8* ImProcFunctions::lab2rgb (LabImage* lab, int cx, int cy, int cw, int ch, * If a custom gamma profile can be created, divide by 327.68, convert to xyz and apply the custom gamma transform * otherwise divide by 327.68, convert to xyz and apply the sRGB transform, before converting with gamma2curve */ -Image16* ImProcFunctions::lab2rgb16 (LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, GammaValues *ga) +Imagefloat* ImProcFunctions::lab2rgbOut (LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, GammaValues *ga) { if (cx < 0) { @@ -281,7 +281,7 @@ Image16* ImProcFunctions::lab2rgb16 (LabImage* lab, int cx, int cy, int cw, int ch = lab->H - cy; } - Image16* image = new Image16 (cw, ch); + Imagefloat* image = new Imagefloat (cw, ch); cmsHPROFILE oprof = nullptr; if (ga) { @@ -300,11 +300,12 @@ Image16* ImProcFunctions::lab2rgb16 (LabImage* lab, int cx, int cy, int cw, int } lcmsMutex->lock (); cmsHPROFILE iprof = cmsCreateLab4Profile(nullptr); - cmsHTRANSFORM hTransform = cmsCreateTransform (iprof, TYPE_Lab_FLT, oprof, TYPE_RGB_16, icm.outputIntent, flags); + cmsHTRANSFORM hTransform = cmsCreateTransform (iprof, TYPE_Lab_FLT, oprof, TYPE_RGB_FLT, icm.outputIntent, flags); lcmsMutex->unlock (); image->ExecCMSTransform(hTransform, *lab, cx, cy); cmsDeleteTransform(hTransform); + image->normalizeFloatTo65535(); } else { #ifdef _OPENMP #pragma omp parallel for schedule(dynamic,16) if (multiThread) @@ -329,9 +330,9 @@ Image16* ImProcFunctions::lab2rgb16 (LabImage* lab, int cx, int cy, int cw, int Color::xyz2srgb(x_, y_, z_, R, G, B); - image->r(i - cy, j - cx) = (int)Color::gamma2curve[CLIP(R)]; - image->g(i - cy, j - cx) = (int)Color::gamma2curve[CLIP(G)]; - image->b(i - cy, j - cx) = (int)Color::gamma2curve[CLIP(B)]; + image->r(i - cy, j - cx) = Color::gamma2curve[CLIP(R)]; + image->g(i - cy, j - cx) = Color::gamma2curve[CLIP(G)]; + image->b(i - cy, j - cx) = Color::gamma2curve[CLIP(B)]; } } } diff --git a/rtengine/iplocalcontrast.cc b/rtengine/iplocalcontrast.cc new file mode 100644 index 000000000..24739fb6b --- /dev/null +++ b/rtengine/iplocalcontrast.cc @@ -0,0 +1,70 @@ +/* -*- C++ -*- + * + * This file is part of RawTherapee. + * + * Ported from G'MIC by Alberto Griggio + * + * The original implementation in G'MIC was authored by Arto Huotari, and was + * released under the CeCILL free software license (see + * http://www.cecill.info/licences/Licence_CeCILL_V2-en.html) + * + * RawTherapee is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RawTherapee is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RawTherapee. If not, see . + */ + +#ifdef _OPENMP +#include +#endif + +#include "improcfun.h" +#include "gauss.h" +#include "array2D.h" + +namespace rtengine { + +void ImProcFunctions::localContrast(LabImage *lab) +{ + if (!params->localContrast.enabled) { + return; + } + + const int width = lab->W; + const int height = lab->H; + const float a = params->localContrast.amount; + const float dark = params->localContrast.darkness; + const float light = params->localContrast.lightness; + array2D buf(width, height); + const float sigma = params->localContrast.radius / scale; + +#ifdef _OPENMP + #pragma omp parallel if(multiThread) +#endif + gaussianBlur(lab->L, buf, width, height, sigma); + +#ifdef _OPENMP + #pragma omp parallel for if(multiThread) +#endif + for (int y = 0; y < height; ++y) { + for (int x = 0; x < width; ++x) { + float bufval = (lab->L[y][x] - buf[y][x]) * a; + + if (dark != 1 || light != 1) { + bufval *= (bufval > 0.f) ? light : dark; + } + + lab->L[y][x] += bufval; + } + } +} + +} // namespace rtengine diff --git a/rtengine/ipresize.cc b/rtengine/ipresize.cc index 644e180c7..ba559b2a0 100644 --- a/rtengine/ipresize.cc +++ b/rtengine/ipresize.cc @@ -46,7 +46,7 @@ static inline float Lanc (float x, float a) } } -void ImProcFunctions::Lanczos (const Image16* src, Image16* dst, float scale) +void ImProcFunctions::Lanczos (const Imagefloat* src, Imagefloat* dst, float scale) { const float delta = 1.0f / scale; @@ -106,6 +106,9 @@ void ImProcFunctions::Lanczos (const Image16* src, Image16* dst, float scale) // weights for interpolation in y direction float w[support]; + for (auto& f : w) { + f = 0.f; + } // sum of weights used for normalization float ws = 0.0f; @@ -159,9 +162,9 @@ void ImProcFunctions::Lanczos (const Image16* src, Image16* dst, float scale) b += wh[k] * lb[jj]; } - dst->r (i, j) = CLIP (static_cast (r)); - dst->g (i, j) = CLIP (static_cast (g)); - dst->b (i, j) = CLIP (static_cast (b)); + dst->r (i, j) = CLIP (r);//static_cast (r)); + dst->g (i, j) = CLIP (g);//static_cast (g)); + dst->b (i, j) = CLIP (b);//static_cast (b)); } } @@ -396,7 +399,7 @@ float ImProcFunctions::resizeScale (const ProcParams* params, int fw, int fh, in return (float)dScale; } -void ImProcFunctions::resize (Image16* src, Image16* dst, float dScale) +void ImProcFunctions::resize (Imagefloat* src, Imagefloat* dst, float dScale) { #ifdef PROFILE time_t t1 = clock(); diff --git a/rtengine/ipwavelet.cc b/rtengine/ipwavelet.cc index 189d61ddf..04db1c314 100644 --- a/rtengine/ipwavelet.cc +++ b/rtengine/ipwavelet.cc @@ -1876,13 +1876,10 @@ void ImProcFunctions::WaveletcontAllL(LabImage * labco, float ** varhue, float * // I adapted the principle but have profoundly changed the algorithm // One can 1) change all parameters and found good parameters; //one can also chnage in calckoe - float edd = settings->ed_detec; - float eddlow = settings->ed_low; //5 to 40 - // float eddlipinfl=settings->ed_lipinfl; - // float eddlipampl=settings->ed_lipampl; + float edd = 3.f; + float eddlow = 15.f; float eddlipinfl = 0.005f * cp.edgsens + 0.4f; float eddlipampl = 1.f + cp.edgampl / 50.f; - // float eddlow=5.f + cp.edgampl/2.f;//settings->ed_low;//5 to 40 if(cp.detectedge) { //enabled Lipschitz control...more memory..more time... @@ -2581,11 +2578,11 @@ void ImProcFunctions::ContAllL (float *koeLi[12], float *maxkoeLi, bool lipschit scaleskip[sc] = scales[sc] / skip; } - float t_r = settings->top_right; - float t_l = settings->top_left; - float b_r = settings->bot_right; - float edd = settings->ed_detec; - float eddstrength = settings->ed_detecStr; + float t_r = 40.f; + float t_l = 10.f; + float b_r = 75.f; + float edd = 3.f; + float eddstrength = 1.3f; float aedstr = (eddstrength - 1.f) / 90.f; float bedstr = 1.f - 10.f * aedstr; diff --git a/rtengine/lcp.cc b/rtengine/lcp.cc index 15e68d9f1..baaa88767 100644 --- a/rtengine/lcp.cc +++ b/rtengine/lcp.cc @@ -361,7 +361,7 @@ void rtengine::LCPProfile::calcParams( const float focDist = aPersModel[pm]->focDist; const float focDistLog = std::log(focDist) + euler; - double meanErr; + double meanErr = 0.0; if (aPersModel[pm]->hasModeData(mode)) { double lowMeanErr = 0.0; diff --git a/rtengine/opthelper.h b/rtengine/opthelper.h index d6af9a745..6b1830aa5 100644 --- a/rtengine/opthelper.h +++ b/rtengine/opthelper.h @@ -55,8 +55,13 @@ #ifdef __GNUC__ #define RESTRICT __restrict__ - #define LIKELY(x) __builtin_expect (!!(x), 1) - #define UNLIKELY(x) __builtin_expect (!!(x), 0) + #if __SIZEOF_POINTER__ == 4 && __GNUC__ >= 7 // there seems to be a bug with __builtin_expect on 32bit systems when using gcc >= 7 + #define LIKELY(x) (x) + #define UNLIKELY(x) (x) + #else + #define LIKELY(x) __builtin_expect (!!(x), 1) + #define UNLIKELY(x) __builtin_expect (!!(x), 0) + #endif #if (!defined(WIN32) || defined( __x86_64__ )) #define ALIGNED64 __attribute__ ((aligned (64))) #define ALIGNED16 __attribute__ ((aligned (16))) diff --git a/rtengine/pixelshift.cc b/rtengine/pixelshift.cc index 256aaaf63..511e4c95d 100644 --- a/rtengine/pixelshift.cc +++ b/rtengine/pixelshift.cc @@ -1,6 +1,6 @@ //////////////////////////////////////////////////////////////// // -// Algorithm for Pentax Pixel Shift raw files with motion detection +// Algorithm for Pentax/Sony Pixel Shift raw files with motion detection // // Copyright (C) 2016 - 2017 Ingo Weyrich // @@ -294,12 +294,11 @@ void calcFrameBrightnessFactor(unsigned int frame, uint32_t datalen, LUTsetProgressStr(Glib::ustring::compose(M("TP_RAW_DMETHOD_PROGRESSBAR"), RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::PIXELSHIFT))); plistener->setProgress(0.0); @@ -531,6 +566,9 @@ void RawImageSource::pixelshift(int winx, int winy, int winw, int winh, const RA } else if(model.find("K-1") != string::npos) { nRead = nReadK1[nReadIndex]; eperIsoModel = ePerIsoK1; + } else if(model.find("ILCE-7RM3") != string::npos) { + nRead = nReadILCE7RM3[nReadIndex]; + eperIsoModel = ePerIsoILCE7RM3; } else { // as long as we don't have values for Pentax KP, we use the values from K-70 nRead = nReadK70[nReadIndex]; eperIsoModel = ePerIsoK70; @@ -887,11 +925,25 @@ void RawImageSource::pixelshift(int winx, int winy, int winw, int winh, const RA const float blend = smoothFactor == 0.f ? 1.f : pow_F(std::max(psMask[i][j] - 1.f, 0.f), smoothFactor); #endif redDest[j + offsX] = intp(blend, redDest[j + offsX], psRed[i][j] ); - greenDest[j + offsX] = intp(blend, greenDest[j + offsX], ((*rawDataFrames[1 - offset])[i - offset + 1][j] * greenBrightness[1 - offset] + (*rawDataFrames[3 - offset])[i + offset][j + 1] * greenBrightness[3 - offset]) * 0.5f); + if(bayerParams.pixelShiftOneGreen) { + int greenFrame = (1 - offset != 0) ? 1 - offset : 3 - offset; + int greenJ = (1 - offset != 0) ? j : j + 1; + int greenI = (1 - offset != 0) ? i - offset + 1 : i + offset; + greenDest[j + offsX] = intp(blend, greenDest[j + offsX], (*rawDataFrames[greenFrame])[greenI][greenJ] * greenBrightness[greenFrame]); + } else { + greenDest[j + offsX] = intp(blend, greenDest[j + offsX], ((*rawDataFrames[1 - offset])[i - offset + 1][j] * greenBrightness[1 - offset] + (*rawDataFrames[3 - offset])[i + offset][j + 1] * greenBrightness[3 - offset]) * 0.5f); + } blueDest[j + offsX] = intp(blend, blueDest[j + offsX], psBlue[i][j]); } else { redDest[j + offsX] = psRed[i][j]; - greenDest[j + offsX] = ((*rawDataFrames[1 - offset])[i - offset + 1][j] * greenBrightness[1 - offset] + (*rawDataFrames[3 - offset])[i + offset][j + 1] * greenBrightness[3 - offset]) * 0.5f; + if(bayerParams.pixelShiftOneGreen) { + int greenFrame = (1 - offset != 0) ? 1 - offset : 3 - offset; + int greenJ = (1 - offset != 0) ? j : j + 1; + int greenI = (1 - offset != 0) ? i - offset + 1 : i + offset; + greenDest[j + offsX] = (*rawDataFrames[greenFrame])[greenI][greenJ] * greenBrightness[greenFrame]; + } else { + greenDest[j + offsX] = ((*rawDataFrames[1 - offset])[i - offset + 1][j] * greenBrightness[1 - offset] + (*rawDataFrames[3 - offset])[i + offset][j + 1] * greenBrightness[3 - offset]) * 0.5f; + } blueDest[j + offsX] = psBlue[i][j]; } } @@ -924,7 +976,14 @@ void RawImageSource::pixelshift(int winx, int winy, int winw, int winh, const RA for(; j < winw - 1; ++j) { // set red, green and blue values - green[i][j] = ((*rawDataFrames[1 - offset])[i - offset + 1][j] * greenBrightness[1 - offset] + (*rawDataFrames[3 - offset])[i + offset][j + 1] * greenBrightness[3 - offset]) * 0.5f; + if(bayerParams.pixelShiftOneGreen) { + int greenFrame = (1 - offset != 0) ? 1 - offset : 3 - offset; + int greenJ = (1 - offset != 0) ? j : j + 1; + int greenI = (1 - offset != 0) ? i - offset + 1 : i + offset; + green[i][j] = (*rawDataFrames[greenFrame])[greenI][greenJ] * greenBrightness[greenFrame]; + } else { + green[i][j] = ((*rawDataFrames[1 - offset])[i - offset + 1][j] * greenBrightness[1 - offset] + (*rawDataFrames[3 - offset])[i + offset][j + 1] * greenBrightness[3 - offset]) * 0.5f; + } nonGreenDest0[j] = (*rawDataFrames[(offset << 1) + offset])[i][j + offset] * ngbright[ng][(offset << 1) + offset]; nonGreenDest1[j] = (*rawDataFrames[2 - offset])[i + 1][j - offset + 1] * ngbright[ng ^ 1][2 - offset]; offset ^= 1; // 0 => 1 or 1 => 0 diff --git a/rtengine/procevents.h b/rtengine/procevents.h index 53f33d4e3..8c2d8942f 100644 --- a/rtengine/procevents.h +++ b/rtengine/procevents.h @@ -26,7 +26,7 @@ namespace rtengine // Aligned so the first entry starts on line 30 -enum ProcEvent { +enum ProcEventCode { EvPhotoLoaded = 0, EvProfileLoaded = 1, EvProfileChanged = 2, @@ -511,18 +511,41 @@ enum ProcEvent { EvCATgreensc = 481, EvCATybscen = 482, EvCATAutoyb = 483, - // profiled lens correction new events EvLensCorrMode = 484, EvLensCorrLensfunCamera = 485, EvLensCorrLensfunLens = 486, - // Fattal tone mapping EvTMFattalEnabled = 487, EvTMFattalThreshold = 488, EvTMFattalAmount = 489, + EvWBEnabled = 490, + EvRGBEnabled = 491, + EvLEnabled = 492, + EvPixelShiftOneGreen = 493, NUMOFEVENTS }; + + +class ProcEvent { +public: + ProcEvent(): code_(0) {} + ProcEvent(ProcEventCode code): code_(code) {} + explicit ProcEvent(int code): code_(code) {} + operator int() { return code_; } + +private: + int code_; +}; + + +inline bool operator==(ProcEvent a, ProcEvent b) { return int(a) == int(b); } +inline bool operator==(ProcEvent a, ProcEventCode b) { return int(a) == int(b); } +inline bool operator==(ProcEventCode a, ProcEvent b) { return int(a) == int(b); } +inline bool operator!=(ProcEvent a, ProcEvent b) { return int(a) != int(b); } +inline bool operator!=(ProcEvent a, ProcEventCode b) { return int(a) != int(b); } +inline bool operator!=(ProcEventCode a, ProcEvent b) { return int(a) != int(b); } + } #endif diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 661efdef9..3c5a1b9a8 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -331,7 +331,8 @@ ToneCurveParams::ToneCurveParams() : saturation(0), shcompr(50), hlcompr(0), - hlcomprthresh(33) + hlcomprthresh(33), + histmatching(false) { } @@ -353,7 +354,8 @@ bool ToneCurveParams::operator ==(const ToneCurveParams& other) const && saturation == other.saturation && shcompr == other.shcompr && hlcompr == other.hlcompr - && hlcomprthresh == other.hlcomprthresh; + && hlcomprthresh == other.hlcomprthresh + && histmatching == other.histmatching; } bool ToneCurveParams::operator !=(const ToneCurveParams& other) const @@ -361,22 +363,6 @@ bool ToneCurveParams::operator !=(const ToneCurveParams& other) const return !(*this == other); } -bool ToneCurveParams::HLReconstructionNecessary(const LUTu& histRedRaw, const LUTu& histGreenRaw, const LUTu& histBlueRaw) -{ - if (options.rtSettings.verbose) { - printf("histRedRaw[ 0]=%07d, histGreenRaw[ 0]=%07d, histBlueRaw[ 0]=%07d\nhistRedRaw[255]=%07d, histGreenRaw[255]=%07d, histBlueRaw[255]=%07d\n", - histRedRaw[0], histGreenRaw[0], histBlueRaw[0], histRedRaw[255], histGreenRaw[255], histBlueRaw[255]); - } - - return - histRedRaw[255] > 50 - || histGreenRaw[255] > 50 - || histBlueRaw[255] > 50 - || histRedRaw[0] > 50 - || histGreenRaw[0] > 50 - || histBlueRaw[0] > 50; -} - RetinexParams::RetinexParams() : enabled(false), cdcurve{ @@ -501,6 +487,7 @@ void RetinexParams::getCurves(RetinextransmissionCurve &transmissionCurveLUT, Re } LCurveParams::LCurveParams() : + enabled(false), lcurve{ DCT_Linear }, @@ -540,7 +527,8 @@ LCurveParams::LCurveParams() : bool LCurveParams::operator ==(const LCurveParams& other) const { return - lcurve == other.lcurve + enabled == other.enabled + && lcurve == other.lcurve && acurve == other.acurve && bcurve == other.bcurve && cccurve == other.cccurve @@ -563,6 +551,7 @@ bool LCurveParams::operator !=(const LCurveParams& other) const } RGBCurvesParams::RGBCurvesParams() : + enabled(false), lumamode(false), rcurve{ DCT_Linear @@ -579,7 +568,8 @@ RGBCurvesParams::RGBCurvesParams() : bool RGBCurvesParams::operator ==(const RGBCurvesParams& other) const { return - lumamode == other.lumamode + enabled == other.enabled + && lumamode == other.lumamode && rcurve == other.rcurve && gcurve == other.gcurve && bcurve == other.bcurve; @@ -590,6 +580,36 @@ bool RGBCurvesParams::operator !=(const RGBCurvesParams& other) const return !(*this == other); } + +LocalContrastParams::LocalContrastParams(): + enabled(false), + radius(80), + amount(0.2), + darkness(1.0), + lightness(1.0) +{ +} + + +bool LocalContrastParams::operator==(const LocalContrastParams &other) const +{ + return + enabled == other.enabled + && radius == other.radius + && amount == other.amount + && darkness == other.darkness + && lightness == other.lightness; +} + + +bool LocalContrastParams::operator!=(const LocalContrastParams &other) const +{ + return !(*this == other); +} + + +const double ColorToningParams::LABGRID_CORR_MAX = 12000.f; + ColorToningParams::ColorToningParams() : enabled(false), autosat(true), @@ -660,7 +680,11 @@ ColorToningParams::ColorToningParams() : bluehigh(0.0), satlow(0.0), sathigh(0.0), - lumamode(true) + lumamode(true), + labgridALow(0.0), + labgridBLow(0.0), + labgridAHigh(0.0), + labgridBHigh(0.0) { } @@ -692,7 +716,11 @@ bool ColorToningParams::operator ==(const ColorToningParams& other) const && bluehigh == other.bluehigh && satlow == other.satlow && sathigh == other.sathigh - && lumamode == other.lumamode; + && lumamode == other.lumamode + && labgridALow == other.labgridALow + && labgridBLow == other.labgridBLow + && labgridAHigh == other.labgridAHigh + && labgridBHigh == other.labgridBHigh; } bool ColorToningParams::operator !=(const ColorToningParams& other) const @@ -1098,6 +1126,7 @@ bool VibranceParams::operator !=(const VibranceParams& other) const } WBParams::WBParams() : + enabled(true), method("Camera"), temperature(6504), green(1.0), @@ -1109,7 +1138,8 @@ WBParams::WBParams() : bool WBParams::operator ==(const WBParams& other) const { return - method == other.method + enabled == other.enabled + && method == other.method && temperature == other.temperature && green == other.green && equal == other.equal @@ -1484,7 +1514,7 @@ bool SpotParams::operator !=(const SpotParams& other) const FattalToneMappingParams::FattalToneMappingParams() : enabled(false), threshold(0), - amount(1) + amount(30) { } @@ -1508,7 +1538,6 @@ SHParams::SHParams() : htonalwidth(80), shadows(0), stonalwidth(80), - localcontrast(0), radius(40) { } @@ -1522,7 +1551,6 @@ bool SHParams::operator ==(const SHParams& other) const && htonalwidth == other.htonalwidth && shadows == other.shadows && stonalwidth == other.stonalwidth - && localcontrast == other.localcontrast && radius == other.radius; } @@ -1538,7 +1566,7 @@ CropParams::CropParams() : w(15000), h(15000), fixratio(true), - ratio("3:2"), + ratio("As Image"), orientation("As Image"), guide("Frame") { @@ -1801,6 +1829,7 @@ bool VignettingParams::operator !=(const VignettingParams& other) const } ChannelMixerParams::ChannelMixerParams() : + enabled(false), red{ 100, 0, @@ -1821,6 +1850,9 @@ ChannelMixerParams::ChannelMixerParams() : bool ChannelMixerParams::operator ==(const ChannelMixerParams& other) const { + if (enabled != other.enabled) { + return false; + } for (unsigned int i = 0; i < 3; ++i) { if ( red[i] != other.red[i] @@ -2309,6 +2341,7 @@ bool DirPyrEqualizerParams::operator !=(const DirPyrEqualizerParams& other) cons } HSVEqualizerParams::HSVEqualizerParams() : + enabled(false), hcurve{ FCT_Linear }, @@ -2324,7 +2357,8 @@ HSVEqualizerParams::HSVEqualizerParams() : bool HSVEqualizerParams::operator ==(const HSVEqualizerParams& other) const { return - hcurve == other.hcurve + enabled == other.enabled + && hcurve == other.hcurve && scurve == other.scurve && vcurve == other.vcurve; } @@ -2391,6 +2425,7 @@ RAWParams::BayerSensor::BayerSensor() : pixelShiftSmoothFactor(0.7), pixelShiftExp0(false), pixelShiftLmmse(false), + pixelShiftOneGreen(false), pixelShiftEqualBright(false), pixelShiftEqualBrightChannel(false), pixelShiftNonGreenCross(true), @@ -2440,6 +2475,7 @@ bool RAWParams::BayerSensor::operator ==(const BayerSensor& other) const && pixelShiftSmoothFactor == other.pixelShiftSmoothFactor && pixelShiftExp0 == other.pixelShiftExp0 && pixelShiftLmmse == other.pixelShiftLmmse + && pixelShiftOneGreen == other.pixelShiftOneGreen && pixelShiftEqualBright == other.pixelShiftEqualBright && pixelShiftEqualBrightChannel == other.pixelShiftEqualBrightChannel && pixelShiftNonGreenCross == other.pixelShiftNonGreenCross @@ -2478,6 +2514,7 @@ void RAWParams::BayerSensor::setPixelShiftDefaults() pixelShiftSmoothFactor = 0.7; pixelShiftExp0 = false; pixelShiftLmmse = false; + pixelShiftOneGreen = false; pixelShiftEqualBright = false; pixelShiftEqualBrightChannel = false; pixelShiftNonGreenCross = true; @@ -2613,6 +2650,23 @@ Glib::ustring RAWParams::getFlatFieldBlurTypeString(FlatFieldBlurType type) return getFlatFieldBlurTypeStrings()[toUnderlying(type)]; } + +MetaDataParams::MetaDataParams(): + mode(MetaDataParams::TUNNEL) +{ +} + +bool MetaDataParams::operator==(const MetaDataParams &other) const +{ + return mode == other.mode; +} + +bool MetaDataParams::operator!=(const MetaDataParams &other) const +{ + return !(*this == other); +} + + ProcParams::ProcParams () { setDefaults (); @@ -2626,6 +2680,8 @@ void ProcParams::setDefaults () rgbCurves = RGBCurvesParams(); + localContrast = LocalContrastParams(); + colorToning = ColorToningParams(); sharpenEdge = SharpenEdgeParams(); @@ -2699,6 +2755,7 @@ void ProcParams::setDefaults () raw = RAWParams(); + metadata = MetaDataParams(); exif.clear (); iptc.clear (); @@ -2739,6 +2796,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->toneCurve.hlcompr, "Exposure", "HighlightCompr", toneCurve.hlcompr, keyFile); saveToKeyfile(!pedited || pedited->toneCurve.hlcomprthresh, "Exposure", "HighlightComprThreshold", toneCurve.hlcomprthresh, keyFile); saveToKeyfile(!pedited || pedited->toneCurve.shcompr, "Exposure", "ShadowCompr", toneCurve.shcompr, keyFile); + saveToKeyfile(!pedited || pedited->toneCurve.histmatching, "Exposure", "HistogramMatching", toneCurve.histmatching, keyFile); // Highlight recovery saveToKeyfile(!pedited || pedited->toneCurve.hrenabled, "HLRecovery", "Enabled", toneCurve.hrenabled, keyFile); @@ -2793,7 +2851,16 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->retinex.transmissionCurve, "Retinex", "TransmissionCurve", retinex.transmissionCurve, keyFile); saveToKeyfile(!pedited || pedited->retinex.gaintransmissionCurve, "Retinex", "GainTransmissionCurve", retinex.gaintransmissionCurve, keyFile); +// Local contrast + saveToKeyfile(!pedited || pedited->localContrast.enabled, "Local Contrast", "Enabled", localContrast.enabled, keyFile); + saveToKeyfile(!pedited || pedited->localContrast.radius, "Local Contrast", "Radius", localContrast.radius, keyFile); + saveToKeyfile(!pedited || pedited->localContrast.amount, "Local Contrast", "Amount", localContrast.amount, keyFile); + saveToKeyfile(!pedited || pedited->localContrast.darkness, "Local Contrast", "Darkness", localContrast.darkness, keyFile); + saveToKeyfile(!pedited || pedited->localContrast.lightness, "Local Contrast", "Lightness", localContrast.lightness, keyFile); + + // Channel mixer + saveToKeyfile(!pedited || pedited->chmixer.enabled, "Channel Mixer", "Enabled", chmixer.enabled, keyFile); if (!pedited || pedited->chmixer.red[0] || pedited->chmixer.red[1] || pedited->chmixer.red[2]) { Glib::ArrayHandle rmix (chmixer.red, 3, Glib::OWNERSHIP_NONE); keyFile.set_integer_list ("Channel Mixer", "Red", rmix); @@ -2859,6 +2926,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->blackwhite.afterCurve, "Black & White", "AfterCurve", blackwhite.afterCurve, keyFile); // Luma curve + saveToKeyfile(!pedited || pedited->labCurve.enabled, "Luminance Curve", "Enabled", labCurve.enabled, keyFile); saveToKeyfile(!pedited || pedited->labCurve.brightness, "Luminance Curve", "Brightness", labCurve.brightness, keyFile); saveToKeyfile(!pedited || pedited->labCurve.contrast, "Luminance Curve", "Contrast", labCurve.contrast, keyFile); saveToKeyfile(!pedited || pedited->labCurve.chromaticity, "Luminance Curve", "Chromaticity", labCurve.chromaticity, keyFile); @@ -2914,6 +2982,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->sharpenMicro.uniformity, "SharpenMicro", "Uniformity", sharpenMicro.uniformity, keyFile); // WB + saveToKeyfile(!pedited || pedited->wb.enabled, "White Balance", "Enabled", wb.enabled, keyFile); saveToKeyfile(!pedited || pedited->wb.method, "White Balance", "Setting", wb.method, keyFile); saveToKeyfile(!pedited || pedited->wb.temperature, "White Balance", "Temperature", wb.temperature, keyFile); saveToKeyfile(!pedited || pedited->wb.green, "White Balance", "Green", wb.green, keyFile); @@ -3037,7 +3106,6 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->sh.htonalwidth, "Shadows & Highlights", "HighlightTonalWidth", sh.htonalwidth, keyFile); saveToKeyfile(!pedited || pedited->sh.shadows, "Shadows & Highlights", "Shadows", sh.shadows, keyFile); saveToKeyfile(!pedited || pedited->sh.stonalwidth, "Shadows & Highlights", "ShadowTonalWidth", sh.stonalwidth, keyFile); - saveToKeyfile(!pedited || pedited->sh.localcontrast, "Shadows & Highlights", "LocalContrast", sh.localcontrast, keyFile); saveToKeyfile(!pedited || pedited->sh.radius, "Shadows & Highlights", "Radius", sh.radius, keyFile); // Crop @@ -3139,7 +3207,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->icm.working, "Color Management", "WorkingProfile", icm.working, keyFile); saveToKeyfile(!pedited || pedited->icm.output, "Color Management", "OutputProfile", icm.output, keyFile); saveToKeyfile( - !pedited || icm.outputIntent, + !pedited || pedited->icm.outputIntent, "Color Management", "OutputProfileIntent", { @@ -3292,6 +3360,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->dirpyrequalizer.hueskin, "Directional Pyramid Equalizer", "Hueskin", dirpyrequalizer.hueskin.toVector(), keyFile); // HSV Equalizer + saveToKeyfile(!pedited || pedited->hsvequalizer.enabled, "HSV Equalizer", "Enabled", hsvequalizer.enabled, keyFile); saveToKeyfile(!pedited || pedited->hsvequalizer.hcurve, "HSV Equalizer", "HCurve", hsvequalizer.hcurve, keyFile); saveToKeyfile(!pedited || pedited->hsvequalizer.scurve, "HSV Equalizer", "SCurve", hsvequalizer.scurve, keyFile); saveToKeyfile(!pedited || pedited->hsvequalizer.vcurve, "HSV Equalizer", "VCurve", hsvequalizer.vcurve, keyFile); @@ -3301,6 +3370,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->filmSimulation.clutFilename, "Film Simulation", "ClutFilename", filmSimulation.clutFilename, keyFile); saveToKeyfile(!pedited || pedited->filmSimulation.strength, "Film Simulation", "Strength", filmSimulation.strength, keyFile); + saveToKeyfile(!pedited || pedited->rgbCurves.enabled, "RGB Curves", "Enabled", rgbCurves.enabled, keyFile); saveToKeyfile(!pedited || pedited->rgbCurves.lumamode, "RGB Curves", "LumaMode", rgbCurves.lumamode, keyFile); saveToKeyfile(!pedited || pedited->rgbCurves.rcurve, "RGB Curves", "rCurve", rgbCurves.rcurve, keyFile); saveToKeyfile(!pedited || pedited->rgbCurves.gcurve, "RGB Curves", "gCurve", rgbCurves.gcurve, keyFile); @@ -3333,6 +3403,10 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->colorToning.shadowsColSat, "ColorToning", "ShadowsColorSaturation", colorToning.shadowsColSat.toVector(), keyFile); saveToKeyfile(!pedited || pedited->colorToning.clcurve, "ColorToning", "ClCurve", colorToning.clcurve, keyFile); saveToKeyfile(!pedited || pedited->colorToning.cl2curve, "ColorToning", "Cl2Curve", colorToning.cl2curve, keyFile); + saveToKeyfile(!pedited || pedited->colorToning.labgridALow, "ColorToning", "LabGridALow", colorToning.labgridALow, keyFile); + saveToKeyfile(!pedited || pedited->colorToning.labgridBLow, "ColorToning", "LabGridBLow", colorToning.labgridBLow, keyFile); + saveToKeyfile(!pedited || pedited->colorToning.labgridAHigh, "ColorToning", "LabGridAHigh", colorToning.labgridAHigh, keyFile); + saveToKeyfile(!pedited || pedited->colorToning.labgridBHigh, "ColorToning", "LabGridBHigh", colorToning.labgridBHigh, keyFile); // Raw saveToKeyfile(!pedited || pedited->raw.darkFrame, "RAW", "DarkFrame", relativePathIfInside (fname, fnameAbsolute, raw.dark_frame), keyFile); @@ -3387,6 +3461,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->raw.bayersensor.pixelShiftSmooth, "RAW Bayer", "pixelShiftSmoothFactor", raw.bayersensor.pixelShiftSmoothFactor, keyFile); saveToKeyfile(!pedited || pedited->raw.bayersensor.pixelShiftExp0, "RAW Bayer", "pixelShiftExp0", raw.bayersensor.pixelShiftExp0, keyFile); saveToKeyfile(!pedited || pedited->raw.bayersensor.pixelShiftLmmse, "RAW Bayer", "pixelShiftLmmse", raw.bayersensor.pixelShiftLmmse, keyFile); +// saveToKeyfile(!pedited || pedited->raw.bayersensor.pixelShiftOneGreen, "RAW Bayer", "pixelShiftOneGreen", raw.bayersensor.pixelShiftOneGreen, keyFile); saveToKeyfile(!pedited || pedited->raw.bayersensor.pixelShiftEqualBright, "RAW Bayer", "pixelShiftEqualBright", raw.bayersensor.pixelShiftEqualBright, keyFile); saveToKeyfile(!pedited || pedited->raw.bayersensor.pixelShiftEqualBrightChannel, "RAW Bayer", "pixelShiftEqualBrightChannel", raw.bayersensor.pixelShiftEqualBrightChannel, keyFile); saveToKeyfile(!pedited || pedited->raw.bayersensor.pixelShiftNonGreenCross, "RAW Bayer", "pixelShiftNonGreenCross", raw.bayersensor.pixelShiftNonGreenCross, keyFile); @@ -3402,6 +3477,9 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->raw.exPos, "RAW", "PreExposure", raw.expos, keyFile); saveToKeyfile(!pedited || pedited->raw.exPreser, "RAW", "PrePreserv", raw.preser, keyFile); +// MetaData + saveToKeyfile(!pedited || pedited->metadata.mode, "MetaData", "Mode", metadata.mode, keyFile); + // EXIF change list if (!pedited || pedited->exif) { for (ExifPairs::const_iterator i = exif.begin(); i != exif.end(); ++i) { @@ -3512,6 +3590,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Exposure", "Curve", pedited, toneCurve.curve, pedited->toneCurve.curve); assignFromKeyfile(keyFile, "Exposure", "Curve2", pedited, toneCurve.curve2, pedited->toneCurve.curve2); } + assignFromKeyfile(keyFile, "Exposure", "HistogramMatching", pedited, toneCurve.histmatching, pedited->toneCurve.histmatching); } if (keyFile.has_group ("HLRecovery")) { @@ -3520,6 +3599,14 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } if (keyFile.has_group ("Channel Mixer")) { + if (ppVersion >= 329) { + assignFromKeyfile(keyFile, "Channel Mixer", "Enabled", pedited, chmixer.enabled, pedited->chmixer.enabled); + } else { + chmixer.enabled = true; + if (pedited) { + pedited->chmixer.enabled = true; + } + } if (keyFile.has_key ("Channel Mixer", "Red") && keyFile.has_key ("Channel Mixer", "Green") && keyFile.has_key ("Channel Mixer", "Blue")) { const std::vector rmix = keyFile.get_integer_list ("Channel Mixer", "Red"); const std::vector gmix = keyFile.get_integer_list ("Channel Mixer", "Green"); @@ -3634,7 +3721,24 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Retinex", "GainTransmissionCurve", pedited, retinex.gaintransmissionCurve, pedited->retinex.gaintransmissionCurve); } + if (keyFile.has_group("Local Contrast")) { + assignFromKeyfile(keyFile, "Local Contrast", "Enabled", pedited, localContrast.enabled, pedited->localContrast.enabled); + assignFromKeyfile(keyFile, "Local Contrast", "Radius", pedited, localContrast.radius, pedited->localContrast.radius); + assignFromKeyfile(keyFile, "Local Contrast", "Amount", pedited, localContrast.amount, pedited->localContrast.amount); + assignFromKeyfile(keyFile, "Local Contrast", "Darkness", pedited, localContrast.darkness, pedited->localContrast.darkness); + assignFromKeyfile(keyFile, "Local Contrast", "Lightness", pedited, localContrast.lightness, pedited->localContrast.lightness); + } + if (keyFile.has_group ("Luminance Curve")) { + if (ppVersion >= 329) { + assignFromKeyfile(keyFile, "Luminance Curve", "Enabled", pedited, labCurve.enabled, pedited->labCurve.enabled); + } else { + labCurve.enabled = true; + if (pedited) { + pedited->labCurve.enabled = true; + } + } + assignFromKeyfile(keyFile, "Luminance Curve", "Brightness", pedited, labCurve.brightness, pedited->labCurve.brightness); assignFromKeyfile(keyFile, "Luminance Curve", "Contrast", pedited, labCurve.contrast, pedited->labCurve.contrast); @@ -3765,6 +3869,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } if (keyFile.has_group ("White Balance")) { + assignFromKeyfile(keyFile, "White Balance", "Enabled", pedited, wb.enabled, pedited->wb.enabled); assignFromKeyfile(keyFile, "White Balance", "Setting", pedited, wb.method, pedited->wb.method); assignFromKeyfile(keyFile, "White Balance", "Temperature", pedited, wb.temperature, pedited->wb.temperature); assignFromKeyfile(keyFile, "White Balance", "Green", pedited, wb.green, pedited->wb.green); @@ -3918,8 +4023,22 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Shadows & Highlights", "HighlightTonalWidth", pedited, sh.htonalwidth, pedited->sh.htonalwidth); assignFromKeyfile(keyFile, "Shadows & Highlights", "Shadows", pedited, sh.shadows, pedited->sh.shadows); assignFromKeyfile(keyFile, "Shadows & Highlights", "ShadowTonalWidth", pedited, sh.stonalwidth, pedited->sh.stonalwidth); - assignFromKeyfile(keyFile, "Shadows & Highlights", "LocalContrast", pedited, sh.localcontrast, pedited->sh.localcontrast); assignFromKeyfile(keyFile, "Shadows & Highlights", "Radius", pedited, sh.radius, pedited->sh.radius); + if (keyFile.has_key("Shadows & Highlights", "LocalContrast") && ppVersion < 329) { + int lc = keyFile.get_integer("Shadows & Highlights", "LocalContrast"); + localContrast.amount = float(lc) / (sh.hq ? 500.0 : 30.); + if (pedited) { + pedited->localContrast.amount = true; + } + localContrast.enabled = sh.enabled; + if (pedited) { + pedited->localContrast.enabled = true; + } + localContrast.radius = sh.radius; + if (pedited) { + pedited->localContrast.radius = true; + } + } } if (keyFile.has_group ("Crop")) { @@ -4487,6 +4606,14 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } if (keyFile.has_group ("HSV Equalizer")) { + if (ppVersion >= 329) { + assignFromKeyfile(keyFile, "HSV Equalizer", "Enabled", pedited, hsvequalizer.enabled, pedited->hsvequalizer.enabled); + } else { + hsvequalizer.enabled = true; + if (pedited) { + pedited->hsvequalizer.enabled = true; + } + } if (ppVersion >= 300) { assignFromKeyfile(keyFile, "HSV Equalizer", "HCurve", pedited, hsvequalizer.hcurve, pedited->hsvequalizer.hcurve); assignFromKeyfile(keyFile, "HSV Equalizer", "SCurve", pedited, hsvequalizer.scurve, pedited->hsvequalizer.scurve); @@ -4495,6 +4622,14 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } if (keyFile.has_group ("RGB Curves")) { + if (ppVersion >= 329) { + assignFromKeyfile(keyFile, "RGB Curves", "Enabled", pedited, rgbCurves.enabled, pedited->rgbCurves.enabled); + } else { + rgbCurves.enabled = true; + if (pedited) { + pedited->rgbCurves.enabled = true; + } + } assignFromKeyfile(keyFile, "RGB Curves", "LumaMode", pedited, rgbCurves.lumamode, pedited->rgbCurves.lumamode); assignFromKeyfile(keyFile, "RGB Curves", "rCurve", pedited, rgbCurves.rcurve, pedited->rgbCurves.rcurve); assignFromKeyfile(keyFile, "RGB Curves", "gCurve", pedited, rgbCurves.gcurve, pedited->rgbCurves.gcurve); @@ -4551,6 +4686,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "ColorToning", "Redhigh", pedited, colorToning.redhigh, pedited->colorToning.redhigh); assignFromKeyfile(keyFile, "ColorToning", "Greenhigh", pedited, colorToning.greenhigh, pedited->colorToning.greenhigh); assignFromKeyfile(keyFile, "ColorToning", "Bluehigh", pedited, colorToning.bluehigh, pedited->colorToning.bluehigh); + + assignFromKeyfile(keyFile, "ColorToning", "LabGridALow", pedited, colorToning.labgridALow, pedited->colorToning.labgridALow); + assignFromKeyfile(keyFile, "ColorToning", "LabGridBLow", pedited, colorToning.labgridBLow, pedited->colorToning.labgridBLow); + assignFromKeyfile(keyFile, "ColorToning", "LabGridAHigh", pedited, colorToning.labgridAHigh, pedited->colorToning.labgridAHigh); + assignFromKeyfile(keyFile, "ColorToning", "LabGridBHigh", pedited, colorToning.labgridBHigh, pedited->colorToning.labgridBHigh); } if (keyFile.has_group ("RAW")) { @@ -4675,6 +4815,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "RAW Bayer", "pixelShiftSmoothFactor", pedited, raw.bayersensor.pixelShiftSmoothFactor, pedited->raw.bayersensor.pixelShiftSmooth); assignFromKeyfile(keyFile, "RAW Bayer", "pixelShiftExp0", pedited, raw.bayersensor.pixelShiftExp0, pedited->raw.bayersensor.pixelShiftExp0); assignFromKeyfile(keyFile, "RAW Bayer", "pixelShiftLmmse", pedited, raw.bayersensor.pixelShiftLmmse, pedited->raw.bayersensor.pixelShiftLmmse); +// assignFromKeyfile(keyFile, "RAW Bayer", "pixelShiftOneGreen", pedited, raw.bayersensor.pixelShiftOneGreen, pedited->raw.bayersensor.pixelShiftOneGreen); assignFromKeyfile(keyFile, "RAW Bayer", "pixelShiftEqualBright", pedited, raw.bayersensor.pixelShiftEqualBright, pedited->raw.bayersensor.pixelShiftEqualBright); assignFromKeyfile(keyFile, "RAW Bayer", "pixelShiftEqualBrightChannel", pedited, raw.bayersensor.pixelShiftEqualBrightChannel, pedited->raw.bayersensor.pixelShiftEqualBrightChannel); assignFromKeyfile(keyFile, "RAW Bayer", "pixelShiftNonGreenCross", pedited, raw.bayersensor.pixelShiftNonGreenCross, pedited->raw.bayersensor.pixelShiftNonGreenCross); @@ -4690,6 +4831,14 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "RAW X-Trans", "PreBlackBlue", pedited, raw.xtranssensor.blackblue, pedited->raw.xtranssensor.exBlackBlue); } + if (keyFile.has_group("MetaData")) { + int mode = int(MetaDataParams::TUNNEL); + assignFromKeyfile(keyFile, "MetaData", "Mode", pedited, mode, pedited->metadata.mode); + if (mode >= int(MetaDataParams::TUNNEL) && mode <= int(MetaDataParams::STRIP)) { + metadata.mode = static_cast(mode); + } + } + if (keyFile.has_group ("Exif")) { std::vector keys = keyFile.get_keys ("Exif"); @@ -4764,6 +4913,7 @@ bool ProcParams::operator ==(const ProcParams& other) const return toneCurve == other.toneCurve && retinex == other.retinex + && localContrast == other.localContrast && labCurve == other.labCurve && sharpenEdge == other.sharpenEdge && sharpenMicro == other.sharpenMicro @@ -4801,6 +4951,7 @@ bool ProcParams::operator ==(const ProcParams& other) const && filmSimulation == other.filmSimulation && rgbCurves == other.rgbCurves && colorToning == other.colorToning + && metadata == other.metadata && exif == other.exif && iptc == other.iptc; } diff --git a/rtengine/procparams.h b/rtengine/procparams.h index 28bc7a0c1..d47a8b3c5 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -280,13 +280,13 @@ struct ToneCurveParams { int shcompr; int hlcompr; // Highlight Recovery's compression int hlcomprthresh; // Highlight Recovery's threshold + bool histmatching; // histogram matching ToneCurveParams(); bool operator ==(const ToneCurveParams& other) const; bool operator !=(const ToneCurveParams& other) const; - static bool HLReconstructionNecessary(const LUTu& histRedRaw, const LUTu& histGreenRaw, const LUTu& histBlueRaw); }; /** @@ -341,6 +341,7 @@ struct RetinexParams */ struct LCurveParams { + bool enabled; std::vector lcurve; std::vector acurve; std::vector bcurve; @@ -363,10 +364,29 @@ struct LCurveParams bool operator !=(const LCurveParams& other) const; }; + +/** + * Parameters for local contrast + */ +struct LocalContrastParams { + bool enabled; + int radius; + double amount; + double darkness; + double lightness; + + LocalContrastParams(); + + bool operator==(const LocalContrastParams &other) const; + bool operator!=(const LocalContrastParams &other) const; +}; + + /** * Parameters of the RGB curves */ struct RGBCurvesParams { + bool enabled; bool lumamode; std::vector rcurve; std::vector gcurve; @@ -404,6 +424,7 @@ struct ColorToningParams { * Lch : * RGBSliders : * RGBCurves : + * LabGrid : */ Glib::ustring method; @@ -427,6 +448,12 @@ struct ColorToningParams { double sathigh; bool lumamode; + double labgridALow; + double labgridBLow; + double labgridAHigh; + double labgridBHigh; + static const double LABGRID_CORR_MAX; + ColorToningParams(); bool operator ==(const ColorToningParams& other) const; @@ -538,6 +565,7 @@ struct WBEntry { }; struct WBParams { + bool enabled; Glib::ustring method; int temperature; double green; @@ -717,7 +745,6 @@ struct SHParams { int htonalwidth; int shadows; int stonalwidth; - int localcontrast; int radius; SHParams(); @@ -895,6 +922,7 @@ struct VignettingParams { * Parameters of the color mixer */ struct ChannelMixerParams { + bool enabled; int red[3]; int green[3]; int blue[3]; @@ -1039,6 +1067,25 @@ struct ColorManagementParams { bool operator !=(const ColorManagementParams& other) const; }; + +/** + * Parameters for metadata handling + */ +struct MetaDataParams { + enum Mode { + TUNNEL, + EDIT, + STRIP + }; + Mode mode; + + MetaDataParams(); + + bool operator ==(const MetaDataParams &other) const; + bool operator !=(const MetaDataParams &other) const; +}; + + /** * Typedef for representing a key/value for the exif metadata information */ @@ -1173,6 +1220,7 @@ struct DirPyrEqualizerParams { * HSV equalizer params */ struct HSVEqualizerParams { + bool enabled; std::vector hcurve; std::vector scurve; std::vector vcurve; @@ -1275,6 +1323,7 @@ struct RAWParams { double pixelShiftSmoothFactor; bool pixelShiftExp0; bool pixelShiftLmmse; + bool pixelShiftOneGreen; bool pixelShiftEqualBright; bool pixelShiftEqualBrightChannel; bool pixelShiftNonGreenCross; @@ -1371,6 +1420,7 @@ public: ToneCurveParams toneCurve; ///< Tone curve parameters LCurveParams labCurve; ///< CIELAB luminance curve parameters RetinexParams retinex; ///< Retinex parameters + LocalContrastParams localContrast; ////< Local contrast parameters RGBCurvesParams rgbCurves; ///< RGB curves parameters ColorToningParams colorToning; ///< Color Toning parameters SharpeningParams sharpening; ///< Sharpening parameters @@ -1413,6 +1463,7 @@ public: Glib::ustring appVersion; ///< Version of the application that generated the parameters int ppVersion; ///< Version of the PP file from which the parameters have been read + MetaDataParams metadata; ///< Metadata parameters ExifPairs exif; ///< List of modifications appplied on the exif tags of the input image IPTCPairs iptc; ///< The IPTC tags and values to be saved to the output image diff --git a/rtengine/profilestore.cc b/rtengine/profilestore.cc index 4d06b6f6b..e79c8e322 100644 --- a/rtengine/profilestore.cc +++ b/rtengine/profilestore.cc @@ -49,6 +49,7 @@ bool ProfileStore::init (bool loadAll) if ((storeState == STORESTATE_NOTINITIALIZED || storeState == STORESTATE_DIRTY) && loadAll) { storeState = STORESTATE_BEINGINITIALIZED; _parseProfiles (); + std::stable_partition(entries.begin(), entries.end(), [](const ProfileStoreEntry *e) { return e->type == PSET_FOLDER; }); storeState = STORESTATE_INITIALIZED; } diff --git a/rtengine/rawimage.cc b/rtengine/rawimage.cc index de392623d..8d7292113 100644 --- a/rtengine/rawimage.cc +++ b/rtengine/rawimage.cc @@ -695,7 +695,7 @@ float** RawImage::compress_image(int frameNum, bool freeImage) } else if (colors == 1) { // Monochrome if (!allocation) { - allocation = new float[height * width]; + allocation = new float[static_cast(height) * static_cast(width)]; data = new float*[height]; for (int i = 0; i < height; i++) { @@ -704,7 +704,7 @@ float** RawImage::compress_image(int frameNum, bool freeImage) } } else { if (!allocation) { - allocation = new float[3 * height * width]; + allocation = new float[3UL * static_cast(height) * static_cast(width)]; data = new float*[height]; for (int i = 0; i < height; i++) { diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index bcc16d5cb..ea7b0e559 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -38,7 +38,6 @@ #include #endif #include "opthelper.h" -#define BENCHMARK #include "StopWatch.h" #define clipretinex( val, minv, maxv ) (( val = (val < minv ? minv : val ) ) > maxv ? maxv : val ) #undef CLIPD @@ -2036,7 +2035,7 @@ void RawImageSource::demosaic(const RAWParams &raw) } else if (raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::AMAZE) ) { amaze_demosaic_RT (0, 0, W, H, rawData, red, green, blue); } else if (raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::PIXELSHIFT) ) { - pixelshift(0, 0, W, H, raw.bayersensor, currFrame, ri->get_model(), raw.expos); + pixelshift(0, 0, W, H, raw.bayersensor, currFrame, ri->get_maker(), ri->get_model(), raw.expos); } else if (raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::DCB) ) { dcb_demosaic(raw.bayersensor.dcb_iterations, raw.bayersensor.dcb_enhance); } else if (raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::EAHD)) { @@ -2091,7 +2090,7 @@ void RawImageSource::demosaic(const RAWParams &raw) //void RawImageSource::retinexPrepareBuffers(ColorManagementParams cmp, RetinexParams retinexParams, multi_array2D &conversionBuffer, LUTu &lhist16RETI) -void RawImageSource::retinexPrepareBuffers(ColorManagementParams cmp, const RetinexParams &retinexParams, multi_array2D &conversionBuffer, LUTu &lhist16RETI) +void RawImageSource::retinexPrepareBuffers(const ColorManagementParams& cmp, const RetinexParams &retinexParams, multi_array2D &conversionBuffer, LUTu &lhist16RETI) { bool useHsl = (retinexParams.retinexcolorspace == "HSLLOG" || retinexParams.retinexcolorspace == "HSLLIN"); conversionBuffer[0] (W - 2 * border, H - 2 * border); @@ -2360,7 +2359,7 @@ void RawImageSource::retinexPrepareCurves(const RetinexParams &retinexParams, LU retinexParams.getCurves(retinextransmissionCurve, retinexgaintransmissionCurve); } -void RawImageSource::retinex(ColorManagementParams cmp, const RetinexParams &deh, ToneCurveParams Tc, LUTf & cdcurve, LUTf & mapcurve, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, multi_array2D &conversionBuffer, bool dehacontlutili, bool mapcontlutili, bool useHsl, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax, LUTu &histLRETI) +void RawImageSource::retinex(const ColorManagementParams& cmp, const RetinexParams &deh, const ToneCurveParams& Tc, LUTf & cdcurve, LUTf & mapcurve, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, multi_array2D &conversionBuffer, bool dehacontlutili, bool mapcontlutili, bool useHsl, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax, LUTu &histLRETI) { MyTime t4, t5; t4.set(); @@ -3884,7 +3883,7 @@ lab2ProphotoRgbD50(float L, float A, float B, float& r, float& g, float& b) } // Converts raw image including ICC input profile to working space - floating point version -void RawImageSource::colorSpaceConversion_ (Imagefloat* im, ColorManagementParams &cmp, const ColorTemp &wb, double pre_mul[3], cmsHPROFILE embedded, cmsHPROFILE camprofile, double camMatrix[3][3], const std::string &camName) +void RawImageSource::colorSpaceConversion_ (Imagefloat* im, const ColorManagementParams& cmp, const ColorTemp &wb, double pre_mul[3], cmsHPROFILE embedded, cmsHPROFILE camprofile, double camMatrix[3][3], const std::string &camName) { // MyTime t1, t2, t3; @@ -4737,21 +4736,22 @@ void RawImageSource::getRAWHistogram (LUTu & histRedRaw, LUTu & histGreenRaw, LU } // end of critical region } // end of parallel region + constexpr float gammaLimit = 32767.f * 65536.f; // Color::gamma overflows when the LUT is accessed with too large values for(int i = 0; i < 65536; i++) { int idx; - idx = CLIP((int)Color::gamma(mult[0] * (i - (cblacksom[0]/*+black_lev[0]*/)))); + idx = CLIP((int)Color::gamma(std::min(mult[0] * (i - (cblacksom[0]/*+black_lev[0]*/)), gammaLimit))); histRedRaw[idx >> 8] += hist[0][i]; if (ri->get_colors() > 1) { - idx = CLIP((int)Color::gamma(mult[1] * (i - (cblacksom[1]/*+black_lev[1]*/)))); + idx = CLIP((int)Color::gamma(std::min(mult[1] * (i - (cblacksom[1]/*+black_lev[1]*/)), gammaLimit))); histGreenRaw[idx >> 8] += hist[1][i]; if (fourColours) { - idx = CLIP((int)Color::gamma(mult[3] * (i - (cblacksom[3]/*+black_lev[3]*/)))); + idx = CLIP((int)Color::gamma(std::min(mult[3] * (i - (cblacksom[3]/*+black_lev[3]*/)), gammaLimit))); histGreenRaw[idx >> 8] += hist[3][i]; } - idx = CLIP((int)Color::gamma(mult[2] * (i - (cblacksom[2]/*+black_lev[2]*/)))); + idx = CLIP((int)Color::gamma(std::min(mult[2] * (i - (cblacksom[2]/*+black_lev[2]*/)), gammaLimit))); histBlueRaw[idx >> 8] += hist[2][i]; } } diff --git a/rtengine/rawimagesource.h b/rtengine/rawimagesource.h index 4924b955a..59316eccf 100644 --- a/rtengine/rawimagesource.h +++ b/rtengine/rawimagesource.h @@ -39,7 +39,7 @@ private: static DiagonalCurve *phaseOneIccCurveInv; static LUTf invGrad; // for fast_demosaic static LUTf initInvGrad (); - static void colorSpaceConversion_ (Imagefloat* im, ColorManagementParams &cmp, const ColorTemp &wb, double pre_mul[3], cmsHPROFILE embedded, cmsHPROFILE camprofile, double cam[3][3], const std::string &camName); + static void colorSpaceConversion_ (Imagefloat* im, const ColorManagementParams& cmp, const ColorTemp &wb, double pre_mul[3], cmsHPROFILE embedded, cmsHPROFILE camprofile, double cam[3][3], const std::string &camName); int defTransform (int tran); protected: @@ -95,6 +95,7 @@ protected: float psGreenBrightness[4]; float psBlueBrightness[4]; + std::vector histMatchingCache; void hphd_vertical (float** hpmap, int col_from, int col_to); void hphd_horizontal (float** hpmap, int row_from, int row_to); @@ -119,9 +120,9 @@ public: int load (const Glib::ustring &fname); void preprocess (const RAWParams &raw, const LensProfParams &lensProf, const CoarseTransformParams& coarse, bool prepareDenoise = true); void demosaic (const RAWParams &raw); - void retinex (ColorManagementParams cmp, const RetinexParams &deh, ToneCurveParams Tc, LUTf & cdcurve, LUTf & mapcurve, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, multi_array2D &conversionBuffer, bool dehacontlutili, bool mapcontlutili, bool useHsl, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax, LUTu &histLRETI); + void retinex (const ColorManagementParams& cmp, const RetinexParams &deh, const ToneCurveParams& Tc, LUTf & cdcurve, LUTf & mapcurve, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, multi_array2D &conversionBuffer, bool dehacontlutili, bool mapcontlutili, bool useHsl, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax, LUTu &histLRETI); void retinexPrepareCurves (const RetinexParams &retinexParams, LUTf &cdcurve, LUTf &mapcurve, RetinextransmissionCurve &retinextransmissionCurve, RetinexgaintransmissionCurve &retinexgaintransmissionCurve, bool &retinexcontlutili, bool &mapcontlutili, bool &useHsl, LUTu & lhist16RETI, LUTu & histLRETI); - void retinexPrepareBuffers (ColorManagementParams cmp, const RetinexParams &retinexParams, multi_array2D &conversionBuffer, LUTu &lhist16RETI); + void retinexPrepareBuffers (const ColorManagementParams& cmp, const RetinexParams &retinexParams, multi_array2D &conversionBuffer, LUTu &lhist16RETI); void flushRawData (); void flushRGB (); void HLRecovery_Global (ToneCurveParams hrp); @@ -185,11 +186,12 @@ public: } void getAutoExpHistogram (LUTu & histogram, int& histcompr); void getRAWHistogram (LUTu & histRedRaw, LUTu & histGreenRaw, LUTu & histBlueRaw); + void getAutoMatchedToneCurve(std::vector &outCurve); DCPProfile *getDCP(const ColorManagementParams &cmp, DCPProfile::ApplyState &as); void convertColorSpace(Imagefloat* image, const ColorManagementParams &cmp, const ColorTemp &wb); static bool findInputProfile(Glib::ustring inProfile, cmsHPROFILE embedded, std::string camName, DCPProfile **dcpProf, cmsHPROFILE& in); - static void colorSpaceConversion (Imagefloat* im, ColorManagementParams cmp, const ColorTemp &wb, double pre_mul[3], cmsHPROFILE embedded, cmsHPROFILE camprofile, double cam[3][3], const std::string &camName) + static void colorSpaceConversion (Imagefloat* im, const ColorManagementParams& cmp, const ColorTemp &wb, double pre_mul[3], cmsHPROFILE embedded, cmsHPROFILE camprofile, double cam[3][3], const std::string &camName) { colorSpaceConversion_ (im, cmp, wb, pre_mul, embedded, camprofile, cam, camName); } @@ -269,7 +271,7 @@ protected: void xtransborder_interpolate (int border); void xtrans_interpolate (const int passes, const bool useCieLab); void fast_xtrans_interpolate (); - void pixelshift(int winx, int winy, int winw, int winh, const RAWParams::BayerSensor &bayerParams, unsigned int frame, const std::string &model, float rawWpCorrection); + void pixelshift(int winx, int winy, int winw, int winh, const RAWParams::BayerSensor &bayerParams, unsigned int frame, const std::string &make, const std::string &model, float rawWpCorrection); void hflip (Imagefloat* im); void vflip (Imagefloat* im); void getRawValues(int x, int y, int rotate, int &R, int &G, int &B); diff --git a/rtengine/refreshmap.cc b/rtengine/refreshmap.cc index 04afadb04..67ddb2b7d 100644 --- a/rtengine/refreshmap.cc +++ b/rtengine/refreshmap.cc @@ -516,7 +516,52 @@ int refreshmap[rtengine::NUMOFEVENTS] = { DARKFRAME, // EvLensCorrLensfunLens ALLNORAW, // EvTMFattalEnabled HDR, // EvTMFattalThreshold - HDR // EvTMFattalAmount - + HDR, // EvTMFattalAmount + ALLNORAW, // EvWBEnabled + RGBCURVE, // EvRGBEnabled + LUMINANCECURVE, // EvLEnabled + DEMOSAIC // EvPixelShiftOneGreen }; + +namespace rtengine { + +RefreshMapper::RefreshMapper(): + next_event_(rtengine::NUMOFEVENTS) +{ + for (int event = 0; event < rtengine::NUMOFEVENTS; ++event) { + actions_[event] = refreshmap[event]; + } +} + + +ProcEvent RefreshMapper::newEvent() +{ + return ProcEvent(++next_event_); +} + + +void RefreshMapper::mapEvent(ProcEvent event, int action) +{ + actions_[event] = action; +} + + +int RefreshMapper::getAction(ProcEvent event) const +{ + auto it = actions_.find(event); + if (it == actions_.end()) { + return 0; + } else { + return it->second; + } +} + + +RefreshMapper *RefreshMapper::getInstance() +{ + static RefreshMapper instance; + return &instance; +} + +} // namespace rtengine diff --git a/rtengine/refreshmap.h b/rtengine/refreshmap.h index 83489694b..921119356 100644 --- a/rtengine/refreshmap.h +++ b/rtengine/refreshmap.h @@ -19,6 +19,9 @@ #ifndef __REFRESHMAP__ #define __REFRESHMAP__ +#include +#include "procevents.h" + // Use M_VOID if you wish to update the proc params without updating the preview at all ! #define M_VOID (1<<18) // Use M_MINUPDATE if you wish to update the preview without modifying the image (think about it like a "refreshPreview") @@ -54,9 +57,9 @@ #define FLATFIELD (M_PREPROC|M_RAW|M_INIT|M_LINDENOISE|M_HDR|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_SPOT|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR) #define DEMOSAIC (M_RAW|M_INIT|M_LINDENOISE|M_HDR|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_SPOT|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR) #define ALLNORAW (M_INIT|M_LINDENOISE|M_HDR|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_SPOT|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR) -#define HDR (M_HDR|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_SPOT|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR) +#define HDR (M_LINDENOISE|M_HDR|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_SPOT|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR) #define TRANSFORM (M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_SPOT|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR) -#define AUTOEXP (M_AUTOEXP|M_SPOT|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR) +#define AUTOEXP (M_HDR|M_AUTOEXP|M_SPOT|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR) #define SPOT (M_SPOT|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR) #define RGBCURVE (M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR) #define LUMINANCECURVE (M_LUMACURVE|M_LUMINANCE|M_COLOR) @@ -76,4 +79,23 @@ #define OUTPUTPROFILE M_MONITOR extern int refreshmap[]; + +namespace rtengine { + +class RefreshMapper { +public: + static RefreshMapper *getInstance(); + ProcEvent newEvent(); + void mapEvent(ProcEvent event, int action); + int getAction(ProcEvent event) const; + +private: + RefreshMapper(); + + int next_event_; + std::unordered_map actions_; +}; + +} // namespace rtengine + #endif diff --git a/rtengine/rt_math.h b/rtengine/rt_math.h index 17a292618..787e2e63f 100644 --- a/rtengine/rt_math.h +++ b/rtengine/rt_math.h @@ -14,6 +14,7 @@ constexpr double MAXVALD = static_cast(MAXVAL); // double version of MAX constexpr double RT_PI = 3.14159265358979323846; // pi constexpr double RT_PI_2 = 1.57079632679489661923; // pi/2 +constexpr double RT_PI_180 = 0.017453292519943295769; // pi/180 constexpr double RT_1_PI = 0.31830988618379067154; // 1/pi constexpr double RT_2_PI = 0.63661977236758134308; // 2/pi constexpr double RT_SQRT1_2 = 0.70710678118654752440; // 1/sqrt(2) @@ -23,6 +24,9 @@ constexpr double RT_NAN = std::numeric_limits::quiet_NaN(); constexpr float RT_PI_F = RT_PI; constexpr float RT_PI_F_2 = RT_PI_2; +constexpr float RT_PI_F_180 = RT_PI_180; +constexpr float RT_1_PI_F = RT_1_PI; +constexpr float RT_2_PI_F = RT_2_PI; constexpr float RT_INFINITY_F = std::numeric_limits::infinity(); constexpr float RT_NAN_F = std::numeric_limits::quiet_NaN(); diff --git a/rtengine/rtengine.h b/rtengine/rtengine.h index edf903352..eea15c7a3 100644 --- a/rtengine/rtengine.h +++ b/rtengine/rtengine.h @@ -119,7 +119,7 @@ public: /** @return the orientation of the image */ virtual std::string getOrientation (unsigned int frame = 0) const = 0; - /** @return true if the file is a PixelShift shot (Pentax bodies) */ + /** @return true if the file is a PixelShift shot (Pentax and Sony bodies) */ virtual bool getPixelShift (unsigned int frame = 0) const = 0; /** @return false: not an HDR file ; true: single or multi-frame HDR file (e.g. Pentax HDR raw file or 32 bit float DNG file or Log compressed) */ virtual bool getHDR (unsigned int frame = 0) const = 0; @@ -294,6 +294,8 @@ public: * @param hlcomprthresh is the new threshold for hlcompr * @param hlrecons set to true if HighLight Reconstruction is enabled */ virtual void autoExpChanged (double brightness, int bright, int contrast, int black, int hlcompr, int hlcomprthresh, bool hlrecons) {} + + virtual void autoMatchedToneCurveChanged(procparams::ToneCurveParams::TcMode curveMode, const std::vector &curve) {} }; class AutoCamListener @@ -413,6 +415,7 @@ public: * The image update starts immediately in the background. If it is ready, the result is passed to a PreviewImageListener * and to a DetailedCropListener (if enabled). */ virtual void endUpdateParams (ProcEvent change) = 0; + void endUpdateParams(ProcEventCode change) { endUpdateParams(ProcEvent(change)); } virtual void endUpdateParams (int changeFlags) = 0; // Starts a minimal update virtual void startProcessing (int changeCode) = 0; @@ -532,9 +535,8 @@ public: * @param job the ProcessingJob to cancel. * @param errorCode is the error code if an error occured (e.g. the input image could not be loaded etc.) * @param pl is an optional ProgressListener if you want to keep track of the progress - * @param tunnelMetaData tunnels IPTC and XMP to output without change * @return the resulting image, with the output profile applied, exif and iptc data set. You have to save it or you can access the pixel data directly. */ -IImage16* processImage (ProcessingJob* job, int& errorCode, ProgressListener* pl = nullptr, bool tunnelMetaData = false, bool flush = false); +IImagefloat* processImage (ProcessingJob* job, int& errorCode, ProgressListener* pl = nullptr, bool flush = false); /** This class is used to control the batch processing. The class implementing this interface will be called when the full processing of an * image is ready and the next job to process is needed. */ @@ -545,7 +547,7 @@ public: * there is no jobs left. * @param img is the result of the last ProcessingJob * @return the next ProcessingJob to process */ - virtual ProcessingJob* imageReady (IImage16* img) = 0; + virtual ProcessingJob* imageReady (IImagefloat* img) = 0; virtual void error (Glib::ustring message) = 0; }; /** This function performs all the image processinf steps corresponding to the given ProcessingJob. It runs in the background, thus it returns immediately, @@ -554,8 +556,8 @@ public: * The ProcessingJob passed becomes invalid, you can not use it any more. * @param job the ProcessingJob to cancel. * @param bpl is the BatchProcessingListener that is called when the image is ready or the next job is needed. It also acts as a ProgressListener. - * @param tunnelMetaData tunnels IPTC and XMP to output without change */ -void startBatchProcessing (ProcessingJob* job, BatchProcessingListener* bpl, bool tunnelMetaData); + **/ +void startBatchProcessing (ProcessingJob* job, BatchProcessingListener* bpl); extern MyMutex* lcmsMutex; diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index 8adab4ec5..1a8d18897 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -150,6 +150,11 @@ Thumbnail* Thumbnail::loadFromImage (const Glib::ustring& fname, int &w, int &h, ImageIO* img = imgSrc.getImageIO(); + // agriggio -- hotfix for #3794, to be revised once a proper solution is implemented + if (std::max(img->getWidth(), img->getHeight()) / std::min(img->getWidth(), img->getHeight()) >= 10) { + return nullptr; + } + Thumbnail* tpp = new Thumbnail (); unsigned char* data; @@ -915,7 +920,7 @@ IImage8* Thumbnail::quickProcessImage (const procparams::ProcParams& params, int } // Full thumbnail processing, second stage if complete profile exists -IImage8* Thumbnail::processImage (const procparams::ProcParams& params, eSensorType sensorType, int rheight, TypeInterpolation interp, const FramesMetaData *metadata, double& myscale) +IImage8* Thumbnail::processImage (const procparams::ProcParams& params, eSensorType sensorType, int rheight, TypeInterpolation interp, const FramesMetaData *metadata, double& myscale, bool forMonitor) { unsigned int imgNum = 0; if (isRaw) { @@ -944,7 +949,9 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, eSensorT // compute WB multipliers ColorTemp currWB = ColorTemp (params.wb.temperature, params.wb.green, params.wb.equal, params.wb.method); - if (params.wb.method == "Camera") { + if (!params.wb.enabled) { + currWB = ColorTemp(); + } else if (params.wb.method == "Camera") { //recall colorMatrix is rgb_cam double cam_r = colorMatrix[0][0] * camwbRed + colorMatrix[0][1] * camwbGreen + colorMatrix[0][2] * camwbBlue; double cam_g = colorMatrix[1][0] * camwbRed + colorMatrix[1][1] * camwbGreen + colorMatrix[1][2] * camwbBlue; @@ -954,12 +961,19 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, eSensorT currWB = ColorTemp (autoWBTemp, autoWBGreen, wbEqual, "Custom"); } - double r, g, b; - currWB.getMultipliers (r, g, b); - //iColorMatrix is cam_rgb - double rm = iColorMatrix[0][0] * r + iColorMatrix[0][1] * g + iColorMatrix[0][2] * b; - double gm = iColorMatrix[1][0] * r + iColorMatrix[1][1] * g + iColorMatrix[1][2] * b; - double bm = iColorMatrix[2][0] * r + iColorMatrix[2][1] * g + iColorMatrix[2][2] * b; + double rm, gm, bm; + if (currWB.getTemp() < 0) { + rm = redMultiplier; + gm = greenMultiplier; + bm = blueMultiplier; + } else { + double r, g, b; + currWB.getMultipliers (r, g, b); + //iColorMatrix is cam_rgb + rm = iColorMatrix[0][0] * r + iColorMatrix[0][1] * g + iColorMatrix[0][2] * b; + gm = iColorMatrix[1][0] * r + iColorMatrix[1][1] * g + iColorMatrix[1][2] * b; + bm = iColorMatrix[2][0] * r + iColorMatrix[2][1] * g + iColorMatrix[2][2] * b; + } rm = camwbRed / rm; gm = camwbGreen / gm; bm = camwbBlue / bm; @@ -1150,7 +1164,7 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, eSensorT float satLimit = float (params.colorToning.satProtectionThreshold) / 100.f * 0.7f + 0.3f; float satLimitOpacity = 1.f - (float (params.colorToning.saturatedOpacity) / 100.f); - if (params.colorToning.enabled && params.colorToning.autosat) { //for colortoning evaluation of saturation settings + if (params.colorToning.enabled && params.colorToning.autosat && params.colorToning.method != "LabGrid") { //for colortoning evaluation of saturation settings float moyS = 0.f; float eqty = 0.f; ipf.moyeqt (baseImg, moyS, eqty);//return image : mean saturation and standard dev of saturation @@ -1284,8 +1298,13 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, eSensorT //ipf.colorCurve (labView, labView); // obtain final image - Image8* readyImg = new Image8 (fw, fh); - ipf.lab2monitorRgb (labView, readyImg); + Image8* readyImg = nullptr; + if (forMonitor) { + readyImg = new Image8 (fw, fh); + ipf.lab2monitorRgb (labView, readyImg); + } else { + readyImg = ipf.lab2rgb(labView, 0, 0, fw, fh, params.icm); + } delete labView; delete baseImg; diff --git a/rtengine/rtthumbnail.h b/rtengine/rtthumbnail.h index 2ee08de50..902f264fc 100644 --- a/rtengine/rtthumbnail.h +++ b/rtengine/rtthumbnail.h @@ -71,7 +71,7 @@ public: void init (); - IImage8* processImage (const procparams::ProcParams& pparams, eSensorType sensorType, int rheight, TypeInterpolation interp, const FramesMetaData *metadata, double& scale); + IImage8* processImage (const procparams::ProcParams& pparams, eSensorType sensorType, int rheight, TypeInterpolation interp, const FramesMetaData *metadata, double& scale, bool forMonitor=true); IImage8* quickProcessImage (const procparams::ProcParams& pparams, int rheight, TypeInterpolation interp); int getImageWidth (const procparams::ProcParams& pparams, int rheight, float &ratio); void getDimensions (int& w, int& h, double& scaleFac); diff --git a/rtengine/settings.h b/rtengine/settings.h index 225503777..8f24f18f1 100644 --- a/rtengine/settings.h +++ b/rtengine/settings.h @@ -83,16 +83,6 @@ public: double artifact_cbdl; double level0_cbdl; double level123_cbdl; - double bot_left; - double top_left; - double top_right; - double bot_right; - double ed_detec; - double ed_detecStr; - double ed_low; - double ed_lipinfl; - double ed_lipampl; - Glib::ustring lensfunDbDirectory; ///< The directory containing the lensfun database. If empty, the system defaults will be used (as described in http://lensfun.sourceforge.net/manual/dbsearch.html) /** Creates a new instance of Settings. diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index d0f6377fa..951212a77 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -49,24 +49,52 @@ void adjust_radius (const T &default_param, double scale_factor, T ¶m) class ImageProcessor { public: - ImageProcessor (ProcessingJob* pjob, int& errorCode, - ProgressListener* pl, bool tunnelMetaData, bool flush): + ImageProcessor( + ProcessingJob* pjob, + int& errorCode, + ProgressListener* pl, + bool flush + ) : job (static_cast (pjob)), errorCode (errorCode), pl (pl), - tunnelMetaData (tunnelMetaData), flush (flush), // internal state - ipf_p (nullptr), - ii (nullptr), - imgsrc (nullptr), - fw (-1), - fh (-1), - pp (0, 0, 0, 0, 0) + ii(nullptr), + imgsrc(nullptr), + fw(0), + fh(0), + tr(0), + pp(0, 0, 0, 0, 0), + calclum(nullptr), + autoNR(0.f), + autoNRmax(0.f), + tilesize(0), + overlap(0), + ch_M(nullptr), + max_r(nullptr), + max_b(nullptr), + min_b(nullptr), + min_r(nullptr), + lumL(nullptr), + chromC(nullptr), + ry(nullptr), + sk(nullptr), + pcsk(nullptr), + expcomp(0.0), + bright(0), + contr(0), + black(0), + hlcompr(0), + hlcomprthresh(0), + baseImg(nullptr), + labView(nullptr), + autili(false), + butili(false) { } - Image16 *operator()() + Imagefloat *operator()() { if (!job->fast) { return normal_pipeline(); @@ -76,7 +104,7 @@ public: } private: - Image16 *normal_pipeline() + Imagefloat *normal_pipeline() { if (!stage_init()) { return nullptr; @@ -87,7 +115,7 @@ private: return stage_finish(); } - Image16 *fast_pipeline() + Imagefloat *fast_pipeline() { if (!job->pparams.resize.enabled) { return normal_pipeline(); @@ -172,16 +200,6 @@ private: imgsrc->setCurrentFrame (params.raw.bayersensor.imageNum); imgsrc->preprocess ( params.raw, params.lensProf, params.coarse, params.dirpyrDenoise.enabled); - if (params.toneCurve.autoexp) {// this enabled HLRecovery - LUTu histRedRaw (256), histGreenRaw (256), histBlueRaw (256); - imgsrc->getRAWHistogram (histRedRaw, histGreenRaw, histBlueRaw); - - if (ToneCurveParams::HLReconstructionNecessary (histRedRaw, histGreenRaw, histBlueRaw) && !params.toneCurve.hrenabled) { - params.toneCurve.hrenabled = true; - // WARNING: Highlight Reconstruction is being forced 'on', should we force a method here too? - } - } - if (pl) { pl->setProgress (0.20); } @@ -223,7 +241,9 @@ private: // set the color temperature currWB = ColorTemp (params.wb.temperature, params.wb.green, params.wb.equal, params.wb.method); - if (params.wb.method == "Camera") { + if (!params.wb.enabled) { + currWB = ColorTemp(); + } else if (params.wb.method == "Camera") { currWB = imgsrc->getWB (); } else if (params.wb.method == "Auto") { double rm, gm, bm; @@ -720,6 +740,21 @@ private: imgsrc->getAutoExpHistogram (aehist, aehistcompr); ipf.getAutoExp (aehist, aehistcompr, params.toneCurve.clip, expcomp, bright, contr, black, hlcompr, hlcomprthresh); } + if (params.toneCurve.histmatching) { + imgsrc->getAutoMatchedToneCurve(params.toneCurve.curve); + + if (params.toneCurve.autoexp) { + params.toneCurve.expcomp = 0.0; + } + + params.toneCurve.autoexp = false; + params.toneCurve.curveMode = ToneCurveParams::TcMode::FILMLIKE; + params.toneCurve.curve2 = { 0 }; + params.toneCurve.brightness = 0; + params.toneCurve.contrast = 0; + params.toneCurve.black = 0; + + } // at this stage, we can flush the raw data to free up quite an important amount of memory // commented out because it makes the application crash when batch processing... @@ -813,7 +848,7 @@ private: if (params.fattal.enabled) { ipf.ToneMapFattal02(baseImg); } - + // perform transform (excepted resizing) if (ipf.needsTransform()) { Imagefloat* trImg = nullptr; @@ -831,7 +866,7 @@ private: } } - Image16 *stage_finish() + Imagefloat *stage_finish() { procparams::ProcParams& params = job->pparams; //ImProcFunctions ipf (¶ms, true); @@ -915,7 +950,7 @@ private: float satLimit = float (params.colorToning.satProtectionThreshold) / 100.f * 0.7f + 0.3f; float satLimitOpacity = 1.f - (float (params.colorToning.saturatedOpacity) / 100.f); - if (params.colorToning.enabled && params.colorToning.autosat) { //for colortoning evaluation of saturation settings + if (params.colorToning.enabled && params.colorToning.autosat && params.colorToning.method != "LabGrid") { //for colortoning evaluation of saturation settings float moyS = 0.f; float eqty = 0.f; ipf.moyeqt (baseImg, moyS, eqty);//return image : mean saturation and standard dev of saturation @@ -1233,7 +1268,7 @@ private: } } - Image16* readyImg = nullptr; + Imagefloat* readyImg = nullptr; cmsHPROFILE jprof = nullptr; bool customGamma = false; bool useLCMS = false; @@ -1243,7 +1278,7 @@ private: GammaValues ga; // if(params.blackwhite.enabled) params.toneCurve.hrenabled=false; - readyImg = ipf.lab2rgb16 (labView, cx, cy, cw, ch, params.icm, &ga); + readyImg = ipf.lab2rgbOut (labView, cx, cy, cw, ch, params.icm, &ga); customGamma = true; //or selected Free gamma @@ -1257,7 +1292,7 @@ private: // if Default gamma mode: we use the profile selected in the "Output profile" combobox; // gamma come from the selected profile, otherwise it comes from "Free gamma" tool - readyImg = ipf.lab2rgb16 (labView, cx, cy, cw, ch, params.icm); + readyImg = ipf.lab2rgbOut (labView, cx, cy, cw, ch, params.icm); if (settings->verbose) { printf ("Output profile_: \"%s\"\n", params.icm.output.c_str()); @@ -1287,19 +1322,25 @@ private: } if (tmpScale != 1.0 && params.resize.method == "Nearest") { // resize rgb data (gamma applied) - Image16* tempImage = new Image16 (imw, imh); + Imagefloat* tempImage = new Imagefloat (imw, imh); ipf.resize (readyImg, tempImage, tmpScale); delete readyImg; readyImg = tempImage; } - if (tunnelMetaData) { + switch (params.metadata.mode) { + case MetaDataParams::TUNNEL: // Sending back the whole first root, which won't necessarily be the selected frame number // and may contain subframe depending on initial raw's hierarchy readyImg->setMetadata (ii->getMetaData()->getRootExifData ()); - } else { + break; + case MetaDataParams::EDIT: // ask for the correct frame number, but may contain subframe depending on initial raw's hierarchy readyImg->setMetadata (ii->getMetaData()->getBestExifData(imgsrc, ¶ms.raw), params.exif, params.iptc); + break; + default: // case MetaDataParams::STRIP + // nothing to do + break; } @@ -1425,8 +1466,7 @@ private: if (params.prsharpening.enabled) { params.sharpening = params.prsharpening; } else { - adjust_radius (defaultparams.sharpening.radius, scale_factor, - params.sharpening.radius); + params.sharpening.radius *= scale_factor; } params.impulseDenoise.thresh *= scale_factor; @@ -1436,12 +1476,12 @@ private: } params.wavelet.strength *= scale_factor; - params.dirpyrDenoise.luma *= scale_factor; + params.dirpyrDenoise.luma *= scale_factor * scale_factor; //params.dirpyrDenoise.Ldetail += (100 - params.dirpyrDenoise.Ldetail) * scale_factor; auto &lcurve = params.dirpyrDenoise.lcurve; for (size_t i = 2; i < lcurve.size(); i += 4) { - lcurve[i] *= min (scale_factor * 2, 1.0); + lcurve[i] *= min (scale_factor * scale_factor, 1.0); } noiseLCurve.Set (lcurve); @@ -1479,7 +1519,8 @@ private: adjust_radius (defaultparams.defringe.radius, scale_factor, params.defringe.radius); - adjust_radius (defaultparams.sh.radius, scale_factor, params.sh.radius); + params.sh.radius *= scale_factor; + params.localContrast.radius *= scale_factor; if (params.raw.xtranssensor.method == procparams::RAWParams::XTransSensor::getMethodString(procparams::RAWParams::XTransSensor::Method::THREE_PASS)) { params.raw.xtranssensor.method = procparams::RAWParams::XTransSensor::getMethodString(procparams::RAWParams::XTransSensor::Method::ONE_PASS); @@ -1494,7 +1535,6 @@ private: ProcessingJobImpl* job; int& errorCode; ProgressListener* pl; - bool tunnelMetaData; bool flush; // internal state @@ -1568,20 +1608,20 @@ private: } // namespace -IImage16* processImage (ProcessingJob* pjob, int& errorCode, ProgressListener* pl, bool tunnelMetaData, bool flush) +IImagefloat* processImage (ProcessingJob* pjob, int& errorCode, ProgressListener* pl, bool flush) { - ImageProcessor proc (pjob, errorCode, pl, tunnelMetaData, flush); + ImageProcessor proc (pjob, errorCode, pl, flush); return proc(); } -void batchProcessingThread (ProcessingJob* job, BatchProcessingListener* bpl, bool tunnelMetaData) +void batchProcessingThread (ProcessingJob* job, BatchProcessingListener* bpl) { ProcessingJob* currentJob = job; while (currentJob) { int errorCode; - IImage16* img = processImage (currentJob, errorCode, bpl, tunnelMetaData, true); + IImagefloat* img = processImage (currentJob, errorCode, bpl, true); if (errorCode) { bpl->error (M ("MAIN_MSG_CANNOTLOAD")); @@ -1597,11 +1637,11 @@ void batchProcessingThread (ProcessingJob* job, BatchProcessingListener* bpl, bo } } -void startBatchProcessing (ProcessingJob* job, BatchProcessingListener* bpl, bool tunnelMetaData) +void startBatchProcessing (ProcessingJob* job, BatchProcessingListener* bpl) { if (bpl) { - Glib::Thread::create (sigc::bind (sigc::ptr_fun (batchProcessingThread), job, bpl, tunnelMetaData), 0, true, true, Glib::THREAD_PRIORITY_LOW); + Glib::Thread::create (sigc::bind (sigc::ptr_fun (batchProcessingThread), job, bpl), 0, true, true, Glib::THREAD_PRIORITY_LOW); } } diff --git a/rtengine/sleef.c b/rtengine/sleef.c index 17dfccc0f..901d04f7d 100644 --- a/rtengine/sleef.c +++ b/rtengine/sleef.c @@ -12,10 +12,8 @@ #include #include -//#include #include "rt_math.h" -//#include -//#include +#include "opthelper.h" #define PI4_A .7853981554508209228515625 #define PI4_B .794662735614792836713604629039764404296875e-8 @@ -923,9 +921,8 @@ __inline float mulsignf(float x, float y) { return intBitsToFloat(floatToRawIntBits(x) ^ (floatToRawIntBits(y) & (1 << 31))); } -__inline float signf(float d) { return mulsignf(1, d); } +__inline float signf(float d) { return copysign(1, d); } __inline float mlaf(float x, float y, float z) { return x * y + z; } -__inline float xrintf(float x) { return x < 0 ? (int)(x - 0.5f) : (int)(x + 0.5f); } __inline int xisnanf(float x) { return x != x; } __inline int xisinff(float x) { return x == rtengine::RT_INFINITY_F || x == -rtengine::RT_INFINITY_F; } @@ -984,7 +981,7 @@ __inline float xsinf(float d) { int q; float u, s; - q = (int)xrintf(d * (float)rtengine::RT_1_PI); + q = rint(d * rtengine::RT_1_PI_F); d = mlaf(q, -PI4_Af*4, d); d = mlaf(q, -PI4_Bf*4, d); @@ -1006,10 +1003,14 @@ __inline float xsinf(float d) { } __inline float xcosf(float d) { +#ifdef __SSE2__ + // faster than scalar version + return xcosf(_mm_set_ss(d))[0]; +#else int q; float u, s; - q = 1 + 2*(int)xrintf(d * (float)rtengine::RT_1_PI - 0.5f); + q = 1 + 2*rint(d * rtengine::RT_1_PI_F - 0.5f); d = mlaf(q, -PI4_Af*2, d); d = mlaf(q, -PI4_Bf*2, d); @@ -1028,14 +1029,20 @@ __inline float xcosf(float d) { u = mlaf(s, u * d, d); return u; +#endif } __inline float2 xsincosf(float d) { +#ifdef __SSE2__ + // faster than scalar version + vfloat2 res = xsincosf(_mm_set_ss(d)); + return {res.x[0], res.y[0]}; +#else int q; float u, s, t; float2 r; - q = (int)rint(d * ((float)(2 * rtengine::RT_1_PI))); + q = rint(d * rtengine::RT_2_PI_F); s = d; @@ -1070,13 +1077,14 @@ __inline float2 xsincosf(float d) { if (xisinff(d)) { r.x = r.y = rtengine::RT_NAN_F; } return r; +#endif } __inline float xtanf(float d) { int q; float u, s, x; - q = (int)xrintf(d * (float)(2 * rtengine::RT_1_PI)); + q = rint(d * (float)(2 * rtengine::RT_1_PI)); x = d; @@ -1202,7 +1210,7 @@ __inline float xlogf(float d) { __inline float xexpf(float d) { if(d<=-104.0f) return 0.0f; - int q = (int)xrintf(d * R_LN2f); + int q = rint(d * R_LN2f); float s, u; s = mlaf(q, -L2Uf, d); diff --git a/rtengine/sleefsseavx.c b/rtengine/sleefsseavx.c index e4f587464..dcea09e2b 100644 --- a/rtengine/sleefsseavx.c +++ b/rtengine/sleefsseavx.c @@ -12,10 +12,6 @@ #define SLEEFSSEAVX #include -//#include -//#include -//#include -//#include "sleefsseavx.h" #include "rt_math.h" #ifdef __SSE2__ #include "helpersse2.h" @@ -30,8 +26,6 @@ #define INLINE inline #endif -// - #define PI4_A .7853981554508209228515625 #define PI4_B .794662735614792836713604629039764404296875e-8 #define PI4_C .306161699786838294306516483068750264552437361480769e-16 @@ -41,8 +35,6 @@ #define L2L .28235290563031577122588448175013436025525412068e-12 #define R_LN2 1.442695040888963407359924681001892137426645954152985934135449406931 -// - #define PI4_Af 0.78515625f #define PI4_Bf 0.00024127960205078125f #define PI4_Cf 6.3329935073852539062e-07f @@ -55,8 +47,6 @@ #define INFINITYf ((float)rtengine::RT_INFINITY) #define NANf ((float)rtengine::RT_NAN) -// - static INLINE vdouble vadd3(vdouble v0, vdouble v1, vdouble v2) { return vadd(vadd(v0, v1), v2); } @@ -1323,10 +1313,8 @@ static INLINE vfloat xexpf(vfloat d) { u = vldexpf(u, q); - u = vself(vmaskf_isminf(d), vcast_vf_f(0.0f), u); -// -104.0 - u = vself(vmaskf_gt(vcast_vf_f(-104), d), vcast_vf_f(0), u); - return u; + // -104.0 + return vselfnotzero(vmaskf_gt(vcast_vf_f(-104.f), d), u); } static INLINE vfloat xexpfNoCheck(vfloat d) { // this version does not check input values. Use it only when you know the input values are > -104.f e.g. when filling a lookup table diff --git a/rtengine/tmo_fattal02.cc b/rtengine/tmo_fattal02.cc index 645451905..4fb11ff19 100644 --- a/rtengine/tmo_fattal02.cc +++ b/rtengine/tmo_fattal02.cc @@ -69,7 +69,6 @@ #include "improcfun.h" #include "settings.h" #include "iccstore.h" -//#define BENCHMARK #include "StopWatch.h" #include "sleef.c" #include "opthelper.h" @@ -416,8 +415,8 @@ void tmo_fattal02 (size_t width, // msec_timer stop_watch; // stop_watch.start(); // #endif - static const float black_point = 0.1f; - static const float white_point = 0.5f; + // 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; @@ -452,7 +451,7 @@ void tmo_fattal02 (size_t width, int size = width * height; // find max value, normalize to range 0..100 and take logarithm - float minLum = Y (0, 0); + // float minLum = Y (0, 0); float maxLum = Y (0, 0); #pragma omp parallel for reduction(max:maxLum) if(multithread) @@ -648,22 +647,6 @@ void tmo_fattal02 (size_t width, } } } - - // remove percentile of min and max values and renormalize - float cut_min = 0.01f * black_point; - float cut_max = 1.0f - 0.01f * white_point; - assert (cut_min >= 0.0f && (cut_max <= 1.0f) && (cut_min < cut_max)); - findMinMaxPercentile (L.data(), L.getRows() * L.getCols(), cut_min, minLum, cut_max, maxLum, multithread); - float dividor = (maxLum - minLum); - - #pragma omp parallel for if(multithread) - - for (size_t i = 0; i < height; ++i) { - for (size_t j = 0; j < width; ++j) { - L[i][j] = std::max ((L[i][j] - minLum) / dividor, 0.f); - // note, we intentionally do not cut off values > 1.0 - } - } } @@ -923,18 +906,6 @@ void solve_pde_fft (Array2Df *F, Array2Df *U, Array2Df *buf, bool multithread)/* for (int i = 0; i < width * height; i++) { (*U) (i) -= max; } - - // fft parallel threads cleanup, better handled outside this function? -#ifdef RT_FFTW3F_OMP - - if (multithread) { - fftwf_cleanup_threads(); - } - -#endif - - // ph.setValue(90); - //DEBUG_STR << "solve_pde_fft: done" << std::endl; } @@ -1055,8 +1026,9 @@ inline int find_fast_dim (int dim) { // as per the FFTW docs: // - // FFTW is generally best at handling sizes of the form 2a 3b 5c 7d 11e - // 13f, where e+f is either 0 or 1. + // FFTW is generally best at handling sizes of the form + // 2^a 3^b 5^c 7^d 11^e 13^f, + // where e+f is either 0 or 1. // // Here, we try to round up to the nearest dim that can be expressed in // the above form. This is not exhaustive, but should be ok for pictures @@ -1116,21 +1088,23 @@ void ImProcFunctions::ToneMapFattal02 (Imagefloat *rgb) Array2Df Yr (w, h); - const float epsilon = 1e-4f; - const float luminance_noise_floor = 65.535f; - const float min_luminance = 1.f; + constexpr float epsilon = 1e-4f; + constexpr float luminance_noise_floor = 65.535f; + constexpr float min_luminance = 1.f; + TMatrix ws = ICCStore::getInstance()->workingSpaceMatrix (params->icm.working); #ifdef _OPENMP - #pragma omp parallel for if (multiThread) + #pragma omp parallel for if(multiThread) #endif - for (int y = 0; y < h; y++) { for (int x = 0; x < w; x++) { Yr (x, y) = std::max (luminance (rgb->r (y, x), rgb->g (y, x), rgb->b (y, x), ws), min_luminance); // clip really black pixels } } + float oldMedian; + findMinMaxPercentile (Yr.data(), Yr.getRows() * Yr.getCols(), 0.5f, oldMedian, 0.5f, oldMedian, multiThread); // median filter on the deep shadows, to avoid boosting noise // because w2 >= w and h2 >= h, we can use the L buffer as temporary buffer for Median_Denoise() int w2 = find_fast_dim (w) + 1; @@ -1170,18 +1144,22 @@ void ImProcFunctions::ToneMapFattal02 (Imagefloat *rgb) const float hr = float(h2) / float(h); const float wr = float(w2) / float(w); - + + float newMedian; + findMinMaxPercentile (L.data(), L.getRows() * L.getCols(), 0.5f, newMedian, 0.5f, newMedian, multiThread); + const float scale = (oldMedian == 0.f || newMedian == 0.f) ? 65535.f : (oldMedian / newMedian); // avoid Nan + #ifdef _OPENMP - #pragma omp parallel for if(multiThread) + #pragma omp parallel for schedule(dynamic,16) if(multiThread) #endif for (int y = 0; y < h; y++) { int yy = y * hr + 1; - + for (int x = 0; x < w; x++) { int xx = x * wr + 1; - - float Y = Yr (x, y); - float l = std::max (L (xx, yy), epsilon) * (65535.f / Y); + + float Y = std::max(Yr (x, y), epsilon); + float l = std::max (L (xx, yy), epsilon) * (scale / Y); rgb->r (y, x) = std::max (rgb->r (y, x), 0.f) * l; rgb->g (y, x) = std::max (rgb->g (y, x), 0.f) * l; rgb->b (y, x) = std::max (rgb->b (y, x), 0.f) * l; diff --git a/rtexif/canonattribs.cc b/rtexif/canonattribs.cc index c1ab6f4f2..3b0d9c9ef 100644 --- a/rtexif/canonattribs.cc +++ b/rtexif/canonattribs.cc @@ -555,364 +555,366 @@ class CALensInterpreter : public IntLensInterpreter< int > public: CALensInterpreter () { - choices.insert (p_t (1, "Canon EF 50mm f/1.8")); - choices.insert (p_t (2, "Canon EF 28mm f/2.8")); - choices.insert (p_t (3, "Canon EF 135mm f/2.8 Soft")); - choices.insert (p_t (4, "Canon EF 35-105mm f/3.5-4.5 or Sigma Lens")); - choices.insert (p_t (4, "Sigma UC Zoom 35-135mm f/4-5.6")); - choices.insert (p_t (5, "Canon EF 35-70mm f/3.5-4.5")); - choices.insert (p_t (6, "Canon EF 28-70mm f/3.5-4.5 or Sigma or Tokina Lens")); - choices.insert (p_t (6, "Sigma 18-50mm f/3.5-5.6 DC")); - choices.insert (p_t (6, "Sigma 18-125mm f/3.5-5.6 DC IF ASP")); - choices.insert (p_t (6, "Tokina AF 193-2 19-35mm f/3.5-4.5")); - choices.insert (p_t (6, "Sigma 28-80mm f/3.5-5.6 II Macro")); - choices.insert (p_t (7, "Canon EF 100-300mm f/5.6L")); - choices.insert (p_t (8, "Canon EF 100-300mm f/5.6 or Sigma or Tokina Lens")); - choices.insert (p_t (8, "Sigma 70-300mm f/4-5.6 [APO] DG Macro")); - choices.insert (p_t (8, "Tokina AT-X 242 AF 24-200mm f/3.5-5.6")); - choices.insert (p_t (9, "Canon EF 70-210mm f/4")); - choices.insert (p_t (9, "Sigma 55-200mm f/4-5.6 DC")); - choices.insert (p_t (10, "Canon EF 50mm f/2.5 Macro or Sigma Lens")); - choices.insert (p_t (10, "Sigma 50mm f/2.8 EX")); - choices.insert (p_t (10, "Sigma 28mm f/1.8")); - choices.insert (p_t (10, "Sigma 105mm f/2.8 Macro EX")); - choices.insert (p_t (10, "Sigma 70mm f/2.8 EX DG Macro EF")); - choices.insert (p_t (11, "Canon EF 35mm f/2")); - choices.insert (p_t (13, "Canon EF 15mm f/2.8 Fisheye")); - choices.insert (p_t (14, "Canon EF 50-200mm f/3.5-4.5L")); - choices.insert (p_t (15, "Canon EF 50-200mm f/3.5-4.5")); - choices.insert (p_t (16, "Canon EF 35-135mm f/3.5-4.5")); - choices.insert (p_t (17, "Canon EF 35-70mm f/3.5-4.5A")); - choices.insert (p_t (18, "Canon EF 28-70mm f/3.5-4.5")); - choices.insert (p_t (20, "Canon EF 100-200mm f/4.5A")); - choices.insert (p_t (21, "Canon EF 80-200mm f/2.8L")); - choices.insert (p_t (22, "Canon EF 20-35mm f/2.8L or Tokina Lens")); - choices.insert (p_t (22, "Tokina AT-X 280 AF Pro 28-80mm f/2.8 Aspherical")); - choices.insert (p_t (23, "Canon EF 35-105mm f/3.5-4.5")); - choices.insert (p_t (24, "Canon EF 35-80mm f/4-5.6 Power Zoom")); - choices.insert (p_t (25, "Canon EF 35-80mm f/4-5.6 Power Zoom")); - choices.insert (p_t (26, "Canon EF 100mm f/2.8 Macro or Other Lens")); - choices.insert (p_t (26, "Cosina 100mm f/3.5 Macro AF")); - choices.insert (p_t (26, "Tamron SP AF 90mm f/2.8 Di Macro")); - choices.insert (p_t (26, "Tamron SP AF 180mm f/3.5 Di Macro")); - choices.insert (p_t (26, "Carl Zeiss Planar T* 50mm f/1.4")); - choices.insert (p_t (27, "Canon EF 35-80mm f/4-5.6")); - choices.insert (p_t (28, "Canon EF 80-200mm f/4.5-5.6 or Tamron Lens")); - choices.insert (p_t (28, "Tamron SP AF 28-105mm f/2.8 LD Aspherical IF")); - choices.insert (p_t (28, "Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical [IF] Macro")); - choices.insert (p_t (28, "Tamron AF 70-300mm f/4-5.6 Di LD 1:2 Macro")); - choices.insert (p_t (28, "Tamron AF Aspherical 28-200mm f/3.8-5.6")); - choices.insert (p_t (29, "Canon EF 50mm f/1.8 II")); - choices.insert (p_t (30, "Canon EF 35-105mm f/4.5-5.6")); - choices.insert (p_t (31, "Canon EF 75-300mm f/4-5.6 or Tamron Lens")); - choices.insert (p_t (31, "Tamron SP AF 300mm f/2.8 LD IF")); - choices.insert (p_t (32, "Canon EF 24mm f/2.8 or Sigma Lens")); - choices.insert (p_t (32, "Sigma 15mm f/2.8 EX Fisheye")); - choices.insert (p_t (33, "Voigtlander or Carl Zeiss Lens")); - choices.insert (p_t (33, "Voigtlander Ultron 40mm f/2 SLII Aspherical")); - choices.insert (p_t (33, "Voigtlander Color Skopar 20mm f/3.5 SLII Aspherical")); - choices.insert (p_t (33, "Voigtlander APO-Lanthar 90mm f/3.5 SLII Close Focus")); - choices.insert (p_t (33, "Carl Zeiss Distagon T* 15mm f/2.8 ZE")); - choices.insert (p_t (33, "Carl Zeiss Distagon T* 18mm f/3.5 ZE")); - choices.insert (p_t (33, "Carl Zeiss Distagon T* 21mm f/2.8 ZE")); - choices.insert (p_t (33, "Carl Zeiss Distagon T* 25mm f/2 ZE")); - choices.insert (p_t (33, "Carl Zeiss Distagon T* 28mm f/2 ZE")); - choices.insert (p_t (33, "Carl Zeiss Distagon T* 35mm f/2 ZE")); - choices.insert (p_t (33, "Carl Zeiss Distagon T* 35mm f/1.4 ZE")); - choices.insert (p_t (33, "Carl Zeiss Planar T* 50mm f/1.4 ZE")); - choices.insert (p_t (33, "Carl Zeiss Makro-Planar T* 50mm f/2 ZE")); - choices.insert (p_t (33, "Carl Zeiss Makro-Planar T* 100mm f/2 ZE")); - choices.insert (p_t (33, "Carl Zeiss Apo-Sonnar T* 135mm f/2 ZE")); - choices.insert (p_t (35, "Canon EF 35-80mm f/4-5.6")); - choices.insert (p_t (36, "Canon EF 38-76mm f/4.5-5.6")); - choices.insert (p_t (37, "Canon EF 35-80mm f/4-5.6 or Tamron Lens")); - choices.insert (p_t (37, "Tamron 70-200mm f/2.8 Di LD IF Macro")); - choices.insert (p_t (37, "Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical [IF] Macro Model A20")); - choices.insert (p_t (37, "Tamron SP AF 17-50mm f/2.8 XR Di II VC LD Aspherical [IF]")); - choices.insert (p_t (37, "Tamron AF 18-270mm f/3.5-6.3 Di II VC LD Aspherical [IF] Macro")); - choices.insert (p_t (38, "Canon EF 80-200mm f/4.5-5.6")); - choices.insert (p_t (39, "Canon EF 75-300mm f/4-5.6")); - choices.insert (p_t (40, "Canon EF 28-80mm f/3.5-5.6")); - choices.insert (p_t (41, "Canon EF 28-90mm f/4-5.6")); - choices.insert (p_t (42, "Canon EF 28-200mm f/3.5-5.6 or Tamron Lens")); - choices.insert (p_t (42, "Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical [IF] Macro Model A20")); - choices.insert (p_t (43, "Canon EF 28-105mm f/4-5.6")); - choices.insert (p_t (44, "Canon EF 90-300mm f/4.5-5.6")); - choices.insert (p_t (45, "Canon EF-S 18-55mm f/3.5-5.6 [II]")); - choices.insert (p_t (46, "Canon EF 28-90mm f/4-5.6")); - choices.insert (p_t (47, "Zeiss Milvus 35mm f/2 or 50mm f/2")); - choices.insert (p_t (47, "Zeiss Milvus 50mm f/2 Makro")); - choices.insert (p_t (48, "Canon EF-S 18-55mm f/3.5-5.6 IS")); - choices.insert (p_t (49, "Canon EF-S 55-250mm f/4-5.6 IS")); - choices.insert (p_t (50, "Canon EF-S 18-200mm f/3.5-5.6 IS")); - choices.insert (p_t (51, "Canon EF-S 18-135mm f/3.5-5.6 IS")); - choices.insert (p_t (52, "Canon EF-S 18-55mm f/3.5-5.6 IS II")); - choices.insert (p_t (53, "Canon EF-S 18-55mm f/3.5-5.6 III")); - choices.insert (p_t (54, "Canon EF-S 55-250mm f/4-5.6 IS II")); - choices.insert (p_t (60, "Irix 11mm f/4")); - choices.insert (p_t (80, "Canon TS-E 50mm f/2.8L Macro")); - choices.insert (p_t (81, "Canon TS-E 90mm f/2.8L Macro")); - choices.insert (p_t (82, "Canon TS-E 135mm f/4L Macro")); - choices.insert (p_t (94, "Canon TS-E 17mm f/4L")); - choices.insert (p_t (95, "Canon TS-E 24mm f/3.5L II")); - choices.insert (p_t (124, "Canon MP-E 65mm f/2.8 1-5x Macro Photo")); - choices.insert (p_t (125, "Canon TS-E 24mm f/3.5L")); - choices.insert (p_t (126, "Canon TS-E 45mm f/2.8")); - choices.insert (p_t (127, "Canon TS-E 90mm f/2.8")); - choices.insert (p_t (129, "Canon EF 300mm f/2.8L")); - choices.insert (p_t (130, "Canon EF 50mm f/1.0L")); - choices.insert (p_t (131, "Canon EF 28-80mm f/2.8-4L or Sigma Lens")); - choices.insert (p_t (131, "Sigma 8mm f/3.5 EX DG Circular Fisheye")); - choices.insert (p_t (131, "Sigma 17-35mm f/2.8-4 EX DG Aspherical HSM")); - choices.insert (p_t (131, "Sigma 17-70mm f/2.8-4.5 DC Macro")); - choices.insert (p_t (131, "Sigma APO 50-150mm f/2.8 [II] EX DC HSM")); - choices.insert (p_t (131, "Sigma APO 120-300mm f/2.8 EX DG HSM")); - choices.insert (p_t (131, "Sigma 4.5mm f/2.8 EX DC HSM Circular Fisheye")); - choices.insert (p_t (131, "Sigma 70-200mm f/2.8 APO EX HSM")); - choices.insert (p_t (132, "Canon EF 1200mm f/5.6L")); - choices.insert (p_t (134, "Canon EF 600mm f/4L IS")); - choices.insert (p_t (135, "Canon EF 200mm f/1.8L")); - choices.insert (p_t (136, "Canon EF 300mm f/2.8L")); - choices.insert (p_t (137, "Canon EF 85mm f/1.2L or Sigma or Tamron Lens")); - choices.insert (p_t (137, "Sigma 18-50mm f/2.8-4.5 DC OS HSM")); - choices.insert (p_t (137, "Sigma 50-200mm f/4-5.6 DC OS HSM")); - choices.insert (p_t (137, "Sigma 18-250mm f/3.5-6.3 DC OS HSM")); - choices.insert (p_t (137, "Sigma 24-70mm f/2.8 IF EX DG HSM")); - choices.insert (p_t (137, "Sigma 18-125mm f/3.8-5.6 DC OS HSM")); - choices.insert (p_t (137, "Sigma 17-70mm f/2.8-4 DC Macro OS HSM | C")); - choices.insert (p_t (137, "Sigma 17-50mm f/2.8 OS HSM")); - choices.insert (p_t (137, "Sigma 18-200mm f/3.5-6.3 DC OS HSM [II]")); - choices.insert (p_t (137, "Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD")); - choices.insert (p_t (137, "Sigma 8-16mm f/4.5-5.6 DC HSM")); - choices.insert (p_t (137, "Tamron SP 17-50mm f/2.8 XR Di II VC")); - choices.insert (p_t (137, "Tamron SP 60mm f/2 Macro Di II")); - choices.insert (p_t (137, "Sigma 10-20mm f/3.5 EX DC HSM")); - choices.insert (p_t (137, "Tamron SP 24-70mm f/2.8 Di VC USD")); - choices.insert (p_t (137, "Sigma 18-35mm f/1.8 DC HSM")); - choices.insert (p_t (137, "Sigma 12-24mm f/4.5-5.6 DG HSM II")); - choices.insert (p_t (138, "Canon EF 28-80mm f/2.8-4L")); - choices.insert (p_t (139, "Canon EF 400mm f/2.8L")); - choices.insert (p_t (140, "Canon EF 500mm f/4.5L")); - choices.insert (p_t (141, "Canon EF 500mm f/4.5L")); - choices.insert (p_t (142, "Canon EF 300mm f/2.8L IS")); - choices.insert (p_t (143, "Canon EF 500mm f/4L IS or Sigma Lens")); - choices.insert (p_t (143, "Sigma 17-70mm f/2.8-4 DC Macro OS HSM")); - choices.insert (p_t (144, "Canon EF 35-135mm f/4-5.6 USM")); - choices.insert (p_t (145, "Canon EF 100-300mm f/4.5-5.6 USM")); - choices.insert (p_t (146, "Canon EF 70-210mm f/3.5-4.5 USM")); - choices.insert (p_t (147, "Canon EF 35-135mm f/4-5.6 USM")); - choices.insert (p_t (148, "Canon EF 28-80mm f/3.5-5.6 USM")); - choices.insert (p_t (149, "Canon EF 100mm f/2 USM")); - choices.insert (p_t (150, "Canon EF 14mm f/2.8L or Sigma Lens")); - choices.insert (p_t (150, "Sigma 20mm EX f/1.8")); - choices.insert (p_t (150, "Sigma 30mm f/1.4 DC HSM")); - choices.insert (p_t (150, "Sigma 24mm f/1.8 DG Macro EX")); - choices.insert (p_t (150, "Sigma 28mm f/1.8 DG Macro EX")); - choices.insert (p_t (151, "Canon EF 200mm f/2.8L")); - choices.insert (p_t (152, "Canon EF 300mm f/4L IS or Sigma Lens")); - choices.insert (p_t (152, "Sigma 12-24mm f/4.5-5.6 EX DG ASPHERICAL HSM")); - choices.insert (p_t (152, "Sigma 14mm f/2.8 EX Aspherical HSM")); - choices.insert (p_t (152, "Sigma 10-20mm f/4-5.6")); - choices.insert (p_t (152, "Sigma 100-300mm f/4")); - choices.insert (p_t (153, "Canon EF 35-350mm f/3.5-5.6L or Sigma or Tamron Lens")); - choices.insert (p_t (153, "Sigma 50-500mm f/4-6.3 APO HSM EX")); - choices.insert (p_t (153, "Tamron AF 28-300mm f/3.5-6.3 XR LD Aspherical [IF] Macro")); - choices.insert (p_t (153, "Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical [IF] Macro Model A14")); - choices.insert (p_t (153, "Tamron 18-250mm f/3.5-6.3 Di II LD Aspherical [IF] Macro")); - choices.insert (p_t (154, "Canon EF 20mm f/2.8 USM or Zeiss Lens")); - choices.insert (p_t (154, "Zeiss Milvus 21mm f/2.8")); - choices.insert (p_t (155, "Canon EF 85mm f/1.8 USM")); - choices.insert (p_t (156, "Canon EF 28-105mm f/3.5-4.5 USM or Tamron Lens")); - choices.insert (p_t (156, "Tamron SP 70-300mm f/4.0-5.6 Di VC USD")); - choices.insert (p_t (156, "Tamron SP AF 28-105mm f/2.8 LD Aspherical IF")); - choices.insert (p_t (160, "Canon EF 20-35mm f/3.5-4.5 USM or Tamron or Tokina Lens")); - choices.insert (p_t (160, "Tamron AF 19-35mm f/3.5-4.5")); - choices.insert (p_t (160, "Tokina AT-X 124 AF Pro DX 12-24mm f/4")); - choices.insert (p_t (160, "Tokina AT-X 107 AF DX 10-17mm f/3.5-4.5 Fisheye")); - choices.insert (p_t (160, "Tokina AT-X 116 AF Pro DX 11-16mm f/2.8")); - choices.insert (p_t (160, "Tokina AT-X 11-20 F2.8 PRO DX Aspherical 11-20mm f/2.8")); - choices.insert (p_t (161, "Canon EF 28-70mm f/2.8L or Sigma or Tamron Lens")); - choices.insert (p_t (161, "Sigma 24-70mm f/2.8 EX")); - choices.insert (p_t (161, "Sigma 28-70mm f/2.8 EX")); - choices.insert (p_t (161, "Sigma 24-60mm f/2.8 EX DG")); - choices.insert (p_t (161, "Tamron AF 17-50mm f/2.8 Di-II LD Aspherical")); - choices.insert (p_t (161, "Tamron 90mm f/2.8")); - choices.insert (p_t (161, "Tamron SP AF 17-35mm f/2.8-4 Di LD Aspherical IF")); - choices.insert (p_t (161, "Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical [IF] Macro")); - choices.insert (p_t (162, "Canon EF 200mm f/2.8L")); - choices.insert (p_t (163, "Canon EF 300mm f/4L")); - choices.insert (p_t (164, "Canon EF 400mm f/5.6L")); - choices.insert (p_t (165, "Canon EF 70-200mm f/2.8 L")); - choices.insert (p_t (166, "Canon EF 70-200mm f/2.8 L + 1.4x")); - choices.insert (p_t (167, "Canon EF 70-200mm f/2.8 L + 2x")); - choices.insert (p_t (168, "Canon EF 28mm f/1.8 USM or Sigma Lens")); - choices.insert (p_t (168, "Sigma 50-100mm f/1.8 DC HSM | A")); - choices.insert (p_t (169, "Canon EF 17-35mm f/2.8L or Sigma Lens")); - choices.insert (p_t (169, "Sigma 18-200mm f/3.5-6.3 DC OS")); - choices.insert (p_t (169, "Sigma 15-30mm f/3.5-4.5 EX DG Aspherical")); - choices.insert (p_t (169, "Sigma 18-50mm f/2.8 Macro")); - choices.insert (p_t (169, "Sigma 50mm f/1.4 EX DG HSM")); - choices.insert (p_t (169, "Sigma 85mm f/1.4 EX DG HSM")); - choices.insert (p_t (169, "Sigma 30mm f/1.4 EX DC HSM")); - choices.insert (p_t (169, "Sigma 35mm f/1.4 DG HSM")); - choices.insert (p_t (170, "Canon EF 200mm f/2.8L II")); - choices.insert (p_t (171, "Canon EF 300mm f/4L")); - choices.insert (p_t (172, "Canon EF 400mm f/5.6L or Sigma Lens")); - choices.insert (p_t (172, "Sigma 150-600mm f/5-6.3 DG OS HSM | S")); - choices.insert (p_t (173, "Canon EF 180mm Macro f/3.5L or Sigma Lens")); - choices.insert (p_t (173, "Sigma 180mm EX HSM Macro f/3.5")); - choices.insert (p_t (173, "Sigma APO Macro 150mm f/2.8 EX DG HSM")); - choices.insert (p_t (174, "Canon EF 135mm f/2L or Other Lens")); - choices.insert (p_t (174, "Sigma 70-200mm f/2.8 EX DG APO OS HSM")); - choices.insert (p_t (174, "Sigma 50-500mm f/4.5-6.3 APO DG OS HSM")); - choices.insert (p_t (174, "Sigma 150-500mm f/5-6.3 APO DG OS HSM")); - choices.insert (p_t (174, "Zeiss Milvus 100mm f/2 Makro")); - choices.insert (p_t (175, "Canon EF 400mm f/2.8L")); - choices.insert (p_t (176, "Canon EF 24-85mm f/3.5-4.5 USM")); - choices.insert (p_t (177, "Canon EF 300mm f/4L IS")); - choices.insert (p_t (178, "Canon EF 28-135mm f/3.5-5.6 IS")); - choices.insert (p_t (179, "Canon EF 24mm f/1.4L")); - choices.insert (p_t (180, "Canon EF 35mm f/1.4L or Other Lens")); - choices.insert (p_t (180, "Sigma 50mm f/1.4 DG HSM | A")); - choices.insert (p_t (180, "Sigma 24mm f/1.4 DG HSM | A")); - choices.insert (p_t (180, "Zeiss Milvus 50mm f/1.4")); - choices.insert (p_t (180, "Zeiss Milvus 85mm f/1.4")); - choices.insert (p_t (180, "Zeiss Otus 28mm f/1.4 ZE")); - choices.insert (p_t (181, "Canon EF 100-400mm f/4.5-5.6L IS + 1.4x or Sigma Lens")); - choices.insert (p_t (181, "Sigma 150-600mm f/5-6.3 DG OS HSM | S + 1.4x")); - choices.insert (p_t (182, "Canon EF 100-400mm f/4.5-5.6L IS + 2x or Sigma Lens")); - choices.insert (p_t (182, "Sigma 150-600mm f/5-6.3 DG OS HSM | S + 2x")); - choices.insert (p_t (183, "Canon EF 100-400mm f/4.5-5.6L IS or Sigma Lens")); - choices.insert (p_t (183, "Sigma 150mm f/2.8 EX DG OS HSM APO Macro")); - choices.insert (p_t (183, "Sigma 105mm f/2.8 EX DG OS HSM Macro")); - choices.insert (p_t (183, "Sigma 180mm f/2.8 EX DG OS HSM APO Macro")); - choices.insert (p_t (183, "Sigma 150-600mm f/5-6.3 DG OS HSM | C")); - choices.insert (p_t (183, "Sigma 150-600mm f/5-6.3 DG OS HSM | S")); - choices.insert (p_t (183, "Sigma 100-400mm f/5-6.3 DG OS HSM")); - choices.insert (p_t (184, "Canon EF 400mm f/2.8L + 2x")); - choices.insert (p_t (185, "Canon EF 600mm f/4L IS")); - choices.insert (p_t (186, "Canon EF 70-200mm f/4L")); - choices.insert (p_t (187, "Canon EF 70-200mm f/4L + 1.4x")); - choices.insert (p_t (188, "Canon EF 70-200mm f/4L + 2x")); - choices.insert (p_t (189, "Canon EF 70-200mm f/4L + 2.8x")); - choices.insert (p_t (190, "Canon EF 100mm f/2.8 Macro USM")); - choices.insert (p_t (191, "Canon EF 400mm f/4 DO IS")); - choices.insert (p_t (193, "Canon EF 35-80mm f/4-5.6 USM")); - choices.insert (p_t (194, "Canon EF 80-200mm f/4.5-5.6 USM")); - choices.insert (p_t (195, "Canon EF 35-105mm f/4.5-5.6 USM")); - choices.insert (p_t (196, "Canon EF 75-300mm f/4-5.6 USM")); - choices.insert (p_t (197, "Canon EF 75-300mm f/4-5.6 IS USM or Sigma Lens")); - choices.insert (p_t (197, "Sigma 18-300mm f/3.5-6.3 DC Macro OS HS")); - choices.insert (p_t (198, "Canon EF 50mm f/1.4 USM or Zeiss Lens")); - choices.insert (p_t (198, "Zeiss Otus 55mm f/1.4 ZE")); - choices.insert (p_t (198, "Zeiss Otus 85mm f/1.4 ZE")); - choices.insert (p_t (199, "Canon EF 28-80mm f/3.5-5.6 USM")); - choices.insert (p_t (200, "Canon EF 75-300mm f/4-5.6 USM")); - choices.insert (p_t (201, "Canon EF 28-80mm f/3.5-5.6 USM")); - choices.insert (p_t (202, "Canon EF 28-80mm f/3.5-5.6 USM IV")); - choices.insert (p_t (208, "Canon EF 22-55mm f/4-5.6 USM")); - choices.insert (p_t (209, "Canon EF 55-200mm f/4.5-5.6")); - choices.insert (p_t (210, "Canon EF 28-90mm f/4-5.6 USM")); - choices.insert (p_t (211, "Canon EF 28-200mm f/3.5-5.6 USM")); - choices.insert (p_t (212, "Canon EF 28-105mm f/4-5.6 USM")); - choices.insert (p_t (213, "Canon EF 90-300mm f/4.5-5.6 USM or Tamron Lens")); - choices.insert (p_t (213, "Tamron SP 150-600mm f/5-6.3 Di VC USD")); - choices.insert (p_t (213, "Tamron 16-300mm f/3.5-6.3 Di II VC PZD Macro")); - choices.insert (p_t (213, "Tamron SP 35mm f/1.8 Di VC USD")); - choices.insert (p_t (213, "Tamron SP 45mm f/1.8 Di VC USD")); - choices.insert (p_t (214, "Canon EF-S 18-55mm f/3.5-5.6 USM")); - choices.insert (p_t (215, "Canon EF 55-200mm f/4.5-5.6 II USM")); - choices.insert (p_t (217, "Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD")); - choices.insert (p_t (224, "Canon EF 70-200mm f/2.8L IS")); - choices.insert (p_t (225, "Canon EF 70-200mm f/2.8L IS + 1.4x")); - choices.insert (p_t (226, "Canon EF 70-200mm f/2.8L IS + 2x")); - choices.insert (p_t (227, "Canon EF 70-200mm f/2.8L IS + 2.8x")); - choices.insert (p_t (228, "Canon EF 28-105mm f/3.5-4.5 USM")); - choices.insert (p_t (229, "Canon EF 16-35mm f/2.8L")); - choices.insert (p_t (230, "Canon EF 24-70mm f/2.8L")); - choices.insert (p_t (231, "Canon EF 17-40mm f/4L")); - choices.insert (p_t (232, "Canon EF 70-300mm f/4.5-5.6 DO IS USM")); - choices.insert (p_t (233, "Canon EF 28-300mm f/3.5-5.6L IS")); - choices.insert (p_t (234, "Canon EF-S 17-85mm f/4-5.6 IS USM or Tokina Lens")); - choices.insert (p_t (234, "Tokina AT-X 12-28 PRO DX 12-28mm f/4")); - choices.insert (p_t (235, "Canon EF-S 10-22mm f/3.5-4.5 USM")); - choices.insert (p_t (236, "Canon EF-S 60mm f/2.8 Macro USM")); - choices.insert (p_t (237, "Canon EF 24-105mm f/4L IS")); - choices.insert (p_t (238, "Canon EF 70-300mm f/4-5.6 IS USM")); - choices.insert (p_t (239, "Canon EF 85mm f/1.2L II")); - choices.insert (p_t (240, "Canon EF-S 17-55mm f/2.8 IS USM")); - choices.insert (p_t (241, "Canon EF 50mm f/1.2L")); - choices.insert (p_t (242, "Canon EF 70-200mm f/4L IS")); - choices.insert (p_t (243, "Canon EF 70-200mm f/4L IS + 1.4x")); - choices.insert (p_t (244, "Canon EF 70-200mm f/4L IS + 2x")); - choices.insert (p_t (245, "Canon EF 70-200mm f/4L IS + 2.8x")); - choices.insert (p_t (246, "Canon EF 16-35mm f/2.8L II")); - choices.insert (p_t (247, "Canon EF 14mm f/2.8L II USM")); - choices.insert (p_t (248, "Canon EF 200mm f/2L IS or Sigma Lens")); - choices.insert (p_t (248, "Sigma 24-35mm f/2 DG HSM | A")); - choices.insert (p_t (249, "Canon EF 800mm f/5.6L IS")); - choices.insert (p_t (250, "Canon EF 24mm f/1.4L II or Sigma Lens")); - choices.insert (p_t (250, "Sigma 20mm f/1.4 DG HSM | A")); - choices.insert (p_t (251, "Canon EF 70-200mm f/2.8L IS II USM")); - choices.insert (p_t (252, "Canon EF 70-200mm f/2.8L IS II USM + 1.4x")); - choices.insert (p_t (253, "Canon EF 70-200mm f/2.8L IS II USM + 2x")); - choices.insert (p_t (254, "Canon EF 100mm f/2.8L Macro IS USM")); - choices.insert (p_t (255, "Sigma 24-105mm f/4 DG OS HSM | A or Other Sigma Lens")); - choices.insert (p_t (255, "Sigma 180mm f/2.8 EX DG OS HSM APO Macro")); - choices.insert (p_t (488, "Canon EF-S 15-85mm f/3.5-5.6 IS USM")); - choices.insert (p_t (489, "Canon EF 70-300mm f/4-5.6L IS USM")); - choices.insert (p_t (490, "Canon EF 8-15mm f/4L Fisheye USM")); - choices.insert (p_t (491, "Canon EF 300mm f/2.8L IS II USM or Tamron Lens")); - choices.insert (p_t (491, "Tamron SP 70-200mm f/2.8 Di VC USD G2 (A025)")); - choices.insert (p_t (491, "Tamron 18-400mm f/3.5-6.3 Di II VC HLD (B028)")); - choices.insert (p_t (492, "Canon EF 400mm f/2.8L IS II USM")); - choices.insert (p_t (493, "Canon EF 500mm f/4L IS II USM or EF 24-105mm f4L IS USM")); - choices.insert (p_t (493, "Canon EF 24-105mm f/4L IS USM")); - choices.insert (p_t (494, "Canon EF 600mm f/4.0L IS II USM")); - choices.insert (p_t (495, "Canon EF 24-70mm f/2.8L II USM or Sigma Lens")); - choices.insert (p_t (495, "Sigma 24-70mm F2.8 DG OS HSM | A")); - choices.insert (p_t (496, "Canon EF 200-400mm f/4L IS USM")); - choices.insert (p_t (499, "Canon EF 200-400mm f/4L IS USM + 1.4x")); - choices.insert (p_t (502, "Canon EF 28mm f/2.8 IS USM")); - choices.insert (p_t (503, "Canon EF 24mm f/2.8 IS USM")); - choices.insert (p_t (504, "Canon EF 24-70mm f/4L IS USM")); - choices.insert (p_t (505, "Canon EF 35mm f/2 IS USM")); - choices.insert (p_t (506, "Canon EF 400mm f/4 DO IS II USM")); - choices.insert (p_t (507, "Canon EF 16-35mm f/4L IS USM")); - choices.insert (p_t (508, "Canon EF 11-24mm f/4L USM or Tamron Lens")); - choices.insert (p_t (508, "Tamron 10-24mm f/3.5-4.5 Di II VC HLD")); - choices.insert (p_t (747, "Canon EF 100-400mm f/4.5-5.6L IS II USM or Tamron Lens")); - choices.insert (p_t (747, "Tamron SP 150-600mm F5-6.3 Di VC USD G2")); - choices.insert (p_t (748, "Canon EF 100-400mm f/4.5-5.6L IS II USM + 1.4x")); - choices.insert (p_t (750, "Canon EF 35mm f/1.4L II USM")); - choices.insert (p_t (751, "Canon EF 16-35mm f/2.8L III USM")); - choices.insert (p_t (752, "Canon EF 24-105mm f/4L IS II USM")); - choices.insert (p_t (4142, "Canon EF-S 18-135mm f/3.5-5.6 IS STM")); - choices.insert (p_t (4143, "Canon EF-M 18-55mm f/3.5-5.6 IS STM or Tamron Lens")); - choices.insert (p_t (4143, "Tamron 18-200mm f/3.5-6.3 Di III VC")); - choices.insert (p_t (4144, "Canon EF 40mm f/2.8 STM")); - choices.insert (p_t (4145, "Canon EF-M 22mm f/2 STM")); - choices.insert (p_t (4146, "Canon EF-S 18-55mm f/3.5-5.6 IS STM")); - choices.insert (p_t (4147, "Canon EF-M 11-22mm f/4-5.6 IS STM")); - choices.insert (p_t (4148, "Canon EF-S 55-250mm f/4-5.6 IS STM")); - choices.insert (p_t (4149, "Canon EF-M 55-200mm f/4.5-6.3 IS STM")); - choices.insert (p_t (4150, "Canon EF-S 10-18mm f/4.5-5.6 IS STM")); - choices.insert (p_t (4152, "Canon EF 24-105mm f/3.5-5.6 IS STM")); - choices.insert (p_t (4153, "Canon EF-M 15-45mm f/3.5-6.3 IS STM")); - choices.insert (p_t (4154, "Canon EF-S 24mm f/2.8 STM")); - choices.insert (p_t (4155, "Canon EF-M 28mm f/3.5 Macro IS STM")); - choices.insert (p_t (4156, "Canon EF 50mm f/1.8 STM")); - choices.insert (p_t (4157, "Canon EF-M 18-150mm 1:3.5-6.3 IS STM")); - choices.insert (p_t (4158, "Canon EF-S 18-55mm f/4-5.6 IS STM")); - choices.insert (p_t (4160, "Canon EF-S 35mm f/2.8 Macro IS STM")); - choices.insert (p_t (36910, "Canon EF 70-300mm f/4-5.6 IS II USM")); - choices.insert (p_t (36912, "Canon EF-S 18-135mm f/3.5-5.6 IS USM")); - choices.insert (p_t (61491, "Canon CN-E 14mm T3.1 L F")); - choices.insert (p_t (61492, "Canon CN-E 24mm T1.5 L F")); - choices.insert (p_t (61494, "Canon CN-E 85mm T1.3 L F")); - choices.insert (p_t (61495, "Canon CN-E 135mm T2.2 L F")); - choices.insert (p_t (61496, "Canon CN-E 35mm T1.5 L F")); - choices.insert (p_t (65535, "n/a")); + choices = { + {1, "Canon EF 50mm f/1.8"}, + {2, "Canon EF 28mm f/2.8"}, + {3, "Canon EF 135mm f/2.8 Soft"}, + {4, "Canon EF 35-105mm f/3.5-4.5 or Sigma Lens"}, + {4, "Sigma UC Zoom 35-135mm f/4-5.6"}, + {5, "Canon EF 35-70mm f/3.5-4.5"}, + {6, "Canon EF 28-70mm f/3.5-4.5 or Sigma or Tokina Lens"}, + {6, "Sigma 18-50mm f/3.5-5.6 DC"}, + {6, "Sigma 18-125mm f/3.5-5.6 DC IF ASP"}, + {6, "Tokina AF 193-2 19-35mm f/3.5-4.5"}, + {6, "Sigma 28-80mm f/3.5-5.6 II Macro"}, + {7, "Canon EF 100-300mm f/5.6L"}, + {8, "Canon EF 100-300mm f/5.6 or Sigma or Tokina Lens"}, + {8, "Sigma 70-300mm f/4-5.6 [APO] DG Macro"}, + {8, "Tokina AT-X 242 AF 24-200mm f/3.5-5.6"}, + {9, "Canon EF 70-210mm f/4"}, + {9, "Sigma 55-200mm f/4-5.6 DC"}, + {10, "Canon EF 50mm f/2.5 Macro or Sigma Lens"}, + {10, "Sigma 50mm f/2.8 EX"}, + {10, "Sigma 28mm f/1.8"}, + {10, "Sigma 105mm f/2.8 Macro EX"}, + {10, "Sigma 70mm f/2.8 EX DG Macro EF"}, + {11, "Canon EF 35mm f/2"}, + {13, "Canon EF 15mm f/2.8 Fisheye"}, + {14, "Canon EF 50-200mm f/3.5-4.5L"}, + {15, "Canon EF 50-200mm f/3.5-4.5"}, + {16, "Canon EF 35-135mm f/3.5-4.5"}, + {17, "Canon EF 35-70mm f/3.5-4.5A"}, + {18, "Canon EF 28-70mm f/3.5-4.5"}, + {20, "Canon EF 100-200mm f/4.5A"}, + {21, "Canon EF 80-200mm f/2.8L"}, + {22, "Canon EF 20-35mm f/2.8L or Tokina Lens"}, + {22, "Tokina AT-X 280 AF Pro 28-80mm f/2.8 Aspherical"}, + {23, "Canon EF 35-105mm f/3.5-4.5"}, + {24, "Canon EF 35-80mm f/4-5.6 Power Zoom"}, + {25, "Canon EF 35-80mm f/4-5.6 Power Zoom"}, + {26, "Canon EF 100mm f/2.8 Macro or Other Lens"}, + {26, "Cosina 100mm f/3.5 Macro AF"}, + {26, "Tamron SP AF 90mm f/2.8 Di Macro"}, + {26, "Tamron SP AF 180mm f/3.5 Di Macro"}, + {26, "Carl Zeiss Planar T* 50mm f/1.4"}, + {27, "Canon EF 35-80mm f/4-5.6"}, + {28, "Canon EF 80-200mm f/4.5-5.6 or Tamron Lens"}, + {28, "Tamron SP AF 28-105mm f/2.8 LD Aspherical IF"}, + {28, "Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical [IF] Macro"}, + {28, "Tamron AF 70-300mm f/4-5.6 Di LD 1:2 Macro"}, + {28, "Tamron AF Aspherical 28-200mm f/3.8-5.6"}, + {29, "Canon EF 50mm f/1.8 II"}, + {30, "Canon EF 35-105mm f/4.5-5.6"}, + {31, "Canon EF 75-300mm f/4-5.6 or Tamron Lens"}, + {31, "Tamron SP AF 300mm f/2.8 LD IF"}, + {32, "Canon EF 24mm f/2.8 or Sigma Lens"}, + {32, "Sigma 15mm f/2.8 EX Fisheye"}, + {33, "Voigtlander or Carl Zeiss Lens"}, + {33, "Voigtlander Ultron 40mm f/2 SLII Aspherical"}, + {33, "Voigtlander Color Skopar 20mm f/3.5 SLII Aspherical"}, + {33, "Voigtlander APO-Lanthar 90mm f/3.5 SLII Close Focus"}, + {33, "Carl Zeiss Distagon T* 15mm f/2.8 ZE"}, + {33, "Carl Zeiss Distagon T* 18mm f/3.5 ZE"}, + {33, "Carl Zeiss Distagon T* 21mm f/2.8 ZE"}, + {33, "Carl Zeiss Distagon T* 25mm f/2 ZE"}, + {33, "Carl Zeiss Distagon T* 28mm f/2 ZE"}, + {33, "Carl Zeiss Distagon T* 35mm f/2 ZE"}, + {33, "Carl Zeiss Distagon T* 35mm f/1.4 ZE"}, + {33, "Carl Zeiss Planar T* 50mm f/1.4 ZE"}, + {33, "Carl Zeiss Makro-Planar T* 50mm f/2 ZE"}, + {33, "Carl Zeiss Makro-Planar T* 100mm f/2 ZE"}, + {33, "Carl Zeiss Apo-Sonnar T* 135mm f/2 ZE"}, + {35, "Canon EF 35-80mm f/4-5.6"}, + {36, "Canon EF 38-76mm f/4.5-5.6"}, + {37, "Canon EF 35-80mm f/4-5.6 or Tamron Lens"}, + {37, "Tamron 70-200mm f/2.8 Di LD IF Macro"}, + {37, "Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical [IF] Macro Model A20"}, + {37, "Tamron SP AF 17-50mm f/2.8 XR Di II VC LD Aspherical [IF]"}, + {37, "Tamron AF 18-270mm f/3.5-6.3 Di II VC LD Aspherical [IF] Macro"}, + {38, "Canon EF 80-200mm f/4.5-5.6"}, + {39, "Canon EF 75-300mm f/4-5.6"}, + {40, "Canon EF 28-80mm f/3.5-5.6"}, + {41, "Canon EF 28-90mm f/4-5.6"}, + {42, "Canon EF 28-200mm f/3.5-5.6 or Tamron Lens"}, + {42, "Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical [IF] Macro Model A20"}, + {43, "Canon EF 28-105mm f/4-5.6"}, + {44, "Canon EF 90-300mm f/4.5-5.6"}, + {45, "Canon EF-S 18-55mm f/3.5-5.6 [II]"}, + {46, "Canon EF 28-90mm f/4-5.6"}, + {47, "Zeiss Milvus 35mm f/2 or 50mm f/2"}, + {47, "Zeiss Milvus 50mm f/2 Makro"}, + {48, "Canon EF-S 18-55mm f/3.5-5.6 IS"}, + {49, "Canon EF-S 55-250mm f/4-5.6 IS"}, + {50, "Canon EF-S 18-200mm f/3.5-5.6 IS"}, + {51, "Canon EF-S 18-135mm f/3.5-5.6 IS"}, + {52, "Canon EF-S 18-55mm f/3.5-5.6 IS II"}, + {53, "Canon EF-S 18-55mm f/3.5-5.6 III"}, + {54, "Canon EF-S 55-250mm f/4-5.6 IS II"}, + {60, "Irix 11mm f/4"}, + {80, "Canon TS-E 50mm f/2.8L Macro"}, + {81, "Canon TS-E 90mm f/2.8L Macro"}, + {82, "Canon TS-E 135mm f/4L Macro"}, + {94, "Canon TS-E 17mm f/4L"}, + {95, "Canon TS-E 24mm f/3.5L II"}, + {124, "Canon MP-E 65mm f/2.8 1-5x Macro Photo"}, + {125, "Canon TS-E 24mm f/3.5L"}, + {126, "Canon TS-E 45mm f/2.8"}, + {127, "Canon TS-E 90mm f/2.8"}, + {129, "Canon EF 300mm f/2.8L"}, + {130, "Canon EF 50mm f/1.0L"}, + {131, "Canon EF 28-80mm f/2.8-4L or Sigma Lens"}, + {131, "Sigma 8mm f/3.5 EX DG Circular Fisheye"}, + {131, "Sigma 17-35mm f/2.8-4 EX DG Aspherical HSM"}, + {131, "Sigma 17-70mm f/2.8-4.5 DC Macro"}, + {131, "Sigma APO 50-150mm f/2.8 [II] EX DC HSM"}, + {131, "Sigma APO 120-300mm f/2.8 EX DG HSM"}, + {131, "Sigma 4.5mm f/2.8 EX DC HSM Circular Fisheye"}, + {131, "Sigma 70-200mm f/2.8 APO EX HSM"}, + {132, "Canon EF 1200mm f/5.6L"}, + {134, "Canon EF 600mm f/4L IS"}, + {135, "Canon EF 200mm f/1.8L"}, + {136, "Canon EF 300mm f/2.8L"}, + {137, "Canon EF 85mm f/1.2L or Sigma or Tamron Lens"}, + {137, "Sigma 18-50mm f/2.8-4.5 DC OS HSM"}, + {137, "Sigma 50-200mm f/4-5.6 DC OS HSM"}, + {137, "Sigma 18-250mm f/3.5-6.3 DC OS HSM"}, + {137, "Sigma 24-70mm f/2.8 IF EX DG HSM"}, + {137, "Sigma 18-125mm f/3.8-5.6 DC OS HSM"}, + {137, "Sigma 17-70mm f/2.8-4 DC Macro OS HSM | C"}, + {137, "Sigma 17-50mm f/2.8 OS HSM"}, + {137, "Sigma 18-200mm f/3.5-6.3 DC OS HSM [II]"}, + {137, "Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD"}, + {137, "Sigma 8-16mm f/4.5-5.6 DC HSM"}, + {137, "Tamron SP 17-50mm f/2.8 XR Di II VC"}, + {137, "Tamron SP 60mm f/2 Macro Di II"}, + {137, "Sigma 10-20mm f/3.5 EX DC HSM"}, + {137, "Tamron SP 24-70mm f/2.8 Di VC USD"}, + {137, "Sigma 18-35mm f/1.8 DC HSM"}, + {137, "Sigma 12-24mm f/4.5-5.6 DG HSM II"}, + {138, "Canon EF 28-80mm f/2.8-4L"}, + {139, "Canon EF 400mm f/2.8L"}, + {140, "Canon EF 500mm f/4.5L"}, + {141, "Canon EF 500mm f/4.5L"}, + {142, "Canon EF 300mm f/2.8L IS"}, + {143, "Canon EF 500mm f/4L IS or Sigma Lens"}, + {143, "Sigma 17-70mm f/2.8-4 DC Macro OS HSM"}, + {144, "Canon EF 35-135mm f/4-5.6 USM"}, + {145, "Canon EF 100-300mm f/4.5-5.6 USM"}, + {146, "Canon EF 70-210mm f/3.5-4.5 USM"}, + {147, "Canon EF 35-135mm f/4-5.6 USM"}, + {148, "Canon EF 28-80mm f/3.5-5.6 USM"}, + {149, "Canon EF 100mm f/2 USM"}, + {150, "Canon EF 14mm f/2.8L or Sigma Lens"}, + {150, "Sigma 20mm EX f/1.8"}, + {150, "Sigma 30mm f/1.4 DC HSM"}, + {150, "Sigma 24mm f/1.8 DG Macro EX"}, + {150, "Sigma 28mm f/1.8 DG Macro EX"}, + {151, "Canon EF 200mm f/2.8L"}, + {152, "Canon EF 300mm f/4L IS or Sigma Lens"}, + {152, "Sigma 12-24mm f/4.5-5.6 EX DG ASPHERICAL HSM"}, + {152, "Sigma 14mm f/2.8 EX Aspherical HSM"}, + {152, "Sigma 10-20mm f/4-5.6"}, + {152, "Sigma 100-300mm f/4"}, + {153, "Canon EF 35-350mm f/3.5-5.6L or Sigma or Tamron Lens"}, + {153, "Sigma 50-500mm f/4-6.3 APO HSM EX"}, + {153, "Tamron AF 28-300mm f/3.5-6.3 XR LD Aspherical [IF] Macro"}, + {153, "Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical [IF] Macro Model A14"}, + {153, "Tamron 18-250mm f/3.5-6.3 Di II LD Aspherical [IF] Macro"}, + {154, "Canon EF 20mm f/2.8 USM or Zeiss Lens"}, + {154, "Zeiss Milvus 21mm f/2.8"}, + {155, "Canon EF 85mm f/1.8 USM"}, + {156, "Canon EF 28-105mm f/3.5-4.5 USM or Tamron Lens"}, + {156, "Tamron SP 70-300mm f/4.0-5.6 Di VC USD"}, + {156, "Tamron SP AF 28-105mm f/2.8 LD Aspherical IF"}, + {160, "Canon EF 20-35mm f/3.5-4.5 USM or Tamron or Tokina Lens"}, + {160, "Tamron AF 19-35mm f/3.5-4.5"}, + {160, "Tokina AT-X 124 AF Pro DX 12-24mm f/4"}, + {160, "Tokina AT-X 107 AF DX 10-17mm f/3.5-4.5 Fisheye"}, + {160, "Tokina AT-X 116 AF Pro DX 11-16mm f/2.8"}, + {160, "Tokina AT-X 11-20 F2.8 PRO DX Aspherical 11-20mm f/2.8"}, + {161, "Canon EF 28-70mm f/2.8L or Sigma or Tamron Lens"}, + {161, "Sigma 24-70mm f/2.8 EX"}, + {161, "Sigma 28-70mm f/2.8 EX"}, + {161, "Sigma 24-60mm f/2.8 EX DG"}, + {161, "Tamron AF 17-50mm f/2.8 Di-II LD Aspherical"}, + {161, "Tamron 90mm f/2.8"}, + {161, "Tamron SP AF 17-35mm f/2.8-4 Di LD Aspherical IF"}, + {161, "Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical [IF] Macro"}, + {162, "Canon EF 200mm f/2.8L"}, + {163, "Canon EF 300mm f/4L"}, + {164, "Canon EF 400mm f/5.6L"}, + {165, "Canon EF 70-200mm f/2.8 L"}, + {166, "Canon EF 70-200mm f/2.8 L + 1.4x"}, + {167, "Canon EF 70-200mm f/2.8 L + 2x"}, + {168, "Canon EF 28mm f/1.8 USM or Sigma Lens"}, + {168, "Sigma 50-100mm f/1.8 DC HSM | A"}, + {169, "Canon EF 17-35mm f/2.8L or Sigma Lens"}, + {169, "Sigma 18-200mm f/3.5-6.3 DC OS"}, + {169, "Sigma 15-30mm f/3.5-4.5 EX DG Aspherical"}, + {169, "Sigma 18-50mm f/2.8 Macro"}, + {169, "Sigma 50mm f/1.4 EX DG HSM"}, + {169, "Sigma 85mm f/1.4 EX DG HSM"}, + {169, "Sigma 30mm f/1.4 EX DC HSM"}, + {169, "Sigma 35mm f/1.4 DG HSM"}, + {170, "Canon EF 200mm f/2.8L II"}, + {171, "Canon EF 300mm f/4L"}, + {172, "Canon EF 400mm f/5.6L or Sigma Lens"}, + {172, "Sigma 150-600mm f/5-6.3 DG OS HSM | S"}, + {173, "Canon EF 180mm Macro f/3.5L or Sigma Lens"}, + {173, "Sigma 180mm EX HSM Macro f/3.5"}, + {173, "Sigma APO Macro 150mm f/2.8 EX DG HSM"}, + {174, "Canon EF 135mm f/2L or Other Lens"}, + {174, "Sigma 70-200mm f/2.8 EX DG APO OS HSM"}, + {174, "Sigma 50-500mm f/4.5-6.3 APO DG OS HSM"}, + {174, "Sigma 150-500mm f/5-6.3 APO DG OS HSM"}, + {174, "Zeiss Milvus 100mm f/2 Makro"}, + {175, "Canon EF 400mm f/2.8L"}, + {176, "Canon EF 24-85mm f/3.5-4.5 USM"}, + {177, "Canon EF 300mm f/4L IS"}, + {178, "Canon EF 28-135mm f/3.5-5.6 IS"}, + {179, "Canon EF 24mm f/1.4L"}, + {180, "Canon EF 35mm f/1.4L or Other Lens"}, + {180, "Sigma 50mm f/1.4 DG HSM | A"}, + {180, "Sigma 24mm f/1.4 DG HSM | A"}, + {180, "Zeiss Milvus 50mm f/1.4"}, + {180, "Zeiss Milvus 85mm f/1.4"}, + {180, "Zeiss Otus 28mm f/1.4 ZE"}, + {181, "Canon EF 100-400mm f/4.5-5.6L IS + 1.4x or Sigma Lens"}, + {181, "Sigma 150-600mm f/5-6.3 DG OS HSM | S + 1.4x"}, + {182, "Canon EF 100-400mm f/4.5-5.6L IS + 2x or Sigma Lens"}, + {182, "Sigma 150-600mm f/5-6.3 DG OS HSM | S + 2x"}, + {183, "Canon EF 100-400mm f/4.5-5.6L IS or Sigma Lens"}, + {183, "Sigma 150mm f/2.8 EX DG OS HSM APO Macro"}, + {183, "Sigma 105mm f/2.8 EX DG OS HSM Macro"}, + {183, "Sigma 180mm f/2.8 EX DG OS HSM APO Macro"}, + {183, "Sigma 150-600mm f/5-6.3 DG OS HSM | C"}, + {183, "Sigma 150-600mm f/5-6.3 DG OS HSM | S"}, + {183, "Sigma 100-400mm f/5-6.3 DG OS HSM"}, + {184, "Canon EF 400mm f/2.8L + 2x"}, + {185, "Canon EF 600mm f/4L IS"}, + {186, "Canon EF 70-200mm f/4L"}, + {187, "Canon EF 70-200mm f/4L + 1.4x"}, + {188, "Canon EF 70-200mm f/4L + 2x"}, + {189, "Canon EF 70-200mm f/4L + 2.8x"}, + {190, "Canon EF 100mm f/2.8 Macro USM"}, + {191, "Canon EF 400mm f/4 DO IS"}, + {193, "Canon EF 35-80mm f/4-5.6 USM"}, + {194, "Canon EF 80-200mm f/4.5-5.6 USM"}, + {195, "Canon EF 35-105mm f/4.5-5.6 USM"}, + {196, "Canon EF 75-300mm f/4-5.6 USM"}, + {197, "Canon EF 75-300mm f/4-5.6 IS USM or Sigma Lens"}, + {197, "Sigma 18-300mm f/3.5-6.3 DC Macro OS HS"}, + {198, "Canon EF 50mm f/1.4 USM or Zeiss Lens"}, + {198, "Zeiss Otus 55mm f/1.4 ZE"}, + {198, "Zeiss Otus 85mm f/1.4 ZE"}, + {199, "Canon EF 28-80mm f/3.5-5.6 USM"}, + {200, "Canon EF 75-300mm f/4-5.6 USM"}, + {201, "Canon EF 28-80mm f/3.5-5.6 USM"}, + {202, "Canon EF 28-80mm f/3.5-5.6 USM IV"}, + {208, "Canon EF 22-55mm f/4-5.6 USM"}, + {209, "Canon EF 55-200mm f/4.5-5.6"}, + {210, "Canon EF 28-90mm f/4-5.6 USM"}, + {211, "Canon EF 28-200mm f/3.5-5.6 USM"}, + {212, "Canon EF 28-105mm f/4-5.6 USM"}, + {213, "Canon EF 90-300mm f/4.5-5.6 USM or Tamron Lens"}, + {213, "Tamron SP 150-600mm f/5-6.3 Di VC USD"}, + {213, "Tamron 16-300mm f/3.5-6.3 Di II VC PZD Macro"}, + {213, "Tamron SP 35mm f/1.8 Di VC USD"}, + {213, "Tamron SP 45mm f/1.8 Di VC USD"}, + {214, "Canon EF-S 18-55mm f/3.5-5.6 USM"}, + {215, "Canon EF 55-200mm f/4.5-5.6 II USM"}, + {217, "Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD"}, + {224, "Canon EF 70-200mm f/2.8L IS"}, + {225, "Canon EF 70-200mm f/2.8L IS + 1.4x"}, + {226, "Canon EF 70-200mm f/2.8L IS + 2x"}, + {227, "Canon EF 70-200mm f/2.8L IS + 2.8x"}, + {228, "Canon EF 28-105mm f/3.5-4.5 USM"}, + {229, "Canon EF 16-35mm f/2.8L"}, + {230, "Canon EF 24-70mm f/2.8L"}, + {231, "Canon EF 17-40mm f/4L"}, + {232, "Canon EF 70-300mm f/4.5-5.6 DO IS USM"}, + {233, "Canon EF 28-300mm f/3.5-5.6L IS"}, + {234, "Canon EF-S 17-85mm f/4-5.6 IS USM or Tokina Lens"}, + {234, "Tokina AT-X 12-28 PRO DX 12-28mm f/4"}, + {235, "Canon EF-S 10-22mm f/3.5-4.5 USM"}, + {236, "Canon EF-S 60mm f/2.8 Macro USM"}, + {237, "Canon EF 24-105mm f/4L IS"}, + {238, "Canon EF 70-300mm f/4-5.6 IS USM"}, + {239, "Canon EF 85mm f/1.2L II"}, + {240, "Canon EF-S 17-55mm f/2.8 IS USM"}, + {241, "Canon EF 50mm f/1.2L"}, + {242, "Canon EF 70-200mm f/4L IS"}, + {243, "Canon EF 70-200mm f/4L IS + 1.4x"}, + {244, "Canon EF 70-200mm f/4L IS + 2x"}, + {245, "Canon EF 70-200mm f/4L IS + 2.8x"}, + {246, "Canon EF 16-35mm f/2.8L II"}, + {247, "Canon EF 14mm f/2.8L II USM"}, + {248, "Canon EF 200mm f/2L IS or Sigma Lens"}, + {248, "Sigma 24-35mm f/2 DG HSM | A"}, + {249, "Canon EF 800mm f/5.6L IS"}, + {250, "Canon EF 24mm f/1.4L II or Sigma Lens"}, + {250, "Sigma 20mm f/1.4 DG HSM | A"}, + {251, "Canon EF 70-200mm f/2.8L IS II USM"}, + {252, "Canon EF 70-200mm f/2.8L IS II USM + 1.4x"}, + {253, "Canon EF 70-200mm f/2.8L IS II USM + 2x"}, + {254, "Canon EF 100mm f/2.8L Macro IS USM"}, + {255, "Sigma 24-105mm f/4 DG OS HSM | A or Other Sigma Lens"}, + {255, "Sigma 180mm f/2.8 EX DG OS HSM APO Macro"}, + {488, "Canon EF-S 15-85mm f/3.5-5.6 IS USM"}, + {489, "Canon EF 70-300mm f/4-5.6L IS USM"}, + {490, "Canon EF 8-15mm f/4L Fisheye USM"}, + {491, "Canon EF 300mm f/2.8L IS II USM or Tamron Lens"}, + {491, "Tamron SP 70-200mm f/2.8 Di VC USD G2 (A025)"}, + {491, "Tamron 18-400mm f/3.5-6.3 Di II VC HLD (B028)"}, + {492, "Canon EF 400mm f/2.8L IS II USM"}, + {493, "Canon EF 500mm f/4L IS II USM or EF 24-105mm f4L IS USM"}, + {493, "Canon EF 24-105mm f/4L IS USM"}, + {494, "Canon EF 600mm f/4.0L IS II USM"}, + {495, "Canon EF 24-70mm f/2.8L II USM or Sigma Lens"}, + {495, "Sigma 24-70mm F2.8 DG OS HSM | A"}, + {496, "Canon EF 200-400mm f/4L IS USM"}, + {499, "Canon EF 200-400mm f/4L IS USM + 1.4x"}, + {502, "Canon EF 28mm f/2.8 IS USM"}, + {503, "Canon EF 24mm f/2.8 IS USM"}, + {504, "Canon EF 24-70mm f/4L IS USM"}, + {505, "Canon EF 35mm f/2 IS USM"}, + {506, "Canon EF 400mm f/4 DO IS II USM"}, + {507, "Canon EF 16-35mm f/4L IS USM"}, + {508, "Canon EF 11-24mm f/4L USM or Tamron Lens"}, + {508, "Tamron 10-24mm f/3.5-4.5 Di II VC HLD"}, + {747, "Canon EF 100-400mm f/4.5-5.6L IS II USM or Tamron Lens"}, + {747, "Tamron SP 150-600mm F5-6.3 Di VC USD G2"}, + {748, "Canon EF 100-400mm f/4.5-5.6L IS II USM + 1.4x"}, + {750, "Canon EF 35mm f/1.4L II USM"}, + {751, "Canon EF 16-35mm f/2.8L III USM"}, + {752, "Canon EF 24-105mm f/4L IS II USM"}, + {4142, "Canon EF-S 18-135mm f/3.5-5.6 IS STM"}, + {4143, "Canon EF-M 18-55mm f/3.5-5.6 IS STM or Tamron Lens"}, + {4143, "Tamron 18-200mm f/3.5-6.3 Di III VC"}, + {4144, "Canon EF 40mm f/2.8 STM"}, + {4145, "Canon EF-M 22mm f/2 STM"}, + {4146, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"}, + {4147, "Canon EF-M 11-22mm f/4-5.6 IS STM"}, + {4148, "Canon EF-S 55-250mm f/4-5.6 IS STM"}, + {4149, "Canon EF-M 55-200mm f/4.5-6.3 IS STM"}, + {4150, "Canon EF-S 10-18mm f/4.5-5.6 IS STM"}, + {4152, "Canon EF 24-105mm f/3.5-5.6 IS STM"}, + {4153, "Canon EF-M 15-45mm f/3.5-6.3 IS STM"}, + {4154, "Canon EF-S 24mm f/2.8 STM"}, + {4155, "Canon EF-M 28mm f/3.5 Macro IS STM"}, + {4156, "Canon EF 50mm f/1.8 STM"}, + {4157, "Canon EF-M 18-150mm 1:3.5-6.3 IS STM"}, + {4158, "Canon EF-S 18-55mm f/4-5.6 IS STM"}, + {4160, "Canon EF-S 35mm f/2.8 Macro IS STM"}, + {36910, "Canon EF 70-300mm f/4-5.6 IS II USM"}, + {36912, "Canon EF-S 18-135mm f/3.5-5.6 IS USM"}, + {61491, "Canon CN-E 14mm T3.1 L F"}, + {61492, "Canon CN-E 24mm T1.5 L F"}, + {61494, "Canon CN-E 85mm T1.3 L F"}, + {61495, "Canon CN-E 135mm T2.2 L F"}, + {61496, "Canon CN-E 35mm T1.5 L F"}, + {65535, "n/a"} + }; } virtual std::string toString (Tag* t) diff --git a/rtexif/rtexif.cc b/rtexif/rtexif.cc index 8b57fd239..6cb1e7ff8 100644 --- a/rtexif/rtexif.cc +++ b/rtexif/rtexif.cc @@ -739,11 +739,12 @@ void TagDirectory::applyChange (std::string name, Glib::ustring value) } else { const TagAttrib* attrib = nullptr; - for (int i = 0; attribs[i].ignore != -1; i++) + for (int i = 0; attribs[i].ignore != -1; i++) { if (!strcmp (attribs[i].name, fseg.c_str())) { attrib = &attribs[i]; break; } + } if (attrib) { Tag* nt = new Tag (this, attrib); @@ -1572,7 +1573,7 @@ double Tag::toDouble (int ofs) const /** * @brief Create an array of the elements */ -double *Tag::toDoubleArray (int ofs) +double* Tag::toDoubleArray (int ofs) const { double *values = new double[count]; @@ -1583,7 +1584,7 @@ double *Tag::toDoubleArray (int ofs) return values; } -void Tag::toRational (int& num, int& denom, int ofs) +void Tag::toRational (int& num, int& denom, int ofs) const { switch (type) { @@ -1632,7 +1633,7 @@ void Tag::toRational (int& num, int& denom, int ofs) } } -void Tag::toString (char* buffer, int ofs) +void Tag::toString (char* buffer, int ofs) const { if (type == UNDEFINED && !directory) { @@ -1663,15 +1664,11 @@ void Tag::toString (char* buffer, int ofs) return; } - size_t maxcount = 4; - - if (count < 4) { - maxcount = count; - } + size_t maxcount = rtengine::min(count, 10); strcpy (buffer, ""); - for (size_t i = 0; i < std::min(maxcount, valuesize - ofs); i++) { + for (ssize_t i = 0; i < rtengine::min(maxcount, valuesize - ofs); i++) { if (i > 0) { strcat (buffer, ", "); } @@ -1931,24 +1928,48 @@ void Tag::initInt (int data, TagType t, int cnt) setInt (data, 0, t); } +void Tag::swapByteOrder2(char *buffer, int count) +{ + char* ptr = buffer; + for (int i = 0; i < count; i+=2) { + unsigned char c = ptr[0]; + ptr[0] = ptr[1]; + ptr[1] = c; + ptr += 2; + } +} void Tag::initUserComment (const Glib::ustring &text) { + const bool useBOM = false; // set it to true if you want to output BOM in UCS-2/UTF-8 UserComments ; this could be turned to an options entry type = UNDEFINED; if (text.is_ascii()) { - count = 8 + strlen (text.c_str()); - valuesize = count; + valuesize = count = 8 + strlen (text.c_str()); value = new unsigned char[valuesize]; - strcpy ((char*)value, "ASCII"); - value[5] = value[6] = value[7] = 0; - strcpy ((char*)value + 8, text.c_str()); + memcpy(value, "ASCII\0\0\0", 8); + memcpy(value + 8, text.c_str(), valuesize - 8); } else { - wchar_t *commentStr = (wchar_t*)g_utf8_to_utf16 (text.c_str(), -1, NULL, NULL, NULL); - count = 8 + wcslen(commentStr)*2; - valuesize = count; - value = (unsigned char*)new char[valuesize]; - strcpy ((char*)value, "UNICODE"); - value[7] = 0; - wcscpy(((wchar_t*)value) + 4, commentStr); + wchar_t *commentStr = (wchar_t*)g_utf8_to_utf16 (text.c_str(), -1, nullptr, nullptr, nullptr); + size_t wcStrSize = wcslen(commentStr); + valuesize = count = wcStrSize * 2 + 8 + (useBOM ? 2 : 0); + value = new unsigned char[valuesize]; + memcpy(value, "UNICODE\0", 8); + + if (useBOM) { + if (getOrder() == INTEL) { //Little Endian + value[8] = 0xFF; + value[9] = 0xFE; + } else { + value[8] = 0xFE; + value[9] = 0xFF; + } + } + + // Swapping byte order to match the Exif's byte order + if (getOrder() != HOSTORDER) { + swapByteOrder2((char*)commentStr, wcStrSize * 2); + } + + memcpy(value + 8 + (useBOM ? 2 : 0), (char*)commentStr, wcStrSize * 2); g_free(commentStr); } } @@ -3199,9 +3220,8 @@ int ExifManager::createJPEGMarker (const TagDirectory* root, const rtengine::pro return size + 6; } -int ExifManager::createTIFFHeader (const TagDirectory* root, const rtengine::procparams::ExifPairs& changeList, int W, int H, int bps, const char* profiledata, int profilelen, const char* iptcdata, int iptclen, unsigned char *&buffer, unsigned &bufferSize) +int ExifManager::createPNGMarker(const TagDirectory* root, const rtengine::procparams::ExifPairs &changeList, int W, int H, int bps, const char* iptcdata, int iptclen, unsigned char *&buffer, unsigned &bufferSize) { - // write tiff header int offs = 0; ByteOrder order = HOSTORDER; @@ -3230,35 +3250,6 @@ int ExifManager::createTIFFHeader (const TagDirectory* root, const rtengine::pro cl = new TagDirectory (nullptr, ifdAttribs, HOSTORDER); } -// add tiff strip data - int rps = 8; - int strips = ceil ((double)H / rps); - cl->replaceTag (new Tag (cl, lookupAttrib (ifdAttribs, "RowsPerStrip"), rps, LONG)); - Tag* stripBC = new Tag (cl, lookupAttrib (ifdAttribs, "StripByteCounts")); - stripBC->initInt (0, LONG, strips); - cl->replaceTag (stripBC); - Tag* stripOffs = new Tag (cl, lookupAttrib (ifdAttribs, "StripOffsets")); - stripOffs->initInt (0, LONG, strips); - cl->replaceTag (stripOffs); - - for (int i = 0; i < strips - 1; i++) { - stripBC->setInt (rps * W * 3 * bps / 8, i * 4); - } - - int remaining = (H - rps * floor ((double)H / rps)) * W * 3 * bps / 8; - - if (remaining) { - stripBC->setInt (remaining, (strips - 1) * 4); - } else { - stripBC->setInt (rps * W * 3 * bps / 8, (strips - 1) * 4); - } - - if (profiledata) { - Tag* icc = new Tag (cl, lookupAttrib (ifdAttribs, "ICCProfile")); - icc->initUndefArray (profiledata, profilelen); - cl->replaceTag (icc); - } - if (iptcdata) { Tag* iptc = new Tag (cl, lookupAttrib (ifdAttribs, "IPTCData")); iptc->initLongArray (iptcdata, iptclen); @@ -3287,14 +3278,6 @@ int ExifManager::createTIFFHeader (const TagDirectory* root, const rtengine::pro delete defTag; } -// calculate strip offsets - int size = cl->calculateSize (); - int byps = bps / 8; - - for (int i = 0; i < strips; i++) { - stripOffs->setInt (size + 8 + i * rps * W * 3 * byps, i * 4); - } - cl->sort (); bufferSize = cl->calculateSize() + 8; buffer = new unsigned char[bufferSize]; // this has to be deleted in caller @@ -3312,6 +3295,7 @@ int ExifManager::createTIFFHeader (const TagDirectory* root, const rtengine::pro return endOffs; } + //----------------------------------------------------------------------------- // global functions to read byteorder dependent data //----------------------------------------------------------------------------- diff --git a/rtexif/rtexif.h b/rtexif/rtexif.h index 125d38c94..33419fe71 100644 --- a/rtexif/rtexif.h +++ b/rtexif/rtexif.h @@ -236,6 +236,8 @@ public: void initLongArray (const char* data, int len); void initRational (int num, int den); + static void swapByteOrder2 (char *buffer, int count); + // get basic tag properties int getID () const { @@ -282,9 +284,9 @@ public: int toInt (int ofs = 0, TagType astype = INVALID) const; void fromInt (int v); double toDouble (int ofs = 0) const; - double *toDoubleArray (int ofs = 0); - void toRational (int& num, int& denom, int ofs = 0); - void toString (char* buffer, int ofs = 0); + double* toDoubleArray (int ofs = 0) const; + void toRational (int& num, int& denom, int ofs = 0) const; + void toString (char* buffer, int ofs = 0) const; void fromString (const char* v, int size = -1); void setInt (int v, int ofs = 0, TagType astype = LONG); @@ -361,6 +363,7 @@ public: static std::vector getDefaultTIFFTags (TagDirectory* forthis); static int createJPEGMarker (const TagDirectory* root, const rtengine::procparams::ExifPairs& changeList, int W, int H, unsigned char* buffer); static int createTIFFHeader (const TagDirectory* root, const rtengine::procparams::ExifPairs& changeList, int W, int H, int bps, const char* profiledata, int profilelen, const char* iptcdata, int iptclen, unsigned char *&buffer, unsigned &bufferSize); + static int createPNGMarker(const TagDirectory *root, const rtengine::procparams::ExifPairs &changeList, int W, int H, int bps, const char *iptcdata, int iptclen, unsigned char *&buffer, unsigned &bufferSize); }; class Interpreter diff --git a/rtexif/stdattribs.cc b/rtexif/stdattribs.cc index a7e3fe00f..ca19b7f1c 100644 --- a/rtexif/stdattribs.cc +++ b/rtexif/stdattribs.cc @@ -452,12 +452,109 @@ public: } count = std::min (count, 65535); // limit to 65535 chars to avoid crashes in case of corrupted metadata - char *buffer = new char[count - 7]; + char *buffer = new char[count - 6]; // include 2 ending null chars for UCS-2 string (possibly) + char *value = (char*)t->getValue(); - if (!memcmp ((char*)t->getValue(), "ASCII\0\0\0", 8)) { - strncpy (buffer, (char*)t->getValue() + 8, count - 8); + if (!memcmp(value, "ASCII\0\0\0", 8)) { + memcpy(buffer, value + 8, count - 8); buffer[count - 8] = '\0'; + } else if (!memcmp(value, "UNICODE\0", 8)) { + memcpy(buffer, value + 8, count - 8); + buffer[count - 7] = buffer[count - 8] = '\0'; + Glib::ustring tmp1(buffer); + + + bool hasBOM = false; + enum ByteOrder bo = UNKNOWN; + if (count % 2 || (count >= 11 && (buffer[0] == 0xEF && buffer[1] == 0xBB && buffer[2] == 0xBF))) { + // odd string length can only be UTF-8, don't change anything + std::string retVal (buffer + 3); + delete [] buffer; + return retVal; + } else if (count >= 10) { + if (buffer[0] == 0xFF && buffer[1] == 0xFE) { + bo = INTEL; // little endian + hasBOM = true; + } else if (buffer[0] == 0xFE && buffer[1] == 0xFF) { + bo = MOTOROLA; // big endian + hasBOM = true; + } + } + if (bo == UNKNOWN) { + // auto-detecting byte order; we still don't know if it's UCS-2 or UTF-8 + int a = 0, b = 0, c = 0, d = 0; + for (int j = 8; j < count; j++) { + char cc = value[j]; + if (!(j%2)) { + // counting zeros for first byte + if (!cc) { + ++a; + } + } else { + // counting zeros for second byte + if (!cc) { + ++b; + } + } + if (!(cc & 0x80) || ((cc & 0xC0) == 0xC0) || ((cc & 0xC0) == 0x80)) { + ++c; + } + if ((cc & 0xC0) == 0x80) { + ++d; + } + } + if (c == (count - 8) && d) { + // this is an UTF-8 string + std::string retVal (buffer); + delete [] buffer; + return retVal; + } + if ((a || b) && a != b) { + bo = a > b ? MOTOROLA : INTEL; + } + } + if (bo == UNKNOWN) { + // assuming platform's byte order +#if __BYTE_ORDER__==__ORDER_LITTLE_ENDIAN__ + bo = INTEL; +#else + bo = MOTOROLA; +#endif + } + + // now swapping if necessary + if (!hasBOM && bo != HOSTORDER) { + if (t->getOrder() != HOSTORDER) { + Tag::swapByteOrder2(buffer, count - 8); + } + } + + glong written; + char* utf8Str = g_utf16_to_utf8((unsigned short int*)buffer, -1, nullptr, &written, nullptr); + delete [] buffer; + buffer = new char[written + 1]; + memcpy(buffer, utf8Str, written); + buffer[written] = 0; + } else if (!memcmp(value, "\0\0\0\0\0\0\0\0", 8)) { + // local charset string, whatever it is + memcpy(buffer, value + 8, count - 8); + buffer[count - 7] = buffer[count - 8] = '\0'; + + gsize written = 0; + char *utf8Str = g_locale_to_utf8(buffer, count - 8, nullptr, &written, nullptr); + if (utf8Str && written) { + delete [] buffer; + size_t length = strlen(utf8Str); + buffer = new char[length + 1]; + strcpy(buffer, utf8Str); + } else { + buffer[0] = 0; + } + if (utf8Str) { + g_free(utf8Str); + } } else { + // JIS: unsupported buffer[0] = 0; } @@ -467,11 +564,8 @@ public: } virtual void fromString (Tag* t, const std::string& value) { - char *buffer = new char[t->getCount()]; - memcpy (buffer, "ASCII\0\0\0", 8); - strcpy (buffer + 8, value.c_str()); - t->fromString (buffer, value.size() + 9); - delete [] buffer; + Glib::ustring tmpStr(value); + t->userCommentFromString (tmpStr); } }; UserCommentInterpreter userCommentInterpreter; @@ -809,10 +903,10 @@ const TagAttrib ifdAttribs[] = { {0, AC_WRITE, 0, nullptr, 0x828e, AUTO, "CFAPattern", &cfaInterpreter}, {0, AC_WRITE, 0, kodakIfdAttribs, 0x8290, AUTO, "KodakIFD", &stdInterpreter}, {0, AC_WRITE, 1, nullptr, 0x8298, AUTO, "Copyright", &stdInterpreter}, + {0, AC_SYSTEM, 0, nullptr, 0x83BB, AUTO, "IPTCData", &stdInterpreter}, {0, AC_DONTWRITE, 0, nullptr, 0x8606, AUTO, "LeafData", &stdInterpreter}, // is actually a subdir, but a proprietary format {0, AC_WRITE, 0, exifAttribs, 0x8769, AUTO, "Exif", &stdInterpreter}, {0, AC_SYSTEM, 0, nullptr, 0x8773, AUTO, "ICCProfile", &stdInterpreter}, - {0, AC_SYSTEM, 0, nullptr, 0x83BB, AUTO, "IPTCData", &stdInterpreter}, {0, AC_WRITE, 0, gpsAttribs, 0x8825, AUTO, "GPSInfo", &stdInterpreter}, {0, AC_WRITE, 0, nullptr, 0x9003, AUTO, "DateTimeOriginal", &stdInterpreter}, {0, AC_WRITE, 0, nullptr, 0x9004, AUTO, "DateTimeDigitized", &stdInterpreter}, diff --git a/rtgui/CMakeLists.txt b/rtgui/CMakeLists.txt index 090e9e867..c1cbe3c1e 100644 --- a/rtgui/CMakeLists.txt +++ b/rtgui/CMakeLists.txt @@ -149,6 +149,10 @@ set(NONCLISOURCEFILES xtransrawexposure.cc zoompanel.cc fattaltonemap.cc + localcontrast.cc + eventmapper.cc + metadatapanel.cc + labgrid.cc ) include_directories(BEFORE "${CMAKE_CURRENT_BINARY_DIR}") diff --git a/rtgui/addsetids.h b/rtgui/addsetids.h index 07cf47d18..f94075ce4 100644 --- a/rtgui/addsetids.h +++ b/rtgui/addsetids.h @@ -11,7 +11,7 @@ enum { ADDSET_TC_CONTRAST, ADDSET_SH_HIGHLIGHTS, ADDSET_SH_SHADOWS, - ADDSET_SH_LOCALCONTRAST, + ADDSET_SH_LOCALCONTRAST, // not used anymore ADDSET_LC_BRIGHTNESS, ADDSET_LC_CONTRAST, ADDSET_SHARP_AMOUNT, @@ -129,6 +129,10 @@ enum { ADDSET_EPD_REWEIGHTINGITERATES, ADDSET_FATTAL_ALPHA, ADDSET_FATTAL_BETA, + ADDSET_LOCALCONTRAST_RADIUS, + ADDSET_LOCALCONTRAST_AMOUNT, + ADDSET_LOCALCONTRAST_DARKNESS, + ADDSET_LOCALCONTRAST_LIGHTNESS, ADDSET_PARAM_NUM // THIS IS USED AS A DELIMITER!! }; diff --git a/rtgui/batchqueue.cc b/rtgui/batchqueue.cc index 43ee5d79d..2f3505a08 100644 --- a/rtgui/batchqueue.cc +++ b/rtgui/batchqueue.cc @@ -373,7 +373,7 @@ Glib::ustring BatchQueue::getTempFilenameForParams( const Glib::ustring &filenam { timeval tv; gettimeofday(&tv, nullptr); - char mseconds[4]; + char mseconds[11]; sprintf(mseconds, "%d", (int)(tv.tv_usec / 1000)); time_t rawtime; struct tm *timeinfo; @@ -572,13 +572,13 @@ void BatchQueue::startProcessing () next->removeButtonSet (); // start batch processing - rtengine::startBatchProcessing (next->job, this, options.tunnelMetaData); + rtengine::startBatchProcessing (next->job, this); queue_draw (); } } } -rtengine::ProcessingJob* BatchQueue::imageReady (rtengine::IImage16* img) +rtengine::ProcessingJob* BatchQueue::imageReady (rtengine::IImagefloat* img) { // save image img diff --git a/rtgui/batchqueue.h b/rtgui/batchqueue.h index 68373838e..0d91542b6 100644 --- a/rtgui/batchqueue.h +++ b/rtgui/batchqueue.h @@ -62,7 +62,7 @@ public: return (!fd.empty()); } - rtengine::ProcessingJob* imageReady (rtengine::IImage16* img); + rtengine::ProcessingJob* imageReady (rtengine::IImagefloat* img); void error (Glib::ustring msg); void setProgress (double p); void rightClicked (ThumbBrowserEntryBase* entry); diff --git a/rtgui/batchqueuepanel.cc b/rtgui/batchqueuepanel.cc index fcccdf08a..ba07f6f4d 100644 --- a/rtgui/batchqueuepanel.cc +++ b/rtgui/batchqueuepanel.cc @@ -46,29 +46,21 @@ BatchQueuePanel::BatchQueuePanel (FileCatalog* aFileCatalog) : parent(nullptr) batchQueue = Gtk::manage( new BatchQueue(aFileCatalog) ); - // construct batch queue panel with the extra "start" and "stop" button Gtk::VBox* batchQueueButtonBox = Gtk::manage (new Gtk::VBox); batchQueueButtonBox->set_name("BatchQueueButtons"); - start = Gtk::manage (new Gtk::ToggleButton ()); - stop = Gtk::manage (new Gtk::ToggleButton ()); - autoStart = Gtk::manage (new Gtk::CheckButton (M("BATCHQUEUE_AUTOSTART"))); - start->set_tooltip_markup (M("FILEBROWSER_STARTPROCESSINGHINT")); - stop->set_tooltip_markup (M("FILEBROWSER_STOPPROCESSINGHINT")); - autoStart->set_tooltip_text (M("FILEBROWSER_TOOLTIP_STOPPROCESSING")); - start->set_active (false); - stop->set_active (true); - autoStart->set_active (options.procQueueEnabled); + qStartStop = Gtk::manage (new Gtk::Switch()); + qStartStop->set_tooltip_markup (M("BATCHQUEUE_STARTSTOPHINT")); + qStartStopConn = qStartStop->property_active().signal_changed().connect (sigc::mem_fun(*this, &BatchQueuePanel::startOrStopBatchProc)); - start->set_image (*Gtk::manage (new RTImage ("gtk-media-play.png"))); - start->get_style_context()->add_class("BIG"); - startConnection = start->signal_toggled().connect (sigc::mem_fun(*this, &BatchQueuePanel::startBatchProc)); - stop->set_image (*Gtk::manage (new RTImage ("gtk-media-stop.png"))); - stop->get_style_context()->add_class("BIG"); - stopConnection = stop->signal_toggled().connect (sigc::mem_fun(*this, &BatchQueuePanel::stopBatchProc)); - batchQueueButtonBox->pack_start (*start, Gtk::PACK_SHRINK, 4); - batchQueueButtonBox->pack_start (*stop, Gtk::PACK_SHRINK, 4); - batchQueueButtonBox->pack_start (*autoStart, Gtk::PACK_SHRINK, 4); + qAutoStart = Gtk::manage (new Gtk::CheckButton (M("BATCHQUEUE_AUTOSTART"))); + qAutoStart->set_tooltip_text (M("BATCHQUEUE_AUTOSTARTHINT")); + qAutoStart->set_active (options.procQueueEnabled); + + batchQueueButtonBox->pack_start (*qStartStop, Gtk::PACK_SHRINK, 4); + batchQueueButtonBox->pack_start (*qAutoStart, Gtk::PACK_SHRINK, 4); + Gtk::Frame *bbox = Gtk::manage(new Gtk::Frame(M("MAIN_FRAME_BATCHQUEUE"))); + bbox->add(*batchQueueButtonBox); // Output directory selection fdir = Gtk::manage (new Gtk::Frame (M("PREFERENCES_OUTDIR"))); @@ -141,7 +133,7 @@ BatchQueuePanel::BatchQueuePanel (FileCatalog* aFileCatalog) : parent(nullptr) pack_start (*topBox, Gtk::PACK_SHRINK); topBox->set_name("BatchQueueButtonsMainContainer"); - topBox->pack_start (*batchQueueButtonBox, Gtk::PACK_SHRINK, 4); + topBox->pack_start (*bbox, Gtk::PACK_SHRINK, 4); topBox->pack_start (*fdir, Gtk::PACK_EXPAND_WIDGET, 4); topBox->pack_start (*fformat, Gtk::PACK_EXPAND_WIDGET, 4); @@ -216,7 +208,7 @@ void BatchQueuePanel::updateTab (int qsize, int forceOrientation) if(!qsize ) { grid->attach_next_to(*Gtk::manage (new RTImage ("processing.png")), Gtk::POS_TOP, 1, 1); l = Gtk::manage (new Gtk::Label (Glib::ustring(" ") + M("MAIN_FRAME_BATCHQUEUE")) ); - } else if( start->get_active () ) { + } else if (qStartStop->get_active()) { grid->attach_next_to(*Gtk::manage (new RTImage ("processing-play.png")), Gtk::POS_TOP, 1, 1); l = Gtk::manage (new Gtk::Label (Glib::ustring(" ") + M("MAIN_FRAME_BATCHQUEUE") + " [" + Glib::ustring::format( qsize ) + "]")); } else { @@ -236,7 +228,7 @@ void BatchQueuePanel::updateTab (int qsize, int forceOrientation) if (!qsize ) { grid->attach_next_to(*Gtk::manage (new RTImage ("processing.png")), Gtk::POS_RIGHT, 1, 1); grid->attach_next_to(*Gtk::manage (new Gtk::Label (M("MAIN_FRAME_BATCHQUEUE") )), Gtk::POS_RIGHT, 1, 1); - } else if ( start->get_active () ) { + } else if (qStartStop->get_active()) { grid->attach_next_to(*Gtk::manage (new RTImage ("processing-play.png")), Gtk::POS_RIGHT, 1, 1); grid->attach_next_to(*Gtk::manage (new Gtk::Label (M("MAIN_FRAME_BATCHQUEUE") + " [" + Glib::ustring::format( qsize ) + "]" )), Gtk::POS_RIGHT, 1, 1); } else { @@ -257,6 +249,12 @@ void BatchQueuePanel::queueSizeChanged (int qsize, bool queueEmptied, bool queue { updateTab ( qsize); + if (qsize == 0 || (qsize == 1 && !fdir->get_sensitive())) { + qStartStop->set_sensitive(false); + } else { + qStartStop->set_sensitive(true); + } + if (queueEmptied || queueError) { stopBatchProc (); fdir->set_sensitive (true); @@ -271,19 +269,29 @@ void BatchQueuePanel::queueSizeChanged (int qsize, bool queueEmptied, bool queue } } +void BatchQueuePanel::startOrStopBatchProc() +{ + bool state = qStartStop->get_state(); + if (state) { + startBatchProc(); + } else { + stopBatchProc(); + } +} + void BatchQueuePanel::startBatchProc () { - - stopConnection.block (true); - startConnection.block (true); - stop->set_active (false); - start->set_active (true); - stopConnection.block (false); - startConnection.block (false); + // Update switch when queue started programmatically + qStartStopConn.block (true); + qStartStop->set_active(true); + qStartStopConn.block (false); if (batchQueue->hasJobs()) { fdir->set_sensitive (false); fformat->set_sensitive (false); + if (batchQueue->getEntries().size() == 1) { + qStartStop->set_sensitive(false); + } saveOptions(); batchQueue->startProcessing (); } else { @@ -295,13 +303,11 @@ void BatchQueuePanel::startBatchProc () void BatchQueuePanel::stopBatchProc () { + // Update switch when queue started programmatically + qStartStopConn.block (true); + qStartStop->set_active(false); + qStartStopConn.block (false); - stopConnection.block (true); - startConnection.block (true); - stop->set_active (true); - start->set_active (false); - stopConnection.block (false); - startConnection.block (false); updateTab (batchQueue->getEntries().size()); } @@ -310,7 +316,7 @@ void BatchQueuePanel::addBatchQueueJobs ( std::vector &entries batchQueue->addEntries (entries, head); - if (stop->get_active () && autoStart->get_active ()) { + if (!qStartStop->get_active() && qAutoStart->get_active()) { startBatchProc (); } } @@ -318,7 +324,7 @@ void BatchQueuePanel::addBatchQueueJobs ( std::vector &entries bool BatchQueuePanel::canStartNext () { - if (start->get_active ()) { + if (qStartStop->get_active()) { return true; } else { fdir->set_sensitive (true); @@ -332,7 +338,7 @@ void BatchQueuePanel::saveOptions () options.savePathTemplate = outdirTemplate->get_text(); options.saveUsePathTemplate = useTemplate->get_active(); - options.procQueueEnabled = autoStart->get_active (); + options.procQueueEnabled = qAutoStart->get_active(); } void BatchQueuePanel::pathFolderButtonPressed () @@ -375,7 +381,7 @@ bool BatchQueuePanel::handleShortcutKey (GdkEventKey* event) if (ctrl) { switch(event->keyval) { case GDK_KEY_s: - if (start->get_active()) { + if (qStartStop->get_active()) { stopBatchProc(); } else { startBatchProc(); diff --git a/rtgui/batchqueuepanel.h b/rtgui/batchqueuepanel.h index a4d6ed244..497bc166e 100644 --- a/rtgui/batchqueuepanel.h +++ b/rtgui/batchqueuepanel.h @@ -34,11 +34,9 @@ class BatchQueuePanel : public Gtk::VBox, Gtk::Button* zoomInButton; Gtk::Button* zoomOutButton; - Gtk::ToggleButton* start; - Gtk::ToggleButton* stop; - Gtk::CheckButton* autoStart; - sigc::connection startConnection; - sigc::connection stopConnection; + Gtk::Switch* qStartStop; + sigc::connection qStartStopConn; + Gtk::CheckButton* qAutoStart; Gtk::Entry* outdirTemplate; MyFileChooserButton* outdirFolder; @@ -69,6 +67,7 @@ public: void startBatchProc (); void stopBatchProc (); + void startOrStopBatchProc(); void saveOptions (); void pathFolderChanged (); diff --git a/rtgui/batchtoolpanelcoord.cc b/rtgui/batchtoolpanelcoord.cc index a854db612..413a9ce86 100644 --- a/rtgui/batchtoolpanelcoord.cc +++ b/rtgui/batchtoolpanelcoord.cc @@ -160,7 +160,7 @@ void BatchToolPanelCoordinator::initSession () filmSimulation->setAdjusterBehavior(false); retinex->setAdjusterBehavior (false, false, false, false, false, false, false); - shadowshighlights->setAdjusterBehavior (false, false, false); + shadowshighlights->setAdjusterBehavior (false, false); dirpyrequalizer->setAdjusterBehavior (false, false, false); wavelet->setAdjusterBehavior (false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); dirpyrdenoise->setAdjusterBehavior (false, false, false, false, false, false, false); @@ -193,6 +193,7 @@ void BatchToolPanelCoordinator::initSession () prsharpening->setAdjusterBehavior (options.baBehav[ADDSET_SHARP_RADIUS], options.baBehav[ADDSET_SHARP_AMOUNT], options.baBehav[ADDSET_SHARP_DAMPING], options.baBehav[ADDSET_SHARP_ITER], options.baBehav[ADDSET_SHARP_EDGETOL], options.baBehav[ADDSET_SHARP_HALOCTRL]); epd->setAdjusterBehavior (options.baBehav[ADDSET_EPD_STRENGTH], options.baBehav[ADDSET_EPD_GAMMA], options.baBehav[ADDSET_EPD_EDGESTOPPING], options.baBehav[ADDSET_EPD_SCALE], options.baBehav[ADDSET_EPD_REWEIGHTINGITERATES]); fattal->setAdjusterBehavior (options.baBehav[ADDSET_FATTAL_ALPHA], options.baBehav[ADDSET_FATTAL_BETA]); + localContrast->setAdjusterBehavior(options.baBehav[ADDSET_LOCALCONTRAST_RADIUS], options.baBehav[ADDSET_LOCALCONTRAST_AMOUNT], options.baBehav[ADDSET_LOCALCONTRAST_DARKNESS], options.baBehav[ADDSET_LOCALCONTRAST_LIGHTNESS]); sharpenEdge->setAdjusterBehavior (options.baBehav[ADDSET_SHARPENEDGE_AMOUNT], options.baBehav[ADDSET_SHARPENEDGE_PASS]); sharpenMicro->setAdjusterBehavior (options.baBehav[ADDSET_SHARPENMICRO_AMOUNT], options.baBehav[ADDSET_SHARPENMICRO_UNIFORMITY]); @@ -204,7 +205,7 @@ void BatchToolPanelCoordinator::initSession () chmixer->setAdjusterBehavior (options.baBehav[ADDSET_CHMIXER] ); blackwhite->setAdjusterBehavior (options.baBehav[ADDSET_BLACKWHITE_HUES], options.baBehav[ADDSET_BLACKWHITE_GAMMA]); - shadowshighlights->setAdjusterBehavior (options.baBehav[ADDSET_SH_HIGHLIGHTS], options.baBehav[ADDSET_SH_SHADOWS], options.baBehav[ADDSET_SH_LOCALCONTRAST]); + shadowshighlights->setAdjusterBehavior (options.baBehav[ADDSET_SH_HIGHLIGHTS], options.baBehav[ADDSET_SH_SHADOWS]); dirpyrequalizer->setAdjusterBehavior (options.baBehav[ADDSET_DIRPYREQ], options.baBehav[ADDSET_DIRPYREQ_THRESHOLD], options.baBehav[ADDSET_DIRPYREQ_SKINPROTECT]); wavelet->setAdjusterBehavior (options.baBehav[ADDSET_WA], options.baBehav[ADDSET_WA_THRESHOLD], options.baBehav[ADDSET_WA_THRESHOLD2], options.baBehav[ADDSET_WA_THRES], options.baBehav[ADDSET_WA_CHRO], options.baBehav[ADDSET_WA_CHROMA], options.baBehav[ADDSET_WA_CONTRAST], options.baBehav[ADDSET_WA_SKINPROTECT], options.baBehav[ADDSET_WA_RESCHRO], options.baBehav[ADDSET_WA_TMRS], options.baBehav[ADDSET_WA_RESCON], options.baBehav[ADDSET_WA_RESCONH], options.baBehav[ADDSET_WA_THRR], options.baBehav[ADDSET_WA_THRRH], options.baBehav[ADDSET_WA_SKYPROTECT], options.baBehav[ADDSET_WA_EDGRAD], options.baBehav[ADDSET_WA_EDGVAL], options.baBehav[ADDSET_WA_STRENGTH], options.baBehav[ADDSET_WA_GAMMA], options.baBehav[ADDSET_WA_EDGEDETECT], options.baBehav[ADDSET_WA_EDGEDETECTTHR], options.baBehav[ADDSET_WA_EDGEDETECTTHR2]); dirpyrdenoise->setAdjusterBehavior (options.baBehav[ADDSET_DIRPYRDN_LUMA], options.baBehav[ADDSET_DIRPYRDN_LUMDET], options.baBehav[ADDSET_DIRPYRDN_CHROMA], options.baBehav[ADDSET_DIRPYRDN_CHROMARED], options.baBehav[ADDSET_DIRPYRDN_CHROMABLUE], options.baBehav[ADDSET_DIRPYRDN_GAMMA], options.baBehav[ADDSET_DIRPYRDN_PASSES]); @@ -226,7 +227,6 @@ void BatchToolPanelCoordinator::initSession () if (options.baBehav[ADDSET_TC_SATURATION]) { pparams.toneCurve.saturation = 0;} if (options.baBehav[ADDSET_SH_HIGHLIGHTS]) { pparams.sh.highlights = 0; } if (options.baBehav[ADDSET_SH_SHADOWS]) { pparams.sh.shadows = 0; } - if (options.baBehav[ADDSET_SH_LOCALCONTRAST]) { pparams.sh.localcontrast = 0; } if (options.baBehav[ADDSET_LC_BRIGHTNESS]) { pparams.labCurve.brightness = 0; } if (options.baBehav[ADDSET_LC_CONTRAST]) { pparams.labCurve.contrast = 0; } if (options.baBehav[ADDSET_LC_CHROMATICITY]) { pparams.labCurve.chromaticity = 0; } @@ -351,6 +351,9 @@ void BatchToolPanelCoordinator::initSession () if (options.baBehav[ADDSET_RAWFFCLIPCONTROL]) { pparams.raw.ff_clipControl = 0; } if (options.baBehav[ADDSET_PREPROCESS_GREENEQUIL]) { pparams.raw.bayersensor.greenthresh = 0; } if (options.baBehav[ADDSET_PREPROCESS_LINEDENOISE]) { pparams.raw.bayersensor.linenoise = 0; } + if (options.baBehav[ADDSET_LOCALCONTRAST_AMOUNT]) { pparams.localContrast.amount = 0; } + if (options.baBehav[ADDSET_LOCALCONTRAST_DARKNESS]) { pparams.localContrast.darkness = 0; } + if (options.baBehav[ADDSET_LOCALCONTRAST_LIGHTNESS]) { pparams.localContrast.lightness = 0; } // *INDENT-ON* } diff --git a/rtgui/bayerprocess.cc b/rtgui/bayerprocess.cc index 9df7c106d..b294c9fee 100644 --- a/rtgui/bayerprocess.cc +++ b/rtgui/bayerprocess.cc @@ -225,6 +225,11 @@ BayerProcess::BayerProcess () : FoldableToolPanel(this, "bayerprocess", M("TP_RA pixelShiftLmmse->set_tooltip_text (M("TP_RAW_PIXELSHIFTLMMSE_TOOLTIP")); pixelShiftOptions->pack_start(*pixelShiftLmmse); +// pixelShiftOneGreen = Gtk::manage (new CheckBox(M("TP_RAW_PIXELSHIFTONEGREEN"), multiImage)); +// pixelShiftOneGreen->setCheckBoxListener (this); +// pixelShiftOneGreen->set_tooltip_text (M("TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP")); +// pixelShiftOptions->pack_start(*pixelShiftOneGreen); + #ifdef PIXELSHIFTDEV pixelShiftMotion = Gtk::manage (new Adjuster (M("TP_RAW_PIXELSHIFTMOTION"), 0, 100, 1, 70)); pixelShiftMotion->setAdjusterListener (this); @@ -376,6 +381,7 @@ void BayerProcess::read(const rtengine::procparams::ProcParams* pp, const Params } pixelShiftSmooth->setValue (pp->raw.bayersensor.pixelShiftSmoothFactor); pixelShiftLmmse->setValue (pp->raw.bayersensor.pixelShiftLmmse); +// pixelShiftOneGreen->setValue (pp->raw.bayersensor.pixelShiftOneGreen); pixelShiftEqualBright->setValue (pp->raw.bayersensor.pixelShiftEqualBright); pixelShiftEqualBrightChannel->set_sensitive (pp->raw.bayersensor.pixelShiftEqualBright); pixelShiftEqualBrightChannel->setValue (pp->raw.bayersensor.pixelShiftEqualBrightChannel); @@ -427,6 +433,7 @@ void BayerProcess::read(const rtengine::procparams::ProcParams* pp, const Params pixelShiftBlur->setEdited (pedited->raw.bayersensor.pixelShiftBlur); pixelShiftSmooth->setEditedState ( pedited->raw.bayersensor.pixelShiftSmooth ? Edited : UnEdited); pixelShiftLmmse->setEdited (pedited->raw.bayersensor.pixelShiftLmmse); +// pixelShiftOneGreen->setEdited (pedited->raw.bayersensor.pixelShiftOneGreen); pixelShiftEqualBright->setEdited (pedited->raw.bayersensor.pixelShiftEqualBright); pixelShiftEqualBrightChannel->setEdited (pedited->raw.bayersensor.pixelShiftEqualBrightChannel); pixelShiftNonGreenCross->setEdited (pedited->raw.bayersensor.pixelShiftNonGreenCross); @@ -531,6 +538,7 @@ void BayerProcess::write( rtengine::procparams::ProcParams* pp, ParamsEdited* pe pp->raw.bayersensor.pixelShiftBlur = pixelShiftBlur->getLastActive (); pp->raw.bayersensor.pixelShiftSmoothFactor = pixelShiftSmooth->getValue(); pp->raw.bayersensor.pixelShiftLmmse = pixelShiftLmmse->getLastActive (); +// pp->raw.bayersensor.pixelShiftOneGreen = pixelShiftOneGreen->getLastActive (); pp->raw.bayersensor.pixelShiftEqualBright = pixelShiftEqualBright->getLastActive (); pp->raw.bayersensor.pixelShiftEqualBrightChannel = pixelShiftEqualBrightChannel->getLastActive (); pp->raw.bayersensor.pixelShiftNonGreenCross = pixelShiftNonGreenCross->getLastActive (); @@ -583,6 +591,7 @@ void BayerProcess::write( rtengine::procparams::ProcParams* pp, ParamsEdited* pe pedited->raw.bayersensor.pixelShiftBlur = !pixelShiftBlur->get_inconsistent(); pedited->raw.bayersensor.pixelShiftSmooth = pixelShiftSmooth->getEditedState(); pedited->raw.bayersensor.pixelShiftLmmse = !pixelShiftLmmse->get_inconsistent(); +// pedited->raw.bayersensor.pixelShiftOneGreen = !pixelShiftOneGreen->get_inconsistent(); pedited->raw.bayersensor.pixelShiftEqualBright = !pixelShiftEqualBright->get_inconsistent(); pedited->raw.bayersensor.pixelShiftEqualBrightChannel = !pixelShiftEqualBrightChannel->get_inconsistent(); pedited->raw.bayersensor.pixelShiftNonGreenCross = !pixelShiftNonGreenCross->get_inconsistent(); @@ -849,6 +858,10 @@ void BayerProcess::checkBoxToggled (CheckBox* c, CheckValue newval) if (listener) { listener->panelChanged (EvPixelShiftLmmse, pixelShiftLmmse->getValueAsStr ()); } +// } else if (c == pixelShiftOneGreen) { +// if (listener) { +// listener->panelChanged (EvPixelShiftOneGreen, pixelShiftOneGreen->getValueAsStr ()); +// } } else if (c == pixelShiftEqualBright) { if (!batchMode) { pixelShiftEqualBrightChannel->set_sensitive(newval != CheckValue::off); diff --git a/rtgui/bayerprocess.h b/rtgui/bayerprocess.h index 6d9dd6062..e1a620474 100644 --- a/rtgui/bayerprocess.h +++ b/rtgui/bayerprocess.h @@ -49,6 +49,7 @@ protected: CheckBox* pixelShiftBlur; CheckBox* pixelShiftHoleFill; CheckBox* pixelShiftMedian; +// CheckBox* pixelShiftOneGreen; CheckBox* pixelShiftLmmse; CheckBox* pixelShiftEqualBright; CheckBox* pixelShiftEqualBrightChannel; diff --git a/rtgui/blackwhite.cc b/rtgui/blackwhite.cc index 2b410846f..0788a465d 100644 --- a/rtgui/blackwhite.cc +++ b/rtgui/blackwhite.cc @@ -1003,7 +1003,7 @@ void BlackWhite::autoch_toggled () bool wasEnabled = disableListener(); if (mixerRed->getAddMode()) { - mixerRed->resetValue(false); + mixerRed->resetValue(true); } if (mixerGreen->getAddMode()) { @@ -1053,14 +1053,14 @@ void BlackWhite::autoch_toggled () } else { if (autoch->get_active()) { bool wasEnabled = disableListener(); - mixerRed->setValue(33); - mixerGreen->setValue(33); - mixerBlue->setValue(33); - mixerOrange->setValue(33); - mixerYellow->setValue(33); - mixerMagenta->setValue(33); - mixerPurple->setValue(33); - mixerCyan->setValue(33); + mixerRed->resetValue(false); + mixerGreen->resetValue(false); + mixerBlue->resetValue(false); + mixerOrange->resetValue(false); + mixerYellow->resetValue(false); + mixerMagenta->resetValue(false); + mixerPurple->resetValue(false); + mixerCyan->resetValue(false); setting->set_active (11); filter->set_active (0); diff --git a/rtgui/chmixer.cc b/rtgui/chmixer.cc index 7d71da9a9..c6c098883 100644 --- a/rtgui/chmixer.cc +++ b/rtgui/chmixer.cc @@ -22,7 +22,7 @@ using namespace rtengine; using namespace rtengine::procparams; -ChMixer::ChMixer (): FoldableToolPanel(this, "chmixer", M("TP_CHMIXER_LABEL")) +ChMixer::ChMixer (): FoldableToolPanel(this, "chmixer", M("TP_CHMIXER_LABEL"), false, true) { imgIcon[0] = Gtk::manage (new RTImage ("Chanmixer-RR.png")); @@ -99,12 +99,16 @@ void ChMixer::read (const ProcParams* pp, const ParamsEdited* pedited) disableListener (); - if (pedited) + setEnabled(pp->chmixer.enabled); + + if (pedited) { for (int i = 0; i < 3; i++) { red[i]->setEditedState (pedited->chmixer.red[i] ? Edited : UnEdited); green[i]->setEditedState (pedited->chmixer.green[i] ? Edited : UnEdited); blue[i]->setEditedState (pedited->chmixer.blue[i] ? Edited : UnEdited); } + set_inconsistent(multiImage && !pedited->chmixer.enabled); + } for (int i = 0; i < 3; i++) { red[i]->setValue (pp->chmixer.red[i]); @@ -123,13 +127,16 @@ void ChMixer::write (ProcParams* pp, ParamsEdited* pedited) pp->chmixer.green[i] = (int) green[i]->getValue (); pp->chmixer.blue[i] = (int) blue[i]->getValue (); } + pp->chmixer.enabled = getEnabled(); - if (pedited) + if (pedited) { for (int i = 0; i < 3; i++) { pedited->chmixer.red[i] = red[i]->getEditedState (); pedited->chmixer.green[i] = green[i]->getEditedState (); pedited->chmixer.blue[i] = blue[i]->getEditedState (); } + pedited->chmixer.enabled = !get_inconsistent(); + } } void ChMixer::setDefaults (const ProcParams* defParams, const ParamsEdited* pedited) @@ -158,7 +165,7 @@ void ChMixer::setDefaults (const ProcParams* defParams, const ParamsEdited* pedi void ChMixer::adjusterChanged (Adjuster* a, double newval) { - if (listener) { + if (listener && getEnabled()) { Glib::ustring descr = Glib::ustring::compose ("R=%1,%2,%3\nG=%4,%5,%6\nB=%7,%8,%9", (int)red[0]->getValue(), (int)red[1]->getValue(), (int)red[2]->getValue(), (int)green[0]->getValue(), (int)green[1]->getValue(), (int)green[2]->getValue(), @@ -167,6 +174,21 @@ void ChMixer::adjusterChanged (Adjuster* a, double newval) } } + +void ChMixer::enabledChanged() +{ + if (listener) { + if (get_inconsistent()) { + listener->panelChanged(EvChMixer, M("GENERAL_UNCHANGED")); + } else if (getEnabled()) { + listener->panelChanged(EvChMixer, M("GENERAL_ENABLED")); + } else { + listener->panelChanged(EvChMixer, M("GENERAL_DISABLED")); + } + } +} + + void ChMixer::setBatchMode (bool batchMode) { diff --git a/rtgui/chmixer.h b/rtgui/chmixer.h index bd85517de..410ac0d16 100644 --- a/rtgui/chmixer.h +++ b/rtgui/chmixer.h @@ -44,6 +44,7 @@ public: void adjusterChanged (Adjuster* a, double newval); void setAdjusterBehavior (bool rgbadd); void trimValues (rtengine::procparams::ProcParams* pp); + void enabledChanged(); }; #endif diff --git a/rtgui/colorappearance.cc b/rtgui/colorappearance.cc index 7a31ae39f..f8dee05df 100644 --- a/rtgui/colorappearance.cc +++ b/rtgui/colorappearance.cc @@ -21,7 +21,7 @@ #include "guiutils.h" #include "../rtengine/color.h" -#define MINTEMP0 1500 //1200 +#define MINTEMP0 2000 //1200 #define MAXTEMP0 12000 //12000 #define CENTERTEMP0 5000 #define MINGREEN0 0.8 @@ -1536,7 +1536,7 @@ void ColorAppearance::colorForValue (double valX, double valY, enum ColorCaller: float value = (1.f - 0.7f) * float (valX) + 0.7f; // whole hue range // Y axis / from 0.15 up to 0.75 (arbitrary values; was 0.45 before) - Color::hsv2rgb01 (float (valY), float (valX), value, R, G, B); + Color::hsv2rgb01 (float (valY*0.8), float (valX), value, R, G, B); } caller->ccRed = double (R); diff --git a/rtgui/colortoning.cc b/rtgui/colortoning.cc index b53f7e5db..3d3d21d66 100644 --- a/rtgui/colortoning.cc +++ b/rtgui/colortoning.cc @@ -4,10 +4,13 @@ #include "colortoning.h" #include "mycurve.h" #include "rtimage.h" +#include "eventmapper.h" +#include "labgrid.h" using namespace rtengine; using namespace rtengine::procparams; + ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLORTONING_LABEL"), false, true) { nextbw = 0; @@ -21,6 +24,7 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR method->append (M("TP_COLORTONING_RGBCURVES")); method->append (M("TP_COLORTONING_SPLITCOCO")); method->append (M("TP_COLORTONING_SPLITLR")); + method->append(M("TP_COLORTONING_LABGRID")); method->set_active (0); method->set_tooltip_text (M("TP_COLORTONING_METHOD_TOOLTIP")); @@ -41,7 +45,7 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR colorCurveEditorG->setCurveListener (this); colorShape = static_cast(colorCurveEditorG->addCurve(CT_Flat, "", nullptr, false, false)); - colorShape->setCurveColorProvider(this, 1); + colorShape->setCurveColorProvider(this, 4); std::vector milestones; // whole hue range @@ -312,6 +316,26 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR greenhigh->setAdjusterListener (this); bluehigh->setAdjusterListener (this); + //------------------------------------------------------------------------ + // LAB grid + auto m = ProcEventMapper::getInstance(); + EvColorToningLabGridValue = m->newEvent(RGBCURVE, "HISTORY_MSG_COLORTONING_LABGRID_VALUE"); + labgridBox = Gtk::manage(new Gtk::HBox()); + labgrid = Gtk::manage(new LabGrid(EvColorToningLabGridValue)); + labgridBox->pack_start(*labgrid, true, true); + labgridReset = Gtk::manage(new Gtk::Button ()); + labgridReset->add (*Gtk::manage(new RTImage ("gtk-undo-ltr-small.png", "gtk-undo-rtl-small.png"))); + setExpandAlignProperties(labgridReset, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_START); + labgridReset->set_relief(Gtk::RELIEF_NONE); + labgridReset->set_tooltip_text(M("ADJUSTER_RESET_TO_DEFAULT")); + labgridReset->get_style_context()->add_class(GTK_STYLE_CLASS_FLAT); + labgridReset->set_can_focus(false); + labgridReset->set_size_request(-1, 20); + labgridReset->signal_button_release_event().connect(sigc::mem_fun(*this, &ColorToning::resetPressed)); + labgridBox->pack_start(*labgridReset, false, false); + pack_start(*labgridBox, Gtk::PACK_EXPAND_WIDGET, 4); + //------------------------------------------------------------------------ + show_all(); disableListener(); @@ -329,6 +353,13 @@ ColorToning::~ColorToning() delete cl2CurveEditorG; } + +void ColorToning::setListener(ToolPanelListener *tpl) +{ + ToolPanel::setListener(tpl); + labgrid->setListener(tpl); +} + /* void ColorToning::neutralCurves_pressed () { disableListener(); @@ -400,6 +431,8 @@ void ColorToning::read (const ProcParams* pp, const ParamsEdited* pedited) clshape->setUnChanged (!pedited->colorToning.clcurve); cl2shape->setUnChanged (!pedited->colorToning.cl2curve); lumamode->set_inconsistent (!pedited->colorToning.lumamode); + + labgrid->setEdited(pedited->colorToning.labgridALow || pedited->colorToning.labgridBLow || pedited->colorToning.labgridAHigh || pedited->colorToning.labgridBHigh); } redlow->setValue (pp->colorToning.redlow); @@ -431,6 +464,8 @@ void ColorToning::read (const ProcParams* pp, const ParamsEdited* pedited) lastLumamode = pp->colorToning.lumamode; + labgrid->setParams(pp->colorToning.labgridALow, pp->colorToning.labgridBLow, pp->colorToning.labgridAHigh, pp->colorToning.labgridBHigh, false); + if (pedited && !pedited->colorToning.method) { method->set_active (5); } else if (pp->colorToning.method == "Lab") { @@ -443,6 +478,8 @@ void ColorToning::read (const ProcParams* pp, const ParamsEdited* pedited) method->set_active (3); } else if (pp->colorToning.method == "Splitlr") { method->set_active (4); + } else if (pp->colorToning.method == "LabGrid") { + method->set_active(5); } methodChanged(); @@ -495,6 +532,8 @@ void ColorToning::write (ProcParams* pp, ParamsEdited* pedited) pp->colorToning.saturatedOpacity = saturatedOpacity->getIntValue(); pp->colorToning.strength = strength->getIntValue(); + labgrid->getParams(pp->colorToning.labgridALow, pp->colorToning.labgridBLow, pp->colorToning.labgridAHigh, pp->colorToning.labgridBHigh); + if (pedited) { pedited->colorToning.redlow = redlow->getEditedState (); pedited->colorToning.greenlow = greenlow->getEditedState (); @@ -519,6 +558,8 @@ void ColorToning::write (ProcParams* pp, ParamsEdited* pedited) pedited->colorToning.hlColSat = hlColSat->getEditedState (); pedited->colorToning.shadowsColSat = shadowsColSat->getEditedState (); + + pedited->colorToning.labgridALow = pedited->colorToning.labgridBLow = pedited->colorToning.labgridAHigh = pedited->colorToning.labgridBHigh = labgrid->getEdited(); } if (method->get_active_row_number() == 0) { @@ -531,6 +572,8 @@ void ColorToning::write (ProcParams* pp, ParamsEdited* pedited) pp->colorToning.method = "Splitco"; } else if (method->get_active_row_number() == 4) { pp->colorToning.method = "Splitlr"; + } else if (method->get_active_row_number() == 5) { + pp->colorToning.method = "LabGrid"; } if (twocolor->get_active_row_number() == 0) { @@ -587,6 +630,7 @@ void ColorToning::setDefaults (const ProcParams* defParams, const ParamsEdited* hlColSat->setDefault (defParams->colorToning.hlColSat); shadowsColSat->setDefault (defParams->colorToning.shadowsColSat); strength->setDefault (defParams->colorToning.strength); + labgrid->setDefault(defParams->colorToning.labgridALow, defParams->colorToning.labgridBLow, defParams->colorToning.labgridAHigh, defParams->colorToning.labgridBHigh); if (pedited) { redlow->setDefaultEditedState (pedited->colorToning.redlow ? Edited : UnEdited); @@ -604,6 +648,7 @@ void ColorToning::setDefaults (const ProcParams* defParams, const ParamsEdited* hlColSat->setDefaultEditedState (pedited->colorToning.hlColSat ? Edited : UnEdited); shadowsColSat->setDefaultEditedState (pedited->colorToning.shadowsColSat ? Edited : UnEdited); strength->setDefaultEditedState (pedited->colorToning.strength ? Edited : UnEdited); + labgrid->setEdited((pedited->colorToning.labgridALow || pedited->colorToning.labgridBLow || pedited->colorToning.labgridAHigh || pedited->colorToning.labgridBHigh) ? Edited : UnEdited); } else { redlow->setDefaultEditedState (Irrelevant); greenlow->setDefaultEditedState (Irrelevant); @@ -620,6 +665,7 @@ void ColorToning::setDefaults (const ProcParams* defParams, const ParamsEdited* hlColSat->setDefaultEditedState (Irrelevant); shadowsColSat->setDefaultEditedState (Irrelevant); strength->setDefaultEditedState (Irrelevant); + labgrid->setEdited(Edited); } } @@ -782,6 +828,8 @@ void ColorToning::methodChanged () { if (!batchMode) { + labgridBox->hide(); + if (method->get_active_row_number() == 0) { // Lab colorSep->show(); colorCurveEditorG->show(); @@ -929,6 +977,26 @@ void ColorToning::methodChanged () chanMixerBox->hide(); neutrHBox->hide(); lumamode->show(); + } else if (method->get_active_row_number() == 5) { // Lab Grid + colorSep->hide(); + colorCurveEditorG->hide(); + twocolor->hide(); + opacityCurveEditorG->hide(); + clCurveEditorG->hide(); + cl2CurveEditorG->hide(); + hlColSat->hide(); + shadowsColSat->hide(); + balance->hide(); + p1Frame->hide(); + autosat->hide(); + satProtectionThreshold->hide(); + saturatedOpacity->hide(); + strength->hide(); + chanMixerBox->hide(); + neutrHBox->hide(); + lumamode->hide(); + + labgridBox->show(); } } @@ -951,8 +1019,8 @@ void ColorToning::colorForValue (double valX, double valY, enum ColorCaller::Ele float R = 0.f, G = 0.f, B = 0.f; - if (callerId == 1) { // ch - main curve - Color::hsv2rgb01(float(valY), 1.0f, 0.5f, R, G, B); + if (callerId == 1) { // opacity curve left bar(s) + Color::hsv2rgb01(float(valY*0.8), 1.0f, 0.5f, R, G, B); } else if (callerId == 2) { // Slider 1 background if (valY <= 0.5) // the hue range @@ -983,6 +1051,8 @@ void ColorToning::colorForValue (double valX, double valY, enum ColorCaller::Ele G = (gray * (1.0 - valX)) + G * valX; B = (gray * (1.0 - valX)) + B * valX; } + } else if (callerId == 4) { // color curve vertical and horizontal crosshair + Color::hsv2rgb01(float(valY), 1.0f, 0.5f, R, G, B); } caller->ccRed = double(R); @@ -1095,3 +1165,9 @@ void ColorToning::setBatchMode (bool batchMode) cl2CurveEditorG->setBatchMode (batchMode); } + +bool ColorToning::resetPressed(GdkEventButton* event) +{ + labgrid->reset(event->state & GDK_CONTROL_MASK); + return false; +} diff --git a/rtgui/colortoning.h b/rtgui/colortoning.h index 347cfd126..73ac1dff2 100644 --- a/rtgui/colortoning.h +++ b/rtgui/colortoning.h @@ -12,6 +12,7 @@ #include "curveeditorgroup.h" #include "thresholdadjuster.h" #include "colorprovider.h" +#include "labgrid.h" class ColorToning final : public ToolParamBlock, @@ -49,7 +50,11 @@ public: void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller); + void setListener(ToolPanelListener *tpl); + private: + bool resetPressed(GdkEventButton* event); + //Gtk::HSeparator* satLimiterSep; Gtk::HSeparator* colorSep; CurveEditorGroup* colorCurveEditorG; @@ -101,6 +106,11 @@ private: bool lastLumamode; sigc::connection lumamodeConn; + rtengine::ProcEvent EvColorToningLabGridValue; + Gtk::Button *labgridReset; + LabGrid *labgrid; + Gtk::HBox *labgridBox; + IdleRegister idle_register; }; diff --git a/rtgui/coordinateadjuster.cc b/rtgui/coordinateadjuster.cc index c91ced052..209ef0902 100644 --- a/rtgui/coordinateadjuster.cc +++ b/rtgui/coordinateadjuster.cc @@ -135,7 +135,11 @@ void CoordinateAdjuster::createWidgets(const std::vector &axis) box->attach_next_to(*(currAdjuster->spinButton), Gtk::POS_LEFT, 1, 1); box->attach_next_to(*(currAdjuster->label), Gtk::POS_LEFT, 1, 1); - add(*box); + Gtk::FlowBoxChild *fbChild = Gtk::manage(new Gtk::FlowBoxChild()); + fbChild->set_can_focus(false); + fbChild->add(*box); + + add(*fbChild); } } diff --git a/rtgui/crop.cc b/rtgui/crop.cc index 546d910ba..29c64501d 100644 --- a/rtgui/crop.cc +++ b/rtgui/crop.cc @@ -57,6 +57,7 @@ int notifyListenerUI (void* data) Crop::Crop(): FoldableToolPanel(this, "crop", M("TP_CROP_LABEL"), false, true), crop_ratios{ + {M("GENERAL_ASIMAGE"), 0.0}, {"3:2", 3.0 / 2.0}, // L1.5, P0.666... {"4:3", 4.0 / 3.0}, // L1.333..., P0.75 {"16:9", 16.0 / 9.0}, // L1.777..., P0.5625 @@ -292,10 +293,14 @@ void Crop::read (const ProcParams* pp, const ParamsEdited* pedited) setDimensions (pp->crop.x + pp->crop.w, pp->crop.y + pp->crop.h); } - ratio->set_active_text (pp->crop.ratio); + if (pp->crop.ratio == "As Image") { + ratio->set_active(0); + } else { + ratio->set_active_text (pp->crop.ratio); + } fixr->set_active (pp->crop.fixratio); - const bool flip_orientation = pp->crop.fixratio && crop_ratios[ratio->get_active_row_number()].value < 1.0; + const bool flip_orientation = pp->crop.fixratio && crop_ratios[ratio->get_active_row_number()].value > 0 && crop_ratios[ratio->get_active_row_number()].value < 1.0; if (pp->crop.orientation == "Landscape") { orientation->set_active (flip_orientation ? 1 : 0); @@ -390,7 +395,7 @@ void Crop::write (ProcParams* pp, ParamsEdited* pedited) pp->crop.ratio = ratio->get_active_text (); // for historical reasons we store orientation different if ratio is written as 2:3 instead of 3:2, but in GUI 'landscape' is always long side horizontal regardless of the ratio is written short or long side first. - const bool flip_orientation = fixr->get_active() && crop_ratios[ratio->get_active_row_number()].value < 1.0; + const bool flip_orientation = fixr->get_active() && crop_ratios[ratio->get_active_row_number()].value > 0 && crop_ratios[ratio->get_active_row_number()].value < 1.0; if (orientation->get_active_row_number() == 0) { pp->crop.orientation = flip_orientation ? "Portrait" : "Landscape"; @@ -1265,6 +1270,9 @@ double Crop::getRatio () } r = crop_ratios[ratio->get_active_row_number()].value; + if (!r) { + r = maxh <= maxw ? float(maxh)/float(maxw) : float(maxw)/float(maxh); + } if (r < 1.0) { r = 1.0 / r; // convert to long side first (eg 4:5 becomes 5:4) diff --git a/rtgui/crophandler.cc b/rtgui/crophandler.cc index f6ff83a7d..6228cb1c7 100644 --- a/rtgui/crophandler.cc +++ b/rtgui/crophandler.cc @@ -411,7 +411,7 @@ void CropHandler::setDetailedCrop (IImage8* im, IImage8* imtrue, rtengine::procp return FALSE; }; - idle_register.add(func, idle_helper); + idle_register.add(func, idle_helper, G_PRIORITY_HIGH_IDLE); } cimg.unlock (); @@ -426,11 +426,11 @@ bool CropHandler::getWindow (int& cwx, int& cwy, int& cww, int& cwh, int& cskip) cwh = cropH; // hack: if called before first size allocation the size will be 0 - if (cww < 10) { + if (cww == 0) { cww = 10; } - if (cwh < 32) { + if (cwh == 0) { cwh = 32; } diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc index f4510682e..001805362 100644 --- a/rtgui/cropwindow.cc +++ b/rtgui/cropwindow.cc @@ -312,8 +312,10 @@ void CropWindow::buttonPress (int button, int type, int bstate, int x, int y) screenCoordToImage (x, y, action_x, action_y); changeZoom (zoom11index, true, action_x, action_y); fitZoom = false; + } else if (options.cropAutoFit) { + zoomFitCrop(); } else { - zoomFit (); + zoomFit(); } } else { zoom11 (); @@ -612,6 +614,10 @@ void CropWindow::buttonRelease (int button, int num, int bstate, int x, int y) } needRedraw = true; + + if (fitZoom && options.cropAutoFit) { + zoomFitCrop(); + } } else if (state == SCropWinMove) { if (iarea->showColorPickers () && !colorPickers.empty()) { needRedraw = true; @@ -722,6 +728,10 @@ void CropWindow::buttonRelease (int button, int num, int bstate, int x, int y) cropgl->cropManipReady (); iarea->setToolHand (); needRedraw = true; + + if (fitZoom && options.cropAutoFit) { + zoomFitCrop(); + } } if (decorated) { @@ -1356,6 +1366,21 @@ void CropWindow::expose (Cairo::RefPtr cr) drawObservedFrame (cr); } } else { + CropParams cropParams = cropHandler.cropParams; + if (state == SNormal) { + switch (options.cropGuides) { + case Options::CROP_GUIDE_NONE: + cropParams.guide = "None"; + break; + case Options::CROP_GUIDE_FRAME: + cropParams.guide = "Frame"; + break; + default: + break; + } + } + bool useBgColor = (state == SNormal); + if (cropHandler.cropPixbuf) { imgW = cropHandler.cropPixbuf->get_width (); imgH = cropHandler.cropPixbuf->get_height (); @@ -1772,7 +1797,7 @@ void CropWindow::expose (Cairo::RefPtr cr) if (cropHandler.cropParams.enabled) { int cropX, cropY; cropHandler.getPosition (cropX, cropY); - drawCrop (cr, x + imgAreaX + imgX, y + imgAreaY + imgY, imgW, imgH, cropX, cropY, zoomSteps[cropZoom].zoom, cropHandler.cropParams, (this == iarea->mainCropWindow), true, cropHandler.isFullDisplay ()); + drawCrop (cr, x + imgAreaX + imgX, y + imgAreaY + imgY, imgW, imgH, cropX, cropY, zoomSteps[cropZoom].zoom, cropParams, (this == iarea->mainCropWindow), useBgColor, cropHandler.isFullDisplay ()); } if (observedCropWin) { @@ -1853,7 +1878,7 @@ void CropWindow::expose (Cairo::RefPtr cr) cr->fill(); if (cropHandler.cropParams.enabled) { - drawCrop (cr, x + imgAreaX + imgX, y + imgAreaY + imgY, rough->get_width(), rough->get_height(), cropX, cropY, zoomSteps[cropZoom].zoom, cropHandler.cropParams, (this == iarea->mainCropWindow), true, cropHandler.isFullDisplay ()); + drawCrop (cr, x + imgAreaX + imgX, y + imgAreaY + imgY, rough->get_width(), rough->get_height(), cropX, cropY, zoomSteps[cropZoom].zoom, cropParams, (this == iarea->mainCropWindow), useBgColor, cropHandler.isFullDisplay ()); } if (observedCropWin) { @@ -2097,7 +2122,7 @@ void CropWindow::zoomFitCrop () centerY = cropHandler.cropParams.y + cropHandler.cropParams.h / 2; setCropAnchorPosition(centerX, centerY); changeZoom (cz, true, centerX, centerY); - fitZoom = false; + fitZoom = options.cropAutoFit; } else { zoomFit(); } diff --git a/rtgui/dirpyrdenoise.cc b/rtgui/dirpyrdenoise.cc index 2a90f183e..f79770a62 100644 --- a/rtgui/dirpyrdenoise.cc +++ b/rtgui/dirpyrdenoise.cc @@ -38,7 +38,7 @@ DirPyrDenoise::DirPyrDenoise () : FoldableToolPanel(this, "dirpyrdenoise", M("TP std::vector defaultCurve; - Gtk::Frame* lumaFrame = Gtk::manage (new Gtk::Frame (M("TP_DIRPYRDENOISE_LUMAFR")) ); + Gtk::Frame* lumaFrame = Gtk::manage (new Gtk::Frame (M("TP_DIRPYRDENOISE_LUMINANCE_FRAME")) ); lumaFrame->set_label_align(0.025, 0.5); Gtk::VBox * lumaVBox = Gtk::manage ( new Gtk::VBox()); @@ -47,18 +47,18 @@ DirPyrDenoise::DirPyrDenoise () : FoldableToolPanel(this, "dirpyrdenoise", M("TP ctboxL = Gtk::manage (new Gtk::HBox ()); - Gtk::Label* labmL = Gtk::manage (new Gtk::Label (M("TP_DIRPYRDENOISE_LTYPE") + ":")); + Gtk::Label* labmL = Gtk::manage (new Gtk::Label (M("TP_DIRPYRDENOISE_LUMINANCE_CONTROL") + ":")); ctboxL->pack_start (*labmL, Gtk::PACK_SHRINK, 1); Lmethod = Gtk::manage (new MyComboBoxText ()); - Lmethod->append (M("TP_DIRPYRDENOISE_CUR")); - Lmethod->append (M("TP_DIRPYRDENOISE_SLI")); + Lmethod->append (M("CURVEEDITOR_CURVE")); + Lmethod->append (M("GENERAL_SLIDER")); Lmethod->set_active(0); Lmethodconn = Lmethod->signal_changed().connect ( sigc::mem_fun(*this, &DirPyrDenoise::LmethodChanged) ); - luma = Gtk::manage (new Adjuster (M("TP_DIRPYRDENOISE_LUMA"), 0, 100, 0.01, 0)); - Ldetail = Gtk::manage (new Adjuster (M("TP_DIRPYRDENOISE_LDETAIL"), 0, 100, 0.01, 50)); - NoiscurveEditorG = new CurveEditorGroup (options.lastDenoiseCurvesDir, M("TP_DIRPYRDENOISE_LCURVE")); + luma = Gtk::manage (new Adjuster (M("TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING"), 0, 100, 0.01, 0)); + Ldetail = Gtk::manage (new Adjuster (M("TP_DIRPYRDENOISE_LUMINANCE_DETAIL"), 0, 100, 0.01, 50)); + NoiscurveEditorG = new CurveEditorGroup (options.lastDenoiseCurvesDir, M("TP_DIRPYRDENOISE_LUMINANCE_CURVE")); //curveEditorG = new CurveEditorGroup (options.lastLabCurvesDir); NoiscurveEditorG->setCurveListener (this); defaultCurve = rtengine::DirPyrDenoiseParams().lcurve; @@ -66,7 +66,6 @@ DirPyrDenoise::DirPyrDenoise () : FoldableToolPanel(this, "dirpyrdenoise", M("TP lshape->setIdentityValue(0.); lshape->setResetCurve(FlatCurveType(defaultCurve.at(0)), defaultCurve); - lshape->setTooltip(M("TP_DIRPYRDENOISE_CURVEEDITOR_L_TOOLTIP")); //lshape->setEditID(EUID_Lab_LCurve, BT_SINGLEPLANE_FLOAT); milestones.push_back( GradientMilestone(0., 0., 0., 0.) ); milestones.push_back( GradientMilestone(1., 1., 1., 1.) ); @@ -77,62 +76,58 @@ DirPyrDenoise::DirPyrDenoise () : FoldableToolPanel(this, "dirpyrdenoise", M("TP NoiscurveEditorG->curveListComplete(); NoiscurveEditorG->show(); - Gtk::Frame* chromaFrame = Gtk::manage (new Gtk::Frame (M("TP_DIRPYRDENOISE_CHROMAFR")) ); + Gtk::Frame* chromaFrame = Gtk::manage (new Gtk::Frame (M("TP_DIRPYRDENOISE_CHROMINANCE_FRAME")) ); chromaFrame->set_label_align(0.025, 0.5); Gtk::VBox *chromaVBox = Gtk::manage ( new Gtk::VBox()); chromaVBox->set_spacing(2); ctboxC = Gtk::manage (new Gtk::HBox ()); - Gtk::Label* labmC = Gtk::manage (new Gtk::Label (M("TP_DIRPYRDENOISE_CTYPE") + ":")); + Gtk::Label* labmC = Gtk::manage (new Gtk::Label (M("TP_DIRPYRDENOISE_CHROMINANCE_METHOD") + ":")); ctboxC->pack_start (*labmC, Gtk::PACK_SHRINK, 1); - ctboxC->set_tooltip_markup (M("TP_DIRPYRDENOISE_CTYPE_TOOLTIP")); Cmethod = Gtk::manage (new MyComboBoxText ()); - Cmethod->append (M("TP_DIRPYRDENOISE_MAN")); - Cmethod->append (M("TP_DIRPYRDENOISE_AUT")); - Cmethod->append (M("TP_DIRPYRDENOISE_PON")); - Cmethod->append (M("TP_DIRPYRDENOISE_PRE")); + Cmethod->append (M("TP_DIRPYRDENOISE_CHROMINANCE_MANUAL")); + Cmethod->append (M("TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL")); + Cmethod->append (M("TP_DIRPYRDENOISE_CHROMINANCE_AMZ")); + Cmethod->append (M("TP_DIRPYRDENOISE_CHROMINANCE_PMZ")); Cmethod->set_active(0); Cmethodconn = Cmethod->signal_changed().connect ( sigc::mem_fun(*this, &DirPyrDenoise::CmethodChanged) ); + Cmethod->set_tooltip_markup (M("TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP")); ctboxC2 = Gtk::manage (new Gtk::HBox ()); - Gtk::Label* labmC2 = Gtk::manage (new Gtk::Label (M("TP_DIRPYRDENOISE_CTYPE") + ":")); + Gtk::Label* labmC2 = Gtk::manage (new Gtk::Label (M("TP_DIRPYRDENOISE_CHROMINANCE_METHOD") + ":")); ctboxC2->pack_start (*labmC2, Gtk::PACK_SHRINK, 1); - ctboxC2->set_tooltip_markup (M("TP_DIRPYRDENOISE_C2TYPE_TOOLTIP")); + ctboxC2->set_tooltip_markup (M("TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP")); C2method = Gtk::manage (new MyComboBoxText ()); - C2method->append (M("TP_DIRPYRDENOISE_MANU")); - C2method->append (M("TP_DIRPYRDENOISE_AUTO")); - C2method->append (M("TP_DIRPYRDENOISE_PREV")); + C2method->append (M("TP_DIRPYRDENOISE_CHROMINANCE_MANUAL")); + C2method->append (M("TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL")); + C2method->append (M("TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW")); C2method->set_active(0); C2methodconn = C2method->signal_changed().connect ( sigc::mem_fun(*this, &DirPyrDenoise::C2methodChanged) ); NoiseLabels = Gtk::manage(new Gtk::Label("---", Gtk::ALIGN_CENTER)); - NoiseLabels->set_tooltip_text(M("TP_DIRPYRDENOISE_NRESID_TOOLTIP")); + NoiseLabels->set_tooltip_text(M("TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP")); TileLabels = Gtk::manage(new Gtk::Label("---", Gtk::ALIGN_CENTER)); PrevLabels = Gtk::manage(new Gtk::Label("---", Gtk::ALIGN_CENTER)); - chroma = Gtk::manage (new Adjuster (M("TP_DIRPYRDENOISE_CHROMA"), 0, 100, 0.01, 15)); - redchro = Gtk::manage (new Adjuster (M("TP_DIRPYRDENOISE_RED"), -100, 100, 0.1, 0)); - bluechro = Gtk::manage (new Adjuster (M("TP_DIRPYRDENOISE_BLUE"), -100, 100, 0.1, 0)); - - gamma = Gtk::manage (new Adjuster (M("TP_DIRPYRDENOISE_GAMMA"), 1.0, 3.0, 0.01, 1.7)); - gamma->set_tooltip_text (M("TP_DIRPYRDENOISE_GAMMA_TOOLTIP")); - + chroma = Gtk::manage (new Adjuster (M("TP_DIRPYRDENOISE_CHROMINANCE_MASTER"), 0, 100, 0.01, 15)); + redchro = Gtk::manage (new Adjuster (M("TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN"), -100, 100, 0.1, 0)); + bluechro = Gtk::manage (new Adjuster (M("TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW"), -100, 100, 0.1, 0)); Gtk::HBox* hb1 = Gtk::manage (new Gtk::HBox ()); - hb1->pack_start (*Gtk::manage (new Gtk::Label ( M("TP_DIRPYRDENOISE_METHOD") + ": ")), Gtk::PACK_SHRINK, 4); - hb1->set_tooltip_markup (M("TP_DIRPYRDENOISE_METHOD_TOOLTIP")); + hb1->pack_start (*Gtk::manage (new Gtk::Label ( M("TP_DIRPYRDENOISE_MAIN_COLORSPACE") + ": ")), Gtk::PACK_SHRINK, 1); + hb1->set_tooltip_markup (M("TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP")); dmethod = Gtk::manage (new MyComboBoxText ()); - dmethod->append (M("TP_DIRPYRDENOISE_LAB")); - dmethod->append (M("TP_DIRPYRDENOISE_RGB")); + dmethod->append (M("TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB")); + dmethod->append (M("TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB")); dmethod->set_active(0); - hb1->pack_end (*dmethod, Gtk::PACK_EXPAND_WIDGET, 4); - pack_start( *hb1, Gtk::PACK_SHRINK, 4); + hb1->pack_end (*dmethod, Gtk::PACK_EXPAND_WIDGET, 1); + pack_start(*hb1, Gtk::PACK_SHRINK, 1); dmethodconn = dmethod->signal_changed().connect ( sigc::mem_fun(*this, &DirPyrDenoise::dmethodChanged) ); @@ -143,14 +138,14 @@ DirPyrDenoise::DirPyrDenoise () : FoldableToolPanel(this, "dirpyrdenoise", M("TP redchro->setAdjusterListener (this); bluechro->setAdjusterListener (this); - CCcurveEditorG = new CurveEditorGroup (options.lastDenoiseCurvesDir, M("TP_DIRPYRDENOISE_CCCURVE")); + CCcurveEditorG = new CurveEditorGroup (options.lastDenoiseCurvesDir, M("TP_DIRPYRDENOISE_CHROMINANCE_CURVE")); CCcurveEditorG->setCurveListener (this); defaultCurve = rtengine::DirPyrDenoiseParams().cccurve; ccshape = static_cast(CCcurveEditorG->addCurve(CT_Flat, "", nullptr, false, false)); ccshape->setIdentityValue(0.); ccshape->setResetCurve(FlatCurveType(defaultCurve.at(0)), defaultCurve); - ccshape->setTooltip(M("TP_DIRPYRDENOISE_CURVEEDITOR_CC_TOOLTIP")); + ccshape->setTooltip(M("TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP")); ccshape->setBottomBarColorProvider(this, 2); CCcurveEditorG->curveListComplete(); @@ -158,8 +153,6 @@ DirPyrDenoise::DirPyrDenoise () : FoldableToolPanel(this, "dirpyrdenoise", M("TP //----------------------------------------- - gamma->setAdjusterListener (this); - luma->hide(); Ldetail->show(); @@ -170,7 +163,6 @@ DirPyrDenoise::DirPyrDenoise () : FoldableToolPanel(this, "dirpyrdenoise", M("TP redchro->show(); bluechro->show(); // perform->show(); - gamma->show(); // perform->set_active (true); // ---- Median FIltering ---- @@ -181,73 +173,75 @@ DirPyrDenoise::DirPyrDenoise () : FoldableToolPanel(this, "dirpyrdenoise", M("TP Gtk::VBox *medianVBox = Gtk::manage ( new Gtk::VBox()); medianVBox->set_spacing(2); - median = Gtk::manage (new Gtk::CheckButton (M("TP_DIRPYRDENOISE_MED") + ":")); + median = Gtk::manage (new Gtk::CheckButton (M("TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL") + ":")); median->set_active (true); medianFrame->set_label_widget(*median); methodmed = Gtk::manage (new MyComboBoxText ()); - methodmed->append (M("TP_DIRPYRDENOISE_LM")); - methodmed->append (M("TP_DIRPYRDENOISE_ABM")); - methodmed->append (M("TP_DIRPYRDENOISE_LPLABM")); - methodmed->append (M("TP_DIRPYRDENOISE_LABM")); - methodmed->append (M("TP_DIRPYRDENOISE_RGBM")); + methodmed->append (M("TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE")); + methodmed->append (M("TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE")); + methodmed->append (M("TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED")); + methodmed->append (M("TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB")); + methodmed->append (M("TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB")); methodmed->set_active (0); - methodmed->set_tooltip_text (M("TP_DIRPYRDENOISE_METM_TOOLTIP")); + methodmed->set_tooltip_text (M("TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP")); methodmedconn = methodmed->signal_changed().connect ( sigc::mem_fun(*this, &DirPyrDenoise::methodmedChanged) ); rgbmethod = Gtk::manage (new MyComboBoxText ()); - rgbmethod->append (M("TP_DIRPYRDENOISE_3X3_SOFT")); - rgbmethod->append (M("TP_DIRPYRDENOISE_3X3")); - rgbmethod->append (M("TP_DIRPYRDENOISE_5X5_SOFT")); + rgbmethod->append (M("TP_DIRPYRDENOISE_TYPE_3X3SOFT")); + rgbmethod->append (M("TP_DIRPYRDENOISE_TYPE_3X3")); + rgbmethod->append (M("TP_DIRPYRDENOISE_TYPE_5X5SOFT")); rgbmethod->set_active (0); - rgbmethod->set_tooltip_text (M("TP_DIRPYRDENOISE_MET_TOOLTIP")); + rgbmethod->set_tooltip_text (M("TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP")); rgbmethodconn = rgbmethod->signal_changed().connect ( sigc::mem_fun(*this, &DirPyrDenoise::rgbmethodChanged) ); medmethod = Gtk::manage (new MyComboBoxText ()); - medmethod->append (M("TP_DIRPYRDENOISE_3X3_SOFT")); - medmethod->append (M("TP_DIRPYRDENOISE_3X3")); - medmethod->append (M("TP_DIRPYRDENOISE_5X5_SOFT")); - medmethod->append (M("TP_DIRPYRDENOISE_5X5")); - medmethod->append (M("TP_DIRPYRDENOISE_7X7")); - medmethod->append (M("TP_DIRPYRDENOISE_9X9")); + medmethod->append (M("TP_DIRPYRDENOISE_TYPE_3X3SOFT")); + medmethod->append (M("TP_DIRPYRDENOISE_TYPE_3X3")); + medmethod->append (M("TP_DIRPYRDENOISE_TYPE_5X5SOFT")); + medmethod->append (M("TP_DIRPYRDENOISE_TYPE_5X5")); + medmethod->append (M("TP_DIRPYRDENOISE_TYPE_7X7")); + medmethod->append (M("TP_DIRPYRDENOISE_TYPE_9X9")); medmethod->set_active (0); - medmethod->set_tooltip_text (M("TP_DIRPYRDENOISE_MET_TOOLTIP")); + medmethod->set_tooltip_text (M("TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP")); medmethodconn = medmethod->signal_changed().connect ( sigc::mem_fun(*this, &DirPyrDenoise::medmethodChanged) ); ctboxm = Gtk::manage (new Gtk::HBox ()); - Gtk::Label* labmm = Gtk::manage (new Gtk::Label (M("TP_DIRPYRDENOISE_MEDMETHOD") + ":")); + Gtk::Label* labmm = Gtk::manage (new Gtk::Label (M("TP_DIRPYRDENOISE_MEDIAN_METHOD") + ":")); ctboxm->pack_start (*labmm, Gtk::PACK_SHRINK, 1); ctbox = Gtk::manage (new Gtk::HBox ()); - Gtk::Label* labm = Gtk::manage (new Gtk::Label (M("TP_DIRPYRDENOISE_MEDTYPE") + ":")); + Gtk::Label* labm = Gtk::manage (new Gtk::Label (M("TP_DIRPYRDENOISE_MEDIAN_TYPE") + ":")); ctbox->pack_start (*labm, Gtk::PACK_SHRINK, 1); ctboxrgb = Gtk::manage (new Gtk::HBox ()); - Gtk::Label* labrgb = Gtk::manage (new Gtk::Label (M("TP_DIRPYRDENOISE_MEDTYPE") + ":")); + Gtk::Label* labrgb = Gtk::manage (new Gtk::Label (M("TP_DIRPYRDENOISE_MEDIAN_TYPE") + ":")); ctboxrgb->pack_start (*labrgb, Gtk::PACK_SHRINK, 1); - - Gtk::HSeparator *hsep4 = Gtk::manage (new Gtk::HSeparator()); - hsep4->show (); - Gtk::HBox* hb11 = Gtk::manage (new Gtk::HBox ()); - hb11->pack_start (*Gtk::manage (new Gtk::Label ( M("TP_DIRPYRDENOISE_METHOD11") + ": ")), Gtk::PACK_SHRINK, 4); - hb11->set_tooltip_markup (M("TP_DIRPYRDENOISE_METHOD11_TOOLTIP")); + hb11->pack_start (*Gtk::manage (new Gtk::Label ( M("TP_DIRPYRDENOISE_MAIN_MODE") + ": ")), Gtk::PACK_SHRINK, 1); + hb11->set_tooltip_markup (M("TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP")); smethod = Gtk::manage (new MyComboBoxText ()); - smethod->append (M("TP_DIRPYRDENOISE_SHAL")); -// smethod->append (M("TP_DIRPYRDENOISE_SHBI")); - smethod->append (M("TP_DIRPYRDENOISE_SHALBI")); -// smethod->append (M("TP_DIRPYRDENOISE_SHALAL")); -// smethod->append (M("TP_DIRPYRDENOISE_SHBIBI")); + smethod->append (M("TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE")); +// smethod->append (M("TP_DIRPYRDENOISE_MAIN_MODE_SHBI")); + smethod->append (M("TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE")); +// smethod->append (M("TP_DIRPYRDENOISE_MAIN_MODE_SHALAL")); +// smethod->append (M("TP_DIRPYRDENOISE_MAIN_MODE_SHBIBI")); smethod->set_active(1); - hb11->pack_start (*smethod, Gtk::PACK_EXPAND_WIDGET, 4); - pack_start( *hb11, Gtk::PACK_SHRINK, 4); + hb11->pack_start (*smethod, Gtk::PACK_EXPAND_WIDGET, 1); + pack_start( *hb11, Gtk::PACK_SHRINK, 1); smethodconn = smethod->signal_changed().connect ( sigc::mem_fun(*this, &DirPyrDenoise::smethodChanged) ); - passes = Gtk::manage (new Adjuster (M("TP_DIRPYRDENOISE_PASSES"), 1.0, 3.0, 1., 1.)); - passes->set_tooltip_text (M("TP_DIRPYRDENOISE_PASSES_TOOLTIP")); + gamma = Gtk::manage (new Adjuster (M("TP_DIRPYRDENOISE_MAIN_GAMMA"), 1.0, 3.0, 0.01, 1.7)); + gamma->set_tooltip_text (M("TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP")); + gamma->setAdjusterListener (this); + gamma->show(); + pack_start (*gamma, Gtk::PACK_EXPAND_WIDGET, 1); + + passes = Gtk::manage (new Adjuster (M("TP_DIRPYRDENOISE_MEDIAN_PASSES"), 1.0, 3.0, 1., 1.)); + passes->set_tooltip_text (M("TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP")); passes->setAdjusterListener (this); passes->show(); ctboxL->pack_start (*Lmethod); @@ -278,10 +272,6 @@ DirPyrDenoise::DirPyrDenoise () : FoldableToolPanel(this, "dirpyrdenoise", M("TP chromaFrame->add(*chromaVBox); pack_start (*chromaFrame); - - pack_start (*gamma); - pack_start (*hsep4); - // pack_start( *hb11, Gtk::PACK_SHRINK, 4); // pack_start (*median); @@ -380,7 +370,7 @@ void DirPyrDenoise::updateTileLabel () nY = nexttileY; { TileLabels->set_text( - Glib::ustring::compose(M("TP_DIRPYRDENOISE_TILELABEL"), + Glib::ustring::compose(M("TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO"), Glib::ustring::format(std::fixed, std::setprecision(0), sT), Glib::ustring::format(std::fixed, std::setprecision(0), nX), Glib::ustring::format(std::fixed, std::setprecision(0), nY)) @@ -398,7 +388,7 @@ void DirPyrDenoise::updatePrevLabel () pY = nextprevY; { PrevLabels->set_text( - Glib::ustring::compose(M("TP_DIRPYRDENOISE_PREVLABEL"), + Glib::ustring::compose(M("TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO"), Glib::ustring::format(std::fixed, std::setprecision(0), sP), Glib::ustring::format(std::fixed, std::setprecision(0), pX), Glib::ustring::format(std::fixed, std::setprecision(0), pY)) @@ -437,10 +427,10 @@ void DirPyrDenoise::updateNoiseLabel () high = nexthighresid; if(nois == 0.f && high == 0.f) { - NoiseLabels->set_text(M("TP_DIRPYRDENOISE_NOISELABELEMPTY")); + NoiseLabels->set_text(M("TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY")); } else { NoiseLabels->set_text( - Glib::ustring::compose(M("TP_DIRPYRDENOISE_NOISELABEL"), + Glib::ustring::compose(M("TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO"), Glib::ustring::format(std::fixed, std::setprecision(0), nois), Glib::ustring::format(std::fixed, std::setprecision(0), high)) ); diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc index e86b7d9ab..6e13cd2a5 100644 --- a/rtgui/editorpanel.cc +++ b/rtgui/editorpanel.cc @@ -1643,7 +1643,7 @@ bool EditorPanel::handleShortcutKey (GdkEventKey* event) return true; case GDK_KEY_f: - iareapanel->imageArea->zoomPanel->zoomFitClicked(); + iareapanel->imageArea->zoomPanel->zoomFitCropClicked(); return true; case GDK_KEY_F5: @@ -1718,7 +1718,7 @@ bool EditorPanel::handleShortcutKey (GdkEventKey* event) return true; case GDK_KEY_f: - iareapanel->imageArea->zoomPanel->zoomFitCropClicked(); + iareapanel->imageArea->zoomPanel->zoomFitClicked(); return true; } } @@ -1772,9 +1772,9 @@ void EditorPanel::procParamsChanged (Thumbnail* thm, int whoChangedIt) } } -bool EditorPanel::idle_saveImage (ProgressConnector *pc, Glib::ustring fname, SaveFormat sf, rtengine::procparams::ProcParams &pparams) +bool EditorPanel::idle_saveImage (ProgressConnector *pc, Glib::ustring fname, SaveFormat sf, rtengine::procparams::ProcParams &pparams) { - rtengine::IImage16* img = pc->returnValue(); + rtengine::IImagefloat* img = pc->returnValue(); delete pc; if ( img ) { @@ -1785,13 +1785,13 @@ bool EditorPanel::idle_saveImage (ProgressConnector *pc, Gl img->setSaveProgressListener (parent->getProgressListener()); if (sf.format == "tif") - ld->startFunc (sigc::bind (sigc::mem_fun (img, &rtengine::IImage16::saveAsTIFF), fname, sf.tiffBits, sf.tiffUncompressed), + ld->startFunc (sigc::bind (sigc::mem_fun (img, &rtengine::IImagefloat::saveAsTIFF), fname, sf.tiffBits, sf.tiffUncompressed), sigc::bind (sigc::mem_fun (*this, &EditorPanel::idle_imageSaved), ld, img, fname, sf, pparams)); else if (sf.format == "png") - ld->startFunc (sigc::bind (sigc::mem_fun (img, &rtengine::IImage16::saveAsPNG), fname, sf.pngBits), + ld->startFunc (sigc::bind (sigc::mem_fun (img, &rtengine::IImagefloat::saveAsPNG), fname, sf.pngBits), sigc::bind (sigc::mem_fun (*this, &EditorPanel::idle_imageSaved), ld, img, fname, sf, pparams)); else if (sf.format == "jpg") - ld->startFunc (sigc::bind (sigc::mem_fun (img, &rtengine::IImage16::saveAsJPEG), fname, sf.jpegQuality, sf.jpegSubSamp), + ld->startFunc (sigc::bind (sigc::mem_fun (img, &rtengine::IImagefloat::saveAsJPEG), fname, sf.jpegQuality, sf.jpegSubSamp), sigc::bind (sigc::mem_fun (*this, &EditorPanel::idle_imageSaved), ld, img, fname, sf, pparams)); else { delete ld; @@ -1812,7 +1812,7 @@ bool EditorPanel::idle_saveImage (ProgressConnector *pc, Gl return false; } -bool EditorPanel::idle_imageSaved (ProgressConnector *pc, rtengine::IImage16* img, Glib::ustring fname, SaveFormat sf, rtengine::procparams::ProcParams &pparams) +bool EditorPanel::idle_imageSaved (ProgressConnector *pc, rtengine::IImagefloat* img, Glib::ustring fname, SaveFormat sf, rtengine::procparams::ProcParams &pparams) { img->free (); @@ -1937,8 +1937,8 @@ void EditorPanel::saveAsPressed () ipc->getParams (&pparams); rtengine::ProcessingJob* job = rtengine::ProcessingJob::create (ipc->getInitialImage(), pparams); - ProgressConnector *ld = new ProgressConnector(); - ld->startFunc (sigc::bind (sigc::ptr_fun (&rtengine::processImage), job, err, parent->getProgressListener(), options.tunnelMetaData, false ), + ProgressConnector *ld = new ProgressConnector(); + ld->startFunc (sigc::bind (sigc::ptr_fun (&rtengine::processImage), job, err, parent->getProgressListener(), false ), sigc::bind (sigc::mem_fun ( *this, &EditorPanel::idle_saveImage ), ld, fnameOut, sf, pparams)); saveimgas->set_sensitive (false); sendtogimp->set_sensitive (false); @@ -1981,8 +1981,8 @@ void EditorPanel::sendToGimpPressed () rtengine::procparams::ProcParams pparams; ipc->getParams (&pparams); rtengine::ProcessingJob* job = rtengine::ProcessingJob::create (ipc->getInitialImage(), pparams); - ProgressConnector *ld = new ProgressConnector(); - ld->startFunc (sigc::bind (sigc::ptr_fun (&rtengine::processImage), job, err, parent->getProgressListener(), options.tunnelMetaData, false ), + ProgressConnector *ld = new ProgressConnector(); + ld->startFunc (sigc::bind (sigc::ptr_fun (&rtengine::processImage), job, err, parent->getProgressListener(), false ), sigc::bind (sigc::mem_fun ( *this, &EditorPanel::idle_sendToGimp ), ld, openThm->getFileName() )); saveimgas->set_sensitive (false); sendtogimp->set_sensitive (false); @@ -1996,7 +1996,7 @@ bool EditorPanel::saveImmediately (const Glib::ustring &filename, const SaveForm rtengine::ProcessingJob *job = rtengine::ProcessingJob::create (ipc->getInitialImage(), pparams); // save immediately - rtengine::IImage16 *img = rtengine::processImage (job, err, nullptr, options.tunnelMetaData, false); + rtengine::IImagefloat *img = rtengine::processImage (job, err, nullptr, false); int err = 0; @@ -2042,10 +2042,10 @@ void EditorPanel::histogramProfile_toggled() colorMgmtToolBar->updateHistogram(); } -bool EditorPanel::idle_sendToGimp ( ProgressConnector *pc, Glib::ustring fname) +bool EditorPanel::idle_sendToGimp ( ProgressConnector *pc, Glib::ustring fname) { - rtengine::IImage16* img = pc->returnValue(); + rtengine::IImagefloat* img = pc->returnValue(); delete pc; if (img) { @@ -2077,7 +2077,7 @@ bool EditorPanel::idle_sendToGimp ( ProgressConnector *pc, ProgressConnector *ld = new ProgressConnector(); img->setSaveProgressListener (parent->getProgressListener()); - ld->startFunc (sigc::bind (sigc::mem_fun (img, &rtengine::IImage16::saveAsTIFF), fileName, sf.tiffBits, sf.tiffUncompressed), + ld->startFunc (sigc::bind (sigc::mem_fun (img, &rtengine::IImagefloat::saveAsTIFF), fileName, sf.tiffBits, sf.tiffUncompressed), sigc::bind (sigc::mem_fun (*this, &EditorPanel::idle_sentToGimp), ld, img, fileName)); } else { Glib::ustring msg_ = Glib::ustring (" Error during image processing\n"); @@ -2090,7 +2090,7 @@ bool EditorPanel::idle_sendToGimp ( ProgressConnector *pc, return false; } -bool EditorPanel::idle_sentToGimp (ProgressConnector *pc, rtengine::IImage16* img, Glib::ustring filename) +bool EditorPanel::idle_sentToGimp (ProgressConnector *pc, rtengine::IImagefloat* img, Glib::ustring filename) { img->free (); int errore = pc->returnValue(); diff --git a/rtgui/editorpanel.h b/rtgui/editorpanel.h index 0249e77ca..7876d18e1 100644 --- a/rtgui/editorpanel.h +++ b/rtgui/editorpanel.h @@ -146,10 +146,10 @@ private: void close (); BatchQueueEntry* createBatchQueueEntry (); - bool idle_imageSaved (ProgressConnector *pc, rtengine::IImage16* img, Glib::ustring fname, SaveFormat sf, rtengine::procparams::ProcParams &pparams); - bool idle_saveImage (ProgressConnector *pc, Glib::ustring fname, SaveFormat sf, rtengine::procparams::ProcParams &pparams); - bool idle_sendToGimp ( ProgressConnector *pc, Glib::ustring fname); - bool idle_sentToGimp (ProgressConnector *pc, rtengine::IImage16* img, Glib::ustring filename); + bool idle_imageSaved (ProgressConnector *pc, rtengine::IImagefloat* img, Glib::ustring fname, SaveFormat sf, rtengine::procparams::ProcParams &pparams); + bool idle_saveImage (ProgressConnector *pc, Glib::ustring fname, SaveFormat sf, rtengine::procparams::ProcParams &pparams); + bool idle_sendToGimp ( ProgressConnector *pc, Glib::ustring fname); + bool idle_sentToGimp (ProgressConnector *pc, rtengine::IImagefloat* img, Glib::ustring filename); void histogramProfile_toggled (); diff --git a/rtgui/eventmapper.cc b/rtgui/eventmapper.cc new file mode 100644 index 000000000..de5258413 --- /dev/null +++ b/rtgui/eventmapper.cc @@ -0,0 +1,63 @@ +/* -*- C++ -*- + * + * This file is part of RawTherapee. + * + * Copyright (c) 2017 Alberto Griggio + * + * RawTherapee is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RawTherapee is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RawTherapee. If not, see . + */ + +#include "eventmapper.h" + + +ProcEventMapper::ProcEventMapper() +{ + for (int event = 0; event < rtengine::NUMOFEVENTS; ++event) { + history_msgs_[event] = "HISTORY_MSG_" + std::to_string(event + 1); + } +} + + +ProcEventMapper *ProcEventMapper::getInstance() +{ + static ProcEventMapper instance; + return &instance; +} + + +rtengine::ProcEvent ProcEventMapper::newEvent(int action, const std::string &history_msg) +{ + rtengine::ProcEvent event = rtengine::RefreshMapper::getInstance()->newEvent(); + rtengine::RefreshMapper::getInstance()->mapEvent(event, action); + + if (history_msg.empty()) { + history_msgs_[event] = "HISTORY_MSG_" + std::to_string(event + 1); + } else { + history_msgs_[event] = history_msg; + } + + return event; +} + + +const std::string &ProcEventMapper::getHistoryMsg(rtengine::ProcEvent event) const +{ + static std::string empty; + auto it = history_msgs_.find(event); + if (it == history_msgs_.end()) { + return empty; + } else { + return it->second; + } +} diff --git a/rtgui/eventmapper.h b/rtgui/eventmapper.h new file mode 100644 index 000000000..87ccc1d9b --- /dev/null +++ b/rtgui/eventmapper.h @@ -0,0 +1,37 @@ +/* -*- C++ -*- + * + * This file is part of RawTherapee. + * + * Copyright (c) 2017 Alberto Griggio + * + * RawTherapee is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RawTherapee is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RawTherapee. If not, see . + */ +#pragma once + +#include +#include +#include "../rtengine/refreshmap.h" + + +class ProcEventMapper { +public: + static ProcEventMapper *getInstance(); + rtengine::ProcEvent newEvent(int action, const std::string &history_msg=""); + const std::string &getHistoryMsg(rtengine::ProcEvent event) const; + +private: + ProcEventMapper(); + + std::unordered_map history_msgs_; +}; diff --git a/rtgui/exifpanel.cc b/rtgui/exifpanel.cc index da2659a4f..168106804 100644 --- a/rtgui/exifpanel.cc +++ b/rtgui/exifpanel.cc @@ -46,11 +46,7 @@ ExifPanel::ExifPanel () : idata (nullptr) exifTreeModel = Gtk::TreeStore::create (exifColumns); exifTree->set_model (exifTreeModel); exifTree->set_grid_lines (Gtk::TREE_VIEW_GRID_LINES_NONE); - exifTree->set_row_separator_func ( - [&] (const Glib::RefPtr& model, const Gtk::TreeModel::iterator & row) { - return row->get_value (exifColumns.isSeparator); - } - ); + exifTree->set_row_separator_func (sigc::mem_fun(*this, &ExifPanel::rowSeperatorFunc)); delicon = RTImage::createFromFile ("gtk-close.png"); keepicon = RTImage::createFromFile ("gtk-apply.png"); @@ -540,6 +536,11 @@ void ExifPanel::showAlltoggled () setImageData (idata); } +bool ExifPanel::rowSeperatorFunc(const Glib::RefPtr& model, const Gtk::TreeModel::iterator& iter) +{ + return iter->get_value(exifColumns.isSeparator); +} + void ExifPanel::editTag (Gtk::TreeModel::Children root, Glib::ustring name, Glib::ustring value) { diff --git a/rtgui/exifpanel.h b/rtgui/exifpanel.h index b9d76f25d..5121eff4f 100644 --- a/rtgui/exifpanel.h +++ b/rtgui/exifpanel.h @@ -93,6 +93,7 @@ private: void resetAllPressed(); void addPressed(); void showAlltoggled(); + bool rowSeperatorFunc(const Glib::RefPtr& model, const Gtk::TreeModel::iterator& iter); public: ExifPanel (); diff --git a/rtgui/fattaltonemap.cc b/rtgui/fattaltonemap.cc index 10dba51cf..5e4aa20d9 100644 --- a/rtgui/fattaltonemap.cc +++ b/rtgui/fattaltonemap.cc @@ -26,10 +26,7 @@ using namespace rtengine::procparams; FattalToneMapping::FattalToneMapping(): FoldableToolPanel(this, "fattal", M("TP_TM_FATTAL_LABEL"), true, true) { - -// setEnabledTooltipMarkup(M("TP_EPD_TOOLTIP")); - - amount = Gtk::manage(new Adjuster (M("TP_TM_FATTAL_AMOUNT"), 1., 100., 1., 0.0)); + amount = Gtk::manage(new Adjuster (M("TP_TM_FATTAL_AMOUNT"), 1., 100., 1., 30.)); threshold = Gtk::manage(new Adjuster (M("TP_TM_FATTAL_THRESHOLD"), -100., 100., 1., 0.0)); amount->setAdjusterListener(this); diff --git a/rtgui/filebrowserentry.cc b/rtgui/filebrowserentry.cc index c3adae3aa..cb3844687 100644 --- a/rtgui/filebrowserentry.cc +++ b/rtgui/filebrowserentry.cc @@ -168,6 +168,16 @@ void FileBrowserEntry::customBackBufferUpdate (Cairo::RefPtr c) drawCrop (c, prex, prey, prew, preh, 0, 0, scale, cropParams, true, false); } else { rtengine::procparams::CropParams cparams = thumbnail->getProcParams().crop; + switch (options.cropGuides) { + case Options::CROP_GUIDE_NONE: + cparams.guide = "None"; + break; + case Options::CROP_GUIDE_FRAME: + cparams.guide = "Frame"; + break; + default: + break; + } if (cparams.enabled && !thumbnail->isQuick()) { // Quick thumb have arbitrary sizes, so don't apply the crop drawCrop (c, prex, prey, prew, preh, 0, 0, scale, cparams, true, false); diff --git a/rtgui/filmsimulation.h b/rtgui/filmsimulation.h index c813f9c85..8f627c352 100644 --- a/rtgui/filmsimulation.h +++ b/rtgui/filmsimulation.h @@ -17,10 +17,10 @@ public: Glib::ustring getSelectedClut(); void setSelectedClut( Glib::ustring filename ); void setBatchMode(bool yes); - + private: void updateUnchangedEntry(); // in batchMode we need to add an extra entry "(Unchanged)". We do this whenever the widget is mapped (connecting to signal_map()), unless options.multiDisplayMode (see the comment below about cm2 in this case) - + class ClutColumns : public Gtk::TreeModel::ColumnRecord { public: @@ -45,7 +45,6 @@ private: static std::unique_ptr cm; // we use a shared TreeModel for all the combo boxes, to save time (no need to reparse the clut dir multiple times)... static std::unique_ptr cm2; // ... except when options.multiDisplayMode (i.e. editors in their own window), where we need two. This is because we might have two combo boxes displayed at the same time in this case - int count; // the number of clut entries bool batchMode; }; diff --git a/rtgui/history.cc b/rtgui/history.cc index d62fcdb30..6b07ee7b2 100644 --- a/rtgui/history.cc +++ b/rtgui/history.cc @@ -20,6 +20,7 @@ #include "multilangmgr.h" #include "rtimage.h" #include "guiutils.h" +#include "eventmapper.h" using namespace rtengine; using namespace rtengine::procparams; @@ -231,7 +232,7 @@ void History::procParamsChanged (ProcParams* params, ProcEvent ev, Glib::ustring } // construct formatted list content - Glib::ustring text = M("HISTORY_MSG_" + std::to_string(ev + 1)); + Glib::ustring text = M(ProcEventMapper::getInstance()->getHistoryMsg(ev)); Glib::RefPtr selection = hTreeView->get_selection(); Gtk::TreeModel::iterator iter = selection->get_selected(); diff --git a/rtgui/hsvequalizer.cc b/rtgui/hsvequalizer.cc index e74848cf3..1dfb017a7 100644 --- a/rtgui/hsvequalizer.cc +++ b/rtgui/hsvequalizer.cc @@ -25,7 +25,7 @@ using namespace rtengine::procparams; //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -HSVEqualizer::HSVEqualizer () : FoldableToolPanel(this, "hsvequalizer", M("TP_HSVEQUALIZER_LABEL")) +HSVEqualizer::HSVEqualizer () : FoldableToolPanel(this, "hsvequalizer", M("TP_HSVEQUALIZER_LABEL"), false, true) { std::vector bottomMilestones; @@ -84,11 +84,13 @@ void HSVEqualizer::read (const ProcParams* pp, const ParamsEdited* pedited) hshape->setUnChanged (!pedited->hsvequalizer.hcurve); sshape->setUnChanged (!pedited->hsvequalizer.scurve); vshape->setUnChanged (!pedited->hsvequalizer.vcurve); + set_inconsistent(multiImage && !pedited->hsvequalizer.enabled); } hshape->setCurve (pp->hsvequalizer.hcurve); sshape->setCurve (pp->hsvequalizer.scurve); vshape->setCurve (pp->hsvequalizer.vcurve); + setEnabled(pp->hsvequalizer.enabled); enableListener (); } @@ -116,7 +118,7 @@ void HSVEqualizer::autoOpenCurve () void HSVEqualizer::write (ProcParams* pp, ParamsEdited* pedited) { - + pp->hsvequalizer.enabled = getEnabled(); pp->hsvequalizer.hcurve = hshape->getCurve (); pp->hsvequalizer.scurve = sshape->getCurve (); pp->hsvequalizer.vcurve = vshape->getCurve (); @@ -126,6 +128,7 @@ void HSVEqualizer::write (ProcParams* pp, ParamsEdited* pedited) pedited->hsvequalizer.hcurve = !hshape->isUnChanged (); pedited->hsvequalizer.scurve = !sshape->isUnChanged (); pedited->hsvequalizer.vcurve = !vshape->isUnChanged (); + pedited->hsvequalizer.enabled = !get_inconsistent(); } } @@ -138,7 +141,7 @@ void HSVEqualizer::write (ProcParams* pp, ParamsEdited* pedited) void HSVEqualizer::curveChanged (CurveEditor* ce) { - if (listener) { + if (listener && getEnabled()) { if (ce == hshape) { listener->panelChanged (EvHSVEqualizerH, M("HISTORY_CUSTOMCURVE")); } @@ -199,3 +202,17 @@ void HSVEqualizer::setBatchMode (bool batchMode) curveEditorG->setBatchMode (batchMode); } + + +void HSVEqualizer::enabledChanged() +{ + if (listener) { + if (get_inconsistent()) { + listener->panelChanged (EvHSVEqEnabled, M("GENERAL_UNCHANGED")); + } else if (getEnabled()) { + listener->panelChanged (EvHSVEqEnabled, M("GENERAL_ENABLED")); + } else { + listener->panelChanged (EvHSVEqEnabled, M("GENERAL_DISABLED")); + } + } +} diff --git a/rtgui/hsvequalizer.h b/rtgui/hsvequalizer.h index d02cc378c..fc3d22984 100644 --- a/rtgui/hsvequalizer.h +++ b/rtgui/hsvequalizer.h @@ -54,6 +54,7 @@ public: virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller); //void adjusterChanged (Adjuster* a, double newval); + void enabledChanged(); }; #endif diff --git a/rtgui/imagearea.cc b/rtgui/imagearea.cc index c0d334482..4c4f78a38 100644 --- a/rtgui/imagearea.cc +++ b/rtgui/imagearea.cc @@ -638,7 +638,11 @@ void ImageArea::initialImageArrived (CropWindow* cw) if (mainCropWindow) { if(firstOpen || options.prevdemo != PD_Sidecar || (!options.rememberZoomAndPan) ) { - mainCropWindow->zoomFit (); + if (options.cropAutoFit || options.bgcolor != 0) { + mainCropWindow->zoomFitCrop(); + } else { + mainCropWindow->zoomFit(); + } firstOpen = false; mainCropWindow->cropHandler.getFullImageSize(fullImageWidth, fullImageHeight); } else { @@ -646,7 +650,11 @@ void ImageArea::initialImageArrived (CropWindow* cw) mainCropWindow->cropHandler.getFullImageSize(w, h); if(w != fullImageWidth || h != fullImageHeight) { - mainCropWindow->zoomFit (); + if (options.cropAutoFit) { + mainCropWindow->zoomFitCrop(); + } else { + mainCropWindow->zoomFit(); + } } fullImageWidth = w; diff --git a/rtgui/labcurve.cc b/rtgui/labcurve.cc index c39dc99fc..1cde4262d 100644 --- a/rtgui/labcurve.cc +++ b/rtgui/labcurve.cc @@ -24,7 +24,7 @@ using namespace rtengine; using namespace rtengine::procparams; -LCurve::LCurve () : FoldableToolPanel(this, "labcurves", M("TP_LABCURVE_LABEL")) +LCurve::LCurve () : FoldableToolPanel(this, "labcurves", M("TP_LABCURVE_LABEL"), false, true) { std::vector milestones; @@ -143,7 +143,7 @@ LCurve::LCurve () : FoldableToolPanel(this, "labcurves", M("TP_LABCURVE_LABEL")) ); ccshape->setBottomBarColorProvider(this, 2); - ccshape->setLeftBarColorProvider(this, 2); + ccshape->setLeftBarColorProvider(this, 7); ccshape->setRangeDefaultMilestones(0.05, 0.2, 0.58); lcshape = static_cast(curveEditorG->addCurve(CT_Diagonal, M("TP_LABCURVE_CURVEEDITOR_LC"))); @@ -162,7 +162,7 @@ LCurve::LCurve () : FoldableToolPanel(this, "labcurves", M("TP_LABCURVE_LABEL")) clshape->setTooltip(M("TP_LABCURVE_CURVEEDITOR_CL_TOOLTIP")); clshape->setEditID(EUID_Lab_CLCurve, BT_SINGLEPLANE_FLOAT); - clshape->setLeftBarColorProvider(this, 2); + clshape->setLeftBarColorProvider(this, 7); clshape->setRangeDefaultMilestones(0.25, 0.5, 0.75); milestones.push_back( GradientMilestone(0., 0., 0., 0.) ); milestones.push_back( GradientMilestone(1., 1., 1., 1.) ); @@ -244,6 +244,8 @@ void LCurve::read (const ProcParams* pp, const ParamsEdited* pedited) hhshape->setUnChanged (!pedited->labCurve.hhcurve); lcshape->setUnChanged (!pedited->labCurve.lccurve); clshape->setUnChanged (!pedited->labCurve.clcurve); + + set_inconsistent(multiImage && !pedited->labCurve.enabled); } brightness->setValue (pp->labCurve.brightness); @@ -277,6 +279,8 @@ void LCurve::read (const ProcParams* pp, const ParamsEdited* pedited) lcshape->setCurve (pp->labCurve.lccurve); clshape->setCurve (pp->labCurve.clcurve); + setEnabled(pp->labCurve.enabled); + queue_draw(); enableListener (); @@ -338,7 +342,8 @@ void LCurve::setEditProvider (EditDataProvider *provider) void LCurve::write (ProcParams* pp, ParamsEdited* pedited) { - + pp->labCurve.enabled = getEnabled(); + pp->labCurve.brightness = brightness->getValue (); pp->labCurve.contrast = (int)contrast->getValue (); pp->labCurve.chromaticity = (int)chromaticity->getValue (); @@ -380,7 +385,7 @@ void LCurve::write (ProcParams* pp, ParamsEdited* pedited) pedited->labCurve.lccurve = !lcshape->isUnChanged (); pedited->labCurve.clcurve = !clshape->isUnChanged (); - + pedited->labCurve.enabled = !get_inconsistent(); } } @@ -424,7 +429,7 @@ void LCurve::avoidcolorshift_toggled () lastACVal = avoidcolorshift->get_active (); } - if (listener) { + if (listener && getEnabled()) { if (avoidcolorshift->get_active ()) { listener->panelChanged (EvLAvoidColorShift, M("GENERAL_ENABLED")); } else { @@ -451,7 +456,7 @@ void LCurve::lcredsk_toggled () lcshape->refresh(); } - if (listener) { + if (listener && getEnabled()) { if (lcredsk->get_active ()) { listener->panelChanged (EvLLCredsk, M("GENERAL_ENABLED")); } else { @@ -471,7 +476,7 @@ void LCurve::lcredsk_toggled () void LCurve::curveChanged (CurveEditor* ce) { - if (listener) { + if (listener && getEnabled()) { if (ce == lshape) { listener->panelChanged (EvLLCurve, M("HISTORY_CUSTOMCURVE")); } @@ -526,15 +531,15 @@ void LCurve::adjusterChanged (Adjuster* a, double newval) } if (a == brightness) { - if (listener) { + if (listener && getEnabled()) { listener->panelChanged (EvLBrightness, costr); } } else if (a == contrast) { - if (listener) { + if (listener && getEnabled()) { listener->panelChanged (EvLContrast, costr); } } else if (a == rstprotection) { - if (listener) { + if (listener && getEnabled()) { listener->panelChanged (EvLRSTProtection, costr); } } else if (a == chromaticity) { @@ -550,7 +555,7 @@ void LCurve::adjusterChanged (Adjuster* a, double newval) lcredsk->set_sensitive( int(newval) > -100 ); } - if (listener) { + if (listener && getEnabled()) { listener->panelChanged (EvLSaturation, costr); } } @@ -566,62 +571,52 @@ void LCurve::colorForValue (double valX, double valY, enum ColorCaller::ElemType } if (callerId == 1) { // ch - main curve - Color::hsv2rgb01(float(valX), float(valY), 0.5f, R, G, B); } else if (callerId == 2) { // cc - bottom bar - float value = (1.f - 0.7f) * float(valX) + 0.7f; // whole hue range // Y axis / from 0.15 up to 0.75 (arbitrary values; was 0.45 before) - Color::hsv2rgb01(float(valY), float(valX), value, R, G, B); + Color::hsv2rgb01(float(valY*0.8), float(valX), value, R, G, B); } else if (callerId == 6) { // cc - left bar - float value = (1.f - 0.7f) * float(valX) + 0.7f; - float hue = (1.14056f - 0.92f) * float(valY) + 0.92f; - - if (hue > 1.0f) { - hue -= 1.0f; - } - - // Y axis / from 0.15 up to 0.75 (arbitrary values; was 0.45 before) - Color::hsv2rgb01(hue, float(valX), value, R, G, B); - - // whole hue range + float hue = (1.14056f - 0.92f) * float(valY) + 0.92f; + if (hue > 1.0f) { + hue -= 1.0f; + } // Y axis / from 0.15 up to 0.75 (arbitrary values; was 0.45 before) - // Color::hsv2rgb01(float(valY), float(valX), value, R, G, B); + Color::hsv2rgb01(hue, float(valX), value, R, G, B); } else if (callerId == 3) { // lc - bottom bar - float value = (1.f - 0.7f) * float(valX) + 0.7f; - if (lcredsk->get_active()) { // skin range // -0.1 rad < Hue < 1.6 rad // Y axis / from 0.92 up to 0.14056 float hue = (1.14056f - 0.92f) * float(valY) + 0.92f; - if (hue > 1.0f) { hue -= 1.0f; } - // Y axis / from 0.15 up to 0.75 (arbitrary values; was 0.45 before) Color::hsv2rgb01(hue, float(valX), value, R, G, B); } else { // whole hue range // Y axis / from 0.15 up to 0.75 (arbitrary values; was 0.45 before) - Color::hsv2rgb01(float(valY), float(valX), value, R, G, B); + Color::hsv2rgb01(float(valY*0.8), float(valX), value, R, G, B); } } else if (callerId == 4) { // LH - bottom bar Color::hsv2rgb01(float(valX), 0.5f, float(valY), R, G, B); } else if (callerId == 5) { // HH - bottom bar float h = float((valY - 0.5) * 0.3 + valX); - if (h > 1.0f) { h -= 1.0f; } else if (h < 0.0f) { h += 1.0f; } - Color::hsv2rgb01(h, 0.5f, 0.5f, R, G, B); + } else if (callerId == 7) { // cc and cl - left bar + float value = (1.f - 0.7f) * float(valX) + 0.7f; + // whole hue range + // Y axis / from 0.15 up to 0.75 (arbitrary values; was 0.45 before) + Color::hsv2rgb01(float(valY*0.8), 1.f - float(valX), value, R, G, B); } caller->ccRed = double(R); @@ -668,3 +663,16 @@ void LCurve::trimValues (rtengine::procparams::ProcParams* pp) contrast->trimValue(pp->labCurve.contrast); chromaticity->trimValue(pp->labCurve.chromaticity); } + +void LCurve::enabledChanged() +{ + if (listener) { + if (get_inconsistent()) { + listener->panelChanged (EvLEnabled, M("GENERAL_UNCHANGED")); + } else if (getEnabled()) { + listener->panelChanged (EvLEnabled, M("GENERAL_ENABLED")); + } else { + listener->panelChanged (EvLEnabled, M("GENERAL_DISABLED")); + } + } +} diff --git a/rtgui/labcurve.h b/rtgui/labcurve.h index 403b49f9e..e0b912559 100644 --- a/rtgui/labcurve.h +++ b/rtgui/labcurve.h @@ -82,10 +82,7 @@ public: virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller); -private: - - - + void enabledChanged(); }; #endif diff --git a/rtgui/labgrid.cc b/rtgui/labgrid.cc new file mode 100644 index 000000000..945073221 --- /dev/null +++ b/rtgui/labgrid.cc @@ -0,0 +1,328 @@ +/** -*- C++ -*- + * + * This file is part of RawTherapee. + * + * Copyright (c) 2017 Alberto Griggio + * + * RawTherapee is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RawTherapee is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RawTherapee. If not, see . + */ + +// adapted from the "color correction" module of Darktable. Original copyright follows +/* + copyright (c) 2009--2010 johannes hanika. + + darktable is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + darktable 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 darktable. If not, see . +*/ + +#include "labgrid.h" + +using rtengine::Color; + + +bool LabGrid::notifyListener() +{ + if (listener) { + listener->panelChanged(evt, Glib::ustring::compose(M("TP_COLORTONING_LABGRID_VALUES"), int(low_a), int(low_b), int(high_a), int(high_b))); + } + return false; +} + + +LabGrid::LabGrid(rtengine::ProcEvent evt): + Gtk::DrawingArea(), + evt(evt), litPoint(NONE), + low_a(0.f), high_a(0.f), low_b(0.f), high_b(0.f), + defaultLow_a(0.f), defaultHigh_a(0.f), defaultLow_b(0.f), defaultHigh_b(0.f), + listener(nullptr), + edited(false), + isDragged(false) +{ + set_can_focus(true); + add_events(Gdk::EXPOSURE_MASK | Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK | Gdk::POINTER_MOTION_MASK); +} + +void LabGrid::getParams(double &la, double &lb, double &ha, double &hb) const +{ + la = low_a; + ha = high_a; + lb = low_b; + hb = high_b; +} + + +void LabGrid::setParams(double la, double lb, double ha, double hb, bool notify) +{ + low_a = la; + low_b = lb; + high_a = ha; + high_b = hb; + queue_draw(); + if (notify) { + notifyListener(); + } +} + +void LabGrid::setDefault (double la, double lb, double ha, double hb) +{ + defaultLow_a = la; + defaultLow_b = lb; + defaultHigh_a = ha; + defaultHigh_b = hb; +} + + +void LabGrid::reset(bool toInitial) +{ + if (toInitial) { + setParams(defaultLow_a, defaultLow_b, defaultHigh_a, defaultHigh_b, true); + } else { + setParams(0., 0., 0., 0., true); + } +} + + +void LabGrid::setEdited(bool yes) +{ + edited = yes; +} + + +bool LabGrid::getEdited() const +{ + return edited; +} + + +void LabGrid::setListener(ToolPanelListener *l) +{ + listener = l; +} + + +void LabGrid::on_style_updated () +{ + setDirty(true); + queue_draw (); +} + + +bool LabGrid::on_draw(const ::Cairo::RefPtr &crf) +{ + Gtk::Allocation allocation = get_allocation(); + allocation.set_x(0); + allocation.set_y(0); + + // setDrawRectangle will allocate the backbuffer Surface + if (setDrawRectangle(Cairo::FORMAT_ARGB32, allocation)) { + setDirty(true); + } + + if (!isDirty() || !surfaceCreated()) { + return true; + } + + Glib::RefPtr style = get_style_context(); + Cairo::RefPtr cr = getContext(); + + if (isDirty()) { + int width = allocation.get_width(); + int height = allocation.get_height(); + + cr->set_line_cap(Cairo::LINE_CAP_SQUARE); + + // clear background + cr->set_source_rgba (0., 0., 0., 0.); + cr->set_operator (Cairo::OPERATOR_CLEAR); + cr->paint (); + cr->set_operator (Cairo::OPERATOR_OVER); + style->render_background(cr, 0, 0, width, height); + + // drawing the cells + cr->translate(inset, inset); + cr->set_antialias(Cairo::ANTIALIAS_NONE); + width -= 2 * inset; + height -= 2 * inset; + // flip y: + cr->translate(0, height); + cr->scale(1., -1.); + const int cells = 8; + float step = rtengine::ColorToningParams::LABGRID_CORR_MAX / float(cells/2); + for (int j = 0; j < cells; j++) { + for (int i = 0; i < cells; i++) { + float R, G, B; + float x, y, z; + int ii = i - cells/2; + int jj = j - cells/2; + float a = step * (ii + 0.5); + float b = step * (jj + 0.5); + Color::Lab2XYZ(25000.f, a, b, x, y, z); + Color::xyz2srgb(x, y, z, R, G, B); + cr->set_source_rgb(R / 65535.f, G / 65535.f, B / 65535.f); + cr->rectangle(width * i / float(cells), height * j / float(cells), width / float(cells) - 1, height / float(cells) - 1); + cr->fill(); + } + } + + // drawing the connection line + cr->set_antialias(Cairo::ANTIALIAS_DEFAULT); + float loa, hia, lob, hib; + loa = .5f * (width + width * low_a / rtengine::ColorToningParams::LABGRID_CORR_MAX); + hia = .5f * (width + width * high_a / rtengine::ColorToningParams::LABGRID_CORR_MAX); + lob = .5f * (height + height * low_b / rtengine::ColorToningParams::LABGRID_CORR_MAX); + hib = .5f * (height + height * high_b / rtengine::ColorToningParams::LABGRID_CORR_MAX); + cr->set_line_width(2.); + cr->set_source_rgb(0.6, 0.6, 0.6); + cr->move_to(loa, lob); + cr->line_to(hia, hib); + cr->stroke(); + + // drawing points + cr->set_source_rgb(0.1, 0.1, 0.1); + if (litPoint == LOW) { + cr->arc(loa, lob, 5, 0, 2. * rtengine::RT_PI); + } else { + cr->arc(loa, lob, 3, 0, 2. * rtengine::RT_PI); + } + cr->fill(); + + cr->set_source_rgb(0.9, 0.9, 0.9); + if (litPoint == HIGH) { + cr->arc(hia, hib, 5, 0, 2. * rtengine::RT_PI); + } else { + cr->arc(hia, hib, 3, 0, 2. * rtengine::RT_PI); + } + cr->fill(); + } + + copySurface(crf); + return false; +} + + +bool LabGrid::on_button_press_event(GdkEventButton *event) +{ + if (event->button == 1) { + if (event->type == GDK_2BUTTON_PRESS) { + switch (litPoint) { + case NONE: + low_a = low_b = high_a = high_b = 0.f; + break; + case LOW: + low_a = low_b = 0.f; + break; + case HIGH: + high_a = high_b = 0.f; + break; + } + edited = true; + notifyListener(); + queue_draw(); + } else if (event->type == GDK_BUTTON_PRESS && litPoint != NONE) { + isDragged = true; + } + return false; + } + return true; +} + + +bool LabGrid::on_button_release_event(GdkEventButton *event) +{ + if (event->button == 1) { + isDragged = false; + return false; + } + return true; +} + + +bool LabGrid::on_motion_notify_event(GdkEventMotion *event) +{ + if (isDragged && delayconn.connected()) { + delayconn.disconnect(); + } + + State oldLitPoint = litPoint; + + int width = get_allocated_width() - 2 * inset, height = get_allocated_height() - 2 * inset; + const float mouse_x = std::min(std::max(event->x - inset, 0.), double(width)); + const float mouse_y = std::min(std::max(height - 1 - event->y + inset, 0.), double(height)); + const float ma = (2.0 * mouse_x - width) / (float)width; + const float mb = (2.0 * mouse_y - height) / (float)height; + if (isDragged) { + if (litPoint == LOW) { + low_a = ma * rtengine::ColorToningParams::LABGRID_CORR_MAX; + low_b = mb * rtengine::ColorToningParams::LABGRID_CORR_MAX; + } else if (litPoint == HIGH) { + high_a = ma * rtengine::ColorToningParams::LABGRID_CORR_MAX; + high_b = mb * rtengine::ColorToningParams::LABGRID_CORR_MAX; + } + edited = true; + grab_focus(); + if (options.adjusterMinDelay == 0) { + notifyListener(); + } else { + delayconn = Glib::signal_timeout().connect(sigc::mem_fun(*this, &LabGrid::notifyListener), options.adjusterMinDelay); + } + queue_draw(); + } else { + litPoint = NONE; + float la = low_a / rtengine::ColorToningParams::LABGRID_CORR_MAX; + float lb = low_b / rtengine::ColorToningParams::LABGRID_CORR_MAX; + float ha = high_a / rtengine::ColorToningParams::LABGRID_CORR_MAX; + float hb = high_b / rtengine::ColorToningParams::LABGRID_CORR_MAX; + const float thrs = 0.05f; + const float distlo = (la - ma) * (la - ma) + (lb - mb) * (lb - mb); + const float disthi = (ha - ma) * (ha - ma) + (hb - mb) * (hb - mb); + if (distlo < thrs * thrs && distlo < disthi) { + litPoint = LOW; + } else if (disthi < thrs * thrs && disthi <= distlo) { + litPoint = HIGH; + } + if ((oldLitPoint == NONE && litPoint != NONE) || (oldLitPoint != NONE && litPoint == NONE)) { + queue_draw(); + } + } + return true; +} + + +Gtk::SizeRequestMode LabGrid::get_request_mode_vfunc() const +{ + return Gtk::SIZE_REQUEST_HEIGHT_FOR_WIDTH; +} + + +void LabGrid::get_preferred_width_vfunc(int &minimum_width, int &natural_width) const +{ + minimum_width = 50; + natural_width = 150; // same as GRAPH_SIZE from mycurve.h +} + + +void LabGrid::get_preferred_height_for_width_vfunc(int width, int &minimum_height, int &natural_height) const +{ + minimum_height = natural_height = width; +} diff --git a/rtgui/labgrid.h b/rtgui/labgrid.h new file mode 100644 index 000000000..348ab2398 --- /dev/null +++ b/rtgui/labgrid.h @@ -0,0 +1,90 @@ +/** -*- C++ -*- + * + * This file is part of RawTherapee. + * + * Copyright (c) 2017 Alberto Griggio + * + * RawTherapee is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RawTherapee is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RawTherapee. If not, see . + */ + +// adapted from the "color correction" module of Darktable. Original copyright follows +/* + copyright (c) 2009--2010 johannes hanika. + + darktable is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + darktable 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 darktable. If not, see . +*/ + +#pragma once + +#include +#include "eventmapper.h" +#include "toolpanel.h" + + +class LabGrid: public Gtk::DrawingArea, public BackBuffer { +private: + rtengine::ProcEvent evt; + enum State { NONE, HIGH, LOW }; + State litPoint; + float low_a; + float high_a; + float low_b; + float high_b; + + float defaultLow_a; + float defaultHigh_a; + float defaultLow_b; + float defaultHigh_b; + + ToolPanelListener *listener; + bool edited; + bool isDragged; + sigc::connection delayconn; + static const int inset = 2; + + bool notifyListener(); + void getLitPoint(); + +public: + LabGrid(rtengine::ProcEvent evt); + + void getParams(double &la, double &lb, double &ha, double &hb) const; + void setParams(double la, double lb, double ha, double hb, bool notify); + void setDefault (double la, double lb, double ha, double hb); + void setEdited(bool yes); + bool getEdited() const; + void reset(bool toInitial); + void setListener(ToolPanelListener *l); + + bool on_draw(const ::Cairo::RefPtr &crf); + void on_style_updated (); + bool on_button_press_event(GdkEventButton *event); + bool on_button_release_event(GdkEventButton *event); + bool on_motion_notify_event(GdkEventMotion *event); + Gtk::SizeRequestMode get_request_mode_vfunc() const; + void get_preferred_width_vfunc(int &minimum_width, int &natural_width) const; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const; +}; + diff --git a/rtgui/localcontrast.cc b/rtgui/localcontrast.cc new file mode 100644 index 000000000..727479c34 --- /dev/null +++ b/rtgui/localcontrast.cc @@ -0,0 +1,167 @@ +/** -*- C++ -*- + * + * This file is part of RawTherapee. + * + * Copyright (c) 2017 Alberto Griggio + * + * RawTherapee is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RawTherapee is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RawTherapee. If not, see . + */ +#include "localcontrast.h" +#include "eventmapper.h" +#include +#include + +using namespace rtengine; +using namespace rtengine::procparams; + +LocalContrast::LocalContrast(): FoldableToolPanel(this, "localcontrast", M("TP_LOCALCONTRAST_LABEL"), false, true) +{ + auto m = ProcEventMapper::getInstance(); + EvLocalContrastEnabled = m->newEvent(RGBCURVE, "HISTORY_MSG_LOCALCONTRAST_ENABLED"); + EvLocalContrastRadius = m->newEvent(RGBCURVE, "HISTORY_MSG_LOCALCONTRAST_RADIUS"); + EvLocalContrastAmount = m->newEvent(RGBCURVE, "HISTORY_MSG_LOCALCONTRAST_AMOUNT"); + EvLocalContrastDarkness = m->newEvent(RGBCURVE, "HISTORY_MSG_LOCALCONTRAST_DARKNESS"); + EvLocalContrastLightness = m->newEvent(RGBCURVE, "HISTORY_MSG_LOCALCONTRAST_LIGHTNESS"); + + radius = Gtk::manage(new Adjuster(M("TP_LOCALCONTRAST_RADIUS"), 20., 200., 1., 80.)); + amount = Gtk::manage(new Adjuster(M("TP_LOCALCONTRAST_AMOUNT"), 0., 1., 0.01, 0.2)); + darkness = Gtk::manage(new Adjuster(M("TP_LOCALCONTRAST_DARKNESS"), 0., 3., 0.01, 1.)); + lightness = Gtk::manage(new Adjuster(M("TP_LOCALCONTRAST_LIGHTNESS"), 0., 3., 0.01, 1.)); + + radius->setAdjusterListener(this); + amount->setAdjusterListener(this); + darkness->setAdjusterListener(this); + lightness->setAdjusterListener(this); + + radius->show(); + amount->show(); + darkness->show(); + lightness->show(); + + pack_start(*radius); + pack_start(*amount); + pack_start(*darkness); + pack_start(*lightness); +} + + +void LocalContrast::read(const ProcParams *pp, const ParamsEdited *pedited) +{ + disableListener(); + + if (pedited) { + radius->setEditedState(pedited->localContrast.radius ? Edited : UnEdited); + amount->setEditedState(pedited->localContrast.amount ? Edited : UnEdited); + darkness->setEditedState(pedited->localContrast.darkness ? Edited : UnEdited); + lightness->setEditedState(pedited->localContrast.lightness ? Edited : UnEdited); + set_inconsistent(multiImage && !pedited->localContrast.enabled); + } + + setEnabled(pp->localContrast.enabled); + radius->setValue(pp->localContrast.radius); + amount->setValue(pp->localContrast.amount); + darkness->setValue(pp->localContrast.darkness); + lightness->setValue(pp->localContrast.lightness); + + enableListener(); +} + + +void LocalContrast::write(ProcParams *pp, ParamsEdited *pedited) +{ + pp->localContrast.radius = radius->getValue(); + pp->localContrast.amount = amount->getValue(); + pp->localContrast.darkness = darkness->getValue(); + pp->localContrast.lightness = lightness->getValue(); + pp->localContrast.enabled = getEnabled(); + + if (pedited) { + pedited->localContrast.radius = radius->getEditedState(); + pedited->localContrast.amount = amount->getEditedState(); + pedited->localContrast.darkness = darkness->getEditedState(); + pedited->localContrast.lightness = lightness->getEditedState(); + pedited->localContrast.enabled = !get_inconsistent(); + } +} + +void LocalContrast::setDefaults(const ProcParams *defParams, const ParamsEdited *pedited) +{ + radius->setDefault(defParams->localContrast.radius); + amount->setDefault(defParams->localContrast.amount); + darkness->setDefault(defParams->localContrast.darkness); + lightness->setDefault(defParams->localContrast.lightness); + + if (pedited) { + radius->setDefaultEditedState(pedited->localContrast.radius ? Edited : UnEdited); + amount->setDefaultEditedState(pedited->localContrast.amount ? Edited : UnEdited); + darkness->setDefaultEditedState(pedited->localContrast.darkness ? Edited : UnEdited); + lightness->setDefaultEditedState(pedited->localContrast.lightness ? Edited : UnEdited); + } else { + radius->setDefaultEditedState(Irrelevant); + amount->setDefaultEditedState(Irrelevant); + darkness->setDefaultEditedState(Irrelevant); + lightness->setDefaultEditedState(Irrelevant); + } +} + + +void LocalContrast::adjusterChanged(Adjuster* a, double newval) +{ + if (listener && getEnabled()) { + if (a == radius) { + listener->panelChanged(EvLocalContrastRadius, a->getTextValue()); + } else if (a == amount) { + listener->panelChanged(EvLocalContrastAmount, a->getTextValue()); + } else if (a == darkness) { + listener->panelChanged(EvLocalContrastDarkness, a->getTextValue()); + } else if (a == lightness) { + listener->panelChanged(EvLocalContrastLightness, a->getTextValue()); + } + } +} + + +void LocalContrast::enabledChanged () +{ + if (listener) { + if (get_inconsistent()) { + listener->panelChanged(EvLocalContrastEnabled, M("GENERAL_UNCHANGED")); + } else if (getEnabled()) { + listener->panelChanged(EvLocalContrastEnabled, M("GENERAL_ENABLED")); + } else { + listener->panelChanged(EvLocalContrastEnabled, M("GENERAL_DISABLED")); + } + } +} + + +void LocalContrast::setBatchMode(bool batchMode) +{ + ToolPanel::setBatchMode(batchMode); + + radius->showEditedCB(); + amount->showEditedCB(); + darkness->showEditedCB(); + lightness->showEditedCB(); +} + + +void LocalContrast::setAdjusterBehavior(bool radiusAdd, bool amountAdd, bool darknessAdd, bool lightnessAdd) +{ + radius->setAddMode(radiusAdd); + amount->setAddMode(amountAdd); + darkness->setAddMode(darknessAdd); + lightness->setAddMode(lightnessAdd); +} + diff --git a/rtgui/localcontrast.h b/rtgui/localcontrast.h new file mode 100644 index 000000000..4f6f872af --- /dev/null +++ b/rtgui/localcontrast.h @@ -0,0 +1,53 @@ +/** -*- C++ -*- + * + * This file is part of RawTherapee. + * + * Copyright (c) 2017 Alberto Griggio + * + * RawTherapee is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RawTherapee is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RawTherapee. If not, see . + */ +#pragma once + +#include +#include "adjuster.h" +#include "toolpanel.h" + +class LocalContrast: public ToolParamBlock, public AdjusterListener, public FoldableToolPanel +{ +private: + Adjuster *radius; + Adjuster *amount; + Adjuster *darkness; + Adjuster *lightness; + + rtengine::ProcEvent EvLocalContrastEnabled; + rtengine::ProcEvent EvLocalContrastRadius; + rtengine::ProcEvent EvLocalContrastAmount; + rtengine::ProcEvent EvLocalContrastDarkness; + rtengine::ProcEvent EvLocalContrastLightness; + +public: + + LocalContrast(); + + void read(const rtengine::procparams::ProcParams *pp, const ParamsEdited *pedited=nullptr); + void write(rtengine::procparams::ProcParams *pp, ParamsEdited *pedited=nullptr); + void setDefaults(const rtengine::procparams::ProcParams *defParams, const ParamsEdited *pedited=nullptr); + void setBatchMode(bool batchMode); + + void adjusterChanged(Adjuster *a, double newval); + void enabledChanged(); + void setAdjusterBehavior(bool radiusAdd, bool amountAdd, bool darknessAdd, bool lightnessAdd); +}; + diff --git a/rtgui/main-cli.cc b/rtgui/main-cli.cc index 1d1917e8c..fdfee64ab 100644 --- a/rtgui/main-cli.cc +++ b/rtgui/main-cli.cc @@ -822,7 +822,7 @@ int processLineParams ( int argc, char **argv ) } // Process image - rtengine::IImage16* resultImage = rtengine::processImage (job, errorCode, nullptr, options.tunnelMetaData); + rtengine::IImagefloat* resultImage = rtengine::processImage (job, errorCode, nullptr); if ( !resultImage ) { errors++; diff --git a/rtgui/metadatapanel.cc b/rtgui/metadatapanel.cc new file mode 100644 index 000000000..ee97a7dfe --- /dev/null +++ b/rtgui/metadatapanel.cc @@ -0,0 +1,129 @@ +/** -*- C++ -*- + * + * This file is part of RawTherapee. + * + * Copyright (c) 2017 Alberto Griggio + * + * RawTherapee is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RawTherapee is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RawTherapee. If not, see . + */ + +#include "metadatapanel.h" +#include "eventmapper.h" +#include "../rtengine/procparams.h" + +using namespace rtengine; +using namespace rtengine::procparams; + + +MetaDataPanel::MetaDataPanel() +{ + EvMetaDataMode = ProcEventMapper::getInstance()->newEvent(M_VOID, "HISTORY_MSG_METADATA_MODE"); + + Gtk::HBox *box = Gtk::manage(new Gtk::HBox()); + box->pack_start(*Gtk::manage(new Gtk::Label(M("TP_METADATA_MODE") + ": ")), Gtk::PACK_SHRINK, 4); + metadataMode = Gtk::manage(new MyComboBoxText()); + metadataMode->append(M("TP_METADATA_TUNNEL")); + metadataMode->append(M("TP_METADATA_EDIT")); + metadataMode->append(M("TP_METADATA_STRIP")); + metadataMode->set_active(0); + box->pack_end(*metadataMode, Gtk::PACK_EXPAND_WIDGET, 4); + pack_start(*box, Gtk::PACK_SHRINK, 4); + + metadataMode->signal_changed().connect(sigc::mem_fun(*this, &MetaDataPanel::metaDataModeChanged)); + + tagsNotebook = Gtk::manage(new Gtk::Notebook()); + exifpanel = new ExifPanel(); + iptcpanel = new IPTCPanel(); + tagsNotebook->set_name("MetaPanelNotebook"); + tagsNotebook->append_page(*exifpanel, M("MAIN_TAB_EXIF")); + tagsNotebook->append_page(*iptcpanel, M("MAIN_TAB_IPTC")); + + pack_end(*tagsNotebook); +} + + +MetaDataPanel::~MetaDataPanel() +{ + delete iptcpanel; + delete exifpanel; +} + + +void MetaDataPanel::setBatchMode(bool batchMode) +{ + ToolPanel::setBatchMode(batchMode); + metadataMode->append(M("GENERAL_UNCHANGED")); + tagsNotebook->remove_page(-1); + tagsNotebook->remove_page(-1); +} + + +void MetaDataPanel::read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited) +{ + disableListener(); + metadataMode->set_active(int(pp->metadata.mode)); + if (pedited) { + if (!pedited->metadata.mode) { + metadataMode->set_active(3); + } + } + + exifpanel->read(pp, pedited); + iptcpanel->read(pp, pedited); + + enableListener(); +} + + +void MetaDataPanel::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited) +{ + pp->metadata.mode = static_cast(min(metadataMode->get_active_row_number(), 2)); + + if (pedited) { + pedited->metadata.mode = metadataMode->get_active_row_number() != 3; + } + + exifpanel->write(pp, pedited); + iptcpanel->write(pp, pedited); +} + + +void MetaDataPanel::setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited) +{ + exifpanel->setDefaults(defParams, pedited); + iptcpanel->setDefaults(defParams, pedited); +} + + +void MetaDataPanel::setImageData(const rtengine::FramesMetaData* id) +{ + exifpanel->setImageData(id); + iptcpanel->setImageData(id); +} + + +void MetaDataPanel::setListener(ToolPanelListener *tpl) +{ + ToolPanel::setListener(tpl); + exifpanel->setListener(tpl); + iptcpanel->setListener(tpl); +} + + +void MetaDataPanel::metaDataModeChanged() +{ + if (listener) { + listener->panelChanged(EvMetaDataMode, M("HISTORY_CHANGED")); + } +} diff --git a/rtgui/metadatapanel.h b/rtgui/metadatapanel.h new file mode 100644 index 000000000..a2c1f43ac --- /dev/null +++ b/rtgui/metadatapanel.h @@ -0,0 +1,49 @@ +/** -*- C++ -*- + * + * This file is part of RawTherapee. + * + * Copyright (c) 2017 Alberto Griggio + * + * RawTherapee is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RawTherapee is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RawTherapee. If not, see . + */ +#pragma once + +#include +#include "toolpanel.h" +#include "exifpanel.h" +#include "iptcpanel.h" + +class MetaDataPanel: public Gtk::VBox, public ToolPanel { +private: + rtengine::ProcEvent EvMetaDataMode; + MyComboBoxText *metadataMode; + Gtk::Notebook *tagsNotebook; + ExifPanel *exifpanel; + IPTCPanel *iptcpanel; + + void metaDataModeChanged(); + +public: + MetaDataPanel(); + ~MetaDataPanel(); + + void setBatchMode(bool batchMode); + void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); + void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); + void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); + + void setImageData(const rtengine::FramesMetaData* id); + void setListener(ToolPanelListener *tpl); +}; + diff --git a/rtgui/multilangmgr.cc b/rtgui/multilangmgr.cc index 7cc79d19a..b4896d69a 100644 --- a/rtgui/multilangmgr.cc +++ b/rtgui/multilangmgr.cc @@ -94,10 +94,34 @@ struct LocaleToLang : private std::map, return "default"; } + + std::string getLocale(const Glib::ustring &language) const + { + for (auto &p : *this) { + if (p.second == language) { + std::string ret = p.first.first; + if (!p.first.second.empty()) { + ret += "_" + p.first.second; + } + return ret; + } + } + return "C"; + } }; const LocaleToLang localeToLang; +void setGtkLanguage(const Glib::ustring &language) +{ + auto l = localeToLang.getLocale(language); +#ifdef WIN32 + putenv(("LANG=" + l).c_str()); +#else + setenv("LANG", l.c_str(), true); +#endif +} + } MultiLangMgr langMgr; @@ -106,8 +130,10 @@ MultiLangMgr::MultiLangMgr () { } -void MultiLangMgr::load (const std::vector &fnames) +void MultiLangMgr::load(const Glib::ustring &language, const std::vector &fnames) { + setGtkLanguage(language); + translations.clear(); for (const auto& fname : fnames) { diff --git a/rtgui/multilangmgr.h b/rtgui/multilangmgr.h index d439307e3..649865217 100644 --- a/rtgui/multilangmgr.h +++ b/rtgui/multilangmgr.h @@ -30,7 +30,7 @@ class MultiLangMgr public: MultiLangMgr (); - void load(const std::vector &fnames); + void load(const Glib::ustring &language, const std::vector &fnames); Glib::ustring getStr(const std::string& key) const; static bool isOSLanguageDetectSupported(); static Glib::ustring getOSUserLanguage(); diff --git a/rtgui/options.cc b/rtgui/options.cc index d1b91c3ac..90b7378a6 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -426,7 +426,6 @@ void Options::setDefaults () tabbedUI = false; mainNBVertical = true; multiDisplayMode = 0; - tunnelMetaData = true; histogramPosition = 1; histogramBar = true; histogramFullMode = false; @@ -561,16 +560,6 @@ void Options::setDefaults () rtSettings.artifact_cbdl = 4.; rtSettings.level0_cbdl = 0; rtSettings.level123_cbdl = 30; - rtSettings.bot_left = 0; - rtSettings.top_left = 10; - rtSettings.top_right = 40; - rtSettings.bot_right = 75; - rtSettings.ed_detec = 3; //between 2 and 10 - rtSettings.ed_detecStr = 1.3; //not use - rtSettings.ed_low = 15.; //between 5 to 40 - rtSettings.ed_lipinfl = 0.8; //between 0.5 to 0.9 - rtSettings.ed_lipampl = 1.1; //between 1 and 2 - rtSettings.ciecamfloat = true; rtSettings.protectred = 60; @@ -615,6 +604,8 @@ void Options::setDefaults () gimpPluginShowInfoDialog = true; maxRecentFolders = 15; rtSettings.lensfunDbDirectory = ""; // set also in main.cc and main-cli.cc + cropGuides = CROP_GUIDE_FULL; + cropAutoFit = false; } Options* Options::copyFrom (Options* other) @@ -717,44 +708,6 @@ void Options::readFromFile (Glib::ustring fname) if ( keyFile.has_key ("General", "Verbose")) { rtSettings.verbose = keyFile.get_boolean ( "General", "Verbose"); } - - if (keyFile.has_key ("General", "BotLeft")) { - rtSettings.bot_left = keyFile.get_double ("General", "BotLeft"); - } - - if (keyFile.has_key ("General", "TopLeft")) { - rtSettings.top_left = keyFile.get_double ("General", "TopLeft"); - } - - if (keyFile.has_key ("General", "TopRight")) { - rtSettings.top_right = keyFile.get_double ("General", "TopRight"); - } - - if (keyFile.has_key ("General", "BotRight")) { - rtSettings.bot_right = keyFile.get_double ("General", "BotRight"); - } - - if (keyFile.has_key ("General", "EDdetec")) { - rtSettings.ed_detec = keyFile.get_double ("General", "EDdetec"); - } - - if (keyFile.has_key ("General", "EDdetecStr")) { - rtSettings.ed_detecStr = keyFile.get_double ("General", "EDdetecStr"); - } - - if (keyFile.has_key ("General", "EDLow")) { - rtSettings.ed_low = keyFile.get_double ("General", "EDLow"); - } - - if (keyFile.has_key ("General", "EDLipinfl")) { - rtSettings.ed_lipinfl = keyFile.get_double ("General", "EDLipinfl"); - } - - if (keyFile.has_key ("General", "EDLipampl")) { - rtSettings.ed_lipampl = keyFile.get_double ("General", "EDLipampl"); - } - - } if (keyFile.has_group ("External Editor")) { @@ -868,10 +821,6 @@ void Options::readFromFile (Glib::ustring fname) if (keyFile.has_key ("Output", "OverwriteOutputFile")) { overwriteOutputFile = keyFile.get_boolean ("Output", "OverwriteOutputFile"); } - - if (keyFile.has_key ("Output", "TunnelMetaData")) { - tunnelMetaData = keyFile.get_boolean ("Output", "TunnelMetaData"); - } } if (keyFile.has_group ("Profiles")) { @@ -1366,10 +1315,14 @@ void Options::readFromFile (Glib::ustring fname) FileBrowserToolbarSingleRow = keyFile.get_boolean ("GUI", "FileBrowserToolbarSingleRow"); } +#if defined(__linux__) && ((GTK_MAJOR_VERSION == 3 && GTK_MINOR_VERSION > 18) || GTK_MAJOR_VERSION > 3) + // Cannot scroll toolbox with mousewheel when HideTPVScrollbar=true #3413 + hideTPVScrollbar = false; +#else if (keyFile.has_key ("GUI", "HideTPVScrollbar")) { hideTPVScrollbar = keyFile.get_boolean ("GUI", "HideTPVScrollbar"); } - +#endif if (keyFile.has_key ("GUI", "UseIconNoText")) { UseIconNoText = keyFile.get_boolean ("GUI", "UseIconNoText"); } @@ -1387,6 +1340,12 @@ void Options::readFromFile (Glib::ustring fname) if (keyFile.has_key ("Crop Settings", "PPI")) { cropPPI = keyFile.get_integer ("Crop Settings", "PPI"); } + if (keyFile.has_key("Crop Settings", "GuidesMode")) { + cropGuides = CropGuidesMode(std::max(int(CROP_GUIDE_NONE), std::min(keyFile.get_integer("Crop Settings", "GuidesMode"), int(CROP_GUIDE_FULL)))); + } + if (keyFile.has_key("Crop Settings", "AutoFit")) { + cropAutoFit = keyFile.get_boolean("Crop Settings", "AutoFit"); + } } if (keyFile.has_group ("Color Management")) { @@ -1833,17 +1792,6 @@ void Options::saveToFile (Glib::ustring fname) keyFile.set_string ("General", "DarkFramesPath", rtSettings.darkFramesPath); keyFile.set_string ("General", "FlatFieldsPath", rtSettings.flatFieldsPath); keyFile.set_boolean ("General", "Verbose", rtSettings.verbose); - keyFile.set_double ("General", "BotLeft", rtSettings.bot_left); - keyFile.set_double ("General", "TopLeft", rtSettings.top_left); - keyFile.set_double ("General", "TopRight", rtSettings.top_right); - keyFile.set_double ("General", "BotRight", rtSettings.bot_right); - keyFile.set_double ("General", "EDdetec", rtSettings.ed_detec); - keyFile.set_double ("General", "EDdetecStr", rtSettings.ed_detecStr); - keyFile.set_double ("General", "EDLow", rtSettings.ed_low); - keyFile.set_double ("General", "EDLipinfl", rtSettings.ed_lipinfl); - keyFile.set_double ("General", "EDLipampl", rtSettings.ed_lipampl); - - keyFile.set_integer ("External Editor", "EditorKind", editorToSendTo); keyFile.set_string ("External Editor", "GimpDir", gimpDir); keyFile.set_string ("External Editor", "PhotoshopDir", psDir); @@ -1938,7 +1886,6 @@ void Options::saveToFile (Glib::ustring fname) keyFile.set_boolean ("Output", "UsePathTemplate", saveUsePathTemplate); keyFile.set_string ("Output", "LastSaveAsPath", lastSaveAsPath); keyFile.set_boolean ("Output", "OverwriteOutputFile", overwriteOutputFile); - keyFile.set_boolean ("Output", "TunnelMetaData", tunnelMetaData); keyFile.set_string ("Profiles", "Directory", profilePath); keyFile.set_boolean ("Profiles", "UseBundledProfiles", useBundledProfiles); @@ -2020,6 +1967,8 @@ void Options::saveToFile (Glib::ustring fname) //keyFile.set_integer_list ("GUI", "CurvePanelsExpanded", crvopen); keyFile.set_integer ("Crop Settings", "PPI", cropPPI); + keyFile.set_integer("Crop Settings", "GuidesMode", cropGuides); + keyFile.set_boolean("Crop Settings", "AutoFit", cropAutoFit); keyFile.set_string ("Color Management", "PrinterProfile", rtSettings.printerProfile); keyFile.set_integer ("Color Management", "PrinterIntent", rtSettings.printerIntent); @@ -2315,7 +2264,7 @@ void Options::load (bool lightweight) } } - langMgr.load ({localeTranslation, languageTranslation, defaultTranslation}); + langMgr.load (options.language, {localeTranslation, languageTranslation, defaultTranslation}); rtengine::init (&options.rtSettings, argv0, rtdir, !lightweight); } diff --git a/rtgui/options.h b/rtgui/options.h index 947d3b615..31d17ef9b 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -191,7 +191,6 @@ public: int showFilePanelState; // 0: normal, 1: maximized, 2: normal, 3: hidden bool showInfo; bool mainNBVertical; // main notebook vertical tabs? - int cropPPI; bool showClippedHighlights; bool showClippedShadows; int highlightThreshold; @@ -249,7 +248,6 @@ public: double sndLngEditProcDoneSecs; // Minimum processing time seconds till the sound is played bool sndEnable; - bool tunnelMetaData; // Pass through IPTC and XMP unchanged int histogramPosition; // 0=disabled, 1=left pane, 2=right pane //int histogramWorking; // 0=disabled, 1=left pane, 2=right pane bool histogramBar; @@ -262,6 +260,12 @@ public: bool showFilmStripToolBar; + // cropping options + int cropPPI; + enum CropGuidesMode { CROP_GUIDE_NONE, CROP_GUIDE_FRAME, CROP_GUIDE_FULL }; + CropGuidesMode cropGuides; + bool cropAutoFit; + // Performance options Glib::ustring clutsDir; int rgbDenoiseThreadLimit; // maximum number of threads for the denoising tool ; 0 = use the maximum available diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index 228052a78..516193c05 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -49,6 +49,7 @@ void ParamsEdited::set (bool v) toneCurve.expcomp = v; toneCurve.hrenabled = v; toneCurve.method = v; + toneCurve.histmatching = v; retinex.cdcurve = v; retinex.mapcurve = v; retinex.cdHcurve = v; @@ -82,6 +83,7 @@ void ParamsEdited::set (bool v) retinex.radius = v; retinex.retinex = v; + labCurve.enabled = v; labCurve.lcurve = v; labCurve.acurve = v; labCurve.bcurve = v; @@ -97,6 +99,12 @@ void ParamsEdited::set (bool v) labCurve.avoidcolorshift = v; labCurve.rstprotection = v; labCurve.lcredsk = v; + localContrast.enabled = v; + localContrast.radius = v; + localContrast.amount = v; + localContrast.darkness = v; + localContrast.lightness = v; + rgbCurves.enabled = v; rgbCurves.lumamode = v; rgbCurves.rcurve = v; rgbCurves.gcurve = v; @@ -127,6 +135,10 @@ void ParamsEdited::set (bool v) colorToning.greenhigh = v; colorToning.bluehigh = v; colorToning.lumamode = v; + colorToning.labgridALow = v; + colorToning.labgridBLow = v; + colorToning.labgridAHigh = v; + colorToning.labgridBHigh = v; sharpening.enabled = v; sharpening.radius = v; @@ -219,6 +231,7 @@ void ParamsEdited::set (bool v) //colorBoost.avoidclip = v; //colorBoost.enable_saturationlimiter = v; //colorBoost.saturationlimit = v; + wb.enabled = v; wb.method = v; wb.green = v; wb.temperature = v; @@ -273,7 +286,6 @@ void ParamsEdited::set (bool v) sh.htonalwidth = v; sh.shadows = v; sh.stonalwidth = v; - sh.localcontrast = v; sh.radius = v; crop.enabled = v; crop.x = v; @@ -319,6 +331,7 @@ void ParamsEdited::set (bool v) vignetting.strength = v; vignetting.centerX = v; vignetting.centerY = v; + chmixer.enabled = v; chmixer.red[0] = v; chmixer.red[1] = v; chmixer.red[2] = v; @@ -415,6 +428,7 @@ void ParamsEdited::set (bool v) raw.bayersensor.pixelShiftSmooth = v; raw.bayersensor.pixelShiftExp0 = v; raw.bayersensor.pixelShiftLmmse = v; + raw.bayersensor.pixelShiftOneGreen = v; raw.bayersensor.pixelShiftEqualBright = v; raw.bayersensor.pixelShiftEqualBrightChannel = v; raw.bayersensor.pixelShiftNonGreenCross = v; @@ -551,12 +565,14 @@ void ParamsEdited::set (bool v) dirpyrequalizer.skinprotect = v; dirpyrequalizer.hueskin = v; //dirpyrequalizer.algo = v; + hsvequalizer.enabled = v; hsvequalizer.hcurve = v; hsvequalizer.scurve = v; hsvequalizer.vcurve = v; filmSimulation.enabled = v; filmSimulation.clutFilename = v; filmSimulation.strength = v; + metadata.mode = v; exif = v; iptc = v; @@ -594,6 +610,7 @@ void ParamsEdited::initFrom (const std::vector toneCurve.expcomp = toneCurve.expcomp && p.toneCurve.expcomp == other.toneCurve.expcomp; toneCurve.hrenabled = toneCurve.hrenabled && p.toneCurve.hrenabled == other.toneCurve.hrenabled; toneCurve.method = toneCurve.method && p.toneCurve.method == other.toneCurve.method; + toneCurve.histmatching = toneCurve.histmatching && p.toneCurve.histmatching == other.toneCurve.histmatching; retinex.cdcurve = retinex.cdcurve && p.retinex.cdcurve == other.retinex.cdcurve; retinex.mapcurve = retinex.mapcurve && p.retinex.mapcurve == other.retinex.mapcurve; retinex.cdHcurve = retinex.cdHcurve && p.retinex.cdHcurve == other.retinex.cdHcurve; @@ -626,6 +643,7 @@ void ParamsEdited::initFrom (const std::vector retinex.radius = retinex.radius && p.retinex.radius == other.retinex.radius; retinex.enabled = retinex.enabled && p.retinex.enabled == other.retinex.enabled; + labCurve.enabled = labCurve.enabled && p.labCurve.enabled == other.labCurve.enabled; labCurve.lcurve = labCurve.lcurve && p.labCurve.lcurve == other.labCurve.lcurve; labCurve.acurve = labCurve.acurve && p.labCurve.acurve == other.labCurve.acurve; labCurve.bcurve = labCurve.bcurve && p.labCurve.bcurve == other.labCurve.bcurve; @@ -641,6 +659,14 @@ void ParamsEdited::initFrom (const std::vector labCurve.avoidcolorshift = labCurve.avoidcolorshift && p.labCurve.avoidcolorshift == other.labCurve.avoidcolorshift; labCurve.rstprotection = labCurve.rstprotection && p.labCurve.rstprotection == other.labCurve.rstprotection; labCurve.lcredsk = labCurve.lcredsk && p.labCurve.lcredsk == other.labCurve.lcredsk; + + localContrast.enabled = localContrast.enabled && p.localContrast.enabled == other.localContrast.enabled; + localContrast.radius = localContrast.radius && p.localContrast.radius == other.localContrast.radius; + localContrast.amount = localContrast.amount && p.localContrast.amount == other.localContrast.amount; + localContrast.darkness = localContrast.darkness && p.localContrast.darkness == other.localContrast.darkness; + localContrast.lightness = localContrast.lightness && p.localContrast.lightness == other.localContrast.lightness; + + rgbCurves.enabled = rgbCurves.enabled && p.rgbCurves.enabled == other.rgbCurves.enabled; rgbCurves.lumamode = rgbCurves.lumamode && p.rgbCurves.lumamode == other.rgbCurves.lumamode; rgbCurves.rcurve = rgbCurves.rcurve && p.rgbCurves.rcurve == other.rgbCurves.rcurve; rgbCurves.gcurve = rgbCurves.gcurve && p.rgbCurves.gcurve == other.rgbCurves.gcurve; @@ -671,6 +697,10 @@ void ParamsEdited::initFrom (const std::vector colorToning.greenhigh = colorToning.greenhigh && p.colorToning.greenhigh == other.colorToning.greenhigh; colorToning.bluehigh = colorToning.bluehigh && p.colorToning.bluehigh == other.colorToning.bluehigh; colorToning.lumamode = colorToning.lumamode && p.colorToning.lumamode == other.colorToning.lumamode; + colorToning.labgridALow = colorToning.labgridALow && p.colorToning.labgridALow == other.colorToning.labgridALow; + colorToning.labgridBLow = colorToning.labgridBLow && p.colorToning.labgridBLow == other.colorToning.labgridBLow; + colorToning.labgridAHigh = colorToning.labgridAHigh && p.colorToning.labgridAHigh == other.colorToning.labgridAHigh; + colorToning.labgridBHigh = colorToning.labgridBHigh && p.colorToning.labgridBHigh == other.colorToning.labgridBHigh; sharpenEdge.enabled = sharpenEdge.enabled && p.sharpenEdge.enabled == other.sharpenEdge.enabled; sharpenEdge.passes = sharpenEdge.passes && p.sharpenEdge.passes == other.sharpenEdge.passes; sharpenEdge.amount = sharpenEdge.amount && p.sharpenEdge.amount == other.sharpenEdge.amount; @@ -762,6 +792,7 @@ void ParamsEdited::initFrom (const std::vector //colorBoost.avoidclip = colorBoost.avoidclip && p.colorBoost.avoidclip == other.colorBoost.avoidclip; //colorBoost.enable_saturationlimiter = colorBoost.enable_saturationlimiter && p.colorBoost.enable_saturationlimiter == other.colorBoost.enable_saturationlimiter; //colorBoost.saturationlimit = colorBoost.saturationlimit && p.colorBoost.saturationlimit == other.colorBoost.saturationlimit; + wb.enabled = wb.enabled && p.wb.enabled == other.wb.enabled; wb.method = wb.method && p.wb.method == other.wb.method; wb.green = wb.green && p.wb.green == other.wb.green; wb.equal = wb.equal && p.wb.equal == other.wb.equal; @@ -821,7 +852,6 @@ void ParamsEdited::initFrom (const std::vector sh.htonalwidth = sh.htonalwidth && p.sh.htonalwidth == other.sh.htonalwidth; sh.shadows = sh.shadows && p.sh.shadows == other.sh.shadows; sh.stonalwidth = sh.stonalwidth && p.sh.stonalwidth == other.sh.stonalwidth; - sh.localcontrast = sh.localcontrast && p.sh.localcontrast == other.sh.localcontrast; sh.radius = sh.radius && p.sh.radius == other.sh.radius; crop.enabled = crop.enabled && p.crop.enabled == other.crop.enabled; crop.x = crop.x && p.crop.x == other.crop.x; @@ -867,6 +897,7 @@ void ParamsEdited::initFrom (const std::vector vignetting.strength = vignetting.strength && p.vignetting.strength == other.vignetting.strength; vignetting.centerX = vignetting.centerX && p.vignetting.centerX == other.vignetting.centerX; vignetting.centerY = vignetting.centerY && p.vignetting.centerY == other.vignetting.centerY; + chmixer.enabled = chmixer.enabled && p.chmixer.enabled == other.chmixer.enabled; chmixer.red[0] = chmixer.red[0] && p.chmixer.red[0] == other.chmixer.red[0]; chmixer.red[1] = chmixer.red[1] && p.chmixer.red[1] == other.chmixer.red[1]; chmixer.red[2] = chmixer.red[2] && p.chmixer.red[2] == other.chmixer.red[2]; @@ -959,6 +990,7 @@ void ParamsEdited::initFrom (const std::vector raw.bayersensor.pixelShiftSmooth = raw.bayersensor.pixelShiftSmooth && p.raw.bayersensor.pixelShiftSmoothFactor == other.raw.bayersensor.pixelShiftSmoothFactor; raw.bayersensor.pixelShiftExp0 = raw.bayersensor.pixelShiftExp0 && p.raw.bayersensor.pixelShiftExp0 == other.raw.bayersensor.pixelShiftExp0; raw.bayersensor.pixelShiftLmmse = raw.bayersensor.pixelShiftLmmse && p.raw.bayersensor.pixelShiftLmmse == other.raw.bayersensor.pixelShiftLmmse; + raw.bayersensor.pixelShiftOneGreen = raw.bayersensor.pixelShiftOneGreen && p.raw.bayersensor.pixelShiftOneGreen == other.raw.bayersensor.pixelShiftOneGreen; raw.bayersensor.pixelShiftEqualBright = raw.bayersensor.pixelShiftEqualBright && p.raw.bayersensor.pixelShiftEqualBright == other.raw.bayersensor.pixelShiftEqualBright; raw.bayersensor.pixelShiftEqualBrightChannel = raw.bayersensor.pixelShiftEqualBrightChannel && p.raw.bayersensor.pixelShiftEqualBrightChannel == other.raw.bayersensor.pixelShiftEqualBrightChannel; raw.bayersensor.pixelShiftNonGreenCross = raw.bayersensor.pixelShiftNonGreenCross && p.raw.bayersensor.pixelShiftNonGreenCross == other.raw.bayersensor.pixelShiftNonGreenCross; @@ -1090,12 +1122,14 @@ void ParamsEdited::initFrom (const std::vector dirpyrequalizer.skinprotect = dirpyrequalizer.skinprotect && p.dirpyrequalizer.skinprotect == other.dirpyrequalizer.skinprotect; // dirpyrequalizer.algo = dirpyrequalizer.algo && p.dirpyrequalizer.algo == other.dirpyrequalizer.algo; dirpyrequalizer.hueskin = dirpyrequalizer.hueskin && p.dirpyrequalizer.hueskin == other.dirpyrequalizer.hueskin; + hsvequalizer.enabled = hsvequalizer.enabled && p.hsvequalizer.enabled == other.hsvequalizer.enabled; hsvequalizer.hcurve = hsvequalizer.hcurve && p.hsvequalizer.hcurve == other.hsvequalizer.hcurve; hsvequalizer.scurve = hsvequalizer.scurve && p.hsvequalizer.scurve == other.hsvequalizer.scurve; hsvequalizer.vcurve = hsvequalizer.vcurve && p.hsvequalizer.vcurve == other.hsvequalizer.vcurve; filmSimulation.enabled = filmSimulation.enabled && p.filmSimulation.enabled == other.filmSimulation.enabled; filmSimulation.clutFilename = filmSimulation.clutFilename && p.filmSimulation.clutFilename == other.filmSimulation.clutFilename; filmSimulation.strength = filmSimulation.strength && p.filmSimulation.strength == other.filmSimulation.strength; + metadata.mode = metadata.mode && p.metadata.mode == other.metadata.mode; // How the hell can we handle that??? // exif = exif && p.exif==other.exif @@ -1172,6 +1206,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten toEdit.toneCurve.method = mods.toneCurve.method; } + if (toneCurve.histmatching) { + toEdit.toneCurve.histmatching = mods.toneCurve.histmatching; + } + if (retinex.enabled) { toEdit.retinex.enabled = mods.retinex.enabled; } @@ -1302,6 +1340,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten } + if (labCurve.enabled) { + toEdit.labCurve.enabled = mods.labCurve.enabled; + } + if (labCurve.lcurve) { toEdit.labCurve.lcurve = mods.labCurve.lcurve; } @@ -1362,6 +1404,26 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten toEdit.labCurve.lcredsk = mods.labCurve.lcredsk; } + if (localContrast.enabled) { + toEdit.localContrast.enabled = mods.localContrast.enabled; + } + if (localContrast.radius) { + toEdit.localContrast.radius = mods.localContrast.radius; + } + if (localContrast.amount) { + toEdit.localContrast.amount = mods.localContrast.amount; + } + if (localContrast.darkness) { + toEdit.localContrast.darkness = mods.localContrast.darkness; + } + if (localContrast.lightness) { + toEdit.localContrast.lightness = mods.localContrast.lightness; + } + + if (rgbCurves.enabled) { + toEdit.rgbCurves.enabled = mods.rgbCurves.enabled; + } + if (rgbCurves.lumamode) { toEdit.rgbCurves.lumamode = mods.rgbCurves.lumamode; } @@ -1490,6 +1552,19 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten toEdit.colorToning.bluehigh = dontforceSet && options.baBehav[ADDSET_COLORTONING_SPLIT] ? toEdit.colorToning.bluehigh + mods.colorToning.bluehigh : mods.colorToning.bluehigh; } + if (colorToning.labgridALow) { + toEdit.colorToning.labgridALow = mods.colorToning.labgridALow; + } + if (colorToning.labgridBLow) { + toEdit.colorToning.labgridBLow = mods.colorToning.labgridBLow; + } + if (colorToning.labgridAHigh) { + toEdit.colorToning.labgridAHigh = mods.colorToning.labgridAHigh; + } + if (colorToning.labgridBHigh) { + toEdit.colorToning.labgridBHigh = mods.colorToning.labgridBHigh; + } + if (sharpenEdge.enabled) { toEdit.sharpenEdge.enabled = mods.sharpenEdge.enabled; } @@ -1670,6 +1745,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten //if (colorBoost.avoidclip) toEdit.colorBoost.avoidclip = mods.colorBoost.avoidclip; //if (colorBoost.enable_saturationlimiter)toEdit.colorBoost.enable_saturationlimiter = mods.colorBoost.enable_saturationlimiter; //if (colorBoost.saturationlimit) toEdit.colorBoost.saturationlimit = mods.colorBoost.saturationlimit; + if (wb.enabled) { + toEdit.wb.enabled = mods.wb.enabled; + } + if (wb.method) { toEdit.wb.method = mods.wb.method; } @@ -2019,10 +2098,6 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten toEdit.sh.stonalwidth = mods.sh.stonalwidth; } - if (sh.localcontrast) { - toEdit.sh.localcontrast = dontforceSet && options.baBehav[ADDSET_SH_LOCALCONTRAST] ? toEdit.sh.localcontrast + mods.sh.localcontrast : mods.sh.localcontrast; - } - if (sh.radius) { toEdit.sh.radius = mods.sh.radius; } @@ -2195,6 +2270,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten toEdit.vignetting.centerY = dontforceSet && options.baBehav[ADDSET_VIGN_CENTER] ? toEdit.vignetting.centerY + mods.vignetting.centerY : mods.vignetting.centerY; } + if (chmixer.enabled) { + toEdit.chmixer.enabled = mods.chmixer.enabled; + } + for (int i = 0; i < 3; i++) { if (chmixer.red[i]) { toEdit.chmixer.red[i] = dontforceSet && options.baBehav[ADDSET_CHMIXER] ? toEdit.chmixer.red[i] + mods.chmixer.red[i] : mods.chmixer.red[i]; @@ -2537,6 +2616,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten toEdit.raw.bayersensor.pixelShiftLmmse = mods.raw.bayersensor.pixelShiftLmmse; } + if (raw.bayersensor.pixelShiftOneGreen) { + toEdit.raw.bayersensor.pixelShiftOneGreen = mods.raw.bayersensor.pixelShiftOneGreen; + } + if (raw.bayersensor.pixelShiftEqualBright) { toEdit.raw.bayersensor.pixelShiftEqualBright = mods.raw.bayersensor.pixelShiftEqualBright; } @@ -3022,6 +3105,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten } // if (dirpyrequalizer.algo) toEdit.dirpyrequalizer.algo = mods.dirpyrequalizer.algo; + if (hsvequalizer.enabled) { + toEdit.hsvequalizer.enabled = mods.hsvequalizer.enabled; + } + if (hsvequalizer.hcurve) { toEdit.hsvequalizer.hcurve = mods.hsvequalizer.hcurve; } @@ -3046,6 +3133,9 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten toEdit.filmSimulation.strength = dontforceSet && options.baBehav[ADDSET_FILMSIMULATION_STRENGTH] ? toEdit.filmSimulation.strength + mods.filmSimulation.strength : mods.filmSimulation.strength; } + if (metadata.mode) { + toEdit.metadata.mode = mods.metadata.mode; + } // Exif changes are added to the existing ones if (exif) @@ -3065,7 +3155,7 @@ bool RAWParamsEdited::BayerSensor::isUnchanged() const return method && imageNum && dcbIterations && dcbEnhance && lmmseIterations/*&& allEnhance*/ && greenEq && pixelShiftMotion && pixelShiftMotionCorrection && pixelShiftMotionCorrectionMethod && pixelShiftStddevFactorGreen && pixelShiftStddevFactorRed && pixelShiftStddevFactorBlue && pixelShiftEperIso && pixelShiftNreadIso && pixelShiftPrnu && pixelShiftSigma && pixelShiftSum && pixelShiftRedBlueWeight && pixelShiftShowMotion && pixelShiftShowMotionMaskOnly - && pixelShiftAutomatic && pixelShiftNonGreenHorizontal && pixelShiftNonGreenVertical && pixelShiftHoleFill && pixelShiftMedian && pixelShiftMedian3 && pixelShiftNonGreenCross && pixelShiftNonGreenCross2 && pixelShiftNonGreenAmaze && pixelShiftGreen && pixelShiftBlur && pixelShiftSmooth && pixelShiftExp0 && pixelShiftLmmse && pixelShiftEqualBright && pixelShiftEqualBrightChannel + && pixelShiftAutomatic && pixelShiftNonGreenHorizontal && pixelShiftNonGreenVertical && pixelShiftHoleFill && pixelShiftMedian && pixelShiftMedian3 && pixelShiftNonGreenCross && pixelShiftNonGreenCross2 && pixelShiftNonGreenAmaze && pixelShiftGreen && pixelShiftBlur && pixelShiftSmooth && pixelShiftExp0 && pixelShiftLmmse && pixelShiftOneGreen && pixelShiftEqualBright && pixelShiftEqualBrightChannel && linenoise && exBlack0 && exBlack1 && exBlack2 && exBlack3 && exTwoGreen; } diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index 1d92d8759..2e39eab66 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -53,6 +53,7 @@ public: bool expcomp; bool hrenabled; bool method; + bool histmatching; }; class RetinexParamsEdited @@ -100,6 +101,7 @@ public: class LCurveParamsEdited { public: + bool enabled; bool brightness; bool contrast; bool chromaticity; @@ -115,14 +117,24 @@ public: bool hhcurve; bool lccurve; bool clcurve; - bool enabled; - bool method; }; + +class LocalContrastParamsEdited { +public: + bool enabled; + bool radius; + bool amount; + bool darkness; + bool lightness; +}; + + class RGBCurvesParamsEdited { public: + bool enabled; bool lumamode; bool rcurve; bool gcurve; @@ -159,6 +171,10 @@ public: bool satlow; bool sathigh; bool lumamode; + bool labgridALow; + bool labgridBLow; + bool labgridAHigh; + bool labgridBHigh; }; class SharpenEdgeParamsEdited @@ -229,6 +245,7 @@ class WBParamsEdited { public: + bool enabled; bool method; bool temperature; bool green; @@ -383,7 +400,6 @@ public: bool htonalwidth; bool shadows; bool stonalwidth; - bool localcontrast; bool radius; }; @@ -487,6 +503,7 @@ class ChannelMixerParamsEdited { public: + bool enabled; bool red[3]; bool green[3]; bool blue[3]; @@ -684,6 +701,7 @@ class HSVEqualizerParamsEdited { public: + bool enabled; bool hcurve; bool scurve; bool vcurve; @@ -741,6 +759,7 @@ public: bool pixelShiftSmooth; bool pixelShiftExp0; bool pixelShiftLmmse; + bool pixelShiftOneGreen; bool pixelShiftEqualBright; bool pixelShiftEqualBrightChannel; bool pixelShiftNonGreenCross; @@ -790,6 +809,13 @@ public: bool isUnchanged() const; }; + +class MetaDataParamsEdited { +public: + bool mode; +}; + + class ParamsEdited { @@ -797,6 +823,7 @@ public: GeneralParamsEdited general; ToneCurveParamsEdited toneCurve; LCurveParamsEdited labCurve; + LocalContrastParamsEdited localContrast; RGBCurvesParamsEdited rgbCurves; ColorToningEdited colorToning; RetinexParamsEdited retinex; @@ -838,6 +865,7 @@ public: WaveletParamsEdited wavelet; HSVEqualizerParamsEdited hsvequalizer; FilmSimulationParamsEdited filmSimulation; + MetaDataParamsEdited metadata; bool exif; bool iptc; diff --git a/rtgui/partialpastedlg.cc b/rtgui/partialpastedlg.cc index 6683bc57b..f11a94393 100644 --- a/rtgui/partialpastedlg.cc +++ b/rtgui/partialpastedlg.cc @@ -43,51 +43,51 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren meta ->set_name("PartialPasteHeader"); raw = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWGROUP"))); raw ->set_name("PartialPasteHeader"); - wav = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_WAVELETGROUP"))); - wav ->set_name("PartialPasteHeader"); + advanced = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_ADVANCEDGROUP"))); + advanced ->set_name("PartialPasteHeader"); - // options in basic: + // Basic Settings: wb = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_WHITEBALANCE"))); exposure = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_EXPOSURE"))); + localcontrast = Gtk::manage(new Gtk::CheckButton(M("PARTIALPASTE_LOCALCONTRAST"))); sh = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_SHADOWSHIGHLIGHTS"))); epd = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_EPD"))); fattal = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_TM_FATTAL"))); - retinex = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RETINEX"))); pcvignette = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_PCVIGNETTE"))); gradient = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_GRADIENT"))); labcurve = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_LABCURVE"))); - colorappearance = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_COLORAPP"))); - // options in detail: + // Detail Settings: sharpen = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_SHARPENING"))); sharpenedge = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_SHARPENEDGE"))); sharpenmicro = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_SHARPENMICRO"))); impden = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_IMPULSEDENOISE"))); - dirpyreq = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DIRPYREQUALIZER"))); + dirpyrden = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DIRPYRDENOISE"))); defringe = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DEFRINGE"))); + dirpyreq = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DIRPYREQUALIZER"))); - // options in wavelet: - wavelet = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_EQUALIZER"))); //TODO - rename to wavelet + // Advanced Settings: + retinex = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RETINEX"))); + colorappearance = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_COLORAPP"))); + wavelet = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_EQUALIZER"))); - // options in color: + // Color-Related Settings icm = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_ICMSETTINGS"))); - //gam = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_ICMGAMMA"))); vibrance = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_VIBRANCE"))); chmixer = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_CHANNELMIXER"))); blackwhite = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_CHANNELMIXERBW"))); - dirpyrden = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DIRPYRDENOISE"))); hsveq = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_HSVEQUALIZER"))); filmSimulation = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_FILMSIMULATION")) ); rgbcurves = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RGBCURVES"))); colortoning = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_COLORTONING"))); - // options in lens: + // Lens-Related Settings distortion = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DISTORTION"))); cacorr = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_CACORRECTION"))); vignetting = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_VIGNETTING"))); lcp = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_LENSPROFILE"))); - // options in composition: + // Composition Settings: coarserot = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_COARSETRANS"))); finerot = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_ROTATION"))); crop = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_CROP"))); @@ -96,36 +96,40 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren perspective = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_PERSPECTIVE"))); commonTrans = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_COMMONTRANSFORMPARAMS"))); - // options in meta: + // Metadata: + metadata = Gtk::manage(new Gtk::CheckButton(M("PARTIALPASTE_METADATA"))); exifch = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_EXIFCHANGES"))); iptc = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_IPTCINFO"))); - // options in raw: - raw_expos = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWEXPOS_LINEAR"))); - raw_preser = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWEXPOS_PRESER"))); - raw_black = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWEXPOS_BLACK"))); - raw_ca_autocorrect = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWCACORR_AUTO"))); - raw_caredblue = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWCACORR_CAREDBLUE"))); - raw_hotpix_filt = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_PREPROCESS_HOTPIXFILT"))); - raw_deadpix_filt = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_PREPROCESS_DEADPIXFILT"))); - raw_linenoise = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_PREPROCESS_LINEDENOISE"))); - raw_greenthresh = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_PREPROCESS_GREENEQUIL"))); + // Raw Settings: raw_method = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAW_DMETHOD"))); raw_imagenum = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAW_IMAGENUM"))); raw_pixelshift = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAW_PIXELSHIFT"))); raw_ccSteps = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAW_FALSECOLOR"))); raw_dcb_iterations = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAW_DCBITERATIONS"))); raw_dcb_enhance = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAW_DCBENHANCE"))); - //raw_all_enhance = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAW_ALLENHANCE"))); raw_lmmse_iterations = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAW_LMMSEITERATIONS"))); - + //--- + raw_linenoise = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_PREPROCESS_LINEDENOISE"))); + raw_greenthresh = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_PREPROCESS_GREENEQUIL"))); + raw_hotpix_filt = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_PREPROCESS_HOTPIXFILT"))); + raw_deadpix_filt = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_PREPROCESS_DEADPIXFILT"))); + //--- + raw_expos = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWEXPOS_LINEAR"))); + raw_preser = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWEXPOS_PRESER"))); + raw_black = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWEXPOS_BLACK"))); + //--- df_file = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DARKFRAMEFILE"))); df_AutoSelect = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DARKFRAMEAUTOSELECT"))); + //--- ff_file = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_FLATFIELDFILE"))); ff_AutoSelect = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_FLATFIELDAUTOSELECT"))); - ff_BlurRadius = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_FLATFIELDBLURRADIUS"))); ff_BlurType = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_FLATFIELDBLURTYPE"))); + ff_BlurRadius = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_FLATFIELDBLURRADIUS"))); ff_ClipControl = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_FLATFIELDCLIPCONTROL"))); + //--- + raw_ca_autocorrect = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWCACORR_AUTO"))); + raw_caredblue = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWCACORR_CAREDBLUE"))); Gtk::VBox* vboxes[8]; Gtk::HSeparator* hseps[8]; @@ -142,14 +146,13 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren vboxes[0]->pack_start (*hseps[0], Gtk::PACK_SHRINK, 2); vboxes[0]->pack_start (*wb, Gtk::PACK_SHRINK, 2); vboxes[0]->pack_start (*exposure, Gtk::PACK_SHRINK, 2); + vboxes[0]->pack_start (*localcontrast, Gtk::PACK_SHRINK, 2); vboxes[0]->pack_start (*sh, Gtk::PACK_SHRINK, 2); vboxes[0]->pack_start (*epd, Gtk::PACK_SHRINK, 2); vboxes[0]->pack_start (*fattal, Gtk::PACK_SHRINK, 2); - vboxes[0]->pack_start (*retinex, Gtk::PACK_SHRINK, 2); vboxes[0]->pack_start (*pcvignette, Gtk::PACK_SHRINK, 2); vboxes[0]->pack_start (*gradient, Gtk::PACK_SHRINK, 2); vboxes[0]->pack_start (*labcurve, Gtk::PACK_SHRINK, 2); - vboxes[0]->pack_start (*colorappearance, Gtk::PACK_SHRINK, 2); //DETAIL vboxes[1]->pack_start (*detail, Gtk::PACK_SHRINK, 2); @@ -166,7 +169,6 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren vboxes[2]->pack_start (*color, Gtk::PACK_SHRINK, 2); vboxes[2]->pack_start (*hseps[2], Gtk::PACK_SHRINK, 2); vboxes[2]->pack_start (*icm, Gtk::PACK_SHRINK, 2); - //vboxes[2]->pack_start (*gam, Gtk::PACK_SHRINK, 2); vboxes[2]->pack_start (*vibrance, Gtk::PACK_SHRINK, 2); vboxes[2]->pack_start (*chmixer, Gtk::PACK_SHRINK, 2); vboxes[2]->pack_start (*blackwhite, Gtk::PACK_SHRINK, 2); @@ -194,49 +196,51 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren vboxes[4]->pack_start (*perspective, Gtk::PACK_SHRINK, 2); vboxes[4]->pack_start (*commonTrans, Gtk::PACK_SHRINK, 2); - //WAVELET - vboxes[5]->pack_start (*wav, Gtk::PACK_SHRINK, 2); + //ADVANCED + vboxes[5]->pack_start (*advanced, Gtk::PACK_SHRINK, 2); vboxes[5]->pack_start (*hseps[5], Gtk::PACK_SHRINK, 2); + vboxes[5]->pack_start (*retinex, Gtk::PACK_SHRINK, 2); + vboxes[5]->pack_start (*colorappearance, Gtk::PACK_SHRINK, 2); vboxes[5]->pack_start (*wavelet, Gtk::PACK_SHRINK, 2); - //RAW - vboxes[6]->pack_start (*raw, Gtk::PACK_SHRINK, 2); - vboxes[6]->pack_start (*hseps[6], Gtk::PACK_SHRINK, 2); - vboxes[6]->pack_start (*raw_method, Gtk::PACK_SHRINK, 2); - vboxes[6]->pack_start (*raw_imagenum, Gtk::PACK_SHRINK, 2); - vboxes[6]->pack_start (*raw_pixelshift, Gtk::PACK_SHRINK, 2); - vboxes[6]->pack_start (*raw_ccSteps, Gtk::PACK_SHRINK, 2); - vboxes[6]->pack_start (*raw_dcb_iterations, Gtk::PACK_SHRINK, 2); - vboxes[6]->pack_start (*raw_dcb_enhance, Gtk::PACK_SHRINK, 2); - vboxes[6]->pack_start (*raw_lmmse_iterations, Gtk::PACK_SHRINK, 2); - //vboxes[6]->pack_start (*raw_all_enhance, Gtk::PACK_SHRINK, 2); - vboxes[6]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0); - vboxes[6]->pack_start (*raw_linenoise, Gtk::PACK_SHRINK, 2); - vboxes[6]->pack_start (*raw_greenthresh, Gtk::PACK_SHRINK, 2); - vboxes[6]->pack_start (*raw_hotpix_filt, Gtk::PACK_SHRINK, 2); - vboxes[6]->pack_start (*raw_deadpix_filt, Gtk::PACK_SHRINK, 2); - vboxes[6]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0); - vboxes[6]->pack_start (*raw_expos, Gtk::PACK_SHRINK, 2); - vboxes[6]->pack_start (*raw_preser, Gtk::PACK_SHRINK, 2); - vboxes[6]->pack_start (*raw_black, Gtk::PACK_SHRINK, 2); - vboxes[6]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0); - vboxes[6]->pack_start (*df_file, Gtk::PACK_SHRINK, 2); - vboxes[6]->pack_start (*df_AutoSelect, Gtk::PACK_SHRINK, 2); - vboxes[6]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0); - vboxes[6]->pack_start (*ff_file, Gtk::PACK_SHRINK, 2); - vboxes[6]->pack_start (*ff_AutoSelect, Gtk::PACK_SHRINK, 2); - vboxes[6]->pack_start (*ff_BlurType, Gtk::PACK_SHRINK, 2); - vboxes[6]->pack_start (*ff_BlurRadius, Gtk::PACK_SHRINK, 2); - vboxes[6]->pack_start (*ff_ClipControl, Gtk::PACK_SHRINK, 2); - vboxes[6]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0); - vboxes[6]->pack_start (*raw_ca_autocorrect, Gtk::PACK_SHRINK, 2); - vboxes[6]->pack_start (*raw_caredblue, Gtk::PACK_SHRINK, 2); - //META - vboxes[7]->pack_start (*meta, Gtk::PACK_SHRINK, 2); + vboxes[6]->pack_start (*meta, Gtk::PACK_SHRINK, 2); + vboxes[6]->pack_start (*hseps[6], Gtk::PACK_SHRINK, 2); + vboxes[6]->pack_start(*metadata, Gtk::PACK_SHRINK, 2); + vboxes[6]->pack_start (*exifch, Gtk::PACK_SHRINK, 2); + vboxes[6]->pack_start (*iptc, Gtk::PACK_SHRINK, 2); + + //RAW + vboxes[7]->pack_start (*raw, Gtk::PACK_SHRINK, 2); vboxes[7]->pack_start (*hseps[7], Gtk::PACK_SHRINK, 2); - vboxes[7]->pack_start (*exifch, Gtk::PACK_SHRINK, 2); - vboxes[7]->pack_start (*iptc, Gtk::PACK_SHRINK, 2); + vboxes[7]->pack_start (*raw_method, Gtk::PACK_SHRINK, 2); + vboxes[7]->pack_start (*raw_imagenum, Gtk::PACK_SHRINK, 2); + vboxes[7]->pack_start (*raw_pixelshift, Gtk::PACK_SHRINK, 2); + vboxes[7]->pack_start (*raw_ccSteps, Gtk::PACK_SHRINK, 2); + vboxes[7]->pack_start (*raw_dcb_iterations, Gtk::PACK_SHRINK, 2); + vboxes[7]->pack_start (*raw_dcb_enhance, Gtk::PACK_SHRINK, 2); + vboxes[7]->pack_start (*raw_lmmse_iterations, Gtk::PACK_SHRINK, 2); + vboxes[7]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0); + vboxes[7]->pack_start (*raw_linenoise, Gtk::PACK_SHRINK, 2); + vboxes[7]->pack_start (*raw_greenthresh, Gtk::PACK_SHRINK, 2); + vboxes[7]->pack_start (*raw_hotpix_filt, Gtk::PACK_SHRINK, 2); + vboxes[7]->pack_start (*raw_deadpix_filt, Gtk::PACK_SHRINK, 2); + vboxes[7]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0); + vboxes[7]->pack_start (*raw_expos, Gtk::PACK_SHRINK, 2); + vboxes[7]->pack_start (*raw_preser, Gtk::PACK_SHRINK, 2); + vboxes[7]->pack_start (*raw_black, Gtk::PACK_SHRINK, 2); + vboxes[7]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0); + vboxes[7]->pack_start (*df_file, Gtk::PACK_SHRINK, 2); + vboxes[7]->pack_start (*df_AutoSelect, Gtk::PACK_SHRINK, 2); + vboxes[7]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0); + vboxes[7]->pack_start (*ff_file, Gtk::PACK_SHRINK, 2); + vboxes[7]->pack_start (*ff_AutoSelect, Gtk::PACK_SHRINK, 2); + vboxes[7]->pack_start (*ff_BlurType, Gtk::PACK_SHRINK, 2); + vboxes[7]->pack_start (*ff_BlurRadius, Gtk::PACK_SHRINK, 2); + vboxes[7]->pack_start (*ff_ClipControl, Gtk::PACK_SHRINK, 2); + vboxes[7]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0); + vboxes[7]->pack_start (*raw_ca_autocorrect, Gtk::PACK_SHRINK, 2); + vboxes[7]->pack_start (*raw_caredblue, Gtk::PACK_SHRINK, 2); Gtk::VBox* vbCol1 = Gtk::manage (new Gtk::VBox ()); Gtk::VBox* vbCol2 = Gtk::manage (new Gtk::VBox ()); @@ -246,18 +250,18 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren vbCol1->pack_start (*vboxes[i], Gtk::PACK_SHRINK, 2); } - for (int i = 3; i < 6; i++) { + for (int i = 3; i < 7; i++) { vbCol2->pack_start (*vboxes[i], Gtk::PACK_SHRINK, 2); } - for (int i = 6; i < 8; i++) { + for (int i = 7; i < 8; i++) { vbCol3->pack_start (*vboxes[i], Gtk::PACK_SHRINK, 2); } Gtk::VBox* vbtop = Gtk::manage (new Gtk::VBox ()); vbtop->pack_start (*everything, Gtk::PACK_SHRINK, 2); - Gtk::Dialog::get_content_area()->pack_start (*vbtop, Gtk::PACK_SHRINK, 2); // TODO replace with get_content_area() with GTK upgrade + Gtk::Dialog::get_content_area()->pack_start (*vbtop, Gtk::PACK_SHRINK, 2); Gtk::HBox* hbmain = Gtk::manage (new Gtk::HBox ()); hbmain->pack_start (*vbCol1); @@ -279,7 +283,7 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren scrolledwindow->add(*hbmain); - Gtk::Dialog::get_content_area()->pack_start (*scrolledwindow, Gtk::PACK_EXPAND_WIDGET, 2);// TODO replace with get_content_area() with GTK upgrade + Gtk::Dialog::get_content_area()->pack_start (*scrolledwindow, Gtk::PACK_EXPAND_WIDGET, 2); hbmain->show(); scrolledwindow->show (); @@ -294,31 +298,35 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren compositionConn = composition->signal_toggled().connect (sigc::mem_fun(*this, &PartialPasteDlg::compositionToggled)); metaConn = meta->signal_toggled().connect (sigc::mem_fun(*this, &PartialPasteDlg::metaToggled)); rawConn = raw->signal_toggled().connect (sigc::mem_fun(*this, &PartialPasteDlg::rawToggled)); - wavConn = wav->signal_toggled().connect (sigc::mem_fun(*this, &PartialPasteDlg::wavToggled)); + advancedConn = advanced->signal_toggled().connect (sigc::mem_fun(*this, &PartialPasteDlg::advancedToggled)); + // Basic Settings wbConn = wb->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true)); exposureConn = exposure->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true)); + localcontrastConn = localcontrast->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true)); shConn = sh->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true)); epdConn = epd->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true)); fattalConn = fattal->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true)); - retinexConn = retinex->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true)); pcvignetteConn = pcvignette->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true)); gradientConn = gradient->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true)); labcurveConn = labcurve->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true)); - colorappearanceConn = colorappearance->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true)); + // Detail Settings: sharpenConn = sharpen->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true)); gradsharpenConn = sharpenedge->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true)); microcontrastConn = sharpenmicro->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true)); impdenConn = impden->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true)); dirpyrdenConn = dirpyrden->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true)); - dirpyreqConn = dirpyreq->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true)); defringeConn = defringe->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true)); + dirpyreqConn = dirpyreq->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true)); - waveletConn = wavelet->signal_toggled().connect (sigc::bind (sigc::mem_fun(*wav, &Gtk::CheckButton::set_inconsistent), true)); + // Advanced Settings: + retinexConn = retinex->signal_toggled().connect (sigc::bind (sigc::mem_fun(*advanced, &Gtk::CheckButton::set_inconsistent), true)); + colorappearanceConn = colorappearance->signal_toggled().connect (sigc::bind (sigc::mem_fun(*advanced, &Gtk::CheckButton::set_inconsistent), true)); + waveletConn = wavelet->signal_toggled().connect (sigc::bind (sigc::mem_fun(*advanced, &Gtk::CheckButton::set_inconsistent), true)); + // Color-related Settings: icmConn = icm->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true)); - //gamcsconn = gam->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true)); vibranceConn = vibrance->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true)); chmixerConn = chmixer->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true)); chmixerbwConn = blackwhite->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true)); @@ -327,11 +335,13 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren rgbcurvesConn = rgbcurves->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true)); colortoningConn = colortoning->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true)); + // Lens-Related Settings: distortionConn = distortion->signal_toggled().connect (sigc::bind (sigc::mem_fun(*lens, &Gtk::CheckButton::set_inconsistent), true)); cacorrConn = cacorr->signal_toggled().connect (sigc::bind (sigc::mem_fun(*lens, &Gtk::CheckButton::set_inconsistent), true)); vignettingConn = vignetting->signal_toggled().connect (sigc::bind (sigc::mem_fun(*lens, &Gtk::CheckButton::set_inconsistent), true)); lcpConn = lcp->signal_toggled().connect (sigc::bind (sigc::mem_fun(*lens, &Gtk::CheckButton::set_inconsistent), true)); + // Composition Settings: coarserotConn = coarserot->signal_toggled().connect (sigc::bind (sigc::mem_fun(*composition, &Gtk::CheckButton::set_inconsistent), true)); finerotConn = finerot->signal_toggled().connect (sigc::bind (sigc::mem_fun(*composition, &Gtk::CheckButton::set_inconsistent), true)); cropConn = crop->signal_toggled().connect (sigc::bind (sigc::mem_fun(*composition, &Gtk::CheckButton::set_inconsistent), true)); @@ -340,34 +350,40 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren perspectiveConn = perspective->signal_toggled().connect (sigc::bind (sigc::mem_fun(*composition, &Gtk::CheckButton::set_inconsistent), true)); commonTransConn = commonTrans->signal_toggled().connect (sigc::bind (sigc::mem_fun(*composition, &Gtk::CheckButton::set_inconsistent), true)); + // Metadata: + metadataConn = metadata->signal_toggled().connect(sigc::bind (sigc::mem_fun(*meta, &Gtk::CheckButton::set_inconsistent), true)); exifchConn = exifch->signal_toggled().connect (sigc::bind (sigc::mem_fun(*meta, &Gtk::CheckButton::set_inconsistent), true)); iptcConn = iptc->signal_toggled().connect (sigc::bind (sigc::mem_fun(*meta, &Gtk::CheckButton::set_inconsistent), true)); + // Raw Settings: raw_methodConn = raw_method->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); raw_imagenumConn = raw_imagenum->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); + raw_pixelshiftConn = raw_pixelshift->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); raw_ccStepsConn = raw_ccSteps->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); raw_dcb_iterationsConn = raw_dcb_iterations->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); raw_dcb_enhanceConn = raw_dcb_enhance->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); - //raw_all_enhanceConn = raw_all_enhance->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); raw_lmmse_iterationsConn = raw_lmmse_iterations->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); - raw_pixelshiftConn = raw_pixelshift->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); - + //--- + raw_linenoiseConn = raw_linenoise->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); + raw_greenthreshConn = raw_greenthresh->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); + raw_hotpix_filtConn = raw_hotpix_filt->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); + raw_deadpix_filtConn = raw_deadpix_filt->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); + //--- raw_exposConn = raw_expos->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); raw_preserConn = raw_preser->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); raw_blackConn = raw_black->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); - raw_ca_autocorrectConn = raw_ca_autocorrect->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); - raw_caredblueConn = raw_caredblue->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); - raw_hotpix_filtConn = raw_hotpix_filt->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); - raw_deadpix_filtConn = raw_deadpix_filt->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); - raw_linenoiseConn = raw_linenoise->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); - raw_greenthreshConn = raw_greenthresh->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); + //--- df_fileConn = df_file->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); df_AutoSelectConn = df_AutoSelect->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); + //--- ff_fileConn = ff_file->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); ff_AutoSelectConn = ff_AutoSelect->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); - ff_BlurRadiusConn = ff_BlurRadius->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); ff_BlurTypeConn = ff_BlurType->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); + ff_BlurRadiusConn = ff_BlurRadius->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); ff_ClipControlConn = ff_ClipControl->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); + //--- + raw_ca_autocorrectConn = raw_ca_autocorrect->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); + raw_caredblueConn = raw_caredblue->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); add_button (M("GENERAL_OK"), Gtk::RESPONSE_OK); add_button (M("GENERAL_CANCEL"), Gtk::RESPONSE_CANCEL); @@ -379,14 +395,14 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren void PartialPasteDlg::everythingToggled () { - basicConn.block (true); - detailConn.block (true); - colorConn.block (true); - lensConn.block (true); - compositionConn.block (true); - metaConn.block (true); - rawConn.block (true); - wavConn.block (true); + ConnectionBlocker basicBlocker(basicConn); + ConnectionBlocker detailBlocker(detailConn); + ConnectionBlocker colorBlocker(colorConn); + ConnectionBlocker lensBlocker(lensConn); + ConnectionBlocker compositionBlocker(compositionConn); + ConnectionBlocker metaBlocker(metaConn); + ConnectionBlocker rawBlocker(rawConn); + ConnectionBlocker advancedBlocker(advancedConn); everything->set_inconsistent (false); @@ -398,7 +414,7 @@ void PartialPasteDlg::everythingToggled () composition->set_active(everything->get_active()); meta->set_active(everything->get_active()); raw->set_active(everything->get_active()); - wav->set_active(everything->get_active()); + advanced->set_active(everything->get_active()); //toggle group children PartialPasteDlg::basicToggled (); @@ -408,147 +424,99 @@ void PartialPasteDlg::everythingToggled () PartialPasteDlg::compositionToggled (); PartialPasteDlg::metaToggled (); PartialPasteDlg::rawToggled (); - PartialPasteDlg::wavToggled (); - - basicConn.block (false); - detailConn.block (false); - colorConn.block (false); - lensConn.block (false); - compositionConn.block (false); - metaConn.block (false); - rawConn.block (false); - wavConn.block (false); + PartialPasteDlg::advancedToggled (); } void PartialPasteDlg::rawToggled () { - raw_methodConn.block (true); - raw_imagenumConn.block (true); - raw_ccStepsConn.block (true); - raw_dcb_iterationsConn.block (true); - raw_dcb_enhanceConn.block (true); - //raw_all_enhanceConn.block (true); - raw_lmmse_iterationsConn.block (true); - raw_pixelshiftConn.block (true); - raw_exposConn.block (true); - raw_preserConn.block (true); - raw_blackConn.block (true); - raw_ca_autocorrectConn.block (true); - raw_caredblueConn.block (true); - raw_hotpix_filtConn.block (true); - raw_deadpix_filtConn.block (true); - raw_linenoiseConn.block (true); - raw_greenthreshConn.block (true); - df_fileConn.block (true); - df_AutoSelectConn.block (true); - ff_fileConn.block (true); - ff_AutoSelectConn.block (true); - ff_BlurRadiusConn.block (true); - ff_BlurTypeConn.block (true); - ff_ClipControlConn.block (true); + ConnectionBlocker raw_methodBlocker(raw_methodConn); + ConnectionBlocker raw_imagenumBlocker(raw_imagenumConn); + ConnectionBlocker raw_pixelshiftBlocker(raw_pixelshiftConn); + ConnectionBlocker raw_ccStepsBlocker(raw_ccStepsConn); + ConnectionBlocker raw_dcb_iterationsBlocker(raw_dcb_iterationsConn); + ConnectionBlocker raw_dcb_enhanceBlocker(raw_dcb_enhanceConn); + ConnectionBlocker raw_lmmse_iterationsBlocker(raw_lmmse_iterationsConn); + ConnectionBlocker raw_linenoiseBlocker(raw_linenoiseConn); + ConnectionBlocker raw_greenthreshBlocker(raw_greenthreshConn); + ConnectionBlocker raw_hotpix_filtBlocker(raw_hotpix_filtConn); + ConnectionBlocker raw_deadpix_filtBlocker(raw_deadpix_filtConn); + ConnectionBlocker raw_exposBlocker(raw_exposConn); + ConnectionBlocker raw_preserBlocker(raw_preserConn); + ConnectionBlocker raw_blackBlocker(raw_blackConn); + ConnectionBlocker df_fileBlocker(df_fileConn); + ConnectionBlocker df_AutoSelectBlocker(df_AutoSelectConn); + ConnectionBlocker ff_fileBlocker(ff_fileConn); + ConnectionBlocker ff_AutoSelectBlocker(ff_AutoSelectConn); + ConnectionBlocker ff_BlurTypeBlocker(ff_BlurTypeConn); + ConnectionBlocker ff_BlurRadiusBlocker(ff_BlurRadiusConn); + ConnectionBlocker ff_ClipControlBlocker(ff_ClipControlConn); + ConnectionBlocker raw_ca_autocorrectBlocker(raw_ca_autocorrectConn); + ConnectionBlocker raw_caredblueBlocker(raw_caredblueConn); raw->set_inconsistent (false); raw_method->set_active (raw->get_active ()); raw_imagenum->set_active (raw->get_active ()); + raw_pixelshift->set_active (raw->get_active ()); raw_ccSteps->set_active (raw->get_active ()); raw_dcb_iterations->set_active (raw->get_active ()); raw_dcb_enhance->set_active (raw->get_active ()); raw_lmmse_iterations->set_active (raw->get_active ()); - raw_pixelshift->set_active (raw->get_active ()); - //raw_all_enhance->set_active (raw->get_active ()); + raw_linenoise->set_active (raw->get_active ()); + raw_greenthresh->set_active (raw->get_active ()); + raw_hotpix_filt->set_active (raw->get_active ()); + raw_deadpix_filt->set_active (raw->get_active ()); raw_expos->set_active (raw->get_active ()); raw_preser->set_active (raw->get_active ()); raw_black->set_active (raw->get_active ()); - raw_ca_autocorrect->set_active (raw->get_active ()); - raw_caredblue->set_active (raw->get_active ()); - raw_hotpix_filt->set_active (raw->get_active ()); - raw_deadpix_filt->set_active (raw->get_active ()); - raw_linenoise->set_active (raw->get_active ()); - raw_greenthresh->set_active (raw->get_active ()); df_file->set_active (raw->get_active ()); df_AutoSelect->set_active (raw->get_active ()); ff_file->set_active (raw->get_active ()); ff_AutoSelect->set_active (raw->get_active ()); - ff_BlurRadius->set_active (raw->get_active ()); ff_BlurType->set_active (raw->get_active ()); + ff_BlurRadius->set_active (raw->get_active ()); ff_ClipControl->set_active (raw->get_active ()); - - raw_methodConn.block (false); - raw_imagenumConn.block (false); - raw_ccStepsConn.block (false); - raw_dcb_iterationsConn.block (false); - raw_dcb_enhanceConn.block (false); - //raw_all_enhanceConn.block (false); - raw_pixelshiftConn.block (false); - raw_lmmse_iterationsConn.block (false); - raw_exposConn.block (false); - raw_preserConn.block (false); - raw_blackConn.block (false); - raw_ca_autocorrectConn.block (false); - raw_caredblueConn.block (false); - raw_hotpix_filtConn.block (false); - raw_deadpix_filtConn.block (false); - raw_linenoiseConn.block (false); - raw_greenthreshConn.block (false); - df_fileConn.block (false); - df_AutoSelectConn.block (false); - ff_fileConn.block (false); - ff_AutoSelectConn.block (false); - ff_BlurRadiusConn.block (false); - ff_BlurTypeConn.block (false); - ff_ClipControlConn.block (false); + raw_ca_autocorrect->set_active (raw->get_active ()); + raw_caredblue->set_active (raw->get_active ()); } void PartialPasteDlg::basicToggled () { - wbConn.block (true); - exposureConn.block (true); - shConn.block (true); - epdConn.block(true); - pcvignetteConn.block (true); - gradientConn.block (true); - labcurveConn.block (true); - colorappearanceConn.block (true); - retinexConn.block (true); + ConnectionBlocker wbBlocker(wbConn); + ConnectionBlocker exposureBlocker(exposureConn); + ConnectionBlocker localcontrastBlocker(localcontrastConn); + ConnectionBlocker shBlocker(shConn); + ConnectionBlocker epdBlocker(epdConn); + ConnectionBlocker fattalBlocker(fattalConn); + ConnectionBlocker pcvignetteBlocker(pcvignetteConn); + ConnectionBlocker gradientBlocker(gradientConn); + ConnectionBlocker labcurveBlocker(labcurveConn); basic->set_inconsistent (false); wb->set_active (basic->get_active ()); exposure->set_active (basic->get_active ()); + localcontrast->set_active(basic->get_active()); sh->set_active (basic->get_active ()); epd->set_active (basic->get_active ()); fattal->set_active (basic->get_active ()); pcvignette->set_active (basic->get_active ()); gradient->set_active (basic->get_active ()); - retinex->set_active (basic->get_active ()); labcurve->set_active (basic->get_active ()); - colorappearance->set_active (basic->get_active ()); - - wbConn.block (false); - exposureConn.block (false); - shConn.block (false); - epdConn.block (false); - pcvignetteConn.block (false); - gradientConn.block (false); - retinexConn.block (false); - - labcurveConn.block (false); - colorappearanceConn.block (false); } void PartialPasteDlg::detailToggled () { - sharpenConn.block (true); - gradsharpenConn.block(true); - microcontrastConn.block(true); - impdenConn.block (true); - dirpyrdenConn.block (true); - defringeConn.block (true); - dirpyreqConn.block (true); + ConnectionBlocker sharpenBlocker(sharpenConn); + ConnectionBlocker gradsharpenBlocker(gradsharpenConn); + ConnectionBlocker microcontrastBlocker(microcontrastConn); + ConnectionBlocker impdenBlocker(impdenConn); + ConnectionBlocker dirpyrdenBlocker(dirpyrdenConn); + ConnectionBlocker defringeBlocker(defringeConn); + ConnectionBlocker dirpyreqBlocker(dirpyreqConn); detail->set_inconsistent (false); @@ -559,43 +527,37 @@ void PartialPasteDlg::detailToggled () dirpyrden->set_active (detail->get_active ()); defringe->set_active (detail->get_active ()); dirpyreq->set_active (detail->get_active ()); - - sharpenConn.block (false); - gradsharpenConn.block(false); - microcontrastConn.block(false); - impdenConn.block (false); - dirpyrdenConn.block (false); - defringeConn.block (false); - dirpyreqConn.block (false); } -void PartialPasteDlg::wavToggled () +void PartialPasteDlg::advancedToggled () { - waveletConn.block (true); + ConnectionBlocker retinexBlocker(retinexConn); + ConnectionBlocker colorappearanceBlocker(colorappearanceConn); + ConnectionBlocker waveletBlocker(waveletConn); - wav->set_inconsistent (false); - wavelet->set_active (wav->get_active ()); + advanced->set_inconsistent (false); - waveletConn.block (false); + retinex->set_active (advanced->get_active ()); + colorappearance->set_active (advanced->get_active ()); + wavelet->set_active (advanced->get_active ()); } void PartialPasteDlg::colorToggled () { - icmConn.block (true); - //gamcsconn.block (true); - vibranceConn.block (true); - chmixerConn.block (true); - chmixerbwConn.block (true); - hsveqConn.block (true); - filmSimulationConn.block (true); - rgbcurvesConn.block (true); - colortoningConn.block (true); + ConnectionBlocker icmBlocker(icmConn); + ConnectionBlocker vibranceBlocker(vibranceConn); + ConnectionBlocker chmixerBlocker(chmixerConn); + ConnectionBlocker chmixerbwBlocker(chmixerbwConn); + ConnectionBlocker hsveqBlocker(hsveqConn); + ConnectionBlocker filmSimulationBlocker(filmSimulationConn); + ConnectionBlocker rgbcurvesBlocker(rgbcurvesConn); + ConnectionBlocker colortoningBlocker(colortoningConn); color->set_inconsistent (false); + icm->set_active (color->get_active ()); - //gam->set_active (color->get_active ()); vibrance->set_active (color->get_active ()); chmixer->set_active (color->get_active ()); blackwhite->set_active (color->get_active ()); @@ -603,25 +565,15 @@ void PartialPasteDlg::colorToggled () filmSimulation->set_active (color->get_active ()); rgbcurves->set_active (color->get_active ()); colortoning->set_active(color->get_active ()); - - icmConn.block (false); - //gamcsconn.block (false); - vibranceConn.block (false); - chmixerbwConn.block (false); - chmixerConn.block (false); - hsveqConn.block (false); - filmSimulationConn.block (false); - rgbcurvesConn.block (false); - colortoningConn.block (false); } void PartialPasteDlg::lensToggled () { - distortionConn.block (true); - cacorrConn.block (true); - vignettingConn.block (true); - lcpConn.block (true); + ConnectionBlocker distortionBlocker(distortionConn); + ConnectionBlocker cacorrBlocker(cacorrConn); + ConnectionBlocker vignettingBlocker(vignettingConn); + ConnectionBlocker lcpBlocker(lcpConn); lens->set_inconsistent (false); @@ -629,23 +581,18 @@ void PartialPasteDlg::lensToggled () cacorr->set_active (lens->get_active ()); vignetting->set_active (lens->get_active ()); lcp->set_active (lens->get_active ()); - - distortionConn.block (false); - cacorrConn.block (false); - vignettingConn.block (false); - lcpConn.block (false); } void PartialPasteDlg::compositionToggled () { - coarserotConn.block (true); - finerotConn.block (true); - cropConn.block (true); - resizeConn.block (true); - prsharpeningConn.block (true); - perspectiveConn.block (true); - commonTransConn.block (true); + ConnectionBlocker coarserotBlocker(coarserotConn); + ConnectionBlocker finerotBlocker(finerotConn); + ConnectionBlocker cropBlocker(cropConn); + ConnectionBlocker resizeBlocker(resizeConn); + ConnectionBlocker prsharpeningBlocker(prsharpeningConn); + ConnectionBlocker perspectiveBlocker(perspectiveConn); + ConnectionBlocker commonTransBlocker(commonTransConn); composition->set_inconsistent (false); @@ -656,28 +603,20 @@ void PartialPasteDlg::compositionToggled () prsharpening->set_active (composition->get_active ()); perspective->set_active (composition->get_active ()); commonTrans->set_active (composition->get_active ()); - - coarserotConn.block (false); - finerotConn.block (false); - cropConn.block (false); - resizeConn.block (false); - prsharpeningConn.block (false); - perspectiveConn.block (false); - commonTransConn.block (false); } void PartialPasteDlg::metaToggled () { - exifchConn.block (true); - iptcConn.block (true); + ConnectionBlocker metadataBlocker(metadataConn); + ConnectionBlocker exifchBlocker(exifchConn); + ConnectionBlocker iptcBlocker(iptcConn); + meta->set_inconsistent (false); + metadata->set_active(meta->get_active()); exifch->set_active (meta->get_active ()); iptc->set_active (meta->get_active ()); - - exifchConn.block (false); - iptcConn.block (false); } @@ -707,6 +646,10 @@ void PartialPasteDlg::applyPaste (rtengine::procparams::ProcParams* dstPP, Param filterPE.toneCurve = falsePE.toneCurve; } + if (!localcontrast->get_active()) { + filterPE.localContrast = falsePE.localContrast; + } + if (!sh->get_active ()) { filterPE.sh = falsePE.sh; } @@ -847,6 +790,10 @@ void PartialPasteDlg::applyPaste (rtengine::procparams::ProcParams* dstPP, Param filterPE.commonTrans = falsePE.commonTrans; } + if (!metadata->get_active()) { + filterPE.metadata = falsePE.metadata; + } + if (!exifch->get_active ()) { filterPE.exif = falsePE.exif; } diff --git a/rtgui/partialpastedlg.h b/rtgui/partialpastedlg.h index baef6b9aa..e270a1e6e 100644 --- a/rtgui/partialpastedlg.h +++ b/rtgui/partialpastedlg.h @@ -39,11 +39,12 @@ public: Gtk::CheckButton* composition; Gtk::CheckButton* meta; Gtk::CheckButton* raw; - Gtk::CheckButton* wav; + Gtk::CheckButton* advanced; // options in basic: Gtk::CheckButton* wb; Gtk::CheckButton* exposure; + Gtk::CheckButton* localcontrast; Gtk::CheckButton* sh; Gtk::CheckButton* epd; Gtk::CheckButton* fattal; @@ -92,6 +93,7 @@ public: Gtk::CheckButton* commonTrans; // options in meta: + Gtk::CheckButton *metadata; Gtk::CheckButton* exifch; Gtk::CheckButton* iptc; @@ -122,14 +124,14 @@ public: Gtk::CheckButton* ff_BlurType; Gtk::CheckButton* ff_ClipControl; - sigc::connection everythingConn, basicConn, detailConn, colorConn, lensConn, compositionConn, metaConn, rawConn, wavConn; + sigc::connection everythingConn, basicConn, detailConn, colorConn, lensConn, compositionConn, metaConn, rawConn, advancedConn; - sigc::connection wbConn, exposureConn, shConn, pcvignetteConn, gradientConn, labcurveConn, colorappearanceConn; + sigc::connection wbConn, exposureConn, localcontrastConn, shConn, pcvignetteConn, gradientConn, labcurveConn, colorappearanceConn; sigc::connection sharpenConn, gradsharpenConn, microcontrastConn, impdenConn, dirpyrdenConn, defringeConn, epdConn, fattalConn, dirpyreqConn, waveletConn, retinexConn; sigc::connection vibranceConn, chmixerConn, hsveqConn, rgbcurvesConn, chmixerbwConn, colortoningConn, filmSimulationConn; sigc::connection distortionConn, cacorrConn, vignettingConn, lcpConn; sigc::connection coarserotConn, finerotConn, cropConn, resizeConn, prsharpeningConn, perspectiveConn, commonTransConn; - sigc::connection exifchConn, iptcConn, icmConn; + sigc::connection metadataConn, exifchConn, iptcConn, icmConn; sigc::connection df_fileConn, df_AutoSelectConn, ff_fileConn, ff_AutoSelectConn, ff_BlurRadiusConn, ff_BlurTypeConn, ff_ClipControlConn; sigc::connection raw_caredblueConn, raw_ca_autocorrectConn, raw_hotpix_filtConn, raw_deadpix_filtConn, raw_linenoiseConn, raw_greenthreshConn, raw_ccStepsConn, raw_methodConn, raw_imagenumConn, raw_dcb_iterationsConn, raw_lmmse_iterationsConn, raw_pixelshiftConn, raw_dcb_enhanceConn, raw_exposConn, raw_preserConn, raw_blackConn; @@ -146,7 +148,7 @@ public: void compositionToggled (); void metaToggled (); void rawToggled (); - void wavToggled (); + void advancedToggled (); }; #endif diff --git a/rtgui/ppversion.h b/rtgui/ppversion.h index d799be406..1eb54d68b 100644 --- a/rtgui/ppversion.h +++ b/rtgui/ppversion.h @@ -1,11 +1,15 @@ #pragma once // This number has to be incremented whenever the PP3 file format is modified or the behaviour of a tool changes -#define PPVERSION 328 +#define PPVERSION 330 #define PPVERSION_AEXP 301 //value of PPVERSION when auto exposure algorithm was modified /* Log of version changes + 330 2018-20-01 + Added 'Auto-matched Tone Curve' button, performing histogram matching + 329 2017-12-09 + Added 'Enabled' flag for Channel Mixer, RGB Curves, HSV Equalizer and L*a*b* Adjustments 328 2017-11-22 Fix wrong type of ff_clipControl 327 2017-09-15 diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index 7e6018ff0..bb60aba90 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -187,6 +187,14 @@ Gtk::Widget* Preferences::getBatchProcPanel () appendBehavList (mi, M ("TP_EXPOSURE_CONTRAST"), ADDSET_TC_CONTRAST, false); appendBehavList (mi, M ("TP_EXPOSURE_SATURATION"), ADDSET_TC_SATURATION, false); + mi = behModel->append(); + mi->set_value(behavColumns.label, M("TP_LOCALCONTRAST_LABEL")); + appendBehavList(mi, M("TP_LOCALCONTRAST_RADIUS"), ADDSET_LOCALCONTRAST_RADIUS, false); + appendBehavList(mi, M("TP_LOCALCONTRAST_AMOUNT"), ADDSET_LOCALCONTRAST_AMOUNT, false); + appendBehavList(mi, M("TP_LOCALCONTRAST_DARKNESS"), ADDSET_LOCALCONTRAST_DARKNESS, false); + appendBehavList(mi, M("TP_LOCALCONTRAST_LIGHTNESS"), ADDSET_LOCALCONTRAST_LIGHTNESS, false); + + mi = behModel->append (); mi->set_value (behavColumns.label, M ("TP_EPD_LABEL")); appendBehavList (mi, M ("TP_EPD_STRENGTH"), ADDSET_EPD_STRENGTH, false); @@ -197,8 +205,8 @@ Gtk::Widget* Preferences::getBatchProcPanel () mi = behModel->append (); mi->set_value (behavColumns.label, M ("TP_TM_FATTAL_LABEL")); - appendBehavList (mi, M ("TP_TM_FATTAL_ALPHA"), ADDSET_FATTAL_ALPHA, false); - appendBehavList (mi, M ("TP_TM_FATTAL_BETA"), ADDSET_FATTAL_BETA, false); + appendBehavList (mi, M ("TP_TM_FATTAL_THRESHOLD"), ADDSET_FATTAL_ALPHA, false); + appendBehavList (mi, M ("TP_TM_FATTAL_AMOUNT"), ADDSET_FATTAL_BETA, false); mi = behModel->append (); mi->set_value (behavColumns.label, M ("TP_RETINEX_LABEL")); @@ -215,7 +223,6 @@ Gtk::Widget* Preferences::getBatchProcPanel () mi->set_value (behavColumns.label, M ("TP_SHADOWSHLIGHTS_LABEL")); appendBehavList (mi, M ("TP_SHADOWSHLIGHTS_HIGHLIGHTS"), ADDSET_SH_HIGHLIGHTS, false); appendBehavList (mi, M ("TP_SHADOWSHLIGHTS_SHADOWS"), ADDSET_SH_SHADOWS, false); - appendBehavList (mi, M ("TP_SHADOWSHLIGHTS_LOCALCONTR"), ADDSET_SH_LOCALCONTRAST, false); mi = behModel->append (); mi->set_value (behavColumns.label, M ("TP_LABCURVE_LABEL")); @@ -575,13 +582,21 @@ Gtk::Widget* Preferences::getProcParamsPanel () cdf->add(*dirgrid); mvbpp->pack_start (*cdf, Gtk::PACK_SHRINK, 4 ); - // Metadata - Gtk::Frame* fmd = Gtk::manage (new Gtk::Frame (M ("PREFERENCES_METADATA"))); - Gtk::VBox* vbmd = Gtk::manage (new Gtk::VBox ()); - ckbTunnelMetaData = Gtk::manage (new Gtk::CheckButton (M ("PREFERENCES_TUNNELMETADATA"))); - vbmd->pack_start (*ckbTunnelMetaData, Gtk::PACK_SHRINK, 4); - fmd->add (*vbmd); - mvbpp->pack_start (*fmd, Gtk::PACK_SHRINK, 4); + // Crop + Gtk::Frame *cropframe = Gtk::manage(new Gtk::Frame(M("PREFERENCES_CROP"))); + Gtk::VBox *cropvb = Gtk::manage(new Gtk::VBox()); + Gtk::HBox *crophb = Gtk::manage(new Gtk::HBox()); + cropGuides = Gtk::manage(new Gtk::ComboBoxText()); + cropGuides->append(M("PREFERENCES_CROP_GUIDES_NONE")); + cropGuides->append(M("PREFERENCES_CROP_GUIDES_FRAME")); + cropGuides->append(M("PREFERENCES_CROP_GUIDES_FULL")); + crophb->pack_start(*Gtk::manage(new Gtk::Label(M("PREFERENCES_CROP_GUIDES") + ": ")), Gtk::PACK_SHRINK, 4); + crophb->pack_start(*cropGuides); + cropvb->pack_start(*crophb); + cropAutoFit = Gtk::manage(new Gtk::CheckButton(M("PREFERENCES_CROP_AUTO_FIT"))); + cropvb->pack_start(*cropAutoFit); + cropframe->add(*cropvb); + mvbpp->pack_start(*cropframe, Gtk::PACK_SHRINK, 4); return mvbpp; } @@ -742,8 +757,12 @@ Gtk::Widget* Preferences::getColorManagementPanel () setExpandAlignProperties (iccdgrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_FILL); iccdgrid->set_column_spacing (4); + Gtk::Label* monProfileRestartNeeded = Gtk::manage ( new Gtk::Label (Glib::ustring (" (") + M ("PREFERENCES_APPLNEXTSTARTUP") + ")") ); + setExpandAlignProperties(monProfileRestartNeeded, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + iccdgrid->attach (*pdlabel, 0, 0, 1, 1); iccdgrid->attach (*iccDir, 1, 0, 1, 1); + iccdgrid->attach (*monProfileRestartNeeded, 2, 0, 1, 1); iccDir->signal_selection_changed ().connect (sigc::mem_fun (this, &Preferences::iccDirChanged)); @@ -1003,6 +1022,11 @@ Gtk::Widget* Preferences::getGeneralPanel () setExpandAlignProperties (hb4label, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); ckbHideTPVScrollbar = Gtk::manage ( new Gtk::CheckButton (M ("PREFERENCES_TP_VSCROLLBAR")) ); setExpandAlignProperties (ckbHideTPVScrollbar, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); +#if defined(__linux__) && ((GTK_MAJOR_VERSION == 3 && GTK_MINOR_VERSION > 18) || GTK_MAJOR_VERSION > 3) + // Cannot scroll toolbox with mousewheel when HideTPVScrollbar=true #3413 + ckbHideTPVScrollbar->set_active(false); + ckbHideTPVScrollbar->set_sensitive(false); +#endif ckbUseIconNoText = Gtk::manage ( new Gtk::CheckButton (M ("PREFERENCES_TP_USEICONORTEXT")) ); setExpandAlignProperties (ckbUseIconNoText, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); workflowGrid->attach_next_to (*hb4label, *ckbFileBrowserToolbarSingleRow, Gtk::POS_BOTTOM, 1, 1); @@ -1798,8 +1822,6 @@ void Preferences::storePreferences () moptions.paramsLoadLocation = (PPLoadLocation)loadParamsPreference->get_active_row_number (); moptions.useBundledProfiles = useBundledProfiles->get_active (); - moptions.tunnelMetaData = ckbTunnelMetaData->get_active (); - moptions.rtSettings.darkFramesPath = darkFrameDir->get_filename(); moptions.rtSettings.flatFieldsPath = flatFieldDir->get_filename(); @@ -1838,6 +1860,9 @@ void Preferences::storePreferences () moptions.sndLngEditProcDone = txtSndLngEditProcDone->get_text (); moptions.sndLngEditProcDoneSecs = spbSndLngEditProcDoneSecs->get_value (); #endif + + moptions.cropGuides = Options::CropGuidesMode(cropGuides->get_active_row_number()); + moptions.cropAutoFit = cropAutoFit->get_active(); } void Preferences::fillPreferences () @@ -2027,8 +2052,6 @@ void Preferences::fillPreferences () loadParamsPreference->set_active (moptions.paramsLoadLocation); useBundledProfiles->set_active (moptions.useBundledProfiles); - ckbTunnelMetaData->set_active (moptions.tunnelMetaData); - if (!moptions.tabbedUI) { editorLayout->set_active (moptions.mainNBVertical ? 1 : 0); } else { @@ -2070,6 +2093,9 @@ void Preferences::fillPreferences () } } + cropGuides->set_active(moptions.cropGuides); + cropAutoFit->set_active(moptions.cropAutoFit); + addc.block (false); setc.block (false); cpfconn.block (false); diff --git a/rtgui/preferences.h b/rtgui/preferences.h index 70cef4bee..cb0e6c709 100644 --- a/rtgui/preferences.h +++ b/rtgui/preferences.h @@ -188,7 +188,6 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener Gtk::Entry* txtSndLngEditProcDone; Gtk::SpinButton* spbSndLngEditProcDoneSecs; - Gtk::CheckButton* ckbTunnelMetaData; Gtk::CheckButton* ckbInternalThumbIfUntouched; Gtk::Entry* txtCustProfBuilderPath; @@ -205,6 +204,9 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener DynamicProfilePanel *dynProfilePanel; + Gtk::ComboBoxText *cropGuides; + Gtk::CheckButton *cropAutoFit; + Glib::ustring storedValueRaw; Glib::ustring storedValueImg; diff --git a/rtgui/previewwindow.cc b/rtgui/previewwindow.cc index cd4e0c75c..06ce3ad18 100644 --- a/rtgui/previewwindow.cc +++ b/rtgui/previewwindow.cc @@ -86,7 +86,18 @@ void PreviewWindow::updatePreviewImage () cc->fill(); if (previewHandler->getCropParams().enabled) { - drawCrop (cc, imgX, imgY, imgW, imgH, 0, 0, zoom, previewHandler->getCropParams(), true, false); + rtengine::CropParams cparams = previewHandler->getCropParams(); + switch (options.cropGuides) { + case Options::CROP_GUIDE_NONE: + cparams.guide = "None"; + break; + case Options::CROP_GUIDE_FRAME: + cparams.guide = "Frame"; + break; + default: + break; + } + drawCrop (cc, imgX, imgY, imgW, imgH, 0, 0, zoom, cparams, true, false); } } } diff --git a/rtgui/rgbcurves.cc b/rtgui/rgbcurves.cc index d9c970f7a..d32633bf4 100644 --- a/rtgui/rgbcurves.cc +++ b/rtgui/rgbcurves.cc @@ -21,7 +21,7 @@ using namespace rtengine; using namespace rtengine::procparams; -RGBCurves::RGBCurves () : FoldableToolPanel(this, "rgbcurves", M("TP_RGBCURVES_LABEL")) +RGBCurves::RGBCurves () : FoldableToolPanel(this, "rgbcurves", M("TP_RGBCURVES_LABEL"), false, true) { lumamode = Gtk::manage (new Gtk::CheckButton (M("TP_RGBCURVES_LUMAMODE"))); @@ -84,6 +84,7 @@ void RGBCurves::read (const ProcParams* pp, const ParamsEdited* pedited) Gshape->setUnChanged (!pedited->rgbCurves.gcurve); Bshape->setUnChanged (!pedited->rgbCurves.bcurve); lumamode->set_inconsistent (!pedited->rgbCurves.lumamode); + set_inconsistent(multiImage && !pedited->rgbCurves.enabled); } lumamodeConn.block (true); @@ -96,6 +97,8 @@ void RGBCurves::read (const ProcParams* pp, const ParamsEdited* pedited) Gshape->setCurve (pp->rgbCurves.gcurve); Bshape->setCurve (pp->rgbCurves.bcurve); + setEnabled(pp->rgbCurves.enabled); + enableListener (); } @@ -122,13 +125,14 @@ void RGBCurves::autoOpenCurve () void RGBCurves::write (ProcParams* pp, ParamsEdited* pedited) { - + pp->rgbCurves.enabled = getEnabled(); pp->rgbCurves.rcurve = Rshape->getCurve (); pp->rgbCurves.gcurve = Gshape->getCurve (); pp->rgbCurves.bcurve = Bshape->getCurve (); pp->rgbCurves.lumamode = lumamode->get_active(); if (pedited) { + pedited->rgbCurves.enabled = !get_inconsistent(); pedited->rgbCurves.rcurve = !Rshape->isUnChanged (); pedited->rgbCurves.gcurve = !Gshape->isUnChanged (); pedited->rgbCurves.bcurve = !Bshape->isUnChanged (); @@ -146,7 +150,7 @@ void RGBCurves::write (ProcParams* pp, ParamsEdited* pedited) void RGBCurves::curveChanged (CurveEditor* ce) { - if (listener) { + if (listener && getEnabled()) { if (ce == Rshape) { listener->panelChanged (EvRGBrCurve, M("HISTORY_CUSTOMCURVE")); } @@ -177,7 +181,7 @@ void RGBCurves::lumamodeChanged () lastLumamode = lumamode->get_active (); } - if (listener) { + if (listener && getEnabled()) { if (lumamode->get_active ()) { listener->panelChanged (EvRGBrCurveLumamode, M("GENERAL_ENABLED")); } else { @@ -202,3 +206,16 @@ void RGBCurves::updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & his // Bshape->updateBackgroundHistogram (histBlue); } + +void RGBCurves::enabledChanged() +{ + if (listener) { + if (get_inconsistent()) { + listener->panelChanged(EvRGBEnabled, M("GENERAL_UNCHANGED")); + } else if (getEnabled()) { + listener->panelChanged(EvRGBEnabled, M("GENERAL_ENABLED")); + } else { + listener->panelChanged(EvRGBEnabled, M("GENERAL_DISABLED")); + } + } +} diff --git a/rtgui/rgbcurves.h b/rtgui/rgbcurves.h index efca76422..dfcba71f9 100644 --- a/rtgui/rgbcurves.h +++ b/rtgui/rgbcurves.h @@ -53,6 +53,7 @@ public: void curveChanged (CurveEditor* ce); void updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, /*LUTu & histCLurve, LUTu & histLLCurve,*/ LUTu & histLCAM, LUTu & histCCAM, LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma, LUTu & histLRETI); void lumamodeChanged (); + void enabledChanged(); }; #endif diff --git a/rtgui/saveformatpanel.cc b/rtgui/saveformatpanel.cc index 13e687595..fef05de23 100644 --- a/rtgui/saveformatpanel.cc +++ b/rtgui/saveformatpanel.cc @@ -40,14 +40,16 @@ SaveFormatPanel::SaveFormatPanel () : listener (nullptr) format->append ("JPEG (8 bit)"); format->append ("TIFF (8 bit)"); format->append ("TIFF (16 bit)"); + format->append ("TIFF (32 bit float)"); format->append ("PNG (8 bit)"); format->append ("PNG (16 bit)"); fstr[0] = "jpg"; fstr[1] = "tif"; fstr[2] = "tif"; - fstr[3] = "png"; + fstr[3] = "tif"; fstr[4] = "png"; + fstr[5] = "png"; hb1->attach (*flab, 0, 0, 1, 1); hb1->attach (*format, 1, 0, 1, 1); @@ -121,8 +123,10 @@ void SaveFormatPanel::init (SaveFormat &sf) if (sf.format == "jpg") { format->set_active (0); } else if (sf.format == "png" && sf.pngBits == 16) { - format->set_active (4); + format->set_active (5); } else if (sf.format == "png" && sf.pngBits == 8) { + format->set_active (4); + } else if (sf.format == "tif" && sf.tiffBits == 32) { format->set_active (3); } else if (sf.format == "tif" && sf.tiffBits == 16) { format->set_active (2); @@ -146,7 +150,7 @@ SaveFormat SaveFormatPanel::getFormat () int sel = format->get_active_row_number(); sf.format = fstr[sel]; - if (sel == 4) { + if (sel == 5) { sf.pngBits = 16; } else { sf.pngBits = 8; @@ -154,6 +158,8 @@ SaveFormat SaveFormatPanel::getFormat () if (sel == 2) { sf.tiffBits = 16; + } else if (sel == 3) { + sf.tiffBits = 32; } else { sf.tiffBits = 8; } diff --git a/rtgui/saveformatpanel.h b/rtgui/saveformatpanel.h index 76ae7055d..8dc493051 100644 --- a/rtgui/saveformatpanel.h +++ b/rtgui/saveformatpanel.h @@ -44,7 +44,7 @@ protected: Gtk::Grid* jpegOpts; Gtk::Label* jpegSubSampLabel; FormatChangeListener* listener; - Glib::ustring fstr[5]; + Glib::ustring fstr[6]; Gtk::CheckButton* savesPP; diff --git a/rtgui/shadowshighlights.cc b/rtgui/shadowshighlights.cc index 39dcf6429..8c701dae6 100644 --- a/rtgui/shadowshighlights.cc +++ b/rtgui/shadowshighlights.cc @@ -44,11 +44,6 @@ ShadowsHighlights::ShadowsHighlights () : FoldableToolPanel(this, "shadowshighli pack_start (*Gtk::manage (new Gtk::HSeparator())); - lcontrast = Gtk::manage (new Adjuster (M("TP_SHADOWSHLIGHTS_LOCALCONTR"), 0, 100, 1, 0)); - pack_start (*lcontrast); - - pack_start (*Gtk::manage (new Gtk::HSeparator())); - radius = Gtk::manage (new Adjuster (M("TP_SHADOWSHLIGHTS_RADIUS"), 5, 100, 1, 30)); pack_start (*radius); @@ -57,7 +52,6 @@ ShadowsHighlights::ShadowsHighlights () : FoldableToolPanel(this, "shadowshighli h_tonalwidth->setAdjusterListener (this); shadows->setAdjusterListener (this); s_tonalwidth->setAdjusterListener (this); - lcontrast->setAdjusterListener (this); show_all_children (); } @@ -69,7 +63,6 @@ void ShadowsHighlights::read (const ProcParams* pp, const ParamsEdited* pedited) if (pedited) { radius->setEditedState (pedited->sh.radius ? Edited : UnEdited); - lcontrast->setEditedState (pedited->sh.localcontrast ? Edited : UnEdited); highlights->setEditedState (pedited->sh.highlights ? Edited : UnEdited); h_tonalwidth->setEditedState (pedited->sh.htonalwidth ? Edited : UnEdited); shadows->setEditedState (pedited->sh.shadows ? Edited : UnEdited); @@ -87,7 +80,6 @@ void ShadowsHighlights::read (const ProcParams* pp, const ParamsEdited* pedited) lastHQ = pp->sh.hq; radius->setValue (pp->sh.radius); - lcontrast->setValue (pp->sh.localcontrast); highlights->setValue (pp->sh.highlights); h_tonalwidth->setValue (pp->sh.htonalwidth); shadows->setValue (pp->sh.shadows); @@ -100,7 +92,6 @@ void ShadowsHighlights::write (ProcParams* pp, ParamsEdited* pedited) { pp->sh.radius = (int)radius->getValue (); - pp->sh.localcontrast = (int)lcontrast->getValue (); pp->sh.highlights = (int)highlights->getValue (); pp->sh.htonalwidth = (int)h_tonalwidth->getValue (); pp->sh.shadows = (int)shadows->getValue (); @@ -110,7 +101,6 @@ void ShadowsHighlights::write (ProcParams* pp, ParamsEdited* pedited) if (pedited) { pedited->sh.radius = radius->getEditedState (); - pedited->sh.localcontrast = lcontrast->getEditedState (); pedited->sh.highlights = highlights->getEditedState (); pedited->sh.htonalwidth = h_tonalwidth->getEditedState (); pedited->sh.shadows = shadows->getEditedState (); @@ -124,7 +114,6 @@ void ShadowsHighlights::setDefaults (const ProcParams* defParams, const ParamsEd { radius->setDefault (defParams->sh.radius); - lcontrast->setDefault (defParams->sh.localcontrast); highlights->setDefault (defParams->sh.highlights); h_tonalwidth->setDefault (defParams->sh.htonalwidth); shadows->setDefault (defParams->sh.shadows); @@ -132,14 +121,12 @@ void ShadowsHighlights::setDefaults (const ProcParams* defParams, const ParamsEd if (pedited) { radius->setDefaultEditedState (pedited->sh.radius ? Edited : UnEdited); - lcontrast->setDefaultEditedState (pedited->sh.localcontrast ? Edited : UnEdited); highlights->setDefaultEditedState (pedited->sh.highlights ? Edited : UnEdited); h_tonalwidth->setDefaultEditedState (pedited->sh.htonalwidth ? Edited : UnEdited); shadows->setDefaultEditedState (pedited->sh.shadows ? Edited : UnEdited); s_tonalwidth->setDefaultEditedState (pedited->sh.stonalwidth ? Edited : UnEdited); } else { radius->setDefaultEditedState (Irrelevant); - lcontrast->setDefaultEditedState (Irrelevant); highlights->setDefaultEditedState (Irrelevant); h_tonalwidth->setDefaultEditedState (Irrelevant); shadows->setDefaultEditedState (Irrelevant); @@ -164,8 +151,6 @@ void ShadowsHighlights::adjusterChanged (Adjuster* a, double newval) listener->panelChanged (EvSHSHTonalW, costr); } else if (a == radius) { listener->panelChanged (EvSHRadius, costr); - } else if (a == lcontrast) { - listener->panelChanged (EvSHLContrast, costr); } } } @@ -214,19 +199,17 @@ void ShadowsHighlights::setBatchMode (bool batchMode) ToolPanel::setBatchMode (batchMode); radius->showEditedCB (); - lcontrast->showEditedCB (); highlights->showEditedCB (); h_tonalwidth->showEditedCB (); shadows->showEditedCB (); s_tonalwidth->showEditedCB (); } -void ShadowsHighlights::setAdjusterBehavior (bool hadd, bool sadd, bool lcadd) +void ShadowsHighlights::setAdjusterBehavior (bool hadd, bool sadd) { highlights->setAddMode(hadd); shadows->setAddMode(sadd); - lcontrast->setAddMode(lcadd); } void ShadowsHighlights::trimValues (rtengine::procparams::ProcParams* pp) @@ -234,5 +217,4 @@ void ShadowsHighlights::trimValues (rtengine::procparams::ProcParams* pp) highlights->trimValue(pp->sh.highlights); shadows->trimValue(pp->sh.shadows); - lcontrast->trimValue(pp->sh.localcontrast); } diff --git a/rtgui/shadowshighlights.h b/rtgui/shadowshighlights.h index 167b1ecf1..de3f893d5 100644 --- a/rtgui/shadowshighlights.h +++ b/rtgui/shadowshighlights.h @@ -31,7 +31,6 @@ protected: Adjuster* h_tonalwidth; Adjuster* shadows; Adjuster* s_tonalwidth; - Adjuster* lcontrast; Adjuster* radius; Gtk::CheckButton* hq; bool lastHQ; @@ -50,7 +49,7 @@ public: void enabledChanged (); void hqChanged (); - void setAdjusterBehavior (bool hadd, bool sadd, bool lcadd); + void setAdjusterBehavior (bool hadd, bool sadd); void trimValues (rtengine::procparams::ProcParams* pp); }; diff --git a/rtgui/tonecurve.cc b/rtgui/tonecurve.cc index a9dd35466..07822f857 100644 --- a/rtgui/tonecurve.cc +++ b/rtgui/tonecurve.cc @@ -22,12 +22,16 @@ #include #include "ppversion.h" #include "edit.h" +#include "eventmapper.h" using namespace rtengine; using namespace rtengine::procparams; ToneCurve::ToneCurve () : FoldableToolPanel(this, "tonecurve", M("TP_EXPOSURE_LABEL")) { + auto m = ProcEventMapper::getInstance(); + EvHistMatching = m->newEvent(AUTOEXP, "HISTORY_MSG_HISTMATCHING"); + EvHistMatchingBatch = m->newEvent(M_VOID, "HISTORY_MSG_HISTMATCHING"); CurveListener::setMulti(true); @@ -122,6 +126,11 @@ ToneCurve::ToneCurve () : FoldableToolPanel(this, "tonecurve", M("TP_EXPOSURE_LA //----------- Curve 1 ------------------------------ pack_start (*Gtk::manage (new Gtk::HSeparator())); + histmatching = Gtk::manage(new Gtk::ToggleButton(M("TP_EXPOSURE_HISTMATCHING"))); + histmatching->set_tooltip_markup(M("TP_EXPOSURE_HISTMATCHING_TOOLTIP")); + histmatchconn = histmatching->signal_toggled().connect(sigc::mem_fun(*this, &ToneCurve::histmatchingToggled)); + pack_start(*histmatching, true, true, 2); + toneCurveMode = Gtk::manage (new MyComboBoxText ()); toneCurveMode->append (M("TP_EXPOSURE_TCMODE_STANDARD")); toneCurveMode->append (M("TP_EXPOSURE_TCMODE_WEIGHTEDSTD")); @@ -226,6 +235,8 @@ void ToneCurve::read (const ProcParams* pp, const ParamsEdited* pedited) toneCurveMode->set_active(rtengine::toUnderlying(pp->toneCurve.curveMode)); toneCurveMode2->set_active(rtengine::toUnderlying(pp->toneCurve.curveMode2)); + histmatching->set_active(pp->toneCurve.histmatching); + if (pedited) { expcomp->setEditedState (pedited->toneCurve.expcomp ? Edited : UnEdited); black->setEditedState (pedited->toneCurve.black ? Edited : UnEdited); @@ -248,6 +259,8 @@ void ToneCurve::read (const ProcParams* pp, const ParamsEdited* pedited) if (!pedited->toneCurve.curveMode2) { toneCurveMode2->set_active(6); } + + histmatching->set_inconsistent(!pedited->toneCurve.histmatching); } enaconn.block (true); @@ -343,6 +356,8 @@ void ToneCurve::write (ProcParams* pp, ParamsEdited* pedited) pp->toneCurve.curveMode2 = ToneCurveParams::TcMode::PERCEPTUAL; } + pp->toneCurve.histmatching = histmatching->get_active(); + if (pedited) { pedited->toneCurve.expcomp = expcomp->getEditedState (); pedited->toneCurve.black = black->getEditedState (); @@ -360,6 +375,7 @@ void ToneCurve::write (ProcParams* pp, ParamsEdited* pedited) pedited->toneCurve.curveMode2 = toneCurveMode2->get_active_row_number() != 6; pedited->toneCurve.method = method->get_active_row_number() != 4; pedited->toneCurve.hrenabled = !hrenabled->get_inconsistent(); + pedited->toneCurve.histmatching = !histmatching->get_inconsistent(); } pp->toneCurve.hrenabled = hrenabled->get_active(); @@ -408,6 +424,8 @@ void ToneCurve::hrenabledChanged () autolevels->set_inconsistent (false); } + setHistmatching(false); + if (hrenabled->get_active ()) { listener->panelChanged (EvHREnabled, M("GENERAL_ENABLED")); } else { @@ -419,6 +437,7 @@ void ToneCurve::methodChanged () { if (listener) { + setHistmatching(false); if (hrenabled->get_active ()) { listener->panelChanged (EvHRMethod, method->get_active_text ()); } @@ -430,6 +449,7 @@ void ToneCurve::setRaw (bool raw) disableListener (); method->set_sensitive (raw); hrenabled->set_sensitive (raw); + histmatching->set_sensitive(raw); enableListener (); } @@ -471,6 +491,7 @@ void ToneCurve::curveChanged (CurveEditor* ce) { if (listener) { + setHistmatching(false); if (ce == shape) { listener->panelChanged (EvToneCurve1, M("HISTORY_CUSTOMCURVE")); } else if (ce == shape2) { @@ -483,6 +504,7 @@ void ToneCurve::curveMode1Changed () { //if (listener) listener->panelChanged (EvToneCurveMode, toneCurveMode->get_active_text()); if (listener) { + setHistmatching(false); Glib::signal_idle().connect (sigc::mem_fun(*this, &ToneCurve::curveMode1Changed_)); } } @@ -500,6 +522,7 @@ void ToneCurve::curveMode2Changed () { //if (listener) listener->panelChanged (EvToneCurveMode, toneCurveMode->get_active_text()); if (listener) { + setHistmatching(false); Glib::signal_idle().connect (sigc::mem_fun(*this, &ToneCurve::curveMode2Changed_)); } } @@ -544,6 +567,10 @@ void ToneCurve::adjusterChanged (Adjuster* a, double newval) return; } + if (a != expcomp && a != hlcompr && a != hlcomprthresh) { + setHistmatching(false); + } + Glib::ustring costr; if (a == expcomp) { @@ -580,6 +607,8 @@ void ToneCurve::neutral_pressed () // This method deselects auto levels and HL reconstruction auto // and sets neutral values to params in exposure panel + setHistmatching(false); + if (batchMode) { autolevels->set_inconsistent (false); autoconn.block (true); @@ -617,6 +646,7 @@ void ToneCurve::neutral_pressed () } void ToneCurve::autolevels_toggled () { + setHistmatching(false); if (batchMode) { if (autolevels->get_inconsistent()) { @@ -727,6 +757,7 @@ void ToneCurve::waitForAutoExp () toneCurveMode2->set_sensitive (false); hrenabled->set_sensitive(false); method->set_sensitive(false); + histmatching->set_sensitive(false); } void ToneCurve::autoExpChanged (double expcomp, int bright, int contr, int black, int hlcompr, int hlcomprthresh, bool hlrecons) @@ -766,6 +797,7 @@ void ToneCurve::enableAll () toneCurveMode2->set_sensitive (true); hrenabled->set_sensitive(true); method->set_sensitive(true); + histmatching->set_sensitive(true); } bool ToneCurve::autoExpComputed_ () @@ -858,3 +890,79 @@ void ToneCurve::updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & his shape->updateBackgroundHistogram (histToneCurve); } + + +void ToneCurve::setHistmatching(bool enabled) +{ + if (histmatching->get_active()) { + histmatchconn.block(true); + histmatching->set_active(enabled); + histmatchconn.block(false); + histmatching->set_inconsistent(false); + } +} + + +void ToneCurve::histmatchingToggled() +{ + if (listener) { + if (!batchMode) { + if (histmatching->get_active()) { + listener->panelChanged(EvHistMatching, M("GENERAL_ENABLED")); + waitForAutoExp(); + } else { + listener->panelChanged(EvHistMatching, M("GENERAL_DISABLED")); + } + } else { + listener->panelChanged(EvHistMatchingBatch, histmatching->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); + } + } +} + + +void ToneCurve::autoMatchedToneCurveChanged(rtengine::procparams::ToneCurveParams::TcMode curveMode, const std::vector &curve) +{ + nextToneCurveMode = curveMode; + nextToneCurve = curve; + + const auto func = [](gpointer data) -> gboolean { + static_cast(data)->histmatchingComputed(); + + return FALSE; + }; + + idle_register.add(func, this); +} + + +bool ToneCurve::histmatchingComputed() +{ + GThreadLock lock; + disableListener(); + enableAll(); + brightness->setValue(0); + contrast->setValue(0); + black->setValue(0); + hlcompr->setValue(0); + + if (!black->getAddMode()) { + shcompr->set_sensitive(!((int)black->getValue() == 0)); + } + + if (autolevels->get_active() ) { + expcomp->setValue(0); + autoconn.block(true); + autolevels->set_active(false); + autoconn.block(false); + autolevels->set_inconsistent(false); + } + + toneCurveMode->set_active(rtengine::toUnderlying(nextToneCurveMode)); + shape->setCurve(nextToneCurve); + shape2->setCurve({ DCT_Linear }); + shape->openIfNonlinear(); + + enableListener(); + + return false; +} diff --git a/rtgui/tonecurve.h b/rtgui/tonecurve.h index 11ec64b96..e85fefa39 100644 --- a/rtgui/tonecurve.h +++ b/rtgui/tonecurve.h @@ -57,14 +57,19 @@ protected: Adjuster* saturation; MyComboBoxText* toneCurveMode; MyComboBoxText* toneCurveMode2; + Gtk::ToggleButton *histmatching; bool clipDirty, lastAuto; sigc::connection autoconn, neutralconn, tcmodeconn, tcmode2conn; + sigc::connection histmatchconn; CurveEditorGroup* curveEditorG; CurveEditorGroup* curveEditorG2; DiagonalCurveEditor* shape; DiagonalCurveEditor* shape2; + rtengine::ProcEvent EvHistMatching; + rtengine::ProcEvent EvHistMatchingBatch; + // used temporarily in eventing double nextExpcomp; int nextBrightness; @@ -73,6 +78,10 @@ protected: int nextHlcompr; int nextHlcomprthresh; bool nextHLRecons; + rtengine::procparams::ToneCurveParams::TcMode nextToneCurveMode; + std::vector nextToneCurve; + + void setHistmatching(bool enabled); public: ToneCurve (); @@ -107,6 +116,10 @@ public: bool isCurveExpanded (); void updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve,/* LUTu & histCLurve, LUTu & histLLCurve,*/ LUTu & histLCAM, LUTu & histCCAM, LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma, LUTu & histLRETI); + void histmatchingToggled(); + void autoMatchedToneCurveChanged(rtengine::procparams::ToneCurveParams::TcMode curveMode, const std::vector &curve); + bool histmatchingComputed(); + void setRaw (bool raw); void hrenabledChanged (); diff --git a/rtgui/toolpanel.h b/rtgui/toolpanel.h index d5814c040..d3d7439a9 100644 --- a/rtgui/toolpanel.h +++ b/rtgui/toolpanel.h @@ -88,7 +88,7 @@ public: { multiImage = m; } - void setListener (ToolPanelListener* tpl) + virtual void setListener (ToolPanelListener* tpl) { listener = tpl; } diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index 908d43520..8233779ce 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -36,11 +36,12 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan colorPanel = Gtk::manage (new ToolVBox ()); transformPanel = Gtk::manage (new ToolVBox ()); rawPanel = Gtk::manage (new ToolVBox ()); - waveletPanel = Gtk::manage (new ToolVBox ()); + advancedPanel = Gtk::manage (new ToolVBox ()); coarse = Gtk::manage (new CoarsePanel ()); toneCurve = Gtk::manage (new ToneCurve ()); shadowshighlights = Gtk::manage (new ShadowsHighlights ()); + localContrast = Gtk::manage(new LocalContrast()); impulsedenoise = Gtk::manage (new ImpulseDenoise ()); defringe = Gtk::manage (new Defringe ()); spot = Gtk::manage (new Spot ()); @@ -71,10 +72,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan prsharpening = Gtk::manage (new PrSharpening()); crop = Gtk::manage (new Crop ()); icm = Gtk::manage (new ICMPanel ()); - if(!batch) { - exifpanel = Gtk::manage (new ExifPanel ()); - iptcpanel = Gtk::manage (new IPTCPanel ()); - } + metadata = Gtk::manage(new MetaDataPanel()); wavelet = Gtk::manage (new Wavelet ()); dirpyrequalizer = Gtk::manage (new DirPyrEqualizer ()); hsvequalizer = Gtk::manage (new HSVEqualizer ()); @@ -107,6 +105,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan addPanel (colorPanel, vibrance); addPanel (colorPanel, chmixer); addPanel (colorPanel, blackwhite); + addPanel (exposurePanel, localContrast); addPanel (exposurePanel, shadowshighlights); addPanel (detailsPanel, spot); addPanel (detailsPanel, sharpening); @@ -118,16 +117,16 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan addPanel (colorPanel, colortoning); addPanel (exposurePanel, epd); addPanel (exposurePanel, fattal); - addPanel (exposurePanel, retinex); + addPanel (advancedPanel, retinex); addPanel (exposurePanel, pcvignette); addPanel (exposurePanel, gradient); addPanel (exposurePanel, lcurve); - addPanel (exposurePanel, colorappearance); + addPanel (advancedPanel, colorappearance); addPanel (detailsPanel, impulsedenoise); addPanel (detailsPanel, dirpyrdenoise); addPanel (detailsPanel, defringe); addPanel (detailsPanel, dirpyrequalizer); - addPanel (waveletPanel, wavelet); + addPanel (advancedPanel, wavelet); addPanel (transformPanel, crop); addPanel (transformPanel, resize); addPanel (resize->getPackBox(), prsharpening, 2); @@ -153,17 +152,8 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan addPanel (rawPanel, flatfield); toolPanels.push_back (coarse); + toolPanels.push_back(metadata); - if(!batch) { - toolPanels.push_back (exifpanel); - toolPanels.push_back (iptcpanel); - metadataPanel = Gtk::manage (new Gtk::Notebook ()); - metadataPanel->set_name ("MetaPanelNotebook"); - metadataPanel->append_page (*exifpanel, M ("MAIN_TAB_EXIF")); - metadataPanel->append_page (*iptcpanel, M ("MAIN_TAB_IPTC")); - } else { - metadataPanel = nullptr; - } toolPanelNotebook = new Gtk::Notebook (); toolPanelNotebook->set_name ("ToolPanelNotebook"); @@ -173,7 +163,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan colorPanelSW = Gtk::manage (new MyScrolledWindow ()); transformPanelSW = Gtk::manage (new MyScrolledWindow ()); rawPanelSW = Gtk::manage (new MyScrolledWindow ()); - waveletPanelSW = Gtk::manage (new MyScrolledWindow ()); + advancedPanelSW = Gtk::manage (new MyScrolledWindow ()); updateVScrollbars (options.hideTPVScrollbar); // load panel endings @@ -197,9 +187,9 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan colorPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); colorPanel->pack_start (*vbPanelEnd[2], Gtk::PACK_SHRINK, 4); - waveletPanelSW->add (*waveletPanel); - waveletPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); - waveletPanel->pack_start (*vbPanelEnd[5], Gtk::PACK_SHRINK, 0); + advancedPanelSW->add (*advancedPanel); + advancedPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); + advancedPanel->pack_start (*vbPanelEnd[5], Gtk::PACK_SHRINK, 0); transformPanelSW->add (*transformPanel); transformPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); @@ -216,24 +206,18 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan toiE = Gtk::manage (new TextOrIcon ("exposure.png", M ("MAIN_TAB_EXPOSURE"), M ("MAIN_TAB_EXPOSURE_TOOLTIP"), type)); toiD = Gtk::manage (new TextOrIcon ("detail.png", M ("MAIN_TAB_DETAIL"), M ("MAIN_TAB_DETAIL_TOOLTIP"), type)); toiC = Gtk::manage (new TextOrIcon ("colour.png", M ("MAIN_TAB_COLOR"), M ("MAIN_TAB_COLOR_TOOLTIP"), type)); - toiW = Gtk::manage (new TextOrIcon ("wavelet.png", M ("MAIN_TAB_WAVELET"), M ("MAIN_TAB_WAVELET_TOOLTIP"), type)); + toiW = Gtk::manage (new TextOrIcon ("atom.png", M ("MAIN_TAB_ADVANCED"), M ("MAIN_TAB_ADVANCED_TOOLTIP"), type)); toiT = Gtk::manage (new TextOrIcon ("transform.png", M ("MAIN_TAB_TRANSFORM"), M ("MAIN_TAB_TRANSFORM_TOOLTIP"), type)); toiR = Gtk::manage (new TextOrIcon ("raw.png", M ("MAIN_TAB_RAW"), M ("MAIN_TAB_RAW_TOOLTIP"), type)); - if(!batch) { - toiM = Gtk::manage (new TextOrIcon ("meta.png", M ("MAIN_TAB_METADATA"), M ("MAIN_TAB_METADATA_TOOLTIP"), type)); - } else { - toiM = nullptr; - } + toiM = Gtk::manage (new TextOrIcon ("meta.png", M ("MAIN_TAB_METADATA"), M ("MAIN_TAB_METADATA_TOOLTIP"), type)); toolPanelNotebook->append_page (*exposurePanelSW, *toiE); toolPanelNotebook->append_page (*detailsPanelSW, *toiD); toolPanelNotebook->append_page (*colorPanelSW, *toiC); - toolPanelNotebook->append_page (*waveletPanelSW, *toiW); + toolPanelNotebook->append_page (*advancedPanelSW, *toiW); toolPanelNotebook->append_page (*transformPanelSW, *toiT); toolPanelNotebook->append_page (*rawPanelSW, *toiR); - if(!batch) { - toolPanelNotebook->append_page (*metadataPanel, *toiM); - } + toolPanelNotebook->append_page (*metadata, *toiM); toolPanelNotebook->set_current_page (0); @@ -315,7 +299,7 @@ void ToolPanelCoordinator::panelChanged (rtengine::ProcEvent event, const Glib:: return; } - int changeFlags = refreshmap[ (int)event]; + int changeFlags = rtengine::RefreshMapper::getInstance()->getAction(event); ProcParams* params = ipc->beginUpdateParams (); @@ -327,7 +311,7 @@ void ToolPanelCoordinator::panelChanged (rtengine::ProcEvent event, const Glib:: if (event == rtengine::EvCTHFlip || event == rtengine::EvCTVFlip) { if (fabs (params->rotate.degree) > 0.001) { params->rotate.degree *= -1; - changeFlags |= refreshmap[ (int)rtengine::EvROTDegree]; + changeFlags |= rtengine::RefreshMapper::getInstance()->getAction(rtengine::EvROTDegree); rotate->read (params); } } @@ -446,7 +430,7 @@ void ToolPanelCoordinator::profileChange (const PartialProfile *nparams, rtengi // start the IPC processing if (filterRawRefresh) { - ipc->endUpdateParams ( refreshmap[ (int)event] & ALLNORAW ); + ipc->endUpdateParams ( rtengine::RefreshMapper::getInstance()->getAction(event) & ALLNORAW ); } else { ipc->endUpdateParams (event); } @@ -483,8 +467,7 @@ void ToolPanelCoordinator::initImage (rtengine::StagedImageProcessor* ipc_, bool if (ipc) { const rtengine::FramesMetaData* pMetaData = ipc->getInitialImage()->getMetaData(); - exifpanel->setImageData (pMetaData); - iptcpanel->setImageData (pMetaData); + metadata->setImageData(pMetaData); ipc->setAutoExpListener (toneCurve); ipc->setAutoCamListener (colorappearance); @@ -820,14 +803,12 @@ bool ToolPanelCoordinator::handleShortcutKey (GdkEventKey* event) return true; case GDK_KEY_w: - toolPanelNotebook->set_current_page (toolPanelNotebook->page_num (*waveletPanelSW)); + toolPanelNotebook->set_current_page (toolPanelNotebook->page_num (*advancedPanelSW)); return true; case GDK_KEY_m: - if (metadataPanel) { - toolPanelNotebook->set_current_page (toolPanelNotebook->page_num (*metadataPanel)); - return true; - } + toolPanelNotebook->set_current_page (toolPanelNotebook->page_num (*metadata)); + return true; } } @@ -843,7 +824,7 @@ void ToolPanelCoordinator::updateVScrollbars (bool hide) colorPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); transformPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); rawPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); - waveletPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); + advancedPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); for (auto currExp : expList) { currExp->updateVScrollbars (hide); diff --git a/rtgui/toolpanelcoord.h b/rtgui/toolpanelcoord.h index cc31c4e6c..2b6b101b7 100644 --- a/rtgui/toolpanelcoord.h +++ b/rtgui/toolpanelcoord.h @@ -38,8 +38,7 @@ #include "epd.h" #include "sharpening.h" #include "labcurve.h" -#include "exifpanel.h" -#include "iptcpanel.h" +#include "metadatapanel.h" #include "crop.h" #include "icmpanel.h" #include "resize.h" @@ -80,6 +79,7 @@ #include "filmsimulation.h" #include "prsharpening.h" #include "fattaltonemap.h" +#include "localcontrast.h" #include "guiutils.h" class ImageEditorCoordinator; @@ -121,6 +121,7 @@ protected: Crop* crop; ToneCurve* toneCurve; ShadowsHighlights* shadowshighlights; + LocalContrast *localContrast; Spot* spot; Defringe* defringe; ImpulseDenoise* impulsedenoise; @@ -149,6 +150,7 @@ protected: BayerRAWExposure* bayerrawexposure; XTransRAWExposure* xtransrawexposure; FattalToneMapping *fattal; + MetaDataPanel* metadata; std::vector paramcListeners; @@ -160,10 +162,7 @@ protected: ToolVBox* colorPanel; ToolVBox* transformPanel; ToolVBox* rawPanel; - ToolVBox* waveletPanel; - Gtk::Notebook* metadataPanel; - ExifPanel* exifpanel; - IPTCPanel* iptcpanel; + ToolVBox* advancedPanel; ToolBar* toolBar; TextOrIcon* toiE; @@ -182,7 +181,7 @@ protected: Gtk::ScrolledWindow* colorPanelSW; Gtk::ScrolledWindow* transformPanelSW; Gtk::ScrolledWindow* rawPanelSW; - Gtk::ScrolledWindow* waveletPanelSW; + Gtk::ScrolledWindow* advancedPanelSW; std::vector expList; diff --git a/rtgui/wavelet.cc b/rtgui/wavelet.cc index d3a594848..160abf07e 100644 --- a/rtgui/wavelet.cc +++ b/rtgui/wavelet.cc @@ -100,7 +100,7 @@ Wavelet::Wavelet() : bllev(Gtk::manage(new ThresholdAdjuster(M("TP_WAVELET_LOWLIGHT"), 0., 100., 0., 2., 50., 25., 0, false))), pastlev(Gtk::manage(new ThresholdAdjuster(M("TP_WAVELET_PASTEL"), 0., 70., 0., 2., 30., 20., 0, false))), satlev(Gtk::manage(new ThresholdAdjuster(M("TP_WAVELET_SAT"), 0., 130., 30., 45., 130., 100., 0, false))), - edgcont(Gtk::manage(new ThresholdAdjuster(M("TP_WAVELET_EDGCONT"), 0., 100., options.rtSettings.bot_left, options.rtSettings.top_left, options.rtSettings.bot_right, options.rtSettings.top_right, 0., false))), + edgcont(Gtk::manage(new ThresholdAdjuster(M("TP_WAVELET_EDGCONT"), 0., 100., 0, 10, 75, 40, 0., false))), level0noise(Gtk::manage(new ThresholdAdjuster(M("TP_WAVELET_LEVZERO"), -30., 100., 0., M("TP_WAVELET_STREN"), 1., 0., 100., 0., M("TP_WAVELET_NOIS"), 1., nullptr, false))), level1noise(Gtk::manage(new ThresholdAdjuster(M("TP_WAVELET_LEVONE"), -30., 100., 0., M("TP_WAVELET_STREN"), 1., 0., 100., 0., M("TP_WAVELET_NOIS"), 1., nullptr, false))), level2noise(Gtk::manage(new ThresholdAdjuster(M("TP_WAVELET_LEVTWO"), -30., 100., 0., M("TP_WAVELET_STREN"), 1., 0., 100., 0., M("TP_WAVELET_NOIS"), 1., nullptr, false))), diff --git a/rtgui/whitebalance.cc b/rtgui/whitebalance.cc index 7dbc02b4e..57d73b15f 100644 --- a/rtgui/whitebalance.cc +++ b/rtgui/whitebalance.cc @@ -147,7 +147,7 @@ static double wbTemp2Slider(double temp) return sval; } -WhiteBalance::WhiteBalance () : FoldableToolPanel(this, "whitebalance", M("TP_WBALANCE_LABEL")), wbp(nullptr), wblistener(nullptr) +WhiteBalance::WhiteBalance () : FoldableToolPanel(this, "whitebalance", M("TP_WBALANCE_LABEL"), false, true), wbp(nullptr), wblistener(nullptr) { Gtk::HBox* hbox = Gtk::manage (new Gtk::HBox ()); @@ -349,9 +349,23 @@ WhiteBalance::WhiteBalance () : FoldableToolPanel(this, "whitebalance", M("TP_WB spotsize->signal_changed().connect( sigc::mem_fun(*this, &WhiteBalance::spotSizeChanged) ); } + +void WhiteBalance::enabledChanged() +{ + if (listener) { + if (get_inconsistent()) { + listener->panelChanged(EvWBEnabled, M("GENERAL_UNCHANGED")); + } else if (getEnabled()) { + listener->panelChanged(EvWBEnabled, M("GENERAL_ENABLED")); + } else { + listener->panelChanged(EvWBEnabled, M("GENERAL_DISABLED")); + } + } +} + + void WhiteBalance::adjusterChanged (Adjuster* a, double newval) { - int tVal = (int)temp->getValue(); double gVal = green->getValue(); double eVal = equal->getValue(); @@ -400,7 +414,7 @@ void WhiteBalance::adjusterChanged (Adjuster* a, double newval) // Recomputing AutoWB if it's the current method will happen in improccoordinator.cc - if (listener) { + if (listener && getEnabled()) { if (a == temp) { listener->panelChanged (EvWBTemp, Glib::ustring::format ((int)a->getValue())); } else if (a == green) { @@ -415,7 +429,6 @@ void WhiteBalance::adjusterChanged (Adjuster* a, double newval) void WhiteBalance::optChanged () { - Gtk::TreeModel::Row row = getActiveMethod(); if (row == refTreeModel->children().end()) { @@ -520,7 +533,7 @@ void WhiteBalance::optChanged () } } - if (listener) { + if (listener && getEnabled()) { listener->panelChanged (EvWBMethod, row[methodColumns.colLabel]); } } @@ -528,7 +541,6 @@ void WhiteBalance::optChanged () void WhiteBalance::spotPressed () { - if (wblistener) { wblistener->spotWBRequested (getSize()); } @@ -667,6 +679,11 @@ void WhiteBalance::read (const ProcParams* pp, const ParamsEdited* pedited) tempBias->set_sensitive(wbValues.type == WBEntry::Type::AUTO); } + setEnabled(pp->wb.enabled); + if (pedited) { + set_inconsistent(multiImage && !pedited->wb.enabled); + } + methconn.block (false); enableListener (); } @@ -682,8 +699,11 @@ void WhiteBalance::write (ProcParams* pp, ParamsEdited* pedited) pedited->wb.equal = equal->getEditedState (); pedited->wb.tempBias = tempBias->getEditedState (); pedited->wb.method = row[methodColumns.colLabel] != M("GENERAL_UNCHANGED"); + pedited->wb.enabled = !get_inconsistent(); } + pp->wb.enabled = getEnabled(); + const std::pair ppMethod = findWBEntry (row[methodColumns.colLabel], WBLT_GUI); if (ppMethod.first) { @@ -756,6 +776,7 @@ void WhiteBalance::setWB (int vtemp, double vgreen) methconn.block(true); const std::pair wbValues = findWBEntry("Custom", WBLT_PP); + setEnabled(true); temp->setValue (vtemp); green->setValue (vgreen); opt = setActiveMethod(wbValues.second.GUILabel); @@ -876,6 +897,7 @@ void WhiteBalance::WBChanged(double temperature, double greenVal) { GThreadLock lock; disableListener(); + setEnabled(true); temp->setValue(temperature); green->setValue(greenVal); temp->setDefault(temperature); diff --git a/rtgui/whitebalance.h b/rtgui/whitebalance.h index d1fafcea3..ecf65f476 100644 --- a/rtgui/whitebalance.h +++ b/rtgui/whitebalance.h @@ -119,6 +119,7 @@ public: void setAdjusterBehavior (bool tempadd, bool greenadd, bool equaladd, bool tempbiasadd); void trimValues (rtengine::procparams::ProcParams* pp); + void enabledChanged(); }; #endif diff --git a/tools/build-rawtherapee b/tools/build-rawtherapee new file mode 100755 index 000000000..183d0a3d2 --- /dev/null +++ b/tools/build-rawtherapee @@ -0,0 +1,148 @@ +#!/usr/bin/env bash +# By Morgan Hardwood +# Version 2018-01-06 +# This script gets the latest source code for the given program and compiles it. + +# The name of the program, used for the folder names: +prog="rawtherapee" + +# The name of the compiled executable: +exe="${prog}" + +# The name of the sub-folder, if any, relative to the folder into which the +# compiled executable is placed. +# e.g. If the executable ends up in: +# ~/programs/someProgram/foo/bar/someExecutable +# then set it to: +# exeRelativePath="foo/bar" +# or if the executable ends up in +# ~/programs/someProgram/someExecutable +# then leave it empty: +# exeRelativePath="" +exeRelativePath="" + +# The path to the repository: +repo="https://github.com/Beep6581/RawTherapee.git" + +# No touching below this line, with the exception of the "Compile" section +# ----------------------------------------------------------------------------- + +# The name of the project's standard branch, typically "master": +master="dev" + +buildOnly="false" +buildType="release" + +# Removes the trailing forward-slash if one is present +exeRelativePath="${exeRelativePath/%\/}" +# Append forward-slash to exeRelativePath only if it is not empty. +exePath="${exeRelativePath:+${exeRelativePath}/}${exe}" + +# Command-line arguments +OPTIND=1 +while getopts "bdh?-" opt; do + case "${opt}" in + b) buildOnly="true" + ;; + d) buildType="debug" + ;; + h|\?|-) printf '%s\n' "This script gets the latest source code for ${prog} and compiles it." \ + "" \ + " -b" \ + " Optional. If specified, the script only compiles the source, it does not try to update the source. If not specified, the source will be updated first." \ + " -d" \ + " Optional. Compile a \"debug\" build. If not specified, a \"release\" build will be made." \ + "" + exit 0 + ;; + esac +done +shift $((OPTIND-1)) +[ "$1" = "--" ] && shift + +printf '%s\n' "" "Program name: ${prog}" "Build type: ${buildType}" "Build without updating: ${buildOnly}" "" + +# Clone if needed +cloned="false" +updates="false" +if [[ ! -d "$HOME/programs/code-${prog}" ]]; then + mkdir -p "$HOME/programs" || exit 1 + git clone "$repo" "$HOME/programs/code-${prog}" || exit 1 + pushd "$HOME/programs/code-${prog}" 1>/dev/null || exit 1 + cloned="true" +else + pushd "$HOME/programs/code-${prog}" 1>/dev/null || exit 1 + git fetch + if [[ $(git rev-parse HEAD) != $(git rev-parse '@{u}') ]]; then + updates="true" + fi +fi + +# Pull updates if necessary +if [[ "$updates" = "true" && "$buildOnly" = "false" ]]; then + git pull || exit 1 +fi + +# Find out which branch git is on +branch="$(git rev-parse --abbrev-ref HEAD)" + +# Set build and install folder names +if [[ $branch = $master && $buildType = release ]]; then + buildDir="$HOME/programs/code-${prog}/build" + installDir="$HOME/programs/${prog}" +else + buildDir="$HOME/programs/code-${prog}/build-${branch}-${buildType}" + installDir="$HOME/programs/${prog}-${branch}-${buildType}" +fi + +existsExe="false" +if [[ -e "${installDir}/${exePath}" ]]; then + existsExe="true" +fi + +# Quit if no updates and build-only flag not set +if [[ "$cloned" = "false" && "$buildOnly" = "false" && "$updates" = "false" && "$existsExe" = "true" ]]; then + printf '%s\n' "No updates, nothing to do." + exit 0 +fi + +# Determine CPU count +cpuCount="fail" +if command -v nproc >/dev/null 2>&1; then + cpuCount="$(nproc --all)" +fi +if [[ ! ( $cpuCount -ge 1 && $cpuCount -le 64 ) ]]; then + cpuCount=1 +fi + +# Prepare folders +rm -rf "${installDir}" +mkdir -p "${buildDir}" "${installDir}" || exit 1 +cd "${buildDir}" || exit 1 + +# ----------------------------------------------------------------------------- +# Compile + +# See: +# http://rawpedia.rawtherapee.com/Linux#Compile_RawTherapee + +cmake \ + -DCMAKE_BUILD_TYPE="$buildType" \ + -DCACHE_NAME_SUFFIX="5-dev" \ + -DPROC_TARGET_NUMBER="2" \ + -DBUILD_BUNDLE="ON" \ + -DBUNDLE_BASE_INSTALL_DIR="${installDir}" \ + -DOPTION_OMP="ON" \ + -DWITH_LTO="OFF" \ + -DWITH_PROF="OFF" \ + -DWITH_SAN="OFF" \ + -DWITH_SYSTEM_KLT="OFF" \ + -DWITH_BENCHMARK="OFF" \ + "$HOME/programs/code-${prog}" || exit 1 + +make --jobs="$cpuCount" install || exit 1 + +# Finished +printf '%s\n' "" "To run ${prog} type:" "${installDir}/${exePath}" "" + +popd 1>/dev/null diff --git a/tools/buildRT b/tools/buildRT deleted file mode 100755 index 71370e8df..000000000 --- a/tools/buildRT +++ /dev/null @@ -1,450 +0,0 @@ -#!/usr/bin/env bash -# Written by DrSlony -# buildRT version 4.4, 2016-03-03 -# Please report bugs or enhancements to https://github.com/Beep6581/RawTherapee/issues -# www.rawtherapee.com -# www.londonlight.org - -head -n 4 $0 | tail -n 2 | sed $'1s/.\+/\E[1m&\E[0m/' -echo - -if [[ $UID -eq 0 ]]; then - printf "%s\n" "Do not run this script as root!" "Aborting" - exit 1 -fi - -alert () { - case "$alert_type" in - notify-send) notify-send "RawTherapee" "$1" ;; - kdialog) kdialog --title "RawTherapee" --passivepopup "$(printf "%b\n" "$1")" ;; - zenity) zenity --notification --text="$(printf "%b\n" "$1")" ;; - xmessage) xmessage -nearmouse "$(printf "%b\n" "$1")" ;; - none) printf "%b\n" "" "Compilation complete:" "$1" ;; -esac -} - -#--- Set some variables -unset choiceNumber choiceNumbers buildType buildTypes list branch branches repo -version="4.3" -movetoPatched="" -repo="${HOME}/rawtherapee" -procTarget=2 - -while getopts "bc:fnp:s:t:uvh?-" opt; do - case "${opt}" in - b) patched="yes" - movetoPatched="_patched" - printf "%s\n" "Buildonly flag detected, will not git pull or checkout" ;; - c) dCacheNameSuffix="$OPTARG" - dCacheNameSuffix=${dCacheNameSuffix//[^\.\-_a-zA-Z0-9]/}; - forceCmake="yes" - printf "%s\n" "Cache and config name suffix: $dCacheNameSuffix" ;; - f) forceCmake="yes" - printf "%s\n" "Will forcefully re-run CMake" ;; - n) noomp="-DOPTION_OMP=OFF" - forceCmake="yes" - printf "%s\n" "OpenMP disabled" ;; - p) procTarget="$OPTARG" - if [[ $procTarget -lt 1 || $procTarget -gt 9 ]]; then - printf "%s\n" "Invalid processor target value." "Use a value from 1 to 9, e.g." "./buildRT -p 1" "See ProcessorTargets.cmake" "Aborting" - exit 1 - forceCmake="yes" - fi ;; - s) movetoPatched="_${OPTARG//[^\.\-_a-zA-Z0-9]/}" - printf "%s\n" "Suffix of destination build dir: ${movetoPatched}" ;; - t) titleSuffix="${OPTARG//[^\.\-\:\ \+_a-zA-Z0-9]/}" - forceCmake="yes" - printf "%s\n" "Titlebar version suffix: ${titleSuffix}" ;; - u) gcVer="$(curl "https://raw.githubusercontent.com/Beep6581/RawTherapee/master/tools/buildRT" 2>/dev/null | grep "^#.*[vV]ersion.*")" || { echo "\"curl\" program not found, please install it first."; exit 1; } - gcVer="${gcVer##*[[:alpha:]] }" - gcVer="${gcVer%%,*}" - latestVer="$(printf "%s\n" "$version" "$gcVer" | sort -rV | head -n 1)" - if [[ $version = $latestVer ]]; then - printf "%s\n" "You are using the latest version of buildRT, $version" - exit 0 - else - printf "%s\n" "You are using version $version but version $gcVer is available on GitHub." "You can download the GitHub version from this URL:" " https://raw.githubusercontent.com/Beep6581/RawTherapee/master/tools/buildRT" "Replace it with this script, and remember to run \"chmod +x buildRT\"" - exit 0 - fi ;; - v) verbose=yes - printf "%s\n" "Verbose mode, I will spam your screen with warnings" ;; - h|\?|-) printf "%s\n" "Usage:" "" " $0 [-b] [-c ] [-f] [-n] [-p <1-9>] [-s ] [-t \"\"] [-v]" "" - printf "%s\n" \ - " -b" \ - "Build-only mode. buildRT uses \"git checkout master\" to update your source code repository to the newest revision, however doing so might destroy any uncommitted or unpushed changes you made or any patches you applied. With the -b flag the script will not update the source code, so that you can easily compile RawTherapee with whatever patches you manually applied. buildRT should automatically detect if you modified the source code, but you can use this flag to force build-only mode." "Generally when compiling patched RT versions you want to keep the cache and config folders separate, so consider using \"-b -c _testing\"" "" \ - " -c " \ - "Specify a suffix to the cache and config directory names. Only alphanumerics, periods, dashes and underscores are valid. The default value is \"4\", which will result in your build of RawTherapee storing the cache in \"${HOME}/.cache/RawTherapee4\" and config in \"${HOME}/.config/RawTherapee4\". For example, use \"-c _testing\" if you want to test older or patched versions of RawTherapee without potentially damaging your \"real\" cache and config files." "" \ - " -f" \ - "Force CMake to re-run." "" \ - " -n" \ - "Disable OpenMP." "" \ - " -p <1-9>" \ - "Set which processor target to use. Takes a single digit from 1 to 9. The default is 2. See ProcessorTargets.cmake" "" \ - " -s " \ - "Suffix of destination build directory, so that if you have applied a patch, say \"dustremoval-1.patch\", and want to have RawTherapee compiled to a folder whose name ends with \"_dustremoval1\", you would set \"-s dustremoval1\" (the underscore is automated)." "" \ - " -t \"\"" \ - "Suffix displayed next to the RawTherapee version in the window titlebar. It is recommended that you include the commit of the newest public commit (the one you would see if you cloned the repository anew) so it is clear which commit you applied the patches to. E.g.:" "-t \": ee72ddbcfd4e + dustremoval-1.patch + mustafa ibrahim\"" "" \ - " -u" \ - "Check for an update of buildRT on GitHub." "" \ - " -v" \ - "Make compilation verbose, so you see all compiler warnings." | fold -s - exit 0 ;; -esac -done -shift $((OPTIND-1)) -[ "$1" = "--" ] && shift - -printf "%s\n" "Repository: ${repo}" -printf "%s\n" "Processor target: ${procTarget}" - -if [[ -z $verbose ]]; then - Wcflags="-Wno-unused-result -Wno-aggressive-loop-optimizations" -fi - -cpuCount="$(grep -c 'processor' /proc/cpuinfo)" -# We can assume that if grep returns more than 32 lines (CPUs), or nothing at all, something's wrong -if (( cpuCount < 1 || cpuCount > 32 )); then - cpuCount="1" -fi -printf "%s\n" "CPU count: ${cpuCount}" - -# Zenity --notification is broken in <=3.8.0, removed Zenity support for now. -# elif hash zenity 2>/dev/null; then alert_type="zenity" -if hash notify-send 2>/dev/null; then alert_type="notify-send" -elif hash kdialog 2>/dev/null; then alert_type="kdialog" -elif hash xmessage 2>/dev/null; then alert_type="xmessage" -else alert_type="none" -fi - -# list from http://linuxmafia.com/faq/Admin/release-files.html -distributions=( -"Annvix /etc/annvix-release" -"Arch /etc/arch-release" -"Arklinux /etc/arklinux-release" -"Aurox /etc/aurox-release" -"BlackCat /etc/blackcat-release" -"Cobalt /etc/cobalt-release" -"Conectiva /etc/conectiva-release" -"Debian /etc/debian_version" -"Fedora /etc/fedora-release" -"Gentoo /etc/gentoo-release" -"Immunix /etc/immunix-release" -"Knoppix knoppix_version" -"Linux-From-Scratch /etc/lfs-release" -"Linux-PPC /etc/linuxppc-release" -"Mandrake /etc/mandrake-release" -"Mandriva_Mandrake /etc/mandriva-release /etc/mandrake-release /etc/mandrakelinux-release" -"Mint /etc/linuxmint/info" -"MkLinux /etc/mklinux-release" -"Novell /etc/nld-release" -"PLD /etc/pld-release" -"RedHat /etc/redhat-release" -"CentOS /etc/centos-release" -"Slackware /etc/slackware-version" -"SME /etc/e-smith-release" -"Solaris /etc/release" -"SunJDS /etc/sun-release" -"SUSE /etc/SuSE-release" -"TinySofa /etc/tinysofa-release" -"TurboLinux /etc/turbolinux-release" -"Ubuntu /etc/lsb-release" -"UltraPenguin /etc/ultrapenguin-release" -"United /etc/UnitedLinux-release" -"VA-Linux /etc/va-release" -"YellowDog /etc/yellowdog-release" -) -for element in "${distributions[@]}"; do - read distro loc1 loc2 loc3 <<< "$element" - for loc in $loc1 $loc2 $loc3 - do - # distribution=${distro} because if none of the elements match, distro will =YellowDog (last item in the list) - # add "break 2;" to the end if we really want to, but Ubuntu gets detected as Debian first, then as Ubuntu, - # so we might want to not break the loop. - [[ -e "$loc" ]] && distribution=${distro} - [[ "$distribution" = Gentoo ]] && break 2 - done -done -if [[ -z ${distribution} ]]; then - printf "%s\n" "" "Could not automatically detect your distribution. Please enter your distribution's name below followed immediately by the version, without any spaces or punctuation marks, and hit enter to confirm, e.g. \"Ubuntu1310\", \"Mint15\" or \"OpenSUSE123\"" | fold -s - read distribution - #sanitize - distribution=${distribution//[^a-zA-Z0-9]/} -fi -printf "%s\n" "Distribution: ${distribution}"; - -bits="$(uname -m)" || { printf "%s\n" "Is your system a 32-bit or 64-bit one?" "Enter 32 or 64 and hit enter: "; read bits; bits=${bits//[^0-9]/}; } -if [[ $bits = *64* ]]; then - bits=64 -else - bits=32 -fi -printf "%s\n" "System: ${bits}-bit" "" - -#--- Check script dependencies -hash git 2>/dev/null || { echo >&2 "Git not found, install Git first and then re-run this script."; exit 1; } - -#--- Clone and/or pull -if [[ ! -d "${repo}" ]]; then - printf "%s\n" "${repo} not found, cloning from GitHub..." - git clone https://github.com/Beep6581/RawTherapee.git "${repo}" - cd "${repo}" || exit 1 - verLatesttag="$(git describe --tags --abbrev=0)" - verLatesttagdistance="$(git describe --tags | sed -e 's/.*-\([0-9]\+\)-.*/\1/')" - currentBranch="$(git branch | grep "*" | sed -e 's/.* \+//')" - rev="$(git rev-list --all --count)" - node="$(git rev-parse --short HEAD)" - printf "\nRepository state:\n Branch: ${currentBranch}\n RawTherapee-${verLatesttag}.${verLatesttagdistance}\n Commit: ${rev}:${node}\n Latest tag: ${verLatesttag}\n\n" - alert "Repository cloned succesfully. What would you like to do next?" - printf "%b" "Repository cloned succesfully.\n" "Press 'q' to quit or any other key to continue... " - read -r -n 1 - echo - [[ $REPLY = q || $REPLY = Q ]] && { printf "%s\n" "Quitting." ""; exit 0; } -fi -cd "${repo}" || exit 1 - -#--- Update or decide what to do if user edited the source code (e.g. by applying a patch) -if [[ -z $patched ]]; then - uncommitted="$(git status -s | sed "s/^/\t/")" - unpushed="$(git log origin..HEAD | sed "s/^/\t/" || echo "Could not check for unpushed changes (check your internet connection), but continuing anyway.")" -fi -if [[ -z $uncommitted && -z $unpushed && -z $patched ]]; then - git pull || echo "Could not \"git pull\" (check your internet connection), but continuing anyway." - git checkout master - echo -elif [[ -z $patched ]]; then - printf "%s\n" "" "Warning! There are uncommitted or unpushed changes in the repository!" "Uncommitted:" "$uncommitted" "Unpushed:" "$unpushed" "" "This means that you edited the source code (e.g. applied a patch). If the script proceeds to update the repository, those changes you made to the source code might be lost. Your choices are to force the update and possibly lose the changes, not to update and to compile RT as-is, or to abort the script." | fold -s - read -r -p "[f]orce update, [c]ompile as-is, or [a]bort? " fca - case $fca in - f|F) git pull || echo "Could not \"git pull\" (check your internet connection), but continuing anyway." - git checkout master - echo ;; - c|C) printf "%s\n" "Retaining edited source code and compiling RT as-is." "" - patched="yes" - if [[ -z $movetoPatched ]]; then - movetoPatched="_patched" - fi ;; - *) printf "%s\n" "User aborted" "" - exit 0 ;; - esac -else - printf "%s\n" "Retaining edited source code and compiling RT as-is." "" - if [[ -z $movetoPatched ]]; then - movetoPatched="_patched" - fi -fi - -cd "${repo}" || exit 1 -verLatesttag="$(git describe --tags --abbrev=0)" -verLatesttagdistance="$(git describe --tags | sed -e 's/.*-\([0-9]\+\)-.*/\1/')" -currentBranch="$(git branch | grep "*" | sed -e 's/.* \+//')" -rev="$(git rev-list --all --count)" -node="$(git rev-parse --short HEAD)" -printf "\nRepository state:\n Branch: ${currentBranch}\n RawTherapee-${verLatesttag}.${verLatesttagdistance}\n Commit: ${rev}:${node}\n Latest tag: ${verLatesttag}\n\n" - -#--- Print the menu -branches=() -if [[ -z $patched ]]; then - while read -r branch; do - branches+=("$branch") - done < <(git branch -a | grep origin | sed -e 's/.*\///'| sort -uf) -else - branches="$(git branch | grep "*" | sed -e 's/.* \+//')" -fi - -# Make the menu list -list=("0" "[abort]" "[exit]") -num="1" -buildTypes=("release" "debug") -for branch in "${branches[@]}"; do - for buildType in "${buildTypes[@]}"; do - list+=("$num" "${branch}" "${buildType}") - ((num++)) - done -done - -printf "%s\n" "---------------------------------------------" -printf "%s\t%s\t%s\n" "#" "Branch" "Build Type" "${list[@]}" | column -t -s $'\t' -c 3 | sed $'1s/.\+/\E[1m&\E[0m/' -printf "%s\n" "---------------------------------------------" "" "Enter your choices, each number separated by a single space, e.g. 3 4" "If you don't know which option to choose, then choose the \"default\" branch, \"release\" build type." "" | fold -s - -# make sure choices are valid -checkChoices () { - choiceNumbers="${choiceNumbers//[^0-9 ]/}" - # all choiceNumbers must exist in listNums, else ask again - for choiceNumber in "${choiceNumbers[@]}"; do - if [[ "${choiceNumber}" = 0 ]]; then - exit 0; - fi - found=0 - # for each num in list[@] - for (( o=3 ; o<${#list[@]} ; ((o+=3)) )); do - if [[ "${list[$o]}" = ${choiceNumber} ]]; then - found=1; - fi - done - # if one of the numbers the user typed arent in the list, break the loop and ask for input again - if [[ $found = 0 ]]; then - [[ -n ${choiceNumbers[@]} ]] && printf '%s\n' "Invalid choices, try again." - return 1; - fi - done -} - -# keep repeating read until choices are valid -until checkChoices; do - read -r -p "Your choices: " -a choiceNumbers -done -printf "%s\n" "" "---------------------------------------------" "" - -#--- Compile the chosen builds -for choiceNumber in "${choiceNumbers[@]}"; do - if [[ $choiceNumber = 0 ]]; then - printf "%s\n" "User exited." - exit 0; - fi - # ${array[@]:offset:length} - # choiceNumber*3 to get the human menu choice to match the correct array index, and then +1 so we offset to branch and buildType, not #. - IFS=$'\t' read -r branch buildType < <(printf "%s\t%s\n" "${list[@]:$(($((choiceNumber*3))+1)):2}") - # extra safety check - if [[ -z "$branch" ]] || [[ -z "$buildType" ]]; then - print '%s\n' "Something went wrong with the selection, \"branch\" or \"buildType\" empty." "Aborting" - exit 1 - fi - # This seems useless "$branch != default" - # if [[ -z $patched && $branch != default ]]; then - if [[ -z $patched ]]; then - printf "%s\n" "Updating to branch $branch" - git checkout "$branch" || exit 1 - fi - echo - printf "%-15b %b\n" "\E[1mWill compile\E[0m:" "" "\tChoice number:" "$choiceNumber" "\tBranch:" "$branch" "\tBuild type:" "$buildType" "\tTarget:" "$procTarget" "" - - [[ -d "${HOME}/rt_${branch}_${buildType}${movetoPatched}" ]] && { - printf "%s\n" "Found old build directory ${HOME}/rt_${branch}_${buildType}${movetoPatched}" "To proceed you must either delete it, or choose a suffix for the destination folder for this build." - read -r -p "[d]elete old build, [r]ename this build destination folder, or [a]bort " - echo - case $REPLY in - d|D) rm -rf "${HOME}/rt_${branch}_${buildType}${movetoPatched}" || exit 1 ;; - r|R) printf "%s\n" "The build will be saved to \"${HOME}/rt_${branch}_${buildType}_X\" where \"X\" will be replaced with whatever suffix you choose next. Only alphanumerics, dashes, underscores and periods are valid." | fold -s - read -r -p "Suffix: " - movetoPatched="_${REPLY//[^\.\-_a-zA-Z0-9]/}" - printf "%s\n" "Build will be compiled to \"${HOME}/rt_${branch}_${buildType}${movetoPatched}\"" ;; - a|A) printf "%s\n" "Cannot proceed if old build directory exists." "Remove it or rename it, then re-run this script." "Aborting" - exit 0 ;; - *) printf "%s\n" "Unknown response \"$REPLY\"" - exit 1 ;; - esac - } - - cd "${repo}" || exit 1 - - [[ -z $dCacheNameSuffix ]] && dCacheNameSuffix="${verLatesttag%%.*}" - - # need to rerun cmake if buildtype changed - if [[ -e build/CMakeCache.txt ]]; then - previousBuildType="$(grep 'CMAKE_BUILD_TYPE:STRING=' build/CMakeCache.txt)" - previousBuildType="${previousBuildType##*=}" - fi - if [[ ! -e build/CMakeCache.txt || $previousBuildType != "$buildType" ]]; then - forceCmake="yes" - fi - - if [[ ! -d "${repo}/build" || $forceCmake = yes ]]; then - # Clean up leftovers from previous successful or failed builds - [[ -d "${repo}/${buildType}" ]] && { printf "%s\n" "Found old build directory \"${repo}/$buildType\". Removing it."; rm -rf "${repo}/${buildType}"; } - [[ -d "${repo}/rawtherapee" ]] && { printf "%s\n" "Found old build directory \"${repo}/rawtherapee\". Removing it."; rm -rf "${repo}/rawtherapee"; } - [[ -d "${repo}/build" ]] && { printf "%s\n" "Found old build directory \"${repo}/build\". Removing it."; rm -rf "${repo}/build"; } - printf "%s\n" "" "Cleaning out old CMake files" - make clean || { printf "%s\n" "Error while running \"make clean\", aborting." "Easiest solution: delete ${repo} and re-run buildRT."; exit 1; } - ./clean.sh || { printf "%s\n" "Error while running \"./clean.sh\", aborting." "Easiest solution: delete ${repo} and re-run buildRT."; exit 1; } - mkdir "${repo}/build" || exit 1 - - # As of changeset 1930:067e362c6f28 on Mon Jun 25 2012, revision number 1930, RT supports and encourages out-of-source builds. - if (( rev < 1930 )); then - cmake \ - -DCMAKE_BUILD_TYPE="$buildType" \ - -DPROC_TARGET_NUMBER="$procTarget" \ - -DCMAKE_C_FLAGS="-pipe" \ - -DCMAKE_CXX_FLAGS="$CMAKE_C_FLAGS $Wcflags" \ - "$noomp" \ - -DCMAKE_INSTALL_PREFIX="build" \ - -DBUILD_BUNDLE="ON" \ - -DBINDIR="." \ - -DDATADIR="." \ - -DCACHE_NAME_SUFFIX="$dCacheNameSuffix" \ - || { echo "Error during cmake, exiting."; exit 1; } - else - cd "${repo}/build" - cmake \ - -DCMAKE_BUILD_TYPE="$buildType" \ - -DPROC_TARGET_NUMBER="$procTarget" \ - -DCMAKE_C_FLAGS="-pipe" \ - -DCMAKE_CXX_FLAGS="$CMAKE_C_FLAGS $Wcflags" \ - "$noomp" \ - -DCMAKE_INSTALL_PREFIX="build" \ - -DBUILD_BUNDLE="ON" \ - -DBINDIR="." \ - -DDATADIR="." \ - -DCACHE_NAME_SUFFIX="$dCacheNameSuffix" \ - -DVERSION_SUFFIX="$titleSuffix" \ - ../ \ - || { echo "Error during cmake, exiting."; exit 1; } - fi - fi - echo - - if (( rev >= 1930 )); then - cd "${repo}/build" || exit 1 - fi - - printf "%s\n" "" "Starting compilation:" - time { make -j${cpuCount} install; } || { printf "%s\n" "" "Error during make, exiting."; exit 1; } - printf "%-15b %b\n" "" "" "RawTherapee compiled:" "" "\tChoice number:" "$choiceNumber" "\tBranch:" "$branch" "\tBuild type:" "$buildType" "\tTarget:" "$procTarget" "\tCache:" "${HOME}/.cache/RawTherapee${dCacheNameSuffix}" "\tConfig:" "${HOME}/.config/RawTherapee${dCacheNameSuffix}" "" "" - - # RT used to build into various places over the years. - # We want to end up with the build in a folder called "/build/rawtherapee" regardless of which old version you compile, and then to zip it, so we move dirs around: - if (( rev < 1930 )); then - if [[ -d "${repo}/${buildType}" ]]; then - printf "%s\n" "Moving \"${repo}/${buildType}\" to \"${repo}/build/rawtherapee\"" - mv "${repo}/${buildType}" "${repo}/build/rawtherapee" - elif [[ -d "${repo}/rawtherapee" ]]; then - printf "%s\n" "Moving \"${repo}/rawtherapee\" to \"${repo}/build/rawtherapee\"" - mv "${repo}/rawtherapee" "${repo}/build/rawtherapee" - elif [[ ! -d "${repo}/build" ]]; then - { printf "%s\n" "Could not find the \"build\" directory containing the compiled RawTherapee in ${repo}" "Please notify DrSlony in the forum:" "http://rawtherapee.com/forum/viewtopic.php?f=10&t=3001#p22213" "" "Exiting"; exit 1; } - fi - elif [[ -d "${repo}/build/${buildType}" ]]; then - printf "%s\n" "Moving \"${repo}/build/${buildType}\" to \"${repo}/build/rawtherapee\"" - mv "${repo}/build/${buildType}" "${repo}/build/rawtherapee" - fi - - echo - cd "${repo}/build" - # ${repo}/build/AboutThisBuild.txt doesn't exist with older versions - # Put "AboutThisBuild.txt" alongside the "rawtherapee" dir for the zip so that the website can extract the needed info when uploading the build (no other reason) - if [[ ! -e AboutThisBuild.txt ]]; then - cp "rawtherapee/AboutThisBuild.txt" AboutThisBuild.txt || { printf "%s\n" "Could not copy ${repo}/build/rawtherapee/AboutThisBuild.txt to ${repo}/build/AboutThisBuild.txt, exiting."; exit 1; } - fi - - cat AboutThisBuild.txt || { printf "%s\n" "${repo}/build/AboutThisBuild.txt not found, exiting."; exit 1; } - - if [[ -z $patched ]]; then - printf "%s\n" "Zipping the compiled RawTherapee dir \"${repo}/build/rawtherapee\" and putting it in \"/tmp/RawTherapee_${branch}_${distribution}_${bits}_${verLatesttag}.${verLatesttagdistance}_${buildType}.zip\"" - [[ -e "/tmp/RawTherapee_${branch}_${distribution}_${bits}_${verLatesttag}.${verLatesttagdistance}_${buildType}.zip" ]] && { rm "/tmp/RawTherapee_${branch}_${distribution}_${bits}_${verLatesttag}.${verLatesttagdistance}_${buildType}.zip" || exit 1; } - zip -Xrq "/tmp/RawTherapee_${branch}_${distribution}_${bits}_${verLatesttag}.${verLatesttagdistance}_${buildType}.zip" AboutThisBuild.txt rawtherapee - fi - - # Now that the zip is ready, the build can be moved to ~/rt__<_patched> - printf "%s\n" "" "Moving \"${repo}/build/rawtherapee\" to \"${HOME}/rt_${branch}_${buildType}${movetoPatched}\"" - mv "${repo}/build/rawtherapee" "${HOME}/rt_${branch}_${buildType}${movetoPatched}" || { printf "%s\n" "" "Could not move \"${repo}/build/rawtherapee\" to \"${HOME}/rt_${branch}_${buildType}${movetoPatched}\", exiting."; exit 1; } - - printf "%-15b %b\n" "" "" "Build ready:" "" "\tChoice number:" "$choiceNumber" "\tBranch:" "$branch" "\tBuild type:" "$buildType" "\tTarget:" "$procTarget" - printf "%b\n" "" "\E[1mTo run RawTherapee\E[0m, fire up a terminal and type:" "~/rt_${branch}_${buildType}${movetoPatched}/rawtherapee" "" "------------------------------------------" - alert "RawTherapee-${verLatesttag}.${verLatesttagdistance} ready.\nChoice number ${choiceNumber}, branch: ${branch}, type: ${buildType}, target: ${procTarget}" -done - -# builds=( /tmp/RawTherapee* ); for f in ${builds[@]}; do echo ${f#/tmp/}; done -if [[ -z $patched ]]; then - printf "%s\n" "RawTherapee zipped builds ready in /tmp" - ls -lh /tmp/RawTherapee* -fi -printf "%s\n" "" "Finished building all chosen versions of RawTherapee" diff --git a/tools/osx/macosx_bundle.sh b/tools/osx/macosx_bundle.sh index 8b9cbccb6..20a140ce5 100644 --- a/tools/osx/macosx_bundle.sh +++ b/tools/osx/macosx_bundle.sh @@ -156,7 +156,13 @@ ditto {"${GTK_PREFIX}","${RESOURCES}"}/share/icons/Adwaita/index.theme # Copy the Lensfun database into the app bundle mkdir -p "${RESOURCES}/share/lensfun" -cp /opt/local/share/lensfun/version_1/* "${RESOURCES}/share/lensfun" +cp /opt/local/share/lensfun/version_2/* "${RESOURCES}/share/lensfun" + +# Copy liblensfun to Frameworks +cp /opt/local/lib/liblensfun.1.dylib "${RESOURCES}/../Frameworks" + +# Copy libiomp5 to Frameworks +cp /opt/local/lib/libomp/libiomp5.dylib "${RESOURCES}/../Frameworks" # Copy the libiomp5 license into the app bundle cp "${PROJECT_SOURCE_DIR}/licenses/osx_libiomp5_LICENSE.txt" "${RESOURCES}" diff --git a/tools/source_icons/scalable/atom.file b/tools/source_icons/scalable/atom.file new file mode 100644 index 000000000..8c7faa135 --- /dev/null +++ b/tools/source_icons/scalable/atom.file @@ -0,0 +1 @@ +atom.png,w22,actions diff --git a/tools/source_icons/scalable/atom.svg b/tools/source_icons/scalable/atom.svg new file mode 100644 index 000000000..33eb0a7e5 --- /dev/null +++ b/tools/source_icons/scalable/atom.svg @@ -0,0 +1,121 @@ + + + + + Icons for the "Expert" tab in RawTherapee + + + + + + + + image/svg+xml + + Icons for the "Expert" tab in RawTherapee + + + Morgan Hardwood + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/source_icons/scalable/equalizer-narrow.file b/tools/source_icons/scalable/equalizer-narrow.file new file mode 100644 index 000000000..c922b3554 --- /dev/null +++ b/tools/source_icons/scalable/equalizer-narrow.file @@ -0,0 +1 @@ +equalizer-narrow.png,w22,actions diff --git a/tools/source_icons/scalable/equalizer-narrow.svg b/tools/source_icons/scalable/equalizer-narrow.svg new file mode 100644 index 000000000..b31128b36 --- /dev/null +++ b/tools/source_icons/scalable/equalizer-narrow.svg @@ -0,0 +1,201 @@ + + + + + Icons for the "Expert" tab in RawTherapee + + + + + + + + image/svg+xml + + Icons for the "Expert" tab in RawTherapee + + + Morgan Hardwood + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/source_icons/scalable/equalizer-wide.file b/tools/source_icons/scalable/equalizer-wide.file new file mode 100644 index 000000000..22ee0b4b9 --- /dev/null +++ b/tools/source_icons/scalable/equalizer-wide.file @@ -0,0 +1 @@ +equalizer-wide.png,w22,actions diff --git a/tools/source_icons/scalable/equalizer-wide.svg b/tools/source_icons/scalable/equalizer-wide.svg new file mode 100644 index 000000000..dcf184f56 --- /dev/null +++ b/tools/source_icons/scalable/equalizer-wide.svg @@ -0,0 +1,256 @@ + + + + + Icons for the "Expert" tab in RawTherapee + + + + + + + + image/svg+xml + + Icons for the "Expert" tab in RawTherapee + + + Morgan Hardwood + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +